![]() |
|
#1
|
|||
|
|||
![]() вводится несколько строк.
как мне сравнить эти строки ,и в случае совпадения удалить одну из них? |
#2
|
|||
|
|||
![]() и строки берутся из списка.
|
#3
|
||||
|
||||
![]() Ты бы объяснил по-подробнее откуда берутся строки, как они хранятся, что значит "удалить"? Тупо очистить переменную или удалить из списка и сдвинуть весь список наверх?
|
#4
|
|||
|
|||
![]() По указанию преподавателя выберите вариант задачи. В программе преду-смотреть сохранение вводимых данных в файле и возможность чтения из ра-нее сохраненного файла. Результаты выводить в окно просмотра и в текстовой файл.
В магазине формируется список лиц, записавшихся на покупку товара. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. !!!!Удалить из списка все повторные записи, проверяя Ф.И.О. и домашний адрес.!!!! Код:
Type Tspisok = record naimen:string[50]; nomer:integer; adres:string[100]; data:TdateTime; end; Var Fz:file of Tspisok; Ft:TextFile; spisok:array[1..100] of Tspisok; nzap:integer; FileNameZ, FileNameT:string; mn:integer; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear; Edit6.Clear; Memo1.Clear; Button1.Hide; nzap:=0; end; procedure TForm1.Button2Click(Sender: TObject); begin OpenDialog1.Title :='Создать новый файл'; if OpenDialog1.Execute then begin FileNameZ:= OpenDialog1.FileName; AssignFile(Fz, FileNameZ); Rewrite(Fz); end; Button1.Show; end; procedure TForm1.Button1Click(Sender: TObject); begin begin nzap:=nzap+1; with spisok[nzap] do begin naimen:=Edit1.Text; nomer:=strtoint(Edit2.Text); adres:=Edit3.Text; data:=encodeDate(strtoint(Edit4.text), strtoint(Edit5.Text),strtoint(Edit6.Text)); Memo1.lines.add(inttostr(nomer)+' '+naimen+' ' +adres+' '+datetostr(data)); end; Write(Fz,spisok[nzap]); Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear; Edit6.Clear; end; end; procedure TForm1.Button3Click(Sender: TObject); begin if OpenDialog1.Execute then begin FileNameZ:= OpenDialog1.FileName; AssignFile(Fz, FileNameZ); Reset(Fz); end; nzap:=0; while not eof(fz) do begin nzap:=nzap+1; Read(fz,spisok[nzap]); with spisok[nzap] do Memo1.Lines.Add(IntToStr(nomer)+' '+naimen+' ' +adres+' '+DateToStr(data)); end; Button1.Show; end; procedure TForm1.Button5Click(Sender: TObject); var i:word; begin if SaveDialog1.Execute then begin FileNameT:= SaveDialog1.FileName; AssignFile(Ft, FileNameT); Rewrite(Ft); end; for i:=1 to nzap do with spisok[i] do Writeln(Ft,nomer,' ',naimen,' ',adres,' ',datetostr(data)); CloseFile(Ft); end; end. |
#5
|
|||
|
|||
![]() для файла с последовательным доступом:
можно методом носорога: 1.создать новый список, 2.в него перенести все уникальные записи, 3.старый список - в бэкап 4.заменить старый список новым для списка memo: юзать Memo.Lines.Delete(i); если вопрос в нахождении уникального элемента: 1) создаем флаг: уникальный := тру. создаем буффер строку. 2) в буффер заносим очередную строку. 3) пока не конец файла: 4) проверяем на равность строку с каждой в файле. не забудь предусмотреть вариант сравнения с самой собой. 5)нашли повтор - вызываем функцию удаления строки из файла. 6)конец цикла p.s. много букв, т.к. не хватает данных для точного ответа |