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

<- RawKey() - Console Inhaltsverzeichnis - WriteConsoleData() ->