ReadConsoleData()
Синтаксис
Result = ReadConsoleData(*Buffer , Size)
Описание
Считывает различные входные данные из консоли. Эта функция поддерживается только в неграфическом режиме. Она может быть использована для чтения не строковых данных, или текста, который был в виде файлов передан в программу через соединение.
Параметры
*Buffer Буфер памяти, в который должны быть считаны данные. Size Максимальный объём данных (в байтах), которые необходимо прочитать.
Возвращаемое значение
Возвращает количество байт, фактически считанных с входа. Если возвращается ноль, это означает, что больше нет входных данных для чтения (был получен конец файла).
Комментарии
Эта функция ожидает, пока есть входные данные предназначенные для чтения. Функция делает возврат не считывая данные, только если была ошибка, или достигнут EOF (Конец Файла).
Пример
; Этот пример читает переданное изображение с консоли и отображает его в окне ; Компилируйте его в .exe и запускайте как "myexe < image.bmp" ; ; (задайте "Формат исполняемого файла" как "Console" в настройках компилятора!) ; (работает только с BMP и иконками, если вы не задействуете Декодировщик Изображения) ; OpenConsole() TotalSize = 0 BufferFree = 10000 *Buffer = AllocateMemory(BufferFree) Repeat ReadSize = ReadConsoleData(*Buffer+TotalSize, BufferFree) ; читаем блок данных TotalSize + ReadSize BufferFree - ReadSize If BufferFree < 100 ; изменяем размер буфера, если он недостаточно большой BufferFree = 10000 *Buffer = ReAllocateMemory(*Buffer, TotalSize+10000) EndIf Until ReadSize = 0 ; когда возвращается 0, читать больше нечего If TotalSize > 0 ; если успешно, покажем изображение 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("Ошибка", "Недопустимое изображение.")
См. также
WriteConsoleData(), AllocateMemory()
Поддерживаемые OS
Все