Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In einer Memo suchen? (https://www.delphipraxis.net/10419-einer-memo-suchen.html)

citybreaker 18. Okt 2003 11:07


In einer Memo suchen?
 
Hallo, wie kann ich über ein Editfeld in einer
Memo suchen und die Zeile makieren wo das Wort ist?

mirage228 18. Okt 2003 11:12

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:
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;
mfG
mirage228

Christian Seehase 18. Okt 2003 11:13

Re: In einer Memo suchen?
 
Moin Citybreaker,

Stichworte hierfür:
pos, SelStart, SelLength und, besonders wichtig und die Zeile herauszubekommen: Hier im Forum suchenEM_EXLINEFROMCHAR

@Mirage:
TMemo kennt allerdings FindText nicht.

mirage228 18. Okt 2003 11:15

Re: In einer Memo suchen?
 
Zitat:

Zitat von Christian Seehase
TMemo kennt allerdings FindText nicht

Ups... sorry mein fehler, wusst ich nicht

mfG
mirage228

citybreaker 18. Okt 2003 11:23

Re: In einer Memo suchen?
 
Zitat:

Zitat von Christian Seehase
Moin Citybreaker,

Stichworte hierfür:
pos, SelStart, SelLength und, besonders wichtig und die Zeile herauszubekommen: Hier im Forum suchenEM_EXLINEFROMCHAR

@Mirage:
TMemo kennt allerdings FindText nicht.


Da ist ja nur beitrag und einandere wo der Code
nciht klappt. Hilft mir nicht wirklich. :(

Christian Seehase 18. Okt 2003 12:07

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:
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;
Direkt hier reingeschrieben, also ungetestet, sollte aber richtig sein.

citybreaker 18. Okt 2003 12:52

Re: In einer Memo suchen?
 
Klappt noch nicht so richtig.
Ich hab jetzt folgendes gemacht:

Code:
  // Wo befindet sich der gesuchte String?
  iPos := (Edit1.Text, 'Memo1.Text');
Es kommt eine Fehlermeldung
')' erwartet aber ',' gefunden.

Dann hab ich
Code:
  // Wo befindet sich der gesuchte String?
  iPos := ('Edit1.Text', 'Memo1.Text');
ausprobiert und es kommt wieder:
Es kommt eine Fehlermeldung
')' erwartet aber ',' gefunden.

Christian Seehase 18. Okt 2003 13:04

Re: In einer Memo suchen?
 
Moin Citybreaker,

Tippfehler :wall:

Code:
iPos := [color=red]pos([/color]...
die Parameter von pos sind dann hoffentlich klar.

citybreaker 18. Okt 2003 13:15

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.

mirage228 18. Okt 2003 13:30

Re: In einer Memo suchen?
 
Hi Citybreaker,

du musst Edit1.Text und Memo1.Text nicht in Hochkommas, setzen!

Zitat:

Code:
  // Wo befindet sich der gesuchte String?
  iPos := (Edit1.Text, Memo1.Text); // ohne hochkommas!

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz