Конференция "Начинающим" » Поиск строки в файле. [D7, XP]
 
  • Papa_serg (31.03.08 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 © (31.03.08 16:48) [1]
    какая-то "потемкинская лестница", прям
    почему бы Pos не использовать?
  • Palladin © (31.03.08 16:49) [2]
    переменные типа String индексируются с 1. это раз. два: тебе в голову не пришло что при
    j=Length(textinone)
    условие if (textinone[j+1]='e') then ошибочно, благодаря твоей безолаберности. это два. три: есть замечательная функция Pos и не фик изобретать велосипеды
  • Papa_serg (31.03.08 16:54) [3]
       if Pos('delphi', textinone) > 1 then
        TnumBEGIN := Pos('delphi', textinone)+6;


    Заработало, спасибо)
  • Palladin © (31.03.08 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 © (31.03.08 16:56) [5]

    > Papa_serg   (31.03.08 16:54) [3]

    да ничего не заработало. если pos ничего не найдет, он тебе 0 (ноль) вернет. как можно так непродуманно писать то?
  • {RASkov} © (31.03.08 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 (31.03.08 16:57) [7]
    Palladin ©, поправим)
    Главное стал находить.
  • Papa_serg (31.03.08 18:12) [8]
    м, а как символ hex "0A", в pos прописать? :)
  • Palladin © (31.03.08 18:13) [9]
    #10
  • Anatoly Podgoretsky © (31.03.08 18:22) [10]

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

    В твоем коде его не может быть.
 
Конференция "Начинающим" » Поиск строки в файле. [D7, XP]
Есть новые Нет новых   [134433   +24][b:0][p:0.001]