Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   FileSplitter: Probleme mit großen Dateien (https://www.delphipraxis.net/110825-filesplitter-probleme-mit-grossen-dateien.html)

MrKnogge 25. Mär 2008 21:47

Re: FileSplitter: Probleme mit großen Dateien
 
Abend Luckie,

ich habe gerade eine 7GB große Testdatei erstellt und erhalte folgendes Phänomen:

Ich wähle die Dateigröße 2000 MB und im Editfeld darunter erscheint "4", wenn ich aber 2500 MB einstelle möchte dein tool die Datei in 4294967293 Teile teilen. Und dies tritt ab 2048 MB auf.

Luckie 25. Mär 2008 21:49

Re: FileSplitter: Probleme mit großen Dateien
 
Das sieht ganz nach einem Integer Überlauf aus. Aber wo? Das kann ja eigentlich nur hier passieren:
Delphi-Quellcode:
function CalcCntParts(const Filename: string; Size: Int64): Cardinal;
var
  FileSize         : Int64; // >4GB
begin
  result := 0;
  if Size > 0 then
  begin
    FileSize := GetFileSize(PChar(Filename));
    if (FileSize > 0) and (FileSize div Size < High(Integer)) then
      result := (FileSize - 1) div Integer(Size) + 1;
  end;
end;

MrKnogge 25. Mär 2008 21:51

Re: FileSplitter: Probleme mit großen Dateien
 
Zitat:

Zitat von Luckie
Das sieht ganz nach einem Integer Überlauf aus. Aber wo? Das kann ja eigentlich nur hier passieren:
Delphi-Quellcode:
High(Integer))
// und
Integer(Size)

?

Luckie 25. Mär 2008 21:56

Re: FileSplitter: Probleme mit großen Dateien
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe es jetzt mal so geändert:
Delphi-Quellcode:
function CalcCntParts(const Filename: string; Size: Int64): Cardinal;
var
  FileSize         : Int64; // >4GB
begin
  result := 0;
  if Size > 0 then
  begin
    FileSize := GetFileSize(PChar(Filename));
    if (FileSize > 0) and (FileSize div Size < High(Int64)) then
      result := (FileSize - 1) div Int64(Size) + 1;
  end;
end;
Neue Exe im Anhang.

omata 25. Mär 2008 22:00

Re: FileSplitter: Probleme mit großen Dateien
 
Size ist doch schon int64, wieso noch ein Typecast :gruebel:

MrKnogge 25. Mär 2008 22:01

Re: FileSplitter: Probleme mit großen Dateien
 
Nun zeigt er bei 2500 MB schon mal 3 Teile an, teilt die Datei aber in lauter 1024 KB große Dateien :shock:

StInkeSchuh 25. Mär 2008 22:08

Re: FileSplitter: Probleme mit großen Dateien
 
Guten Abend ebenfalls,

Ich habe sehr viel freien Festplattenspeicher (wer braucht schon 500 GB um seine Files zu verwalten...) und hab ein ca 4,5 GB großes CD-Image mithilfe eines Editors (der aufgrund der Dateigröße selbst geschrieben wurde... :wink:) vervierfacht (copy & paste), sodass am ende eine 18 GB große Testdatei da war.

Die hab ich nun versucht zu splitten (mit der neuen Version).

Die Teile berechnet er nun richtig, aber am Ende Kommen nur 1 Mega-Files heraus. (Aua, das gibt eine Beule im Papierkorb :wink:)

Ich weiß, ihr findet mit 18 GB übertreib ich es ein wenig, war aber so

mfg St!nkeSchuh

EDIT: Hab deine neue Version nicht berücksichtigt

MrKnogge 25. Mär 2008 22:09

Re: FileSplitter: Probleme mit großen Dateien
 
@StInkeSchuh
Wie groß hast du die Teile festgelegt, Probleme treten wohl nur bei größer als 2047MB auf.

StInkeSchuh 25. Mär 2008 22:17

Re: FileSplitter: Probleme mit großen Dateien
 
@MrKnogge:

Die Teile waren einmal 9 GB, dann 4,5 und zum Schluss 2 GB. Hat aber gefunzt, bis ich im Exploder (= heisst bei mir Explorer) 18.000 einen Megabyte große Dateien gefunden habe.

Also die Berechnung ist korrekt, die Umsetzung leider noch nicht. :wink:

Luckie 26. Mär 2008 10:08

Re: FileSplitter: Probleme mit großen Dateien
 
Mist. Dann muss ich noch mal weitersuchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.
Seite 2 von 4     12 34      

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