PureBasic

WriteStringFormat()

Синтаксис

Result = WriteStringFormat(#File , Format)

Описание


Пишет метку BOM (метка порядка байт) в текущей позиции в файле.

Параметры

#File Номер файла, в который будет производиться запись.
Format Формат, для которого должна быть записана метка. Этот параметр может быть одним из следующих значений:
  #PB_Ascii  : Не записывает метку BOM вообще (это обычно понимается как файл простого Ascii.)
  #PB_UTF8   : Метка BOM UTF-8
  #PB_Unicode: Метка BOM UTF-16 (сначала младший)

  #PB_UTF16BE: Метка BOM UTF-16 (сначала старший)
  #PB_UTF32  : Метка BOM UTF-32 (сначала младший)
  #PB_UTF32BE: Метка BOM UTF-32 (сначала старший)
Значения #PB_Ascii, #PB_UTF8 и #PB_Unicode соответствуют флагам, поддерживаемым функциями WriteString() и WriteStringN(). После вставки такой метки BOM, последующие строки должны записываться с этим флагом. Другие форматы представляют строковые форматы, которые нельзя записать непосредственно с помощью строковых функций PB. Они включены только для полноты.

Возвращаемое значение

Возвращает не нулевое значение, если операция прошла успешно, и значение равное нулю, если она не удалась.

Комментарии

Из-за буферизации файлов эта функция может возвратиться успешно, даже если на устройстве вывода недостаточно места для операции записи. Файл должен быть открыт с разрешением функции записи (то есть не с помощью ReadFile()).

Метка порядка байт (Byte Order Mark) это общепринятый способ указать кодировку текстового файла. Обычно она помещается в начале файла. Однако это не стандарт, просто общепринятая практика. Так что если метка BOM в начале файла не обнаружена, это не обязательно означает что это файл простого текста. Это может также означать, что программа, создавшая файл, не использует эту практику. Чтобы обнаружить метку BOM внутри файла, воспользуйтесь функцией ReadStringFormat().

Для получения дополнительной информации см. эту Статью Википедии.
Больше информации об использовании юникода в программе PureBasic также можно найти здесь.

Пример (Фран)

If CreateFile(0, "Test.txt") ; Создать новый текстовый файл...
    WriteStringFormat(0, #PB_Unicode); Файл в формате Юникод
    WriteStringN(0, "Строка п р и в е т") ; Записать некоторые знаки (с последующим кодом "конец строки")
    CloseFile(0) ; Закрывает ранее открытый файла и тем сохраняет данные.
Else
    MessageRequester("Инфо", "Невозможно создать файл!")
EndIf
If ReadFile(0, "Test.txt")
    Format=ReadStringFormat(0)
    While Eof(0) = 0          ; Цикл до достижения конца файла. (Eof = 'Конец файла')
        Debug ReadString(0) ; Отображает построчно содержимое файла
    Wend
    CloseFile(0)
    Select Format
        Case #PB_Ascii
            Debug "Не обнаружено BOM. Как правило, стандартный текстовый файл"
        Case #PB_UTF8
            Debug "UTF-8 и BOM обнаружен."
        Case #PB_Unicode
            Debug "UTF-16 (сначала младший) и BOM обнаружен."
        Case #PB_UTF16BE
            Debug "UTF-16  (сначала старший) и BOM обнаружен."
        Case #PB_UTF32
            Debug "UTF-32 (сначала младший) и BOM обнаружен."
        Case #PB_UTF32BE
            Debug "UTF-32 (сначала старший) и BOM обнаружен."
        Default
            Debug "неизвестный формат"
    EndSelect
EndIf

См. также

ReadStringFormat(), WriteString(), WriteStringN(), CreateFile(), OpenFile()

Поддерживаемые OS

Все

<- WriteString() - Оглавление File - WriteStringN()->