Ich versuche, EnumSystemLocales
Das Problem ist, dass der Rückruf nur einmal aufgerufen wird.
Hinweis: EnumSystemLocales
ist und gibt "true" zurück, was auf Erfolg hinweist.
Die Anmerkungen von EnumSystemLocales
besagt, dass mein Callback true zurückgeben muss, damit die Enumeration fortgesetzt wird (oder korrekterweise nicht false zurückgegeben werden muss):
Die Funktion zählt Gebietsschemas auf, indem Gebietsschemakennzeichen übergeben werden, eins um eine Zeit, zu der angegebenen anwendungsdefinierten Callback-Funktion. Dies wird fortgesetzt, bis alle installierten oder unterstützten Gebietsschema-IDs vorhanden sind wurden an die Callback-Funktion oder die Callback-Funktion übergeben gibt FALSE zurück.
Auf der Dokumentation der Callback-Funktion :
%Vor%Ein Kommentator ist auf ein Problem mit der Definition von "nicht falsch" gestoßen:
Diese Funktion muss 1, nicht (DWORD) -1 zurückgeben, um die Verarbeitung fortzusetzen
Das lässt mich an Delphis Definition von
denken %Vor% unterscheidet sich von Windows. (Deshalb habe ich einen Rückgabewert von BOOL(1)
versucht - der immer noch fehlschlägt).
Als nächstes frage ich mich, ob es nicht einmal stdcall
sein soll.
Wie kann man in Delpi vorschlagen, EnumSystemLocales
?
Bearbeiten : Auch versucht:
Result := BOOL(-1);
Result := BOOL($FFFFFFFF);
Result := BOOL(1);
Result := True;
Dieses Problem tritt aufgrund des in Windows Version 5.1 festgestellten WinAPI-Fehlers auf
Die WinNls EnumXXX-Funktionsfamilie (und laut den Kommentaren wahrscheinlich mehrere andere) erkennt nur (BOOL)1
als (BOOL)TRUE
und beendet die Aufzählung, wenn der Callback eine andere returnValue != (BOOL)FALSE
zurückgibt.
Hier ist eine semantische Problemumgehung, die ich herausgefunden habe:
%Vor%Tags und Links delphi globalization winapi internationalization delphi-5