Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

Ошибка ADO?   Найти похожие ветки 

 
пикассо   (2009-03-04 13:28) [0]

Всем привет!
Подскажите, плиз, почему может вылетать такая ошибка?
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message "Access violation at address 4DD10C50 in module "sqloledb.dll". Read of address 766F4902". Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------
На строчке:
AdoQuery.SQL.Text := "select * from table";

что у меня слетело?


 
clickmaker ©   (2009-03-04 13:29) [1]

> На строчке:
> AdoQuery.SQL.Text := "select * from table";

точно на этой? сомнительно как-то...


 
пикассо   (2009-03-04 13:31) [2]


> clickmaker ©   (04.03.09 13:29) [1]

сам в ах... удивлен...


 
KSergey ©   (2009-03-04 13:34) [3]

все врешь
у меня на этой строчке не вылетает.


 
clickmaker ©   (2009-03-04 13:38) [4]

> [2] пикассо   (04.03.09 13:31)

вот "расшифровка" этой строчки
procedure TADOQuery.SetSQL(const Value: TStrings);
begin
 FSQL.Assign(Value);
end;

в ней нет ничего, что могло бы как-то "возбудить" sqloledb.dll
единственный вариант, приводящий к AV - ADOQuery вообще не создано


 
пикассо   (2009-03-04 13:39) [5]


> KSergey ©   (04.03.09 13:34) [3]

ага, сейчас на другой машинке попробовал: все ок...
ЧТО у меня слетело? Может поменять этот sqloledb.dll?

ЗЫ. если поможет, выслать оригинальный?


 
clickmaker ©   (2009-03-04 13:41) [6]

то есть, конечно же

procedure TStrings.SetTextStr(const Value: string);
var
 P, Start: PChar;
 S: string;
begin
 BeginUpdate;
 try
   Clear;
   P := Pointer(Value);
   if P <> nil then
     while P^ <> #0 do
     begin
       Start := P;
       while not (P^ in [ #0, #10, #13]) do Inc(P);
       SetString(S, Start, P - Start);
       Add(S);
       if P^ = #13 then Inc(P);
       if P^ = #10 then Inc(P);
     end;
 finally
   EndUpdate;
 end;
end;

никакого отношения к sqloledb.dll


 
clickmaker ©   (2009-03-04 13:46) [7]

хотя... ошибка может вылететь в

procedure TCustomADODataSet.SetCommandText(const Value: WideString);
begin
 if CommandText <> Value then
 begin
   CheckInactive;
   Command.CommandText := Value;
   PropertyChanged;
 end;
end;

я бы отладчиком зашел бы в недра adodb.pas, и там бы уже более конкретную строчку нашел


 
Эстет   (2009-03-04 13:47) [8]

Я, конечно, не силен, но в соседней ветке (http://delphimaster.net/view/2-1236094118/) sniknik © утверждает, что может. Мотивируя глюком "одной из версии обертки ADO".


 
clickmaker ©   (2009-03-04 13:52) [9]

> [5] пикассо   (04.03.09 13:39)

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


 
пикассо   (2009-03-04 13:56) [10]


> clickmaker ©   (04.03.09 13:52) [9]

нет, все одинаковое...
Раньше-то этого не было!


 
clickmaker ©   (2009-03-04 14:00) [11]

> [10] пикассо   (04.03.09 13:56)

а что-то устанавливалось на комп с того момента, могущее как-то перезаписать адошные дллки?


 
sniknik ©   (2009-03-04 14:10) [12]

версия без разницы, в любом случае при внесении запроса идет попытка получения типов параметров (если есть), в той версии о которой говорил борланд сделал "в лоб", по логике из BDE  что внесли в запрос то и передавали в обьект ADO,
и т.к. многие зачем то пишут так
add(select *);
add(from);
add(...);
....
add(...);
то естественно часть запроса валидной не являлась...
после исправили сделали типа "накопление" всех частей, а передачу после.

т.е. это был не глюк ADO, а глюк реализации от борланда конкретно ADOQuery.


 
пикассо   (2009-03-04 14:21) [13]


> clickmaker ©   (04.03.09 14:00) [11]

нет...

ADODB.pas

ошибка вылезает тут:

function TParameters.InternalRefresh: Boolean;
   procedure RefreshFromOleDB;
   .....
       if Assigned(CommandPrepare) then CommandPrepare.Prepare(0);
.....

если глуже, то тут:

System

procedure       _HandleAnyException;
asm
{$IFDEF PC_MAPPED_EXCEPTIONS}
       CMP     ECX, UW_EXC_CLASS_BORLANDCPP    // C++ exception?
       JNE     @@handleIt                      // nope, handle it
       // C++ exceptions aren"t wanted here.  Retoss them as is
       CALL    SysRaiseCPPException

@@handleIt:
       PUSH    EAX
       PUSH    EDX
       CALL    UnblockOSExceptions
       POP     EDX
       POP     EAX

       // If the exception is a Delphi exception thrown from C++, coopt it.
       CALL    MaybeCooptException

       OR      [EAX].TRaisedException.Flags, excIsBeingHandled
       CALL    LinkException
       MOV     ESI, EBX
       MOV     EDX, [ESP]
       CALL    NotifyExcept
       MOV     EBX, ESI
{$ENDIF}
{$IFNDEF  PC_MAPPED_EXCEPTIONS}
       { ->    [ESP+ 4] excPtr: PExceptionRecord       }
       {       [ESP+ 8] errPtr: PExcFrame              }
       {       [ESP+12] ctxPtr: Pointer                }
       {       [ESP+16] dspPtr: Pointer                }
       { <-    EAX return value - always one   }

       MOV     EAX,[ESP+4]
       TEST    [EAX].TExceptionRecord.ExceptionFlags,cUnwindInProgress
       JNE     @@exit

       CMP     [EAX].TExceptionRecord.ExceptionCode,cDelphiException
       MOV     EDX,[EAX].TExceptionRecord.ExceptObject
       MOV     ECX,[EAX].TExceptionRecord.ExceptAddr
       JE      @@DelphiException
       CLD
       CALL    _FpuInit
       MOV     EDX,ExceptObjProc
       TEST    EDX,EDX
       JE      @@exit
       CALL    EDX
       TEST    EAX,EAX
       JE      @@exit
       MOV     EDX,[ESP+12]
       MOV     ECX,[ESP+4]
       CMP     [ECX].TExceptionRecord.ExceptionCode,cCppException
       JE      @@CppException
       CALL    NotifyNonDelphiException


 
пикассо   (2009-03-04 14:43) [14]

а вот такой вопросик: я тут недавно в реестре увлекся удалением всяких ключиков, гм... "лишних" - может поэтому? И, если да, то как исправить?


 
brother ©   (2009-03-04 14:46) [15]

> И, если да, то как исправить?

откати систему на предыдущее состояние)


 
clickmaker ©   (2009-03-04 14:46) [16]

> как исправить?

переустанови MDAC


 
KSergey ©   (2009-03-04 14:56) [17]

> пикассо   (04.03.09 14:43) [14]
> а вот такой вопросик: я тут недавно в реестре увлекся удалением всяких ключиков, гм... "лишних" - может поэтому?

легко. оно ж все на COM, а COM сильно на реест повязан.

Обожаю людей, "оптимизирующих" реестр. хочется всех передавить разом, чес. слово. не к автору это, так, эмоции.


 
KSergey ©   (2009-03-04 14:58) [18]

> clickmaker ©   (04.03.09 14:46) [16]
> переустанови MDAC

Легко сказать. Если уже стоит посл. версия - все, приехали. Или я чего-то не знаю?

впрочем, вариант просто перезарегистрировать типы из dll-ки, возможно так же связанные. см. regsvc32


 
пикассо   (2009-03-05 12:48) [19]

Итак, переустановил виндовз - ошибка осталась, но теперь отладчик говорит, что в другой длл-ке - msvcrt.dll.
 Пробую сделать чистый проект, выполняю те же действия - все ок.

Ошибка вылезает только при присвоении св-ва SQL.Text, если запрос был задан заранее - все работает.

При запуске приложения создается модуль данных и главная форма. В OnCreate модуля данных стоит ADOConnection.Open;

Все больше ничего не выполняется. Код, вызывающий ошибку:

   with ADOQuery1 do begin
     Close;
     SQL.Clear;
     SQL.Text := " INSERT INTO inter ([name]) VALUES (:name) ";//вот тут
     Parameters.ParamByName("NAME").Value := "asfasdf";
     ExecSQL;
   end;

Пробовал на другой машине - скомпиленная прога выполняется - но там Виста.

Что это?


 
clickmaker ©   (2009-03-05 13:47) [20]

> [19] пикассо   (05.03.09 12:48)

любой запрос? или только с параметрами?
попробуй поменять имя параметра... глупость, вроде, но фиг знает
скорей всего, какая-то очень экзотическая ошибка АДО


 
пикассо   (2009-03-05 14:16) [21]


> clickmaker ©   (05.03.09 13:47) [20]

 Нет, а?! Ну кто бы мог подумать? Причем ругается из-за названия таблицы - internet_publishing... И на параметр "name" тоже!

спасибо большое!

PS. Зато девственно чистая windows!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.041 c
2-1235862485
Andrey K
2009-03-01 02:08
2009.04.19
Как добраться к свойствам компонентов.


15-1234964100
@!!ex
2009-02-18 16:35
2009.04.19
ICQ опять уронили?


2-1235711956
nastya
2009-02-27 08:19
2009.04.19
Злополучная лямда


9-1179146632
Byratino
2007-05-14 16:43
2009.04.19
Pomogote s ishodnikom


2-1235724440
D@nger
2009-02-27 11:47
2009.04.19
Почему отсекается первый символ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский