Autoit+DBF

Autoit + DBF Аutoit

Для создания, чтения и редактирования DBF файла используется специальный API-интерфейс который создает специальный дескриптор дающий доступ к файлу .dbf.

Для того чтобы установить эту UDF необходимо положить файл DBF.au3 в папку C:\Program Files (x86)\AutoIt3\Include. Файл DBF.dll должен находится в папке где лежит файл скрипта .au3.

DBF_UDF

Пример:

 

Вот основные процедуры этой библиотеки:

_DBF_Open ()

_DBF_Open($sFileName,  [  $sMode= False ])

Параметры:

sFileName Имя файла xBase (.dbf) для доступа.
sMode [необязательный]Строка доступа стиля fopen (). В это время только «rb» (только для чтения) и «rb +» (двоичный код чтения / записи) должен быть использован.

 

Функция _DBF_Open() должна использоваться для установления доступа к существующему файлу таблицы формата xBase. Возвращенный DBFHandle передается другим функциям доступа, и DBFClose () следует вызывать для восстановления ресурсов и при необходимости сбрасывать изменения на диск. Функция _DBF_Create() должна вызывать для создания новых файлов xBase. Для удобства _DBF_Open() можно вызвать с именем файла .shp или .shx, и он будет определять имя связанного файла .dbf.

Пример:

 

_DBF_Create()

_DBF_Create($sFileName);

Параметры:

sFileName Имя создаваемого файла xBase (.dbf)

 

Функция _DBF_Create() создает новый файл формата xBase с заданным именем и возвращает дескриптор доступа, который можно использовать с другими функциями DBF. У вновь созданного файла не будет полей и нет записей. Поля должны быть добавлены с помощью _DBF_AddField() перед записью любых записей.

Пример:

 

_DBF_Close()

_DBF_Close($hDBF);

hDBF дескриптор доступа для закрываемого файла.

 

Функция _DBF_Close() закроет указанный файл xBase (открывается с помощью _DBF_Open() или _DBF_Create()), выгружает всю информацию в файл на диске и восстанавливает любые ресурсы, связанные с открытием файла. После вызова _DBF_Close() дескриптор файла (hDBF) не следует использовать снова с API DBF.

Пример:

_DBF_AddField()

_DBF_AddField($hDBF, $sFieldName, $iFieldType, $iWidth, $iDecimals);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
sFieldName имя нового поля. Будет использовано не более 11 символов. Чтобы использовать файл xBase в некоторых пакетах, он может быть необходимо избегать некоторых специальных символов в именах полей таких как пробелы или арифметические операторы.
iFieldType один из FTString, FTInteger или FTDouble, чтобы установить тип нового поля. Обратите внимание, что некоторое действительное поле xBase типы не могут быть созданы, например, поля даты.
iWidth ширина создаваемого поля. Для полей FTString это устанавливает максимальную длину строки, которая может быть сохранена. Для FTInteger это устанавливает количество цифр наибольшее число, которое может быть представленным. Для полей FTDouble это в комбинации с значением nDecimals установите размер и точность созданного поля.
iDecimals количество десятичных знаков для резервирования полей FTDouble. Для всех других типов полей это должно быть равно нулю. Например с nWidth = 7, и nDecimals = 3 числа будут отформатированы аналогично «123.456».

 

Функция _DBF_AddField() используется для добавления новых полей в существующий файл xBase, открытый с помощью _DBF_Open() или созданный с помощью _DBF_Create().

Возвращаемое значение _DBF_AddField() — это номер поля нового поля, или -1, если сложение поля не удалось.

_DBF_DBFToArray()

_DBF_DBFToArray($sFileName);

Параметры:

hDBF  дескриптор доступа для преобразования его в массив.

Функция _DBF_DBFToArray() преобразует указанный файл xBase (открывается с помощью _DBF_Open() или _DBF_Create()) в массив.

Пример:

 

_DBF_GetFieldInfo()

_DBF_GetFieldInfo($hDBF, $iField);

Параметры:

hDBF: дескриптор доступа для запрашиваемого файла, который возвращается по _DBF_Open() или _DBF_Create().

 

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

_DBF_GetRecordCount()

_DBF_GetRecordCount($hDBF);

Параметры:

hDBF дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().

 

Функция _DBF_GetRecordCount() возвращает количество записей, существующих в файле xBase. Обратите внимание, что с файлами формы для каждой фигуры в файлах .shp / .shx существует одна запись xBase.

_DBF_GetFieldIndex()

_DBF_GetFieldIndex($hDBF, $sFieldName);

Параметры:

hDBF дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
sFieldName имя поля для поиска.

 

Возвращает индекс поля, соответствующего этому имени, или -1 при ошибке. Сравнение нечувствительно к регистру. Однако длины должны точно совпадать.

_DBF_GetFieldInfo()

_DBF_GetFieldInfo($hDBF, $iField);

Параметры:

hDBF дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iField поле для запроса. Это должно быть число между 0 и n-1, где n — числовые поля в файле, так как возвращается DBFGetFieldCount ().

 

_DBF_GetFieldInfo() возвращает тип запрашиваемого поля, которое является одним из перечисляемых значений DBFFieldType. Кроме того, имя поля и информация о ширине поля могут быть возвращены. Возвращаемый тип поля не соответствует одному полю с типами полей xBase. Например, тип поля xBase для Date будет просто возвращен как FTInteger.

typedef enum {

FTString, / * поле строки фиксированной длины * /

FTInteger, / * числовое поле без десятичных знаков * /

FTDouble, / * числовое поле с десятичными знаками * /

FTLogical, / * логическое поле. * /

FTInvalid / * не распознанный тип поля * /

} DBFFieldType;

_DBF_ReadIntegerAttribute()

_DBF_ReadIntegerAttribute ($hDBF, $iRecord, $iField);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть прочитано.

 

 

_DBF_ReadIntegerAttribute () будет считывать значение одного поля и возвращать его как целое. Это можно использовать даже с полями FTString, хотя возвращаемое значение будет равно нулю, если не будет интерпретироваться как число.

_DBF_ReadDoubleAttribute()

_DBF_ReadDoubleAttribute($hDBF, $iRecord, $iField);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть прочитано.

 

_DBF_ReadDoubleAttribute() будет считывать значение одного поля и возвращать его как double. Это можно использовать даже с полями FTString, хотя возвращаемое значение будет равно нулю, если не будет интерпретироваться как число.

_DBF_ReadStringAttribute()

_DBF_ReadStringAttribute($hDBF, $iRecord, $iField);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть прочитано.

DBFReadStringAttribute () будет считывать значение одного поля и возвращать его в виде строки. Эта функция может использоваться для любого типа поля (включая FTInteger и FTDouble) и вернет строковое представление, хранящееся в файле .dbf. Возвращаемый указатель относится к внутреннему буферу, который действителен только до следующего вызова функции DBF. Содержимое может быть скопировано с помощью обычных строковых функций, таких как strcpy () или strdup (). Если макрос TRIM_DBF_WHITESPACE определен в shapefil.h (по умолчанию), тогда все символы верхнего и конечного пробелов (ASCII 32) будут удалены до того, как будет возвращена строка.

_DBF_IsAttributeNULL()

_DBF_IsAttributeNULL($hDBF, $iRecord, $iField);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть прочитано.

 

Эта функция вернет TRUE, если указанное поле равно NULL, иначе FALSE. Обратите внимание, что поля NULL представлены в файле .dbf как имеющие все пробелы в поле. Чтение полей NULL приведет к значению 0.0 или пустой строке с другими функциями DBFRead * Attribute ().

_DBF_WriteIntegerAttribute()

_DBF_WriteIntegerAttribute($hDBF, $iRecord, $iField, $nValue);

 

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть записано
nValue целочисленное значение, которое должно быть записано.

 

Функция _DBF_WriteIntegerAttribute() используется для записи значения в числовое поле (FTInteger или FTDouble). Если запись будет выполнена, значение TRUE будет возвращено, иначе будет возвращена FALSE. Если значение слишком велико для установки в поле, оно будет усечено, а FALSE вернется.

 

_DBF_WriteDoubleAttribute()

_DBF_WriteDoubleAttribute($hDBF, $iRecord, $iField, $nValue);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть записано.
nValue значение с плавающей запятой, которое должно быть записано.

 

Функция _DBF_WriteDoubleAttribute() используется для записи значения в числовое поле (FTInteger или FTDouble). Если запись будет выполнена, значение TRUE будет возвращено, иначе будет возвращена FALSE. Если значение слишком велико для установки в поле, оно будет усечено, а FALSE вернется.

 

_DBF_WriteStringAttribute()

_DBF_WriteStringAttribute($hDBF, $iRecord, $iField, $nValue);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть записано.
nValue строка, которая будет записана в поле.

 

Функция _DBF_WriteStringAttribute() используется для записи значения в поле строки (FString). Если запись преуспеет, значение TRUE будет возвращено, в противном случае возвращается FALSE. Если значение слишком велико для установки в поле, оно будет усечено, а FALSE вернется.

Пример:

 

 

_DBF_WriteNULLAttribute()

_DBF_WriteNULLAttribute($hDBF, $iRecord, $iField);

hDBF  дескриптор доступа для запрашиваемого файла, возвращаемый _DBF_Open() или _DBF_Create().
iRecord номер записи (номер формы), из которой значение поля следует читать.
iField поле внутри выбранной записи, которое должно быть записано.

Функция _DBF_WriteNULLAttribute() используется для очистки указанного поля до значения NULL. В .dbf-файле это представлено путем установки всего поля в пробелы. Если запись преуспеет, значение TRUE будет возвращено, в противном случае возвращается FALSE.

 

_DBF_IsRecordDeleted()

_DBF_IsRecordDeleted($hDBF, $iRecord);

hDBF дескриптор доступа для проверяемого файла.
iRecord индекс записи для проверки.

 

Возвращает TRUE (отличное от нуля), если запись помечена для удаления, иначе она возвращает FALSE.

_DBF_MarkRecordDeleted()

_DBF_MarkRecordDeleted($hDBF, $iRecord, $iDeleted);

hDBF дескриптор доступа для файла.
iRecord индекс записи для обновления.
iDeleted ИСТИНА, чтобы пометить запись, или FALSE, чтобы восстановить ее.

 

Возвращает TRUE при успешном выполнении или FALSE при ошибке.

_DBF_GetNativeFieldType()

_DBF_GetNativeFieldType($hDBF, $iField);

hDBF дескриптор доступа для файла.
iField индекс поля для запроса.

 

Эта функция возвращает код типа DBF указанного поля. Это будет один из:

  • ‘C’ (String)
  • ‘D’ (Дата)
  • ‘F’ (Float)
  • ‘N’ (числовое, с десятичным или без него)
  • ‘L’ (логический)
  • ‘M’ (памятка: 10 цифр. DBB block ptr)
  • » (поле за пределами допустимого диапазона)
Добавить комментарий