um klassische Datensätze in PB zu erzeugen, benutzt du Structures mit Fixstrings.
(gut dass ich verstehe was du meinst, hab mich schon in den 80ern mit RBase rumschlagen müssen)
also für das Beispiel:
Code: Alles auswählen
Structure RecSet
Name.s[20]
Price.q
Units.l
EndStructure
womit die Länge des Feldes "Name" auf 20 Zeichen begrenzt ist.
das bietet dir den Vorteil, dass du nicht nur jeden Datensatz einzeln lesen oder schreiben kannst,
sondern auch die gesamte Tabelle in einem Rutsch.
Code: Alles auswählen
Structure RecSet
Name.s[20]
Price.q
Units.l
EndStructure
Dim DataBase.RecSet(800)
; Datensatz Suchen
FileSeek( #DB, RecordNumber * SizeOf( RecSet ) )
; Datensatz schreiben
WriteString( #DB, DataBase(RecordNumber)\Name )
WriteQuad ( #DB, DataBase(RecordNumber)\Price )
WriteLong ( #DB, DataBase(RecordNumber)\Units )
; Datensatz lesen
DataBase(RecordNumber)\Name = ReadString( #DB )
DataBase(RecordNumber)\Price = ReadQuad ( #DB )
DataBase(RecordNumber)\Units = ReadLong ( #DB )
; komplette Tabelle schreiben
WriteData( #DB, @DataBase(), NumberOfRecords * SizeOf( RecSet ) )
; komplette Tabelle lesen
ReadData( #DB, @DataBase(), NumberOfRecords * SizeOf( RecSet ) )
das war jetzt mal auf die Schnelle hingeschmiert, kann sein dass ich nen Fehler reingehaun hab, aber das Grundprinzip stimmt so.
wie ts sagte
> Random Access-Dateien werden so in PB nicht unterstützt
aber wenn man weiß wie es funktioniert ist es easy umzusetzen,
weil die gesamte Funktionalität dieser Tabellentypen auf die einheitliche Datensatzlänge aufbaut.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.