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