Variablen aus Dateien??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

paD

Betreff: Variablen aus Dateien??

BeitragMo, März 13, 2006 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
option = OpenFile("playersetup.dat")

Repeat
ReadLine(option)
Until Eof(option)


das ist der code, kann ich das nicht irgendwie so machen das ich jetzt in der datei schreibe:

nickname=paD

das die variable "nickname" in B3D nun auch den wert "paD" hat?

wäre nett wenn mir jemand helfen kann Smile

paD
http://www.spaceman-world.de

Smokie

BeitragMo, März 13, 2006 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

Code: [AUSKLAPPEN]

Variable=readline(datei$)


Du musst dann die Zeilen halt einzeln auslesen.

Gruß
Smokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

nX^

BeitragMo, März 13, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du liest alles aus aber speicherst das nicht in eine Variable.

Code: [AUSKLAPPEN]
option = OpenFile("playersetup.dat")

name$=ReadLine(option)
Closefile(option)


Wenn du aber nickname=paD haben möchtest dann musst du den Teil auslesen und den String zerlegen in nickname und den parameter.

EDIT: Verdammt da war einer schneller Very Happy
 

paD

BeitragMo, März 13, 2006 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie zerlege ich das?

also in der datei stehen ja noch mehr dinge drin, also zeile für zeile...

nickname=paD
clan=baDboyS


wenn ich nun die datei öffne sollte die variable "nickname" halt den wert "paD" haben und "clan" sollte den wert "baDboyS" erhalten..

kann mir da jemand helfen?
http://www.spaceman-world.de
 

HW

BeitragMo, März 13, 2006 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das Zeile für Zeile dasteht, ist eine Repeatschleife dafür ungeeignet.
Code: [AUSKLAPPEN]
file=OpenFile("filename.txt")
nickname$=ReadLine$(file)
clan$=ReadLine$(file)
...
CloseFile file

skey-z

BeitragMo, März 13, 2006 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
benutze dazu den Befehl instr(String$, GesuchtesZeichen$(zb "="))
das liefert dir die position von "=" in dem string und von da an kannst du dann mit mid$(String$, Anfang%, Ende%) alles nach dem auslesen und in die Variable nickname etc. speichern
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

paD

BeitragMo, März 13, 2006 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
und wenn ich das gemacht habe, wie kann ich dann der variable "nickname" auch den namen "nickname" geben..

also der name wird ja in der datei festgelegt und wird vorher nicht in blitz3d definiert..

so eig. sollte es dann ne variablen datei werden..
http://www.spaceman-world.de

Dante

BeitragMo, März 13, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würds so lösen^^

Code: [AUSKLAPPEN]
Global nickname$,clan$

option = OpenFile("playersetup.dat")

While Not Eof(option)
   info$=ReadLine(option)
   test$(info$)
Wend

Print nickname$
Print clan$

CloseFile(option)

WaitKey()
End

Function test$(txt$)
txt$ = Trim(txt$)

dummy$ = Left(txt$,Instr(txt$,"=")-1)

Select dummy$
   Case "nickname"
   nickname$ = Right(txt$,Len(txt$)-Len(dummy$)-1)
   Case "clan"
   clan$ = Right(txt$,Len(txt$)-Len(dummy$)-1)
End Select

End Function


Edit:
Hier noch ein Code von mir^^
eventuell besser zu gebrauchen.

Code: [AUSKLAPPEN]
Global datei$ = "playersetup.dat"

nickname$ = SelectInfo$("nickname")
clan$ = SelectInfo$("clan")

Print "Nickname: " + nickname$
Print "Clan: " + clan$

WaitKey()
End

Function SelectInfo$(txt$)
Local s_info$,ok = 0

txt$ = Trim(txt$)

option = OpenFile(datei$)

While Not Eof(option)
info$=ReadLine(option)
If Instr(info$,txt$)
s_info$ = info$
ok = 1
Exit
EndIf
Wend

CloseFile(option)

If ok = 1
dummy$ = Left(s_info$,Instr(s_info$,"=")-1)
Return Right(s_info$,Len(s_info$)-Len(dummy$)-1)
Else
Return ""
EndIf

End Function
  • Zuletzt bearbeitet von Dante am Mo, März 13, 2006 19:03, insgesamt einmal bearbeitet

StepTiger

BeitragMo, März 13, 2006 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
mach doch:

Code: [AUSKLAPPEN]
x=readLine(datei$)
if left(x,9)="nickname=" then nickname=right(x,len(x)-9)


und so weiter

*edit* seine version ist besser

5k41

BeitragMo, März 13, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
hatte letztens ein ähnliches Problem desswegen hab ich mir ne nette Funktion geschrieben! Hier ist sie!
Code: [AUSKLAPPEN]

;-----------------------------------------
;SPLITTS A STRING LIKE YOU WANT
;-----------------------------------------
Function stringSplitt$(strg$,char$,selection%)

 Local newstrg$=""
 Local count%=0

 If Instr(strg$,char$)>0 Then

  For i%=1 To Len(strg$)
 
   If Mid(strg$,i%,1)=char$ Then count%=count%+1:i=i+1

   If count%=selection% Then newstrg$=newstrg$+Mid(strg,i%,1)
   If count%>selection% Then Exit

  Next

 Else
  newstrg$=strg$
 EndIf

 Return newstrg$

End Function

Einfach den Strg das"splittzeichen" und dann null für links eins für rechts 2 für rechts von recht (wenn mehr als einmal das zeichen auftaucht) usw!

Viel Spaß^^
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

paD

BeitragMo, März 13, 2006 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
5k41 hat Folgendes geschrieben:
Hi!
hatte letztens ein ähnliches Problem desswegen hab ich mir ne nette Funktion geschrieben! Hier ist sie!
Code: [AUSKLAPPEN]

;-----------------------------------------
;SPLITTS A STRING LIKE YOU WANT
;-----------------------------------------
Function stringSplitt$(strg$,char$,selection%)

 Local newstrg$=""
 Local count%=0

 If Instr(strg$,char$)>0 Then

  For i%=1 To Len(strg$)
 
   If Mid(strg$,i%,1)=char$ Then count%=count%+1:i=i+1

   If count%=selection% Then newstrg$=newstrg$+Mid(strg,i%,1)
   If count%>selection% Then Exit

  Next

 Else
  newstrg$=strg$
 EndIf

 Return newstrg$

End Function

Einfach den Strg das"splittzeichen" und dann null für links eins für rechts 2 für rechts von recht (wenn mehr als einmal das zeichen auftaucht) usw!

Viel Spaß^^



den versteh ich nicht so ganz.. oder ihr versteht vielleicht mein problem nicht..


datei:
nickname=paD
clan=blabla
lx=10
ly=457
lz=417
usw...

die ganzen variablen brauch ich in bb..
also kann ich jetzt nicht alle variablen in bb vorher definieren.. das sind kanpp 100 - 200 variablen...

und jetzt muss ich halt jede variable die in der datei gespeichert sind in BB bekommen..
http://www.spaceman-world.de

5k41

BeitragMo, März 13, 2006 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
achso...muss es denn jedesmal beim beim Starten die Variablen laden, oder reichts einmal beim Kompilieren der .exe? wenns ein mal beim Kompilieren reicht, dann benutz Include ansonsten wird das was du tun willst schwierig!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Florian

BeitragMo, März 13, 2006 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


Type TVar
 Field Name$
 Field Wert$
End Type

Global VAR.TVAR


Load_VAR "VAR.TXT"

Z=MilliSecs()
For M=1 To 1000
Print Get_Var(100)
Next
Print MilliSecs()-Z

WaitKey


Function Load_VAR(Dateiname$)
 FileNr=ReadFile(Dateiname$)
 If FileNr=0 Then Return

 While Not(Eof(FileNr))
  Zeile$=ReadLine$(FileNr)
  Pos=Instr(Zeile$,"=")
  If Pos>1 Then
   Varname$=Left$(Zeile$,Pos-1)
   Varwert$=Mid$(Zeile$,Pos+1)
   New_VAR Varname$,Varwert$
  EndIf
 Wend

 CloseFile FileNr
 Return True
End Function

Function Save_VAR(Dateiname$)
 FileNr=WriteFile(Dateiname$)

 If FileNr=0 Then Return False 
 For Var=Each TVar
  WriteLine FileNr,Var\Name$+"="+Var\Wert$
 Next
 CloseFile FileNr
 Return True 

End Function

Function New_VAR(Varname$,Varwert$)
 Var=New TVAR
 Var\Name$=Lower$(Varname$)
 Var\Wert$=Varwert$
End Function

Function Delete_VAR(Varname$)
 Varname$=Lower$(Varname$)
 For Var=Each TVar
  If VAR\Name$=Varname$ Then
   Delete Var
   Return True
  EndIf
 Next
 Return False
End Function

Function Get_VAR$(Varname$)
 Varname$=Lower$(Varname$)
 For Var=Each TVar
  If VAR\Name$=Varname$ Then
   Return Var\Wert$
  EndIf
 Next
End Function

Function Set_VAR(Varname$,Varwert$)
 Varname$=Lower$(Varname$)
 For Var=Each TVar
  If VAR\Name$=Varname$ Then
   Var\Wert$=Varwert$
   Return True
  EndIf
 Next
 Return False
End Function

Function Lower$(S$)
 Slen=Len(S)
 If Slen>0 Then
  For P=1 To Slen
   ASCII=Asc(Mid$(S$,P,1))
   If Ascii>64 And Ascii<92 Then
     Ascii=Ascii+32
    ElseIf Ascii=220 Then ;ü
     Ascii=252     
    ElseIf Ascii=196 Then ;ä
     Ascii=228 
    ElseIf Ascii=214 Then ;ö
     Ascii=246
   End If
   R$=R$+Chr$(ASCII)
  Next
  Return R$
 End If
End Function

Das große BlitzBasic Community Tutorial
Stackmaschine 2.0
  • Zuletzt bearbeitet von Florian am Mo, März 13, 2006 23:43, insgesamt einmal bearbeitet

Cardonic

BeitragMo, März 13, 2006 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ist das nicht viel langsamer als "echte" Variabeln ?

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

BladeRunner

Moderator

BeitragDi, März 14, 2006 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist meiner Meinung nach ein schönes Beispiel dafür wie man ein kleines (durch Faulheit oder egal was sonst entstandenes) Problem zu einem fetten Kuchen aufblähen kann.
Ob mann nun in seiner VariablenDatei 200 Namen einhämmert oder das direkt im .bb tut, spielt doch keine Rolle.
Und normalerweise sollte ein Projekt durchdacht genug sein um vorher die darin enthaltenen Variablen zu kennen.

Florians (sehr schöne) Lösung ist ein interessanter Kunstgriff, aber im "normalen" Falle wird man das kaum benötigen, es sei denn man möchte selbst komplexe Inhalte parsen.
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
 

paD

BeitragDi, März 14, 2006 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, mit faulheit hat das wohl weniger zu tun..vielleicht viel mehr als savedatei.. als ne mapdatei... oder sonst was..aber du wirst das schon wissen Wink
http://www.spaceman-world.de

BladeRunner

Moderator

BeitragMi, März 15, 2006 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles Dinge für die ich nicht on-the-fly Variablen erstellen muss. Mit etwas Planung geht das so. Und wenn es Dir zu mühseelig ist jeden Identifier von Hand einzugeben schreib Dir ein kleines Programm welches die Werte abfragt und an eine Datei Deiner Wahl anhängt. Sollte in maximal einer halben Stunde zu Schaffen sein.
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group