Die Mitgliedschaft ist KOSTENLOS und bietet allen registrierten Nutzern unbegrenzten Zugriff auf alle Funktionen, Ressourcen und Tools von ConsultDomain.de! Optionale Mitgliedschaftsupgrades schalten exklusive Vorteile frei, wie Profil-Signaturen mit Links, Bannerplatzierungen, Erwähnungen im wöchentlichen Newsletter und vieles mehr – individuell angepasst an Ihr Mitgliedschaftslevel!

Willkommen!

Durch Ihre Registrierung bei uns können Sie mit anderen Mitgliedern unserer Community diskutieren, teilen und private Nachrichten austauschen.

Jetzt anmelden!

C-Programmierung die Zweite

  • Ersteller Ersteller engel
  • Erstellt am Erstellt am
E

engel

Guest
Hallo,
folgende beiden Programme habe ich ich einen Programmgenerator eingebunden.

_LagerEintrag() soll dabei überprüfen, ob die Datei e.txt besteht. Wenn nicht soll diese erstellt werden.
_AusgangEintrag() soll das mit a.txt machen.

Es geht darum, dass die Daten für den Eingang und Ausgang in den dafür vorgesehenen Textdateien gespeichert werden sollen.
Irgendwie kommt dass Programm aber durcheinander.
Wo könnte der Fehler liegen?

_Abspeichern() soll die Daten auf vollständigkeit überprüfen und in die gerade benutze Textdatei speichern. Ausserdem die Daten in einer gewissen Reihenfolge sortieren.

Bin wie immer über jegliche Hilfe dankbar!

grüsse,
engel

_LagerEintrag()
{
 FILE *c;
 strcpy(out,"e.txt");
 // Check whether files exist
 // if not create the file
 if ((c=fopen(out,"a"))==NULL)
 {
    fputs("1234/n",c);
    fclose(c);
 }
}



_AusgangEintrag()
{
 FILE *c;
 strcpy(out,"a.txt");
 // Check whether files exist
 // if not create the file
 if ((c=fopen(out,"a"))==NULL)
 {
    fputs("1234/n",c);
    fclose(c);
 }
}



_Abspeichern()
{
 int res, tot;
 strcpy(found,"");
 strcat(found,_name);
 strcat(found,",");
 strcat(found,_date);
 strcat(found,",");
 strcat(found,_time);
 strcat(found,",");
 strcat(found,_lieferschein_nr);
 strcat(found,",");
 strcat(found,_Sachnr);
 strcat(found,",");
 strcat(found,_Fuellmenge);
 strcat(found,",");
 strcat(found,_Lieferanten_nr);
 strcat(found,",");
 strcat(found,_Packstueck_nr);
 strcat(found,",");
 strcat(found,_Packmittel_nr);
 res= AppendRecord(out,found);
 tot=strlen(found);
 
 //if more than 0 chars are written it is assumed
 // everything worked well
 if (res == 0)  
 {
  xyprtf(1,0,"ERR: write OUT data");
  xyprtf(2,0,out);
  xyprtf(3,0,found);
  xyprtf(7,0,"Press Any Key");
  while (_keyhit()==0){};
 }

}
 
Kleiner Nachtrag:

diese 2Programme laufen bevor die Daten gesendet werden:

_SetUpload1()
{
 FILE *c;
 strcpy(out,"e.txt");
 
}

_SetUpload2()
{
 FILE *c;
 strcpy(out,"a.txt");
}

Könnte hier das Problem liegen?
Denn es kommen alle daten doppelt heraus (allerdings nur die von _LagerEintrag ODER von _AusgangEintrag... nie alle Datensätze aus beiden Vorgängen)

grüsse,
engel
 
Ich glaube jetzt zu wissen, wo der Fehler liegt:

Wenn das Programm _LagerEintrag läuft, werden die Daten in "out" gespeichert.
Wenn _AusgangEintrag im Anschluss läuft, werden die Daten in "out" überschrieben, dadurch gehen die vorherigen Daten aus _LagerEintrag verloren.

Das sollte so aber nicht sein ;D

Und die doppelten Datensätze kommen so zustande, dass "out" beim upload in a.txt und e.txt kopiert werden.

Wie kann ich das verhindern?

Wie gesagt, die Daten von _LagerEintrag sollen in e.txt gespeichert werden, und die von _AusgangEintrag in a.txt.

verwirrte Grüsse,
engel ;D
 
Kennt sich in C keiner aus ???

Ich habe folgenden Lösungsansatz:

Unter _LagerEintrag deklariere ich eine Variable,
z.B. I=1 und unter _AusgangEintrag I=2 .

Bei strcopy unter _LagerEintrag ersetze ich out durch out1.

Bei Abspeichern müsste nun eine Abfrage rein, um festzustellen, ob die Daten in _AusgangEintrag oder _LagerEintrag gespeichert werden sollen:

(Vielleicht in dieser Art ??? )

If I=1 AppendRecord(out,found)
und
If I=2 AppendRecord(out1,found)

Bei _setUpload 2 müsste dann noch out durch out1 ersetzt werden.

Bin ich auf dem richtigen Weg?

Und wie sieht die genaue Syntax aus?

Hoffende Grüsse,
engel
 
richtiger Weg, ich würd es auch so machen, I=Schalter für die Variable.

Kleiner Nachtrag:
Du solltest unbedingt den Fall abfangen, daß das Programm Probleme bei dem Öffenen der Files hat, sonst ist der File-Pointer unbestimmt und Du riskierst einen MEM-Crash. Beispiel:

if ((c=fopen(out,"a"))==NULL)
{
   fputs("1234/n",c);
   fclose(c);
}
else {
printf("Fehler bem Öfnnen der Date /"a/"");
exit(-1);    /* bei Unterroutine return(-1); und auswerten!!! */
     }
 
Vielen Dank Martin!

Es ist geschafft!
Bin froh, dass das Ding fertig ist.

Wenn das Nächste kommt, versuch ich mich zu ducken ;D

grüsse,
engel
 

Who has viewed this thread (Total: 1) Details anzeigen

Neueste Themen

Beliebte Inhalte

Besonderer Dank

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
68.348
Beiträge
377.385
Mitglieder
6.777
Neuestes Mitglied
tedcars
Zurück
Oben