For i := 1 to 40 läuft ruckwärts (Delphi6 Trial)

Ich erprobe ein DELPHI 6 Enterprise TRIAL

habe dabei 2 komische Effekte,

  1. ab einem bestimmten Unterprogramm verschwindet der Inhalt verschiedener globaler Variablen, ohne dass codemäßig etwas mit diesen gemacht wurde.

  2. 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.

Hi,

Ich erprobe ein DELPHI 6 Enterprise TRIAL

habe dabei 2 komische Effekte,

  1. ab einem bestimmten Unterprogramm verschwindet der Inhalt
    verschiedener globaler Variablen, ohne dass codemäßig etwas
    mit diesen gemacht wurde.

Dann ist es sicher ein Bug im Compiler. Verwende doch mal eine andere Delphi-Version (mit Delphi 7 Enterprise Vollversion funzt es bestimmt).

  1. 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

Wenn Du beim Compilieren keine solche Hints und Warnings angezeigt bekommst, kannst Du einen Fehler in Deinem (Unter-)Programm mit Sicherheit ausschließen.

Vielen Dank E. B.

Keine Ursache.

MfG
Martin

  1. 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…).

Hallo Eric,
ich vermute, dass du dieses Effekt hast, wenn du das Programm in Einzelschritten abarbeitest und dir dabei die Werte anzeigen lässt.

Beispiel1:

n:=0;
for i:=0 to 4 do
n:=n+1;

Dabei ist es egal ob die Verialble i von 0 bis 4 oder von 5 bis 1 läuft. Der Code-Optimizer von Delphi erzeugt hier den Code, der am schnellsten ausführbar ist.

Beispiel2

for i:=0 to 4 do
n[i]:=i*2;

Hier läuft die Variable i von 0 bis 4.

Der Effekt tritt also nur dann auf, wenn i innerhalb der Schleife nicht verwendet wird.

Viele Grüße, Joachim

PS: Eventuell ist auch der erste Effekt auf den Code-Optimizer zurückzuführen. Im Zweifelsfall solltest du dir den Inhalt der Variablen mit ShowMessage(…) anzeigen lassen.

Hi,

Ich erprobe ein DELPHI 6 Enterprise TRIAL

habe dabei 2 komische Effekte,

  1. ab einem bestimmten Unterprogramm verschwindet der Inhalt
    verschiedener globaler Variablen, ohne dass codemäßig etwas
    mit diesen gemacht wurde.

Dann ist es sicher ein Bug im Compiler. Verwende doch mal
eine andere Delphi-Version (mit Delphi 7 Enterprise
Vollversion funzt es bestimmt).

  1. 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

Zu „Phänomen“ 2…

Solange der Compiler keinerlei Notwendigkeit dafür erkennt, daß er von 1 bis 40 zählen soll, lässt er das Compilat wirklich aus Performancegründen von 40 runter zur 1 zählen…

Wenn Du beim Compilieren keine solche Hints und Warnings
angezeigt bekommst, kannst Du einen Fehler in Deinem
(Unter-)Programm mit Sicherheit ausschließen.

Vielen Dank E. B.

Keine Ursache.

MfG
Martin

Hat vielleicht nicht viel Sinn…
Hi,

Wenn dein Compiler einen „Rückwärtsdrall“ hat, schreibe die Schleife doch auch andersrum:

for i := 40 downto 1 do
begin

end;

Das is zwar glaubich nicht das Gelbe vom Ei, aber naja :smile:

CS