Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: ronka am 31.01.21 - 21:55:13

Titel: Dateiname auslesen mit sonderzeichen
Beitrag von: ronka 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."
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: jBubbleBoy 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
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: ronka 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 ??
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: jBubbleBoy 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.
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: ronka 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 ?
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: jBubbleBoy 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
Titel: Re: Dateiname auslesen mit sonderzeichen
Beitrag von: ronka 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.