*.ini Dateien auslesen
Übersicht

![]() |
das wurgelBetreff: *.ini Dateien auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich hab zwei Funktionen geschrieben mit denen man ini-dateien auslesen, schreiben und berteits vorhandene ini-dateien verändern kann. Fehlende Gruppen und Felder werden automatisch erstellt. Sie machen genau das selbe wie die Funktionen DLLGet- und WritePrivateProfileString$ von der blitzsys.dll. Code: [AUSKLAPPEN] Function ReadFromINI$(inifile$, section$, key$)
Local file=ReadFile(inifile$) Local section2$ Local gleichheitszeichen Local zeile$ If file=0 Then Return "" While Not Eof(file) zeile$=TrimLeft$(ReadLine(file)) eckige_klammer_zu=Instr(zeile$, "]") bla=Instr(zeile$, "[")=1 If Instr(zeile$, "[")=1 Then If eckige_klammer_zu Then section2$=Mid(zeile$, 2, eckige_klammer_zu-2) EndIf gleichheitszeichen=Instr(zeile$, "=") If gleichheitszeichen Then If section$=section2$ Then If Lower$(Mid(zeile$, 1, gleichheitszeichen-1))=Lower$(key$) Then CloseFile file : Return Mid$(zeile$, gleichheitszeichen+1, -1) EndIf Wend CloseFile file Return "" End Function Function WriteToINI$(inifile$, section$, key$, value$) Local file=ReadFile(inifile$) Local section2$ Local key2$ Local gleichheitszeichen Local z.zeile Local tha_key$ Local found=0 If file Then While Not Eof(file) zeile$=TrimLeft$(ReadLine(file)) z.zeile=New zeile z\inhalt$=Mid$(zeile$, gleichheitszeichen+1, -1) Wend CloseFile file EndIf file=WriteFile(inifile$) For z.zeile = Each zeile eckige_klammer_zu=Instr(z\inhalt$, "]") If Instr(z\inhalt$, "[")=1 Then If eckige_klammer_zu Then If section2$=section$ Then If Not found Then WriteLine file, key$+"="+value$ section2$=Mid(z\inhalt$, 2, eckige_klammer_zu-2) EndIf gleichheitszeichen=Instr(z\inhalt$, "=") key2$=Mid(z\inhalt$, 1, gleichheitszeichen-1) If gleichheitszeichen Then If section$=section2$ Then If Lower$(key$)=Lower$(key2$) Then z\inhalt$=key2$+"="+value$ found=True EndIf WriteLine file, z\inhalt$ Next If (Not found) Or First zeile = Null Then If section2$<>section$ Then WriteLine file, "["+section$+"]" WriteLine file, key$+"="+value$ EndIf CloseFile file Delete Each zeile End Function Function TrimLeft$(schdr$) Local i Local length=Len(schdr$) Local letter For i = 1 To length letter=Asc(Mid(schdr$, i, 1)) If letter<>32 And letter<>9 Then Return Mid(schdr$, i, -1) EndIf Next Return "" End Function Type zeile Field inhalt$ End Type mfg edit: Upps da war ein stop drin ![]() Ich habs entfernt. edit2: Und nen bug in WriteToINI hab ich auch noch enfernt^^ Jetzt müsste es funktionuggeln edit3: Die funktion und der type sind jetzt auch mit drin ![]() ![]() |
||
- Zuletzt bearbeitet von das wurgel am Do, Mai 28, 2009 13:53, insgesamt einmal bearbeitet
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey, das ist gut. Ich habe mich damit in letzter Zeit auch rumgeschlagen, und selbst was dazu geschrieben, aber man kann es ja trotzdem so nutzen. Was mir noch zum optimieren einfällt, wäre, dass man die Datei vorher lädt, und dann das Handle übergibt. Man kann ja mit Seekfile die Position an den Anfang schieben. Aber das ist ja an sich eine Arbeit von wenigen Minuten. Aber, wie gesagt, an sich eine nette Sache, wenn man keine Lust hat, sich das selbst zu coden.
EDIT: Tut es (leider) nicht, das hatte Ich beim überfliegen nicht bemerkt, die Funktion "TrimLeft" ist nicht dabei, und der Type "zeile" auch nicht. |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group