Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Поиск строки в файле.   Найти похожие ветки 

 
Papa_serg   (2008-03-31 16:46) [0]

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, табулярами и прочей гадостью ;)


 
clickmaker ©   (2008-03-31 16:48) [1]

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


 
Palladin ©   (2008-03-31 16:49) [2]

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


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

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

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


 
Palladin ©   (2008-03-31 16:55) [4]

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

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);

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


 
Palladin ©   (2008-03-31 16:56) [5]


> Papa_serg   (31.03.08 16:54) [3]

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


 
{RASkov} ©   (2008-03-31 16:57) [6]

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


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

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

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

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


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

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


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

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


 
Palladin ©   (2008-03-31 18:13) [9]

#10


 
Anatoly Podgoretsky ©   (2008-03-31 18:22) [10]


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
2-1207056885
Res
2008-04-01 17:34
2008.04.27
Послать


2-1207032743
asdf2
2008-04-01 10:52
2008.04.27
Как в InterBase6.5 сделать select Length(MyField) from MyTable?


8-1178609730
DemonP
2007-05-08 11:35
2008.04.27
заглушить все посторонние звуки


2-1206550287
SysError
2008-03-26 19:51
2008.04.27
как программно изменить цвет кисти в mspaint.exe


15-1205268362
ifrau
2008-03-11 23:46
2008.04.27
TEmbeddedWB