8. Ввод-вывод

8.1. Работа с файлами

8.1.1. Путь

GetTempFileName(prefix, suffix: String): String

Метод возвращает уникальное имя файла во временном каталоге Windows.

Parameters:
  • prefix (String) – Префикс имени файла
  • suffix (String) – Окончание имени файла с расширением
Return type:

String

GetTempDirectory(): String

Метод возвращает путь к временному каталогу Windows.

Return type:String
ExtractFileName(sFileName: String): String

Выделяет имя файла из полного имени файла

Parameters:sFileName (String) – Полное имя файла.
Return type:String
ExtractFileExt(sFileName: Variant): String

Выделяет расширение файла (с точкой в начале) из имени файла.

Parameters:sFileName (Variant) – Имя файла.
Return type:String
ExtractFileDir(sFileName: String): String

Выделяет каталог из полного имени файла

Parameters:sFileName (String) – Полное имя файла.
Return type:String

8.1.2. Модификация каталогов

MkDir(S: String)

Создает новую субдиректорию.

Parameters:S (String) – Имя директории.
RemoveDir(sPath: String): Variant

Удаляет пустой каталог. Возвращает True, если результат операции успешен.

Parameters:sPath (String) – Имя каталога (полное).
Return type:Variant
RemoveDirEx(sPath: String; bFlag: Boolean): Boolean

Удаляет каталог. Возвращает True, если результат операции успешен.

Parameters:
  • sPath (String) – Имя каталога (полное).
  • bFlag (Boolean) – Режим удаления каталога, если True, каталог будет удален вместе с подкаталогами и файлами, если False, то действие аналогично RemoveDir.
Return type:

Boolean

DeleteFile(FileName: String): Boolean

Удаляет файл с именем FileName. Возвращает True, если результат операции успешен

Parameters:FileName (String) – Имя файла.
Return type:Boolean
RenameFile(OldName, NewName: String): Variant

Переименовывает файл. Возвращает True, если результат операции успешен.

Parameters:
  • OldName (String) – Полное старое имя файла.
  • NewName (String) – Полное новое имя файла.
Return type:

Variant

8.1.3. Информация и каталогах

DirectoryExists(Path: String): Variant

Проверяет существование каталога с именем Path.

Parameters:Path (String) – Каталог.
Return type:Variant
FileExists(FileName: String): Boolean

Проверяет существование файла с именем FileName.

Parameters:FileName (String) – Полное имя файла (с именем диска и каталога).
Return type:Boolean
GetFileDateTime(FileName: String): TDateTime

Функция возвращает дату создания файла.

Parameters:FileName (String) – Полное имя файла.
Return type:TDateTime
Пример использования
<Pascal>
  FileName := 'TEST.doc';
  If FileExists(FileName) then
    ShowMessage(DateTimeToStr(GetFileDateTime(FileName)));
</Pascal>
FileSize(sFileName: Variant): Integer

Возвращает размер файла в байтах.

Parameters:sFileName (Variant) – Полное имя файла (с именем диска и каталога).
Return type:Integer
GetDirFileList(Path: String): Array

Функция возращает массив файлов (полные имена) входящих в каталог Path.

Parameters:Path (String) – Имя каталога (полное).
Return type:Array

8.1.4. Загрузка/Сохранение

SaveToFile(FileName, FileText: String)

Сохраняет в файл текст в кодировке UTF8. Используется, в частности, при выгрузке скрипта “понятия” в файл.

Parameters:
  • FileName (String) – Имя файла. Если имя пустое, то создается диалоговое окно выбора файла.
  • FileText (String) – Текст, который будет занесен в файл.

Warning

Начиная с версии клиента Global 5.9 метод сохраняет файл в кодировке UTF8 (В предудщих версиях клиента файл сохранялся в кодировке ANSI). Для сохранения файла в кодировке ANSI необходимо использовать метод SaveTextToFile(), позволяющий явно указать требуемую кодировку.

Для обратной совместимости скрипта с предыдущими версиями клиента необходимо использовать директивы условной компиляции:

Пример обхода проблем с кодировкой
<PASCAL>
  {$IF DesktopVer < 5.9.0}
    SaveToFile(sFullName, text);
  {$ELSE}
    SaveTextToFile(sFullName, 1251, text, True);
  {$ENDIF}
</PASCAL>
LoadFromFile(FileName: String): String

Загружает текст из файла. Функция возвращает содержимое файла.

Parameters:FileName (String) – Имя файла.
Return type:String
LoadTextFromFile(FileName: String; Encoding: Integer): String

Функция загружает и возвращает текст из файла с указанной кодировкой преобразуя в текст с текущей скриптовой кодировкой (ANSI).

Parameters:
Return type:

String

Пример использования
<PASCAL>
  str := LoadTextFromFileProc('D:\utf8file_in.txt', 65001); // Загружаем utf-8(unicode) файл и преобразуем в AnsiString
  ShowMessage(str); // Выводим Ansi строку в сообщение
  SaveTextToFileProc('D:\utf8file_out.txt', 1200, str, true); // Сохраняем строку в кодировке Utf-16(unicode)
</PASCAL>
LoadFromFileToBlob(FileName: String): Variant

Метод загружает данные из файла в бинарный массив (blob).

Parameters:FileName (String) – Имя файла.
Return type:Variant
Пример использования
<sql>
  <SaveBlob>
   begin
      BlobOpen_testAPI.SetblobData(:id, :FileInBlob);
   end;
  </SaveBlob>
</sql>

<PASCAL>
   blob := LoadFromFileToBlob('D:\1.mp3'); // загрузка из файла
   Selection.AddVar('FileInBlob',blob, ftOraBlob);
   SaveBlobtoFile('D:\2.mp3', GetVar('FileInBlob')); // сохрание в другой файл
   ExecSQL('SaveBlob'); // Сохрание на сервере
</PASCAL>
SaveBlobToFile(FileName: String; BlobData: Variant)

Сохранение бинарных данных в файл.

Parameters:
  • FileName (String) – Имя файла
  • BlobData (Variant) – Бинарные данные.
Пример использования
<sql>
  <SaveBlob>
   begin
      BlobOpen_testAPI.SetblobData(:id, :FileInBlob);
   end;
  </SaveBlob>
</sql>

<PASCAL>
   blob := LoadFromFileToBlob('D:\1.mp3'); // загрузка из файла
   Selection.AddVar('FileInBlob',blob, ftOraBlob);
   SaveBlobtoFile('D:\2.mp3', GetVar('FileInBlob')); // сохрание в другой файл
   ExecSQL('SaveBlob'); // Сохрание на сервере
</PASCAL>
SaveTextToFile(FileName, TextData: String; Encoding: Integer; Preamble: Boolean)

Метод сохраняет символьные данные TextData в файле в заданной кодировке Encoding. Параметр Preamble применяется для кодировки Unicode и определяет вставлять префикс с типом Unicode кодировки или нет. Большинство приложений (Блокнот, NotePad++ и др.) считывают префикс и отображат текст в нужной кодировке. Рекомендуется всегда задавать префикс, передавая в параметре Preamble значение True.

Parameters:
  • FileName (String) – Имя файла.
  • TextData (String) – Массив символьных данных.
  • Encoding (Integer) – Кодировка файла.
  • Preamble (Boolean) – Флаг определяет задавать префикс или нет.
Пример использования
<PASCAL>
  str := LoadTextFromFileProc('D:\utf8file_in.txt', 65001); // Загружаем utf-8 (unicode) файл и преобразуем в AnsiString
  ShowMessage(str); // Выводим Ansi строку в сообщение
  SaveTextToFileProc('D:\utf8file_out.txt', 1200, str, true); // Сохраняем строку в кодировке Utf-16(unicode)
</PASCAL>
FilePos(File: File): Integer

Возвращает текущую позицию в открытом файле

Parameters:File (File) – Файл.
Return type:Integer
Reset(File: File)

Открывает существующий файл на чтение.

Parameters:File (File) – Файл.
AssignFile(F: Variant; FileName: String)

Метод связывает файловую переменную F с файлом на диске.

Parameters:
  • F (Variant) – Файловая переменная.
  • FileName (String) – Полное имя файла.
EOF(F: Variant): Variant

Функция тестирует находится ли указатель текущей позиции считывания/записи в конце файла. Если указатель находится в конце, то функция возвращает True.

Parameters:F (Variant) – Файловая переменная. Файловая переменная связывается методом AssignFile.
Return type:Variant
Rewrite(F: Variant)

Метод отрывает файл F на перезапись. Файл будет создан, если файла с таким именем еще не существует.

Parameters:F (Variant) – Файловая переменная.
CloseFile(F: Variant)

Метод закрывает файл, открытый методоми Append, Rewrite или Reset.

Parameters:F (Variant) – Файловая переменная.

8.1.5. Другое

Chdir(sPatch: String)

Процедура менят текущий каталог приложения.

Parameters:sPatch (String) – Новый каталог.
ReadLn(F: Variant): Variant

Метод переводит указатель на начало следующую строки в файле.

Parameters:F (Variant) – Файловая переменная.
Return type:Variant

8.2. Последовательный порт

8.2.1. TbtkScriptComEvents

class TbtkScriptComEvents

Адаптер позволяющий использовать операции выборки в качестве обработчиков событий COM-объектов

ComObject: IDispatch

COM-объект к которому подключен обработчик (для которого выполнен метод Connect, он же передаётся как Sender в операцию-обработчик).

Аттрибут только для чтения

Return type:IDispatch
Connected: Boolean

Свойство сообщает о состоянии обработчика, True - подключен (успешно выполнен метод Connect).

Аттрибут только для чтения

Return type:Boolean
Disconnect()

Отключить обработчик от COM-объекта. Убрать ссылку на себя из COM-объекта и занулить ссылку на COM-объект.

Connect(ClientCOM: IDispatch; Operataion: TbtkScriptOperationObject)

Установить обработчик событий COM-объекту (подключить к COM-объекту). COM-объекту передаётся ссылка на IDispatch, реализуемый данным экземпляром TbtkScriptComEvents, также ссылка остаётся на COM-объект у экземпляра TbtkScriptComEvents. Ссылка на COM-объект (после успешного подключения) доступна через свойство TbtkScriptComEvents.ComObject. Проверить успех подключения можно через свойство TbtkScriptComEvents.Connected.

Впоследствии, вызовы событий данного интерфейса COM-объектом будут перенаправляться в операцию выборки переданную как параметр Operation.

Parameters:
  • ClientCOM (IDispatch) – COM-объект которому будет установлен данный обработчик событий
  • Operataion (TbtkScriptOperationObject) – В последствии вызовы событий данного интерфейса COM-объектом будут перенаправляться в операцию
Create(EventCLSID: String): TbtkScriptComEvents

Создаёт новый экземпляр адаптера обработки событий: события генерируемые COM-объектом вызывают операцию выборки. Экземпляр представляющий заданный в параметре EventsIID класс COM-обработчика.

Parameters:EventCLSID (String) – GUID dispinterface-а обработчика событий COM-объекта. Передаётся строкой вида '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'
Return type:TbtkScriptComEvents

8.2.2. TbtkScriptSerialPortTimeouts

class TbtkScriptSerialPortTimeouts

Класс предоставляет доступ к структуре COMMTIMEOUTS. Более подробнувю информацию лучше смотреть в MSDN

Note

В классе реализованы не все поля из структуры, а только те, которые описаны в BDN.

WriteTotalTimeoutMultiplier: Integer

Множитель, используемый, чтобы вычислить полный период времени простоя для операций записи, в миллисекундах. Для каждой операции записи, это значение умножается на число записываемых байтов.

Return type:Integer
WriteTotalTimeoutConstant: Integer

Константа, используемая, чтобы вычислить полный период времени простоя для операций записи, в миллисекундах. Для каждой операции чтения, это значение добавляется к произведению значения TbtkScriptSerialPortTimeouts.WriteTotalTimeoutMultiplier и записанного числа байтов.

Return type:Integer
ReadTotalTimeoutMultiplier: Integer

Множитель, используемый, чтобы вычислить полный период времени простоя для операций чтения, в миллисекундах. Для каждой операции чтения, это значение умножается на затребованное число байтов, которые читаются.

Return type:Integer
ReadTotalTimeoutConstant: Integer

Константа, используемая, чтобы вычислить полный период времени простоя для операций чтения, в миллисекундах. Для каждой операции чтения, это значение добавляется к произведению члена структуры TbtkScriptSerialPortTimeouts.ReadTotalTimeoutMultiplier и прочитанного числа байтов.

Return type:Integer
ReadIntervalTimeout: Integer

Максимальное время, которое допускается для интервала между поступлением двух символов в коммуникационную линию, в миллисекундах.

Return type:Integer

8.2.3. TbtkScriptSerialPortDcbObject

class TbtkScriptSerialPortDcbObject

Класс предоставляет доступ системной структуре DCB, определяющей управляющие настройки последовательного порта. Подробную информацию лучше смотреть в MSDN

Note

В клаcсе реализован доступ не ко всем полям, а только к описаным в MSDN. Константы поддерживаются.

StopBits: Integer

Доступны константы ONESTOPBIT, ONE5STOPBITS, TWOSTOPBITS.

Return type:Integer
Parity: Integer

Доступны константы NOPARITY, ODDPARITY, EVENPARITY, MARKPARITY, SPACEPARITY.

Return type:Integer
ByteSize: Integer

Число битов в переданных и принятых байтах.

Return type:Integer
BaudRate: Integer

Доступны константы CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000.

Return type:Integer

8.2.4. TbtkScriptSerialPortObject

class TbtkScriptSerialPortObject

Класс инкапсулирует функционал по взаимодействую с последовательным портом компьютера. Объект класса позволяет читать из порта входные данные и устанавливать обработчик/операцию вызываемую после получения COM портом данных.

Registered: Boolean

Зарегистрирован обработчик на последовательный порт или нет. True - зарегистрирован, False - не зарегистрирован.

Return type:Boolean
Opened: Boolean

Возвращает состояние актиности порта. Если True - порт открыт, False - закрыт.

Return type:Boolean
Data: String

Данные считанные из последовательного порта, после их поступления. Поле позволяет получить данные в обработкичке на поступление данных в последовательный порт.

Return type:String
Port: String

Имя последовательного порта. Свойство только для чтения.

Return type:String
SetCOMMTimeouts()

Запись параметровов таймаутов в порт. Параметром является структура COMMTIMEOUTS.

GetCOMMTimeouts(): TbtkScriptSerialPortTimeouts

Получение параметров времение ожидания (timeout) последовательного порта. После изменения параметров, можно записать в порт используя SetCOMMTimeouts.

Return type:TbtkScriptSerialPortTimeouts
SetDCBProperties(DCB: TbtkScriptSerialPortDcbObject)

Запись управляющей структуры DCB в порт.

Parameters:DCB (TbtkScriptSerialPortDcbObject) – Структура DCB.
GetDCBProperties(): TbtkScriptSerialPortDcbObject

Получение управляющий настроек порта в виде DCB структуры. С помощью функции можно получить текущие настройки порта, изменить нужные поля и записать в порт через SetDCBProperties.

Return type:TbtkScriptSerialPortDcbObject
Close()

Закрытие COM порта. На закрытие выполняет освобождение занятых системных ресурсов, важно после работы с COM портом закрыть его.

Open()

Открытие COM порта. После открытия порта, можно производить чтение и запись.

DeregisterHandler()

Дерегистрация обработчика на получение данных COM портом.

RegisterHandler(Operation: TbtkScriptOperationObject)

Регистрация обработчика на получение данных COM портом. Зарегистрированная операция будет вызвана, когда устройство, подключенное к COM порту, выполнит запись в порт. У метода-обработчика должен быть входной параметр строкового типа, в него передается имя порта.

Parameters:Operation (TbtkScriptOperationObject) – Операция обработчик.