ReadConsoleData()

Syntaxe

Resultat = ReadConsoleData(*Memoire, Taille)
Description
Lit l'entrée de la console de manière binaire.

Arguments

*Memoire La mémoire tampon dans laquelle les données seront stockées.
Mémoire auparavant allouée avec AllocateMemory.
Size La quantité maximale de données à lire (en octets).

Valeur de retour

Renvoie le nombre d'octets lu à partir de l'entrée.

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).

Remarques

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'.

Cette commande est bloquante, ce qui signifie que si aucune donnée n'est disponible en entrée, alors le programme attendra l'arrivée d'une donnée indéfiniment sauf si une erreur survient ou un EOF (End Of File).

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.")

Voir aussi

WriteConsoleData(), AllocateMemory()

OS Supportés

Tous

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