30. november 2005 - 16:24Der er
10 kommentarer og 1 løsning
Tekstsøgning
Hej, jeg er gået kludder i noget kode, der skal udskrive en overskrift og fundne linier i en tekstfil.
Eksempel:
1750 fol 142a hr major Henrich Hoff fra Hessel (begravet) Rasmus Nielsen af Homå og Maren Sørensdatter af Ålsø (copuleret) Peder Andersens mindste barn af Høbjerg (begravet)
fol 142b Rasmus Andersens barn af Ålsø - Anders Rasmus Nielsen og Anne Christensdatter af Ålsø (copuleret) Christen Daniels barn af Ålsø - Friderich Rasmus Andersens barn Anders af Ålsø (begravet)
KUN hvis, der er noget der matcher det søgte, fx. Rasmus, skal overskriften: (fx. fol 142b) stå i en linie for sig selv. og derefter alle linier, der er hits.
Linier, der starter med: fol, skal være overskrift til de eftefølgende linier, hvis der er match (hits);
Det skal bare være "overskriften", hvis der findes noget i de efter- følgende linier. Så tror jeg ikke, at jeg kan forklare mig ret bedre. Sorry!
Søgning på: Rasmus skal i ovenstående eksempel vise flg.:
fol 142a Rasmus Nielsen af Homå og Maren Sørensdatter af Ålsø (copuleret)
fol 142b Rasmus Andersens barn af Ålsø - Anders Rasmus Nielsen og Anne Christensdatter af Ålsø (copuleret) Rasmus Andersens barn Anders af Ålsø (begravet)
Der skal lige tages højde for bredden af denne tekstbox.
Jeg kan ikke se din kode via det medøflgende link. Jeg gætter på, at du skal ha' 2 strenge. En til overskriften og en til hver af de linier, du undersøger. Kun hvis der er et hit, skal du udskrive overskriften og linien med hittet i.
Jeg har rettet lidt i din keypress procedure, bl.a. sat Key=#0, så du undgår en lyd hver gang du trykker på Return. Proceduren ser nu således ud:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); Var Fundet: Boolean; Overskrift: String; begin IF Key = #13 THEN BEGIN Key:=#0; AssignFile(F,OD1.FileName); Reset(F); Memo1.Clear; Fundet := False; WHILE NOT EOF(F) DO BEGIN Lin := ''; Readln(F,Lin);
if pos('fol ',Lin) > 0 then begin //memo1.lines.add(''); //memo1.lines.add(Lin); Overskrift:=Lin; end;
if POS(Edit1.Text,Lin) > 0 then begin If overskrift<>'' then begin memo1.lines.add(''); Memo1.Lines.Add(Overskrift); Overskrift:=''; end; memo1.lines.add(Lin); Fundet := True; end; END; { WHILE NOT... } CloseFile(F); IF NOT Fundet THEN ShowMessage('Fandt ikke det søgte.'); END; { IF Key... } end;
Hej alle, hvis jeg har været lidt for studshovedet, så undskylder jeg meget.
nca: tester lige dit forslag og vender tilbage, hvis det ikk' virker; men mon ikke det gør. Årstallet skal selvfølgelig også med. Det finder jeg ud af.
Hej nca ( godt Nytår) nej desværre! For jeg har haft gæster næsten hele december, så de skulle jo underholdes.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.