Variable aus TextDatei interpretieren ?
Variable aus TextDatei interpretieren ?
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
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
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
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
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

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 :/
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 :/
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nein, das ganze sollte so aussehen:
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
Code: Alles auswählen
MeinPfad.s = "C:\Windows\MeinProgram"
ReadFile(0,"Config.txt")
MeineConfig.s = ReadString()
CloseFile(0)
ReadFile(0,MeineConfig)
...
Code: Alles auswählen
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

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)
...
PB4 - frisch gezogen!
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
@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.
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.
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
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)
Gr33tz
Tafkadasom2k5
Edit: Upsa, ich habe NTQ leicht wiederholt



OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!