Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - memo feld durchsuchen!
xus - So 07.01.07 14:33
Titel: memo feld durchsuchen!
hi!
wie kann ich ein memo feld in delphi durchsuchen lassen zb. nach hello und dies dann im memofeld hervorheben zb druch makieren oder fett gedruckt...
mfg XuS
Moderiert von
Christian S.: Titel geändert.
Moderiert von
Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 07.01.2007 um 14:35
Jakob Schöttl - So 07.01.07 14:45
Also, das suchen geht indem du
Delphi-Quelltext
1: 2:
| for i := 0 to Memo1.Lines.Count -1 do if Pos('hello',Memo1.Lines[i]) > 0 then ShowMessage('Gefunden in Zeile ' + IntToStr(i)); |
, wobei Pos(...) den Index des ersten Zeichen von 'hello' in der entsprechenden Zeile zurückgibt.
Ach ja, und hervorheben kannst du es im MemoFeld nicht! Memo ist Nur-Text, also keine Formatierungen. Dazu müsstest du TRichEdit verwenden.
jaenicke - So 07.01.07 14:47
http://www.delphi-forum.de/viewtopic.php?t=55838&highlight=suchen+richedit
Da findest du eine Funktion, die ein Memo durchsucht. Zurückgegeben wird der Index des ersten Zeichens des gesuchten Texts im Memo.
Benutzen mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var FirstChar: Integer; SearchedText: String; begin SearchedText := 'Gesuchter Text'; FirstChar := MemoFindText(Memo1, SearchedText, True, False); if FirstChar >= 0 then begin Memo1.SelStart Memo1.SelLength end; |
Ungetestet, aber so ungefähr müsste es stimmen.
jaenicke - So 07.01.07 14:50
Jakob Schöttl hat folgendes geschrieben: |
| Ach ja, und hervorheben kannst du es im MemoFeld nicht! Memo ist Nur-Text, also keine Formatierungen. Dazu müsstest du TRichEdit verwenden. |
Wirklich? :lol: Er hat doch selbst von Markierung als Hervorhebung gesprochen und das geht ja auch beim Memo... ;-)
xus - So 07.01.07 14:55
danke für die schnellen antworten werde gleich das alles mal testen...
mfg XuS
edit:
bekomme immer folgenden error:
unlear identifier "Count"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button6Click(Sender: TObject); var a:string; i:integer;
begin a:=edit10.text;
for i := 0 to Memo1.Count -1 do if Pos(a ,Memo1.Lines[i]) > 0 then ShowMessage('Gefunden in Zeile ' + IntToStr(i));
end; |
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt
Gausi - So 07.01.07 15:28
Es muss heißen Memo1.Lines.Count - 1.
jaenicke - So 07.01.07 15:30
Wenn du den im ganzen Text auf einmal suchen willst, dann kannst du statt alle Zeilen durchzugehen auch in Memo1.Text mit Pos suchen...
Jakob Schöttl - So 07.01.07 15:32
jaenicke hat folgendes geschrieben: |
Jakob Schöttl hat folgendes geschrieben: | | Ach ja, und hervorheben kannst du es im MemoFeld nicht! Memo ist Nur-Text, also keine Formatierungen. Dazu müsstest du TRichEdit verwenden. |
Wirklich? :lol: Er hat doch selbst von Markierung als Hervorhebung gesprochen und das geht ja auch beim Memo... ;-) |
Ich hab das "Markieren" überlesen, dafür nur das "Fett" gesehen
jaenicke - So 07.01.07 15:34
Ach und jetzt weiß ich auch woher er das Memo1.Count hatte... von dir... (hab gerade nochmal oben deinen Beitrag gesehen) :lol:
Jakob Schöttl hat folgendes geschrieben: |
Also, das suchen geht indem du
Delphi-Quelltext 1: 2:
| for i := 0 to Memo1.Count -1 do if Pos('hello',Memo1.Lines[i]) > 0 then ShowMessage('Gefunden in Zeile ' + IntToStr(i)); |
, wobei Pos(...) den Index des ersten Zeichen von 'hello' in der entsprechenden Zeile zurückgibt. |
xus - So 07.01.07 16:23
danke hab es jetzt!
mfg XuS
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!