![]() |
Dynamisches Array & ReadFile
Hallo,
ich möchte ReadFile gerne ein dynamisches Array übergeben, allerdings schlägt es dann immer fehl.
Delphi-Quellcode:
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!".
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; Kann ich es irgendwie hinbekommen, die Größe dieses dynamischen Arrays zu vergrößern? |
Re: Dynamisches Array & ReadFile
Code:
ein dynamisches Array ist intern ein Pointer auf seine Daten ... und diesen Zeiger mußt du erst irgendwie dereferenzieren :angel:
ReadSector(FHandle, 1 + i * disc_info_sz_lba, disc_info_sz_lba, bigBuf[b][0][/b]);
|
Re: Dynamisches Array & ReadFile
Ohh, das ging ja schnell.
Vielen Dank, so geht es! :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz