ReadConsoleData()
Syntax
Ergebnis = ReadConsoleData(*Puffer, Groesse)Beschreibung
Liest "Roh-Eingaben" aus der Konsole. Dieser Befehl wird nur im nicht-grafischen Modus unterstützt. Er kann zum Einlesen von Daten verwendet werden, die nicht zeilenbasiert sind, oder zum Einlesen von text-ähnlichen Dateien, welche über eine Pipe an das Programm umgeleitet wurden.
Der Befehl liest bis zu 'Groesse' (Anzahl Bytes) in den angegebenen Speicherbereich '*Puffer', welcher zuvor mittels AllocateMemory reserviert worden sein sollte.
Dieser Befehl wartet, bis es einige zu lesende Eingaben gab. Er kehrt nur ohne gelesene Daten zurück, wenn ein Fehler oder eine EOF ("End of file" - Ende der Datei) Bedingung auftrat.
Rückgabewert
Es wird die Anzahl an Bytes zurückgegeben, welche gerade von der Eingabe eingelesen wurden. Sobald 0 (Null) zurückgegeben wird, bedeutet dies, dass keine weiteren Eingaben zu lesen sind (ein 'EOF' - Ende der Datei wurde empfangen).
Beispiel:; Dies liest ein übergebenes Bild von der Konsole und stellt dieses in einem Fenster dar. ; Kompilieren Sie diesen Code in ein Executable und starten dieses wie folgt "myexe < image.bmp" ; ; (setzen Sie "Executable-Format" auf "Console" in the Compiler-Optionen!) ; (funktioniert nur mit Bitmaps und Icons, außer Sie nutzen einen Image Decoder) ; OpenConsole() TotalSize = 0 BufferFree = 10000 *Buffer = AllocateMemory(BufferFree) Repeat ReadSize = ReadConsoleData(*Buffer+TotalSize, BufferFree) ; liest einen Block an Daten TotalSize + ReadSize BufferFree - ReadSize If BufferFree < 100 ; verändert die Buffergröße, wenn diese nicht groß genug ist BufferFree = 10000 *Buffer = ReAllocateMemory(*Buffer, TotalSize+10000) EndIf Until ReadSize = 0 ; sobald 0 zurückgegeben wird, gibt es nichts weiter zum einlesen If TotalSize > 0 ; das Bild darstellen, wenn vorher erfolgreich If CatchImage(0, *Buffer, TotalSize) If OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "Image", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ImageGadget(0, 0, 0, ImageWidth(0), ImageHeight(0), ImageID(0)) Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow End EndIf EndIf EndIf MessageRequester("Fehler", "Kein gültiges Bild.")
Unterstützte OS
Alle