übergibt Wert globaler Variabl.nur im Step-Betrieb

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 ?

Danke und Neujahrsgruß

E. B.

komischer Effekt:

Wert einer globalen Variablen wird nur im Schritt-Betrieb
übergeben.

Warum übergibst Du den Wert einer globalen Variablen?

Mit besten Wünschen für 2003
Martin

Hi,

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?!

Mfg - JENS

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]

Hallo Eric,

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]

komischer Effekt:

Danke füe Deine Hilfe,

ein paar Antworten auf Deine Rückfragen:

  1. Dieses Unterprogramm ist nur von einer Stelle aufgerufen worden.
  2. Wie würdest Du ein Array nach der Deklarartion richtig initialisieren ?
  3. ich arbeite mit einer Trial-Version von DELPHI 6 Enterprise.
  4. Die Variablen, die in einem Unterprogramm ihren Inhalt verlieren sind globel. Beim Abschalten des berüchtigten Unterprogramms bleiben die Variableninhalte plötzlich wieder erhalten.
  5. 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

Vielen Dank E. B.