![]() |
Memo/Richedit durchsuchen & kopieren
Moin
also ich bin gerade an so einem kleinem Programm, was am Ende können sollte: ich schreibe einen Text in einem Richedit Feld oder kann eine .txt mit einem Button laden, das funktioniert auch alles soweit (auch nicht weiter schwer :roll: ). Sagen wir, ich habe jetzt einen Text, der ca 4 Seiten oder so ist und nun möchte ich in einem Edit-Feld zum Beispiel ein Wort eingeben und das sucht er dann in dem text und kopiert es anschließend auch, sodass das kopierte in eine neue Tstringlist eingefügt wird und abgespeichert werden kann ( das ist dann ja auch wieder recht einfach). Also mir gehts eigentlich nur ums suchen bzw. das Gesuchte kopieren. Ist es einfacher in dem Richedit selber zu suchen oder die .txt zu durchsuchen ? mfg counter |
Re: Memo/Richedit durchsuchen & kopieren
|
Re: Memo/Richedit durchsuchen & kopieren
Du kannst auf den Text per TRichEdit.Lines.Text zugreifen.
Dann ist der Text als ein String repräsentiert. Darin kannst Du mit Pos pder PosEx oder StrPos nach dem Wort suchen. Oder Du benutzt eine andere Funktion aus der Kategorie String-Verarbeitung. |
Re: Memo/Richedit durchsuchen & kopieren
Hallo Counter909,
warum willst Du ein Wort was in einem Edit-Feld steht in einem anderen (Text-)Feld suchen, und dann, wenn es da sein sollte, aus diesem Text-Feld heraus in eine Stringliste kopieren? Nimm doch einfach den Inhalt des Edit-Feldes und pack ihn in Deine Stringliste wenn Du das Wort gefunden hast. Der Unterschied ist nicht so groß bei 4 Seiten aber wenn's mehr wird ... Gruß K-H |
Re: Memo/Richedit durchsuchen & kopieren
ne also ich will in einem edit Feld ein wort eingeben, das ich suche und in einem zweiten Feld die Anzahl der Zeile nach dem wort... sodass die dann herauskopiert werden und einer neuen stringlist hinzugefügt werden :-)
|
Re: Memo/Richedit durchsuchen & kopieren
Zitat:
|
Re: Memo/Richedit durchsuchen & kopieren
:D also das ist hier zum beispiel ein Text: (nachrichten :D)
Zitat:
jetzt gebe ich im edit Feld zum beispiel das Wort "BMW" ein und im zweiten eine "4" zum Beispiel...dann würde er 4 Zeilen nach dem Wort BMW herauskopieren! Zitat:
|
Re: Memo/Richedit durchsuchen & kopieren
Hallo Counter909,
falls Du übers Wochenende nicht darauf gekommen bist: Definiere die Zeilenanzahl n, suche Deine Startzeile, kopiere sie (ab gefunden pos) in Deine Stringlist kopiere die nächsten n-1 Zeilen in die Stringlist fertig! Gruß K-H |
Re: Memo/Richedit durchsuchen & kopieren
also ich bin übers Wochenende sehr weit gekommen bzw hab das auch schon gut fertig....aber ich hab es bis jetzt nur so gemacht, dass ein beliebiges Wort gesucht werden kann mit "pos(...)" und in einem weiter Edit-Feld kann man ein Zahl eingeben, die in einer Variable(k) gespeichert wird.
anschließend mache ich Copy(pos('gesuchtewort'..,k) so funktioniert das ja schonmal ganz gut, aber ich hab es eben noch nicht hinbekommen ,dass ich eine ganze Zeile definieren kann, was vermutlich um einiges einfacher ist, weil die Pos-Werte in die Hunderte gehen! also wie kann ich eine Zeile definieren ? |
Re: Memo/Richedit durchsuchen & kopieren
lines
|
Re: Memo/Richedit durchsuchen & kopieren
ja ok...aber wie such in dann ein wort mit "pos" in einer "Line" ?
pos gibt doch nur ein integer-wert wieder, an welcher Position das wort steht eben ^^ |
Re: Memo/Richedit durchsuchen & kopieren
wenn ich die Position meines gesuchten wortes mit
"t:= pos('gesuchtetext',form1.richedit1.Lines.Text)" herausfinde...woher weiß ich dann, in welcher Zeile das ist ? (lines[?]) ? denn T wäre in diesem Fall ja eine Integer-Zahl! |
Re: Memo/Richedit durchsuchen & kopieren
Du gehst doch sicherlich deinen Text mit einer Schleife durch
lines[i] liefert dir dann die entsprechende Zeile. |
Re: Memo/Richedit durchsuchen & kopieren
Hi
TRegExpr, for-Schleife |
Re: Memo/Richedit durchsuchen & kopieren
die position kann ich dann ja so erhalten:
Delphi-Quellcode:
for Index := Memo2.Lines.Count - 1 downto 0 do
begin Position := Pos(form1.Edit1.Text, Memo2.Lines[Index]); if Position > 0 then showmessage('+inttostr(position)+'' end; so dann hab ich ja mein Feld wo ich eingeben kann, wieviele Zeilen kopiert werden sollen, also
Delphi-Quellcode:
n:=edit1.text
logischerweise um kann ich dann doch "position+n", sodass ich die endzeile habe, bis wo kopiert werden soll, aber
Delphi-Quellcode:
aber hier werden ja nur nur die "Pos" werte verlangt und keine zeile :-(
copy(memo2.Lines.Text,?,??);}
|
Re: Memo/Richedit durchsuchen & kopieren
Hallo,
du hast doch deinen Zeilen-Index "Index" und die Position des Wortes in dieser Zeile "Position". Dann kannst du aus Memo2.Lines[Index] mit ![]()
Delphi-Quellcode:
Nur solltest du "Index" nicht direkt verwenden, sondern in der Schleife einer anderen Variable diesen Wert zuweisen, denn nach der Schleife könnte "Index" undefiniert sein. Das habe ich kürzlich gelernt und wusste es davor auch nicht:
Copy(Memo2.Lines[Index], Position, n);
Delphi-Quellcode:
Dann nimmst du als 2. Copy-Parameter "RowIndex".
for ...
if Position > 0 then RowIndex := Index; // ... Grüße |
Re: Memo/Richedit durchsuchen & kopieren
Zitat:
|
Re: Memo/Richedit durchsuchen & kopieren
soooo, danke leute, ich hab es endlich hinbekommen, auch mit meiner Eingabe wieviele Zeilen kopiert werden....wie es nun mal ist, ich hatte auch einen kleinen Fehler mit einer Variable, darum klappte was nicht :shock:
also vielen dank leute :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz