Ini-Dateien
Übersicht

girglBetreff: Ini-Dateien |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,kann man mit BlitzBasic ini-dateien erstellen und aus ihnen daten auslesen?Wenn ja,kann einer mal beschreiben wie sowas geht? | ||
![]() |
theBlade |
![]() Antworten mit Zitat ![]() |
---|---|---|
nutze Code: [AUSKLAPPEN] WriteFile und Code: [AUSKLAPPEN] ReadFile
|
||
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)
UTFSB -> (use the fuckin "suchen"-button) User posted image <- link -.- |
![]() |
General Alex |
![]() Antworten mit Zitat ![]() |
---|---|---|
In BlitzBasic kannst du alle möglichen Dateien erstellen und alle möglichen Dateiformate lesen, vorrausgesetzt, du hast sie mit BB oder dem Editor erstellt und sie nicht irgendwie verschlüsselt mit etwas anderem als BB. | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal eine Sinnvolle Antwort ![]() Code: [AUSKLAPPEN] ; MR 06.01.2003 ; Example usage: ;Print "INI Value = " + ReadINIValue("Archon", "Video", "Resolution", "800x600") ;bSuccess% = WriteINIValue("Archon", "Audio", "Music", "0") Function ReadINIValue$(sAppName$, sSection$, sKey$, sDefault$) ; Returns: INI Value (String) - The sDefault value is returned if no SECTION/KEY combination is found sSection = "[" + Upper$(Trim$(sSection)) + "]" sKey = Upper$(Trim$(sKey)) sFilename$ = CurrentDir$() + "\" + sAppName + ".ini" ; Retrieve the INI data sINI$= FileToString(sFilename) sUpperINI$ = Upper$(sINI) ; Speed up checks below ; Locate the SECTION, KEY and VALUE sValue$ = "" lSectionPos% = Instr(sUpperINI, sSection) If (lSectionPos <> 0) Then lKeyPos% = Instr(sUpperINI, sKey, (lSectionPos + Len(sSection) + 1)) If (lKeyPos <> 0) Then Local nextSection=Instr(sUpperINI, "[", (lSectionPos + Len(sSection) + 1)) If nextSection=0 Or (nextSection=>1 And lKeyPos<nextSection) lStartPos% = Instr(sUpperINI, "=", (lKeyPos + 1)) If (lStartPos <> 0) Then lEndPos% = Instr(sUpperINI, Chr$(0), (lStartPos + 1)) If (lEndPos <> 0) Then ; We have located the required INI VALUE! sValue = Trim$(Mid$(sINI, lStartPos + 1, (lEndPos - lStartPos - 1))) ; Now remove any leader/trailer quotes (") - ** OPTIONAL ** ;If Left$(sValue, 1) = Chr$(34) Then sValue = Mid$(sValue, 2) ;If Right$(sValue, 1) = Chr$(34) Then sValue = Mid$(sValue, 1, (Len(sValue) - 1)) End If End If EndIf ;KEY must inside section ! End If End If ; Return the value If (sValue <> "") Then Return sValue Else Return sDefault End Function Function WriteINIValue%(sAppName$, sSection$, sKey$, sValue$) ; Returns: True (Success) or False (Failed) sSection = "[" + Trim$(sSection) + "]" sUpperSection$ = Upper$(sSection) sKey = Trim$(sKey) sValue = Trim$(sValue) sFilename$ = CurrentDir$() + "\" + sAppName + ".ini" ; Retrieve the INI data (if it exists) sINI$= FileToString(sFilename) ; (Re)Create the INI file updating/adding the SECTION, KEY and VALUE bWrittenKey% = False bSectionFound% = False sCurrentSection$ = "" f = WriteFile(sFilename) If f = 0 Then Return False ; Create file failed! lOldPos% = 1 lPos% = Instr(sINI, Chr$(0)) While (lPos <> 0) sTemp$ =Trim$(Mid$(sINI, lOldPos, (lPos - lOldPos))) If (sTemp <> "") Then If Left$(sTemp, 1) = "[" And Right$(sTemp, 1) = "]" Then ; Process SECTION If (sCurrentSection = sUpperSection) And (bWrittenKey = False) Then bWrittenKey = CreateINIKey(f, sKey, sValue) End If sCurrentSection = Upper$(CreateINISection(f, sTemp)) If (sCurrentSection = sUpperSection) Then bSectionFound = True Else ; KEY=VALUE lEqualsPos% = Instr(sTemp, "=") If (lEqualsPos <> 0) Then If (sCurrentSection = sUpperSection) And (Upper$(Trim$(Left$(sTemp, (lEqualsPos - 1)))) = Upper$(sKey)) Then If (sValue <> "") Then CreateINIKey f, sKey, sValue bWrittenKey = True Else WriteLine f, sTemp End If End If End If End If ; Move through the INI file... lOldPos = lPos + 1 lPos% = Instr(sINI, Chr$(0), lOldPos) Wend ; Section wasn't found in the INI file - Append a new SECTION and create our KEY=VALUE line If (bWrittenKey = False) Then If (bSectionFound = False) Then CreateINISection f, sSection CreateINIKey f, sKey, sValue End If CloseFile f Return True ; Success End Function Function FileToString$(sFilename$) sString$ = "" f% = ReadFile(sFilename) If f <> 0 Then While Not(Eof(f)) sString = sString + ReadLine$(f) + Chr$(0) Wend CloseFile f End If Return sString End Function Function CreateINISection$(f%, sNewSection$) If FilePos(f) <> 0 Then WriteLine f, "" ; Blank line between sections WriteLine f, sNewSection Return sNewSection End Function Function CreateINIKey%(f%, sKey$, sValue$) WriteLine f, sKey + "=" + sValue Return True End Function |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also eine INI-Datei dient ja dazu, dem Programm zu dem sie gehört Variablen zu liefern.
Wenn man z.B. ein Spiel hat, könnte dort drin stehen, welcher Menüpunkt im Hauptmenü vorgewählt ist oder welches Farbschema verwendet wird. So kann man verschiedene Einstellungen, die man im Programm vornimmt abspeichern, damit sie beim nächsten start nicht verloren gehen. Das ist ja der Sinn von INI-Dateien. Und jetzt musst du dir halt überlegen, welche Variablen du sichern willst und musst sie abspeichern. Hier mal ein Beispiel aus meinem Snakespiel: Code: [AUSKLAPPEN] ; --- Konfiguration laden --- Function LoadConfig() File = OpenFile("Game.dat") If Not File = 0 Then Datei = ReadFile("Game.dat") For i = 0 To 3 Highscore(i) = ReadShort(Datei) Next Level = ReadByte(Datei) Speed = ReadByte(Datei) CloseFile Datei EndIf If File = 0 Then For i = 0 To 3 Highscore(i) = 0 Next Level = 0 Speed = 30 EndIf End Function ; --- Konfiguration laden --- ; --- Konfiguration speichern --- Function SaveConfig() Datei = WriteFile("Game.dat") For i = 0 To 3 WriteShort Datei, Highscore(i) Next WriteByte Datei, Level WriteByte Datei, Speed CloseFile Datei End Function ; --- Konfiguration speichern --- Die Datei die ich verwende heisst zwar "Game.dat", ist aber im Prinzip auch eine INI-Datei. Hier wird die zuletzt verwendete Spielgeschwindigkeit, der Level und auch die Highscores des Spiels gespeichert und beim Neustart wieder geladen. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Beim Showcase von BlitzCoders gibts gleich mehrere Bibliotheken zum Lesen von INIs. | ||
![]() |
BBPro |
![]() Antworten mit Zitat ![]() |
---|---|---|
@travis
eine ini datei dient allerdings auch dazu dass ziemlich jeder die daten über nen normalen editor ändern ann und zwar so dass er auch weis was er ändert. so dass da dann z.B. steht "BlutPartikel = 400" das wäre in deinem fall aber nicht der fall - ist also keine ini datei sondern einfach gesicherte daten. cu |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, schon klar. Man muss sich halt überlegen, wofür man das braucht.
Wenn man per Texteditor Änderungen vornehmen will, muss man es natürlich etwas aufwendiger machen. Code: [AUSKLAPPEN] ; Speichern WriteLine Datei, "Geschwindigkeit =" + Speed ; Laden Speed$ = ReadLine(Datei) Speed = Mid(Speed$, 19, 2) @ Edlothiol Muss eine INI-Datei nicht immer an das Programm angepasst sein. Wie kann man da allgemeine Lösungen entwerfen? Da würde ich doch lieber dazu raten ein eigenes Format zu entwickeln. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm, eigentlich denke ich dass eine INI - Datei immer das Format
Code: [AUSKLAPPEN] [Sektion 1]
hat. Oder nicht? Ich komme auf jeden Fall ganz gut damit zurecht.
name=wert name2=wert2 ; Kommentar |
||
ChristianH |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ini Dateien sind ideal zum Speichern von Daten. In BlitzEdit benutze ich fast nur Ini-Dateien. | ||
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
TheBlade,deine dumme antwort hättest dir auch in dein fettn hintern stecken können.
@Edlothiol yo genau so ein format mein ich danke schon mal an alle für die antworten,werde mal ein bischen probieren |
||
![]() |
HackyBetreff: @ Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nehm alles zurück! | ||
www.tidosoft.de.vu <-- Besuch uns!! |
- Zuletzt bearbeitet von Hacky am Mi, März 24, 2004 13:16, insgesamt einmal bearbeitet
graythread |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und wenn du deinen Post für sinnvoll hälst, dann fass du es doch mal zusammen.
Und außerdem find ich auch den Quellcode von Half Live voll viel zu lang und blöd, kann mir das einer mal auf 2 Zeilen bitte bringen ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Hacky
Der Source wurde nur von mir verbesesrt und erfüllt jetzt seinen Zweck . Wenn du meinst das du ihn zusammenfassen kannst und er danach noch läuft kannste ihn ja verschönern und ins Code Archiv hier stellen . [/quote] |
||
[SHM]StArMaStEr |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@girgl: die antwort von theBlade war nich dumm nur du bist es wenn du sie abweist. er hat dir mit den befehlen nur einen denkanstoß gegeben mit welchen befehlen du in eine datei schreiben kannst oder auslesen kannst. wieso sollte er dir einen kompletten code geben den vielleicht nichma verstehen würdest. und wie is das sprichwort nochma??
ich glaub "SELBST IS DER MANN" |
||
BB-coden was das Zeug hällt!!!! |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Oooops,
da staun ich aber ! Schau, schau, da hat wer was gelernt ! ![]() Toni |
||
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@[SHM]StArMaStEr
Auf die idee,dass ich irgendwann mal writefile und readfile benutzen muss,wär ich selber scho auch noch gekommen...code ja nich erst seit paar tagen Von Code war auch nicht die Rede,oder hab ich irgendwo einen verlangt? Mir gings ledeglich darum,das smir einer des prinzip erklärt,wie es geht,eine datei der Form [Bla] so x und y so z auszuwerten. Was is mir das dann für eine Hilfe,wenn jemand schreibt benutze writefile und readfile..WOW !!! JETZ WEISS ICH WIES GEHT DANKE !!! ok..mag sein,dass er wirklich versucht hat zu helfen,so wie ich den post hier interpretiert hab,klang des für mich aber eher wie ne verarsche. Falls dem nicht so sei bedaure ich das natürlich zutiefst und bitte um verzeihung ![]() |
||
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jede normale highscore is so geschrieben wie travis das gemacht hat! und jetzt mal ehrlich:
Code: [AUSKLAPPEN] [überkategorie1] wert1=a wert2=b wer brauch die überkategorie? naja bei spielen wie halflife, wo viele einstellungen so gespeichert werden, ist es nützlich aber ich glaub nicht das du über eine bildschirmseite schaffst bei einem selbstgecodeten spiel! |
||
Erare humanum est - Irren ist Menschlich |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group