RichEdit Text und Lines ?
-
Hallo !
Gibt es eine Möglichkeit aus der 'RichEdit->FindText' Position die Zeile(Lines) zu bestimmen ?Danke
-
Musste halt bissl rumrechnen.
if(RichEditint line=0;
int erg=RichEdit->FindText(Edit1->Text, 0, RichEdit->Text.Length(),
TSearchTypes()<< stMatchCase);
if(erg!=-1)
{
AnsiString SuchStr=RichEdit->Text.SubString(1,erg+1);for(int pos=0; (pos=SuchStr.Pos("\r\n"))!=0;
SuchStr=SuchStr.SubString(pos+1, SuchStr.Length()-pos+1))
line++;
ShowMessage(line);
}[cpp]Der Quelltext ist aber quick'n'dirty

-
argh.
kann das mal oben einer editieren und diesen Poste dann löschen.
Dankeint line=0; int erg=RichEdit->FindText(Edit1->Text, 0, RichEdit->Text.Length(), TSearchTypes()<< stMatchCase); if(erg!=-1) { AnsiString SuchStr=RichEdit->Text.SubString(1,erg+1); for(int pos=0; (pos=SuchStr.Pos("\r\n"))!=0; SuchStr=SuchStr.SubString(pos+1, SuchStr.Length()-pos+1)) line++; ShowMessage(line); }
-
Erst mal vielen Dank !
stein schrieb:
Musste halt bissl rumrechnen.
genau das wollte ich ja nicht. Ich dachte es gibt da einen kürzeren Weg. (Funktion o.ä.). das 'bissl rumrechnen' macht es mir zu langsam.
Aber vielleicht kannst Du oder jemand anders mir helfen. Ich möchte eine Art Text-Editor schreiben, wo bestimmte Schlüsselworte in verschiedenen Farben dargestellt werden. (ähnlich wie im BCB). Was nimmt man da am besten für eine Komponente ? Ich dachte an Richedit. Und wie ist der beste Weg das zu verwirklichen ? RichEdit->FindText ? sollte man den RichEdit Text in eine TStringList einlesen um zu suchen(Geschwindigkeit) ?Danke
-
Hallo
Allgemein :
Bei FindText kannst du wie stein schon gesagt hat nicht anders an die Zeilennummer ran. Du könntest natürlich gleich Zeilenorientiert arbeiten.Zum Thema Syntax-Highligthning speziell :
Siehe BCB-FAQ hier im Forum, Abschnitt RichEdit.bis bald
akari
-
erstmal Danke akari.
Ich selbst bevorzuge ja zeilenorientiertes Arbeiten mit TStringList, da es sehr schnell ist. hab dann nur wieder das Problem zwischen Zeilenposition und Textposition um zu markieren, aber ich will erst mal im BCB-FAQ hier im Forum nachlesen, vielleicht finde ich ja was.
-
Ja der link zu dieser Seite ist interessant. Habe da ein Problem:
beivoid SetTokenColor(TRichEdit* RichEdit1, TEXTRANGE& tr, TColor color)bekomme ich die Meldung:
[C++ Fehler] WAC_Edito.cpp(18): E2015 Mehrdeutigkeit zwischen 'TEXTRANGEA' und 'Richedit::TEXTRANGEA'
Wie kann ich das umgehen ?
-
Hallo
In dem du den FAQ-Beitrag ganz liest.
bis bald
akari
-
ups sorry, war wohl wiedermal zu schnell

-
wenn ich das richtig verstehe brauche ich RichEdit 2 oder 3 ?
riched20.dll (version3) habe ich, aber die Header Dateien brauche ich noch. Gibt es keinen anderen Link o.ö. Muß ich SDK (300MB) runterladen um die h Dateien zu bekommen ?
und ne andere Frage: wenn ich die Header Dateien ersetze, laufen dann die 'alten' Sachen noch korrekt ?Edit:
habe dies in der richedit.h stehen:/*
* RICHEDIT.H
*
* Purpose:
* RICHEDIT v2.0/3.0 public definitions. Note that there is additional
* functionality available for v2.0 and 3.0 that is not in the original
* Windows 95 release.
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*/bedeutet das, daß ich die richtigen schon habe ?
wenn ja, warum dann die Fehlermeldung ?
Woran erkenn ich im BCB welche Version ich benutze ?
-
habe eben festgestellt, daß ich den falschen FAQ-Beitrag gefunden habe !