IO.pbi bietet ein abstraktes Interface für verschiedene IO - Schnittstellen (am häufigsten: File). Dabei gibts es einige Methoden die jede Implementierung enthalten muss und optionale Methoden.
Bereits implementiert sind:
- File
- Memory
- Network
- SerialPort
- Gadget
- Process
- Console
- Syncronizer
Code: Alles auswählen
IO\Write(*Mem, MemSize)
IO\Read(*Mem, MemSize)
IO\IsAvailable()
IO\Close()
Dann gibt es noch optionale Schnittstellen die (aufgrund Beschaffenheit der konkreten IO - Schnittstelle) nicht immer implementiert sein müssen:
Code: Alles auswählen
IO\GetLenght()
IO\GetPosition()
IO\SetPosition(Position.i)
IO\ImportFromIO(*IO.IO)
IO\ExportToIO(*IO.IO)
Damit man festellen kann welche optionalen Methoden ein Objekt unterstützt gibt es noch Verwaltungsfunktionen. Diese sind global, müssen nicht selbst implementiert werden:
Code: Alles auswählen
IO\IOName$()
IO\IOOptionalFunctions()
ein kleines Verwendungsbeispiel:
Code: Alles auswählen
IncludeFile "IO.pbi"
Define *File.IO, *Memory.IO
*File = IO_File("C:\myFile.data", #PB_File_Read)
*Memory = IO_Memory()
*Memory\ImportFromIO(*File)
*File\Close()
Das ganze wird natürlich erst wirklich praktisch sobald die Network und SerialPort - Implementationen dabei sind. Dann kan man z.B. bei einem Network - Event z.b. einfach *Connection\ExportToIO(*Memory) ausführen und das Memory - Objekt so behandeln als hätte man nicht gerade Daten übers Netzwerk empfangen sondern aus einer Datei gelesen.
Die geplante Syncronizer - IO - Schnittstelle wird eine virtuelle IO - Schnittstelle bei der man ein Main - IO - Object definieren kann und beliebig viele Sub - Object. Schreib - Operationen werden auf allen IOs durchgeführt, Lese - Operationen nur am Main - Object. Dadurch kann man z.b. ein Network - IO Object als Main definieren und ein oder mehrer File - Objects als SUB und erhält eine automatische Protokollierung.
IO.pbi:
Download
CHM - Hilfe:
Download