PureBasic

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

Все

<- RawKey() - Оглавление Console - WriteConsoleData()->