komischer Effekt:
Wert einer globalen Variablen wird nur im Schritt-Betrieb übergeben.
Wenn ich Breakpoint an den Unterprogrammaufruf setze und mit F7 in das Unterprogramm hinein steppe bleibt Inhalt einer globalen Array-Variablen erhalten. Wenn ich Breakpoint in das Unterprogramm setze, zeigt Watch als Array-Inhalt (0,0,0,0…) an
Kennt jemand solchen Effekt, worann kann das liegen ?
da hat er recht, Werte einer globalen Variable übergibt man nicht… Ansonsten könnt ich mir so ein Fehlerverhalten eigentlich nur vorstellen, wenn du mit mehreren gleichzeitig laufenden Prozessen arbeitest?!
habe mich falsch ausgedrückt, habe natürlich nichts in Parameterliste übergeben; globale Variable hat in besagtem Unterprogramm einfach seinen Wert vergessen und ist null!
In vielen (allen) anderen Unterprogrammen hat die Variable ihren richtigen Wert.
Ich benutze eine DELPHI 6 Trial-Version, vielleicht hat dieses etwas zu sagen?
Danke
E. B.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
habe mich falsch ausgedrückt, habe natürlich nichts in Parameterliste übergeben; globale Variable hat in besagtem Unterprogramm einfach seinen Wert vergessen und ist null!
In vielen (allen) anderen Unterprogrammen hat die Variable ihren richtigen Wert.
Ich benutze eine DELPHI 6 Trial-Version, vielleicht hat dieses etwas zu sagen?
Danke
E. B.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
ich weiß leider auch keine Lösung, aber mir fällt auf, daß deine beiden Methoden zur Programmanalyse (steppen und breakpoint) nicht äquivalent sind.
Kann es sein, daß dein Unterprogramm noch von einer anderen Stelle aus aufgerufen wird? Dann würde dein Breakpoint an zwei verschiedenen Stellen im Programm zum tragen kommen und die Variable könnte zwei unterschiedliche Werte haben. Die einfachst Methode ist ein weiterer Breakpoint VOR (!) dem Einsprung in das Unterprogramm; dieser muß auf jeden Fall vor dem ursprünglichen Breakpoint erreicht werden (logischerweise).
Ansonsten… gibt es irgendwo im Programm eine Routine, die diese Variable noch verändert (z.B. in einem Unterprogramm). Gibt es irgendwo in einer Prozedur/Funktion ein Variable gleichen Namens - du könntest glauben, der globalen Variablen einen Wert zuzuweisen, während tatsächlich die lokale Variable geändert wird.
Ist der Array bei Programmstart korrekt initialisiert?
Markus
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Dieses Unterprogramm ist nur von einer Stelle aufgerufen worden.
Wie würdest Du ein Array nach der Deklarartion richtig initialisieren ?
ich arbeite mit einer Trial-Version von DELPHI 6 Enterprise.
Die Variablen, die in einem Unterprogramm ihren Inhalt verlieren sind globel. Beim Abschalten des berüchtigten Unterprogramms bleiben die Variableninhalte plötzlich wieder erhalten.
Weiterer komischer Effekt:
im berüchtigten Unterprogramm beginnt ein lokaler Integer „i“ in einer for i := 1 to 40 Schleife rückwärts zu laufen (40, 39, 38…).
Der Code ist wirklich sauber. keine Hints und Warnings beim Compilieren