Hi,
diesmal habe ich ein Problem mit Move.
Delphi-Quellcode:
procedure TPartition.DiscRead(d: TDisc; Offset: Cardinal;
Len: Integer; var Data);
var
...
CopyBuffer: array of Byte;
begin
...
// CopyBuffer bekommt vorher eine Länge, meistens 512
if Len > 0 then
begin
ReadSector(FHandle, (iwlba shl iwlba_shift) + lba, 1, CopyBuffer[0]); // wird ReadFile aufrufen
Move(CopyBuffer, Data, Len);
Showmessage(IntToStr(CopyBuffer[0]));
end;
end;
Aufruf:
Delphi-Quellcode:
function TMainForm.DiscRead(Offset: Int64; Count: Integer): TBytes;
begin
SetLength(Result, Count);
FActivePart.DiscRead(FActiveDisc, Offset, Count, Result[0]);
Showmessage(IntToStr(Result[0]));
end;
Das obere Showmessage ergibt 82, das ist auch richtig. Das untere im Aufruf jedoch 120...
Ich vermute es liegt irgendwie an dem Move, kommt es mit dem TBytes als Ergebnis-Typ vielleicht nicht klar?
Edit: Das alte Lied.... es muss Move(CopyBuffer
[0], Data, Len); heißen!!