<?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[Datei auslesen]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Ich hab ein grosses Problem.<br />
Mein Programm das ich zusammengeschustert habe liebt mich nicht.<br />
Ich kann zwar Weine anlegen und Anzeigen,aber sobald ich aus dem Programm aus und wieder einsteige ist alles weg.<br />
Es muss am einlesen in die Datei in den Statischen Speicher was zu tun haben.</p>
<p>Ich weiss mittlerweile das man so ein Programm heute anders schreibt, aber wir verwenden den alten Borland 5.02.<br />
Den neuen Programmstil im Kurs nicht soweit besprochen.</p>
<pre><code>#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
#include &lt;fstream.h&gt;
#include &lt;string.h&gt;
#include &lt;conio.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;dos.h&gt;

//Definition der Funktionstasten
#define F1 1
#define F2 2
#define F3 3
#define F4 4
#define F5 5
#define F6 6
#define F7 7
#define F8 8
#define F9 9
#define F10 10

#define EINZUGMENU 15
#define EINZUGTEXT 15

//Globale Datendefinitionen
const short MAXCHAR = 40;
const int MAXWEINE = 5;

// Struktur für Datum format
struct datum
{
	int tag;
	int monat;
	int jahr;
};

// Struktur für Informationen der SWeine
struct SWein
{
	char art[MAXCHAR];                //Zeichenkette für Wein art
   int stueckzahl;
   int wnr;                          //					  Wein NR.
   char name[MAXCHAR];               //					  Wein Namen
   char jahrgang[MAXCHAR];           //					  Wein Jahrgang
   char herkunftsland[MAXCHAR];      //					  Wein Herkunftsland
   char einlagerungsdatei;           //					  Wein Einlagerungsdatum
  	datum datum;
   double preis;                     //					  Wein Preis
};

//Funktionsdeklarationen
int menu();
void weinErfassen(SWein sammlung[], int &amp;aktAnz);
void weinAnzeigen(SWein sammlung[], int aktAnz);
void weinAendern(SWein sammlung[], int aktAnz);
void weinAusbuchen(SWein sammlung[], int &amp;aktAnz);

//Hilfsfunktionen
int fileRead(char* strfile,  const SWein* meineweine, int &amp;anz);
int fileSave(char* strfile, SWein* meineweine, int anz);
int fkt_taste();

// Hauptprogramm
int main()

{  //Statischer Speicher fuer MAXWEINE
   struct SWein sammlung[MAXWEINE];
   int aktAnz = 0, auswahl;

   //Daten aus Datei einlesen
   fileRead(&quot;weindaten.dat&quot;,sammlung,aktAnz);
   do{
   	auswahl = menu();
      switch(auswahl){
      	case F10:	//Anwendung beenden
         	clrscr();
            fileSave(&quot;weindaten.dat&quot;,sammlung, aktAnz++);
         	cout &lt;&lt; &quot;happy trails...&quot;;
            sleep(1);
            break;
			case F1:	//Daten Weine erfassen
         	cout &lt;&lt; endl &lt;&lt; aktAnz;
            getch();
         	weinErfassen(sammlung,aktAnz);
         	break;
         case F2:	//Daten aller Weine anzeigen
         	weinAnzeigen(sammlung, aktAnz);
         	break;
         case F3:	//Weine suchen und aendern anhand eines kriteriums
         	weinAendern(sammlung,aktAnz);
         	break;
         case F4: //Weine ausbuchen
         	weinAusbuchen(sammlung, aktAnz);
         	break;
         case F5: //Eingegebene Daten Sichern
         	clrscr();
            fileSave(&quot;weindaten.dat&quot;,sammlung, aktAnz);
            break;
         default:	//Alle anderen Faelle
         	break;
   	}
   }while(auswahl != F10);
   return(0);
}

//Funktionsdefinitionen
//Hauptfunktionen
//Menufunktione gibt Menue aus und liest Auswahl des Benutzers ein und gibt diese
//als int zuerueck
int menu(){
	//Lokale Daten
   char auswahl;
   do{
		clrscr();
      cout.setf(ios::right,ios::adjustfield);
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;&quot; &lt;&lt; &quot;Menue Weinverwaltung\n\n\n&quot;;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 1&quot; &lt;&lt; &quot;\tWeine erfassen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 2&quot; &lt;&lt; &quot;\tWeine anzeigen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 3&quot; &lt;&lt; &quot;\tWeine aendern&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 4&quot; &lt;&lt; &quot;\tWeine ausbuchen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 5&quot; &lt;&lt; &quot;\tEingegebene Daten Sichern&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F10&quot; &lt;&lt; &quot;\tBeenden&quot; &lt;&lt; endl &lt;&lt; endl;
      //Bedienung ueber Funktionstasten F1 - F10, fuer F1 bekommt man 1 zuerueck usw.
      auswahl = fkt_taste();
   }while(auswahl &lt; F1 || auswahl &gt; F10);
 	return auswahl;
}
//Funktionsdefinitionen (Implementierungen)
void weinErfassen(SWein sammlung[], int &amp;aktAnz)
{
	char x;
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   do
   {
      cout &lt;&lt; &quot;Weinnummer eingeben &gt; &quot; ;
      cin &gt;&gt; sammlung[aktAnz].wnr;
      if (sammlung[aktAnz].wnr==0)
			return;
      cout &lt;&lt; &quot;Vorhandene Stueckzahl eingeben &gt; &quot; ;
      cin &gt;&gt; sammlung[aktAnz].stueckzahl;
      cout &lt;&lt; &quot;Wein-Art(Rotwein, Weisswein) &gt; &quot;;
      cin &gt;&gt; sammlung[aktAnz].art;
	   cout &lt;&lt; &quot;Name (ohne Zwischenraeume) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].name;
      cout &lt;&lt; &quot;Jahrgang (jjjj) &gt; &quot;;
	   cin &gt;&gt;  sammlung[aktAnz].jahrgang;
      cout &lt;&lt; &quot;Herkunftsland &gt; &quot;;
      cin &gt;&gt; sammlung[aktAnz].herkunftsland;
	   cout &lt;&lt; &quot;Einlagerungsdatum(tt mm jj) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].datum.tag &gt;&gt;sammlung[aktAnz].datum.monat
	   &gt;&gt; sammlung[aktAnz].datum.jahr;
	   cout &lt;&lt; &quot;Preis (Euro) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].preis;
      aktAnz++;
      cout&lt;&lt;&quot;Wollen Sie weitermachen? Ja/Nein: &quot;;
      cin &gt;&gt; x;
	}while(x!='n');
   clrscr();
   return;
}

void weinAnzeigen(SWein sammlung[], int aktAnz)
{
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   cout&lt;&lt;&quot;===================================================\n\n&quot;;
   for(int i = 0; i &lt; aktAnz; i++)
   {
   	cout &lt;&lt; &quot;SWeinnummer: &quot; &lt;&lt; sammlung[i].wnr &lt;&lt; endl;
      cout &lt;&lt; &quot;Vorhandene Stueckzahl: &quot;  &lt;&lt; sammlung[i].stueckzahl&lt;&lt; endl;
      cout &lt;&lt; &quot;Art: &quot;  &lt;&lt; sammlung[i].art &lt;&lt; endl;
      cout &lt;&lt; &quot;Name: &quot; &lt;&lt; sammlung[i].name &lt;&lt; endl;
      cout &lt;&lt; &quot;Jahrgang: &quot; &lt;&lt; sammlung[i].jahrgang &lt;&lt; endl;
      cout &lt;&lt; &quot;Herkunftsland: &quot; &lt;&lt; sammlung[i].herkunftsland &lt;&lt; endl;
      cout &lt;&lt; &quot;Einlagerungsdatum: &quot; &lt;&lt; sammlung[i].datum.tag &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.monat
      &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.jahr &lt;&lt; endl;
      cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; sammlung[i].preis &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; &quot;-----------------------------\n&quot;;
	}
   cout&lt;&lt;&quot;Weiter mit beliebiger Taste...&quot;;
   getch();
   clrscr();
   return;
}

void weinAendern(SWein sammlung[], int aktAnz)
{
   clrscr();
   cout.setf(ios::right,ios::adjustfield);
   for(int i = 0; i &lt; aktAnz; i++)
   {

      cout&lt;&lt;&quot;Bitte gesuchte SWeinnummer eingeben: &quot;;
      cin&gt;&gt;i;
      if(sammlung[i].wnr==i);
      {
      cout &lt;&lt; &quot;Vorhandene Stueckzahl: \t\t\t&quot; &lt;&lt; sammlung[i].stueckzahl&lt;&lt; endl;
      cout &lt;&lt; &quot;Art:\t\t\t&quot; &lt;&lt; sammlung[i].art &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Name:\t\t\t&quot; &lt;&lt; sammlung[i].name &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Jahrgang:\t\t&quot; &lt;&lt; sammlung[i].jahrgang &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Herkunftsland:\t\t&quot; &lt;&lt; sammlung[i].herkunftsland &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Einlagerungsdatum:\t&quot; &lt;&lt; sammlung[i].datum.tag &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.monat
           &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.jahr &lt;&lt;&quot;\n&quot;;
	   cout &lt;&lt; &quot;Preis:\t\t\t&quot; &lt;&lt; sammlung[i].preis &lt;&lt; &quot;\n&quot;;
      }
      while(i != 'n')
      cout &lt;&lt; &quot;Wollen Sie weiter suchen? Ja/Nein: &quot;;
      cin &gt;&gt; i;
   }
   cout&lt;&lt;&quot;\nWeiter mit beliebiger Taste...&quot;;
   getch();
   clrscr();
   return;
}

void weinAusbuchen(SWein sammlung[], int &amp;aktAnz)
{
   char x;
   int i, anz;
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   do
   {
      clrscr();
   	cout &lt;&lt; &quot;Bitte gesuchte Weinnummer eingeben: &quot;;
	   cin &gt;&gt; x;
      //Suche Index im Array des Weines mit der Weinnummer x
		for(i = 0;x == sammlung[i].wnr; i++);

      cout &lt;&lt; &quot;Wieviele Falschen moechten sie ausbuchen &gt; &quot;;
      cin &gt;&gt; anz ;
      if(sammlung[i].stueckzahl &lt; anz)
      {
  	      cout &lt;&lt; &quot;Ihre Buchhaltung stimmt nicht, es sind nicht mehr soviele Flaschen vorhanden&quot;;
         getch();
      }
      else
      	if(sammlung[i].stueckzahl == anz)
         {
         	//Was mache ich, wenn dies zutrifft?? Loesche ich den Wein kplt. oder nur stueckzahl auf 0??
            cout &lt;&lt; &quot;\nWollen Sie den Eintrag loeschen? Ja/Nein: &quot;;
            //cout&lt;&lt;&quot;\nWollen Sie den Eintrag loeschen? Ja/Nein: &quot;;
            cin &gt;&gt; x;
			   //cin &gt;&gt; x;
         }
         else
         	if(sammlung[i].stueckzahl &gt; anz)
         		sammlung[i].stueckzahl = sammlung[i].stueckzahl - anz;
		cout &lt;&lt; &quot;Wollen Sie weitere Weine ausbuchen? Ja/Nein: &quot;;
      cin &gt;&gt; x;
   }while(x != 'n');

   getch();
   clrscr();
   return;
}

//Hilfsfunktionen
//fileRead liest Datei ein und alloziert dynamisch Speicher fuer alle Elemente und liest Sie ein
int fileRead(char* strfile, const SWein* meineweine, int &amp;anz){

	//Inputfilestream - Objekt, quasi Pointer auf die Dateien
	ifstream dat_ein;
  	//Eingabedatei oeffnen
  	dat_ein.open( strfile, ios::in||ios::binary);
   //Check ob's funktioniert hat
  	if (!dat_ein){
   	cerr &lt;&lt; &quot;Datei konnte nicht geoeffnet werden!\n&quot;;
    	return 1;
   }
   //1. Anzahl Elemente in Datei zaehlen
   anz = dat_ein.gcount() / sizeof(struct SWein);
  	//Strukturen einlesen
   for(int i = 0; i &lt; anz; i++){
	  	dat_ein.read((char *) &amp;meineweine[i],sizeof(struct SWein));
   }
 	//File unbedingt schliessen nach Gebrauch
  	dat_ein.close();
	return 0;
}

//fileSave speichert Daten eines Arrays in eine Datei, welche per Parameter uebergeben werden
int fileSave(char* strfile, SWein* meineweine, int anz){
	//Outputfilestream - Objekt, quasi Pointer auf die Dateien
	ofstream dat_aus;

  	// Ausgabedatei oeffnen
  	dat_aus.open(strfile, ios::out||ios::binary);

   //Check ob's funktioniert hat
  	if (!dat_aus){
    	cerr &lt;&lt; &quot;Datei konnte nicht geoeffnet werden!\n&quot;;
    	return 1;
   }

  	// Array mit Strukturen binaer in Datei schreiben
  	dat_aus.write((char *)meineweine, sizeof(struct SWein)*MAXWEINE);
	//File unbedingt schliessen nach Gebrauch
  	dat_aus.close();
	return 0;
}

//Erkennen der Funktionstaste
int fkt_taste()        /* Erkennung der Funktionstasten F1...F10 */
{
	int Nummer=20;                                        /* Nummer der Taste */
	char ch=0;                                         /* Charakter der Taste */
   do{
   	do {} while (!kbhit());                       /* Auf Tastendruck warten */
		ch = getch();
		if ((ch==0) &amp;&amp; (kbhit)){
      	ch = getch();
			Nummer = ch-58;	                /* ch = #0   =&gt; Fkt-Taste allgemein */
		}		                              /* Nummer der Funtionstaste ermitteln */
	}while ((Nummer&lt;1) || (Nummer&gt;10));   /* solange bis Fkt-Taste F01 bis F10 */
	return Nummer;
};
</code></pre>
<p>Wäre für jede Hilfe dankbar.</p>
<p>Gruss tinile</p>
<p><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="😃"
    /> <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="😃"
    /> <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>
<p><strong>Bitte Code-Tags verwenden</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131725/datei-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 09:11:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131725.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jan 2006 13:01:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 15:12:48 GMT]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Ich hab ein grosses Problem.<br />
Mein Programm das ich zusammengeschustert habe liebt mich nicht.<br />
Ich kann zwar Weine anlegen und Anzeigen,aber sobald ich aus dem Programm aus und wieder einsteige ist alles weg.<br />
Es muss am einlesen in die Datei in den Statischen Speicher was zu tun haben.</p>
<p>Ich weiss mittlerweile das man so ein Programm heute anders schreibt, aber wir verwenden den alten Borland 5.02.<br />
Den neuen Programmstil im Kurs nicht soweit besprochen.</p>
<pre><code>#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
#include &lt;fstream.h&gt;
#include &lt;string.h&gt;
#include &lt;conio.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;dos.h&gt;

//Definition der Funktionstasten
#define F1 1
#define F2 2
#define F3 3
#define F4 4
#define F5 5
#define F6 6
#define F7 7
#define F8 8
#define F9 9
#define F10 10

#define EINZUGMENU 15
#define EINZUGTEXT 15

//Globale Datendefinitionen
const short MAXCHAR = 40;
const int MAXWEINE = 5;

// Struktur für Datum format
struct datum
{
	int tag;
	int monat;
	int jahr;
};

// Struktur für Informationen der SWeine
struct SWein
{
	char art[MAXCHAR];                //Zeichenkette für Wein art
   int stueckzahl;
   int wnr;                          //					  Wein NR.
   char name[MAXCHAR];               //					  Wein Namen
   char jahrgang[MAXCHAR];           //					  Wein Jahrgang
   char herkunftsland[MAXCHAR];      //					  Wein Herkunftsland
   char einlagerungsdatei;           //					  Wein Einlagerungsdatum
  	datum datum;
   double preis;                     //					  Wein Preis
};

//Funktionsdeklarationen
int menu();
void weinErfassen(SWein sammlung[], int &amp;aktAnz);
void weinAnzeigen(SWein sammlung[], int aktAnz);
void weinAendern(SWein sammlung[], int aktAnz);
void weinAusbuchen(SWein sammlung[], int &amp;aktAnz);

//Hilfsfunktionen
int fileRead(char* strfile,  const SWein* meineweine, int &amp;anz);
int fileSave(char* strfile, SWein* meineweine, int anz);
int fkt_taste();

// Hauptprogramm
int main()

{  //Statischer Speicher fuer MAXWEINE
   struct SWein sammlung[MAXWEINE];
   int aktAnz = 0, auswahl;

   //Daten aus Datei einlesen
   fileRead(&quot;weindaten.dat&quot;,sammlung,aktAnz);
   do{
   	auswahl = menu();
      switch(auswahl){
      	case F10:	//Anwendung beenden
         	clrscr();
            fileSave(&quot;weindaten.dat&quot;,sammlung, aktAnz++);
         	cout &lt;&lt; &quot;happy trails...&quot;;
            sleep(1);
            break;
			case F1:	//Daten Weine erfassen
         	cout &lt;&lt; endl &lt;&lt; aktAnz;
            getch();
         	weinErfassen(sammlung,aktAnz);
         	break;
         case F2:	//Daten aller Weine anzeigen
         	weinAnzeigen(sammlung, aktAnz);
         	break;
         case F3:	//Weine suchen und aendern anhand eines kriteriums
         	weinAendern(sammlung,aktAnz);
         	break;
         case F4: //Weine ausbuchen
         	weinAusbuchen(sammlung, aktAnz);
         	break;
         case F5: //Eingegebene Daten Sichern
         	clrscr();
            fileSave(&quot;weindaten.dat&quot;,sammlung, aktAnz);
            break;
         default:	//Alle anderen Faelle
         	break;
   	}
   }while(auswahl != F10);
   return(0);
}

//Funktionsdefinitionen
//Hauptfunktionen
//Menufunktione gibt Menue aus und liest Auswahl des Benutzers ein und gibt diese
//als int zuerueck
int menu(){
	//Lokale Daten
   char auswahl;
   do{
		clrscr();
      cout.setf(ios::right,ios::adjustfield);
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;&quot; &lt;&lt; &quot;Menue Weinverwaltung\n\n\n&quot;;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 1&quot; &lt;&lt; &quot;\tWeine erfassen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 2&quot; &lt;&lt; &quot;\tWeine anzeigen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 3&quot; &lt;&lt; &quot;\tWeine aendern&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 4&quot; &lt;&lt; &quot;\tWeine ausbuchen&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F 5&quot; &lt;&lt; &quot;\tEingegebene Daten Sichern&quot; &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; setw(EINZUGMENU) &lt;&lt; &quot;F10&quot; &lt;&lt; &quot;\tBeenden&quot; &lt;&lt; endl &lt;&lt; endl;
      //Bedienung ueber Funktionstasten F1 - F10, fuer F1 bekommt man 1 zuerueck usw.
      auswahl = fkt_taste();
   }while(auswahl &lt; F1 || auswahl &gt; F10);
 	return auswahl;
}
//Funktionsdefinitionen (Implementierungen)
void weinErfassen(SWein sammlung[], int &amp;aktAnz)
{
	char x;
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   do
   {
      cout &lt;&lt; &quot;Weinnummer eingeben &gt; &quot; ;
      cin &gt;&gt; sammlung[aktAnz].wnr;
      if (sammlung[aktAnz].wnr==0)
			return;
      cout &lt;&lt; &quot;Vorhandene Stueckzahl eingeben &gt; &quot; ;
      cin &gt;&gt; sammlung[aktAnz].stueckzahl;
      cout &lt;&lt; &quot;Wein-Art(Rotwein, Weisswein) &gt; &quot;;
      cin &gt;&gt; sammlung[aktAnz].art;
	   cout &lt;&lt; &quot;Name (ohne Zwischenraeume) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].name;
      cout &lt;&lt; &quot;Jahrgang (jjjj) &gt; &quot;;
	   cin &gt;&gt;  sammlung[aktAnz].jahrgang;
      cout &lt;&lt; &quot;Herkunftsland &gt; &quot;;
      cin &gt;&gt; sammlung[aktAnz].herkunftsland;
	   cout &lt;&lt; &quot;Einlagerungsdatum(tt mm jj) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].datum.tag &gt;&gt;sammlung[aktAnz].datum.monat
	   &gt;&gt; sammlung[aktAnz].datum.jahr;
	   cout &lt;&lt; &quot;Preis (Euro) &gt; &quot;;
	   cin &gt;&gt; sammlung[aktAnz].preis;
      aktAnz++;
      cout&lt;&lt;&quot;Wollen Sie weitermachen? Ja/Nein: &quot;;
      cin &gt;&gt; x;
	}while(x!='n');
   clrscr();
   return;
}

void weinAnzeigen(SWein sammlung[], int aktAnz)
{
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   cout&lt;&lt;&quot;===================================================\n\n&quot;;
   for(int i = 0; i &lt; aktAnz; i++)
   {
   	cout &lt;&lt; &quot;SWeinnummer: &quot; &lt;&lt; sammlung[i].wnr &lt;&lt; endl;
      cout &lt;&lt; &quot;Vorhandene Stueckzahl: &quot;  &lt;&lt; sammlung[i].stueckzahl&lt;&lt; endl;
      cout &lt;&lt; &quot;Art: &quot;  &lt;&lt; sammlung[i].art &lt;&lt; endl;
      cout &lt;&lt; &quot;Name: &quot; &lt;&lt; sammlung[i].name &lt;&lt; endl;
      cout &lt;&lt; &quot;Jahrgang: &quot; &lt;&lt; sammlung[i].jahrgang &lt;&lt; endl;
      cout &lt;&lt; &quot;Herkunftsland: &quot; &lt;&lt; sammlung[i].herkunftsland &lt;&lt; endl;
      cout &lt;&lt; &quot;Einlagerungsdatum: &quot; &lt;&lt; sammlung[i].datum.tag &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.monat
      &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.jahr &lt;&lt; endl;
      cout &lt;&lt; &quot;Preis: &quot; &lt;&lt; sammlung[i].preis &lt;&lt; endl &lt;&lt; endl;
      cout &lt;&lt; &quot;-----------------------------\n&quot;;
	}
   cout&lt;&lt;&quot;Weiter mit beliebiger Taste...&quot;;
   getch();
   clrscr();
   return;
}

void weinAendern(SWein sammlung[], int aktAnz)
{
   clrscr();
   cout.setf(ios::right,ios::adjustfield);
   for(int i = 0; i &lt; aktAnz; i++)
   {

      cout&lt;&lt;&quot;Bitte gesuchte SWeinnummer eingeben: &quot;;
      cin&gt;&gt;i;
      if(sammlung[i].wnr==i);
      {
      cout &lt;&lt; &quot;Vorhandene Stueckzahl: \t\t\t&quot; &lt;&lt; sammlung[i].stueckzahl&lt;&lt; endl;
      cout &lt;&lt; &quot;Art:\t\t\t&quot; &lt;&lt; sammlung[i].art &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Name:\t\t\t&quot; &lt;&lt; sammlung[i].name &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Jahrgang:\t\t&quot; &lt;&lt; sammlung[i].jahrgang &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Herkunftsland:\t\t&quot; &lt;&lt; sammlung[i].herkunftsland &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Einlagerungsdatum:\t&quot; &lt;&lt; sammlung[i].datum.tag &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.monat
           &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.jahr &lt;&lt;&quot;\n&quot;;
	   cout &lt;&lt; &quot;Preis:\t\t\t&quot; &lt;&lt; sammlung[i].preis &lt;&lt; &quot;\n&quot;;
      }
      while(i != 'n')
      cout &lt;&lt; &quot;Wollen Sie weiter suchen? Ja/Nein: &quot;;
      cin &gt;&gt; i;
   }
   cout&lt;&lt;&quot;\nWeiter mit beliebiger Taste...&quot;;
   getch();
   clrscr();
   return;
}

void weinAusbuchen(SWein sammlung[], int &amp;aktAnz)
{
   char x;
   int i, anz;
	clrscr();
   cout.setf(ios::right,ios::adjustfield);
   do
   {
      clrscr();
   	cout &lt;&lt; &quot;Bitte gesuchte Weinnummer eingeben: &quot;;
	   cin &gt;&gt; x;
      //Suche Index im Array des Weines mit der Weinnummer x
		for(i = 0;x == sammlung[i].wnr; i++);

      cout &lt;&lt; &quot;Wieviele Falschen moechten sie ausbuchen &gt; &quot;;
      cin &gt;&gt; anz ;
      if(sammlung[i].stueckzahl &lt; anz)
      {
  	      cout &lt;&lt; &quot;Ihre Buchhaltung stimmt nicht, es sind nicht mehr soviele Flaschen vorhanden&quot;;
         getch();
      }
      else
      	if(sammlung[i].stueckzahl == anz)
         {
         	//Was mache ich, wenn dies zutrifft?? Loesche ich den Wein kplt. oder nur stueckzahl auf 0??
            cout &lt;&lt; &quot;\nWollen Sie den Eintrag loeschen? Ja/Nein: &quot;;
            //cout&lt;&lt;&quot;\nWollen Sie den Eintrag loeschen? Ja/Nein: &quot;;
            cin &gt;&gt; x;
			   //cin &gt;&gt; x;
         }
         else
         	if(sammlung[i].stueckzahl &gt; anz)
         		sammlung[i].stueckzahl = sammlung[i].stueckzahl - anz;
		cout &lt;&lt; &quot;Wollen Sie weitere Weine ausbuchen? Ja/Nein: &quot;;
      cin &gt;&gt; x;
   }while(x != 'n');

   getch();
   clrscr();
   return;
}

//Hilfsfunktionen
//fileRead liest Datei ein und alloziert dynamisch Speicher fuer alle Elemente und liest Sie ein
int fileRead(char* strfile, const SWein* meineweine, int &amp;anz){

	//Inputfilestream - Objekt, quasi Pointer auf die Dateien
	ifstream dat_ein;
  	//Eingabedatei oeffnen
  	dat_ein.open( strfile, ios::in||ios::binary);
   //Check ob's funktioniert hat
  	if (!dat_ein){
   	cerr &lt;&lt; &quot;Datei konnte nicht geoeffnet werden!\n&quot;;
    	return 1;
   }
   //1. Anzahl Elemente in Datei zaehlen
   anz = dat_ein.gcount() / sizeof(struct SWein);
  	//Strukturen einlesen
   for(int i = 0; i &lt; anz; i++){
	  	dat_ein.read((char *) &amp;meineweine[i],sizeof(struct SWein));
   }
 	//File unbedingt schliessen nach Gebrauch
  	dat_ein.close();
	return 0;
}

//fileSave speichert Daten eines Arrays in eine Datei, welche per Parameter uebergeben werden
int fileSave(char* strfile, SWein* meineweine, int anz){
	//Outputfilestream - Objekt, quasi Pointer auf die Dateien
	ofstream dat_aus;

  	// Ausgabedatei oeffnen
  	dat_aus.open(strfile, ios::out||ios::binary);

   //Check ob's funktioniert hat
  	if (!dat_aus){
    	cerr &lt;&lt; &quot;Datei konnte nicht geoeffnet werden!\n&quot;;
    	return 1;
   }

  	// Array mit Strukturen binaer in Datei schreiben
  	dat_aus.write((char *)meineweine, sizeof(struct SWein)*MAXWEINE);
	//File unbedingt schliessen nach Gebrauch
  	dat_aus.close();
	return 0;
}

//Erkennen der Funktionstaste
int fkt_taste()        /* Erkennung der Funktionstasten F1...F10 */
{
	int Nummer=20;                                        /* Nummer der Taste */
	char ch=0;                                         /* Charakter der Taste */
   do{
   	do {} while (!kbhit());                       /* Auf Tastendruck warten */
		ch = getch();
		if ((ch==0) &amp;&amp; (kbhit)){
      	ch = getch();
			Nummer = ch-58;	                /* ch = #0   =&gt; Fkt-Taste allgemein */
		}		                              /* Nummer der Funtionstaste ermitteln */
	}while ((Nummer&lt;1) || (Nummer&gt;10));   /* solange bis Fkt-Taste F01 bis F10 */
	return Nummer;
};
</code></pre>
<p>Wäre für jede Hilfe dankbar.</p>
<p>Gruss tinile</p>
<p><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="😃"
    /> <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="😃"
    /> <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>
<p><strong>Bitte Code-Tags verwenden</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/957760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957760</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 13:03:00 GMT]]></title><description><![CDATA[<p>sorry, aber benutze bitte code-tags!<br />
glaube nicht das sich das ganze so jemand anschaut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957763</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 13:04:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>formatier den Quelltext erst einmal mit Hilfe der cpp-Tags. Das ist so ueberhaupt<br />
nicht uebersichtlich.</p>
<p>Desweiteren waere es gut, wenn du erstmal nur den Code postest, der deiner<br />
Meinung nach nicht korrekt arbeitet. Stellt sich dieser als korrekt dar, kann<br />
man immernoch weitere Teile posten. Ein ganzes Programm zu posten hat immer sowas<br />
von &quot;Hier habt ihr meinen Quelltext, nun macht ihr mal&quot; und dagegen straeube ich<br />
mich irgendwie.</p>
<p>mfg<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957768</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 13:11:02 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-129186-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-129186-and-start-is-0.html</a></p>
<p>Wo kriegt man eine Weinverwaltung als Haufaufgabe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957776</guid><dc:creator><![CDATA[asdrubael]]></dc:creator><pubDate>Thu, 05 Jan 2006 13:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 15:08:05 GMT]]></title><description><![CDATA[<p>Sorry Leute<br />
Kann mir einer miteilen wie man den cpp-tags anwendet? (C/C++,Code,Quote)???</p>
<p>Es ist keine Hausaufgabe.Ist ein Kursabschlussprojekt.</p>
<p>Ich weiss leider nicht welcher Bereich richtig arbeitet.</p>
<p>Gruss<br />
Tinile</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957861</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:08:05 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 15:14:34 GMT]]></title><description><![CDATA[<p>tinile schrieb:</p>
<blockquote>
<p>Sorry Leute<br />
Kann mir einer miteilen wie man den cpp-tags anwendet? (C/C++,Code,Quote)???</p>
</blockquote>
<p>Ja. Unsere Forum FAQ:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39411.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39411.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/957867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957867</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 05 Jan 2006 15:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Thu, 05 Jan 2006 17:28:20 GMT]]></title><description><![CDATA[<p>HumeSikkins</p>
<p>Vielen Dank für Deinen Hinweis.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/958028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958028</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Thu, 05 Jan 2006 17:28:20 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Fri, 06 Jan 2006 15:02:09 GMT]]></title><description><![CDATA[<p>Für was den eine for schleife beim weinAnzeigen?<br />
Habe nicht so einen alten Boreland zum compellieren installiert.<br />
Las mal die schleife weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958826</guid><dc:creator><![CDATA[probo]]></dc:creator><pubDate>Fri, 06 Jan 2006 15:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sat, 07 Jan 2006 17:36:27 GMT]]></title><description><![CDATA[<p>Salü</p>
<p>Ich bin mir nicht sich ob der Befehl zum &quot;Datei aus der Datei einzulesen&quot; richtig ist. fileRead(&quot;weindaten.dat&quot;,sammlung,aktAnz);<br />
Die Funktion Anzeigen findet nichts.</p>
<pre><code class="language-cpp">//Hilfsfunktionen 
int fileRead(char* strfile,  const SWein* meineweine, int &amp;anz); 
int fileSave(char* strfile, SWein* meineweine, int anz); 
int fkt_taste(); 

// Hauptprogramm 
int main() 

{  //Statischer Speicher fuer MAXWEINE 
   struct SWein sammlung[MAXWEINE]; 
   int aktAnz = 0, auswahl; 

   //Daten aus Datei einlesen 
   fileRead(&quot;weindaten.dat&quot;,sammlung,aktAnz);
</code></pre>
<p>Kann mir einer einen Tip geben?</p>
<p>Gruss Tinile</p>
]]></description><link>https://www.c-plusplus.net/forum/post/959868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/959868</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sat, 07 Jan 2006 17:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sat, 07 Jan 2006 19:49:09 GMT]]></title><description><![CDATA[<p>tinile schrieb:</p>
<blockquote>
<p>Die Funktion Anzeigen findet nichts.</p>
</blockquote>
<p>Du meinst wenn man auf Anzeigen im Hauptmenü &quot;klickt&quot;?? Bei mir klappt das und die Weine werden angezeigt.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960055</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 07 Jan 2006 19:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sat, 07 Jan 2006 20:23:00 GMT]]></title><description><![CDATA[<p>Salü joomoo</p>
<p>Auch wenn du das Programm schliest und wieder startest??</p>
<p>Die Daten werden schon in der Datei gespeichert(weindaten.dat).Aber beim Neustart findet er sie nicht.</p>
<p>Könnte es an meinem compiler liegen?</p>
<p>Gruss tinile<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/960122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960122</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sat, 07 Jan 2006 20:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sat, 07 Jan 2006 20:50:03 GMT]]></title><description><![CDATA[<p>tinile schrieb:</p>
<blockquote>
<p>Salü joomoo</p>
<p>Auch wenn du das Programm schliest und wieder startest??</p>
<p>Die Daten werden schon in der Datei gespeichert(weindaten.dat).Aber beim Neustart findet er sie nicht.</p>
<p>Könnte es an meinem compiler liegen?</p>
<p>Gruss tinile<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Stimmt, bei mir werden die daten auch nicht richtig gelesen.</p>
<p>Folgende Zeile:</p>
<pre><code class="language-cpp">anz = dat_ein.gcount() / sizeof(struct SWein);
</code></pre>
<p>gcount() gibt dir nicht die größe der Datei, sondern wieviel Bytes du mit dem letztem input gelsesen hast. Also musst die anz Variable am besten auch noch in der Datei speichern.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960166</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 07 Jan 2006 20:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sat, 07 Jan 2006 22:22:29 GMT]]></title><description><![CDATA[<p>Salü</p>
<p>Hab endeckt das ich zum teil anz mit aktAnz verwechselt habe.</p>
<p>Wie und wo füge ich das anz in die Datei an???</p>
<p>Danke und Gruss Tinile</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960263</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sat, 07 Jan 2006 22:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 17:35:01 GMT]]></title><description><![CDATA[<p>Vielleicht mit einem Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960911</guid><dc:creator><![CDATA[loach]]></dc:creator><pubDate>Sun, 08 Jan 2006 17:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 19:56:53 GMT]]></title><description><![CDATA[<p>tinile schrieb:</p>
<blockquote>
<p>Salü</p>
<p>Hab endeckt das ich zum teil anz mit aktAnz verwechselt habe.</p>
<p>Wie und wo füge ich das anz in die Datei an???</p>
<p>Danke und Gruss Tinile</p>
</blockquote>
<p>Die ersten vier byte sollten die int Variable speichern. Danach folgt die Struktur.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961215</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 08 Jan 2006 19:56:53 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 20:38:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">Die ersten vier byte sollten die int Variable speichern. Danach folgt die Struktur.
</code></pre>
<p>Vertsteh irgendwie nur Bahnhof.</p>
<p>Wenn ich das anz dem dat_ein.gcount() zuweise?</p>
<p>Kannst du mir ein beispiel zeigen?</p>
<p>Gruss tinile</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961300</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sun, 08 Jan 2006 20:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 20:56:39 GMT]]></title><description><![CDATA[<p>Du musst die Variable aktAnz speichern.<br />
Das sieht dann so aus in der Funktion fileSave:</p>
<pre><code class="language-cpp">dat_aus.write(reinterpret_cast&lt;char*&gt;(&amp;anz),sizeof(int));
</code></pre>
<p>Danach schreibst du die Struktur.<br />
Beim einlesen (fileRead) liest du dann auch zuerst einen int ein:</p>
<pre><code class="language-cpp">dat_ein.read(reinterpret_cast&lt;char*&gt;(&amp;anz),sizeof(int));
</code></pre>
<p>Und danach die Struktur.</p>
<p>Klappt bei mir dann einwandfrei.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961350</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 08 Jan 2006 20:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 21:58:57 GMT]]></title><description><![CDATA[<p>Vielen Dank joomoo</p>
<p>Habe den Code eingefügt.Beim Test zeigt er mir aber zahlen (binär?).<br />
Hat es bei Dir alles richtig angezeigt?<br />
Muss ich den Code &quot;anz = dat_ein.gcount() / sizeof(struct SWein);&quot; vielleicht<br />
entfernen?<br />
Vielleicht habe ich ihn falsch eingefügt.</p>
<pre><code class="language-cpp">//Hilfsfunktionen
//fileRead liest Datei ein und alloziert dynamisch Speicher fuer alle Elemente und liest Sie ein
int fileRead(char* strfile, const SWein* meineweine, int &amp;anz){

	//Inputfilestream - Objekt, quasi Pointer auf die Dateien
	ifstream dat_ein;
  	//Eingabedatei oeffnen
  	dat_ein.open( strfile, ios::in||ios::binary);
   //Check ob's funktioniert hat
  	if (!dat_ein){
   	cerr &lt;&lt; &quot;Datei konnte nicht geoeffnet werden!\n&quot;;
    	return 1;
   }
   //1. Anzahl Elemente in Datei zaehlen
   anz = dat_ein.gcount() / sizeof(struct SWein);
   dat_ein.read( reinterpret_cast&lt;char*&gt;(&amp;anz),sizeof(int));

  	//Strukturen einlesen
   for(int i = 0; i &lt; anz; i++){
   	 dat_ein.read((char *) &amp;meineweine[i],sizeof(struct SWein));
   }
 	//File unbedingt schliessen nach Gebrauch
  	dat_ein.close();
	return 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/961387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961387</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sun, 08 Jan 2006 21:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 22:11:57 GMT]]></title><description><![CDATA[<p>Hast du es auch in der fileSave eingefügt?</p>
<p>Bei mir hat's geklappt. Versuch mal vorher die alte Datei (weindaten.dat) zu löschen.</p>
<p>Die alte Zeile ist sinnlos, nimm sie am besten raus, aber das sollte nicht das Problem sein.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961391</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 08 Jan 2006 22:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 22:32:52 GMT]]></title><description><![CDATA[<p>Vielen Dank</p>
<p>Jetzt klappt es.Du hast mir dabei sehr geholfen.</p>
<p>Wieder ein Problem weniger.<br />
Jetzt gehts an die Schuchfunktion im wein Aendern.Hab sie ein wenig umgebaut.Zwar nicht sehr fachmänisch aber sie geht halbwegs.<br />
Es gibt nur ein Problem.Wenn ich den Wein mit der Nummer 2 suche zeigt er mir den Wein Nummer 3 an.</p>
<pre><code class="language-cpp">void weinAendern(SWein sammlung[], int aktAnz)
{
   clrscr();
   char x;
   int i;
      for(i = 0; i &lt; aktAnz; i++)
      {
      cout&lt;&lt;&quot;Bitte gesuchte SWeinnummer eingeben: &quot;;
      cin &gt;&gt; i;
      if(sammlung[i].wnr==i);
      {
      cout &lt;&lt; &quot;SWeinnummer:\t\t&quot; &lt;&lt; sammlung[i].wnr &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Art:\t\t\t&quot; &lt;&lt; sammlung[i].art &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Name:\t\t\t&quot; &lt;&lt; sammlung[i].name &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Jahrgang:\t\t&quot; &lt;&lt; sammlung[i].jahrgang &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Herkunftsland:\t\t&quot; &lt;&lt; sammlung[i].herkunftsland &lt;&lt;&quot;\n&quot;;
      cout &lt;&lt; &quot;Einlagerungsdatum:\t&quot; &lt;&lt; sammlung[i].datum.tag &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.monat
           &lt;&lt; &quot;.&quot; &lt;&lt; sammlung[i].datum.jahr &lt;&lt;&quot;\n&quot;;
	   cout &lt;&lt; &quot;Preis:\t\t\t&quot; &lt;&lt; sammlung[i].preis &lt;&lt; &quot;\n&quot;;
      cout&lt;&lt;&quot;--------------------------------------------------\n&quot;;
      cout &lt;&lt; &quot;Vorhandene Stueckzahl:\t&quot; &lt;&lt; sammlung[i].stueckzahl&lt;&lt;&quot;\n\n&quot;;
      cout &lt;&lt; &quot;Wollen Sie den Lagerstand veraendern? Ja/Nein: &quot;;
      cin  &gt;&gt; x;
      if(x=='j')
      {
      cout &lt;&lt; &quot;Alter Lagerstand: &quot; &lt;&lt; sammlung[i].stueckzahl&lt;&lt;endl;
      cout &lt;&lt; &quot;Neuer Lagerstand eingeben: &quot;;
      cin &gt;&gt; sammlung[i].stueckzahl;
      cout &lt;&lt; &quot;Neuer Lagerstand: &quot; &lt;&lt; sammlung[i].stueckzahl&lt;&lt;endl;
      }
      cout &lt;&lt; &quot;Wollen Sie weiter suchen? Ja/Nein: &quot;;
      cin &gt;&gt; x;
      }while(x != 'n');
      cout &lt;&lt; &quot;\nWeiter mit beliebiger Taste...&quot;;
      }
      getch();
      clrscr();
      return;
}
</code></pre>
<p>Habt ihr vielleicht einen Tip zum Löschen eines ganze Weineintrages?<br />
Wird eher nicht gehen.Vermutlich nur überschreiben.<br />
Gibt es eine Möglichkeit dem Wein automatisch eine Nummer zu geben??</p>
<p><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="😃"
    /> <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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/961397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961397</guid><dc:creator><![CDATA[tinile]]></dc:creator><pubDate>Sun, 08 Jan 2006 22:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen on Sun, 08 Jan 2006 22:40:11 GMT]]></title><description><![CDATA[<p>tinile schrieb:</p>
<blockquote>
<p>Habt ihr vielleicht einen Tip zum Löschen eines ganze Weineintrages?</p>
</blockquote>
<p>Folgendermaßen:<br />
- 4 einträge<br />
- nr. 2 wird gelöscht<br />
- anz wird um eins reduziert<br />
- nr. 3 rückt an platzt von 2 und nr. 4 rückt an platzt von nr.3 &lt;&lt;-- Das ganze dann mit einer Schleife.</p>
<blockquote>
<p>Gibt es eine Möglichkeit dem Wein automatisch eine Nummer zu geben??</p>
</blockquote>
<p>Auch mit einer Schleife:</p>
<p>- int i = 0;<br />
- Überprüfe i:<br />
* Gibt es bereits einen Wein mit der Nr. i?<br />
~ Nein? -&gt; Dann gebe diesem wein die Nummer.<br />
~ Ja? -&gt; Dann überprüfe i+1</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961402</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 08 Jan 2006 22:40:11 GMT</pubDate></item></channel></rss>