Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wort in tmemo finden und text markieren (https://www.delphipraxis.net/185471-wort-tmemo-finden-und-text-markieren.html)

Natcree 14. Jun 2015 21:25

Wort in tmemo finden und text markieren
 
Hallo ich möchte aus einem TMemo ein wort Finden

das mache ich so

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
  MemoText,SuchStr: String;
  FundPos: Integer;
begin
  MemoText:= Memo1.Text;
  SuchStr:= 'Wort';
  FundPos:= Pos(SuchStr, MemoText);
  if FundPos = 0 then exit
  else
  ...
end;
Nun mehr sollen die alle zeichen die nach diesem Wort kommen markiert werden und zwar bis das Wort2 kommt.

Wie kann ich das realisieren? hat jemand einen Tip???
Wie erhalte ich die Anzahl der Zeichen bis zum wort2 ?

himitsu 14. Jun 2015 21:30

AW: Wort in tmemo finden und text markieren
 
SelStart, SelLength und nicht vergessen, daß es 0-indiziert ist.

mkinzler 14. Jun 2015 21:32

AW: Wort in tmemo finden und text markieren
 
Einfach nach dem Fund it PosEx() nach dem zweiten Wort suchen.

Delphi-Quellcode:
Word2 := PosEx( SuchStr2, MemoText, FundPos+1);

Natcree 14. Jun 2015 21:34

AW: Wort in tmemo finden und text markieren
 
Delphi-Quellcode:
Memo1.SetFocus;
  Memo1.Selstart:= FundPos +4;
  [COLOR="Yellow"]Memo1.Sellength:= Length(SuchStr);[/COLOR]
// WIe erhalte ich Hier die länge bis zum wort2?
Muss ich Word2 := PosEx( SuchStr2, MemoText, FundPos+1); bei memo1.Sellength:= Length(Suchstr); einsetzen?

mkinzler 14. Jun 2015 21:39

AW: Wort in tmemo finden und text markieren
 
Es wird der Index des 1. Buchstabens des 2. Suchwortes zurückgegeben.
Die Länge müsste dann dann Word2-1-FundPos; bzw. Word2-1-FundPos-Length(SuchStr) wenn zwichen Den Worten markiert werden soll; sein.

Natcree 14. Jun 2015 21:48

AW: Wort in tmemo finden und text markieren
 
wenn ich es so einsetze dann markiert er nicht richtig

Delphi-Quellcode:
  MemoText:= Memo1.Text;
  SuchStr:= 'Wort1';
  SuchStr2:= 'Wort2';
  FundPos:= Pos(SuchStr, MemoText);
  FundPos2 := PosEx( SuchStr2, MemoText, FundPos+1);
  if FundPos = 0 then exit; //Wort nicht gefunden
  Memo1.SetFocus;
  Memo1.Selstart:= FundPos;
  Memo1.Sellength:= FundPos2-1-FundPos-Length(SuchStr);
wo ist der fehler?

mkinzler 14. Jun 2015 21:51

AW: Wort in tmemo finden und text markieren
 
Was bedeutet nicht richtig?
Ohne Wörter:
Delphi-Quellcode:
Memo1.Selstart:= FundPos+Length(SuchStr);
Memo1.Sellength:= FundPos2-1-FundPos-Length(SuchStr);
Mit Wörter:
Delphi-Quellcode:
Memo1.Selstart:= FundPos;
Memo1.Sellength:= FundPos2-1-FundPos;

himitsu 14. Jun 2015 21:52

AW: Wort in tmemo finden und text markieren
 
Was hab ich wohl #2 geschrieben?

Delphi-Strings fangen standardmäßig bei 1 an (außer im NextGen),
aber vergessen wir das. :wall:

Natcree 14. Jun 2015 21:59

AW: Wort in tmemo finden und text markieren
 
wenn ich jetzt statt einem Wort1 --> Wort1/ der text soll markiert werden bis hier hin-->/

wie mache ich das dann?
hier funktioniert der code nicht

mkinzler 14. Jun 2015 22:08

AW: Wort in tmemo finden und text markieren
 
SelStart ist 0-basiert ( wie Frank schon bemerkt hat) d.h. man muss von der Position im String 1 abziehen.

Delphi-Quellcode:
Memo1.Selstart:= FundPos-1;
Memo1.Sellength:= FundPos2-1-FundPos;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Seite 1 von 2  1 2      

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