| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		Westbeam
 
  
  Anmeldungsdatum: 22.12.2009 Beiträge: 760
 
  | 
		
			
				 Verfasst am: 25.07.2011, 21: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, 21: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, 21: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, 21: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, 21: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, 10: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, 10: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, 11: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, 11: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: 31.07.2011, 23: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 | 
		 | 
	
	
		  | 
	
	
		 |