Wie Inhalt von TMemo nach 394 Zeichen löschen?
-
Hall,
wie kann ich den Inhalt von TMemo nach dem Erhalt von 394 Zeichen löschen? Irgendwie bekomme ich da keine Syntax hin.Gruß
Eddie
-
Hallo,
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key) { if (Memo1->Text.Length() > 384) Memo1->Lines->Clear(); }
MfG
tuküe
-
Hi,
erst mal danke. Aber Er löscht nichts. Kann das daran liegen, das der Text, der ins Memo geschrieben wird nicht in einem Rutsch kommt. Es kommen 125+125+125+19 Zeichen, die hintereinander geschrieben werden. Löschen macht er aber nicht.//--------------------------------------------------------------------------- void __fastcall Tfrm_com_ansteuerung::ComPort3RxChar(TObject *Sender, int Count) { AnsiString varWT,WTnr,varWTREPLACE,Str3; ComPort3->ReadStr(Str3, Count); //Empfange String vom ComPort memo_com3->Text = memo_com3->Text + Str3; //Empfangenen String vom ComPort //ausgeben WTnr = memo_com3->Lines->Text; //Empfangenen Text WTnr zuordnen, da die //Daten vom ComPort in Str3 nicht in einem //Rutsch gelesen werden. //Es werden die Daten wohl in einen Buffer //gelesen, wenn dieser voll ist wird nach //memo_com3->Text geschrieben. //Dann wird der Buffer wieder gefüllt und //wieder in memo_com3->Text geschrieben. //Deshalb die Variable WTnr um nicht mehrer //Datein zu erzeugen. varWT=WTnr.SubString(10,5); //Zeichen Isolieren um Textnamen zu erzeugen varWTREPLACE = StringReplace(varWT, " ", "", TReplaceFlags() << rfReplaceAll << rfIgnoreCase); //Lehrzeichen im isoliertem String löschen try { memo_com3->Lines->SaveToFile("WT" +varWTREPLACE+".txt"); //String in Textdatei speichern, Dateinamen erzeugen } catch (Exception& e) //Fehlermeldung abfangen { String className = e.ClassName(); String msg = e.Message; } if (memo_com3->Text.Length() > 394) { memo_com3->Lines->Clear(); } }
Woran kann das liegen?
Gruß
Kohli
-
Hallo,
bist du den Code schon im Debug mit Einzelschritten durchgegangen? Außerdem ergibt 125+125+125+19 = 319. Die Bedingung lautet aber > 394. Also entweder > 393 oder >= 394.
MfG
tuküe
-
Wenn du 125+125+125+19 Zeichen schreibst sind das 394 Zeichen.
Die Bedingung ...Length() > 394 ist dann noch nicht erfüllt
-
Geo schrieb:
Wenn du 125+125+125+19 Zeichen schreibst sind das 394 Zeichen.
Die Bedingung ...Length() > 394 ist dann noch nicht erfülltHabe schon an meiner Rechnung gezweifelt
Aber er löscht nichts. Denn wenn die nächsten Daten vom Port kommen, dann sollte er das Memo doch löschen. Aber egal wie viele Zeichen >394 ich in das Memo schreibe, löschen tut er den Text nicht. Mein Problem ist ja, das ich gewisse Messwerte erhalte, deren Gesamtlänge 394 Zeichen ist. Diese schreibe ich in eine Texdatei. Alles was danach kommt, sind schon wieder andere Messwerte von einem anderen Werkzeugträger. Deshalb muss das Memo Clear sein. Aber wie gesagt, es tut sich nichts.Gruß
Kohli
-
Hallo
hast du schon mit dem Debugger geschaut ob du an diese Stelle ueberhaupt kommst ?
MfG
Klaus
-
Nein, ich weiss gar nicht wie das geht. Muss ich mich mal drum kümmern.
Gruß
Kohli
-
So, habe es hin bekommen. Komme an der Stelle vorbei.
if (memo_com10->Text.Length()> 394)
Aber löschen tut er nichts.
Gruß
Kohli
-
Weiss noch jemand Rat? Ich komme ja an der Stelle vorbei, aber löschen tut er den Inhalt des Memos nicht.
Ist mir echt ein Rätsel.Gruß
Kohli
-
nimm mal niocht das onKeyPress Event sonder das onChange
-
Ok, das werde ich mal versuchen.
Gruß
Kohli
-
kohliman schrieb:
Nein, ich weiss gar nicht wie das geht. Muss ich mich mal drum kümmern.
Fang hiermit an...
-junix
-
@junix@
Danke.So, das mit dem onChange scheint zu klappen. Doch beim erstellen der Texdateien bekomme ich jetzt zwei. Eine die richtig ist und zb. so heißt WT5.txt und eine die WT.txt heißt und ohne Inhalt ist. Wie kann ich das abfangen?
Gruß
Kohli
-
Hast du schonmal:
memo_com3->Clear();
versucht?
-
So, der angezeigte Inhalt von Memo wird korrekt gelöscht. Doch der String muss noch irgendwo im Speicher hängen. Denn beim Senden der zweiten 394 Zeichen wird der Inhalt des Memos gelöscht und die zweiten Zeichen werden im Memo angezeigt. So weit so gut. Doch er schreibt beide Strings in die Texdatei. Das heist der erste String schwiert noch irgendwo im Memo rum.
Oder muss ich die TStrings löschen? Wenn ja wie? Habe schon einiges versucht, aber da fehlt mir mal wieder die Syntax.
Jemand eine Lösung??
Gruß
Kohli