ReadConsoleData()
Syntax
Ergebnis = ReadConsoleData(*Puffer, Größe)Beschreibung
Liest "Roh-Eingaben" aus der Konsole. Dieser Befehl wird nur im nicht-grafischen Modus unterstützt. Er kann zum Einlesen von nicht zeilenbasierten Daten verwendet werden, oder zum Einlesen von text-ähnlichen Dateien, welche über eine Pipe an das Programm umgeleitet wurden.
Parameter
*Puffer Der Speicherpuffer, in welchen die Daten gelesen werden sollen. Größe Der maximalen Umfang (in Bytes) an zu lesenden Daten.
Rückgabewert
Gibt die Anzahl an Bytes zurück, welche gerade von der Eingabe eingelesen wurden. Wenn Null zurückgegeben wird, bedeutet dies, dass keine weiteren Eingaben zu lesen sind (ein 'EOF' - Ende der Datei wurde empfangen).
Anmerkungen
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.
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.")
Siehe auch
WriteConsoleData(), AllocateMemory()
Unterstützte OS
Alle