Springen in Dateien

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

schalli

Betreff: Springen in Dateien

BeitragMo, Dez 22, 2008 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich in Dateien springen, wenn diese nur aus Zeilen bestehen? (z.B. *.txt)
Also beispielsweise:
Ich bin in einer Datei in Zeile 1, will aber in Zeile 8
Gibt es da einen Befehl?

sheldon

BeitragMo, Dez 22, 2008 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
SeekFile
 

schalli

BeitragMo, Dez 22, 2008 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Beachte, dass ein Integerwert oder ein Floatwert 4 Byte verbrauchen. Short verbraucht nur 2 Byte. Ein String hat eine variable Länge. Erfolgt ein Schreibvorgang an der falschen Stelle, so können dann falsche Werte ausgelesen werden. Wird eine Position außerhalb der Dateilänge angegeben, so kommt es nicht zu einem Fehler.

"Ein String hat eine variable Länge."
So komme ich nicht weiter...
 

DjDETE

BeitragMo, Dez 22, 2008 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann lies doch einfach die Strings/Zeilen aus, ohne sie zu speichern.
MfG DeTe
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Tankbuster

BeitragMo, Dez 22, 2008 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben.
Wenn du in Zeile 8 Springen willst, musst du 7 Mal ReadLine() ausführen ohne den Inhalt zu speichern, und dann das Achte mal Speichern ^-^

Code: [AUSKLAPPEN]
Zeile=8
For i=1 to Zeile-1
ReadLine(stream)
Next
Inhalt=ReadLine(stream)


So, und schon hast du nur Zeile 8 Ausgelesen Wink


PS: Wenn du es ganz toll machen willst, und die Textdatei nicht während des Programmablaufes verändert wird, kannst du auch am Anfang des Programms alle Zeilen in einem Dim speichern.

Code: [AUSKLAPPEN]
Dim Zeile$(10)
For i=1 to 10
Zeile$(i)=ReadLine(stream)
Next


Wenn du dann eine bestimmte Zeile abfragen willst, kannst du es einfach so machen:
Code: [AUSKLAPPEN]
Print Zeile$(8)
Print Zeile$(2)


Das wäre zum Beispiel besser, wenn sowieso alles, was in der Datei steht einmal irgendwo im Programm verwendet wird. Sonst müsstest du jedesmal wieder alle Zeilen vor der Zeile, die die Infos enthält, auslesen, und das kostet Zeit Wink
Twitter
Download Jewel Snake!
Windows|Android

skey-z

BeitragMo, Dez 22, 2008 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tankbuster
mal angenommen, dass man nicht weiß, wieviele Zeilen das Dokument hat, dann kommt man mit deinem Code nicht weiter?
Außer man liest das Dokument vorher ein, speichert die Zeilen und verändert dann dementsprechend das Dim Feld oder man nimmt ein Feld von endlicher Größe, wobei man unter Umständen viel Speicher verschwendet.

Daher würde ich eher zu Types raten, damit ist man viel variabler.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

coolo

BeitragMo, Dez 22, 2008 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber auch langsamer. Ich würde zuerst alle Zeilen auslesen, dann ein Array so groß wie die Zeilenanzahl erstellen. Und dann das Dim damit füttern. Anfangs zwar langsam, aber dann schnell+Variabel
für die die sich nichts darunter vorstellen können:
Code: [AUSKLAPPEN]

dim zeilen$(0)
local zeilencount%
local stream%
stream=openfile("deinetxt.txt")
repeat
       zeilencount%=zeilencount+1
       readline(stream)
until eof(stream)
dim zeilen$(zeilencount%)
seekfile stream,0        ;setzt den Zeiger wieder an den Anfang
for i=0 to teilencount
       zeilen$(i)=readline(stream)
next
;fertisch


Dieses Prinzip verwende ich bei meiner Scriptsprache Simple Script 2. Und ich kann sagen das ist de Beste Methode.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat
 

DjDETE

BeitragMo, Dez 22, 2008 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist euch eigentlich bewusst, dass das überhaupt nicht Schallis Frage war, die ist nämlich schon längst beantwortet. Wink
MfG DeTe
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group