Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Filegröße
#1
Hallo Zusammen,

ich muss prüfen, ob eine Datei eine bestimmte Länge hat.
Der Dateiname steht in einer Ascii Zeichenkette.
Ich bekomme jedoch immer Größe = 0 zurück, obwohl im Ascii Feld 6,0 der richtige Pfad/Name angezeigt wird

filename = Trim("d:\Bilder\PLME\PLM_E_" +  LFN + "_" + Datum + "_" + BC +  ".tif")
VDF.WriteAscii 6,0,filename
DateiLaenge = VOK.Filelength (filename)
VDF.WriteDInt(6,116,DateiLaenge)

Trage ich den Pad/Dateiname direkt ein, bekomme ich die Größe der Datei:

DateiLaenge = VOK.Filelength("d:\Bilder\PLME\PLM_E_3751_20190513_1.tif")

VDF.WriteDInt(6,116,DateiLaenge)

Kann mir jemand sagen, wo hier der Fehler liegt?
Antworten
#2
Guten Morgen Herr Schiffner
Sollten die Variablen "LFN", "Datum" und "BC" als Integer vorliegen, sollten sie diese bei der Zuweisung noch als String casten damit der filename korrekt zusammengestellt wird
Code:
filename = Trim("d:\Bilder\PLME\PLM_E_" +  CStr(LFN) + "_" + CStr(Datum) + "_" + CStr(BC) +  ".tif")
Da Ihnen der Dateiname aber korrekt angezeigt wird, werden Sie das an anderer Stelle bereits getan haben.
Zu VOK.Filelength muss ich die Hilfe konkretisieren. Der Befehl gibt nämlich nur die Dateigröße einer Datei wieder.
Für Ihre Belange sollte ein viel minimalerer Befehl ausreichen.
Code:
VDF.WriteDInt(9,128,Len(filename))
Mit Len(String) kriegen Sie die Länge des übergebenen Strings zurück.

Mit freundlichen Grüßen
Roman Best
Antworten
#3
(13.05.2019, 08:50)R.Best schrieb: Guten Morgen Herr Schiffner
Sollten die Variablen "LFN", "Datum" und "BC" als Integer vorliegen, sollten sie diese bei der Zuweisung noch als String casten damit der filename korrekt zusammengestellt wird

Code:
filename = Trim("d:\Bilder\PLME\PLM_E_" +  CStr(LFN) + "_" + CStr(Datum) + "_" + CStr(BC) +  ".tif")
Da Ihnen der Dateiname aber korrekt angezeigt wird, werden Sie das an anderer Stelle bereits getan haben.
Zu VOK.Filelength muss ich die Hilfe konkretisieren. Der Befehl gibt nämlich nur die Dateigröße einer Datei wieder.
Für Ihre Belange sollte ein viel minimalerer Befehl ausreichen.

Code:
VDF.WriteDInt(9,128,Len(filename))
Mit Len(String) kriegen Sie die Länge des übergebenen Strings zurück.

Mit freundlichen Grüßen
Roman Best

Hallo Herr Best,

danke für die schnelle Antwort, aber der Längen abfrage reicht mir leider nicht. 
Ich muss prüfen, ob eine Datei mit diesem Namen im Verzeichnis vorhanden ist und ob diese eine bestimmte Größe hat. Ich wollte auch das vorhanden sein der Datei mit 

'If System.IO.File.Exists(filename) Then 

feststellen. Hier habe ich aber das gleiche Problem, dass das vorhanden sein der Datei nur angezeigt wird, wenn ich den Dateiname direkt eintrage und nicht über filename.

Mit freundliche Grüßen
Peter Schiffner
Antworten
#4
Hallo Herr Schiffner,
ich habe jetzt gerade Ihre beschriebene Vorgehensweise mit Dateien auf meinem System nachgeprüft und bei mir funktioniert alles wie erwartet. Können Sie mir Ihr Projekt oder das komplette Script zuschicken, dann schaue ich da kurz drüber wo der Fehler sein kann, da es dann eigentlich nur an einem fehlerhaften "filename" liegen kann.

//Edit : Die Problematik lag an der Erstellung des Bildes und unmittelbar darauffolgenden Abfrage der Filelength und Existenz.
Da die Scipte asynchron zur Laufzeit laufen und die Bilderstellung doch etwas Zeit in Anspruch nahm, war zum Zeitpunkt der Abfrage das Bild noch nicht erstellt, wodurch die Abfragen fehl schlugen. Durch eine zeitliche Entkopplung durch beispielsweise VOK.Starttimer (sodass nach dem Erstellauftrag des Bildes kurze Zeit gewartet wird) sollte die Problematik gelöst sein.
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste