AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wort suchen und markieren in einem TMemo

Ein Thema von Noobmaster · begonnen am 19. Mai 2012 · letzter Beitrag vom 22. Mai 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wort suchen und markieren in einem TMemo

  Alt 21. Mai 2012, 19:17
Delphi-Quellcode:
     while Pos(Suchtext,MemoWortbaum.Lines[Zeile]) = 0 do
     begin
        Inc(Zeile);
     end;
Tipp: Rate mal was passiert, wenn das Suchwort nicht gefunden wird.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Wort suchen und markieren in einem TMemo

  Alt 22. Mai 2012, 08:52
Delphi-Quellcode:
     while Pos(Suchtext,MemoWortbaum.Lines[Zeile]) = 0 do
     begin
        Inc(Zeile);
     end;
Tipp: Rate mal was passiert, wenn das Suchwort nicht gefunden wird.
Dann würde das Programm natürlich abschmieren, weil irgendwann eine Zugriffsverletzung stattfindet.
Der Fall ist aber abgedeckt. Ich habe alle Wörter in einer Baumstruktur gespeichert und er prüft vorher, ob das Wort in dem Baum existiert. Das Memo visualisiert meine Baumstruktur.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#3

Lösung

  Alt 22. Mai 2012, 09:00
Danke Leute!

Lösung:

Delphi-Quellcode:
     //Zeile im Memo ermitteln
     Zeile := 0;
     while Pos(Suchtext,MemoWortbaum.Lines[Zeile]) = 0 do
     begin
        Inc(Zeile);
     end;
     //Markieren
        //Position des ersten Zeichens der gefundenen Zeile im Gesamttext ermitteln
        MemoWortbaum.SelStart := SendMessage(MemoWortbaum.Handle, EM_LINEINDEX, Zeile, 0);
        MemoWortbaum.SelLength := Length(MemoWortbaum.Lines[Zeile]);
        MemoWortbaum.SetFocus;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#4

AW: Lösung

  Alt 22. Mai 2012, 09:31
Zitat:
Dann würde das Programm natürlich abschmieren, weil irgendwann eine Zugriffsverletzung stattfindet.
Fast.

Bei TStringList und Co. gibt es eine Exception ala EListError (oder so), sobald der Index nicht verfügbar ist, also ein Indexfehler.
Die MemoAPI, bzw das interne TMemoStrings (TStrings) gibt immer einen Leerstring zurück.


Aber OK, eine Endlosschleife ist auch nicht besser.


Tipp:
Delphi-Quellcode:
MemoWortbaum.SelStart := SendMessage(MemoWortbaum.Handle, EM_LINEINDEX, Zeile, 0);
//aka
MemoWortbaum.SelStart := MemoWortbaum.Perform(EM_LINEINDEX, Zeile, 0);
Grade gesehn, SetCaretPos nutzt auch EM_LINEINDEX.
Delphi-Quellcode:
Memo.CaretPos := Point(0, Zeile); // X, Y aka Spalte, Zeile
Memo.SelLength := Length(MemoWortbaum.Lines[Zeile]);
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Wort suchen und markieren in einem TMemo

  Alt 22. Mai 2012, 10:04
Danke, ich werds berücksichtigen
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 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