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


Anmelden zum Antworten