TIniFile case sensitive
-
Kann man mit TIni ein windows-Init-File case-sensitive auslesen?
D.h. ich habe zwei verschiedene Sections [GROSS] und [gross].
Was gibts für Alternativen?
Ich finde irgendwie nur "http://kingleo.home.pages.at/index_cpp.xml.php?language=DE&show=/development/cpp". Das geht aber mit dem C++Builder 5 nicht.
-
ich kenne keine Klasse TIni
und, wieso testest du es nicht einfach? dan bist du dir sicher
-
TIniFile ist wohl gemeint
-
Sorry, ich hab mich wohl nicht ganz klar ausgedrückt:
1. Ich meine natürlich TIniFile
2. Ich habs getestet. Das Ding unterscheidet nicht zwischen Groß- und Kleinschreibung. Aber vielleicht gibts ja irgendwie ne Möglichkeit zu sagen, dass es unterscheiden soll (es liegt ja wohl eher an TStringList, dass es nicht unterscheidet).
3. Ich such nach ner Bib. Alles was ich finde, braucht MFC (kann ich nicht verwenden) oder hat nicht alles, was ich brauche (z.B. mir sagen, welche Sections es gibt) oder ist eben o.g. LeoIni, was der C++Builder aber nicht übersetzen kann ...
-
Ich habs getestet. Das Ding unterscheidet nicht zwischen Groß- und Kleinschreibung. Aber vielleicht gibts ja irgendwie ne Möglichkeit zu sagen, dass es unterscheiden soll.
Steht doch alles in der Hilfe zur Klasse:
Gibt es dort eine entsprechende Eigenschaft oder Methode -> Nein -> geht nicht
Gibt es dort eine entsprechende Eigenschaft oder Methode -> Ja -> gehtDa hier stark Fall 1 vorliegt selber machen ist "In" oder suchen bsp. bei
http://www.torry.net/, http://sunsite.informatik.rwth-aachen.de/delphi/
-
Sorry, ich wollte keinen Roman darüber schreiben was ich schon alles versucht habe sondern hab zwei Fragen gestellt:
1. Geht es mit TIniFile?
2. Kennt jemand ne Alternative zu TIniFile mit der es funzt?Jetzt nochmal die lange Version:
- Ich habs ausprobiert: TIniFile funzt nicht wenn es case-sensitive sein muss
- Ich habe in der Hilfe gesucht. Da steht nichts. Aber da steht überhaupt nichts zum Thema Groß- und Kleinschreibung. Deswegen habe ich zur Sicherheit hier nochmal gefragt.
- Deswegen aber auch gleich die Frage nach einer Alternative. Ich habe gesucht und diverses gefunden, was aber entweder MFC ist, oder Ansi-C++ aber unter C++Builder nicht funktioniert, oder Winapi, aber nicht alle Funktionen hat, die ic brauche oder wiederum Delphi aber mit AnsiString und TStringList arbeitet und deswegen wohl wieder nicht so funzt, wie ich es mir vorstelle.
Selber machen ist eigentlich nie 'in' wenn es Bibliotheken gibt. Und nach solchen habe ich gefragt. Ein Link zu einer allgemeinen Seite mit Delphi-Komponenten hilft mir leider nicht weiter.
-
Hallo,
Hast du mal TMemIniFile probiert?
Das verwendet intern ein TStringList-Objekt zum Speichern. Das Suchen der Keys geht über IndexOf.
Beim BCB6 kann man hier einstellen ob es CaseSensitive sein soll oder nicht. Das gibts aber beim BCB5 noch nicht. Ich weiß jetzt nicht genau wie IndexOf arbeitet.
TIniFile und Konsorten verwenden die API-Funktionen und die unterscheiden Gross/Klein nicht.
-
hm, leider auch nicht:
(section) key=val1 (Section) key=val2 (SeCtion) key=val3
int main() { TMemIniFile* ini( new TMemIniFile( "c:/temp/grossklein.ini")); std::cout << ini->ReadString("section","key",""); std::cout << ini->ReadString("Section","key",""); std::cout << ini->ReadString("SeCtion","key",""); }
Liefert immer 'val1'. Geht also nicht. ME hängt das doch TStringList, weil das nicht zwischen groß und klein unterscheidet, oder? Die WinAPI-Funktionen würden das schon machenen ... ?
-
Dir ist aber schon klar, dass in ini-Dateien die Sections mit [ und ] getrennt werden?
Was währe denn so schlimm an einem Prefix bzw. warum brauchst du auf Teufel komm raus case sensitivity? Windows ist nun mal ein OS, dass meist case insensitive arbeitet.
-
Die WinAPI-Funktionen unterscheiden nicht zwischen Gross und Klein.
siehe z.Bsp. GetProfileString
Die wird da unter anderem verwendet. Microsoft unterstützt die IniFile-Funktionen eigentlich nur noch aus Kompatibilitätsgründen und empfiehlt die Registry zu verwenden.
TStringList sollte eigentlich Gross/Klein unterscheiden.PS: Habs gerade bein BCB5 getestet. IndexOf unterscheidet nicht zwischen Gross/Klein. Geht so also auch nicht. Da mußt du dir wohl was eigenes basteln.