Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при чтении данных [D5, Paradox]


_alex_niv_ ©   (2005-08-23 12:11:00) 

Добрый день!
Народ помогите разобраться в чем дело.
У меня в dll-ке находиться функция считывающая из базы данные по запросу, она нормально работала около года, пока вчера на одном компе не стала выдавать такую ошибку:
“Exception EDBEnginError in module main.dll at 0006578E”.
причем на всех остальных компах она работает нормально, ошибка вылетает именно на этом.
Текст функции:

function ReadValPar(ANameObject : PChar;
                   ATypesSize : Word
                             ): Integer; stdcall;
var
  tblMainTable: TQuery;
  sqlString    : String;
begin
 Result := -1;
 sqlString:= 'select ValObject FROM TablesSizeForm where TypeSize = :TypeSize and NameObject = :NameObject';

 tblMainTable := TQuery.Create(nil);
 try
   with tblMainTable do
   begin
     DatabaseName := StrPas(GetsExePathPc) + 'SizeBds';
     Close;
     SQL.Clear;
     SQL.Add (sqlString);
     Params[0].DataType:= ftFloat;
     Params[1].DataType:= ftString;
     Prepare;
     Params[0].Value := ATypesSize;
     Params[1].Value := StrPas(ANameObject);
     Open;
     if Fields [0].AsString <> '' then
     begin
         Result:= Fields [0].AsInteger;
     end
     else
       Result:= -2;
     Close;
   end;
 finally
   tblMainTable.Free;
 end;
end;


_alex_niv_   (2005-08-23 17:37:00) [1]

> у тебя же все перед глазами, неужели нельзя выделить на какой > стадии глюк?
В том то и дело не могу найти где ошибка
От куда она берется
И почему уже год работало на нескольких машинах - ее ни разу не было, а тут вдруг появилась.

реализация функции GetsExePathPc:
function GetsExePathPc: PChar;
begin
 Result:= PChar(ExtractFilePath(paramstr(0)));
end;
Я сделал переприсвоение через строковую переменную - ошибка перестала появляться, но где гарантия что завтра она снова не появится.


sniknik   (2005-08-23 17:08:00) [2]

> С чем это может быть связано?
с реализацией/ошибками в функции GetsExePathPc ???

с происками империалистов которые в путь в конец три символа бакспейса внесли ???

у тебя же все перед глазами, неужели нельзя выделить на какой стадии глюк?


_alex_niv_   (2005-08-23 16:47:00) [3]

Текст ошибки:
Invalid directory ...
В свойстве
DatabaseName := StrPas(GetsExePathPc) + 'SizeBds';
Перед 'SizeBds' затираются 3 буквы пути
С чем это может быть связано?


Desdechado   (2005-08-23 15:40:00) [4]

и текст ЭТОЙ ошибки, под отладчиком при Open


_alex_niv_   (2005-08-23 14:34:00) [5]

> sniknik ©   (23.08.05 14:26) [3]

> повод спросить себя "а там ли ставлю?".
Дело в том что BDE устанавливается вместе с программой InstallShield-ом
мы с этой прогой работаем постоянно и уже устаналивали десятки раз на разные машины, а вот такая ошибка вылетела первый раз

> пройдись трассировщиком внутри dll, раз уж дельфи поставил

что ты понимаешь под трассировщиком - стандартный Делфийский отладчик
пробовал - ошибка вылетает при попытке выполнения скрипта методом
Open;


sniknik   (2005-08-23 14:26:00) [6]

> то ошибка не появляется???
повод спросить себя "а там ли ставлю?".

пройдись трассировщиком внутри dll, раз уж дельфи поставил.


_alex_niv_   (2005-08-23 14:23:00) [7]

БДЕ я уже пробовал переустанавливать несколько раз.
Последний раз установил туда полностью Delphi
И еще
Когда я ставлю в мою функцию вывод сообщения
Showmessage
то ошибка не появляется???


Desdechado   (2005-08-23 13:53:00) [8]

1. что сделали с тем компом?
2. ошибка БДЕ-шная, может, его снесли?
3. протрассируй именно на нем


Наверх

Титульная страница Поиск, карта сайта Написать письмо