<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Adresskarteikarten, C++ , Stream! Hilfe ^^]]></title><description><![CDATA[<p>Hi @ all User,</p>
<p>Habe da nen Problem:</p>
<p>Fehler beim Laden, es werden nur leere Strings geladen, außer der Postleitzahl, die wird 0 !<br />
scheinbar werden die werte nicht übergeben!</p>
<p>Speichern, es legt keine neue Datei an! Quasie sollte das meines erachtens werden wie einen Neuen Datensatz erzeugen, + Den Datensatzinhalteinfügen!</p>
<p>Datensatzzählen, habe versucht ans ende zu springen und mit der tellg funktion wollte ich die größe erfahren (soll ja die gesamtgröße zurückgeben) und diese wollte ich dann durch den Datensatz selbst Teilen Quasie ganz simpel um den aktuellen Datensatz zu erfahren jedoch liefert tellg mir imme -1 zurück KP warum!</p>
<p>Hier das Programm:<br />
<a href="http://people.freenet.de/Cybergamesworld/Adresskarteien.rar" rel="nofollow">Das Progie (Borland C++ Buielder 6)</a></p>
<p>Und hier der QuellCode:</p>
<p>Meine Header Datei</p>
<pre><code>#include &lt;fstream.h&gt;

        //Datensatzstruktur für Adresskartei definieren!
        struct pAdrDatensatz
        {
          char          Nachname[32];
          char          Vorname[17];
          char          Strasse[42];
          char          Nr[7];
          char          Ort[27];
          unsigned int  PLZ;
          char          Tel[22];
          char          email[32];
          char          Geburtsdatum[12];
        };
        //Datensatz
        pAdrDatensatz myDat;

        //Datei -speichern -laden
        AnsiString DateiName;
        //Stream
        ofstream dat_io;
        ifstream dat_in;
        //Datei offen ?
        bool Dat_Open;
</code></pre>
<p>Konstruktor</p>
<pre><code>//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  //Datei offen == false (geschlossen)
  Dat_Open=false;

  //Verzeichnis der Anwendung ermitteln
  AnsiString Pfad=ExtractFileDir(Application-&gt;ExeName);

  //Standart verzeichnis festlegen für den open &amp; save Dialog!
  SaveDialog1-&gt;InitialDir = Pfad;
  OpenDialog1-&gt;InitialDir = Pfad;

  //Einstellung der Größe von Form1 (Karteikarte)
  Form1-&gt;Width  = Panel1-&gt;Width + 18;
  Form1-&gt;Height = Panel1-&gt;Height + 15 + Button1-&gt;Height + 75;

  //Ermitteln der maximalen länge des Textes in den Edit Feldern
  E_Nachname-&gt;MaxLength         =sizeof(myDat.Nachname)-2;
  E_Vorname-&gt;MaxLength          =sizeof(myDat.Vorname)-2;
  E_Strasse-&gt;MaxLength          =sizeof(myDat.Strasse)-2;
  E_NR-&gt;MaxLength               =sizeof(myDat.Nr)-2;
  E_ORT-&gt;MaxLength              =sizeof(myDat.Ort)-2;
  E_TEL-&gt;MaxLength              =sizeof(myDat.Tel)-2;
  E_email-&gt;MaxLength            =sizeof(myDat.email)-2;
  E_Geburtsdatum-&gt;MaxLength     =sizeof(myDat.Geburtsdatum)-2;

  //Hint --&gt; Angabe der Max. Breite der Felder
  E_Nachname-&gt;Hint=&quot;maximal&quot;     + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Vorname-&gt;Hint=&quot;maximal&quot;      + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Strasse-&gt;Hint=&quot;maximal&quot;      + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_NR-&gt;Hint=&quot;maximal&quot;           + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_ORT-&gt;Hint=&quot;maximal&quot;          + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_TEL-&gt;Hint=&quot;maximal&quot;          + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_email-&gt;Hint=&quot;maximal&quot;        + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Geburtsdatum-&gt;Hint=&quot;maximal&quot; + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Dummy Button --&gt; Testwerte</p>
<pre><code>void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //Dummy Werte übergeben in die Struktur! können nicht zugewiesen werden müssen kopiert werden
  strcpy(myDat.Nachname,     &quot;Müller&quot;);
  strcpy(myDat.Vorname,      &quot;Manfred&quot;);
  strcpy(myDat.Strasse,      &quot;Am Höllenschlund&quot;);
  strcpy(myDat.Nr,           &quot;666a&quot;);
  strcpy(myDat.Ort,          &quot;Hölle&quot;);
  myDat.PLZ                  = 666;
  strcpy(myDat.Tel,          &quot;Devil-666&quot;);
  strcpy(myDat.email,        &quot;Hölle@666.com&quot;);
  strcpy(myDat.Geburtsdatum, &quot;01.01.0001&quot;);

  //int n=sizeof (myDat);
  //Werte in die Edit Felder ausgeben
  E_email-&gt;Text         = myDat.email;
  E_Geburtsdatum-&gt;Text  = myDat.Geburtsdatum;
  E_Nachname-&gt;Text      = myDat.Nachname;
  E_Vorname-&gt;Text       = myDat.Vorname;
  E_NR-&gt;Text            = myDat.Nr;
  E_ORT-&gt;Text           = myDat.Ort;
  E_PLZ-&gt;Text           = IntToStr(myDat.PLZ);
  E_Strasse-&gt;Text       = myDat.Strasse;
  E_TEL-&gt;Text           = myDat.Tel;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Beenden</p>
<pre><code>void __fastcall TForm1::Beenden1Click(TObject *Sender)
{
  Form1-&gt;Close();

  if (Dat_Open == true)
  {
    dat_io.close();
  }
}
</code></pre>
<p>Neuen Datensatz erstellen</p>
<pre><code>void __fastcall TForm1::Neu1Click(TObject *Sender)
{
  if(SaveDialog1-&gt;Execute() == true)
  {
    DateiName = SaveDialog1-&gt;FileName;
    dat_io.open(DateiName.c_str(),ios::binary|ios::trunc);
    Dat_Open = true;
  }
}
</code></pre>
<p>Ausgefüllte Felder als Datensatz schreiben</p>
<pre><code>void __fastcall TForm1::B_NeuClick(TObject *Sender)
{
  //Textfelder auslesen &amp; Datensatz zuweisen!
  strcpy(myDat.Nachname,    E_Nachname-&gt;Text.c_str());
  strcpy(myDat.Vorname,     E_Vorname-&gt;Text.c_str());
  strcpy(myDat.Strasse,     E_Strasse-&gt;Text.c_str());
  strcpy(myDat.Nr,          E_NR-&gt;Text.c_str());
  strcpy(myDat.Ort,         E_ORT-&gt;Text.c_str());
  myDat.PLZ                 =StrToInt(E_PLZ-&gt;Text);
  strcpy(myDat.Tel,         E_TEL-&gt;Text.c_str());
  strcpy(myDat.email,       E_email-&gt;Text.c_str());
  strcpy(myDat.Geburtsdatum,E_Geburtsdatum-&gt;Text.c_str());

  //Datensatz an die Datei anhängen Anpassen der Größe
  dat_io.write((char*) &amp; myDat, sizeof(myDat));
}
</code></pre>
<p>So bis hier Funktioniert alles!</p>
<p>Speichern</p>
<pre><code>void __fastcall TForm1::Speichern1Click(TObject *Sender)
{
  if(SaveDialog1-&gt;Execute() == true)
  {
    DateiName = SaveDialog1-&gt;FileName;
    dat_io.open(DateiName.c_str(),ios::binary | ios::app);

    dat_io.write((char*) &amp; myDat, sizeof(myDat));
    Dat_Open = true;
  }
}
</code></pre>
<p>Laden:</p>
<pre><code>void __fastcall TForm1::Laden1Click(TObject *Sender)
{
  if(OpenDialog1-&gt;Execute() == true)
  {
   DateiName = OpenDialog1-&gt;FileName;
   dat_in.open(DateiName.c_str(),ios::failbit | ios::in | ios::binary | ios::app);

   if(dat_in.is_open())
   {
     dat_in.get((char*)&amp; myDat, sizeof (myDat));
     //dat_in.read((char*)&amp; myDat, sizeof(myDat));
     //dat_in.read(DateiName.c_str(), sizeof(myDat));
     //dat_in.get((char*)&amp; myDat, sizeof (myDat));

     //Werte in die Edit Felder ausgeben
     E_Nachname-&gt;Text      = myDat.Nachname;
     E_Vorname-&gt;Text       = myDat.Vorname;
     E_Strasse-&gt;Text       = myDat.Strasse;
     E_NR-&gt;Text            = myDat.Nr;
     E_ORT-&gt;Text           = myDat.Ort;
     E_PLZ-&gt;Text           = IntToStr(myDat.PLZ);
     E_TEL-&gt;Text           = myDat.Tel;
     E_email-&gt;Text         = myDat.email;
     E_Geburtsdatum-&gt;Text  = myDat.Geburtsdatum;

     Dat_Open = true;
     DatensatzNR();
    }
  }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Datensatzzahl:</p>
<pre><code>void TForm1::DatensatzNR(void)
{
   DateiName = OpenDialog1-&gt;FileName;
   dat_in.open(DateiName.c_str(),ios::in | ios::binary | ios::app);

   if(dat_in.is_open())
   {
    //seekg sucht das Ende des Datensatzes
    dat_in.seekg (ifstream::beg,ifstream::end);
    //tellg --&gt; gibt die Größe in Bytes an (Gesammtgröße des Datensatzes)
    int nBytes=dat_in.tellg();
    //Ermitteln der Größe eines Datensatzes
    int nmyDat = sizeof (myDat);
    //die ermittelte Gesamtgröße geteilt durch die Datensatzgröße
    int n = nBytes / nmyDat;

    /*Datensatznummer in der Statusbar ausgeben*/
    SB1-&gt;Panels-&gt;Items[1]-&gt;Text=IntToStr(n);
   }
}
</code></pre>
<p>Vielen dank für die Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118384/adresskarteikarten-c-stream-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 15:15:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118384.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Aug 2005 21:01:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 17 Aug 2005 21:01:40 GMT]]></title><description><![CDATA[<p>Hi @ all User,</p>
<p>Habe da nen Problem:</p>
<p>Fehler beim Laden, es werden nur leere Strings geladen, außer der Postleitzahl, die wird 0 !<br />
scheinbar werden die werte nicht übergeben!</p>
<p>Speichern, es legt keine neue Datei an! Quasie sollte das meines erachtens werden wie einen Neuen Datensatz erzeugen, + Den Datensatzinhalteinfügen!</p>
<p>Datensatzzählen, habe versucht ans ende zu springen und mit der tellg funktion wollte ich die größe erfahren (soll ja die gesamtgröße zurückgeben) und diese wollte ich dann durch den Datensatz selbst Teilen Quasie ganz simpel um den aktuellen Datensatz zu erfahren jedoch liefert tellg mir imme -1 zurück KP warum!</p>
<p>Hier das Programm:<br />
<a href="http://people.freenet.de/Cybergamesworld/Adresskarteien.rar" rel="nofollow">Das Progie (Borland C++ Buielder 6)</a></p>
<p>Und hier der QuellCode:</p>
<p>Meine Header Datei</p>
<pre><code>#include &lt;fstream.h&gt;

        //Datensatzstruktur für Adresskartei definieren!
        struct pAdrDatensatz
        {
          char          Nachname[32];
          char          Vorname[17];
          char          Strasse[42];
          char          Nr[7];
          char          Ort[27];
          unsigned int  PLZ;
          char          Tel[22];
          char          email[32];
          char          Geburtsdatum[12];
        };
        //Datensatz
        pAdrDatensatz myDat;

        //Datei -speichern -laden
        AnsiString DateiName;
        //Stream
        ofstream dat_io;
        ifstream dat_in;
        //Datei offen ?
        bool Dat_Open;
</code></pre>
<p>Konstruktor</p>
<pre><code>//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  //Datei offen == false (geschlossen)
  Dat_Open=false;

  //Verzeichnis der Anwendung ermitteln
  AnsiString Pfad=ExtractFileDir(Application-&gt;ExeName);

  //Standart verzeichnis festlegen für den open &amp; save Dialog!
  SaveDialog1-&gt;InitialDir = Pfad;
  OpenDialog1-&gt;InitialDir = Pfad;

  //Einstellung der Größe von Form1 (Karteikarte)
  Form1-&gt;Width  = Panel1-&gt;Width + 18;
  Form1-&gt;Height = Panel1-&gt;Height + 15 + Button1-&gt;Height + 75;

  //Ermitteln der maximalen länge des Textes in den Edit Feldern
  E_Nachname-&gt;MaxLength         =sizeof(myDat.Nachname)-2;
  E_Vorname-&gt;MaxLength          =sizeof(myDat.Vorname)-2;
  E_Strasse-&gt;MaxLength          =sizeof(myDat.Strasse)-2;
  E_NR-&gt;MaxLength               =sizeof(myDat.Nr)-2;
  E_ORT-&gt;MaxLength              =sizeof(myDat.Ort)-2;
  E_TEL-&gt;MaxLength              =sizeof(myDat.Tel)-2;
  E_email-&gt;MaxLength            =sizeof(myDat.email)-2;
  E_Geburtsdatum-&gt;MaxLength     =sizeof(myDat.Geburtsdatum)-2;

  //Hint --&gt; Angabe der Max. Breite der Felder
  E_Nachname-&gt;Hint=&quot;maximal&quot;     + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Vorname-&gt;Hint=&quot;maximal&quot;      + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Strasse-&gt;Hint=&quot;maximal&quot;      + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_NR-&gt;Hint=&quot;maximal&quot;           + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_ORT-&gt;Hint=&quot;maximal&quot;          + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_TEL-&gt;Hint=&quot;maximal&quot;          + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_email-&gt;Hint=&quot;maximal&quot;        + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
  E_Geburtsdatum-&gt;Hint=&quot;maximal&quot; + IntToStr(sizeof(myDat.Nachname)-2) + &quot;Zeichen&quot;;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Dummy Button --&gt; Testwerte</p>
<pre><code>void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //Dummy Werte übergeben in die Struktur! können nicht zugewiesen werden müssen kopiert werden
  strcpy(myDat.Nachname,     &quot;Müller&quot;);
  strcpy(myDat.Vorname,      &quot;Manfred&quot;);
  strcpy(myDat.Strasse,      &quot;Am Höllenschlund&quot;);
  strcpy(myDat.Nr,           &quot;666a&quot;);
  strcpy(myDat.Ort,          &quot;Hölle&quot;);
  myDat.PLZ                  = 666;
  strcpy(myDat.Tel,          &quot;Devil-666&quot;);
  strcpy(myDat.email,        &quot;Hölle@666.com&quot;);
  strcpy(myDat.Geburtsdatum, &quot;01.01.0001&quot;);

  //int n=sizeof (myDat);
  //Werte in die Edit Felder ausgeben
  E_email-&gt;Text         = myDat.email;
  E_Geburtsdatum-&gt;Text  = myDat.Geburtsdatum;
  E_Nachname-&gt;Text      = myDat.Nachname;
  E_Vorname-&gt;Text       = myDat.Vorname;
  E_NR-&gt;Text            = myDat.Nr;
  E_ORT-&gt;Text           = myDat.Ort;
  E_PLZ-&gt;Text           = IntToStr(myDat.PLZ);
  E_Strasse-&gt;Text       = myDat.Strasse;
  E_TEL-&gt;Text           = myDat.Tel;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Beenden</p>
<pre><code>void __fastcall TForm1::Beenden1Click(TObject *Sender)
{
  Form1-&gt;Close();

  if (Dat_Open == true)
  {
    dat_io.close();
  }
}
</code></pre>
<p>Neuen Datensatz erstellen</p>
<pre><code>void __fastcall TForm1::Neu1Click(TObject *Sender)
{
  if(SaveDialog1-&gt;Execute() == true)
  {
    DateiName = SaveDialog1-&gt;FileName;
    dat_io.open(DateiName.c_str(),ios::binary|ios::trunc);
    Dat_Open = true;
  }
}
</code></pre>
<p>Ausgefüllte Felder als Datensatz schreiben</p>
<pre><code>void __fastcall TForm1::B_NeuClick(TObject *Sender)
{
  //Textfelder auslesen &amp; Datensatz zuweisen!
  strcpy(myDat.Nachname,    E_Nachname-&gt;Text.c_str());
  strcpy(myDat.Vorname,     E_Vorname-&gt;Text.c_str());
  strcpy(myDat.Strasse,     E_Strasse-&gt;Text.c_str());
  strcpy(myDat.Nr,          E_NR-&gt;Text.c_str());
  strcpy(myDat.Ort,         E_ORT-&gt;Text.c_str());
  myDat.PLZ                 =StrToInt(E_PLZ-&gt;Text);
  strcpy(myDat.Tel,         E_TEL-&gt;Text.c_str());
  strcpy(myDat.email,       E_email-&gt;Text.c_str());
  strcpy(myDat.Geburtsdatum,E_Geburtsdatum-&gt;Text.c_str());

  //Datensatz an die Datei anhängen Anpassen der Größe
  dat_io.write((char*) &amp; myDat, sizeof(myDat));
}
</code></pre>
<p>So bis hier Funktioniert alles!</p>
<p>Speichern</p>
<pre><code>void __fastcall TForm1::Speichern1Click(TObject *Sender)
{
  if(SaveDialog1-&gt;Execute() == true)
  {
    DateiName = SaveDialog1-&gt;FileName;
    dat_io.open(DateiName.c_str(),ios::binary | ios::app);

    dat_io.write((char*) &amp; myDat, sizeof(myDat));
    Dat_Open = true;
  }
}
</code></pre>
<p>Laden:</p>
<pre><code>void __fastcall TForm1::Laden1Click(TObject *Sender)
{
  if(OpenDialog1-&gt;Execute() == true)
  {
   DateiName = OpenDialog1-&gt;FileName;
   dat_in.open(DateiName.c_str(),ios::failbit | ios::in | ios::binary | ios::app);

   if(dat_in.is_open())
   {
     dat_in.get((char*)&amp; myDat, sizeof (myDat));
     //dat_in.read((char*)&amp; myDat, sizeof(myDat));
     //dat_in.read(DateiName.c_str(), sizeof(myDat));
     //dat_in.get((char*)&amp; myDat, sizeof (myDat));

     //Werte in die Edit Felder ausgeben
     E_Nachname-&gt;Text      = myDat.Nachname;
     E_Vorname-&gt;Text       = myDat.Vorname;
     E_Strasse-&gt;Text       = myDat.Strasse;
     E_NR-&gt;Text            = myDat.Nr;
     E_ORT-&gt;Text           = myDat.Ort;
     E_PLZ-&gt;Text           = IntToStr(myDat.PLZ);
     E_TEL-&gt;Text           = myDat.Tel;
     E_email-&gt;Text         = myDat.email;
     E_Geburtsdatum-&gt;Text  = myDat.Geburtsdatum;

     Dat_Open = true;
     DatensatzNR();
    }
  }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Datensatzzahl:</p>
<pre><code>void TForm1::DatensatzNR(void)
{
   DateiName = OpenDialog1-&gt;FileName;
   dat_in.open(DateiName.c_str(),ios::in | ios::binary | ios::app);

   if(dat_in.is_open())
   {
    //seekg sucht das Ende des Datensatzes
    dat_in.seekg (ifstream::beg,ifstream::end);
    //tellg --&gt; gibt die Größe in Bytes an (Gesammtgröße des Datensatzes)
    int nBytes=dat_in.tellg();
    //Ermitteln der Größe eines Datensatzes
    int nmyDat = sizeof (myDat);
    //die ermittelte Gesamtgröße geteilt durch die Datensatzgröße
    int n = nBytes / nmyDat;

    /*Datensatznummer in der Statusbar ausgeben*/
    SB1-&gt;Panels-&gt;Items[1]-&gt;Text=IntToStr(n);
   }
}
</code></pre>
<p>Vielen dank für die Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/854480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854480</guid><dc:creator><![CDATA[cyby]]></dc:creator><pubDate>Wed, 17 Aug 2005 21:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 17 Aug 2005 21:12:27 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wenn du schon mit dem BCB arbeitest, warum nimmst du nicht einfach TStringList, um die Daten zu sammeln und in eine Datei zu schreiben/daraus zu laden? Das würde den Code sehr vereinfachen, und sicher auch den Fehler umgehen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/854481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/854481</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 17 Aug 2005 21:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Tue, 23 Aug 2005 12:11:14 GMT]]></title><description><![CDATA[<p>Hi, ja da hast du recht...<br />
Jedoch beschäftige ich mich ja gerade mit Streams und wollte dies Progie so wie ichs gestaltet habe erstmal zuende bringen, einfach der Übung wegen!</p>
<p>Denn ich will ja nicht vor dem Prob wegrennen sondern es bewältigen denn nur so lernt man ja Proggen ^^</p>
<p>hier bin mit dem Laden und zählen weitergekommen habe nen wenig weiter getüftelt... fertig ist's noch nicht... und fehlerfrei auch nicht aber die funktionen sind etwas mehr gegeben ^^</p>
<pre><code>void TForm1::DatensatzNR(int Byte,int myDat)
{
  //die ermittelte Gesamtgröße geteilt durch die Datensatzgröße
  int n = Byte/myDat;

  /*Datensatznummer in der Statusbar ausgeben*/
  SB1-&gt;Panels-&gt;Items[1]-&gt;Text=IntToStr(n);
}
</code></pre>
<pre><code>void __fastcall TForm1::Laden1Click(TObject *Sender)
{
  if(OpenDialog1-&gt;Execute() == true)
  {
    DateiName = OpenDialog1-&gt;FileName;
    dat_in.open(DateiName.c_str(),ios::in | ios::binary);

    if(!dat_in.is_open())
    {
      //Datei ist nicht offen!
      Application-&gt;MessageBox(&quot;Ihr Datensatz konnte nicht geöffnet werden.&quot;, &quot;! FEHLER !&quot;, MB_OK);
    }
    else
    {
      //Werte in die Edit Felder ausgeben
      dat_in.read((char*)&amp; myDat, sizeof(myDat));
      E_Nachname-&gt;Text      = myDat.Nachname;
      E_Vorname-&gt;Text       = myDat.Vorname;
      E_Strasse-&gt;Text       = myDat.Strasse;
      E_NR-&gt;Text            = myDat.Nr;
      E_ORT-&gt;Text           = myDat.Ort;
      E_PLZ-&gt;Text           = IntToStr(myDat.PLZ);
      E_TEL-&gt;Text           = myDat.Tel;
      E_email-&gt;Text         = myDat.email;
      E_Geburtsdatum-&gt;Text  = myDat.Geburtsdatum;

      Dat_Open = true;

      //seekg sucht das Ende des Datensatzes
      dat_in.seekg (ifstream::beg,ifstream::end);
      //nBytes --&gt; tellg --&gt; gibt die Größe in Bytes an (Gesammtgröße des Datensatzes)
      nBytes=dat_in.tellg();
      //nmyDat --&gt; Ermitteln der Größe eines Datensatzes
      nmyDat = sizeof (myDat);

      DatensatzNR(nBytes,nmyDat);
    }
  }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Danke dir aber für deine Antwort</p>
]]></description><link>https://www.c-plusplus.net/forum/post/856841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/856841</guid><dc:creator><![CDATA[cyby]]></dc:creator><pubDate>Tue, 23 Aug 2005 12:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Tue, 23 Aug 2005 12:21:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>fertig ist's noch nicht... und fehlerfrei auch nicht</p>
</blockquote>
<p>Hm... erwartest du jetzt eine Antwort? Wenn ja, erklär doch erstmal präzise den Fehler und was du wissen willst.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/856850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/856850</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 23 Aug 2005 12:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 24 Aug 2005 11:11:31 GMT]]></title><description><![CDATA[<p>Hi @ akari</p>
<p>Also mein Problem liegt darin, das er die Strings alle ausgibt jedoch gibt er zuviel aus in den einzelnen Edit Feldern!</p>
<p>Versuche das mal andres zu erklären!</p>
<p>1.E_Feld --&gt; Müller //Funktioniert<br />
2.E_Feld --&gt; Mannfred Am H //Gibt noch die strasse mit aus<br />
usw.</p>
<p>wie könnte ich die string in den Editfeldern begrenzen ?<br />
Habe da nichts für gefunden habe das jetzt über &quot;dat_in.get()&quot; gelöst jedoch habe ich da mit dem &quot;integer - Wert&quot; Probleme der auch Binäre gespeichert wurde!</p>
<p>Hier ist meine neue Ausgabe:</p>
<p>Die Lade Funktion:</p>
<pre><code>//---------------------------------------------------------------------------
void __fastcall TForm1::Laden1Click(TObject *Sender)
{
  if(dat_in.is_open()||dat_io.is_open())
  {
    dat_io.close();
    dat_in.close();
  }

  if(OpenDialog1-&gt;Execute() == true)
  {
    DateiName = OpenDialog1-&gt;FileName;
    dat_in.open(DateiName.c_str(),ios::in | ios::binary);

    if(!dat_in.is_open())
    {
      //Datei ist nicht offen!
      Application-&gt;MessageBox(&quot;Ihr Datensatz konnte nicht geöffnet werden.&quot;, &quot;! FEHLER !&quot;, MB_OK);
    }
    else
    {
      //Datei offen
      //Daten-Werte in die Edit Felder ausgeben

      Ausgabe_Daten();

      Dat_Open = true;

      //seekg sucht das Ende des Datensatzes
      dat_in.seekg (ifstream::beg,ifstream::end);
      //nBytes --&gt; tellg --&gt; gibt die Größe in Bytes an (Gesammtgröße des Datensatzes)
      nBytes=dat_in.tellg();
      //nmyDat --&gt; Ermitteln der Größe eines Datensatzes
      nmyDat = sizeof (myDat);

      DatensatzNR(nBytes,nmyDat);
    }
  }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Habe zwecks übersichtlichkeit eine neue Funktion erstellt!<br />
void Ausgabe_Daten(void);<br />
Hier:</p>
<pre><code>//---------------------------------------------------------------------------
void TForm1::Ausgabe_Daten(void)
{
     /*
      dat_in.read((char*)&amp; myDat, sizeof(myDat));

      E_Nachname-&gt;Text     = myDat.Nachname;
      E_Vorname-&gt;Text      = myDat.Vorname;
      E_Strasse-&gt;Text      = myDat.Strasse;
      E_NR-&gt;Text           = myDat.Nr;
      E_ORT-&gt;Text          = myDat.Ort;
      E_PLZ-&gt;Text          = IntToStr(myDat.PLZ);
      E_TEL-&gt;Text          = myDat.Tel;
      E_email-&gt;Text        = myDat.email;
      E_Geburtsdatum-&gt;Text = myDat.Geburtsdatum;
    */
      char ch;
      AnsiString buff;
      int Postl;

      for(int i=0;i&lt;=sizeof(myDat.Nachname)-1 ;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_Nachname-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Vorname)-1;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_Vorname-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Strasse)-1;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_Strasse-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Nr)-1;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_NR-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Ort);i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_ORT-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.PLZ)+1;i++)
      {
        dat_in.get(ch);
        Postl = ch;
        buff = IntToStr(Postl);
        E_PLZ-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Tel)-1;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_TEL-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.email)-1;i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_email-&gt;Text = buff;
      }

      buff =&quot;&quot;;

      for(int i=0;i&lt;=sizeof(myDat.Geburtsdatum);i++)
      {
        dat_in.get(ch);
        buff = buff + ch;
        E_Geburtsdatum-&gt;Text = buff;
      }
}
//---------------------------------------------------------------------------
</code></pre>
<p>So bei dieser Art &amp; Weise funktioniert alles bis auf die als Integer abgespeicherte PLZ!</p>
<p>Mit der Speicher Funktion habe ich auch noch Probleme!<br />
Und zwar, wenn ich ios::app verwende speichert er den Datensatz nicht ab.<br />
Wenn ich es wie folgt verwende, speichert er in ab, jedoch nur einen Datensatz &amp; auch nur blanko! also nen leeren Datensatz von 200 Byte ^^.<br />
KP warum! (beim öffnen nen automatisches trunk?)</p>
<pre><code>//---------------------------------------------------------------------------
void __fastcall TForm1::Speichern1Click(TObject *Sender)
{
  if(SaveDialog1-&gt;Execute() == true)
  {
    DateiName = SaveDialog1-&gt;FileName;
    dat_io.open(DateiName.c_str(),ios::binary);
    dat_io.write((char*) &amp; myDat, sizeof(myDat));
    Dat_Open = true;
  }
}
//---------------------------------------------------------------------------
</code></pre>
<p>So beim Speichern &amp; Laden komme ich nicht weiter voran... Wenn jemand bzw. du akari,(da ja bis dato noch niemand weiter geschrieben hat ;)) nen Tip hat wie ich evt. die erste Lösung Splitten kann oder, in der 2. Lösung vernünftig die PLZ ausgeben kann wäre ich sehr dankbar! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Die Datensatznummer funktioniert, werde mich jetzt mit dem Switschen beschäftigen (also vor, zurück, An den Anfang, An den Ende)</p>
<p>MFG<br />
Dennis alias cyby</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857450</guid><dc:creator><![CDATA[cyby]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 24 Aug 2005 11:28:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich denke du solltest dir einfach mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html" rel="nofollow">dieses Thema</a> aus der C++ FAQ anschauen, um deine Stream-Operationen in Ordnung zu bringen. Es gibt dort ein Absachnitt &quot;Das letzte Beispiel zeigt wie man Datensätze schreiben und lesen kann.&quot;<br />
Und dann kannst du auch char[] direkt an AnsiString übergeben, das must du nicht char für char kopieren.</p>
<p>/Edit : und statt der char[] im Struct kannst du auch gleich besser std:string oder AnsiString verwenden.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857460</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 24 Aug 2005 11:51:50 GMT]]></title><description><![CDATA[<p>Danke dir ziehe ich mir mal rein...<br />
Nur denke ich steht das auch nicht mehr als in meinen Büchern ^^ so beim flüchtigen überfliegen ^^</p>
<p>aber werde mir das jetzt mal in ruhe zu gemüte führen...</p>
<p>MFG<br />
Dennis alias cyby</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857479</guid><dc:creator><![CDATA[cyby]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to Adresskarteikarten, C++ , Stream! Hilfe ^^ on Wed, 24 Aug 2005 12:27:00 GMT]]></title><description><![CDATA[<p>Hi stehen doch nen paar antworten drin die ich gesucht habe *g*<br />
danke dir nochmal wenn ich weiter probs habe oder absolute verständnisprobs werde ich mich nochmal melden!</p>
<p>thx<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/857499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857499</guid><dc:creator><![CDATA[Cyby]]></dc:creator><pubDate>Wed, 24 Aug 2005 12:27:00 GMT</pubDate></item></channel></rss>