Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Добрый день всем гуру.

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

Итак, студия Embarcadero 10.1 Berlin, ODAC 10.3.9. Есть модуль, который отвечает за обращение к БД через TOraStoredProc.
unit PkMop;

interface

uses Classes, SysUtils, Ora, OraPackage, System.Variants, OraUtils,
  System.Generics.Collections, Data.DB, OraClasses, JclSysUtils;

TPkMop = class(TCustomOraPackage)
  private
    FSession: TOraSession;
    procedure GetStoreProc;
    function GetSession: TOraSession;
    procedure SetSession(AValue: TOraSession);
    procedure SetParam(AParamName: string; AList: TList<Integer>); overload;
    procedure SetParam(AParamName: string; AList: TList<string>); overload;
    procedure SetParam(AParamName: string; AList: TList<Double>); overload;
    procedure SetParam(AParamName: string; AList: TList<Variant>); overload;
    procedure GetParam(AParamName: string; AList: TList<Integer>); overload;
    procedure GetParam(AParamName: string; AList: TList<string>); overload;
    procedure GetParam(AParamName: string; AList: TList<Double>); overload;
  protected
    StoredProc: TOraStoredProc;
  published
    property Name;
    property Session: TOraSession read GetSession write SetSession;
  public
    //тут сами вызовы 
  end;

implementation

constructor TPkMop.Create(AOwner: TComponent);
begin
  inherited;
  StoredProc := TOraStoredProc.Create(nil);
end;

procedure TPkMop.GetStoreProc;
begin
  StoredProc.Session := Session;
  StoredProc.StoredProcName := '';//ошибка вылетает тут
  StoredProc.Prepared;
end;


GetStoreProc - инициализация компонента, несколько обращений к ней проходит нормально, но потом бьет ошибку. При повторном вызове вылетает AV.

В чем может быть проблема? Заранее благодарю за конструктивный ответ
27 мар 19, 17:56    [21845303]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
Отладчик используй.
27 мар 19, 18:15    [21845315]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
devart
Member

Откуда: www.devart.com
Сообщений: 1150
Пожалуйста уточните, в качестве StoredProcName Вы указываете именно значение '', либо-же имя какой-то определенной хранимой процедуры ? Во втором случае, можете ли Вы предоставить DDL-скрипт для ее создания
27 мар 19, 18:21    [21845321]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
devart
Пожалуйста уточните, в качестве StoredProcName Вы указываете именно значение '', либо-же имя какой-то определенной хранимой процедуры ? Во втором случае, можете ли Вы предоставить DDL-скрипт для ее создания


Вылетает исключительно на пустом значении. Причем один раз отрабатывает правильно, второй раз уже бьет ошибку.
Убирал процедуру инициализации TOraStoredProc, било и на существующем имени процедуры. Но опять начиная со второго раза.
27 мар 19, 19:00    [21845350]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Foxpc,

используя отладчик я нашел место где оно вылетает. Код для чего я приложил?
27 мар 19, 19:06    [21845356]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Arioch
Member

Откуда:
Сообщений: 11075
Леонов Юрий,

он имел ввиду внутри сеттера StoredProcName
27 мар 19, 19:12    [21845363]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Arioch
Леонов Юрий,

он имел ввиду внутри сеттера StoredProcName

у меня нет исходников, чтобы внутри лазить. К тому же до сегодняшнего дня все работало отлично. Проверил все изменения - никто в данном разделе ничего не правил. Остается только гадать, откуда вылезла эта ошибка.
27 мар 19, 19:23    [21845376]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
Мне почему то кажется, что память потекла где - то. Такое часто бывает, когда она течёт. К примеру кто то двинул указатель строки, и не вернул на место. И вот, такие трюки идут по одному месту

Так что, может быть виноват любой код. И искать такие ошибки можно пару месяцев
27 мар 19, 19:46    [21845398]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Cobalt747
Member

Откуда:
Сообщений: 2131
Вангую освобождение (Free) объекта
28 мар 19, 07:03    [21845639]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Cobalt747
Вангую освобождение (Free) объекта

Объект создается вызовом извне (конструктором Create) и удаляется тоже извне (вызовом Destroy). Пока живет форма, до тех пор живет и этот компонент. Код не менялся, просто резко начали сыпаться ошибки
28 мар 19, 09:52    [21845757]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Arioch
Member

Откуда:
Сообщений: 11075
Леонов Юрий
несколько обращений к ней проходит нормально, но потом бьет ошибку


какую???

Леонов Юрий
. К тому же до сегодняшнего дня все работало отлично.


но сейчас не работает

ищи либо место, где ошибка проявляется (если раньше не проявлялась, не значить что ее не было, возможно просто не проявлялась)

либо то изменение в твоей программе или БД, которое помогло ошибке проявиться
28 мар 19, 11:50    [21845924]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Arioch
Леонов Юрий
несколько обращений к ней проходит нормально, но потом бьет ошибку


какую???

Внимательно читаем заголовок темы

Arioch
Леонов Юрий
. К тому же до сегодняшнего дня все работало отлично.


но сейчас не работает

ищи либо место, где ошибка проявляется (если раньше не проявлялась, не значить что ее не было, возможно просто не проявлялась)

либо то изменение в твоей программе или БД, которое помогло ошибке проявиться


Она проявляется в разных местах, но всегда на строке типа
StoredProc.StoredProcName := 'имя процедуры';

Причем имя может быть как пустой строкой, так и реальным из БД
28 мар 19, 16:59    [21846363]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13382
Леонов Юрий
При повторном вызове вылетает AV.


конкретнее
28 мар 19, 17:06    [21846371]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
Леонов Юрий,

если что, он просит полный стэк, в левом верхнем углу. Со всеми подробностями
28 мар 19, 17:14    [21846381]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
Такие ошибки очень сложно ищаться. Если это утечка памяти. А тс ничего не хочет приводить в пример кода, кроме того участка, где проявляется диагноз
28 мар 19, 17:15    [21846385]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
ёёёёё
Member

Откуда:
Сообщений: 1545
Леонов Юрий
...
...
  StoredProc.StoredProcName := '';//ошибка вылетает тут
...

...


Ошибка
Леонов Юрий
"this type cannot consist in table"


Солнышко, такая ошибка в указанном месте "вылетать" не может.
Придется тебе рыть внутри сеттера свойства StoredProcName и, возможно, еще глубже.
28 мар 19, 17:50    [21846447]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
ёёёёё,

мне кажется разрабы Ora хорошо отладили свой код. Так что вряд ли к ним есть притенения
28 мар 19, 18:15    [21846485]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
К тому же есть глянуть, это обычный
property StoredProcName: string;
28 мар 19, 18:16    [21846487]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
ёёёёё
Member

Откуда:
Сообщений: 1545
Foxpc
ёёёёё,

мне кажется разрабы Ora хорошо отладили свой код. Так что вряд ли к ним есть притенения

Ну вот они тебе нормальное сообщение и выдали, а не какой-нибудь "AV".


Foxpc
К тому же есть глянуть, это обычный
property StoredProcName: string;

Ой, неграмотный какой.

Ну ты попробуй в своем коде тоже так проперь задекларировать, без указания имплементации.
28 мар 19, 18:24    [21846493]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Foxpc
Member

Откуда:
Сообщений: 162
ёёёёё,

Ясно. Дурачoк какой то ты. ТС говорил что у него ошибка, при присвоение любого текста к обычному свойству, созданного объекта

Так что, не надо тут умничать как будто ты всё знаешь.

Моя позиция - утечка памяти, в где то в проекте. Строки могут совершенно никак между собою связаны. Просто менеджер памяти испорчен.
28 мар 19, 18:53    [21846525]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Foxpc
Такие ошибки очень сложно ищаться. Если это утечка памяти. А тс ничего не хочет приводить в пример кода, кроме того участка, где проявляется диагноз


Кода дохрена, весь проект приводить смысла не вижу.
29 мар 19, 09:39    [21846790]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
ёёёёё
Солнышко, такая ошибка в указанном месте "вылетать" не может.
Придется тебе рыть внутри сеттера свойства StoredProcName и, возможно, еще глубже.


Солнышко??? Я похож на блондинку? То есть вы считаете, что я выдумал проблему?
Повторяюсь, исходников у меня нет, рыть в глубь, соответственно, тоже не могу
29 мар 19, 09:41    [21846792]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 543
Поискал исходники, нашел правда не совсем свежие.
Данная ошибка может вылетать только на инициализации процедурных переменных.
Но присвоение пустой строки не должно вызывать эту инициализацию...
В чем глюк - не пойму. Может прав Foxpc и тут проблемы не касаются напрямую компонента...
29 мар 19, 10:21    [21846823]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Cobalt747
Member

Откуда:
Сообщений: 2131
Леонов Юрий,

Сделай поиск по всему проекту с вызовом Free или Destroy.
29 мар 19, 11:00    [21846855]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка "this type cannot consist in table"  [new]
Arioch
Member

Откуда:
Сообщений: 11075
Cobalt747
Сделай поиск по всему проекту с вызовом Free или Destroy.


....а там окажется освобождение через ARC или TComponent.Owner или ещё как

вообще, ты что найти пытаешься, use after free?

для этого проще FreeMem перекрыть, чтобы всю свежеотпущенную память забивала каким-нибудь $DeadBeef
и смотреть где в разнос пойдёт.

Кстати в Windows LAllocMem/LFreeMem таки память затирают на освобождении (они на скорость не претендуют, так что могут себе позволить). Когда я писал "рекордный" плагин - DLL размером 2KB - то именно так нашёл баг в хостовом приложении, при исключении из Delphi 5 RTL "стандартного" heap manager всё начинало сыпаться.
29 мар 19, 12:10    [21846944]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить