INI datei auslesen ???
Übersicht

x_toBetreff: INI datei auslesen ??? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich will gern ein INI datei mit einem texteditor erstellen im format:
scr_width=640 scr_height=512 scr_depth=16 . . . die soll auch in zukunft mit einem txteditor editierbar sein...allerdings akzeptiert BB+ nicht die weise strings einzulesen...auch die werte werden logischerweise nicht korrekt gelesen... hat jemand vorschläge wie man sowas unkompliziert lösen könnte..??? |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, leider verstehe ich dein Problem nicht so recht. Natürlich kann man mit B+ Strings auf diese Weise einlesen. Ich hoffe doch du verwendest ql:ReadLine?! Nichts desto Trotz gibts hier einen ganz brauchbaren Ini-Parser im Codearchiv. Die Anleitung dazu gibt es hier. Der hat zwar nicht ganz meinen Geschmack getroffen, aber diente als Grundlage für meinen eigenen.
cheers |
||
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab auch mal so ne Function geschrieben ... Ist zwar etwas ineffizient da sie die Datei jedes mal öffnet und wieder schließt, man brauch tdafür aber nur eine Function.
Und für normale zwecke (wenns net grad n ini-benchmark werden soll) reichts vollkommen. BlitzBasic: [AUSKLAPPEN] Function read_ini_variable$(file_path$, variable$, section$="") Und es ist sogar völlig egal, ob du die Section mit oder ohne Klammern angibst ![]() Naja, wenn sie jemand braucht, bitte. FBI |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ich hab auch mal meinen Ini-FileReader ausgekramt. Vielleicht könnt ihr damit auch noch was anfangen. Der kann Remarks überlesen, hat mit Zeilenumbrüche keine Probleme und ignoriert auch alle Leerzeichen vor oder nach den Befehlen.
read_ini(Datei) Gibt immer solange eine 1 aus, wie sie brauchbare Daten in der Datei findet ini_befehl$ = Enthält den nächsten Befehl aus der Datei ini_wert$ = Ist der Wert des Befehls Kurze Kommentare werden mit * angegeben Lange Kommentare mit /* und */ beendete. Hier mal der Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() Global ini_file$, ini_file_nr, ini_befehl$, ini_wert$ While Not KeyHit(1) While read_ini("c:\test.ini") Print ini_befehl$ + " ist gleich = " + ini_wert$ Wend Flip Wend Function read_ini(file$) If FileType(file$)>0 If file$<>ini_file$ ini_file$ = file$ If ini_file_nr>0 Then CloseFile ini_file_nr ini_file_nr = ReadFile(file$) End If If ini_file_nr>0 st$ = readl2$(ini_file_nr) : If st$ ="" Then ini_befehl$="" : ini_wert$="" : ini_file_nr=0 : Return 0 For a=1 To Len(st$) If Mid$(st$,a,1)="=" Then ini_befehl$=Left$(st$,a-1) : ini_wert$=Right$(st$,Len(st$)-a) : Exit Next If Eof(ini_file_nr) Then ini_file_nr=0 Return 1 End If Else Print "INI FILE DOESN'T EXIST" End If End Function Function readl2$(datei) st$ = Trim$(ReadLine$(datei)) ; Remarks überlesen While Mid$(st$,1,1)="*" Or st$="" Or remstart=1 Or Left$(st$,2)="/*" If Mid$(st$,1,2)="/*" Then remstart=1 If remstart=1 And (Left$(st$,2)="*/" Or Right$(st$,2)="*/") Then remstart=0 If Eof(datei) Then Exit Else st$ = Trim$(ReadLine$(datei)) Wend If Mid$(st$,1,1)="*" Then st$="" Return st$ End Function Und so könnte eine Test.ini aussehen Code: [AUSKLAPPEN] Wert1=123123 Wert2=123123 * Eine Erinnerungszeile! Na was kommt nu?=13 hui=1233 /* Wenn du viele Remarks hast, dann kannst du dich hier auslassen */ blaaaa = 1342123 * So Ende der Vorstellung Viel Spaß damit! mfg, TheMatrix |
||
°_° °.° °~° °v° .. -.- |
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@The Matrix:
Ich finde deine Version aus den folgenden Gründen nicht gut: 1. Globale Variablen - damit wird jedes große Projekt schnell unüberscihtlich und fehleranfälliger 2. das entspricht nicht dem, was der "Ini-Standard" vorschreibt. Lies dir mal den folgenden Beitrag bei Wikipedia durch: http://de.wikipedia.org/wiki/INI-Datei 3. Außerdem werden bei dir nicht mal Sektionen unterstützt. Das ist allerdings gerade einer der Hauptsachen der INI-Dateien Noch ein kleiner schönheitsfehler: Das was in der INI-Datei steht sind um himmels Willen keine Befehle! Du weißt schon was Befehle sind, oder? Das sind eher Variablen... Ich finde es schon sehr verwirrend, wenn du sowas INI-filereader nennst. Dann hast du das Prinzip der INI-Dateien wohl nicht ganz verstanden. Grundsätzlich sollte man Standards einhalten - dazu sind sie ja da ![]() Da du fast keine der Standarts einhältst, ist es meiner Meinung nach sehr unverantwortlich, so etwas hier her zu posten und auch noch INI-Filereader zu nennen... |
||
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+ Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+ |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, du hast vollkommen recht. Das Problem habe ich gefixt und steht nun im Code-Archive unter https://www.blitzforum.de/foru...445#219445.
mfg,TheMatrix |
||
°_° °.° °~° °v° .. -.- |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group