FCreate() und Umlaute im Pfad

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

FCreate() und Umlaute im Pfad

Beitrag von UliTs »

Hallo allerseits,

FCreate() scheint nicht zu funktionieren, wenn Umlaute im Pfad vorkommen:

Code: Alles auswählen

      IF .not. FExists( "C:\PÖDF\*.*" )
        createDir( "C:\PÖDF" )
      ENDIF
      cFname := "C:\PÖDF\Test.txt"
      // fErase(cFname)
      nHan := fCreate(cFname)
      IF nHan==-1
        MsgBox( "Fehler: "+Str( FError(),10 ) )
      ELSE
        fClose( nHan )
        MsgBox( "Ok" )
      ENDIF
Es kommt die Fehlernummer 3 (was bedeutet diese?).
Tritt der Fehler bei Euch bei diesem Quellcode auch auf?
Wenn ja, gibt es dazu einen workaround?

Uli

Edit: Tippfehler korrigiert und lTrimStr() ersetzt.
Zuletzt geändert von UliTs am Mo, 11. Jun 2018 13:07, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von Jan »

Moin Uli,

3 ist "Pfad nicht gefunden".

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von brandelh »

Wie ist das mit OEM/ANSI in Quellcode und EXE ... im Beispiel oben fehlt noch ein Anführungszeichen, das ist aber sicher ein Übertragungsfehler.

Fehlermeldungen:
FError()
Retrieves the error code after completion of a low level file function.

FError() --> nErrorCode

Return
The return value of FError() is the OS error code of the last file operation performed. The error code is an integer numeric value. If no error occurred, FError() returns zero.

...
A description of the error code can be retrieved from the OS/2 command line by entering HELP <nErrorCode>.
OS/2 Help, statt einer einfachen Liste ... zum Glück sind die Fehlermeldungen identisch mit allen alten (DOS Fehlern) ... JAN hat es ja schon gefunden.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von brandelh »

In welcher Zeile tritt der Fehler auf und gibt es das Verzeichnis ?
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von Jan »

In Ulis Code fehlen gleich an zwei Stellen die Anführungszeichen. Und die Funktion ltrimstr() kenn ich nicht, ist vermutlich was selbstgebasteltes. Oder da fehlen Klammern für ltrim(str())

Ich hab das mal bei mir laufen lassen. das gibt bei mir eine Rückmeldung "OK". Wobei das Verzeichnis statt dem Ö ein hochgestelltes TM stehen hat. Sehr sicher ein Zeichensatz-Problem. Die Test.txt steht da aber drin.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von UliTs »

Danke für die schnellen Antworten. Ja, code habe ich einfach so runtergeschrieben und Flüchtigkeitsfehler drin gehabt.
ltrimstr(... -> ltrim( str( ...
Ihr habt Recht, der Code funktioniert jetzt auch bei mir! Wie schon richtig vermutet, war/ist es ein Problem zwischen OEM und ANSI Zeichensatz.
Leider kommt die XbpPdf()-Klasse nicht mit Umlauten im Pfad beim PDF-Dateinamen klar.

Ich bin mit Edgar in Kontakt. Mal sehen, ob er (wir) es hinbekommen. Ich melde mich dann wieder.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von Tom »

Dann solltest Du den Klassenmethoden Deine Pfad- und Dateinamen mit ConvToAnsiCP() übergeben - und ggf. Rückgabewerte dieser Art mit ConvToOemCP() zurückkonvertieren.
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: FCreate() und Umlaute im Pfad

Beitrag von UliTs »

Tom hat geschrieben: Mo, 11. Jun 2018 13:58 Dann solltest Du den Klassenmethoden Deine Pfad- und Dateinamen mit ConvToAnsiCP() übergeben - und ggf. Rückgabewerte dieser Art mit ConvToOemCP() zurückkonvertieren.
Hallo Tom,
das geht in diesem Fall nicht bzw. nicht so einfach.
Bei XbpPdf wird in einem Parameter der Pfad inklusive Dateinamen übergeben. Ich vermute, dass in der Klasse (ist ja nicht von mir) zwar der Pfad mittels ConvToAnsiCP() konvertiert wird, aber nicht der Dateiname. Wobei .... das kann auch nicht sein, sonst würde es ja bei Dateinamen nur mit ASCII-Zeichen funktionieren ...
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten