Страница 1 из 1

Подскажите алгоритм сортировки данных из строки...

Добавлено: 28 июн 2006, 12:24
Dr_Grizzly
Всем привет, такая вот задачка, есть некая строка типа

Код: Выделить всё

<текст>(<цифра>); <текст>(<цифра>); <текст>(<цифра>); и т.д. 
Нужно каждый текст вытащить в Едит1, Едит3, Едит5 и т.д., каждую цифру в Едит2, Едит4, Едит6 и т.д.

Жду ваших соображений, меня клинит :-) Заранее благодарен!

Добавлено: 28 июн 2006, 14:54
Blood_Magic

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
  i,p:integer;
  sl:TStringList;
begin
  s:='<текст>(<цифра>); <текст>(<цифра>); <текст>(<цифра>);';

  sl:=TStringList.Create;
  sl.Text:=StringReplace(s,');',#13#10,[rfReplaceAll]);
  for i:=0 to sl.Count-1 do
    begin
      s:=Trim(sl.Strings[i]);
      p:=Pos('(',s);
      TEdit(FindComponent('Edit'+IntToStr(i shl 1+1))).Text:=Copy(s,1,p-1);
      TEdit(FindComponent('Edit'+IntToStr(i shl 1+2))).Text:=Copy(s,p+1,MaxInt);
    end;

  sl.Free;
end;
p.s.: Главное чтобы едитов на форме хватило... Либо сделать:

Код: Выделить всё

процедуре СреатеЕдит;
бегин
  http://www.developing.ru/forum/viewtopic.php?t=6681
енд;

Добавлено: 29 июн 2006, 12:12
Dr_Grizzly
Обалдеть! Не думал что так просто можно :) Блин, не знаю в чем проблема, Создал новый проект, запихнул на кнопку этот код, все работает как нада. Иду в свой проект, создаю там кнопку на 4-й форме, кидаю код, компилю, выдает ошибку Ундекларед идентифиер, гляжу справку, смотрю ей нужен модуль Классес, он у меня стоит, открыл первый проект и сравнил все подключаемые модули
Это в моей проге:

Код: Выделить всё

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls;
А это в первом проекте(который работает :-) ):

Код: Выделить всё

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
И в чем дело тут может быть???

Добавлено: 29 июн 2006, 12:39
Dr_Grizzly
Все! Разобрался!!! ОГРОМНАЯ БЛАГОДАРНОСТЬ С МОЕЙ СТОРОНЫ!!! Чтоб я без вас делал :)