Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FileSize bei geöffneten Dateien ? (https://www.delphipraxis.net/11615-filesize-bei-geoeffneten-dateien.html)

devnull 10. Nov 2003 16:53


FileSize bei geöffneten Dateien ?
 
Hi,

:?: wie bekomm ich die Dateigröße einer Datei heraus, in die gerade geschrieben wird ?? (in einem Thread )...


devnull

scp 10. Nov 2003 17:05

Re: FileSize bei geöffneten Dateien ?
 
Ist evtl. nicht die beste Lösung, aber eine wäre sie:

Delphi-Quellcode:
var
  AFile : file;
  AFileName : String;
  AFileSize : integer;

begin
  fileMode := fmOpenRead;
  AssignFile(AFile, AFileName);
  Reset(AFile, 1);
  AFileSize := filesize(AFile);
  CloseFile(AFile);
end;
[edit]
oder so:

Delphi-Quellcode:
var
  hFile : Integer;
  AFileName : String;
  AFileSize : integer;

begin
  hFile := FileOpen(AFileName, fmOpenRead);
  AFileSize := FileSeek(hFile, 0, 2);
  FileClose(hFile);
end;
[/edit]

devnull 10. Nov 2003 17:22

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

scp 10. Nov 2003 17:33

Re: FileSize bei geöffneten Dateien ?
 
Hast du das untere Beispiel verwendet? Normalerweise geht es nicht , aber durch das fmOpenRead gings bei mir.

devnull 10. Nov 2003 17:37

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

scp 10. Nov 2003 17:56

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:
fmOpenReadWrite or fmShareDenyWrite
bzw.
Delphi-Quellcode:
fmCreate or fmShareDenyWrite

himitsu 10. Nov 2003 18:12

Re: FileSize bei geöffneten Dateien ?
 
Zitat:

Zitat von dev
Ich lade ja die Datei in einem Thread runter

Wenn die Datei im selben Programm geschrieben (gedownloadet) wird, kannst du dir ja von diesem Thread die Dateigrösse in einer threadsicheren Variable übergeben lassen.

Luckie 10. Nov 2003 18:21

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: http://www.delphipraxis.net/internal...?p=93653#93653 meine Funktion AttacheFile.

mr2 10. Nov 2003 18:46

Re: FileSize bei geöffneten Dateien ?
 
Hallo,

versuchs mal so:

Delphi-Quellcode:
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;
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]


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