Hallo,
ich möchte ReadFile gerne ein dynamisches Array übergeben, allerdings schlägt es dann immer fehl.
Delphi-Quellcode:
function TPartition.ReadSector(
Handle: THandle; lba, count: DWORD;
var Buf): Integer;
var
large: LARGE_INTEGER;
read: DWORD;
offset: Int64;
begin
offset := lba;
offset := offset * 512;
large.QuadPart := offset;
if not SetFilePointerEx(
Handle, large,
nil, FILE_BEGIN)
then
begin
// Result := 1;
raise Exception.Create('
SetFilePointerEx fehlgeschlagen!');
end;
read := 0;
if not ReadFile(
Handle, Buf, count * 512,
read,
nil)
then
begin
// Result := 1;
raise Exception.Create('
Sektor konnte nicht gelesen werden!');
end;
Result := 0;
end;
procedure TPartition.TestRead;
var
bigBuf:
array of Byte;
i, disc_info_sz_lba: Integer;
begin
i := 1;
disc_info_sz_lba := 19;
SetLength(bigBuf, 10000);
Showmessage(IntToStr(SizeOf(bigBuf)));
ReadSector(FHandle, 1 + i * disc_info_sz_lba, disc_info_sz_lba, bigBuf);
end;
Bei dem ShowMessage kommt 4 raus (ich glaube weil dynamische Arrays Pointer sind), wenn es aber ein statisches Array ist (damit funktioniert das Lesen dann auch), zeigt es die Länge + 1 oder 2 an. Somit kommt bei dieser dynamischen Variante "Sektor konnte nicht gelesen werden!".
Kann ich es irgendwie hinbekommen, die Größe dieses dynamischen Arrays zu vergrößern?