AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dateigröße ermitteln ohne Datei zu öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateigröße ermitteln ohne Datei zu öffnen

Ein Thema von robinWie · begonnen am 5. Mär 2006 · letzter Beitrag vom 9. Mai 2014
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#31

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 2. Mai 2006, 16:50
Zitat von danku:
kann man bei einer Tstringgrid die option "goediting" unterschiedliche auf 2spalten anwenden? die 1 true die andere false, oder gilt das komplett?
Was hat das denn mit der Frage:

Zitat von danku:
wie kann ich erreichen, das genau von der datei aus sgfiles.cells[0,1 + i] die größe in sgfiles.cells[1,1 + i] geschrieben wird?
zu tuen?

Vielleicht stehe ich ja auch auf dem Schlauch

Zeig am besten mal, wie du dein Stringgrid füllst und zwar komplett!

Edit: Naja solangsam verstehe ich: So ist es richtig.

Delphi-Quellcode:
for i := 0 to OpenDialog1.Files.Count - 1 do
begin
  sgfiles.cells[0,1 + i]:= OpenDialog1.Files[i];
  sgfiles.cells[1,1+i] := floattostr(filesize(opendialog1.Files.Strings[i]));
end;
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#32

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 2. Mai 2006, 19:15


Delphi-Quellcode:
I-------------I-------------I
I Spalte 1 I Spalte 2 I
I---------------------------I
I I I
I ... I ... I
I I I

Die Daten in Spalte1 soll man editieren können, in der 2 aber nicht.
Geht das üeberhaupt?

with tstringgrid do
.... gehts z.b. schon mal nicht
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#33

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 15. Aug 2007, 11:23
Hi! Meine erste Frage: Ich würde gerne den Code aus Beitrag #16 benutzen. Wenn ich ihn allerdings folgendermaßen versuche aufzurufen

Delphi-Quellcode:
var
vTmp1:pchar;
vTmp2:int64;

begin
vTmp1:=pchar('c:test.bmp');
vTmp2:=getfilesize(vTmp1);
bekomme ich die letzte Zeile markiert mit "Incompatible Types: Cardinal and PChar". Wo liegt der Fehler?

Zweitens: Wo liegt der Vorteil von Hawkeyes Methode gegenüber diesem Prinzip:

Delphi-Quellcode:
var
f: file of byte;
v: integer;

begin
assignfile(f, 'c:\test'); reset(f);
v:=filesize(f);
closefile(f);
Danke schonmal!
Gruß! Robert
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#34

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 15. Aug 2007, 17:53
Herzlich willkommen in der Delphi-PRAXiS, Robert!

Den von dir beschriebenen Fehler kann ich nicht nachvollziehen. Ist das wirklich der Quelltext, der den Fehler auslöst?

Zitat von Rob09:
Wo liegt der Vorteil von Hawkeyes Methode[...]
Du schmückst mich mit fremden Federn, die Routine stammt von Luckie (Beitrag #7). Wir haben sie nur im Laufe des Threads ein wenig weiterentwickelt.

Deine Frage wird zum Teil schon durch den Thread-Titel beantwortet: der Code liefert die Größe einer Datei, ohne diese Datei wirklich zu öffnen. Ein weiterer Vorteil ist, daß die Routine auch bei Dateien ab 2 GByte Länge den richtigen Wert für die Größe ermittelt. Die Routinen der Delphi-RTL funktionieren (zumindest bis Version 7) in diesem Fall nicht.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#35

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 15. Aug 2007, 19:10
Hi! Danke, bin sehr herzlich aufgenommen worden

Hmm... ja, den Fehler bekomme ich. Naja, hab das Prog jetzt halt mit FileSize() geschrieben. Ich nehme an, das (was im Thread-Titel steckt) bedeutet dann im Endeffekt, dass die Methode schneller ist als FileSize(), richtig?

LG!
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#36

AW: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 9. Mai 2014, 15:00
Eigentlich kann man doch auch
Code:
function GetFileSize(szFile: String): Int64;
statt
Code:
function GetFileSize(szFile: PChar): Int64;
schreiben, dann muss man beim Aufruf der Funktion nich auch noch zu PChar umwandeln. Ist ja doppelt gemoppelt

Eingabe String
Delphi-Quellcode:
function GetFileSize(szFile: String): Int64;
var
  fFile: THandle;
  wfd: TWIN32FINDDATA;
begin
  Result := -1;
  fFile := FindFirstfile(PChar(szFile), wfd);
  if fFile = INVALID_HANDLE_VALUE then Exit;
  if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
  Windows.FindClose(fFile);
end;
Und wenn man PChar vorliegen hat, dann kann man sich die Konvertierung innerhalb der Funktion sparen

Eingabe PChar
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var
  fFile: THandle;
  wfd: TWIN32FINDDATA;
begin
  Result := -1;
  fFile := FindFirstfile(szFile, wfd);
  if fFile = INVALID_HANDLE_VALUE then Exit;
  if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
  Windows.FindClose(fFile);
end;
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#37

AW: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 9. Mai 2014, 18:32
Kleine Änderung für XE2:

Delphi-Quellcode:
function GetFileSize(szFile: String): Int64;
var
  fFile: THandle;
  wfd: TWIN32FINDDATA;
begin
  Result := -1;
  fFile := FindFirstfile(PChar(szFile), wfd);
  if fFile = INVALID_HANDLE_VALUE then Exit;
  if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
  WinApi.Windows.FindClose(fFile); // <---------------------
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 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