Seite 1 von 2
File Frage
Verfasst: 21.11.2004 14:21
von DarkSaga
Hi All!
Hab ne kleine Frage zum Thema File (ist bestimmt voll easy zu lösen bin aber leider nicht drauf gekommen ~.~):
Also ich habe ein Datei mit OpenFile() und WriteSringN() erstellt. Nun möchte ich das beim lesen dieser Datei die 2. Zeile dann die 3. und dann die erste Zeile gelesen wird. Kann ich das mit einem einfachen Befehl sagen??
Danke jetztschonma!!
Verfasst: 21.11.2004 14:37
von sharkpeter
Hallo DarkSaga,
lies den Inhalt doch in ein dimensioniertes Feld ein, sofern du die Anzahl der Einträge kennst:
Code: Alles auswählen
Dim irgendwas.s(xyz)
a=0
If ReadFile(1,name)
Repeat
irgendwas(a)=ReadString()
a=a+1
Until Eof(1)
CoseFile(1)
EndIf
Dann kennst du ja den Ort des jeweiligen Inhaltes.
Oder wenn du die Anzahl nicht kennst, machst du es halt über LinkedList
Code: Alles auswählen
NewList irgendwas.s()
If ReadFile(1,name)
Repeat
AddElement(irgendwas())
irgendwas=ReadString()
Until Eof(1)
CoseFile(1)
EndIf
_Anzahl=CountList(irgendwas())
ResetList(irgendwas())
For a = 1 to _Anzahl
NextElement(irgendwas())
Debug irgendwas()
next a
Gruß Jens
Verfasst: 21.11.2004 14:41
von Ynnus
Eine Zeile in Windows endet immer mit den ASCII-Zeichen 13 und 10. Also kannst du nun so weit in der Datei vorspringen, bis du beim 2ten Mal Auftauchen dieser Zeichen bist, also kurz vorm Sprung in die 3te Zeile. Dann noch die Positon um 2 erhöhn (da ja noch diese 2 Zeichen da stehen) und dann kannst du die 3te Zeile auslesen. Mit Findstring() kann man danach suchen.
Andere Möglichkeit wäre, 2 mal "leer" auszulesen, und den dritten Wert zu speichern.
ALso so:
Code: Alles auswählen
;datei öffnen...
readstring()
readstring()
inhalt$ = readstring()
Das heißt dann, er ließt 3 Zeilen aus, aber nur die 3te merkt er sich. Ist natürlich unnötiges Auslesen der 2 Zeilen welche wir nicht brauchen, aber möglicherweise schneller als nach dem Zeilenumbruch zu suchen und sich genau die gesuchte Zeile zu suchen (und auf jeden Fall einfacher).

Dann könntest du per fileseek(0) an den Anfang der Datei kehren und wieder die gewünschten Zeilen lesen. Also dann eine leer und die nächste richtig, dann hast du die 2te Zeile. Dann wieder zurück und die erste Zeile auslesen, dann hast du erst die 3te, dann die 2te und dann die 1te. Die Reihnfolge kannst du dir natürlich beliebig aussuchen.

Verfasst: 21.11.2004 14:47
von ts-soft
Das Versteh ich nicht (diesen Aufwand). Es ist doch egal in welcher Reihenfolge ich die drei Zeilen auslese. Bearbeiten kann ich sie doch hinterher in einer anderen Reihenfolge!
@Sunny
Textzeilen enden nicht immer mit Zeilenvorschub und Wagenrücklauf. Nur unter Windows werden m e i s t beide verwendet.
Verfasst: 21.11.2004 14:48
von Kaeru Gaman
das ist eine findige lösung, sunny.
allerdings würde ich persönlich die lösung mit der linked list von sharkpeter vorziehen,
das ist weniger hin- und her- gelese.
[edit]@ts-soft: sunny hat doch nur genau auf die frage geantwortet...
Verfasst: 21.11.2004 14:50
von Rings
die FastFileText - Library wäre hier sicherlich von Vorteil .
Verfasst: 21.11.2004 14:50
von sharkpeter
@ts-soft,
klar ist es egal, ich würde auch immer erst alles auslesen und dann so anordnen wie ich es brauche, aber das war ja nicht die Frage.
Gruß Jens
Verfasst: 21.11.2004 14:53
von ts-soft
@Sharkpeter
Ich wollte ja auch nur erreichen, das er seine Logik noch einmal durchdenkt

Verfasst: 21.11.2004 14:54
von Ynnus
ts-soft hat geschrieben:Das Versteh ich nicht (diesen Aufwand). Es ist doch egal in welcher Reihenfolge ich die drei Zeilen auslese. Bearbeiten kann ich sie doch hinterher in einer anderen Reihenfolge!
@Sunny
Textzeilen enden nicht immer mit Zeilenvorschub und Wagenrücklauf. Nur unter Windows werden m e i s t beide verwendet.
Ich hab doch geschrieben dass es sich auf Windows bezieht. Ich weiß dass es unter Linux oder Mac anders aussieht.
lies den Inhalt doch in ein dimensioniertes Feld ein, sofern du die Anzahl der Einträge kennst:
Und die kannst du herausfinden indem du nach der Anzahl der enthaltenen chr(13)+chr(10) suchst (+1 zur Menge hinzuaddieren, denn meist wird am Ende des ganzen Textes ja Zeilenumbruch mehr gemacht)
Verfasst: 21.11.2004 14:54
von DarkDragon
Rings hat geschrieben:die FastFileText - Library wäre hier sicherlich von Vorteil .
Jap, da haste wohl recht.