Gekoppelter-Reader (Liest Ini's, sowie Skripte)
Übersicht

![]() |
TheMatrixBetreff: Gekoppelter-Reader (Liest Ini's, sowie Skripte) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich mitbekommen habe, dass viele oft ihre Optionen und Skripte in externe Dateien des Typs INI oder anderer auslagern, habe ich mir mal gedacht ich stelle hier einen gekoppelten Reader ins Codearcive, der beides mit einem Zug unterstützt.
Bei diesem gekoppelten Reader stehen viele Möglichekeiten offen, eine Ini-Datei, oder eine Skript Datei zu gestalten. Ihr könnt beliebig viele Leerzeilen zwischen den einzelnen Befehlen setzen, Remarks setzen und eure Befehle mit Leerzeichen vom Rand wegversetzen. Leerzeichen sind auch zwischen Befehl und Wert erlaubt. Wenn ihr eine Ini-Datei oder! auch ein Skript schreibt, dann könnt ihr zusätzlich noch verschiedene Sektionen bestimmen. Befehle: read_ini(datei,[sektion],[key]) Erwartet eine Datei zum auslesen und gibt so lange eine 1 zurück, wie noch Befehle in der Ini vorhanden sind. Existiert die Datei nicht, so gibt es eine Fehlermeldung. Wird für Sektion etwas angegeben, so wird nur ein bestimmter Teil der Datei ausgelesen. Durch Angabe eines Schlüssels ist es möglich, nur einen bestimmten Wert auszugeben. ini_befehl$ Hier wird immer der aktuell ausgelesene Befehl ausgelagert ini_wert$ Das der dazugehörige Wert zum Befehl. Die 4 Globalen Variabeln sind leider nötig, damit das ganze funktioniert. Der Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer BackBuffer() ; - Die INI-Reader Variabeln - Global ini_file$, ini_file_nr, ini_befehl$, ini_wert$, ini_sektion$ ; --- Deine Programmschleife While Not KeyHit(1) While read_ini("c:\test.ini","Der Skript","Steuerung") Print ini_befehl$ + " ist gleich = " + ini_wert$ Wend Flip Wend ; --- Ende der Programmschleife ; ---- Der Teil, der die Ini-Datei verwaltet Function read_ini(file$, sektion$="", key$="") If FileType(file$)>0 If file$<>ini_file$ Or sektion$<>ini_sektion$ ini_file$ = file$ : ini_sektion$ = sektion$ If ini_file_nr>0 Then CloseFile ini_file_nr ini_file_nr = ReadFile(file$) ; Es wird bis zur Sektion gelesen If sektion$<>"" While Not Eof(ini_file_nr) st$ = Trim$(ReadLine$(ini_file_nr)) : st$ = Mid$(st$,2,Len(st$)-2) If st$ = sektion$ f=1 If key$<>"" Then find_key=1 Exit End If Wend ; Fehlerausgabe, falls eine falsche Sektion oder gefunden wurde. If f=0 Then Locate 0,0 : Color 255,80,80 : Print "ERROR: SEKTION "+sektion$+" DOES Not EXIST" : ini_file_nr=0 End If End If .ini_repeat If ini_file_nr>0 st$ = readiniline$(ini_file_nr) : If st$ ="" Then ini_befehl$="" : ini_wert$="" : ini_file_nr=0 : Return 0 ; Der Reader ist auf eine andere Sektion gestossen If Left$(st$,1)="[" ; Wenn eine Sektion angegeben wird beendet If ini_sektion$<>"" Then ini_file_nr = 0 : ini_befehl$="" : ini_wert$="" : Return 0 ; Wurde keine Sektion angegeben dann lese weiter aus If ini_sektion="" If Eof(ini_file_nr)=0 Then Goto ini_repeat Else ini_file_nr=0 : ini_befehl$="" : ini_wert$="" : Return 0 Else End If End If For a=1 To Len(st$) If Mid$(st$,a,1)="=" Then ini_befehl$=Trim$(Left$(st$,a-1)) : ini_wert$=Trim(Right$(st$,Len(st$)-a)) : Exit Next If Eof(ini_file_nr) Then ini_file_nr=0 If find_key=1 If ini_befehl$ <> key$ If Eof(ini_file_nr)=0 Then Goto ini_repeat Else ini_file_nr = 0 : Return 1 End If End If Return 1 End If Else Color 255,80,80 : Locate 0,0 Print "INI FILE "+file$+" DOES NOT EXIST" End If End Function Function ReadIniLine$(datei) st$ = Trim$(ReadLine$(datei)) ; Remarks überlesen While Left$(st$,1)="*" Or st$="" Or remstart=1 Or Left$(st$,2)="/*" Or Left$(st$,1)=";" 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 ; ---- Ende der Ini-Verwaltung So könnte Beispielsweise eine Ini-Datei aussehen: Code: [AUSKLAPPEN] [Sektion1] Option1 = Vollbild ; Jetzt kommt eine 2. Option Option2 = Demoversion [Mauseinstellungen] ; Die Mausdarstellung maus_bild = 0 ; Ende Ein Skript könnte nun so aussehen: Code: [AUSKLAPPEN] * Ein BeispielSkript Leben = 1 Standard_name = Manu /* Die Steuerung Es gibt folgende Parameter 1. Maus 2. Joystick 3. Tastatur */ Steuerung = Maus * So ,dass wars damit Eine Ini und Skript in einem: Code: [AUSKLAPPEN] ; Der Ini-Teil [Optionen] Vollbild = 1 Maus = 1 [Art] Demo = 1 ; Der Sktiptteil *Jetzt gehts los! [Der Skript] Standarad_name = Manu /* Die Steuerung Es gibt folgende Parameter 1. Maus 2. Joystick 3. Tastatur */ Steuerung = Maus * So, nun bin isch aber fertig:) |
||
- Zuletzt bearbeitet von TheMatrix am Mo, Nov 27, 2006 2:39, insgesamt 5-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist keine gültige .ini
Du solltest das Ganze umbenennen, denn den Zweck den Du mit dem Titel suggerierst erfüllt der Code nicht. Zudem ist er (wie anderenorts festgestellt) aufgrund der Globalen etc. nicht sehr vorteilhaft. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, jetzt habe ich aber hoffentlich das Problem gelöst. Wenn ihr zufrieden damit seid, dann bitte ich euch um einen kurzen Kommentar.
mfg, TheMatrix Edit: Ich hatte noch die Option vergessen, wenn man exakt nur auf einen bestimmen Schlüssel innerhalb einer Sektion verweisen möchte. Dies wurde nun entsprechend gefixt. |
||
°_° °.° °~° °v° .. -.- |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group