Array in Datei speichern



  • Hallo,

    ich möchte gerne ein Array (test) in eine .txt File speichern. Leider klappt es nicht. Kann mir einer auf die Sprünge helfen?
    Danke euch!

    Cstring speicherString[640];
    long int dateilaenge [640];
    
    // Dialog zum Speichern einer Datei
    CFileDialog fileDlg(FALSE, ".txt", NULL, 0, "Textfile (*.txt)|*.txt|All Files (*.*)|*.*||");
    
    fileDlg.DoModal();
    
    CString pfad = fileDlg.GetPathName ();
    
    CFile datei;
    
    // Dies ist der String der gepeichert wird
    for(i = 0; i < 640; i++)
    {
    	speicherString[i] = test[i];
    	// Variable fuer die Dateilaenge erzeugen
    	dateilaenge[i] = speicherString[i].GetLength ();
    }
    
    // Oeffnen der Datei zum Schreiben
    datei.Open (fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite);
    
    // Inhalt des Strings in Datei schreiben
    for (i = 0; i < 640; i++)
    {
    	datei.Write (speicherString[i], dateilaenge[i]);
    }
    // Schliessen der Datei
    datei.Close ();
    


  • sehr eigenartigen code hast du

    - was ist wenn man beim oeffnen dialog auf cancel geht ? du fragst IDOK nicht ab
    - warum speicherst du die string laengen separat ab wenn du sie direkt holen kannst { datei.Write (speicherString[i], speicherString[i].GetLength());
    - warum speichertst du "test" in einen separaten array ?

    // pseudo, muss nicht funktionieren

    #define len = 640
    CFileDialog fileDlg(FALSE, ".txt", NULL, 0, "Textfile (*.txt)|*.txt|All Files (*.*)|*.*||");
    if(fileDlg.DoModal() == IDOK)
    {
        CFile datei(fileDlg.GetPathName(), CFile::modeCreate|CFile::modeWrite);
        for(i = 0; i < len; i++)
            datei.Write(test[i] + _T("\n"), test[i].GetLength() + 1); // wegen \n weiss ich grad nicht ob das muss
        datei.Close()
    }
    

    am sonsten ist da noch das filestream, das duerfte einfacher sein, fuer ANSI strings gibts auch noch writeline, da brauchst du keine laenge angeben



  • So habe mal alle Einflüsse die ich von außen bekommen habe mit einfließen lasse und habe jetzt den Quellcode für das Speichern. in der Datei steht auch genau das drin was rein soll.
    Danke schonmal für den Tipps.

    Die Abfrage der Buttons mache ich später wenn erstmal das Grundgerüst läuft. Ich programmiere gerade nen Oszilloskop. Ich möchte gerne damit Bildschirmfotos von den Verläufen realisieren. In dem Array Trigger_CH1 stehen die Y - Werte die ich in einer TXT speichern möchte. Wenn das halt grob läuft kommt die ganze Feinarbeit.

    // Dialog zum Speichern einer Datei 
    CFileDialog fileDlg(FALSE, ".txt", NULL, 0, "Textfile (*.txt)|*.txt|All Files (*.*)|*.*||"); 
    
    fileDlg.DoModal();
    CString pfad = fileDlg.GetPathName (); 
    fstream datei;
    
    datei.open(pfad, ios::out);
    for(i = 0; i < 640; i++)
    {
    	datei << trigger_CH1[i] << endl;
    }
    datei.close();
         	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    }
    

    Das ganze will ich jetzt auch wieder einlesen über die Funktion. Ich kann im Debugger sehen, dass in Buffer immer die Richtigen Werte eingelesen werden. Ich schaffe es aber nicht diese Werte dann in ein neues Array reinzuschreiben. Kann mir da vllt. nocheinmal wer helfen?
    Danke
    Gruss

    // Dialog zum Speichern einer Datei 
    CFileDialog fileDlg(TRUE, ".txt", NULL, 0, "Textfile (*.txt)|*.txt|All Files (*.*)|*.*||"); 
    
    fileDlg.DoModal();
    CString pfad = fileDlg.GetPathName (); 
    ifstream datei(pfad);
    
    std::string buffer;
    
    for(i = 0; i < 640; i++)
    {
    	getline(datei, buffer);
    }
    datei.close();
    


  • expect; http://naltrexoneinjection.com peter stuyvesant; http://nadita.net karelia cigarettes; http://niche-street.com karelia;


Anmelden zum Antworten