Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Fehlermeldung auf englisch erhalten? (https://www.delphipraxis.net/127382-fehlermeldung-auf-englisch-erhalten.html)

Phoenix 12. Jan 2009 14:43


Fehlermeldung auf englisch erhalten?
 
Hi,

ich hab hier ein massives Problem.
Ich greife aus .NET heraus auf einige Netzwerkfunktionen der Windows API zu. Das ist soweit auch kein Problem. Aber ab und zu tritt eine Fehlersituation auf. Die Exception die ich in .NET erhalte ist vom Typ COMException und die Message sieht z.B. so aus:
Zitat:

Zitat von COMException
Das angegebene Netzwerkkennwort ist falsch. (Exception from HRESULT: 0x80070056)

Das ganze hat hier - wie man sieht - zwei Probleme:
1.) ist die Meldung auf Deutsch. Das ganze läuft auf einem deutschen Server, aber für internationale Kunden. Das heisst, die Meldung muss mindestens auf englisch sein.
2.) Steht der HRESULT hinten dran. Den will ich natürlich nicht draussen anzeigen.

Ich bekomme bei der COMException genau diesen HRESULT-Code mit. Wenn ich den an die Windows-API Funktion FormatMessage übergebe, dann bekomme ich die Meldung ohne (Exception from...) zurück. Okay, Problem 2 gelöst.
Leider ist die Nachricht immer noch auf deutsch. Und wenn ich FormatMessage mit der LangID für Englisch aufrufe, bekomme ich gar nichts zurück.

Wie bekomme ich also für einen Fehlercode zwingend den Englischen Fehlertext, egal welche Sprachversion vom Betriebssystem installiert ist?

Uwe Raabe 12. Jan 2009 15:15

Re: Fehlermeldung auf englisch erhalten?
 
Zitat:

Zitat von Phoenix
Und wenn ich FormatMessage mit der LangID für Englisch aufrufe, bekomme ich gar nichts zurück.

Laut Beschreibung müsste dann aber der Fehler ERROR_RESOURCE_LANG_NOT_FOUND auftreten.

Vielleicht musst du das Multi-Language Pack installieren (firmiert auch unter MUI = Multi-Language User Interface).

Phoenix 13. Jan 2009 08:47

Re: Fehlermeldung auf englisch erhalten?
 
Okay.. Danke. Dann lad ich mal das MUI Testweise für meinen XP-Rechner runter und probier das damit.
Wenn das tut werde ich mir mal testweise ne Server-VM hernehmen und dort auch mit MUI probieren... Ich melde mich.

Edit Nachtrag: Ich finde kein MUI, das aus meinem deutschen XP ein englisches macht...
Das ist jetzt natürlich etwas ungeschickt. Müsste erstmal wild umherinstallieren.

Phoenix 14. Jan 2009 15:08

Re: Fehlermeldung auf englisch erhalten?
 
Okay,

ich habe jetzt zum Testen einen englischen Windows Server 2003 installiert, und dort das deutsche MUI drauf gepackt.

Folge: Wenn ich die deutsche Meldung nun abrufe kommt der Fehler 1815 (ERROR_RESOURCE_LANG_NOT_FOUND). Und das, obwohl das MUI installiert ist.

Was muss ich nun machen, um die Meldung lokalisiert zu erhalten?
Ich will keine eigenen Resource-Tabellen mit zig Einträgen in meiner Anwendung pflegen, nur um die möglicherweise auftretenden Fehler abzudecken.

Phoenix 16. Jan 2009 09:01

Re: Fehlermeldung auf englisch erhalten?
 
*push* :duck:

jfheins 16. Jan 2009 11:31

Re: Fehlermeldung auf englisch erhalten?
 
Hilft dir das vll. weiter? http://blogs.msdn.com/shawnfa/archiv...10/227995.aspx

Zitat:

you've also probably been through the pain of converting the error code into a usable error message via the FormatMessage API
:mrgreen:

Phoenix 16. Jan 2009 11:58

Re: Fehlermeldung auf englisch erhalten?
 
Nein. Ich hab ja mit FormatMessage überhaupt erst angefangen, weil mir die (bereits gemarshalte) Exception den Fehlertext ja nur in der Betriebssystemsprache liefert.

Wenn Du mir jetzt sagst, wie ich diese Message in Englisch bekomme wenn ich einen deutschen Windows Server als OS hab, dann bist Du gut, weil DAS brauche ich zwangsläufig.

jfheins 16. Jan 2009 12:42

Re: Fehlermeldung auf englisch erhalten?
 
Vll. hilft das da: http://www.tech-archive.net/Archive/.../msg00350.html
(Muss aber jetzt los)

Phoenix 16. Jan 2009 13:01

Re: Fehlermeldung auf englisch erhalten?
 
Soweit war ich auch schon (siehe mein Post oben über den getMUIten Server).
Aber wenn ich jetzt ein englisches System mit deutschem MUI hab, bekomme ich nur die Englischen, nicht jedoch die deutschen Meldungen. Und die brauche ich ggf. auch.

jfheins 16. Jan 2009 14:06

Re: Fehlermeldung auf englisch erhalten?
 
Zitat:

Zitat von Phoenix
Aber wenn ich jetzt ein englisches System mit deutschem MUI hab, bekomme ich nur die Englischen, nicht jedoch die deutschen Meldungen. Und die brauche ich ggf. auch.

Und wenn du mit SetThreadLocale() die Sprache veränderst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Seite 1 von 2  1 2      

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