title image


Smiley Re: vom Benutzer eingegebenen text in speichern
Hi,

es gibt mehrere Möglichkeiten, in Dateien zu schreiben bzw. sie zu lesen:



Du musst erstmal einen Dateikanal auswählen mit z.B. #1

(mit FreeFile bekommst Du automatisch die nächste freie Nr

z. B.: Dim DateiNr As Long

DateiNr = FreeFile)





1. Möglichkeit (sequentiell (Stück für Stück))

Schreiben:



Open "C:\HHHH.txt" For OutPut As #DateiNr

(Löscht eine bestehende Datei mit dem Namen und schreibt vom Anfang)

Open "C;\HHHH.txt" For Append As #DateiNr

(Öffnet eine bestehende Datei und schreibt angehängt ans Ende)



a)Write #DateiNr, Variable, Variable...

Close #DateiNr

(Schreibt die Variablen getrennt durch ein Komma in Datei und erzeugt erst nach der letzten Variablen in der Kette einen Zeilenvorschub. Ausserdem werden Strings, also Text automatisch in "" gesetzt, während Zahlenwerte nackt da stehen)



b)Print #DateiNr, Variable

Close #DateiNr

(Schreibt nach jedem Print einen Vorschub)



Lesen:

Open "C:\HHHH.txt" For Input As #DateiNr

Input #DateiNr, Variable, Variable...

Close #DateiNr

(Liest die Variablen bis zum Komma, dann wieder bis Komma...



Open "C:\HHHH.txt" For Input As #DateiNr

LineInput #DateiNr, Variable

Close #DateiNr

(Liest immer Zeilenweise ein, also bis zum nächsten Vorschub in der Datei)





2. Möglichkeit: (Benutzerdefiniert mit freiem Zugriff, also Random)



Schreiben und Lesen:

Open "C:\HHHH.txt" For Random As #DateiNr Len = Len(UserVariable(1))



Schreiben: Put #DateiNr, DatensatzNr, Datensatz

Lesen: Get #DateiNr, DatensatzNr, Datensatz



Close #DateiNr



Hierfür legt man einen Type an:

Im Deklarationsteil eines Moduls:



Type AutoTyp

Farbe As String * 10

Ps As Integer

Hubraum As Single

End Type

(Im Deklarationsteil einer Form muss dem Type Private vorausgehen).





Dim Auto (1 to 200) As AutoTyp



Nun hast Du 200 Felder eines Arrays die alle die gleiche Länge besitzen.



Wenn Du nun die Datensatznummer weist, kannst Du schnell auf den einzelnen Datensatz zugreifen, ohne die ganze Datei einzulesen, bis der gewünschte Satz auftaucht, wie beim sequentiellen Zugriff.



Z.B:

Open Datei For Random As #1 Len = Len(Auto(1))

(VB weis jetzt wie lang ein Datensatz in der Datei ist und braucht nur noch die SatzNr(fängt immer bei 1 an nicht bei 0) mit der Länge multiplizieren und kann gezielt auf den Datensatz zugreifen.



Get #1, 3, Auto(3)

Close #1



Text1.Text = Auto(3).Farbe

Text2.Text = Auto(3).Hubraum

Text3.Text = Auto(3).Ps



3. Möglichkeit:

Binäre Dateien (Byteweises einlesen)

Fang aber erstmal mit den anderen Beiden an.



Hab auch keine Lust mehr.




Gruß manyki

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: