вызов dll

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Вам нужен указатель на char т.е. ^char что соответствует типу PChar.
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

а разве в си есть стринг?
как же тогда исправить?? подскажите пожалуйста а то си нас учили уже давненько да и не сказал бы что хорошо :)

Код: Выделить всё

function SSQ_SetGameServer(address:PChar):boolean; stdcall;

Код: Выделить всё

ping_success:=SSQ_SetGameServer(PChar(address));
danya
незнакомец
Сообщения: 9
Зарегистрирован: 24.09.2010 14:58:53

Сообщение danya »

хм спасибо в принципе на работу это не повлияло зависание программы осталось
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »

При вызове функции из dll-ки (что статически (не желательно!), что динамически) выдаёт ошибку: SIGSEGV и ассемблер со строкой "
myError.JPG
" Из-за чего это может быть?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Соблюдены соглашения о передачи параметров функции?
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »

Mr.Smart писал(а):Соблюдены соглашения о передачи параметров функции?

Извините, но я вас не понял...
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »


Аааа... Ну, конечно соблюдены!

Покопавшись немного, обнаружил, что этот код не рабочий:

Код: Выделить всё

function GenerateModID: ShortString;
var ModIDGenFrm: TModIDGenFrm;
    s: string;
begin
s:= '';
ModIDGenFrm:= TModIDGenFrm.Create(nil);
with ModIDGenFrm do
 begin
 ShowModal;
 s:= Edit.Text;
 Free;
 end;
Result:= s;
end;

Однако, такой код вполне работоспособен:

Код: Выделить всё

function GenerateModID: ShortString;
var ModIDGenFrm: TModIDGenFrm;
    s: string;
begin
ModIDGenFrm:= TModIDGenFrm.Create(nil);
Result:= 'Test string';
end;

Отсюда вопрос: что не так в первом коде?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Скорее всего "рушится" куча.
Почитайте это.
И можно эту статью.
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »

Mr.Smart писал(а):Скорее всего "рушится" куча.
Почитайте это.
И можно эту статью.

К сожалению, не помогло =(

UPD: только сейчас заметил: он не может показать форму, но СОЗДАЁТ её! Что за...
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

BadBoyAlex писал(а):он не может показать форму, но СОЗДАЁТ её!

Уверены, что создаёт? Попробуйте обратиться к компонентам формы и посмотреть, что будет.
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »

Vadim писал(а):
BadBoyAlex писал(а):он не может показать форму, но СОЗДАЁТ её!

Уверены, что создаёт? Попробуйте обратиться к компонентам формы и посмотреть, что будет.

Так самое интересное: СЧИТЫВАЕТ текст лайбла!
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Тогда попробуйте вместо ShowModal использовать Show.
И, раз уж доступ к форме есть, проверьте её координаты.
Аватара пользователя
BadBoyAlex
постоялец
Сообщения: 119
Зарегистрирован: 08.06.2010 12:42:23
Откуда: Россия, Белгород
Контактная информация:

Сообщение BadBoyAlex »

Vadim писал(а):Тогда попробуйте вместо ShowModal использовать Show.
И, раз уж доступ к форме есть, проверьте её координаты.

к сожалению, то же самое и с Show. Т.е. проверить координаты?
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

BadBoyAlex писал(а):При вызове функции из dll-ки (что статически (не желательно!), что динамически) выдаёт ошибку: SIGSEGV и ассемблер со строкой "

Какая функция?...Как она записана, объявлена в длл, чья ДЛЛ ваша, билла гейтса. как подключаете ДЛЛ, как используете?...
При чем тут:

Код: Выделить всё

function GenerateModID: ShortString;
- или это и есть процедура из Длл?..
Нам не нужен ваш проект (если там что то ценное или комерческое) но могли бы сделать аналогичную ситуацию через пустой проект с формой с длл, с аналогичной функцией из длл. Приложить в виде архива... А то вот я сначала сел делать.. и что... что делать то.. где код... у меня при вызове моей длл все работает просто на ура...
Во всем проекте нам будет сложно разобраться, но вот еслиб было над чем работать.. где были бы исходники всего проекта (отмечаю только пустая форма + длл с одной аналогичной функцией и вызовом и все такое..)Тобишь пустой проект показывающей где вылетает, можно было бы что то сказать...
Вы же сами видите, вам суют только ссылки где можно прочитать про длл и всякое такое.. почему нет ответов на ваш вопрос?.. да потому что вопроса то и нет... он был типа: Спартак - чемпион... (вылетает функция из длл.) и что...

Ну можно же было написать как то так:
Привожу урезанные варианты исходников:
Код ДЛЛ:

Код формы в которой вызываем функцию из длл:

вот тут вылетает ошибка:
описание ошибки скрины..
Прилагаю архив проекта для того чтобы Вы не тратили время на телепатию и копипаст из блока кодов. :
Поймите же, если ошибка в строке кода (для одной функции) зачем прилогать архив с проектом смешно же.. и так все видно. У вас же все сложнее, представьте мы должны будем скопипастить да еще и длл создать, и все такое поймите нам то это зачем...
(Мы качаем Архив распаковываем открываем проект компилим видим или не видим ошибку и отписываемся Вам...)

PS Не люблю футбол.
Ответить