|  | 
|  15.12.2011, 15:00 | #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(); } | 
|  | 
|  15.12.2011, 16:56 | #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, законченный пример, полезное | 
|  | 
| 
 |