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?
Ähnliche Themen
MySQL: Daten aus Tabelle löschen - Unterschied zwischen TRUNCATE, DELETE und DROP
Tutorial | 0 Kommentare
Lazarus: Betriebssystem erkennen (Compiler Switch)
Tutorial | 3 Kommentare
Android SDK Manager zeigt nicht jede API Version an
Frage | 1 Antwort
OpenOffice: Anführungszeichen oben und unten
Frage | 11 Antworten
Android SDK Manager: Problem beim Installieren "File not Found (Zugriff verweigert) Done. Nothing was installed"
Frage | 1 Antwort
Delphi: INI-Dateien: Probleme mit Anführungszeichen
Frage | 1 Antwort
Windows 8: Altes Startmenü zurückbekommen
Tipp | 0 Kommentare
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.
Ist ein String in der INI-Datei in einfache oder doppelte Anführungszeichen eingefasst, liefert GetProfileString den String ohne Anführungszeichen aus.
Beispiel:
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