TSynEdit.SearchReplace - wie anwenden?

Rund um die LCL und andere Komponenten
Antworten
Giantics
Beiträge: 88
Registriert: Sa 3. Mär 2007, 13:46
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Langenbrettach

TSynEdit.SearchReplace - wie anwenden?

Beitrag von Giantics »

Ich habe in vielen Delphi-Foren Code zur Funktion SearchReplace gefunden. Leider macht die Funktion bei mir (L0.9.26) nicht das, was sie soll.
Der FindDialog wird über ein Menü aufgerunde, "FindDialogFind" ist das OnFind-Ereignis des Dialogs.

Code: Alles auswählen

procedure TfrmEditor.FindDialogFind(Sender: TObject);
var
  srOptions: TSynSearchOptions;
begin
  srOptions := [];
  if not (frDown in FindDialog.Options) then Include(srOptions,ssoBackwards);
  if (frMatchCase in FindDialog.Options) then Include(srOptions, ssoMatchCase);
  if (frWholeWord in FindDialog.Options) then Include(srOptions, ssoWholeWord);
  if AEdit.SearchReplace(FindDialog.FindText,'',srOptions)=0 then  //AEdit ist die SynEdit-Komponente
  begin
    SHowMessage('Yes');
  end else
    SHowMessage('No');
Leider bringt die Funktion immer "Yes", egal was man eintippt. Im Text markiert wird auch nichts, der Cursor bleibt da, wo er vorher war.
Muss ich den Text irgendwie noch selbst selektieren? Nur welche Position?

Gruß
Thomas

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: TSynEdit.SearchReplace - wie anwenden?

Beitrag von monta »

Habs gerade mal probiert...das seltsame ist, solange man den Text im Edit nicht ändert, sondern den standardmäßig eingetragenen Komponentennamen drin hat, geht das suchen wunderbar mit deinem Code.
Siehe Anhang.

Sobald man was dazu schreibt, gibts immer ein Yes.
Dateianhänge
1.png
1.png (7.73 KiB) 1144 mal betrachtet
Johannes

Giantics
Beiträge: 88
Registriert: Sa 3. Mär 2007, 13:46
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Langenbrettach

Re: TSynEdit.SearchReplace - wie anwenden?

Beitrag von Giantics »

Jetzt verstehe ich die Welt nicht mehr.
Ich habe seit gestern nichts am Code geändert. Einfach nur runtergefahren, heute neu gestartet und siehe da: Es funktioniert so, wie es sein sollte.
Ich denk mal das Problem hat sich erledigt.

Danke!

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: TSynEdit.SearchReplace - wie anwenden?

Beitrag von Targion »

Das hatte ich auch schon mehrfach. Irgendwie kommt man sich dann extrem blöde vor, es fehlt im Grunde nur noch ein höhnisches Lachen aus dem Computer, vor allem, wenn man zuvor Stunden nach dem Fehler gesucht hat... :roll:

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: TSynEdit.SearchReplace - wie anwenden?

Beitrag von monta »

Targion hat geschrieben: es fehlt im Grunde nur noch ein höhnisches Lachen aus dem Computer, vor allem, wenn man zuvor Stunden nach dem Fehler gesucht hat... :roll:
Da würde sich doch ein IDE-Plugin anbieten, wo man dann im Menü den Punkt 'Lachen...' auswählen kann ;)
Johannes

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

Re: TSynEdit.SearchReplace - wie anwenden?

Beitrag von pluto »

Also dein Code weist keinen Fehle auf. Das der Code nach einem runter fahren wieder geht könnte ein Pointer Problem gewesen sein.
MFG
Michael Springwald

Antworten