Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Openfiledialog wird nich ausgeführt (https://www.delphipraxis.net/214232-openfiledialog-wird-nich-ausgefuehrt.html)

v2afrank 11. Dez 2023 10:21

AW: Openfiledialog wird nich ausgeführt
 
Ist das wirklich so ? VB6 verhält sich richtig und erzeugt einen Laufzeitfehler. Delphi 11.3 meldet auch den Fehler.
Aber mein Delphi6 und 2006 erzeugen keine Fehlermeldung und arbeiten so als ob der Benutzer auf Abbruch gedrückt hat. Den Fehler kann man ja also abfangen. Darum glaube ich eher nicht das es nur von der WINAPI kommt, oder ?

himitsu 11. Dez 2023 13:23

AW: Openfiledialog wird nich ausgeführt
 
Also mindestens in Delphi XE hatten wir schon das Problem, dass ungültige Pfade (ungültige Syntax, nicht nicht-existierender Pfad) den Dialog nicht öffnete.

Und so weit ich mich glaub erinnern zu können (viele Jahre ist es her), kam da direkt beim Aufruf der API bereits als Ergebnis das "Cancel" zurück, ohne einen Fehlercode, als ich mich damals durch die RTL gedebuggt hatte.

Rolf Frei 11. Dez 2023 14:45

AW: Openfiledialog wird nich ausgeführt
 
Wenn dein INI File da ein ? drin hat, ist beim konvetieren/speichern der Ini Datei etwas schief gelaufen und aus einer vermutlich UTF-8 (oder besser Unicode) INI eine ANSI Datei gemacht worden, vermutlich sogar mit deinem Programm. D6 ist nicht unicodefähig und alle Ini-File Funktionen rufen da die Ansi Version der Windows Funktionen auf. Deine INI's dürfen also keine Zeichen enthalten, die nicht mit ISO8859 dargestellt werden können. Solche ungültigen Zeichen werden dann mit ? dargstellt. Mit anderen Worten, die Daten in deiner INI sind dann "kaputt" ohne chinesische Zeichen.

Einzige Lösung ist, das Verzeichnis unbenennen auf was, ohne Unicode Zeichen. Alternativ aber wahrscheinlich nicht so einfach schnell zu machen: Deine alten Programme mit neueren Delphi Versionen kompilierern, die unicodetauglich sind (ab D2009).

himitsu 11. Dez 2023 14:50

AW: Openfiledialog wird nich ausgeführt
 
INI niemals UTF-8.
Offiziell kennt die INI-WinAPI nur ANSI und Unicode (UCS-2 UTF-16 ohne BOM)

TMemIniFile sollte es egal sein und es dürfte mit jeder Codierung, auch mit BOM umgehen, können.
Aber TIniFile nicht.



Ich weiß nicht was passiert, wenn eine INI geändert wird, aber da vermutlich sollte es auch passieren.
Wenn beim Speichern, via WinAPI/TIniFile, erkannt wird, dass es nicht in ANSI passt, dann wird automatisch auf Unicode umgestellt.

Rolf Frei 11. Dez 2023 14:55

AW: Openfiledialog wird nich ausgeführt
 
Wir reden hier von D6 und da werden die A-Varianten der Windows Funtkionen genuntzt und diese verabreiten nur ANSI Dateien. Wenn man da mit einem D6 Programm eine Unicode INI liest, kommen für Unicode Zeichen nur ? zurück. Spätestens bei Schreiben mit D6 sind diese INI-Dateine "kaputt" und enthalten ? anstelle der Unicodezeichen.

himitsu 11. Dez 2023 14:59

AW: Openfiledialog wird nich ausgeführt
 
Upps, D2006,
ja, dort werden die ANSI-APIs benutzt und die können nur ANSI, bzw. übersetzen Unicode.

Nicht umkodierbares wird meistens als ? übersetzt.
(Achtung, Delphi reagiert bei ungültigem UTF-8 anders und gibt oft stattdessen einen Leersting zurück, egal ob zu ANSI oder Unicode)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz