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

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

Поиск строки в файле. [D7, XP]


Papa_serg ©   (2008-03-31 16:46:00) 

AssignFile(CFile,requests);
Reset(CFile);
while not Eof(CFile) do
begin
Readln (CFile,s);
Form1.Memo2.Lines.Add(s);
end;
CloseFile(CFile);
textinone := Form1.Memo2.Lines.Text;
for j:=0 to length(textinone) do
  begin
    if (textinone[j]='d') then
     if (textinone[j+1]='e') then
      if (textinone[j+2]='l') then
       if (textinone[j+3]='p') then
        if (textinone[j+4]='h') then
         if (textinone[j+5]='i') then
          if (textinone[j+6]=' ') then
           Tnum := j+7;

  end;


Здравствуйте, помогите найти ошибку.
Что должен делать кусок кода: загружает в переменную textinone содержимое файла requests, ищет в нём строку "delphi", если находит, то записывает в переменную "Tnum", порядковый номер символа, после этой строки.
Не записывает, на выходе, Tnum=0.
P.S. Фаил с #1013, табулярами и прочей гадостью ;)


Anatoly Podgoretsky   (2008-03-31 18:22:00) [1]


> м, а как символ hex "0A", в pos прописать? :)

В твоем коде его не может быть.


Palladin   (2008-03-31 18:13:00) [2]

#10


Papa_serg   (2008-03-31 18:12:00) [3]

м, а как символ hex "0A", в pos прописать? :)


{RASkov}   (2008-03-31 16:57:00) [4]

> [3] Papa_serg   (31.03.08 16:54)
> if Pos('delphi', textinone) > 1then


> Заработало, спасибо)

Не верно. А если = 1 то что? :)

> Pos('delphi', textinone) +6;

Гы) тоже ка-то по деццки... +Length('delphi');


Papa_serg   (2008-03-31 16:57:00) [5]

Palladin ©, поправим)
Главное стал находить.


Palladin   (2008-03-31 16:56:00) [6]


> Papa_serg   (31.03.08 16:54) [3]

да ничего не заработало. если pos ничего не найдет, он тебе 0 (ноль) вернет. как можно так непродуманно писать то?


Palladin   (2008-03-31 16:55:00) [7]

и еще. в четвертых:

AssignFile(CFile,requests);
Reset(CFile);
while not Eof(CFile) do
begin
Readln (CFile,s);
Form1.Memo2.Lines.Add(s);
end;
CloseFile(CFile);


очень прелестно заменяется одной единственной строчкой
Memo1.Lines.LoadFromFile(requests);

короче, учи матчасть!


Papa_serg   (2008-03-31 16:54:00) [8]

   if Pos('delphi', textinone) > 1 then
    TnumBEGIN := Pos('delphi', textinone)+6;

Заработало, спасибо)


Palladin   (2008-03-31 16:49:00) [9]

переменные типа String индексируются с 1. это раз. два: тебе в голову не пришло что при
j=Length(textinone)
условие if (textinone[j+1]='e') then ошибочно, благодаря твоей безолаберности. это два. три: есть замечательная функция Pos и не фик изобретать велосипеды


clickmaker   (2008-03-31 16:48:00) [10]

какая-то "потемкинская лестница", прям
почему бы Pos не использовать?


Наверх

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