ReadConsoleData()

Syntaxe

Resultat = ReadConsoleData(*Buffer, Taille)
Description
Lit l'entrée de la console de manière binaire. Cette commande fonctionne uniquement si le console n'est pas en mode graphique. Elle est utile pour lire des données qui ne sont pas basées sur des lignes de texte (à l'inverse de la commande Input()) ou des données qui on été redirigées vers le programme à travers un 'pipe'.

La commande lit le nombre d'octets specifié par le paramètre 'Taille' dans le '*Buffer' qui devra être auparavant alloué avec AllocateMemory.

Cette commande est bloquante, ce qui signifie que si aucune données n'est disponible en entrée, alors le programme attendra l'arrivée d'une donnée.

Valeur de retour

Renvoie le nombre d'octets lus à partir de l'entrée de la console. Si la valeur zéro est renvoyée, alors il n'y a plus de données à lire (un indicateur de fin de fichier a été reçu).

Exemple

  ; Ce programme lit une image passée en paramètre depuis une console et l'affiche dans une fenêtre.
  ; Il faut le compiler et créer un exécutable, ensuite le lancer de cette façon "MonExecutable < image.bmp"
  ;
  ; (Dans les options du compilateur sélectionnez "Console" pour le "format de l'exécutable" !)
  ; (Fonctionne seulement avec des BMP ou des icônes à moins d'utiliser un décodeur d'images (voir ImagePlugin))
  ;
  OpenConsole()
  TotalSize = 0
  BufferFree = 10000
  *Buffer = AllocateMemory(BufferFree)
  
  Repeat
    ReadSize = ReadConsoleData(*Buffer+TotalSize, BufferFree) ; Lit un bloc de données
    TotalSize + ReadSize
    BufferFree - ReadSize
    If BufferFree < 100  ; Redimensionne le buffer s'il n'est pas assez grand
      BufferFree = 10000
      *Buffer = ReAllocateMemory(*Buffer, TotalSize+10000)
    EndIf
  Until ReadSize = 0 ; Une fois que 0 est retourné, il n'y a plus rien à lire
  
  If TotalSize > 0 ; affiche l'image si tout se passe bien 
    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("Erreur", "Ce n'est pas une image valide.")

OS Supportés

Tous

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

See Also

WriteConsoleData(), AllocateMemory()