RichEdit Wort in Satz suchen, und ab da Text ersetzen??
-
sorry, / vergessen
es müsste so aussehn dann:
//statt 16 L X+240.000 Y+100.000 Z+0.000 F0 M03 //müsste stehen: 16 L X+240.000 Y+100.000 FMAX 99 //und statt 17 L X+240.000 Y+100.000 Z+40.000 //müsste stehen: 17 L X+240.000 Y+100.000 FMAX 99
-
int LaengeEinerZeile = RichEdit->Lines->Strings[Zeilenindex].Length();
FindText liefert dir den Index des ersten Zeichens des gefundenen Textes.
-
ja, ich müsste ja nur die Länge vom Z bis zum Ende ermitteln, wie mach ich das?
Und wie bekomm ich eigentlich den Zeilenindex raus (also als Zahl oder so)??
-
in dem du zeilenweise durch den text im richedit gehst?
-
hab das mal so probiert..
int laenge = RichEdit1->Lines->Strings[0].Length(); int StartPos = RichEdit1->Lines->Strings[0].Pos("Z")-1; int rest = laenge-StartPos; RichEdit1->SetFocus(); RichEdit1->SelStart=StartPos; RichEdit1->SelLength=rest; RichEdit1->SelText="FMAX 99";
weiß nur nich, ob das so sauber is!?
-
Also ich bekomms net hin, hier mal der code wo das irgendwie rein muss:
void __fastcall TForm1::Button1Click(TObject *Sender) { if(RichEdit1->Lines->Count%2!=0) i=15; else i=16; Screen->Cursor=crHourGlass; int StartPos=0; int EndPos=RichEdit1->Text.Length()-StartPos; FoundAt1 = RichEdit1->FindTextA("M113",StartPos,EndPos,TSearchTypes()<<stMatchCase); //schauen ob Endbedingung M133 überhaupt vorhanden if(FoundAt1 != -1) //wenn ja, gehtz los mit bearbeiten { int StartPos1=0; while(RichEdit1->Lines->Count>0) { ++i; int EndPos=0; StartPos1=StartPos1+RichEdit1->Lines->Strings[i-1].Length()+1; EndPos=StartPos1+RichEdit1->Lines->Strings[i].Length(); int FoundAt = RichEdit1->FindTextA("M113",StartPos1,EndPos,TSearchTypes()<<stMatchCase); if(RichEdit1->Lines->Strings[i].Pos("M113")>0) //wenn M113 im Text, dann abbrechen { //ShowMessage(RichEdit1->Lines->Strings[i].Pos("M113")); //RichEdit1->Lines->Delete(i); break; } else {} //if abfackeln RichEdit1->Lines->Delete(i); //ansonsten jede 2te zeile löschen int laenge = RichEdit1->Lines->Strings[i].Length(); //hier soll jetzt rein, das in jeder zeile nach Z gesucht wird, und dann alles nach dem Z (inklusive Z in FMAX M99 geändert wird) int StartPosi = RichEdit1->Lines->Strings[i].Pos("Z")-1; int rest = laenge-StartPosi; //ShowMessage(StartPosi); } Button1->Enabled=false; enable=false; StatusBar1->Panels->Items[1]->Text="Zurücksetzen notwendig"; Screen->Cursor=crDefault; } else { MessageBoxA(0,"Dateityp kann nicht verwendet werden, Schlüssel M113 nicht gefunden","Inkompatibler Dateityp",MB_OK|MB_ICONWARNING); Screen->Cursor=crDefault; } }
ich weis echt nich wie es geht....
hoffentlich kann mir jemand helfen
-
... [b]if(RichEdit1->Lines->Strings[i].Pos("M113")>0)[/b] //wenn M113 im Text, dann abbrechen { //ShowMessage(RichEdit1->Lines->Strings[i].Pos("M113")); //RichEdit1->Lines->Delete(i); break; } [b]else {}[/b] //if abfackeln RichEdit1->Lines->Delete(i); //ansonsten jede 2te zeile löschen int laenge = RichEdit1->Lines->Strings[i].Length(); //hier soll jetzt rein, das in jeder zeile nach Z gesucht wird, und dann alles nach dem Z (inklusive Z in FMAX M99 geändert wird) int StartPosi = RichEdit1->Lines->Strings[i].Pos("Z")-1; int rest = laenge-StartPosi; //ShowMessage(StartPosi); } ...
Deine If-Abfrage ist etwas eigenartig....
schon mal mit dem Debugger geschaut was genau nicht geht?
-
^wieso denn?
Das funkionert ja bei mir eigentlich, aber was ist da eigenartig?Hast auch eine hilfe für mein richtiges problem? wäre super, komme langsam in stress
-
versuch mal das:
... if(FoundAt1 != -1) { i++; while(RichEdit1->Lines->Count>0) { EndPos = RichEdit1->Lines->Strings[i].Length(); if (RichEdit1->Lines->Strings[i].Pos("M113") > 0) { break; } else if (RichEdit1->Lines->Strings[i].Pos("Z") > 0) { int StartPosi = RichEdit1->Lines->Strings[i-1].Pos("Z"); int rest = EndPos-StartPosi; String Text2 = "FMAX M99"; String Text = RichEdit1->Lines->Strings[i]; Text.Delete(StartPosi,rest); Text.Insert(Text2,StartPosi); RichEdit1->Lines->Strings[i] = Text2; } else { if (j != i) { RichEdit1->Lines->Delete(i); j = i; continue; } else { i++; } } } } ...
ein paar kleine Fehler sind allerdings drin
-
eine frage aba mal, wo kommtn das j her?
Danke erstmal, werd mal probieren....
-
warum arbeitest du ueberhaupt mit TRichEdit und nicht mit TStringList?
zum 100. mal, wenn du nicht weisst, ob dass, was du geproggt hast, auch das liefert, was du erwartest, dann verwendet den DEBUGGER und schau dir schritt fuer schritt an was dort generiert wird!!!