Вниз
Скачать: CL | DM;

Вызов функции из DLL и конвертация типов   Найти похожие ветки 

← →
vaBRAMYAK   (2008-12-07 20:46) [0]

Здравствуйте! Нужна помощь!
Есть библиотека DLL написана на C++. В ней есть експортируемая функция
_RunSQLConsole(Con : TADOConnection; Str : pchar) : pchar; stdcall.
При вызове этой функции, откривается форма с редактором запроса, текст запроса передается через параметр str, и после закрития формы тест передается вызываемому приложению. Нужно эту функуию вызвать из приложения написанного на delphi 2009.
функцию прикрутил в своем приложении вот так:

function _RunSQLConsole(Con : TADOConnection; Str : pchar) : pchar; Stdcall; External "SQLTOOLS.dll";

Текст, передаваемый функции имеет тип string и на выходе надо тоже получить string.Вызов:

procedure TForm1.Button6Click(Sender: TObject);
var return, input : pchar;
begin
 input := Pchar(SynEdit1.Text);
 return := _RunSQLConsole(DM.ADOConnection1,input);
 SynEdit1.Text := string(return);
end;

Правильно не работает, при вызове в открывшемся редакторе отображается непонятно что, а при закрытии вываливается ошибка обращения к памяти.
Подскажите как правильно реализовать это дело. Спасибо.


← →
Anatoly Podgoretsky ©   (2008-12-07 22:41) [1]

> vaBRAMYAK  (07.12.2008 20:46:00)  [0]

http://www.podgoretsky.com/OtherParts/DM/BadTips.aspx Совет 3


← →
Сергей М. ©   (2008-12-08 08:49) [2]


> на C++


> TADOConnection


В С++ нет никаких "TADOConnection".


← →
oxffff ©   (2008-12-08 09:18) [3]


> В С++ нет никаких "TADOConnection".


Ничего не мешает так обозвать тип.


← →
Сергей М. ©   (2008-12-08 09:34) [4]


> Ничего не мешает так обозвать тип


Америку ты не открыл.


← →
Anatoly Podgoretsky ©   (2008-12-08 10:14) [5]


> Ничего не мешает так обозвать тип.

В таком случае описание типа в студию.


← →
МистерТ   (2008-12-08 10:39) [6]

В D2009 строки стали юникодовыми, поэтому нужно использовать AnsiString и PAnsiChar
Что получится в итоге:
input := Pchar(SynEdit1.Text);
честно даже не знаю, надо бы наверное как-то так
var s : AnsiString;
begin
 s := SynEdit1.Text;
 input := PAnsiChar(s);


← →
oxffff ©   (2008-12-08 11:45) [7]


> Сергей М. ©   (08.12.08 09:34) [4]


см. [2]. Утверждение взято с потолка.
И автор не утверждал о наличии связи между С++ и TADOConnection.
см [0].


← →
Leonid Troyanovsky ©   (2008-12-08 19:52) [8]


> oxffff ©   (08.12.08 11:45) [7]

> И автор не утверждал о наличии связи между С++ и TADOConnection.

Пусть автор утвердит не наличие связи в студии.

--
Regards, LVT.


← →
oxffff ©   (2008-12-08 20:27) [9]


> Пусть автор утвердит не наличие связи в студии.


Первого канала? :)


← →
GrayFace ©   (2008-12-09 12:57) [10]

> Правильно не работает
Это точно. Правильно делает, что не работает. Не помню, хранит ли Edit текст в переменной, но если не хранит, то строка, которую ты получаешь сразу же уничтажается, т.к. на нее нет ссылок (PChar на счетчик ссылок, естественно, не влияет - он может быть ссылкой на что угодно). Надо делать как МистерТ[6].


← →
KSergey ©   (2008-12-09 16:45) [11]

Автор, вы не привели как функция описана в C++ библиотеке.


← →
KSergey ©   (2008-12-09 16:46) [12]

С Королевства, этот вопрос:

Сообщение от автора вопроса
Все заработало после замены pchar на pansichar. Всем спасибо за поддержку.


← →
novex   (2008-12-09 19:56) [13]


> Сергей М. ©   (08.12.08 08:49) [2]
> > на C++> TADOConnectionВ С++ нет никаких "TADOConnection".
>


в C++ Builder есть.


← →
Сергей М. ©   (2008-12-09 20:13) [14]


> novex   (09.12.08 19:56) [13]


Разных С++ в природе - как в Бразилии педров.
А билдер у топик стартера не фигурирует.


← →
Riply ©   (2008-12-09 21:13) [15]

> [14] Сергей М. ©   (09.12.08 20:13)
> Разных С++ в природе - как в Бразилии педров.

<Offtop в защиту Педров>
Бразильские Педры не менее известные личности, чем, например, Вася Пупкин.
Поэтому очень неуважительно о них писать с маленькой буквы :)


← →
Сергей М. ©   (2008-12-09 21:31) [16]


> Riply ©   (09.12.08 21:13) [15]


Замечание принято.
Педро - это звучит гордо)



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.007 c
15-1256021069
ocean
2009-10-20 10:44
2009.12.20
Ночной кошмар


15-1255816492
NailMan
2009-10-18 01:54
2009.12.20
1млн ФПС - СлоМо видео попадания пуль в препятствия


2-1257362090
bagi
2009-11-04 22:14
2009.12.20
создание профилей настроек


2-1257016742
maxstarts
2009-10-31 22:19
2009.12.20
Программа виснет при скрытие вкладок pagecontrol ов


2-1257094427
Don
2009-11-01 19:53
2009.12.20
Как сделать компонент image1 на форме полупрозрачным




   Наверх