Tutorial
RANDOM-Tutorial
von ytwinky | Seite 2 von 3 |
Ein Satz von Daten, der ein bestimmtes Element beschreibt, ist ein Datensatz(Record), so einfach ist das ;-)
Und allgemein formuliert gehören bei unserem Beispiel zu einem Datensatz die Elemente:
-Vorname
-Nachname
-Alter
-Wohnort
Daraus könnten wir jetzt einen UDT(userdefined data type, benutzerdefinierten Datentyp) machen, doch nicht so schnell..
Nachdem wir jetzt unsere Daten im Programm organisiert haben, müssen wir das auch für den Speicherort machen. Die serielle Form der Datenspeicherung, die wir bisher benutzt haben, ist nun aber nicht mehr so interessant.
Wir möchten ja auf jeden Record wahlfrei(RANDOM) zugreifen können. Diesen können wir dann schreiben oder lesen!
Wir könnten für jedes Element des Records ein Array anlegen, dann bräuchten wir 4(in diesem Fall) Arrays. Das ist aber in der Handhabung bei der Programmentwicklung ziemlich umständlich, deshalb sehen wir uns mal die UDTs an:
Type Adressen
As String Vorname, Nachname
As Integer Alter
As String Wohnort
End Type
Das sieht schön übersichtlich aus, doch für die Bearbeitung mit RANDOM fehlt eine wichtige Voraussetzung:
Damit der wahlfreie Zugriff auf die Daten funktioniert, müssen diese in einem festen Schema abgespeichert sein.
Ein Schema haben wir dank des UDTs ja schon, aber ob das 'fest' ist?
Wenn das Programm den ersten Datensatz finden soll, ist das kein Problem:
Datei öffnen, bis zum Cr/Lf lesen(Vorname), bis zum nächsten Cr/Lf lesen(Name), usw..
..und wenn ich auf den 4. Datensatz zugreifen will, müssen ALLE vorherigen ebenso gelesen werden und das kann dauern(s.o. Beispiel mit 70000 Songs).
Wenn alle Datensätze eine bestimmte Länge haben, ist das alles viel einfacher..
Type Adressen
Vorname As String*20 'damit auch mehrere Vornamen sein dürfen
Nachname As String*30 'es kann ja auch Doppelnamen geben
Alter As Integer 'auch ein Integer hat eine feste Länge: 4
Wohnort As String*40 'damit auch Stadtteile benutzt werden können
End Type
So, jetzt hat der UDT eine feste Länge, nämlich 94 Byte
Wenn wir uns jetzt mal in der Referenz(möglichst die aktuelle vom FreeBASIC-Portal) die Open-Anweisung ansehen..
..(Zeit zum Nachsehen)..
..stellen wir fest, dass es dort den Parameter 'LEN=' gibt. Das ist nun genau die Stelle, an der wir unsere 94 eintragen könnten.
Doch leider stellen wir beim Ausprobieren fest, dass zwar der erste Eintrag richtig dargestellt wird, bei den weiteren kommt aber eher Datensalat..
Bevor wir jetzt einen Fehlerbericht für freebasic.net schreiben oder uns im Forum blamieren, denken wir erstmal nach..
..Pause für diejenigen, bei denen das noch mechanisch funktioniert..
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|