![]() |
In einer Memo suchen?
Hallo, wie kann ich über ein Editfeld in einer
Memo suchen und die Zeile makieren wo das Wort ist? |
Re: In einer Memo suchen?
Hi citybreaker,
hab hier ne sucfunktion gefunden! Kannst dir die Funktion ja umschreiben! musst vorher nur ne FindDialog Komponente aufs Formular ziehen!
Delphi-Quellcode:
mfG
procedure TForm1.FindDialogFind(Sender: TObject);
var Found: LongInt; StartPos, ToEnd: integer; begin with RichEdit1 do // hier dann anderen Namen einsetzen! begin if SelLength <> 0 then StartPos := SelStart + SelLength else StartPos := 0; ToEnd := Length(Text) - StartPos; Found := FindText(FindDialog.FindText, StartPos, ToEnd, [stMatchCase]); if Found <> -1 then begin SetFocus; // FoundAt := Found; SelStart := Found; SelLength := Length(FindDialog.FindText); end else Application.Messagebox(Pchar('Suchstring "'+FindDialog.FindText+'" nicht gefunden'),'Information',64); end; end; mirage228 |
Re: In einer Memo suchen?
Moin Citybreaker,
Stichworte hierfür: pos, SelStart, SelLength und, besonders wichtig und die Zeile herauszubekommen: ![]() @Mirage: TMemo kennt allerdings FindText nicht. |
Re: In einer Memo suchen?
Zitat:
mfG mirage228 |
Re: In einer Memo suchen?
Zitat:
Da ist ja nur beitrag und einandere wo der Code nciht klappt. Hilft mir nicht wirklich. :( |
Re: In einer Memo suchen?
Moin Citybreaker,
:oops: Sorry. Ist wohl noch zu früh :? :mrgreen: Also noch einmal von Vorne, diesmal ausführlich (Strafe muss sein ;-)):
Delphi-Quellcode:
Direkt hier reingeschrieben, also ungetestet, sollte aber richtig sein.
var
iPos : integer; iLine : integer; begin // Wo befindet sich der gesuchte String? iPos := ('SuchString',Memo1.Text); // Nichts gefunden, fertig if iPos = 0 then exit; // Zeile in der sich die gesuchte Position befindet // (-1, da der Zeichenindex 0 basiert ist) iLine := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,iPos-1,0); // Zeichenposition des ersten Zeichens dieser Zeile // (Diesmal nicht -1, da EM_LINEFROMCHAR schon einen 0 basierten Wert liefert) Memo1.SelStart := SendMessage(Memo1.Handle,EM_LINEINDEX,iLine,0); // Zeile markieren Memo1.SelLength := length(Memo1.Lines[iLine]); end; |
Re: In einer Memo suchen?
Klappt noch nicht so richtig.
Ich hab jetzt folgendes gemacht:
Code:
Es kommt eine Fehlermeldung
// Wo befindet sich der gesuchte String?
iPos := (Edit1.Text, 'Memo1.Text'); ')' erwartet aber ',' gefunden. Dann hab ich
Code:
ausprobiert und es kommt wieder:
// Wo befindet sich der gesuchte String?
iPos := ('Edit1.Text', 'Memo1.Text'); Es kommt eine Fehlermeldung ')' erwartet aber ',' gefunden. |
Re: In einer Memo suchen?
Moin Citybreaker,
Tippfehler :wall:
Code:
die Parameter von pos sind dann hoffentlich klar.
iPos := [color=red]pos([/color]...
|
Re: In einer Memo suchen?
Ja die Parameter sind klar. Es kommt auch keine Fehlermeldung
mehr. Ich hab jetzt z.B. in der Memo stehen: Ich bin Alex und bin 14 Jahre alt. Wenn ich jetzt alt ins Edit eingebe und auf den Button klicke passiert nix. |
Re: In einer Memo suchen?
Hi Citybreaker,
du musst Edit1.Text und Memo1.Text nicht in Hochkommas, setzen! Zitat:
mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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