Speichern / Speichern unter...



  • Ich bin neu in diesem Forum und habe eine Frage zum Borland Builder. Ich habe eine StringList die fortwährend mit Daten gefüllt wird. Nun hab ich gesehen, dass es da eine Methode SaveToFile() gibt die ich auch verwende. Nun habe ich einen Button angelegt, der einen SaveDialog öffnet und das Speicherziel entgegennimmt. Wird erneut gespeichert möchte ich, dass der Dialog sich nicht erneut öffnet, da das Speicherziel ja schon bekannt ist. Wie kann man das lösen?



  • z.B. mit Hilfsvarbiable bool WurdeBereitsGespeichert



  • ja klar 🙂 habs mal versucht:
    CPP:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner),
            gespeichert(false),
            zaehler(0),
            stl(new TStringList)
    {
       btnSpeichern->Caption = "Speichern unter...";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::btnSpeichernClick(TObject *Sender)
    {
       try
       {
          if (!gespeichert)
          {
             if (SaveDialog1->Execute())
             {
                stl->SaveToFile(SaveDialog1->FileName);
                gespeichert = true;
             }
             btnSpeichern->Caption = "Speichern";
          }
          else
          {
             stl->SaveToFile(SaveDialog1->FileName);
          }
       }
       catch(Exception &fehler)
       {
       	ShowMessage("Fehler: " + fehler.Message);
       }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    	stl->Add(Now() + zaehler++);
    }
    //---------------------------------------------------------------------------
    

    Header:

    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <Dialogs.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
    	TButton *btnSpeichern;
    	TSaveDialog *SaveDialog1;
    	TTimer *Timer1;
    	void __fastcall btnSpeichernClick(TObject *Sender);
    	void __fastcall Timer1Timer(TObject *Sender);
    private:	// Anwender-Deklarationen
       bool gespeichert;
       int zaehler;
    	TStringList* stl;
    
    public:		// Anwender-Deklarationen
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    Kurze Frage noch: Wie kann ich als Dateinamen das Datum im Format 20101112 vorgeben? Day war irgendwie so: SaveDialog1->FileName = DateTimeFormat(????,Now()). Leider funktioniert meine Hilfe vom Borland Builder 5 nicht unter Windows 7 so dass ich nicht nachschauen kann.



  • Mit

    Date().FormatString("yyyymmdd")
    

    bekommst du das aktuelle Datum in deinem angegebenen Format.

    MfG
    Chris_



  • supi, danke.
    Kann man das so mit dem Speichern machen? Oder gibts vll. ne Alternative?



  • Anstatt Date() könntest du z.B. Now() verwenden,
    dann bekommst du die aktuelle Uhrzeit auch noch dazu.
    Das wäre eine Alternative.

    MfG
    Chris_


Anmelden zum Antworten