Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Wort in StringList suchen
AnyKey - Do 08.10.09 14:25
Titel: Wort in StringList suchen
Hi,
habe volgendes Problem: ich will/muss in einem RichEdit ein Wort suchen. Die Zeile in dem das wort gefunden wurde soll dann in einem neuen MDIChild in ein neues Richedit eingefügt werden. Bis jetzt sieht das ganze so aus: #
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| class function TStringManipulation.Suchen(Edit: TRichEdit; Progressbar: TProgressbar; SuchText: String): Bool; var AResultList : TStringList; var TextoutList : TSTringList; var Linemax : Integer; var Textlen : Integer; var Child : TfMDIChild; var i : Integer; var j : Integer; var x : Integer; begin result := false; try AResultList := TStringList.Create; Linemax := Edit.Lines.Count-1; Textlen := Length(Edit.Lines.Text); ProgressBar.Position := 0; ProgressBar.Max := Linemax; x := 0; for i := 0 to Linemax do begin for j := 0 to Textlen do begin with Edit do begin x := posex(SuchText,Edit.Text,x)+1; SelStart := posex(SuchText,Edit.Text,x)-1; AResultList.Assign(Edit.Lines); result := true; end; end; ProgressBar.Position := Progressbar.Position + 1; end; if result = true then begin fMain.CreateMDIChild('Suchergebnisse ' + IntToStr(fMain.MDIChildCount)); if Assigned(fMain.ActiveMDIChild) then begin Child := fMain.ActiveMDIChild as TfMDIChild; for i := 0 to TextoutList.Count -1 do begin with Child.RichEdit1 do begin SelStart := 0; SelText := AResultList.Strings[i]+sLineBreak; result := true; end; end; end; end; FreeAndNil(AResultList); except FreeAndNil(AResultList); end; end; |
Also das sieht jetzt wahrscheinlich sehr verwirrend aus und stimmt unter umständen auch garnich, aber ich hoff das mir einer von euch helfen kann, mein Problem ist wie gesagt dass ich aus dem RichEdit jeweils die Zeile in der das Suchwort gefunden wurde in die StringList geschrieben wird um diese später in das RichEdit des anderen MDIChilds zu schreiben.
Hoff ihr könnt mir helfen!
Gruß und Danke
AnyKey
Moderiert von
Gausi: Delphi-Tags hinzugefügt
baphumet - Do 08.10.09 14:48
Das funktioniert wie folgt, zu erst muß die StringList sortiert werden und dann kann
gesucht werden.:
Delphi-Quelltext
1: 2:
| StringList.Sort; StringList.Find(String,Index); |
Der Index wird dabei zurückgegeben und die Funktion gibt true zurück falls der String gefunden wurde, anderenfalls gibt die Funktion false zurück.
SvenAbeln - Do 08.10.09 14:50
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| AResultList := TStringList.Create; for i := 0 to Edit.Lines.Count-1 do if pos(SuchText,Edit.Lines[i]) > 0 then AResultList.Add(Edit.Lines[i]); Result := AResultList.Count > 0;
(.. Ergebnis ausgeben ..)
AResultList.Free; |
Lannes - Do 08.10.09 14:53
Hallo,
oder direkt in das zweite Richedit übertragen
Delphi-Quelltext
1: 2: 3:
| for z := 0 to RE_1.Lines.Count -1 do if Pos('SuchString',RE_1.Lines[z] > 0 then RE_2.Lines.Add(RE_1.Lines[z]); |
AnyKey - Do 08.10.09 15:00
Hallo,
danke, das funktioniert super! Ich habe mit sicherheit 4 verschiedene Lösungswege ausprobiert, aber wirklich funktioniert hat es nie. :( schön zu sehen das die Lösung so leicht ist und ich einfach den Wald vor lauter Bäumen nich gesehen habe!
nochmals danke!
Gruß
AnyKey
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!