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
See Also
WriteConsoleData(), AllocateMemory()