Zitat von
endeffects:
Hallo,
ich hab leider ein Problem beim Einlesen einer Datei (über 2GB) in einen FileStream,
wenn ich mit Hilfe von FileStream.Size die Größe des Streams ermittel möchte erhalte
ich einen negativen Wert. Reicht es diesen Wert in einen positiven umzuwandeln
oder muss eine andere Lösung erhalten?
MfG
In welchem Kontext tritt Dein "Fehler" auf? Mit D7 funktioniert es auf jeden Fall:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream : TFileStream;
begin
Stream := TFileStream.Create('e:\tlinux4\base.img', fmOpenRead);
ShowMessage(Format('Filesize %s: %d', ['base.img', Stream.Size]));
Stream.Free;
end;
Ausgabe:
Code:
---------------------------
Project1
---------------------------
Filesize base.img: 4278190080
---------------------------
OK
---------------------------
Ansonsten hier eine Funktion zur Rückgabe der Größe einer beliebigen Datei:
Delphi-Quellcode:
function DiskFileSize(FileName :
string) : int64;
var
handle : THandle;
findData : TWin32FindData;
begin
Result := -1;
handle := FindFirstFile( PChar( FileName ), findData );
if (
handle <> INVALID_HANDLE_VALUE )
then
begin
Windows.FindClose(
handle );
if ( ( FindData.dwFileAttributes
AND FILE_ATTRIBUTE_DIRECTORY ) = 0 )
then
begin
Result := (findData.nFileSizeHigh * MAXDWORD)+ findData.nFileSizeLow;
end;
end;
end;