Announcement

Collapse
No announcement yet.

Open- & Save-Dialog

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Open- & Save-Dialog

    Hallo!

    Ich habe folgende Frage:
    In einem Formular sind mehrere Edit-Felder. Der Inhalt dieser Edit-Felder soll sich per Save-Dialog in eine Datei speichern lassen, und umgekehrt das ganze per Open-Dialog.

    Wer kann mir da bitte helfen?

    Schöne Grüße
    Christoph

  • #2
    Hallo Christoph, mit den Dialogen erhälst Du lediglich einen Dateinamen. Du mußt diese Datei öffnen, und die Inhalte der Edit-Felder manuell lesen oder schreiben. Ich würde dazu ein

    TEdit *EditFeld[3]={Edit1,Edit2,Edit3};

    oder so ähnlich verwenden, und diese in einer Schleife abarbeiten.

    Gruß - Günthe
    Günther

    Comment


    • #3
      Hallo!

      Also, das ist eine gute Idee, jedoch gibt es noch ein kleines Problem:

      Also, ich erstelle jetzt die Komponente mit der Edit-Gruppe:
      TEdit *EditGruppe[5]={Edit1,Edit2,Edit3,Edit4,Edit5};
      Das klappt problemlos.

      Dann habe ich probiert, einen dieser Werte wieder in ein anderes, eigentlich nur ein Test-Edit-Feld hineinzuschreiben mit:
      EditTest->Text=EditGruppe[4];
      Hier gibt er jedoch folgende Fehlermeldung aus:<br>
      [C++Fehler] dapec2unit1.cpp(1470): Cannot convert 'Stdctrls::TEdit *' to 'System::AnsiString'.

      Wie kann ich dieses Problem umgehen?

      Schöne Grüße

      Christop

      Comment


      • #4
        Kriegst Du damit auch eine Fehlermeldung: EditTest->Text=EditGruppe[4]->Text;
        Günther

        Comment


        • #5
          Ok, danke, so hat es jetzt funktioniert.
          Jetzt habe ich also ein "EditGruppe".

          Im Borland C++ Builder 3 gibt es ja ein Beispielprogramm, dass sich "RichEdit" nennt. Dort ist auch ein Speichern- und Öffnen- Dialog eingebunden, jedoch nur von einem RichEdit-Feld.
          Wie geht das jetzt mit einem Edit-Feld "EditGruppe".

          Danke

          Schöne Grüße
          Christop

          Comment


          • #6
            Hi,

            zwar hast du schon ein Ergegbnis, aber du hättest deine Aufgabe auch mit Hilfe einer Stringlist bearbeiten können. Diese läßt sich ja Problemlos laden, speichern und bearbeiten.

            Gruß Philip

            Comment


            • #7
              Hallo!

              Ich bin, was Programmieren betrifft, eher noch ein Einsteiger, Anfänger, wie auch immer....

              Kannst du mir das mit den Stringlisten bitte genau erklären?

              Schöne Grüße
              Christop

              Comment


              • #8
                Hallo Christoph, Setz in Dein Formular eine TMemo Komponente. Dann kannst Du mit Memo1->Lines->LoadFromFile(OpenDialog1->FileName); eine beliebige Textdatei lesen oder mit Memo1->Lines->SaveToFile(SaveDialog1->FileName); diese Datei wieder Speichern. Mit Edit1->Text=Memo1->Lines->Strings[0].c_str(); kannst Du dann den Text der ersten Zeile in ein Editfeld übertragen. Oder auch mit EditGruppe[x]->Text=Memo1->Lines->Strings[x].c_str(); Und zurück mit Memo1->Lines->Strings[x]=Edit1->Text.c_str();. Wenn Du das kapiert hast, kannst Du das TMemo einfach durch ein TStringList ersetzen. Memo oder StringList haben den Vorteil, daß das Laden und Speichern einfacher wird. Nachteil: Der Speicherplatz wird doppelt belegt - im Editfeld und in der StringList-Zeile. Ohne Memo oder StringList les Dir mal die Hilfe zu Write und Read oder fgets und fprintf oder wasweisichnochalles durch. Viel Spaß beim Üben - Günthe
                Günther

                Comment


                • #9
                  Hallo!

                  Super, danke, genau so wollte ich es erklärt haben.
                  Ich werde es jetzt dann nacher gleich mal ausprobieren.

                  Tschüssi
                  Christop

                  Comment


                  • #10
                    Ja was denn nun ?

                    Jetzt, dann, nachher oder gleich ;-
                    Günther

                    Comment


                    • #11
                      Hallo!

                      Ich habe es jetzt so einmal probiert, er schreibt jedoch nur den Wert von Edit0 in das Memo-Feld, mit den anderen macht er nix mehr.

                      Memo1->Lines->Clear();
                      Memo1->Lines->Strings[0]=Edit0->Text.c_str();
                      Memo1->Lines->Strings[1]=Edit1->Text.c_str();
                      Memo1->Lines->Strings[2]=Edit2->Text.c_str();
                      Memo1->Lines->Strings[3]=Edit3->Text.c_str();
                      Memo1->Lines->Strings[4]=Edit4->Text.c_str();
                      Memo1->Lines->Strings[5]=Edit5->Text.c_str();
                      Memo1->Lines->Strings[6]=Edit6->Text.c_str();
                      Memo1->Lines->Strings[7]=Edit7->Text.c_str();
                      SaveDialog1->Execute();
                      Memo1->Lines->SaveToFile(SaveDialog1->FileName)

                      Comment


                      • #12
                        <html>

                        <head>
                        <meta http-equiv="Content-Type"
                        content="text/html; charset=iso-8859-1">
                        <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
                        <title>Normale Seite ohne Titel</title>
                        </head>

                        <body bgcolor="#FFFFFF">

                        <p>Hallo, das mit der EditGruppe war gedacht, um alles in einer
                        Schleife abarbeiten zu können. Beim Open/Save Dialog immer daran
                        denken, daß der einen Abbruch-Button hat. Nach einem Löschen
                        aller Memo-Zeilen muß man neue Zeilen mit Add hinzufügen.
                        Versuch mal folgendes:</p>

                        <pre>
                        Memo1-&gt;Lines-&gt;Clear();
                        for(int i=0; i&lt;7; i++)
                        {
                        Memo1-&gt;Lines-&gt;Add(EditGruppe[i]-&gt;Text.c_str());
                        }
                        if(SaveDialog1-&gt;Execute())
                        {
                        Memo1-&gt;Lines-&gt;SaveToFile(SaveDialog1-&gt;FileName);
                        }
                        </pre>
                        </body>
                        </html&gt
                        Günther

                        Comment

                        Working...
                        X