Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new / 12 сообщений из 12, страница 1 из 1
21.10.2005, 11:29
    #33336916
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
В builder пытаюсь вызвать функцию CreateReestrFile из PRJ_Reestr.dll таким образом:

typedef void (*pfuncCrtReestr)(TADOQuery);
pfuncCrtReestr CrtReestr;

HINSTANCE hLib = LoadLibrary("PRJ_Reestr");
if(hLib==NULL){ShowMessage("Не хватает PRJ_Reestr.dll");}
else {ShowMessage("Все на месте!!!");}

char dllpath[70];
GetModuleFileName((HMODULE)hLib,(LPTSTR)dllpath,70);
CrtReestr = (pfuncCrtReestr)GetProcAddress((HMODULE)hLib, "CreateReestrFile");
CrtReestr (QueryClients) ;
FreeLibrary((HMODULE)hLib);

но компилятор не дает этого сделать и выдает ошибку VCL style classes must be constructed using operator new на строке CrtReestr (QueryClients). Теперь вопрос: как можно передать TADOQuery в процедуру находящуюся в dll.

DLL написана на Delphi и ее можно изменять, но не знаю каким образом это необходимо сделать.
...
Рейтинг: 0 / 0
24.10.2005, 20:29
    #33341304
MustDie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Передавать сложный класс в качестве параметра в функцию, да еще во внешнюю - это сильно! Но сложно... Откуда функция в dll знает, сколько памяти и как использует созданный вне dll объект? Может стоит передавать в фукцию только указатели на строку коннекта и на строку запроса, а в ней уже этот TADOQuery создавать, юзать и убивать?...
...
Рейтинг: 0 / 0
24.10.2005, 20:31
    #33341306
MustDie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Вопрос. DLL написана на Delphi, а эту функцию получается вызвать из exe-шника, написанного тоже на Delphi (с передачей ADOQuery)? Если да, то можно посмотреть?
...
Рейтинг: 0 / 0
25.10.2005, 12:20
    #33342164
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
В том то и дело, что с Builder практически не работал. Работал тока в Delphi. И соответственно как в Builder работать правильно с указателями не знаю.
DLL действительно пишу на Delphi, а вот exe как раз в Builder (все исходники есть). Пишу DLL на Delphi только потому что знаю его гораздо больше чем Builder.
...
Рейтинг: 0 / 0
25.10.2005, 12:41
    #33342229
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Бильдер работает с VCL объектами только через указатели, передавай указатели, да и скорее всего именно указатель и передается в твоей ДЛЛ
...
Рейтинг: 0 / 0
25.10.2005, 13:06
    #33342347
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Чтоб было понятнее. Функция принимает TADOQuery только для того чтобы взять из него данные и обработать их. Возвращает только true или false в зависимости от результата. Изменить код в билдере могу на указатели и соответственно подправить dll в делфи, но как правильно изменить в билдере на указатели как раз и не знаю. Просто создавать дополнительное подключение к БД не хотелось.
...
Рейтинг: 0 / 0
25.10.2005, 13:13
    #33342378
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
EvgeniyIshchenkotypedef void (*pfuncCrtReestr)(TADOQuery);поменять на
Код: plaintext
typedef void (*pfuncCrtReestr)(TADOQuery*);
пробовал ?
...
Рейтинг: 0 / 0
25.10.2005, 13:14
    #33342382
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Кстати, зачем именно на бильдере писать ? Делал бы все на дельфи ...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
25.10.2005, 13:21
    #33342423
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Сейчас попробую.

Сменил место работы. В планах было переводить приложение на делфи. Но руководство приняло решение переводить все на ERP и соответственно переписывание под делфи не имеет смысла, но есть некоторые моменты которые очень устарели (в данном случае - работа с отчетами в Excel) и которые необходимо обновить (вернее переписать, т.к. написано было, мягко говоря, криво).
...
Рейтинг: 0 / 0
25.10.2005, 13:59
    #33342554
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Нет, не получилось:

Procedure CreateReestrFile (QueryClients: Pointer);
begin
if not TADOQuery(QueryClients^).Active
then TADOQuery(QueryClients^).open;
TADOQuery(QueryClients^).RecordCount;
End;

TADOQuery(QueryClients^).Active все хорошо, результат true, но
TADOQuery(QueryClients^).RecordCount вызывает ексепшн.
...
Рейтинг: 0 / 0
25.10.2005, 14:29
    #33342687
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Задай-ка ты этот вопрос в дельфийном форуме
...
Рейтинг: 0 / 0
26.10.2005, 16:21
    #33345544
EvgeniyIshchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
To Карабас Барабас
Все оказалось очень просто. Обсуждение здесь
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]