Hallo,
ich habe mir gerade die Trial von Delphi 2009 installiert.
Mein Delphiprojekt (BDS2006) funktionierte bisher Fehlerfrei.
Unter Delphi 2009 gibt es aber Probleme:
Problem1 mit Datei I/O:
Delphi-Quellcode:
function TTest.daten_aus_datei_lesen(_dateiname: string): string;
var
_daten: string;
F: file of char; // wenn ich F zum Typ TextFile mache, dann geht es
c: char;
begin
try
AssignFile(F, _dateiname);
Reset(F);
_daten := '';
while not eof(f) do begin
Read(F, c); // hier werden ZWEI Bytes gelesen - obwohl F doch vom Typ char ist...??? Verstehe ich nicht!
_daten := _daten + c;
end;
CloseFile(F);
except
_daten := '';
end;
Result := _daten;
end;
Da ich hier bereits einen Workaround hätte handelt es sich eher um eine Verständnisfrage. Dass es hier nicht sonderlich elegant ist, jedes einzelne Zeichen zu lesen, ist mir klar. Aber ich verwende dieses Read-Konstrukt auch für andere binäre Daten, die dann sofort Byteweise verarbeitet werden...
Problem2 (ohne Lösung):
Dieser Code ist nicht von mir persönlich geschrieben - deshalb tue ich mich mit dem Debugging auch erstmal schwer. (Ich habe bisher auch noch keine absolute-Anweisungen verwendet... Wobei S ja eigentlich einfach auf Source "zeigen" sollte...)
Delphi-Quellcode:
procedure RCxDecode(var RCx: TRCxContext; const Source; var Dest; Count: Integer);
var
S: TByteArray absolute Source; // ich denke, dass das Problem mit dieser absolute Anweisung zu tun hat
O: TByteArray absolute Dest;
C: Integer;
T,K: Byte;
begin
with RCx do
for C := 0 to Count -1 do
begin
Inc(I);
T := D[I];
Inc(J, T);
D[I] := D[J] xor F;
D[J] := T - F;
Inc(T, D[I]);
K := S[C] xor D[T]; // wenn ich hier einen Breakpoint setze, dann kann S nicht angezeigt werden - weil wegoptimiert
O[C] := K;
F := F xor K;
end;
end;
Wie gesagt, unter BDS2006 läuft alles bestens - unter Delphi 2009 nicht. Hat jemand eine Idee?
Ausser BDS2006 weiter zu verwenden...
Gruß,
Poolspieler