Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Teile einer datei auslesen und extrahieren (https://www.delphipraxis.net/108279-teile-einer-datei-auslesen-und-extrahieren.html)

Gehstock 10. Feb 2008 20:02


Teile einer datei auslesen und extrahieren
 
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
Buf : Array [0..524287] of Char; Buf ist zu klein
fs2 : TFilestream;
Temp :TBC;
SizeEel,SizeEef : Int64;
startEel, StartEef : Int64;
begin
Temp := GetSgoldPlatform(OpenDialog1.Filename);//hier wird Typ bestimmt
SizeEelite := 0;
case typ of   //Adresse     Offset
 65: begin
   SizeEel := 131072;      //20000
   SizeEef := 131072;      //20000
  startEel := 16646144;    //fe0000
  StartEef := 2228224;     //220000
 end;
  75: begin
   SizeEel := 131072;      //20000    ok
   SizeEef := 262144;      //40000
  startEel := 262144;      //40000    ok
  StartEef := 66715648;    //3fa0000
 end;
  85: begin
   SizeEel := 262144;      //20000    ok
   SizeEef := 524288;      //80000
  startEel := 262144;      //40000    ok
  StartEef := 66322432;    //3f40000
 end;
end;
if SaveDialog1.Execute then
 begin
  FS := TFileStream.Create(OpenDialog1.Filename,fmopenreadwrite);
  FS2  := TFileStream.Create(SaveDialog1.FileName,fmCreate);
   FS.ReadBuffer(Buf,StartEelite);
   fs2.CopyFrom(fs,SizeEelite);
   FS.Free;
   FS2.Free;
   memo1.Lines.add('gespeichert als '+ExtractFilename(SaveDialog1.FileName));
 end;
end;
wie ich schon erkannt hab ist buf zu klein beim vergrößern gibts allerdings ein Debugger Problem

marabu 10. Feb 2008 20:30

Re: Teile einer datei auslesen und extrahieren
 
Hallo,

du kannst nicht beliebig viel Speicher auf dem Stack anfordern. Wozu brauchst du denn überhaupt die Variable Buf, wenn du lediglich einen bestimmten Teil der Quelldatei in eine eigene Datei kopieren willst?

Delphi-Quellcode:
with SaveDialog1 do
  if Execute then
  begin
    FS := TFileStream.Create(OpenDialog1.Filename, fmopenreadwrite);
    FS2 := TFileStream.Create(SaveDialog1.FileName, fmCreate);
    FS.Position := StartEelite;
    fs2.CopyFrom(fs, SizeEelite);
    FS.Free;
    FS2.Free;
    memo1.Lines.add('gespeichert als ' + ExtractFilename(SaveDialog1.FileName));
  end;
end;
Grüße vom marabu

Gehstock 10. Feb 2008 23:35

Re: Teile einer datei auslesen und extrahieren
 
ja Danke


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