Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 69, Antworten: 6
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30.01.2010, 10:38   #1 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard Dateigröße ermitteln

Kleiner Tipp:
Ich stand gerade vor dem Problem, dass ich möglichst von jeder Datei die Dateigröße benötigte - welche API ist dafür aber die beste? Es gibt da ja einige, die man verwenden könnte.
Unter anderem für GetFileSizeEx benötigt man ein Handle auf die Datei, das mittels CreateFile ermittelt werden muss.
In MSDN ist über dieses Handle folgendes zu lesen:
Zitat:
A handle to the file. The handle must have been created with either the GENERIC_READ or GENERIC_WRITE access right or equivalent.
Im Prinzip steht dort, das mindesten komplette Leserechte auf die Datei nötig sind, um die Dateigröße auszulesen - als zweiter Parameter von CreateFile müsste also zumindestens $80000000 angegeben werden und bei allen Dateien ohne Leserechte für den User, der das Datum ermitteln will, kann man es nicht auslesen.
MSDN schreibt hier aber nicht ganz die Wahrheit. CreateFile kann, wenn das Handle zum Ermitteln der Dateigröße verwendet werden soll, ohne weiteres als zweiten Parameter den Wert $0 erhalten - GetFileSizeEx schlägt dann nicht fehl.
Aber kann man dann die Größe aller Dateien ermitteln? Nein! Bei sich gerade in Benutzung befindlichen Dateien (zum Beispiel pagefile.sys) kann es vorkommen, dass CreateFile fehl schlägt und GetLastError den Code 32 (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.) zurückgibt.
Zur Ermittlung der Dateigröße bietet sich FindFirstFile an, denn diese API öffnet auch Dateien, die sich in Bearbeitung befinden.

PS: In MSDN sind sehr oft die nötigen Rechte für ein Handle viel zu hoch angegeben. Ein eigener Test zahlt sich oft aus.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT

Geändert von AHT (30.01.2010 um 11:01 Uhr)
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 30.01.2010, 12:40   #2 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

Ja Findfirstfile ist das zuverläsisgste um Dateigrößen zu ermitteln, Gibt ja auch jede Menge andere Infos zurück. Ich glaube Profan verwendet diese API ab Version 9 auch um Größe und sonstige Attribute zu ermitteln.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 30.01.2010, 14:17   #3 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

Dann ist also der Code, mit dem ich als API-Nichtkenner die Dateigröße ermittle, für den A...

Zitat:
DECLARE lw$,datei$,groesse&
'--------------------------------------------------------------
CLS
lw$="C:\"
CHDIR lw$
datei$=FindFirst$("autoexec.bat")
IF FILEEXISTS(datei$)
groesse&=FILESIZE(datei$)
print lw$+datei$+" vorhanden - Dateigrösse: "+STR$(groesse&)+" Bytes"
ELSE
print "Datei nicht gefunden !"
ENDIF
waitinput
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 30.01.2010, 14:21   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Teste das doch aus, Horst. Lad einen Text in einen Editor und versuche mit deinem Programm die Dateigrösse der Textdatei zu ermitteln.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 30.01.2010, 14:23   #5 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Zitat:
Zitat von horsthorn Beitrag anzeigen
Dann ist also der Code, mit dem ich als API-Nichtkenner die Dateigröße ermittle, für den A...
Nein. Auf älteren Profanversionen macht FileSize einen dicken Fehler und schließt ein Handle nicht - ich brauchte deshalb gleichwertigen Ersatz (einige hunderttausend Handles die nicht geschlossen werden, war mir doch zuviel).
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 30.01.2010, 14:26   #6 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

@Frank
Hab ich gemacht - Habe die hier gezeigte Code-Datei geladen und dann als FILEEXISTS(datei$) gesucht. Die Größe wurde einwandfrei angezeigt

PS: Meine Frage war wie meist, rein rhetorisch:
Es muss nicht immer API sein.
XProfan kann das auch !
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 30.01.2010, 14:30   #7 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

XProfan ist im Grunde ja auch eine Form von API.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 30.01.2010, 14:33   #8 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Wie gesagt, es geht nicht um die Funktion sondern um das Speicherleck (dürfte in der Freewareversion 8 auch drin sein).
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 30.01.2010, 16:06   #9 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

Zitat:
Zitat von AHT Beitrag anzeigen
Wie gesagt, es geht nicht um die Funktion sondern um das Speicherleck (dürfte in der Freewareversion 8 auch drin sein).
Bitte um eine Erklärung für "Speicherleck" in diesem Fall
Wenn ich den Code ändere:
Zitat:
DECLARE lw$,datei$,groesse&
'--------------------------------------------------------------
CLS
lw$="C:\"
CHDIR lw$
datei$=FindFirst$("autoexec.bat")
IF FILEEXISTS(datei$)
ASSIGN #1,datei$ 'Datei öffnen
groesse&=FILESIZE(datei$)
print lw$+datei$+" vorhanden - Dateigrösse: "+STR$(groesse&)+" Bytes"
CLOSE #1 'Datei schließen
ELSE
print "Datei nicht gefunden !"
ENDIF
waitinput
ist doch alles zu oder nicht
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 30.01.2010, 16:37   #10 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Hallo Horst...

Siehe hier - reicht dir das?
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 30.01.2010, 16:46   #11 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

@Horst:

Profan besteht zum größten Teil intern aus API Aufrufen. Nur sind die Aufrufe so aufbereitet, dass sie leichter zu verwenden sind und manchmal wird dabei halt etwas übersehen. Prinzipiell könnte man die Profan Befehle und Funktionen alle über API nachbilden.
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 30.01.2010, 17:15   #12 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Hallo Horst...

Du musst gar nichts ändern und kannst bei FileSize bleiben (geht auch schneller als über API). Frank hat schon bestätigt, dass der Fehler unter XProfan11 gefixt ist.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 30.01.2010, 19:03   #13 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Hallo,

dass Spreicherrlerck war zum Einem so winzig (nur wenige Bytes pro FindFirst im Programm), dass es in 99,99% aller Programme gar nicht auffiel und zum Anderen auch nur sehr kurzzeitig (ich weiß nicht mal genau mehr, welche Version) im Programm, als ich intern von den Delphi-Dateifunktionen auf die entsprechenden API-Funktionen umgestiegen bin (sind etwas mächtiger und flexibler) und übersehen hatte, dass die API FindFirst ein Handle erzeugt, das wieder geschlossen werden muss.

Gruß
Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c
AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c


http://www.xprofan.de
RGH ist offline   Mit Zitat antworten
Alt 30.01.2010, 19:10   #14 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Na ja - bei mir sind am Schluss eines Dateilistings so in etwa 50000 Handles offen .
Es könnte sogar sein, das XProfan8 den Fehler noch gar nicht enthält - habe es noch nicht getestet.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 30.01.2010, 19:15   #15 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Blinzeln

@AHT
Zitat:
Es könnte sogar sein, das XProfan8 den Fehler noch gar nicht enthält - habe es noch nicht getestet.
Updaten !

Wir sind bei 11.2 !
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gifs in der Dateigröße (Kb) verlkeinern? Checkervara Homepagegestaltung 6 27.09.2007 17:56
Dateigröße verkleinern MPEG VfB ler Software - Allgemein 11 09.02.2007 09:17
Dateigröße für Avatare WuestenFuX über das Forum 11 24.10.2006 20:46
dateigröße ''runterpainten'' s.j. Allgemein 9 08.08.2006 19:57
Probleme mit Davideo 2 - Dateigröße Herry Software - Allgemein 1 09.12.2002 22:07



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:06 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2