TFindDialog / Wortsuche im Memo1-Fenster...

Für Fragen von Einsteigern und Programmieranfängern...
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

Wenn es nur das ist, dafür habe ich schon ein Beispiel gepostet:

Code: Alles auswählen

Ein Einfaches Beispiel:
Memo1.SelStart:=Pos(Edit1.Text);
Memo1.SelLenght:=Lenght(Edit1.Text);

Probiere mal das aus. Wenn du ein Weiter Suchen einbauen möchtest, müsstest du PosExt verwenden. Das ist in strutils.
MFG
Michael Springwald

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

Bekomme nur Fehlermeldungen... daher hier mal mein Ergebnis als Bild:

Was ich über deine 2 Zeilen Auskommentiert habe, funktioniert leider auch nicht...
Beim Auskommentierten erscheint eine ähnliche Fehlermeldung bei der Zahl 1 in der Eckigen Klammer
Die Zeile lautet:

Code: Alles auswählen

if Memo1.lines[x,1]=s then


Wie gesagt, der Compiler akzeptiert diese Zeile nicht und bleibt bei der 1 stehen...

Das wird doch wohl kein Bug sein... mein Lazarus läuft auf Windoof XP mit Version 0.9.28.2 Beta ... :roll:
Dateianhänge
error1.jpg

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von shokwave »

Nein, das ist kein Bug. die Funktion Pos() braucht 2 Parameter 1. Was soll ich suchen? 2. Wo soll ich suchen? Also ungefähr so:

Code: Alles auswählen

Memo1.SelStart:=Pos(Edit1.Text, Memo1.Text);
Memo1.SelLenght:=Lenght(Edit1.Text);


Außerdem würde ich den Code erstmal in ein anderers Ereignis setzen, um zu sehen ob es prinzipiell so funktioniert wie du willst. z.B. in das OnClick von einem Button. Lässt sich später ja alles noch verbessern. :wink:
mfg Ingo

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

@Shokwave: DANKE, das eine Problem ist somit behoben... doch jetzt kommt auch schon das nächste Problem in der folgenden Zeile... :cry:

Ich hab mal in diversen Delphi Foren geschaut und dachte, der Fehler wäre behoben, wenn ich die Variable Lenght mit ein LongInteger Wert definiere... aber dann knallt es genauso mit Fehlermeldungen, auch bei String defination und schon weiß ich wieder nicht mehr weiter, was ich machen soll... :oops:

Hier meine Fehlermeldung im Überblick:
Dateianhänge
error2.jpg

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Teekeks »

Es heißt Length, da war ein Schreibfehler drinne...

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

Ein kleiner Hinweis: Es gibt die Praktische Strg+Leertasten Funktion. In Manchenfällen hilft es auch F1 zu drücken oder die Rechte Maustaste und dann den ersten Eintrag im PopupMenu auswählen: Deklaration Suchen.
Die beiden Letzten Punkte gehen natürlich nur, wenn alles richtig geschrieben wurde.
MFG
Michael Springwald

_X_
Beiträge: 250
Registriert: Di 16. Dez 2008, 20:13
OS, Lazarus, FPC: aptosid (aptosid.com); Lazarus SVN gtk2+qt4; FPC 2.4.0
CPU-Target: 32/64Bit

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von _X_ »

... und die Parameter von einer Funktion bekommt man mit Strg+Shift+Leertaste angezeigt

mfg _X_

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

Teekeks hat geschrieben:Es heißt Length, da war ein Schreibfehler drinne...

BINGO!!!

Was ein krasser Fehler... :shock: :mrgreen:

Also ihr Leut, nochmal ein GROOOOOOOSSSSES D A N K E S C H Ö N für die tolle Hilfe :!:
Problembasis ist somit gelöst... ABER, jetzt gilt es, das noch etwas zu verfeinern... z.B. daß die Zeile makiert wird, wo die Fundstelle ist ... :wink:

OK, dann allen noch einpaar schöne Ostertage, bis neulich ihr Leut! :wink:

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

Dein Letzter Wunsch wird nur mit SynEdit gehen. Bei einem Memo ist das wohl nicht so einfach bzw. eigentlich unmöglich hinzubekommen, weil die Botschaft wm_paint fehlerhaft verarbeitet wird.
MFG
Michael Springwald

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

pluto hat geschrieben:Dein Letzter Wunsch wird nur mit SynEdit gehen. Bei einem Memo ist das wohl nicht so einfach bzw. eigentlich unmöglich hinzubekommen, weil die Botschaft wm_paint fehlerhaft verarbeitet wird.

Ochhh, das ist doch eins meiner leichtesten Übung... :mrgreen:

Hmm, na vielleicht bekomme ich es ja dann anders noch irgendwie hin, z.B., daß ich an der gefundenen Suchstelle den Cursor hin possitionieren kann... wäre ja auch OK! :wink:

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

Das dürfte auch nicht so einfach sein. Nutze einfach SynEdit, da hast du Mehr Möglichkeiten...
MFG
Michael Springwald

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

pluto hat geschrieben:Nutze einfach SynEdit, da hast du Mehr Möglichkeiten...

Hi,

wie cool, sogar mit Zeilen-Anzeige nach Bedarf ein.-/ ausschaltbar... na, dass schaue ich mir doch gleich mal näher an! :)
Na dann, frohe Ostern !!! :wink:

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

In SynEdit findest du noch weitere "Überraschungen". Sie es als "Ostereier-Suchen" an....

Auch dir / euch ein Frohes Ostern...
MFG
Michael Springwald

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von Lollo67 »

@Pluto:
Stimmt, da durch Austausch vom TEdit1 Fenster auf SynEdit1 nun die Suchbefehle nicht mehr funktionieren, zumindest gibt es eine Fehlermeldung in der 2. Zeile hinter From7.SynEdit1.(Hier Cursor-Blinken) SelLength ... :roll:

Code: Alles auswählen

Form7.SynEdit1.SelStart:=Pos(Form7.Edit1.Text, Form7.SynEdit1.Text);
  Form7.SynEdit1.SelLength:=Length(Form7.Edit1.Text);


Fehler: indentifier idents no member "Sellength"

P.S.:
Falls Du nichts besseres vor hast, für ein kurzes Demo-Beispiel der Suchfunktion zu SynEdit, das so funktioniert wie nun bei mein TEdit, hätte ich nichts dagegen... :mrgreen: :wink:

Ok, für heute kann ich leider nichts mehr testen... der jährliche Osterbesuch naht sich in großen Schritten... :|

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TFindDialog / Wortsuche im Memo1-Fenster...

Beitrag von pluto »

Wie es der Zufall so will habe ich schon was Fertiges(mein Editor*G*):

Code: Alles auswählen

procedure TForm1.AC_FindExecute(Sender: TObject);
var
  Editor:TEditor;
  SO:TSynSearchOptions;
  w:Integer;
begin
  Editor:=ActiveEditor;
  if Assigned(Editor) then begin
    FindFrom.ComboBox1.Text:=Editor.GetWordAtRowCol(Editor.LogicalCaretXY);
    w:=FindFrom.ShowModal;
    if w = mrOK then begin
      if Editor.SearchReplace(FindFrom.ComboBox1.Text,'',FindFrom.GetOptions) = 0 then
        ShowMessage(Format('Suchbegrieff %s wird nicht gefunden !',[FindFrom.ComboBox1.Text]));
    end;
  end;
end;

Vielleicht hilft das ja.
MFG
Michael Springwald

Antworten