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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 13:31   #1
Oleg Romanchuk
Ghost
Форумчанин
 
Аватар для Oleg Romanchuk
 
Регистрация: 16.08.2007
Сообщений: 143
По умолчанию Ошибка в цикле

Код:
for i:=0 to f.Count-1 do
  begin
    f.DelimitedText:=f.Strings[i];
    Memo1.Lines.Add(f[0]);
  end;
как сделать более правильный цикл? тут что-то не правильно, не получается, выдает ошибку!

Последний раз редактировалось Stilet; 17.11.2009 в 07:53.
Oleg Romanchuk вне форума Ответить с цитированием
Старый 16.11.2009, 13:40   #2
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Какая ошибка и что такое f?
k1r1ch вне форума Ответить с цитированием
Старый 16.11.2009, 13:46   #3
Oleg Romanchuk
Ghost
Форумчанин
 
Аватар для Oleg Romanchuk
 
Регистрация: 16.08.2007
Сообщений: 143
По умолчанию

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
Какая ошибка и что такое f?
Project Prog.exe raised exception class EStringListError with message 'List index out of bounds(2)'. Process stopped. Use Step or Run to contionue.

Весь код:

Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  f:TStringList;
  Str:String;
  i:integer;
begin
  f:=TStringList.Create();
  f.LoadFromFile(pathedit.Text);

for i:=0 to f.Count-1 do
  begin
    f.DelimitedText:=f.Strings[i];
    Memo1.Lines.Add(f[0]);
  end;
  f.Free;
Помогите организовать правильный цикл(((
Oleg Romanchuk вне форума Ответить с цитированием
Старый 16.11.2009, 13:49   #4
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
  for i:=0 to f.Count-1 do
  begin
    //f.DelimitedText:=f.Strings[i];    
    Memo1.Lines.Add(f[i]);
  end;
ещё
Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  f:TStringList;
  Str:String;
  i:integer;
begin
  f:=TStringList.Create();
  f.LoadFromFile(pathedit.Text);
  Memo1.Lines.Add(f.DelimitedText);
  f.Free;
end;
Напишите что вы хотите сделать.

Последний раз редактировалось dr.Chas; 16.11.2009 в 13:58.
dr.Chas вне форума Ответить с цитированием
Старый 16.11.2009, 14:00   #5
Oleg Romanchuk
Ghost
Форумчанин
 
Аватар для Oleg Romanchuk
 
Регистрация: 16.08.2007
Сообщений: 143
По умолчанию

Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  f:TStringList;
begin
  f:=TStringList.Create();
  f.LoadFromFile(pathedit.Text);
  f.DelimitedText:=f.Strings[0];
  Memo1.Lines.Add(f[0]);
  f.Free;
Из текстового файла имя которого берется из PathEdit есть много строк одного типа, нужно взять от туда только определенные данные в моем случае эта дата, которая идет с начала. У меня получилось взять данные только из первой строки, а как сделать цикл?
Oleg Romanchuk вне форума Ответить с цитированием
Старый 16.11.2009, 14:09   #6
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
var Fail:TextFile;
     s: string;
begin
      AssignFile(Fail,pathedit.Text);
      Reset(fail);
      While not eof(fail) do
      begin
        Readln(Fail,s);
        Memo1.Lines.Add(s);
      end;
      closeFile(fail);
end;
Ну а в цикле ищите вашу дату. Просто цикл не решит вашей проблемы.

Последний раз редактировалось dr.Chas; 16.11.2009 в 14:12.
dr.Chas вне форума Ответить с цитированием
Старый 16.11.2009, 14:43   #7
Oleg Romanchuk
Ghost
Форумчанин
 
Аватар для Oleg Romanchuk
 
Регистрация: 16.08.2007
Сообщений: 143
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
Ну а в цикле ищите вашу дату. Просто цикл не решит вашей проблемы.

Спасибо конечно, но это немного не то что надо!
Так у меня полалось по другому:

Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  f:TStrings;
  i:Integer;
begin
  f:=TStringList.Create;
  f.LoadFromFile(PathEdit.Text);

  for i:=0 to f.Count-1 do
    begin
      f.Strings[i];
      Memo1.Lines.Add(F[0]);
    end;

  f.Free;
Тут вставляет все строки целиком, а нужно разделить строку на 5 частей и каждую часть скажем в отдельный мемо!
Сам уже запутался
Oleg Romanchuk вне форума Ответить с цитированием
Старый 16.11.2009, 14:55   #8
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от Oleg Romanchuk Посмотреть сообщение
Тут вставляет все строки целиком, а нужно разделить строку на 5 частей и каждую часть скажем в отдельный мемо!
Сам уже запутался
Не только вы запутались Вы всё время говорите урывками. Если не можете объяснить (и такое бывает), попробуйте "на пальцах". Опять по вашему посту не понятно, по какому принципу нужно разбить строку и передать её в мемо. Если просто на 5 ровных частей то пользуйтесь функцией copy

Сначала вы писали про дату. И так в том коде считывается файл по строкам, и там после чтения до передачи его в мемо, нужно организовать проверку на ваше условие. Чтобы найти дату нужно воспользоваться функцией pos, чтобы взять её из строки copy. Если же заранее не известно какая у вас там дата, то нужно делать по другому.
dr.Chas вне форума Ответить с цитированием
Старый 16.11.2009, 15:10   #9
Oleg Romanchuk
Ghost
Форумчанин
 
Аватар для Oleg Romanchuk
 
Регистрация: 16.08.2007
Сообщений: 143
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
Не только вы запутались Вы всё время говорите урывками. Если не можете объяснить (и такое бывает), попробуйте "на пальцах". Опять по вашему посту не понятно, по какому принципу нужно разбить строку и передать её в мемо. Если просто на 5 ровных частей то пользуйтесь функцией copy

Сначала вы писали про дату. И так в том коде считывается файл по строкам, и там после чтения до передачи его в мемо, нужно организовать проверку на ваше условие. Чтобы найти дату нужно воспользоваться функцией pos, чтобы взять её из строки copy. Если же заранее не известно какая у вас там дата, то нужно делать по другому.
Есть файл: текстовый. он содержет строки примерно такого типа:
[00.00.2000 00:00:00] Сокет 0000 прибор 0000 принято 000 б.

Если быть точнее хочу этот текстовый файл в БД засунуть, но пока для упрощения и мемо пойдет, вообщем нужно разбить эту строку на 5 слов, и записать в 5 разных мемо, я показывал на примере даты. Номера могут по численности меняться, например сокет 1452, со временем может стать 14533 поэтому поиск не пойдет((

С функцие f.DelimitedText - которой можно разбить строку, цикл не получается сделать), может не циклом а как то по другому?
Oleg Romanchuk вне форума Ответить с цитированием
Старый 16.11.2009, 16:12   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, так как я видел ваш вопрос про парсинг строки, то я понимаю, о чём идёт речь...
вот пример кода (сразу могу сказать, он не очень "прямой", но должен делать то, что Вы хотите:
Код:
{ portion copyrights Stilet }
procedure TForm1.sButton1Click(Sender: TObject);
var
  f, s :TStringList;
  i:Integer;
begin
  f:=TStringList.Create;
  f.LoadFromFile(PathEdit.Text);

  {временный TStringList - для разбора текста}
  s:=TStringList.Create;

  for i:=0 to f.Count-1 do
    begin
       s.DelimitedText:= f.Strings[i];
      Memo1.Append('Date '+s[0]);
      Memo1.Append('time '+s[1]);
      Memo1.Append('Socket '+s[3]);
      Memo1.Append('Device '+s[5]);
      Memo1.Append('Get '+s[7]);
    end;
  FreeAndNil(s);
  FreeAndNil(f);
p.s. разумеется в Memo1 можно не добавлять или добавлять по другому или вообще в одну строчку собрать - это просто показательно, как получить доступ к элементам строки!!

Последний раз редактировалось Serge_Bliznykov; 16.11.2009 в 16:16.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в цикле Belokuraya Microsoft Office Excel 11 18.08.2009 15:52
Ошибка в цикле , не могу понять в чем! Помогите пожалуйста. Алексей_xXx Помощь студентам 1 29.05.2009 00:37
Ошибка в цикле Alamez Общие вопросы Delphi 2 05.04.2009 15:12