|
![]() |
#1 |
Участник
|
Коллеги, а есть у кого рабочий пример для создания DBF c помощью "FastDbf"
Не могу понять как работать с заголовком DBF, подскажите в чем не прав - пример создает файл нулевой длины и не отпускает его пока открыта АХ. X++: static void DBFCreate(Args _args) { SocialExplorer.IO.FastDBF.DbfFile dbfFile = new SocialExplorer.IO.FastDBF.DbfFile(); SocialExplorer.IO.FastDBF.DbfRecord dbfRecord; SocialExplorer.IO.FastDBF.DbfHeader dbfHeader; ; dbfFile.Create("c:\\tt1.dbf"); dbfHeader = dbfFile.get_Header(); dbfHeader.AddColumn("StrCol", SocialExplorer.IO.FastDBF.DbfColumnType::Character, 20, 0); dbfHeader.AddColumn("NumCol1", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 15, 3); dbfHeader.AddColumn("NumCol2", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 3, 0); dbfHeader.AddColumn("DateCol", SocialExplorer.IO.FastDBF.DbfColumnType::Date); dbfHeader.AddColumn("BoolCol", SocialExplorer.IO.FastDBF.DbfColumnType::Boolean); dbfRecord = new SocialExplorer.IO.FastDBF.DbfRecord(dbfHeader, System.Text.Encoding::GetEncoding(1251)); dbfRecord.set_Item(1, 'Test'); dbfRecord.set_Item(2, '100.10'); dbfRecord.set_Item(3, '10'); dbfRecord.SetDateValue(4,str2datetime('31.12.2010', 123)); dbfRecord.set_Item(5, '1'); dbfFile.Write(dbfRecord); dbfFile.WriteHeader(); dbfFile.Close(); } |
|
![]() |
#2 |
Участник
|
Цитата:
При работе с NET не забывайте о таких особенностях: 1. Ядро аксапты не перехватывает CLR ошибки, поэтому их нужно перехватывать в коде самому, иначе остаются "висеть" инициализированные объекты (в вашем случае захваченные файлы). Со сборкой мусора при использовании CLR не все так просто... Кроме того вы просто не сможете понять в чем причина ошибки... 2. В NET принято нумерация последовательности объектов (строк, стобцов...) с нуля а не с единицы как в аксапте. X++: static void DBFCreate(Args _args) { SocialExplorer.IO.FastDBF.DbfFile dbfFile = new SocialExplorer.IO.FastDBF.DbfFile(); SocialExplorer.IO.FastDBF.DbfRecord dbfRecord; SocialExplorer.IO.FastDBF.DbfHeader dbfHeader; ; try { winApi::deleteFile("c:\\tt1.dbf"); dbfFile.Create("c:\\tt1.dbf"); dbfHeader = dbfFile.get_Header(); dbfHeader.AddColumn("StrCol", SocialExplorer.IO.FastDBF.DbfColumnType::Character, 20, 0); dbfHeader.AddColumn("NumCol1", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 15, 3); dbfHeader.AddColumn("NumCol2", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 3, 0); dbfHeader.AddColumn("DateCol", SocialExplorer.IO.FastDBF.DbfColumnType::Date); dbfHeader.AddColumn("BoolCol", SocialExplorer.IO.FastDBF.DbfColumnType::Boolean); dbfRecord = new SocialExplorer.IO.FastDBF.DbfRecord(dbfHeader, System.Text.Encoding::GetEncoding(1251)); dbfRecord.set_Item(0, 'Test'); dbfRecord.set_Item(1, "100"); dbfRecord.set_Item(2, "10"); dbfRecord.SetDateValue(3,str2datetime('31.12.2010', 123)); dbfRecord.set_Item(4, 'f'); dbfFile.Write(dbfRecord); dbfFile.WriteHeader(); dbfFile.Close(); } catch (Exception::CLRError) { dbfFile.Close(); Error(AifUtil::getClrErrorMessage()); } } |
|
|
За это сообщение автора поблагодарили: gl00mie (2), alvares (1). |
Теги |
.net, dbf, fastdbf, законченный пример, полезное |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|