1Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
764
764
EMPFEHLEN
-
04.11.11 13:55 #1
Hallo zusammen,
ich hänge gerade an einem ganz kuriosen Problem :
Ich deklariere eine Variable "iAnz" und weise ihr dabei gleich den Wert einer anderen Integer-Variablen zu.
Diese Variable wird dann innerhalb einer while-Schleife benutzt.
Wie man im jedoch im Anhang sieht (Ausschnitt bei Debuggen) hat iAnz zu Beginn der Schleife stumpf den Wert "0" - und nicht "136", wie erwartet!
Ich habe schon das gesamte Projekt komplett neu erstellen lassen, aber das ändert nix ....
Hat jemand eine Idee, was das für eine Sch.... ist
Danke und Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.11.11 14:01 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.
Hast du denn mit Optimierungen kompiliert? Das kann den Debugger manchmal etwas durcheinander bringen (loop unrolling evtl?).
Wird denn dann trotzdem in die Schleife reingegangen? Bzw. funktioniert die Suche denn nicht?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
04.11.11 14:18 #3
Hi deepthroat,
Nein, Optimierung ist deaktiviert (/0d) ....
Nein, die Schleife wird auch nicht durchlaufen, wodurch einiges was danach passiert, durch die fehlerhafte Berechnung von "nRowCount" durcheinander kommt.
Seltsamerweise fiel das Ganze in der Releaseversion vor ca. 2 - 3 Std. auf, ohne dass ich in diesem Bereich des Code etwas geändert hatte ...
Ich habe inzwischen noch eine zweite Stelle entdeckt, an der ähnliches passiert :
Auch diese Schleife wird nicht durch laufen, obwohl mir der Debugger für "iZaehler" den Wert 136 anzeigt ....Code cpp:1 2 3
for( int k = 0; k < iZaehler; k++ ) { ...
Gruß
Klaus
edit: das Ganze wird noch lustiger ....
Ich habe jetzt mal die Schleife direkt mit iZaehler aufgerufen (warum auch extra zuweisen).
Obwohl der Wert lt. Debugger wiederum 136 ist (siehe Anhang), geht das Programm NICHT in die Schleife .....
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.11.11 15:01 #4
Junge, junge ... hab' den Fehler gefunden - das war ganz böse

Folgende Änderung an der ersten for-Schleife war entscheidend:
Die Deklaration der beiden Variablen "nColCounter" und "iZaehler" ist im Zuge der Umstellung von VS6 auf VS2010 VOR die Schleife gezogen.
Also muss es jetzt statt :
Code cpp:1 2 3 4
int nColCounter = 0; int iZaehler = 0; for( int i = 0, nColCounter = 0, iZaehler = 0; i < nTextLaenge; i ++) {
so lauten :
Code cpp:1 2 3 4
int nColCounter = 0; int iZaehler = 0; for( int i = 0; i < nTextLaenge; i ++) {
Irgendwie geht sonst wohl der Speicher über die Wupper
Na ja, dann kann ich ja wenigstens beruhigt ins WE gehen!
Nochmals Danke und tschüss
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.11.11 15:12 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
04.11.11 15:19 #6
Hi deepthroat,
Hmm, aber wieso sollte die Variable VOR der Schleife überlagert werden ?
Ich habe im Rahmen der Umstellung etliche Stellen wie diese umbauen müssen :
Code cpp:1 2 3 4 5
if( int i = 0; i < 10; i++ ) { // ... } i += 42; <-- hier meckerte der Compiler jedesmal, das 'i' nicht deklariert ist !!
Klingt für mich so, dass hier das 'i' nur einen Gültigkeitsbereich innerhalb der for-Schleife hat, oder ?
Warum beeinflusst also im Beispiel oben die neue Variable 'iZahler' aus dem Kopf der Schleife den zuvor deklarierte Variable ****
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.11.11 15:23 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.Ja, das ist auch völlig korrekt so. (das Gemecker)
Ja, allerdings => C++ Standard (klingelt da was?
)
Das sind nunmal die C++ Regeln.
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12
int foo = -33; { int foo = 5; // überlagert foo in äußerem Skopus { int foo = 36; // überlagert foo in äußerem Skopus } } cout << foo; // druckt -33 for (int foo = 3, i = 0; i < 5; ++) { cout << foo; // druckt 3 } cout << foo; // druckt immer noch -33
Geändert von deepthroat (04.11.11 um 15:31 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
04.11.11 15:38 #8
Hi,
ja ja, schon klar
aber ....
Eben - das war ja auch genau das, was ich erwartet habe, was aber bei meinem Fehler nicht so war !
Nach der for-Schleife zeigte mir der Debugger den erwarteten Wert von "iZaehler" an, nur warum lies er sich dann nicht auf "iAnz" zuweisen resp. im Kopf der while-Schleife verwenden?
Verstehe ich jetzt nicht so ganz ....
EDIT:
oder andersrum gefragt: wenn in dem Moment "iZaehler" noch '0' war, wieso zeigte mir der Debugger dann den scheinbar richtigen Wert an ? ? ?
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.11.11 15:58 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Dann zeig doch mal deinen Code.
Achtung, Blasphemie: ein Fehler im Debugger?
Evlt. hast du einfach die falsche Variable inspiziert? Wenn die den gleichen Namen haben sind die nur schwer auseinander zu halten. Adresse der Variablen wäre interessant gewesen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
07.11.11 08:55 #10Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
Ähnliche Themen
-
Seltsamer / Unbeschreiblicher Fehler
Von styler2go im Forum PHPAntworten: 4Letzter Beitrag: 06.07.10, 17:43 -
Performancefrage bei deklaration einer variable
Von Paspirgilis im Forum PHPAntworten: 7Letzter Beitrag: 23.07.09, 12:54 -
seltsamer Fehler bei Mac
Von Leugim im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 19.04.06, 22:08 -
Seltsamer Fehler ...
Von _voodoo im Forum PHPAntworten: 2Letzter Beitrag: 14.01.05, 12:51 -
Seltsamer Fehler
Von Moritz123 im Forum PHPAntworten: 3Letzter Beitrag: 21.07.03, 19:44





Zitieren
Login






