Zeilenumbruch in Strings die mittels ResourcesManager ausgelesen werden
-
Hallo Forum,
inzwischen habe ich es geschafft auf VS2005 umzusteigen. Da ich dies als Anlass genommen habe, mein aktuelles Programm zu überarbeiten, bin ich auch auf den Trip der Lokalisierung gekommen.
Das Auslesen von Strings mit der ResourceManager-Klasse ist kein Problem mehr und klappt auch wunderbar. Allerdings stoße ich da auf ein kleines "Formatierungsproblem". Wenn ich in einem String, der in der Resource-Datei steht, die Escape-Sequenz "\n" für den Zeilenumbruch verwende, so wird mir diese beim Verwenden der GetString-Anweisung als Zeichen mit angezeigt und der Zeilenumbruch nicht durchgeführt.
Beispiel:
in der Resource-Datei steht:"Hallo!\nWas möchten sie tun?"
Rauskommen sollte:
Hallo! Was möchten sie tun?
Die GetString-Anweisung liefert:
Hallo!\nWas möchten sie tun?
Wie schaffe ich es, dass auch das rauskommt, was rauskommen soll? Muss ich etwa statt "\n" die Sequenz "\r\n" verwenden? Oder geht das gewünschte so nicht und ich muss den String splitten:
String^ 1= L"Hallo!"; String^ 2 = L"Was möchten sie tun?"; String^ 3 = String::Concat(1,"\n",2);
Gruß
physici
-
Der String enthält genau das, was Du reingeschrieben hast...
Ein Zeileumbruich ist in Windows aber \r\n (oder anders rum?). ein einfaches \n reicht nicht aus... oder noch besser: Environment::NewLine
-
Also ich habe es jetzt mit "Hallo!\r\nWas möchten sie tun?" probiert. Es klappt auch nicht.
Wenn ich in VS2003 einen String wie folgt definiert habe
String* myString = S"Hallo!\r\nWas möchten sie tun?";
hat es ja dann auch den entsprechenden Zeilenumbruch gegeben. Hat sich da bei VS2005 geändert? Das Environment::NewLine kann ich ja schlecht in den String reinschreiben, oder?
-
Zeilenumbrüche im ResourceManager habe ich bisher nicht mit dem Managed Resource Editor hinbekommen. Ich habe immer das resx-File mit dem Texteditor geöffnet und an die Stelle des Zeilenumbruchs wirklich einen Umbruch eingefügt. Xml kennt kein \n oder \r.
Resources.resx - Datei
<data name="helloworld" xml:space="preserve"> <value>Hello World</value>
C#-Code
string msg = Resources.ResourceManager.GetString( "helloworld" ); MessageBox.Show( msg );
-
Ja danke, inzwischen bin ich hinter diesen Trick auch gekommen. Jochens
Jochen Kalmbach schrieb:
Der String enthält genau das, was Du reingeschrieben hast...
hat mich drauf gebracht.