Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi gerade geschriebenes wort erkennen (https://www.delphipraxis.net/32971-gerade-geschriebenes-wort-erkennen.html)

Gentleman 30. Okt 2004 19:12


gerade geschriebenes wort erkennen
 
hi!

ich habe einen Richedit in den belibiger text eingegeben werden kann.ich möchte jetzt bei jedem tastendruck das gerade geschriebene wort erkennen. ich habe schon so einiges versucht...allerdings ohne erfolg. ich hoffe ihr könnt mir helfen.
:coder2:

thx im voraus!

Dax 30. Okt 2004 19:18

Re: gerade geschriebenes wort erkennen
 
Du könntest beim TRichedit.OnChange die aktuelle Zeile (zu bekommen pber Delphi-Referenz durchsuchenCaretPos.Y) holen und dir das Wort bei CaretPos.X kopieren. Vielleicht so:
Delphi-Quellcode:
procedure TForm1.Richedit1Change(Sender: TObject);
var
  Line, Word: string;
  i, t: integer;
  Delimiters: set of Char;
begin
  Delimiters := [' ', ';', ',', '.', '-']; //Viel mehr Möglichkeiten..
  Line := Richedit1.Lines[Richedit1.CaretPos.Y-1];
  for i := Richedit1.CaretPos.X downto 1 do
    if Line[i] in Delimiters then Break;
  for t := Richedit1.CaretPos.X to Length(Line) do
    if Line[i] in Delimiters then Break;
  Word := Copy(Line, i, t-i);
end;

Gentleman 30. Okt 2004 19:35

Re: gerade geschriebenes wort erkennen
 
also irgendwie funzt das nich...oder bin ich jetzt zu blöd :gruebel:?
wenn ich das ganze so ins OnChane schreibe dann bekomme ich eine Fehlermeldung, wegen dem Break-befehl.
muss ich da noch was ändern?

Dax 30. Okt 2004 19:41

Re: gerade geschriebenes wort erkennen
 
Irgendwie hab' ich da was durcheinander gebracht.. aber jetzt stimmts.
Delphi-Quellcode:
var
  Line, Word: string;
  i, t: integer;
  Delimiters: set of Char;
begin
  Delimiters := [' ', ';', ',', '.', '-']; //Viel mehr Möglichkeiten..
  Line := Richedit1.Lines[Richedit1.CaretPos.Y];
  for i := Richedit1.CaretPos.X downto 1 do
    if Line[i] in Delimiters then Break;
  for t := Richedit1.CaretPos.X to Length(Line) do
    if Line[t] in Delimiters then Break;
  Word := Copy(Line, i, t-i);
end;

Gentleman 30. Okt 2004 20:02

Re: gerade geschriebenes wort erkennen
 
erst mal vielen dank!das geschriebene wort wird jetzt erkannt. allerding bringt er mir jetzt eine fehlermeldung, wenn ich eine neue zeile beginne... :oops:

Meflin 30. Okt 2004 20:03

Re: gerade geschriebenes wort erkennen
 
ich glaube da hatten wir auch schon so manchen thread dazu...
allerdings muss ich gestehen dass ich nicht weis was man so als suchwort eintippen könnte :oops:
vielleicht findest du trotzdem was hier in der dp...

Gentleman 30. Okt 2004 20:08

Re: gerade geschriebenes wort erkennen
 
im forum hab ich auch schon gesucht...aber leider nichts brauchbares gefunden. die meisten theards sind über pos und so weiter, das hilft mir allerdings nicht so richtig weiter...

Dax 30. Okt 2004 20:12

Re: gerade geschriebenes wort erkennen
 
Wenn ich mich nicht ganz irre, wird ein ähnlicher Code auch in SynEdit verwendet, um die Wörter für den Highlighter aus dem Text zu holen..

Gentleman 4. Nov 2004 15:50

Re: gerade geschriebenes wort erkennen
 
falls es noch jemanden interessiert, hab ich hier nochmal den code so wie er bei mir einwandfrei funzt...

Code:
procedure TForm1.RichEdit1Change(Sender: TObject);
var
  Line: string;
  i, t, X: integer;
  Delimiters: set of Char;
begin
  Delimiters := [' ', ';', ',', '.', '-']; //Viel mehr Möglichkeiten..
  Line := Richedit1.Lines[Richedit1.CaretPos.Y];
  for i := Richedit1.CaretPos.X downto 1 do
    if Line[i] in Delimiters then Break;
  if Line<> '' then
    begin
      for t := Richedit1.CaretPos.X to Length(Line) do
        if Line[t] in Delimiters then Break;
    end;
  Word := Copy(Line, i, t-i);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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