11 Stimme

Windows API: GetProfileString und GetPrivateProfileString löscht Anführungszeichen

Frage von Gast | 11.04.2012 um 19:46

Ich benutze die Windows API Funktionen GetPrivateProfileString, GetProfilString, WritePrivateProfileString und WriteProfilString um Strings in eine INI-Datei zu schreiben.

Allerdings kommt es hierbei häufiger zu dem Problem, dass doppelte und auch einfache Anführungszeichen verschwinden und nicht mehr richtig eingelesen werden. Im INI-File erscheinen die Strings allerdings korrekt mit den Anführungszeichen.

In einem Forum habe ich gelesen, dass die Anführungszeichen verdoppelt werden müssen, damit es funktioniert. Mache ich das, funktionieren zwar einige Anführungszeichen, die Anführungszeichen, die aber schon vorher richtig waren, tauchen zwei mal auf, was natürlich nicht gewünscht ist. Gibt es da eine Lösung?

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

Ist ein String in der INI-Datei in einfache oder doppelte Anführungszeichen eingefasst, liefert GetProfileString den String ohne Anführungszeichen aus.

Beispiel:

[section]
key1 = string       -> liefert string
key2 = "string"     -> liefert string
key3 = 'string'     -> liefert string
key4 = "            -> liefert "
key5 = string"      -> liefert string"
key6 = "string      -> liefert "string
key7 = str"ing      -> liefert str"ing
key8 = "string'     -> liefert "string'

Obwohl in der INI-Datei Varianten in key1, key2 und key3 Varianten mit und ohne Anführungszeichen gegeben sind, liefert GetProfileString jedes mal das gleiche Ergebnis. Anders verhält es sich in den Beispielen key4 bis key8, wo die Anführungszeichen den String nicht einfassen.

Die Lösung

Vor dem Schreiben mit WriteProfilString überprüfen, ob der String vorne und hinten ein Anführungszeichen gleichen Typs hat. Falls ja, diese Anführungszeichen verdoppeln und die anderen innerhalb bestehen lassen, ansonsten den String unverändert lassen.
13.04.2012 um 18:05

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.