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

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