Variable trotz neuer Definiton falsch.
-
Hallo zusammen,
ich bin mittlerweile überfragt und versuche das Problem mal zu schildern.
Da das Programm etwas komplex ist, breche ich es mal herunter.Ich definiere eine Variable:
int DIAM;danach vergebe ich einen Wert, falls eine Textsuche in einer Datei erfolgt hat. Diese ist in einer Funktion:
int CKUT::DurchlaufDatei( char *File, char *PreFile ) {.... if( strstr(Zeile,"DM=250") ){ DIAM = 250; } .... }In einer anderen Funktion rechne ich mit dem Wert:
int CKUT::VerarbeiteDatei() { Weg[X] = DIAM; }Das funktioniert bis dahin soweit ganz gut.
Wenn ich jetzt allerdings den zweiten Block erweitern möchte, da mehrere DM=... im Text vorkommen, beginnt das Problem:
int CKUT::DurchlaufDatei( char *File, char *PreFile ) {.... if( strstr(Zeile,"DM=250") ){ DIAM = 250; } if( strstr(Zeile,"DM=160") ){ DIAM = 160; } .... }Trotz erkennen des neuen Wertes, rechnet er weiter mit 250 anstatt 160.
Alles nur Beispielhaft.Input
DM=250 DM=160Output
Weg=250 Weg=250Eine Textausgabe der DurchlaufDatei zeigt das er den Wert richtig ausgibt.
Warum rechnet er aber in der anderen Funktion mit dem alten Wert ?
Veilleicht kann mir jemand helfen !
Danke schonmal..
-
1. Bis auf eine Kleinigkeit könnte das C sein. Nutze die C++-Standardbibliothek! Ganz besonders für Zeichenketten ist std::string den C-Strings haushoch überlegen.
2. Globale Variablen sind böse. Du merkst gerade warum. Da passieren leicht Fehler, die man denn nur ungeheuer schwer nachvollziehen kann.
3. Daraus folgt, dass dein Beispiel vollkommen unzureichend ist, damit wir dir helfen können. Lies dazu mal den dritten Link in meiner Signatur durch.
4. Wahrscheinlich würde sich das Problem von alleine lösen, wenn du die Probleme 1 und 2 behebst. Oder das Problem wird zumindest sehr einfacher zu finden werden.