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: - FileName (String) – Имя файла.
- Encoding (Integer) –
Кодировка файла.
- 1200
- UTF-16 LE
- 1251
- ANSI Cyrillic; Cyrillic (Windows)
- 65001
- UTF-8
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.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) – Операция обработчик.
-