Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 20:14   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию из string в char, delphi

Уважаемые программисты, на форме имеется компонент StringGrid, в него вводятся числа и буквы ( по одной в каждую клетку ), затем необходимо считать эти элементы в другой одномерный массив типа char. Как это осуществить? Ведь элементы StringGrid имеют тип string.
Код:
  for i:=1 to N do
     mass_2[i]:=StrTo  ?(как преобразовать в Char)?  (Form1.SG.Cells[0,i]);
Это необходимо, т.к. каждый элемент потом надо будет сравнивать с числом и буквой.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 20:19   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

так правильнее)
Код:
var buf:string;
................
for i:=1 to N do begin
buf:=Form1.SG.Cells[0,i]
     mass_2[i]:=buf[1];
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 13.10.2012 в 20:21.
Mad_Cat вне форума Ответить с цитированием
Старый 13.10.2012, 20:47   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Mad_Cat, а как быть, если сначала пользователь задает размер массива, а потом заполняет его (ну заполняет компонент StringGrid ) и только потом должна выполняться программа.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Math;

type
  TForm1 = class(TForm)
    capture_1: TLabel;
    field_1: TEdit;
    SG: TStringGrid;
    key_1: TButton;
    list: TMemo;
    procedure key_1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const MaxSizeArr=25;
      mass: array [1..36] of char =  ('0','1','2','3','4','5','6','7','8','9',
     'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',
     'T','U','V','W','X','Y','Z');
type

   main_massiv = array[1..MaxSizeArr] of char;

var
  Form1: TForm1;
  mass_2:main_massiv;

implementation

{$R *.dfm}
//----------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
   list.clear;
   SG.Cells[0,0]:='i';
   SG.Cells[0,1]:='Элемент';
end;

//---------------------------------------------------------------------------
procedure input_amount(var N:integer);
var i:integer;
begin
  N:=StrToInt(Form1.field_1.Text);
  Form1.SG.ColCount:=N+1;
  for i:=1 to N do
     begin
       Form1.SG.Cells[i,0]:=' i= '+IntToStr(i);
     end;
end;

//----------------------------------------------------------------------------
procedure filling_mas(var mass_2:main_massiv; N:integer);
var i:integer;
    buf:string;
begin

 for i:=1 to N do
  begin
   buf:=Form1.SG.Cells[0,i];
   mass_2[i]:=buf[1];
  end;
end;

//----------------------------------------------------------------------------
procedure output_rezult(a:main_massiv; N:integer);
var i:integer;
begin
    for I := 1 to N do
      begin
        if a[i] in ['0'..'9'] then Form1.list.Lines.Add(a[i]);
      end;

    for I := 1 to N do
      begin
        if not (a[i] in ['0'..'9']) then Form1.list.Lines.Add(a[i]);
      end;
end;

//----------------------------------------------------------------------------
procedure TForm1.key_1Click(Sender: TObject);
var N:integer;
    a:main_massiv;
begin
 input_amount(N);
 filling_mas(a, N);
 output_rezult(a, N);
end;


end.
так компилятор ругается, я понимаю почему, т.к. массив не заполнен, а как этого избежать? вторую кнопку сделать?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 20:50   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
т.к. массив не заполнен
Проверку на заполненость добавь
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 13.10.2012, 20:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как это осуществить?
А общая задача какая?
Зачем сие колдовство с гридом?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2012, 20:51   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Не, пользователь изначально указывает количество элементов, а потом это количество столбцов появляется в StringGrid и уже тогда он заполняет их...наверное так нужна вторая кнопка?

Stilet, это все делается намного проще через TMemo....уже сделал, а задание предо мной стоит через StringGrid =(
а...общая задача.....пользователь задает массив чисел и букв, а моя задача сначала вывести числа, а затем все буквы из этого массива.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось Stilet; 13.10.2012 в 21:04.
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 21:01   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

изменение размеров Stringgrid повесь на OnKeyUp у edit-ов и кнопки левые не над буит
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 13.10.2012, 21:06   #8
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
наверное так нужна вторая кнопка?
Можно и в процессе выполнения события первой кнопки. Что то типа этого
Код:

var buf:string;
................
for i:=1 to N do 
begin
  if Form1.SG.Cells[0,i] = '' then
  Begin
    ShowMessage('Ай - яй - яй');
  End
  else
  Begin
     buf:=Form1.SG.Cells[0,i]
     mass_2[i]:=buf[1];
  End;
end;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 13.10.2012, 21:16   #9
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Сделал на событие кей ап в эдит......
ругается на вот эту строчку(
Код:
mass_2[i]:=buf[1];
запускает программу на выполнение, ввожу данные нажимаю на кнопку и ругается....нехорошо ругается
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 21:19   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

я конечно дико извиняюсь
но ЗАчем??? заполнение массива в KeyUP при задании размеров грида а???? оставьте его в кнопке!!!
Мы каким то гаданием занимаемся ! формулировку задания можно точную????
и проект ваш для поглядеть
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из string в char tema65 Общие вопросы C/C++ 1 23.12.2011 19:12
string-char-wchar_t-char-string чето потерял magog7 Общие вопросы C/C++ 0 08.08.2011 20:21
проблемы с Char и String в 2009 Delphi Kurai Помощь студентам 4 12.04.2010 14:56
String и Char Volt Общие вопросы Delphi 3 17.02.2009 08:30
char->string eds Общие вопросы .NET 1 28.11.2007 17:22