Autor Thema: Dateiname auslesen mit sonderzeichen  (Gelesen 3462 mal)

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Dateiname auslesen mit sonderzeichen
« am: 31.01.21 - 21:55:13 »
Ich versuche gerade einen Dateiname auszulesen mit Sonderzeichen, und dann den Attribute dieser Datei zu holen.

Dieses schlägt fehl.

Der Dateiname wird geholt über einen einfache "Dir"
      DirName = Dir(path & SearchStr, 0 Or 2 Or 16)

Danach wird kontrolliert ob es ein verzeichnis ist mit
      If Getattr(path & DirName) And 16 Then

Und dort entsteht dann ein Error 53 - File not Found.

Der Dateiname der den Debugger her gibt ist
"1. Kot Filemon - Nazywam sie Filemon - YouTube (360p).mp4"

Der Tatsächliche Dateiname ist
"1. Kot Filemon - Nazywam się Filemon - YouTube (360p).mp4"

Dort ist also ein Sonderzeichen "ę" drin, der offenbar als solches nicht ausgelesen wird vom Dir statement.

Kennt jemand ein Workaround damit ich weiterhin diesen Datei abfragen kann ?

Ach ja, die Datei steht auf einen CD-ROM, ist also Read-Only, ich kann die Dateiname also nicht anpassen.

Falls jemand denkt das mann die "Normale" Dateien einfach nicht nehmen sollte ("0 or" weglassen), tja das funktioniert nicht.
Laut hilfe: "Dir$ always returns the names of normal files."
« Letzte Änderung: 31.01.21 - 22:08:08 von ronka »
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Dateiname auslesen mit sonderzeichen
« Antwort #1 am: 01.02.21 - 13:14:28 »
Die Zeile "If Getattr(path & DirName) And 16 Then" wird so aber nicht funktionieren ;)

Dateien mit Sonderzeichen können über Windows-Script korrekt ausgelesen werden. Hier mal LS-Funktionen für Ordner und Dateien, ggfs. reicht das schon:
Code
Function getFiles_ByWFSO(folder_ As String) As Variant
Dim files(), i&, oFSO, oFolder, fileList, fo$
ReDim files(0)
fo = folder_
If right(folder_,1) <>"\" Then fo = fo + "\"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folder_)
Set fileList = oFolder.Files
ForAll objFile In fileList
ReDim preserve files(i)
files(i) =  fo + objFile.Name
i = i + 1
End ForAll
getFiles_ByWFSO = files
End Function
Function getFolders_ByWFSO(folder_ As String) As Variant
Dim files(), i&, oFSO, oFolder, fo$
ReDim files(0)
fo = folder_
If right(folder_,1) <>"\" Then fo = fo + "\"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folder_).SubFolders
ForAll folder In oFolder
ReDim Preserve files(i)
files(i) =  fo + folder.Name
i = i + 1
End ForAll
getFolders_ByWFSO = files
End Function
« Letzte Änderung: 01.02.21 - 13:52:36 von jBubbleBoy »
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Dateiname auslesen mit sonderzeichen
« Antwort #2 am: 01.02.21 - 13:52:21 »
Also den Funktion geht schon, NUR nicht bei diesen Sonderzeichen in Dateinamen.

Wenn ich einen CD/DVD verarbeite ohne sonderzeichen in den Dateinamen klappt das problemlos.

Diesen getFiles_ByWFSO oder CreateObject("Scripting.FileSystemObject") geht sicherlich nur wenn auf den OS dazu einen passenden object installiert ist, oder ?
Der Agent jetzt verwendet reine Lotusscript funktionalität, und würde auch unter linux und Mac funktionieren.
Das hier dann nicht mehr... oder ??
« Letzte Änderung: 01.02.21 - 13:55:00 von ronka »
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Dateiname auslesen mit sonderzeichen
« Antwort #3 am: 01.02.21 - 13:56:46 »
Bei einer Verwendung durch Linux- oder Mac-User würde ich dann auf Java umsteigen, mit LS kommt man hier schnell an seine Grenzen.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Dateiname auslesen mit sonderzeichen
« Antwort #4 am: 01.02.21 - 17:25:15 »
Wie gesagt, grundsätzlich funktioniert die routine, und liest dateien und verzeichnisse aus.

NUR wenn Dateien (nicht verzeichnisse) einen Umlaut haben springt der raus..
Als workaround habe ich jetzt auf die letzte 4 Zeichen kontroliert ob dort ein punkt drin ist, wenn ja, dann skipp ich den datei..

aber dann taucht das problem später in der routine (wo dann die Datei selber verarbeitet werden sollte) wieder erneut auf.

Kann der DIR() keine sonderzeichen ? muss ich dafür einen Ticket bei HCL eröffnen um das heraus zu finden ?
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Dateiname auslesen mit sonderzeichen
« Antwort #5 am: 01.02.21 - 18:31:52 »
mir wäre keine Lösung bekannt  :-:

ein Ticket dazu gab es schon:
https://www.ibm.com/support/pages/apar/LO54603
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Dateiname auslesen mit sonderzeichen
« Antwort #6 am: 01.02.21 - 20:42:28 »
Das war ja 8.5.1 und damit lange her..

man o man..

Naja, dann muss ich mal nachfragen bei HCL und IBM ob da jemals etwas gemacht würde.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz