Exemplarisch ist mal folgender Code gegeben - das Problem tritt jedoch grundsätzlich mit vielen Programmen auf, die mit Pointern/Windows-API und dergleichen arbeiten:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var istr: string; isize, i: dword; begin setlength(istr, 4000); isize := QueryDosDevice(nil, @istr[1], 4000); for i := 1 to isize do if istr[i] = #0 then istr[i] := #10; memo1.lines.CommaText := istr; end; |
Delphi 2009 spuckt mir bei der Ausgabe nur ein "Global" in das TMemo aus, während Turbo Delphi 2006 - auf dem selben Rechner natürlich - mir in drei Zeilen "rm1", "Form1" und "Left" ausgibt. Mal ganz abgesehen davon, dass beide Ausgaben nicht so richtig dass sind, was sie seien sollten: Delphi 2009 macht bei sowas immer die meisten Fehler. Hab leider grad kein Beispiel zur Hand wo man ganz eindeutig sehen kann, dass D2006 richtige und D2009 falsche Ergebnisse liefert.
Woran liegt das? Viele meiner API-Intensiven Anwendungen kann ich nicht in Delphi 2009 compilieren, weil die Anwendung danach nicht mehr läuft und die seltsamsten Fehler auftreten. Habe auch schon die Compiler-Einstellungen der beiden geprüft und angeglichen, sie sind jetzt identisch - dennoch produzieren sie unterschiedliche Ergebnisse.
Ich bin ja der Meinung, dass es an Delphi 2009 liegen muss, da alle anderen Versionen von Delphi die ich hatte sich niemals so verhalten haben. Auch eine Neuinstallation vom 2009er Delphi lies mich keine Veränderung feststellen.
Ich hab jetzt sozusagen "Angst", dass die irgendwas in der IDE/dem Compiler absichtlich verändert haben was dieses Verhalten hervorruft und was dann auch in den kommenden Delphi-Versionen so bleibt.
Möchte eigentlich nur so schnell wie möglich weg von 2 Delphi-Versionen auf einem System, da die sich immer so ein wenig beißen, und wollte wegen der Komponenten-Vielfalt, den Spracherweiterungen und der Erweiterbarkeit eigentlich mit D2009 arbeiten - aber so wird das nichts.
Also: hat jemand einen Tipp woran es liegen könnte? An der Parallel-Installation von D2006 und D2009 liegt es nicht, da ich das 2006er erst testweise installiert hatte, als das 2009er eben diese seltsamen Dinge machte.
Moderiert von
matze: Code- durch Delphi-Tags ersetzt