Dateinamen aus eingelesenem String erzeugen
-
Hi, wie kann ich aus einem eingelesenem String einen Dateinamen erzeugen?
[cpp]
{
AnsiString varWT,Str3;
varWT=Str3.SubString(0,5);ComPort3->ReadStr(Str3, Count);
memo_com3->Text = memo_com3->Text + Str3;
try
{
memo_com3->Lines->SaveToFile("WT +eingelesenem String.txt",varWT);
}
catch (Exception& e)
{
String className = e.ClassName();
String msg = e.Message;
}
}
[/cpp]Hoffe ihr könnt helfen.
Gruß
Kohli
-
String pfad = "Blabla" + eingelesener_String + ".txt";
-
Erst mal Danke,sieht ja ganz einfach aus.W erde ich Probieren. Doch da ist noch ein Problem, was ich gar nicht bedacht habe. Wie kann ich Lehrzeichen in diesem String löschen?
void __fastcall Tfrm_com_ansteuerung::ComPort10RxChar(TObject *Sender, int Count) { AnsiString varWT,Str10; varWT=Str10.SubString(10,14); ComPort10->ReadStr(Str10, Count); memo_com10->Text = memo_com10->Text + Str10; try { memo_com10->Lines->SaveToFile("WT"+varWT+".txt"); } catch (Exception& e) { String className = e.ClassName(); String msg = e.Message; } }
Gruß
Kohli
-
kohliman schrieb:
Erst mal Danke,sieht ja ganz einfach aus.W erde ich Probieren. Doch da ist noch ein Problem, was ich gar nicht bedacht habe. Wie kann ich Lehrzeichen in diesem String löschen?
Mit StringReplace.
MfG
xy
-
xy schrieb:
kohliman schrieb:
Wie kann ich Lehrzeichen in diesem String löschen?
Mit StringReplace.
Ansonsten:
Trim, TrimLeft, TrimRight.MfG
xy
-
So, dank eurer Hilfe habe ich es hinbekommen. So funktioniert es. Kann den noch jemand schauen, ob das alles so richtig ist oder kann man den Code noch ein wenig optimieren. Bin ja absoluter Neuling.
void __fastcall Tfrm_com_ansteuerung::ComPort3RxChar(TObject *Sender, int Count) { AnsiString varWT,Str3,varWTREPLACE; ComPort3->ReadStr(Str3, Count); //Empfange String vom ComPort varWT=Str3.SubString(10,5); //Zeichen Isolieren varWTREPLACE = StringReplace(varWT, " ", "", TReplaceFlags() << rfReplaceAll << rfIgnoreCase); //Lehrzeichen löschen memo_com3->Text = memo_com3->Text + Str3; //Empfangenen String vom ComPort ausgeben 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; } }
Schon mal vielen Dank
Kohli
-
Ich nochmal.
Obiger Quellcode klappt ganz gut. Doch mein Problem ist, das die Daten die vom Comport kommen, nicht in einem Rutsch eingelesen werden. Ich arbeite mit der ComPort Libary 2.64 und muss 363 Zeichen einlesen und aus dem 10-15 Zeichen einen Dateinamen erzeugen das klappt ja auch. Doch ComPort liest die Zeichen erst bis Zeichen 100->(genau weiß ich das noch nicht) und schiebt dan die nächten Zeichen über den Port. Das heißt ich bekomme nicht eine Datei erzeugt sonder mehrere. Wie kann ich das Problem lösen? Ich habe mir überlegt den String erst mal in den Speicher zu lesen, und dann mit meiner Funktion zum erzeugen des Dateinamen weiter zu machen. Doch ich habe keine Ahnung wie ich das machen soll.Gruß
Kohli