hi,
brandelh hat geschrieben: ↑Do, 08. Okt 2020 22:25
Tom hat doch im Prinzip die Funktionen genannt, mit denen der Dateiname von UTF-8 nach Ansi umgesetzt werden könnte,
das Problem ist aber, dass man die richtige Stelle bzw. alle nötigen Stellen treffen muss.
die Versuche habe ich unternommen und endeten in 3 x Error.Log aber gemeinsamen Nenner :
kann Datei nicht abspeichern / öffnen mit Xbase++
brandelh hat geschrieben: ↑Do, 08. Okt 2020 22:25
Woher weißt du, dass Outlook intern mit den seltsamen Zeichen zurecht kommt ?
Ich selbst steuere Outlook nicht über Xbase++ - aber mit Outlook direkt hab ich jede Menge Probleme
wie ich sagte kommt auch der Explorer damit klar und ich kann per DblClick die Datei öffnen.
es könnte also sein das diverse Attachment mit Umlauten auf dem PC sind wo man erst in der CMD Box "sieht" das was nicht stimmt
---
ich hatte die Xbase++ App geschrieben weil die PST so gross geworden ist über die Jahre.
also wollte ich "alte" Attachments "raus-kopieren" und dann löschen.
nun war es wieder mal so weit aber mir viel beim testen auf das es eine Datei zu wenig war
ich habe das Attachment dann "in" Outlook als Datei abgespeichert und merkte in der CMD Box das was nicht stimmt.
danach kamen die versuche mit Ot4xb mit den Error.Log ( BEGIN SEQUENCE war dazu abgeschaltet )
ich habe nun eine Lösung mit dem CHR(249) als Marker für STRTRAN()
Code: Alles auswählen
// per Reference @
TestforUmlaute( @cName )
PROCEDURE TestforUmlaute(cName)
LOCAL nPosi
IF CHR(97)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(97),"ae")
ENDIF
IF CHR(65)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(65),"AE")
ENDIF
IF CHR(117)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(117),"ue")
ENDIF
IF CHR(85)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(85),"UE")
ENDIF
IF CHR(111)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(111),"oe")
ENDIF
IF CHR(79)+CHR(249) $ cName
cName := STRTRAN(cName,CHR(79),"OE")
ENDIF
// " Sign not allowed in filename but ' work
IF AT(CHR(34),cName) > 0
cName := STRTRAN(cName,CHR(34),CHR(39))
ENDIF
// this is need to delete Square in CMD Box
nPosi := AT(CHR(249),cName)
IF nPosi > 0
cName := SUBSTR(cName,1,nPosi-1)+SUBSTR(cName,nPosi+1)
ENDIF
RETURN
der Marker CHR(249) wird erst am Ende "entsorgt" und ist in diesem Code nur für "einmal" ausgelegt.
ich habe nun Wörter mit mehren Umlauten bekommen und kann es damit optimieren, Danke