AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Files grösser 2 bzw. 4Gig mit FindFirst

Ein Thema von DelTurbo · begonnen am 3. Jul 2011 · letzter Beitrag vom 4. Jul 2011
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#1

Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 15:16
Delphi-Version: 7
Hi,
ich wollte mal eben schnell eine platte einlesen. Naja, "mal so eben" ist ja meistens eh nicht. Und so ist es auch.

TSearchRec Hat für die Size nur ein Integer. Wie kann man mit FindFirst, FindNext directorys einlesen OHNE den fehler mit der Bereichsprüfung zu bekommen, und die richtige Grösse zurück zu bekommen? Gibt es was neues? In google, bzw. Boardsuche habe ich leider nix gefunden.

Danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 15:20
FindFirstFileEx liefert die Size als nFileSizeLow und nFileSizeHigh. Schätze, das ist, was Du brauchst.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 15:40
Danke dir. Das wird es sein. Passt zwar überhauptnicht in mein "geschriebsel", aber da muss man wohl durch. Ich dachte es gibt so eine art erweiterten TSearchRec und ich kann alles behalten.

Nochmal... thx
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#4

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 16:03
Ich nochmal... Ich werde dir das "klauen" http://www.delphipraxis.net/1109721-post9.html

Keine angst, ist nur für mich privat...

[mal einen bettelversuch starten]
Das "komplette" kannst du nicht posten, oder? Also quasi als Procedure wo man mit Pfad reinspringt und er ein TStrings füllt. z.b. so

GetAllFiles('C:\','*.doc',Filelist);
[/mal einen bettelversuch starten]
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 16:21
Unter Windows gibt es doch im Record TSearchRec das Record FindData vom Typ TWin32FindDataA bzw. TWin32FindDataW Dort gibt es die Cardinals nFileSizeHigh und nFileSizeLow. D.h. statt TSearchRec.Size wertet man halt einfach TSearchRec.FindData.nFileSizeHigh und TSearchRec.FindData.nFileSizeLow aus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#6

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 16:38
Seit D2006? sollte TSearchRec für Size auf Int64 stehen.

Aber wie schon erwähnt, kann man sich auch über SearchRec.FindData dir Daten der intern genutzten WinAPI MSDN-Library durchsuchenFindFirstFile ansehen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 17:23
Stimmt eigentlich! Hier in D2010 / SysUtils.pas steht:
Delphi-Quellcode:
  TSearchRec = record
    Time: Integer;
    Size: Int64;
    Attr: Integer;
    Name: TFileName;
    ExcludeAttr: Integer;
{$IFDEF MSWINDOWS}
    FindHandle: THandle platform;
    FindData: TWin32FindData platform;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
    Mode: mode_t platform;
    FindHandle: Pointer platform;
    PathOnly: String platform;
    Pattern: String platform;
{$ENDIF POSIX}
  end;
und in windows.pas geht's weiter mit

Delphi-Quellcode:
  _WIN32_FIND_DATAW = record
    dwFileAttributes: DWORD;
    ftCreationTime: TFileTime;
    ftLastAccessTime: TFileTime;
    ftLastWriteTime: TFileTime;
    nFileSizeHigh: DWORD;
    nFileSizeLow: DWORD;
    dwReserved0: DWORD;
    dwReserved1: DWORD;
    cFileName: array[0..MAX_PATH - 1] of WideChar;
    cAlternateFileName: array[0..13] of WideChar;
  end;
Damit sollte alles funktionieren.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#8

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 3. Jul 2011, 18:27
Und cAlternateFileName ist der 8.3-Dateiname, falls den unbedingt wer braucht.

Blos ftLastAccessTime funktioniert seit Win7 nicht immer, da die im NTFS dieses teilweise abgeschaltet haben um einige Schreibzyklen einzusparen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#9

AW: Files grösser 2 bzw. 4Gig mit FindFirst

  Alt 4. Jul 2011, 10:35
Danke euch für eure hilfe.

Ich habe mir im moment (gestern abend am laptop) erstmal so geholfen das der "Fehler" ignoriert wird. Da ich im moment nur nach mp3´s suche ist es erstmal wurscht. Sollte ich ein sooooooo grosses mp3 finden, werde ich es posten

Thx @all
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:48 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