Springen in Dateien
Übersicht

schalliBetreff: Springen in Dateien |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
SeekFile | ||
schalli |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist euch eigentlich bewusst, dass das überhaupt nicht Schallis Frage war, die ist nämlich schon längst beantwortet. ![]() 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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group