|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
TDBF exception - help me now!!!
Я не Дельфист. Но
Понадобилось срочно сделать простую спец утилитку. Я выбрал Дельфи т.к. там есть нужные компоненты. Для сохранения в DBF файл нашел простейший компонент и возрадовался. ----- Компонент TDBF. Автор : Брусникин Игорь Викторович - majar@nm.ru Версия : 1.11 - 14.06.2004 Статус : Свободно распостраняемый (freeware). Назначение : Компонент TDBF предназначен для непосредственного доступа (безиспользования BDE, ODBC и т.п.) к файлам формата dbf версий dBase III+, dBase IV, dBase V, dBase for Windows. Работает с Delphi 3..6 под Windows 9X/NT4/2000/XP. --------- Компиляция в Дельфи 6- без вопросов При выполнении DBFile.Active:=false; в модуле Unit1.pas всплывает >Debuger exception notification >Project ....exe raised exception class EAccessyViolation with message 'Access violation at address .... in module '....exe'. Read of address 0000035'. >Process stopped. При этом в модуле DBF.pas подсвечена строка > if FActive then в процедуре procedure TDbf.Close; begin if FActive then begin DFile.Free; ClearHeader; FieldList.Clear; FActive:=False; end else raise ED.Create('Close: Ôàéë íå îòêðûò'); end; описание внутренних переменных такое private FTableName: String; FExclusive: Boolean; FActive: Boolean; при выполнении DBFile.TableName:=DBFileName; выпадает на строке if not FActive then в процедуре procedure TDbf.SetTableName(Name: String); begin if not FActive then begin if UpperCase(ExtractFileExt(Name))='.DBF' then FTableName:=Name else raise ED.Create('TableName: Íåäîïóñòèìûé òèï ôàéëà'); end else raise ED.Create('TableName: Ýòî ñâîéñòâî íåëüçÿ èçìåíÿòü, åñëè ôàéë îòêðûò'); end; Подскажите чайнику = в чем проблема Может какой режим компиляции изменить? У меня все по-умолчанию. |
#2
|
||||
|
||||
Отбъект-то создай
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
А это не создание объекта?
А это не создание объекта?
var Form1: TForm1; TxtFile:TextFile; DBFile:TDBF; implementation С текстовым файлом все нормально. |
#4
|
||||
|
||||
Нет, не создание
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
И правда. Написал в TForm1.FormCreate(Sender: TObject);
DBFile:=TDBF.Create(Form1); И вроде заработал компонент. !!!! Премного благодарен!!!! Вылез другой косяк. С закрытием текстового файла. открываю по кнопке так //---------------------------------------- if not FileExists(LogFileName) then begin FileHandle := FileCreate(LogFileName); FileClose(FileHandle); end; AssignFile(TxtFile, LogFileName); по событию записываю Append(TxtFile); Write(TxtFile, ReseivString ); Flush(TxtFile); закрываю по кнопке CloseFile(TxtFile); Так вот если не было события записи, то при закрытии >Debuger exception notification >Project ....exe raised exception class EInOutError with message 'I/O error 103'. >Process stopped. Что то еще неправильно понимаю? |
#6
|
||||
|
||||
А после AssignFile(TxtFile, LogFileName);
такую штуку как Rewrite или Reset вы когда планировали использовать? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |