Seite 1 von 1
Variable aus TextDatei interpretieren ?
Verfasst: 11.10.2006 22:19
von Glow
Hi
Ich steh grad auf dem Schlauch: Wie schaffe ich es, in einer Textdatei eine Variable zu speichern, und die im Program in einer Schleife zu interpretieren ?
Also, Z.B in der Textdatei steht:
MeinProgrammVerzeichniss + "\Data\Highscore.txt"
Im Program wird nun diese Zeile ausgelesen, und soll direkt als Pfad benutzt werden. Allerdings wird das nur als String behandelt, also 1:1 ausgegeben.
Hab ich da irgendwas übersehen ?
Gruß
Glow
Verfasst: 11.10.2006 22:32
von ts-soft
Deine Frage ist sehr ungenau
Willste eine numerische Variable einlesen, so:
a.l = val(readstring(....
oder einen String.
Vielleicht solltest Du Dir mal die Preferences Lib ansehen, damit ist es einfach Variablen zu speichern
Gruß
Thomas
Verfasst: 11.10.2006 22:38
von Glow
Das Ziel war/ist eigentlich einen String einzulesen, der sofort als absoluter Pfad akzeptiert wird.
also, z.B mit Readfile(0,ReadString())
ReadString() beinhaltet im Beispiel also: MeinProgrammVerzeichniss + "\Data\Highscore.txt" als String
Vorher im Program wurde die Variable MeinProgrammVerzeichniss z.B deklariert mit "C:\MeinProgramm"
ReadFile sollte also beim Aufruf Readfile(0,ReadString()) direkt zugreifen auf:
C:\MeinProgramm\Data\Highscore.txt
Das macht es aber nicht, da die Variable MeinProgrammVerzeichniss nicht interpretiert wird.
Ich habe das Problem jetzt etwas unelegant über ReplaceString gelöst. Das funktioniert zwar, ist aber halt nicht perfekt :/
Verfasst: 11.10.2006 22:46
von ts-soft
Verstehe es immer noch nicht. Meinste sowas:
Code: Alles auswählen
MeinProgrammVerzeichnis.s = "C:\MeinProgramm\"
If ReadFile(0, MeinProgrammVerzeichnis + "Data\Highscore.txt")
highcore.l = Val(ReadString(0))
CloseFile(0)
EndIf
?
Verfasst: 11.10.2006 22:59
von Glow
Nein, das ganze sollte so aussehen:
Code: Alles auswählen
MeinPfad.s = "C:\Windows\MeinProgram"
ReadFile(0,"Config.txt")
MeineConfig.s = ReadString()
CloseFile(0)
ReadFile(0,MeineConfig)
...
In der Config.txt steht folgendes:
Das Program liest also folgenden String ein: "MeinPfad\Data\MehrConfig.txt"
Nun soll es automatisch "MeinPfad" als "C:\Windows\MeinProgram" interpretieren, da dies ja vorher so deklariert wurde.
Das ist eigentlich schon alles

Verfasst: 11.10.2006 23:44
von Icke
Wenn ich richtig verstanden habe willst du eigenlich nur den eingelesenen String "MeinPfad\Data\MehrConfig.txt" gegen "C:\Windows\MeinProgram\Data\MehrConfig.txt" austauschen?
Code: Alles auswählen
MeinPfad.s = "C:\Windows\MeinProgram"
ReadFile(0,"Config.txt")
MeineConfig.s = ReadString() ; ="MeinPfad\Data\MehrConfig.txt"
CloseFile(0)
MeinPfad_neu.s=ReplaceString(MeineConfig.s,"MeinPfad",MeinPfad.s) ;="C:\Windows\MeinProgram\Data\MehrConfig.txt
"
ReadFile(0,MeinPfad_neu)
...
Verfasst: 12.10.2006 09:36
von NicTheQuick
@Glow:
Anders als mit ReplaceString() geht es nicht aus folgendem Grund:
Wenn dein Programm compiliert ist, dann gibt es keine Variablennamen
mehr, sondern nur noch Offsets und Pointer und ähnliches. Das heißt, wenn
dein Programm läuft, würde es gar nicht wissen, dass du eine Variable
namens "MeinPfad.s" hast.
Außerdem: Wenn da nie etwas anderes als MeinProgrammVerzeichnis in der
Datei steht, warum schreibst du dann nicht einfach nur "Data\MehrConfig.txt"
in die Datei und setzt deine "MeinProgrammVerzeichnis.s"-Variable vorne
dran? Dann musst du auch nichts umständlich ersetzen.
Verfasst: 12.10.2006 10:23
von Tafkadasom2k5
Code: Alles auswählen
MeinPfad.s = "C:\Windows\MeinProgram\"
ReadFile(0,"Config.txt")
MeineConfig.s = ReadString() ; ="Data\MehrConfig.txt"
CloseFile(0)
MeinPfad_neu.s=MeinPfad + MeineConfig;="C:\Windows\MeinProgram\Data\MehrConfig.txt
"
ReadFile(0,MeinPfad_neu)
Wäre das nicht viel sinniger als mit dem Replace? Okay, wenn er später so spezielle Sachen machen möchte wie "%OSPATH%/Win32" dann wäre es sinnvoll- aber bisher klingt es eher nach einfachem String zusammenwurschteln...
Gr33tz
Tafkadasom2k5
Edit: Upsa, ich habe NTQ leicht wiederholt

Sieh es als Unterstreichung an

Verfasst: 12.10.2006 21:37
von Glow
@Nic: Ok, das leuchtet mir jetzt ein, danke für die Erklärung. Es ist schon so, daß das Program am Ende viele Variablen interpretieren muss. Deswegen brauchte ich das ganze

Verfasst: 12.10.2006 21:53
von a14xerus
Aber ich denke ,wenn die Variablen sowieos im Programm da sind, kannst du doch Preferences benutzen (schau mal in die Hilfe) so kannst du dann das ganze mit Keywords machen.. is finde ich die einfachste lösung annähernd an dein Problem zu kommen