Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как избавиться от ограничения ???, а перемещаться по строке до, н [D5, Win95/98, WinXP]


Виталий00 ©   (2005-10-21 22:56:00) 

Здравствуйте!

Как избавиться от ограничения ???,
а перемещаться по строке до, например # или запятой

procedure TForm1.Button2Click(Sender: TObject);
var
       FName: textfile;
       s: string[17];//как избавиться от ограничения ???, а перемещаться по строке до, например # или запятой
       s1: string[27];
       s2: string[17];
       s3: string[60];
       s4: string[7];
       s5: string[10];
       item: Tlistitem;
begin
       AssignFile(FName,'log.txt');
       Reset(FName);
       try
               while not Eof(FName) do
               begin
                       Readln(FName, s, s1, s2, s3, s4, s5);
                       item:= ListView1.items.add;
                       item.caption:= s;
                       item.SubItems.Add(s1);
                       item.SubItems.Add(s2);
                       item.SubItems.Add(s3);
                       item.SubItems.Add(s4);
                       item.SubItems.Add(s5);
               end;
       finally
               closefile(FName);
       end;
end;


Виталий00   (2005-10-23 07:48:00) [1]

Спасибо всем за участие и помощь


Anatoly Podgoretsky   (2005-10-22 13:17:00) [2]

Вот это совсем не рабочее Readln(FName, s, s1, s2, s3, s4, s5);, можно только так Readln(FName, AnsiString);и далее парсинг


Германн   (2005-10-22 02:26:00) [3]

2 Виталий00 ©   (21.10.05 23:16) [2]
Могу ошибаться, но, имхо, если разделителем поставить запятую или "табуляцию", то Readln - нормально всё прочитает.


irishka001   (2005-10-22 01:00:00) [4]

Пусть есть текстовый файл D:\1.txt, тогда обработчик может иметь вид:

var
f: TextFile;
fname: string;
ch: char;
str:string;
i: integer;
begin
fname:='D:\1.txt';
assignfile(f, fname);

{$I-}
reset(f);
{$I+}

while not Eof(f) do
     begin
       Readln(f, str);
       memo1.Lines.Add(copy(str,1,pos('#', str)-1));
       label1.Caption:=label1.Caption+' '+inttostr(pos(str, ','));

     end;
closefile(f)
end;


Zeqfreed   (2005-10-22 00:25:00) [5]

Виталий00 ©   (21.10.05 23:29) [4]
Можно использовать готовые решения, например, регулярные выражения. Или самому писать ф-цию парсинга, например, основываясь на теорию конечных автоматов или, так сказать, "в лоб" если исходные данные имеют простой формат. Опиши свою задачу более детально.


Виталий00   (2005-10-21 23:29:00) [6]

Хорошо, но как это сделать? Есть ли примеры?


Zeqfreed   (2005-10-21 23:22:00) [7]

Виталий00 ©   (21.10.05 23:16) [2]
Ну, я бы выбрал такой вариант: читать всю строку и делать парсинг (разбор строки на необходимые части).

Напрямую то, что ты хочешь реализовать нельзя.


Виталий00   (2005-10-21 23:16:00) [8]

У меня прописано ограничение строки, к примеру string[12], что означает что я беру строку в 12 знаков, но как сделать чтобы брать количество знаков из текстового файла например до знака "#" или запятой, т.е. конкретно не прописывать, это будет определено текстом в строке, может это будет 20 знаков!?


Zeqfreed   (2005-10-21 23:09:00) [9]

Виталий00 ©   (21.10.05 22:56)
Мягко говоря, ...
В общем, сформулируй свой вопрос по-корректней.

Какое такое ограничение? И чем оно тебе мешает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо