| Das Schreiben ist wie bei den Textdateien gar nicht so schwer. Der zugehöriger Befehl dazu ist: Put Dateinummer, [Datensatznummer], Variable | Parameter | Beschreibung | | Dateinummer | Eine gültige Dateinummer im Bereich von 1 bis 511 [einschließlich]. Mit der FreeFile-Funktion erhält man die nächste verfügbare Dateinummer. Unter dieser Nummer erfolgen dann alle weitere Zugriffe des Programms auf die Datei. | | Datensatznummer | Nummer des Datensatzes in den Dateien geschrieben werden sollen. Ist nicht zwingend erforderlich. | | Variable | Name der Variablen, die die auf den Datenträger zu schreibenden Daten enthält. | Jetzt machen wir an dem vorherigem Beispiel weiter: Private Type Datensatz
Nr As Long
Name As String * 20
Vorname As String * 20
End Type
Dim FN As Integer
Dim Data As Datensatz
FN = FreeFile
Open "C:\Text.txt" For Random As FN Len = Len(Data)
Data.Nr = 1
Data.Name = "Testname1"
Data.Vorname = "Testvorname1"
Put FN, , Data
Data.Nr = 2
Data.Name = "Testname2"
Data.Vorname = "Testvorname2"
Put FN, , Data
Close FN Listing 2 So, hier arbeiten wir weiter mit dem selbstdefiniertem Datentyp, weisen der Variable die entsprechender Daten zu und speichern das ganze in die Datei. Die Daten werden in den aktuellen Datensatz geschrieben, dann automatisch der Datensatzzeiger erhöht. Man könnte das ganze auch so machen: Open "C:\text.txt" For Random As FN Len = Len(Data)
Data.Nr = 1
Data.Name = "Testname1"
Data.Vorname = "Testvorname1"
Put FN, 1, Data
Data.Nr = 2
Data.Name = "Testname2"
Data.Vorname = "Testvorname2"
Put FN, 2, Data
Close FN Listing 3 Hier sagen wir direkt in welchen Datensatz geschrieben werden soll [Put FN,1,...]. Je nach dem welche Möglichkeit man nutzt, werden die Daten in die Datensätze geschrieben. Die zwei letzten Beispiele schreiben in die gleichen Datensätze, betrachten wir jetzt einen ähnlichen Fall: Open "C:\text.txt" For Random As FN Len = Len(Data)
Seek FN, 10
Data.Nr = 1
Data.Name = "Testname1"
Data.Vorname = "Testvorname1"
Put FN, , Data
Data.Nr = 2
Data.Name = "Testname2"
Data.Vorname = "Testvorname2"
Put FN, , Data
Close FN Listing 4 Hier werden die Daten in die Datensätze 10 und 11 geschrieben, da wir vor dem Schreiben den Satzzeiger auf die Position 10 gestellt haben. Und zur Verwirung noch ein weiteres Beispiel: Open "C:\text.txt" For Random As FN Len = Len(Data)
Seek FN, 10
Data.Nr = 1
Data.Name = "Testname1"
Data.Vorname = "Testvorname1"
Put FN, 1, Data
Data.Nr = 2
Data.Name = "Testname2"
Data.Vorname = "Testvorname2"
Put FN, , Data
Close FN Listing 5 Gleich dazu eine Frage. In welche Datensätze werden die zwei Put-Ausgaben gemacht? Sind es: | a) | 10 und 11 | | b) | 1 und 10 | | c) | 1 und 2 | | d) | 10 und 2 | Wer kann diese Frage beantworten? Versuchen wir den Code zur Analysieren. Erstens wird die Datei geöffnet, das soll außer Acht bleiben. Dann wird der Satzzeiger auf den Datensatz 10 verschoben, und der Variable Data einige Werte zugewiesen. Jetzt wird die Variable mit dem Put-Befehl in dem erstem Datensatz gespeichert, und der Satzzeiger automatisch auf den nächsten Datensatz gebracht. Wieso werden die Daten im ersten Datensatz gespeichert? Schauen wir uns den Put-Befehl genauer an. Put FN, 1, Data Was heißt das genauer? | Put | schreibe | | FN | in die Datei mit der Datennummer die in der Variablen FN steht | | 1 | in den ersten Datensatz | | Data | die Daten die Data enthält, und verschiebe den Satzzeiger um eins. | Jetzt zeigt der Satzzeiger auf zwei. Weiter im Code werden der Data-Variable wieder neue Werte zugewiesen, und mit dem nächstem Put-Befehl in den aktuellen, also auf den der Datensatzzeiger zeigt, geschrieben. Da der Datensatzzeiger auf den Datensatz zwei zeigt werden die Daten in den Datensatz zwei geschrieben. Und somit ist die Antwort C richtig. Sie haben gewonnen !!! |