AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array & ReadFile

Ein Thema von WorstNightmare · begonnen am 2. Mai 2009 · letzter Beitrag vom 2. Mai 2009
Antwort Antwort
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Dynamisches Array & ReadFile

  Alt 2. Mai 2009, 10:14
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Dynamisches Array & ReadFile

  Alt 2. Mai 2009, 10:17
Code:
ReadSector(FHandle, 1 + i * disc_info_sz_lba, disc_info_sz_lba, bigBuf[b][0][/b]);
ein dynamisches Array ist intern ein Pointer auf seine Daten ... und diesen Zeiger mußt du erst irgendwie dereferenzieren
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#3

Re: Dynamisches Array & ReadFile

  Alt 2. Mai 2009, 10:18
Ohh, das ging ja schnell.
Vielen Dank, so geht es!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz