![]() |
FileSize bei geöffneten Dateien ?
Hi,
:?: wie bekomm ich die Dateigröße einer Datei heraus, in die gerade geschrieben wird ?? (in einem Thread )... devnull |
Re: FileSize bei geöffneten Dateien ?
Ist evtl. nicht die beste Lösung, aber eine wäre sie:
Delphi-Quellcode:
[edit]
var
AFile : file; AFileName : String; AFileSize : integer; begin fileMode := fmOpenRead; AssignFile(AFile, AFileName); Reset(AFile, 1); AFileSize := filesize(AFile); CloseFile(AFile); end; oder so:
Delphi-Quellcode:
[/edit]
var
hFile : Integer; AFileName : String; AFileSize : integer; begin hFile := FileOpen(AFileName, fmOpenRead); AFileSize := FileSeek(hFile, 0, 2); FileClose(hFile); end; |
Re: FileSize bei geöffneten Dateien ?
Das geht nicht. Ich lade eine Datei aus dem Internet herunter, habe einen Timer auf 1000 ms gesetzt, dieser bringt aber nur größe = -1 raus ?!
devnull |
Re: FileSize bei geöffneten Dateien ?
Hast du das untere Beispiel verwendet? Normalerweise geht es nicht , aber durch das fmOpenRead gings bei mir.
|
Re: FileSize bei geöffneten Dateien ?
ja ich hab das untere genommen ! Ich lade ja die Datei in einem Thread runter. Aber es muss doch irgendwas geben, dass obwohl die Datei gerade beschrieben wird (sie wird also größer, auch im explorer) deren dateigröße auslesen kann !
devnull |
Re: FileSize bei geöffneten Dateien ?
So war mein Beispiel auch gedacht, habe mit diesem Beispiel den Downloadverlauf einer fremden Anwendung überwacht, das hat geklappt.
Mit welcher Kompo oder welcher Funktion lädst du die Datei den in dem anderen Thread runter? Kann man dort Einfluss nehmen, auf den Zugriffsmodus? Wenn ja, sollte er so aussehen:
Delphi-Quellcode:
bzw.
fmOpenReadWrite or fmShareDenyWrite
Delphi-Quellcode:
fmCreate or fmShareDenyWrite
|
Re: FileSize bei geöffneten Dateien ?
Zitat:
|
Re: FileSize bei geöffneten Dateien ?
Oder lass dir bei jeder relavanten Größenänderung eine selbst definierte Nachricht an dein eigenes Fenster schicken von dem Thread. Beispiel in diesem Thread:
![]() |
Re: FileSize bei geöffneten Dateien ?
Hallo,
versuchs mal so:
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
function GetFileSize(const FileName: string): Int64;
var FileData: TWin32FindData; FileHandle: THandle; aFileName: string; begin if (AnsiCompareText(FileName, ExtractFileName(FileName)) = 0) then aFileName := ExpandFileName(FileName) else aFileName := FileName; FileHandle := FindFirstFile(PChar(aFileName), FileData); if (FileHandle <> INVALID_HANDLE_VALUE) then begin Result := Int64(FileData.nFileSizeLow) + Int64(FileData.nFileSizeHigh) shl (SizeOf(DWORD) * 8); FindClose(FileHandle); end else Result := -1; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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