Startseite › Foren › Deutsches LiveCode-Forum › Dateigrösse abfragen
- Dieses Thema hat 9 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren, 1 Monat von Torsten.
-
AutorBeiträge
-
-
Oktober 31, 2017 um 15:34 Uhr #2507
Hallo
Eine Frage an die Spezialisten, wie kann man in LiveCode
die Dateigrösse ( in Byte oder KByte ) einer txt-Datei abfragen.
Gruß Günter -
Oktober 31, 2017 um 15:59 Uhr #2511
Hallo Günther,
wenn Sie mal schauen möchten, getestet und kunktioniert 🙂
on mouseUp answer file "Bitte Datei auswählen:" ## User hat CANCEL geklickt! if it = EMPTY then exit mouseup end if put it into tFile ## Siehe unten, Funktion liefert Dateigröße zurück: answer wie_gross(tFile) end mouseUp function wie_gross tFile ## Zunächst den Namen der Datei merken, den benötigen wir gleich noch: set itemdel to "/" put item -1 of tFile into tDateiName ## Nun den Ordner ermitteln, in dem die Datei liegt: delete item -1 of tFile ## Übrig bleibt der Ordnername! :-) ## Itemdelimiter wieder auf KOMMA setzen, sonst kalpp der Rest des Skriptes nicht! set itemdel to "," ## Guter Stil, immer alles so zurücklassen, wie wie es vorgefunden haben! ## Hier sollten wir daher später "the directory" wieder auf den "Anfangszustand" versetzen! put the directory into tOldDir ## Jetzt geht es ans Eingemachte! ## DETAILLIERTEN Inhalt dieses Ordner abfragen: set the directory to tFile put the LONG files into tLongFiles ## Bitte LONG files im Dictionary nachschlagen! ## Dateinamen werden URLENCODED geliefert mit LONG FILES: put urlencode(tDateiName) into tURLDatei put lineoffset(tURLDatei,tLongFiles) into tZeile ## Als Programmiere müssen wir uns leider um JEDEN Scheisss kümmern, also: if tZeile = 0 then beep ## Datei nicht vorhanden, warum auch immer? Dann weg hier :-) exit to top end if ## OK, Datei vorhanden, weiter gehts: put line tZeile of tLongFiles into tZeileMitDatei put item 2 of tZeileMitDatei into tGroesse ## Siehe oben, von wegen guter Stil und so... set the directory to tOldDir ## Gefunden, nun diese Info zurückliefern, aber erst nett aufbereiten, ## vielleicht noch auf- oder abrunden, aber das kannst Du selber machen :-) return tGroesse/1024 && "kb" end wie_gross
Gruß
Klaus
-
Oktober 31, 2017 um 16:09 Uhr #2513
Hallo Klaus
Vielen Dank, werde es gleich mal probieren.
Gruß Günter -
November 1, 2017 um 07:35 Uhr #2515
Hallo Klaus,
geht es nicht einfacher? Ich finde, der Weg über die Directory-Ausgabe ist meines Erachtens durch die Brust ins Auge geschossen 😉
Das ist im Beispiel für den Progress Bar ja auch schon so demonstriert: http://lessons.livecode.com/s/lessons/m/4071/l/11887-how-do-i-use-a-progress-bar
Erstaunlich, dass Livecode hier bisher noch kein einfacheres Kommando eingebaut hat, z.B. „get the size of tFilename“, wie bei den Image-Files: http://de.livecode.wikia.com/wiki/Size
Am Ende des Artikels ist allerdings ein Hinweis:
To get the true size of such an image, either use the detailed files, or check the length of the file url.Was meinen die mit „check the length of the file url“? Ist das vielleicht ein einfacher Weg?
-
November 1, 2017 um 12:22 Uhr #2517
Hallo Torsten,
yes we can 🙂
put the length of url „binfile:C:\myFilename.xyz“ into myFileSize
Sollte funktionieren. Ist doch das, was Du meinst, oder?
Grüße
Hauke
-
November 1, 2017 um 13:13 Uhr #2521
Nein, einfacher geht es leider nicht, ich würde es euch sagen, ehrlich! 😎
Und „length…“ lädt die gesamte Datei zuerst einmal in den RAM und fängt dann erst an, nachzumessen.
Könnt ihr ja gerne mal mit einem XX GB großen MP4 Video o.ä. versuchen 🙂Und leider funktioniert die neue Files(directory) Syntax noch nicht mit LONG files.
Das hätte ein paar Zeilen gespart. -
November 1, 2017 um 13:18 Uhr #2523
Naja, es funktioniert schon und kann bei kleinen Dateien, von denen man von jeweils einer einmalig die Größe benötigt, durchaus sinnvoll sein. Aber hat natürlich auch Nachteile – es kommt eben immer auf den Verwendungszweck an.
-
November 1, 2017 um 13:25 Uhr #2525
Danke Hauke,
das ist doch für Dateien, die man kennt, eine schöne Lösung. Für den Extremfall, den Klaus beschreibt, etwas problematisch, aber für den Normalfall eigentlich ganz gut.
Ein Problem bleibt aber immer noch der Fall, dass man eine Datei aus dem Internet laden und dafür eine Fortschrittsanzeige mittels Progress Bar einsetzen will.
Wie kann man das machen?
-
November 1, 2017 um 14:05 Uhr #2527
Die Lösung von mir ist verdammt schnell, wahrscheinlich schneller als eine Datei mal eben in den RAM zu laden.
Ein Problem bleibt aber immer noch der Fall, dass man eine Datei aus dem Internet laden und dafür eine Fortschrittsanzeige mittels Progress Bar einsetzen will.
Wie kann man das machen?Das macht man mit dem Befehl „load url“die_zu_ladende_url“, denn der ist asynchron, und während des Ladens fragt man periodisch „urlstatus(die_zu_ladende_url)“ ab und füttert seinen Scrollbar mit den Daten bzw. ragiert auf Fehlermeldungen etc.
Siehe „urlstatus“ im Dictionary.
-
November 2, 2017 um 07:34 Uhr #2536
Hi Klaus,
dass die Directory-Lösung super funktioniert, glaube ich gerne 🙂
Ich wundere mich nur, dass so eine vergleichsweise einfache Frage vom normalen User mit so einer komplexen Prozedur selbst gelöst werden muss. Ein Einsteiger, der keinen Zugang zu einem so tollen Forum wie diesem hier hat, muss an sowas lange knabbern.
Warum ist genau diese Vorgehensweise von Livecode nicht schon in eine fertige Funktion umgesetzt worden, das liegt doch nahe, oder?
Ein normaler Anfänger wundert sich, weil so viele andere viel komplexere Funktionen wie das Hochladen einer FTP-Datei ja auch elegant gelöst wurden.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.