Skip to content

Latest commit

 

History

History

DBFReader

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

DBFReader

Модуль, реализующий функции чтения из DBF-файлов.

Свойства

  • number VersionID -
    сигнатура версии DBF

  • DateTime LastUpdate -
    дата последнего обновления файла

  • number HeaderLength -
    длина заголовка

  • number RecordsCount -
    количество записей в файле

  • number FirstRecordPosition -
    смещение области данных

  • number RecordLength -
    длина записи

  • number CodePage -
    идентификатор кодовой таблицы

  • number FieldsCount -
    количество полей

  • table Fields - массив таблиц, каждая из которых описывает одно поле DBF-файла и содержит следующие поля:
    string Name - имя поля;
    string Type - тип поля;
    number Length - длина значения.

Методы

  • new(string file_name) -
    конструктор класса. Открывает файл file_name и создает объект класса DBFReader. По окончании работы файл файл должен быть закрыт методом close.
dbf = DBFReader(file_name)
...
dbf:close()
  • read() -
    читает очередную запись из файла, возвращает таблицу "ключ-значение". Ключ - имя поля.
dbf = DBFReader(file_name)
repeat 
	local rec = dbf:read()
	...
until not rec
dbf:close()
  • skip(number n) -
    пропускает указанное количество записей (читает данные из файла не возвращая значений).
dbf = DBFReader(file_name)
dbf:skip(10)
dbf:close()
  • lines() - итератор по записям.
dbf = DBFReader(file_name)
for rec in dbf:lines() do
...
end
dbf:close()
  • close() - закрывает файл

Пример использования

function dbf2csv(src_file,dest_file)
	dbf = DBFReader(src_file)
	if not dbf then
		return
	end
	writefile(dest_file,"")
	repeat
		local rec = dbf:read()
		if not rec then
			break
		end
		local t = {}
		for i=1,#Fields do
			local fname = Fields[i].Name
			local val = rec[fname] or ""
			table.insert(t,val)
		end	
		appendfile(dest_file,table.concat(t,";").."\n")
	until not rec
	dbf:close()
end

См.также