Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.03.2009, 03:07
SadStar SadStar вне форума
Прохожий
 
Регистрация: 27.03.2009
Сообщения: 4
Репутация: 10
Злость 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  
Старый 27.03.2009, 04:31
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Отбъект-то создай
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 27.03.2009, 05:29
SadStar SadStar вне форума
Прохожий
 
Регистрация: 27.03.2009
Сообщения: 4
Репутация: 10
Печаль А это не создание объекта?

А это не создание объекта?

var
Form1: TForm1;
TxtFile:TextFile;
DBFile:TDBF;

implementation

С текстовым файлом все нормально.
Ответить с цитированием
  #4  
Старый 27.03.2009, 06:31
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Нет, не создание
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 27.03.2009, 07:31
SadStar SadStar вне форума
Прохожий
 
Регистрация: 27.03.2009
Сообщения: 4
Репутация: 10
Смущение

И правда. Написал в 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  
Старый 27.03.2009, 11:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А после AssignFile(TxtFile, LogFileName);
такую штуку как Rewrite или Reset вы когда планировали использовать?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 30.03.2009, 08:45
SadStar SadStar вне форума
Прохожий
 
Регистрация: 27.03.2009
Сообщения: 4
Репутация: 10
Радость

Спасибо всем.
Прошу простить за чайницкие вопросы.
Изучаю систему по встроенному хелпу.
Получается недостаточно систематично.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter