Autor Beitrag
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Di 16.03.10 09:05 
Moin Forum,

ich habe hier ein seltsames Problem:
ausblenden 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?

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.