Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Zeilenposition in Datei verändern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 25.07.2011, 22:04    Titel: Zeilenposition in Datei verändern Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.07.2011, 22:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 25.07.2011, 22:27    Titel: Antworten mit Zitat

Falsche Antwort, ich editiere, sobald ich fertig bin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 25.07.2011, 22:43    Titel: Antworten mit Zitat

Hmm ok das klappt soweit. Aber was mache ich, wenn ich in der Datei einige Zeilen zurückspringen will?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 25.07.2011, 22:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 26.07.2011, 11:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.07.2011, 11:42    Titel: Antworten mit Zitat

Danke, aber ich habe es mittlerweile anders lösen können. Ich springe via Goto( verwundert )zu dem Punkt zurück, bei dem die Datei geöffnet und eingelesen wird und überspringe dann wieder die Zeilen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 26.07.2011, 12:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.07.2011, 12:52    Titel: Antworten mit Zitat

Ich nutze jetzt auch MOD's Lösung. Die Lösung mit Goto funktioniert nicht ganz so, wie ich es erwartet habe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 01.08.2011, 00:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz