Страница 2 из 3

Re: вызов dll

Добавлено: 27.09.2010 13:42:14
Mr.Smart
Вам нужен указатель на char т.е. ^char что соответствует типу PChar.

Re: вызов dll

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

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

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

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

ping_success:=SSQ_SetGameServer(PChar(address));

Re: вызов dll

Добавлено: 27.09.2010 16:59:28
danya
хм спасибо в принципе на работу это не повлияло зависание программы осталось

Re: вызов dll

Добавлено: 24.03.2011 11:27:01
BadBoyAlex
При вызове функции из dll-ки (что статически (не желательно!), что динамически) выдаёт ошибку: SIGSEGV и ассемблер со строкой "
myError.JPG
" Из-за чего это может быть?

Re: вызов dll

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

Re: вызов dll

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

Извините, но я вас не понял...

Re: вызов dll

Добавлено: 24.03.2011 11:57:50
Mr.Smart

Re: вызов dll

Добавлено: 24.03.2011 12:01:49
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;

Отсюда вопрос: что не так в первом коде?

Re: вызов dll

Добавлено: 24.03.2011 12:05:49
Mr.Smart
Скорее всего "рушится" куча.
Почитайте это.
И можно эту статью.

Re: вызов dll

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

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

UPD: только сейчас заметил: он не может показать форму, но СОЗДАЁТ её! Что за...

Re: вызов dll

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

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

Re: вызов dll

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

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

Так самое интересное: СЧИТЫВАЕТ текст лайбла!

Re: вызов dll

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

Re: вызов dll

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

к сожалению, то же самое и с Show. Т.е. проверить координаты?

Re: вызов dll

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

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

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

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

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

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

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

PS Не люблю футбол.