000
01.06.2008, 12:40 Uhr
Unwissende
...die wirklich Unwissende 8-)
|
Hallo allerseits,
ich habe eine Klasse GObject erstellt, die hat die Membervariable m_Zeilencounter. Dann habe ich eine Funktion "Vergeich()". dort wird ein Objekt der Klasse GOutput erstellt. Auf dieses Objekt wird in der Funktion "Synchroauslesen()" zugegriffen und der m_zeilencounter brav hochgezählt. Wenn ich jetzt wieder in der Funktion "Vergleich()" bin (nachdem ich "Synchroauslesen()" fertig habe), ist mein datensatz1-Objekt mit den Werten gefüllt, die ich VOR Aufruf der Funktion "Synchroauslesen()" hatte.... WIESO? Ich habe die leise Ahnung, dass ich irgendwo THIS oder so einbauen muss, aber ich weiß nicht wo und wie.... Wäre dankbar um jeden Tipp....
C++: |
#ifndef GOutput_H #define GOutput_H
//#include "Defines.h" #include "fstream.h"
class GOutput {
protected:
char m_kapitel[1024]; char m_tabtitle[1024]; bool m_tabtitle_vorhanden; bool m_tab_fertig; int m_zeilencounter; public:
//GOutput(char* name); GOutput(); ~GOutput();
// Kopieren der Daten void copy(GOutput*); GOutput* copy();
void initialize();
void setKapitel(char* name); char* getKapitel(); void setTabtitle(char* name); char* getTabtitle();
void setTabelle_fertig(bool flag); bool getTabelle_fertig(); void setTabtitle_vorhanden_flag(bool flag); bool getTabtitle_vorhanden_flag();
void legeBereichFest(char* linebuffer); bool Tabelle_fertig(char* linebuffer);
void incZeilencounter(); int getZeilencounter(); void resetZeilencounter(); void setZeilencounter(int wert);
//int ermittleBlock(char* line, GeniaOutput daten); static char* className; virtual char* getClassName() const { return className; }
}; #endif // GOutput_H
|
Dann habe ich folgende Funktion Vergleich(), die wiederum Synchro_auslesen() aufruft:
C++: |
void Vergleich(FILE* FI1,FILE* FI2,FILE* FO3) { //Vardekl ...... //Objekterzeugung
GOutput datensatz1; GOutput datensatz2; //lese Zeile aus der ersten Datei ein cout<<endl; cout<<"Ergebnis der qualitativen Ueberpruefung: "<<endl;
while (fgets(linebuffer1, MAX_LAENGE_ZEILE, FI1) != NULL) { //Zeilencounter1++; datensatz1.incZeilencounter(); datensatz1.legeBereichFest(linebuffer1);
while (fgets(linebuffer2, MAX_LAENGE_ZEILE, FI2) != NULL) { //Zeilencounter2++; datensatz2.incZeilencounter(); datensatz2.legeBereichFest(linebuffer2);
if ((strcmp(datensatz1.getTabtitle(),datensatz2.getTabtitle())==0)) {
//HIER! Hier gehe ich mit meinen Objekten datensatz1 und datensatz2 rein //Z.B. Zeilencounter= 10
bool fertig = Synchro_auslesen(FI1,FI2, FO3, datensatz1,datensatz2); if (fertig) { rewind(FI2); datensatz2.initialize(); //HIER habe ich wieder die Werte der Membervariablen (z.B. ZEILENCOUNTER=10), vor dem Funktionsaufruf Synchro_auslesen() :( }
} }
} } cout<<"Num Vergleich beendet"<<endl; }
|
In der Funktion Vergleich wird wiederrum eine andere Funktion aufgerufen:
C++: |
bool Synchro_auslesen (FILE* FI1,FILE* FI2, FILE* FO3,GOutput datensatz1, GOutput datensatz2) { //Vardekl ....
int Zeilencounter1 = 0; int Zeilencounter2 = 0;
while (fgets(linebuffer1, MAX_LAENGE_ZEILE, FI1) != NULL) { datensatz1.incZeilencounter(); Zeilencounter1 = datensatz1.getZeilencounter(); datensatz2.incZeilencounter(); Zeilencounter2 = datensatz2.getZeilencounter();
//hier wird eine Berechnung gestartet
bool fertig = rechne(blablubb); //z.B. ZEILENCOUNTER= 100000 nach Ende der Berechnungen...
} return fertig = true; }
|
-- __________________________________ Unwissenheit ist vorläufig- Dummheit für immer Dieser Post wurde am 01.06.2008 um 12:48 Uhr von Unwissende editiert. |