File Frage
File Frage
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!!
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!!
- sharkpeter
- Beiträge: 474
- Registriert: 29.08.2004 16:18
- Wohnort: Dresden
- Kontaktdaten:
Hallo DarkSaga,
lies den Inhalt doch in ein dimensioniertes Feld ein, sofern du die Anzahl der Einträge kennst:
Dann kennst du ja den Ort des jeweiligen Inhaltes.
Oder wenn du die Anzahl nicht kennst, machst du es halt über LinkedList
Gruß Jens
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
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
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64
Nichts wissen macht nichts, sich dumm stellen aber schon.
Nichts wissen macht nichts, sich dumm stellen aber schon.
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:
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.

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()

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.

- 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
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.
@Sunny
Textzeilen enden nicht immer mit Zeilenvorschub und Wagenrücklauf. Nur unter Windows werden m e i s t beide verwendet.
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.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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...

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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- sharkpeter
- Beiträge: 474
- Registriert: 29.08.2004 16:18
- Wohnort: Dresden
- Kontaktdaten:
- 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
@Sharkpeter
Ich wollte ja auch nur erreichen, das er seine Logik noch einmal durchdenkt
Ich wollte ja auch nur erreichen, das er seine Logik noch einmal durchdenkt

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.

Ich hab doch geschrieben dass es sich auf Windows bezieht. Ich weiß dass es unter Linux oder Mac anders aussieht.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.

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)lies den Inhalt doch in ein dimensioniertes Feld ein, sofern du die Anzahl der Einträge kennst:
Zuletzt geändert von Ynnus am 21.11.2004 14:56, insgesamt 1-mal geändert.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Jap, da haste wohl recht.Rings hat geschrieben:die FastFileText - Library wäre hier sicherlich von Vorteil .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.