AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"RichEdit" Cursorposition in einem Wort

Ein Thema von EarlyBird · begonnen am 10. Nov 2009 · letzter Beitrag vom 10. Nov 2009
Antwort Antwort
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#1

"RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 17:59
Hallo,

ich suche in einem RichEdit die Cursorposition in einem Wort.

Testsatz: "Köln, Mainz, Ha|mburg, Berlin, Paris"

Hier brauche ich jetzt den Wert 2 weil der Cursor an der 2ten Position im Wort "Hamburg" steht.

Folgende Werte habe ich bereits:
  • Länge des Strings = 35
  • Länge des Wortes in dem der Cursor ist = 7
  • Position des Cursors im String = 15
Wahrscheinlich ganz einfach aber ich komme gerade einfach nicht drauf.

Besten Dank
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 19:09
.SelStart liefert die die Position des Cursors
und .Text den Text dazu

nun mußt du nur noch von der Position aus den Anfang des Wortes suchen und die Differenz ausrechnen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#3

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 19:55
Danke,
das bringt mich auf den richtigen Weg.
Ich versuche es erstmal so.

Delphi-Quellcode:
Function CursorPosInWord(str : String; CursorPos : Integer) : Integer;
 var
 I : Integer;
 begin
   Result := -1;
     for I := CursorPos Downto 0 do
       begin
         if Word(str[I]) in [13, 32, 9, 188] then
           begin
             Result := CursorPos - I;
             break;
           end;
       end;
 end;
Sonderzeichen usw habe ich so auch noch nicht berücksichtigt
Wie würdet Ihr den Wortanfang suchen?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 20:35
Vielleicht so:

Delphi-Quellcode:
// 1. Zeichen gehört zum 1. Wort, somit ist zu Beginn "WortAnfang" = true
WortAnfang := true;

for i := ... to ... do
begin
  // Auswertung / Pos ermitteln etc.
  // if WortAnfang then AnfangsIndex := i;
  // ...

  Wortanfang := false;

  // Beim Leerzeichen das nächste Zeichen als Wortanfang markieren
  if Text[i] = ' then
    WortAnfang := true;
end;
Nur so auf die Schnelle aus dem Kopf. Sonderzeichen & Co. fehlen ebenfalls.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#5

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 21:43
Delphi-Quellcode:
function CursorPosInWord(str : String; CursorPos : Integer) : Integer;
begin
  Result := CursorPos;
  while (Result > 1) and (not (str[Result] in [#13,#10,#09,' '])) do
    dec(Result);
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 21:52
man kann hier nun zwei Grundsätzliche Wege gehn

- man sucht der rückwärts solange, bis man ein Trennzeichen findet
und und das Zeichen danach ist der 1. Wort-Buchstabe

PS: dazu zählen nicht nur Zeilenumbrüche, Leerzeichen und Tabulatoren, sondern auch Satzzeichen und sonstnochwas

- oder man geht solange zurück, wie man einen "Buchstaben" findet

dieses wird bei Unicode etwas schwieriger
und bei ANSI ist es außerhalb des ASCII-Bereich's abhängig von der aktuellen Codepage
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 22:16
Hallo,
Zitat von himitsu:
...
PS: dazu zählen nicht nur Zeilenumbrüche, Leerzeichen und Tabulatoren, sondern auch Satzzeichen und sonstnochwas ...
jedoch vor den Satzzeichen kommt ein Leerzeichen(in der Regel), wenn man rückwärts durchläuft.
Klar, sind noch einige Randbedingungen zu beachten, die aber Anwendungsabhängig sind.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 22:44
Zitat von Lannes:
in der Regel
und regeln Sind Dazu Da,Um Vergessen Oder Ignoriert Zu Werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: "RichEdit" Cursorposition in einem Wort

  Alt 10. Nov 2009, 22:54
Zitat von Lannes:
ein Leerzeichen(iln der Regel), we
soviel zu Regeln und Randbedingungen und Klammern
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:20 Uhr.
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