поиск в текстовом файле результат записи в memo, lazarus

этот сегмент в моей программе сначала объявляет клиента в текстовом файле (объявленном в общедоступных переменных) и сохраняет его в текстовом файле. onbutton1click — это процедура для поиска строки, которая находится в поле редактирования, и возврата соответствующих сведений о клиенте в памятку. добавление клиента работает нормально и добавляет в текстовый файл, однако, когда я ищу, он ничего не возвращает в заметку, только заголовок заметки, memo1. как я могу решить это? извините, я новичок в этом.

  procedure TForm2.btnsaveClick(Sender: TObject);

  begin
     cusfname:= edit1.text ;
     cuslname:= edit2.text;
     adress:= edit3.text;
     phone:= edit4.text;
     password:= edit5.Text;
     AssignFile(F, 'Data.txt');
     append(F);
     WriteLn(F, cusfname);
     WriteLn(F, cuslname);
     WriteLn(F, adress);
     WriteLn(F, phone);
     WriteLn(F, password);
     CloseFile(F);
    end;

   procedure TForm2.Button1Click(Sender: TObject);

   var

     SearchFile : Textfile;
     found: boolean;
     search: string;

    begin
    search := edit1.text;
    Assignfile(SearchFile, 'data.txt');
    Reset(SearchFile);
    found:= false;
    repeat
      found:= search = phone
    until eof(searchfile) or found;
    if found then
    memo1.append(phone);
    memo1.append(cusfname);
    memo1.append(adress);
    if not found then 
      showmessage('member not found');
   end;                           

person haz    schedule 22.10.2010    source источник


Ответы (2)


Интересно, а где операторы чтения? В функции записи у вас есть операторы Write(), но в коде чтения нет операторов read()?

person Marco van de Voort    schedule 24.10.2010
comment
начать сброс (файл поиска); Назначить файл(Поиск файла, 'data.txt'); Сброс(ПоискФайла); найдено:= ложь; поиск := edit1.text ; повторить чтение(файл поиска, телефон) ; читать (файл поиска, cusfname); читать (файл поиска, адрес); found:= search = phone, пока eof(searchfile) или не найдено; если найдено, то memo1.append(phone); memo1.append(cusfname); memo1.append(адрес); закрыть файл(файл поиска) ; если не найдено, то showmessage('участник не найден'); - person haz; 25.10.2010

В вашем коде вы не read() из файла. В другом подобном вопросе (возможно, вашем собственном): файл runerror(102) не назначен? есть read(). Но я думаю, что вы должны использовать readln() или, что еще лучше, использовать класс TStringList из модуля Classes с его методом LoadFromFile() и свойством Lines.

person Michał Niklas    schedule 26.10.2010