разобрался... в первом коде мы сравнивали всю строку из файла, а у тебя в файле в принципе не может быть одинаковых строк, поэтому фильтрации не происходило... плюс к этому у тебя есь в коде небольшой глюк и одна ненужная строчка... привожу код:
| Код | ... function Povt(famname:string;var SL:TStringList):boolean; var i:integer; col:integer; begin col:=SL.Count; if col>0 then begin for i:=0 to (col-1) do begin if pos(famname,SL.Strings[i])<>0 then begin Result:=false; exit; end; end; end; SL.Add(famname); Result:=true; end;
procedure TForm1.SpeedButton1Click(Sender: TObject); var SL : TStringList; S,FamName,dat : string; f:TextFile; nom,dlin:integer;
begin // çàïèñü â ôàèë î íà÷àëå ñåàíñà AssignFile(f,ExtractFilePath(Application.ExeName)+'Protocol.txt'); Append(f); // îòêðûâàåì ôàéë äëÿ äîçàïèñè s:=TimeToStr(time); if length(s)<>8 then s:='0'+s; writeln(f,Edit1.Text+' '+Edit3.Text+' '+s+' - íà÷àëî ñåàíñà'); CloseFile(f); SL:=TStringList.Create; SL.Clear; Reset(f); while not eof(f) do begin Readln(f,s); dlin:=length(s); nom:=pos(' - íà÷àëî',s); if nom<>0 then begin FamName:=copy(s,1,dlin-36); dat:=copy(s,nom-19,10); if Povt(famName,SL) then begin Form2.ComboBox1.Items.Add(FamName); end; if Povt(dat,SL) then begin Form2.ComboBox2.Items.Add(dat); end; end; end; CloseFile(f); SL.Free; Form2.ShowModal; end; ... |
это работает без проблем... что исправлено:
| Цитата | begin FamName:=copy(s,1,dlin-36); dat:=copy(s,nom-19,10); if Povt(s,SL) then begin Form2.ComboBox2.Items.Add(dat); Form2.ComboBox1.Items.Add(FamName); end; end; |
заменено на
| Код | if nom<>0 then begin FamName:=copy(s,1,dlin-36); dat:=copy(s,nom-19,10); if Povt(famName,SL) then begin Form2.ComboBox1.Items.Add(FamName); end; if Povt(dat,SL) then begin Form2.ComboBox2.Items.Add(dat); end; end;
|
убрана вторая строка:
| Код | AssignFile(f,ExtractFilePath(Application.ExeName)+'Protocol.txt');
|
и добавлено(исправлено:
| Код | if length(s)<>8 then s:='0'+s; writeln(f,Edit1.Text+' '+Edit3.Text+' '+s+' - íà÷àëî ñåàíñà');
|
т.к. в 0-9 часов получается строка на один символ меньше (к примеру 0:00:01) следовательно в комбобокс у тебя попадало " 25.12.200" это добавление это исправляет... Добавлено @ 21:29 щяс на мыло скину... |