Zeile in RichEdit ermitteln anhand von text
-
Hallo,
also ich habe ein RichEdit und da stehen mehrere Zeilen text drin, in irgendeiner Zeile beispielsweise auch "Keyword".
Jetzt möchte ich gerne ermitteln in welcher Zeile das steht.
Ich kann mit SelStart und so ja den Cursor dahin bewegen. Hilft mir das irgendwie?
Da hänge ich jetzt. Das ich nicht rauskriege in welcher Zeile der Cursor steht.
Gibts da eine Methode oder so?MfG
Klausi
-
Versuch's mal mit der Eigenschaft CaretPos:
Spalte = RichEdit1->CaretPos.x; Zeile = RichEdit1->CaretPos.y;
Nicht durch die Hilfe beirren lassen
Gruß,
Alexander
-
Mit TRichEdit::Lines (TSrtringList) und TRichEdit::Lines::Strings (String*) könnte es klappen:
// SuchStr ist eine globale Variable und ist der gesuchte String. void __fastcall Button1Click(TObject *Sender) { for (int i=0; i<RichEdit1->Lines->Count;i++) for (int j=0;j<RichEdit1->Lines->Strings[i].Length();j++) if (RichEdit1->Lines->Strings[i].SubString(j,SuchStr.Length())==SuchStr) { RichEdit1->CaretPos.y=i; RichEdit1->CaretPos.x=j; RichEdit1->SelLength=SuchStr.Length(); break; } }
-
Am besten (schnellsten), klappt es immer noch mit EM_LINEFROMCHAR:
UINT zeile = RichEdit1->Perform(EM_LINEFROMCHAR, RichEdit1->SelStart, 0);
-
Danke euch allen für eure Hilfe.
Habe mich für die Lösung von Alexander entschieden, wobei ich die anderen natürlich nicht vergessen werde. :p
-
Naja wobei Spieleprogrammierers Code mal wieder vorbei am guten Stil (globale Variablen wozu?) und viel zu umständlich ist. (Man betrachte mal die Funktionen von TRichEdit...)
-junix
-
junix schrieb:
Naja wobei Spieleprogrammierers Code mal wieder vorbei am guten Stil (globale Variablen wozu?) und viel zu umständlich ist.
Danke junix, dass du immernoch so auf mir herunhackst. Vor allem: Was hast du gegen globale Variablen?
-
Spieleprogrammierer schrieb:
Danke junix, dass du immernoch so auf mir herunhackst.
Tu ich nicht, ich kritisiere nur den von dir vorgeschlagenen Code, das ist alles... Wie ich das früher schon oft erwähnte: Du solltest keine so emotionale Bindung zu deinem Code hegen, und jede Kritik daran persönlich nehmen...
Speielprogrammierer schrieb:
Vor allem: Was hast du gegen globale Variablen?
Ein paar Threads dazu:
http://www.c-plusplus.net/forum/viewtopic.php?t=12163&highlight=globale+variablen
http://www.c-plusplus.net/forum/viewtopic.php?t=25792&highlight=globale+variablen
http://www.c-plusplus.net/forum/viewtopic.php?t=36817&highlight=globale+variablen <<-- Der hier ist speziell lesenswertDa ich aber wirklich nichts umfassendes gefunden habe, werde ich mich bei Gelegenheit mal darum kümmern vielleicht nen kleinen Artikel dazu zu schreiben... aber nu hab ich grad keine Zeit für.
-junix
-
Wobei mir grad auffällt: Was soll eigentlich die Frage wieso globale Variablen schlecht sind? Im obigen von mir als "speziell lesenswert" gekennzeichneten Thread hast du ja sogar selber noch gemeint mitmischen zu müssen? Vielleicht liest du den Thread nochmal.
-junix