Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 25.07.2011, 22:04 Titel: Zeilenposition in Datei verändern |
|
|
Hi
Ich benötige für ein Programm die Möglichkeit, in einer Datei, die gerade eingelesen wird, einige Zeilen zu überspringen. Das will ich möglichst nicht so machen, dass ich jede Zeile in einem Array abspeichere. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.07.2011, 22:25 Titel: |
|
|
dann speichere die eingelesene zeile halt nicht?
Code: |
dim as string temp
line input #1, temp 'und nix weiter mit temp machen, oder einfach basierend auf den inhalt irgendwas oder was anderes tun...
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 25.07.2011, 22:27 Titel: |
|
|
Falsche Antwort, ich editiere, sobald ich fertig bin |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 25.07.2011, 22:43 Titel: |
|
|
Hmm ok das klappt soweit. Aber was mache ich, wenn ich in der Datei einige Zeilen zurückspringen will? |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 25.07.2011, 22:52 Titel: |
|
|
Zurücklesen gibt es nicht, zumindest nicht im Textmodus. Entweder du gehts in den Binärmodus, da kannst du springen wie du willst, allerdings hast du halt kein zeilenweises Einlesen, oder du erstellst ein Array und lädst alle Zeilen da rein. |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 26.07.2011, 11:32 Titel: |
|
|
Zitat: | Zurücklesen gibt es nicht, zumindest nicht im Textmodus. |
Ein Beispiel zum Zuruecklesen:
Code: | Declare Function ReadNextLine ( ByVal FF As Integer ) As String
Declare Function ReadPrevLine ( ByVal FF As Integer, ByVal bracke As UByte = 10, ByVal Length As Integer = 2 ) As String
Dim FF As Integer
Dim Shared LineStart As Integer
FF = FreeFile
Open "Test.txt" For Input As #FF
Print "Druecke N um in die naechste Zeile zu kommen"
Print "und P um in die zuvor und e zum beeenden."
Print ReadNextLine ( FF )
Do
Select Case InKey
Case "n"
Print ReadNextLine ( FF )
Case "p"
Print ReadPrevLine ( FF )
Case "e"
Exit Do
End Select
Sleep 100,1
Loop
Close #FF
Function ReadNextLine ( ByVal FF As Integer ) As String
Dim Stri As String
LineStart = Seek ( FF )
Line Input #FF, Stri
Return Stri
End Function
Function ReadPrevLine ( ByVal FF As Integer, ByVal bracke As UByte = 10, ByVal Length As Integer = 2 ) As String
Dim Position As Integer
Dim Char As UByte
Position = LineStart
For Position As Integer = LineStart-1-Length To 0 Step -1
Get #FF, Position, Char
If Char = bracke Or Position = 0 Then
LineStart = Position+1
Exit For
EndIf
Next
Seek #FF, LineStart
Return ReadNextLine ( FF )
End Function
|
|
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 26.07.2011, 11:42 Titel: |
|
|
Danke, aber ich habe es mittlerweile anders lösen können. Ich springe via Goto( )zu dem Punkt zurück, bei dem die Datei geöffnet und eingelesen wird und überspringe dann wieder die Zeilen. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 26.07.2011, 12:19 Titel: |
|
|
Wenn es nicht zeitkritisch ist, dann kann man das durchaus machen bei ein paar Zeilen, GOTO kann ich aber nur verurteilen, da gibt es bessere Möglichkeiten, die man als Programmierer kennen und anwenden sollte. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 26.07.2011, 12:52 Titel: |
|
|
Ich nutze jetzt auch MOD's Lösung. Die Lösung mit Goto funktioniert nicht ganz so, wie ich es erwartet habe. |
|
Nach oben |
|
 |
Sannaj
Anmeldungsdatum: 19.12.2010 Beiträge: 35
|
Verfasst am: 01.08.2011, 00:55 Titel: |
|
|
Glaub ich dir. Die Funktion ließt trotzdem weiter. Der ist es zimlich egal wo ihr Aufruf im Quelltext stand. Du kannst aber mit "i = seek(file)" jederzeit die Prosition speichern und dann mit der seek(file, i) Anweisung dahin zurückkehren. |
|
Nach oben |
|
 |
|