Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - for-Schleifenvariable enthält ungültigen Wert


jjturbo - Di 16.03.10 09:05
Titel: for-Schleifenvariable enthält ungültigen Wert
Moin Forum,

ich habe hier ein seltsames Problem:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
//Globale Deklarationen
type TArrayFuerTabelle = Array[0..8of String;

var ArrayFuerTabelle :TArrayFuerTabelle;
    MyStr            :String;



function MyFunction(IrgendEinString:String):TArrayFuerTabelle;
var i :Integer;
begin

  for i := 0 to Length(Result)-1
   do Result[i] := '';

//Hier kommt dann noch weiterer Code...

end;





procedure blablabla;
begin
  ArrayFuerTabelle := MyFunction(MyStr);
end;



Ich habe das Problem, das obiger Code bei einem Kunden dazu führt, daß sich das Programm komplett wegkillt, ohne irgendeine Fehlermeldung.
Wenn ich mir das jetzt mal auf meinem Rechner im Debugger ansehe, enthält die for-Schleifenvariable i einen Wert von 9!
(Haltepunkt auf do Result[i] := '';)

Hat jemand eine Idee?


jaenicke - Di 16.03.10 10:31

user profile iconjjturbo hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich mir das jetzt mal auf meinem Rechner im Debugger ansehe, enthält die for-Schleifenvariable i einen Wert von 9!
Das ist normal, der Debugger bekommt von den Compileroptimierungen nix mit. Wenn du also die realen Werte sehen willst, musst du vor dem Kompilieren in den Projektoptionen unter Compiler die Optimierung ausschalten.

Du wirst aber, wenn du die Werte per ShowMessage ausgibst oder so, sehen, dass diese schon den korrekten Wert haben. Nur der Debugger zeigt diese falschen, sprich optimierten, Werte an.