Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Aus filestream einen teil herausschneiden (https://www.delphipraxis.net/57244-aus-filestream-einen-teil-herausschneiden.html)

Simon6785 17. Nov 2005 18:06


Aus filestream einen teil herausschneiden
 
Hallo, ich hab ein kleines Problem. ich habe einen Filestream in dem einebinäre datei ist. jetzt möchte ich ab einer gewissen stelle 116160 bytes aus dem filestream in einer cardinal variable haben. also setze ich mit stream.position(342342348); auf die adresse und mit stream.read(variable,116160) wollt ich lesen, aber die variable enthält 0 ?!?

marabu 17. Nov 2005 18:17

Re: Aus filestream einen teil herausschneiden
 
Eine cardinal variable hat 4 Byte - das dürfte eng werden für deine 116160 Bytes.

Delphi-Quellcode:
var
  fs: TFileStream;
  buf: array of byte;
begin
  fs := TFileStream.Create(fileName, fmOpenRead);
  fs.Position := ThePosition;
  SetLength(buf, TheLength);
  fs.Read(buf[0], TheLength);
  fs.Free;
end;
Grüße vom marabu

Simon6785 17. Nov 2005 20:39

Re: Aus filestream einen teil herausschneiden
 
hat cardinal nicht einen wertebereich von 0 bis 4294967295?!?!?

Nun ja, mit deiner lösung hab ich ein array, ich wollte aber eine integer oder am besten de cardinal!!

tigerman33 17. Nov 2005 20:43

Re: Aus filestream einen teil herausschneiden
 
Du verwechselst Wertebereich mit Typgröße. Mit den 4 Byte von cardinal kannst du genau den Wertebereich den du angegeben hast darstellen. Aber trotzdem passen halt nur 4 Byte rein. Vergleich es mal so:

Mit einer einstelligen Zahl kannst du insgesamt zehn Zustände angeben:
0, 1, ... , 9

Aber trotzdem wirst du immer nur eine Ziffer darin "speichern" können.

marabu 17. Nov 2005 20:46

Re: Aus filestream einen teil herausschneiden
 
Das mit dem Wertebereich siehst du richtig - den packt Cardinal in 32 bit, das sind 4 Byte. Du aber willst etwas über Hunderttausend Bytes einlesen. Wie gesagt, dass kann eng werden.

Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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