Ich habe ein altes Projekt zu refactor. Dies ist Delphi5 Projekt in 32bit.lesen von 32bit record in 64bit projekt
Das neue Projekt muss 64-Bit-Architektur verwenden.
Eigentlich ist mein Punkt, altes Datenformat aus einer Datei zu lesen.
Die Datei enthält Datensätze mit vielen Feldern.
Im Moment habe ich Probleme mit dynamischen Array von ganzen Zahlen.
TCObject = record
Name:string[205];
roomindex:array of integer;
SizeOf (roomindex) = 4 in altem Projekt und SizeOf (roomindex) = 8 in meinem 64-Bit-Projekt.
So habe ich ein Problem Daten aus der Datei als
stream.Read(buf, SizeOf(TCObject))
Könnten Sie mir Art und Weise zeigen, zu lesen, wie Delphi zu sagen Größe zu verwenden = 4? :)
Vielen Dank.
UPDATE: wie David sagte, es ist besser, echten Code zur Verfügung zu stellen, der Daten liest.
procedure ParseCDatabase(pBuff: Pointer; pSize: Integer);
var
curr:^TCObject;
i, n: Integer;
curri:^Integer;
begin
curri:= pBuff;
n:=curri^;
Inc(curri);
curr:=pointer(curri);
for i:=0 to n-1 do
begin
if Curr^.Name<>'' then
begin
COAddObject();
curro:=pointer(curr);
curro.RoomIndex:=integer(nil);
Fcodb[af][ai]:=curr^;
SetLength(Fcodb[af][ai].RoomIndex,0);
Inc(ai);
end;
inc(curr);
end;
end;
I-Code zur Verfügung stellen wie ... So sehen wir hier, dass roomindex gelesen wird, sondern auf 0 So zurückgesetzt actualy wir es gar nicht brauchen. 8 jetzt
Problem ist gesamte Daten über Zeiger, weil Größe von Punkt zu dynamischem Array zu lesen, aber nicht 4.
Sie sagen uns nicht die ganze Geschichte hier. Ihr Code, den Sie beanspruchen, funktioniert in Delphi 5 nicht. Sie können Zeiger nicht direkt in einer Datei speichern, da sie nur eine Bedeutung im Ausführungsprozess haben. 'stream.Read (buf, SizeOf (TCObject))' hat in keiner Version von Delphi funktioniert. Sie müssen tiefer graben und herausfinden, was das Programm wirklich tut, wenn diese Aufzeichnung fortbesteht. Falscher Code, der keinen Bezug zum echten Code hat, ist nicht hilfreich. Sie haben diese Frage viel zu früh gestellt. Sie müssen wirklich knutschen und das Problem zuerst verstehen. Erwarten Sie hier keine Abkürzungen. –
Hmm, ich würde nicht von hier aus starten! Aber du hast keine Wahl, oder? Wahrscheinlich ist der Ansatz von Dsm gesund. –
@DavidHeffernanIch habe meine Frage mit echtem Code aus dem alten Projekt aktualisiert. – mad