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) If CreateGadgetList(WindowID(0)) ImageGadget(0, 0, 0, ImageWidth(0), ImageHeight(0), ImageID(0)) Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow End EndIf EndIf EndIf EndIf MessageRequester("Erreur", "Ce n'est pas une image valide.")
OS Supportés
Tous