powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
12 сообщений из 12, страница 1 из 1
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33336916
EvgeniyIshchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 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
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33341304
Фотография MustDie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передавать сложный класс в качестве параметра в функцию, да еще во внешнюю - это сильно! Но сложно... Откуда функция в dll знает, сколько памяти и как использует созданный вне dll объект? Может стоит передавать в фукцию только указатели на строку коннекта и на строку запроса, а в ней уже этот TADOQuery создавать, юзать и убивать?...
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33341306
Фотография MustDie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос. DLL написана на Delphi, а эту функцию получается вызвать из exe-шника, написанного тоже на Delphi (с передачей ADOQuery)? Если да, то можно посмотреть?
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342164
EvgeniyIshchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело, что с Builder практически не работал. Работал тока в Delphi. И соответственно как в Builder работать правильно с указателями не знаю.
DLL действительно пишу на Delphi, а вот exe как раз в Builder (все исходники есть). Пишу DLL на Delphi только потому что знаю его гораздо больше чем Builder.
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342229
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бильдер работает с VCL объектами только через указатели, передавай указатели, да и скорее всего именно указатель и передается в твоей ДЛЛ
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342347
EvgeniyIshchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтоб было понятнее. Функция принимает TADOQuery только для того чтобы взять из него данные и обработать их. Возвращает только true или false в зависимости от результата. Изменить код в билдере могу на указатели и соответственно подправить dll в делфи, но как правильно изменить в билдере на указатели как раз и не знаю. Просто создавать дополнительное подключение к БД не хотелось.
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342378
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniyIshchenkotypedef void (*pfuncCrtReestr)(TADOQuery);поменять на
Код: plaintext
typedef void (*pfuncCrtReestr)(TADOQuery*);
пробовал ?
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342382
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, зачем именно на бильдере писать ? Делал бы все на дельфи ...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342423
EvgeniyIshchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас попробую.

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

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
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33342687
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задай-ка ты этот вопрос в дельфийном форуме
...
Рейтинг: 0 / 0
Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
    #33345544
EvgeniyIshchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Карабас Барабас
Все оказалось очень просто. Обсуждение здесь
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите побороть ошибку ошибку VCL style classes must be constructed using operator new
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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