Delphi: INI-Dateien: Probleme mit Anführungszeichen
Frage von Chematik | 01.12.2012 um 23:03
Ich benutze in Delphi Ini-Files um einige Einstellungen meines Programms zu speichern. Das schreiben und lesen der Dateien funktioniert auch ganz gut, nur mit Anführungszeichen kommt es zu kuriosen Problemen.
Das Problem betrifft sowohl doppelte als auch einfache Anführungszeichen (" und ') und taucht nur manchmal auf, eine Logik ist für mich nicht erkennbar. Meine erste Idee war, die Anführungszeichen zu verdoppeln, das funktioniert aber auch nur manchmal.
Falls es wichtig ist, hier ein paar Code-Fragmente:
uses IniFiles; ... procedure ... var ini: TIniFile; str: string; begin ini:=TIniFile.Create(dateiname); //schreiben ini.WriteString('Section', 'Identifier', 'Value'); //lesen str:=ini.ReadString('Section', 'Identifier', 'Default'); ini.free; end;
Ich denke aber nicht, dass es daran liegen wird, da dieser Code so auch im Internet zu finden ist. Aber woran liegt es dann?
Ähnliche Themen
PHP: Upload großer Dateien
Tutorial | 0 Kommentare
MIME Type einer INI Datei
Frage | 1 Antwort
Website Performance: Javascript und CSS komprimiert ausliefern und Ladezeiten verkürzen
Tutorial | 0 Kommentare
Viele CSV-Dateien in XLSX- oder ODS-Spreadsheets konvertieren
Tutorial | 0 Kommentare
Delphi/Lazarus: Kommandozeilen Parameter Tutorial Teil 1: Senden
Tutorial | 0 Kommentare
Textdateien mit fester Zeilenlänge umschreiben
Tutorial | 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.
Die von dir benutzen Funktionen WriteString und ReadString benutzen intern die Windows API Funktionen ReadPrivateProfileString und GetPrivateProfileString.
Bei diesen Funktionen ist folgendes zu beachten: Ist der String in einfache oder doppelte Anführungszeichen eingefasst, gibt die Funktion den String ohne die Anführungszeichen zurück. Aus "string" wird also string. Kommt nur ein Anführungszeichen vor oder kommen Anführungszeichen in der Mitte vor, werden diese normal zurück gegeben. Das erklärt dein beschriebenes Verhalten.
Die Lösung ist folgende:
Wir überprüfen also, bevor wir den String in die INI-Datei schreiben, ob sowohl vorne als auch hinten Anführungszeichen eines bestimmten Typs vorkommen. Falls ja, verdoppeln wir diese hinten und vorne. Ansonsten bleibt der String, wie er ist.
04.12.2012 um 16:20