Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизФункция в DLL с типизированным результатом????? Найти похожие ветки
← →
Ultr © (2004-04-20 17:33) [0]Я хочу использовать ф-ю в ДЛЛ, которая-бы возвращала не одно значение, а record значений. Выглядит ето так:
type RunDLLProc = function(SendData: TRegData): TReturnData; stdcall;
(это экспортная ф-я в ДЛЛ"ке)
...она в принципе даже работает, и результат возвращает, но после ее исполнения ДЛЛ не хочет делать ФриЛибрари.
...если вместо TReturnData я ставлю просто, скажем, byte, все прокатывает без проблем.
Поможите, люди, горю...
← →
Ultr © (2004-04-20 17:33) [0]Я хочу использовать ф-ю в ДЛЛ, которая-бы возвращала не одно значение, а record значений. Выглядит ето так:
type RunDLLProc = function(SendData: TRegData): TReturnData; stdcall;
(это экспортная ф-я в ДЛЛ"ке)
...она в принципе даже работает, и результат возвращает, но после ее исполнения ДЛЛ не хочет делать ФриЛибрари.
...если вместо TReturnData я ставлю просто, скажем, byte, все прокатывает без проблем.
Поможите, люди, горю...
← →
SammIk © (2004-04-20 17:35) [1]А ты вовробуи так
type
rec=record
end;
prec=^rec;
type RunDLLProc = function(SendData: PRec); stdcall;
← →
SammIk © (2004-04-20 17:35) [1]А ты вовробуи так
type
rec=record
end;
prec=^rec;
type RunDLLProc = function(SendData: PRec); stdcall;
← →
VAleksey © (2004-04-20 17:38) [2]
> Ultr © (20.04.04 17:33)
А ты ShareMem использовал?
← →
VAleksey © (2004-04-20 17:38) [2]
> Ultr © (20.04.04 17:33)
А ты ShareMem использовал?
← →
Ultr © (2004-04-20 17:39) [3]Уточнения:
1.TReturnData = record
два string"а
и два byte
end;
2. В экзешнике я, естественно, так-же ф-ю описываю, как и в длл...
← →
Ultr © (2004-04-20 17:39) [3]Уточнения:
1.TReturnData = record
два string"а
и два byte
end;
2. В экзешнике я, естественно, так-же ф-ю описываю, как и в длл...
← →
Digitman © (2004-04-20 17:40) [4]Удалено модератором
← →
Digitman © (2004-04-20 17:40) [4]Удалено модератором
← →
SammIk © (2004-04-20 17:40) [5]Передоваи в в-ю не данные, а указатель на эти данные,
и возвращяи, тоже не данные а адреса.
Алексеи тему говорит, с этим тоже могут быть косяки
← →
SammIk © (2004-04-20 17:40) [5]Передоваи в в-ю не данные, а указатель на эти данные,
и возвращяи, тоже не данные а адреса.
Алексеи тему говорит, с этим тоже могут быть косяки
← →
PVOzerski © (2004-04-20 17:40) [6]Тогда уж так:
procedure(SendData:TRegData;var ReturnData:TReturnData);stdcall;
А по сабжу: в самом деле, интересно...
← →
PVOzerski © (2004-04-20 17:40) [6]Тогда уж так:
procedure(SendData:TRegData;var ReturnData:TReturnData);stdcall;
А по сабжу: в самом деле, интересно...
← →
PVOzerski © (2004-04-20 17:43) [7]> два string"а
Вот с этого бы и начинал... Надо, чтобы и dll, и вызывающая ее прога юзали один и тот же менеджер динамической памяти. Потому как AnsiString - вещь очень хитрая. ShareMem - это стандартное решение от Borland.
← →
PVOzerski © (2004-04-20 17:43) [7]> два string"а
Вот с этого бы и начинал... Надо, чтобы и dll, и вызывающая ее прога юзали один и тот же менеджер динамической памяти. Потому как AnsiString - вещь очень хитрая. ShareMem - это стандартное решение от Borland.
← →
SammIk © (2004-04-20 17:43) [8]Удалено модератором
← →
SammIk © (2004-04-20 17:43) [8]Удалено модератором
← →
SammIk © (2004-04-20 17:44) [9]Да и что я не так сказал?
← →
SammIk © (2004-04-20 17:44) [9]Да и что я не так сказал?
← →
Digitman © (2004-04-20 17:45) [10]Удалено модератором
← →
Digitman © (2004-04-20 17:45) [10]Удалено модератором
← →
SammIk © (2004-04-20 17:48) [11]что нельзя передовать в ф-ю DWORD(ака POINTER)?
Переубели меня, если я не прав.
← →
SammIk © (2004-04-20 17:48) [11]что нельзя передовать в ф-ю DWORD(ака POINTER)?
Переубели меня, если я не прав.
← →
VMcL © (2004-04-20 17:51) [12]>>Ultr © (20.04.04 17:39) [3]
см. [2].
← →
VMcL © (2004-04-20 17:51) [12]>>Ultr © (20.04.04 17:39) [3]
см. [2].
← →
Digitman © (2004-04-20 17:51) [13]
> SammIk © (20.04.04 17:48) [11]
вопрос был поставлен конкретно
> ДЛЛ не хочет делать ФриЛибрари
ты же полез в дебри... к тому же - дебри сомнительные :
> type RunDLLProc = function(SendData: PRec); stdcall;
и это - ФУНКЦИЯ ??
← →
Digitman © (2004-04-20 17:51) [13]
> SammIk © (20.04.04 17:48) [11]
вопрос был поставлен конкретно
> ДЛЛ не хочет делать ФриЛибрари
ты же полез в дебри... к тому же - дебри сомнительные :
> type RunDLLProc = function(SendData: PRec); stdcall;
и это - ФУНКЦИЯ ??
← →
PVOzerski © (2004-04-20 17:53) [14]2SammIk © (20.04.04 17:48) [11]
Можно. Только, как минимум, нужно, чтобы функция что-нибудь возвращала. Иначе уже JavaScript какой-то.
← →
PVOzerski © (2004-04-20 17:53) [14]2SammIk © (20.04.04 17:48) [11]
Можно. Только, как минимум, нужно, чтобы функция что-нибудь возвращала. Иначе уже JavaScript какой-то.
← →
PVOzerski © (2004-04-20 17:55) [15]А вообще-то при передаче параметра-указателя сразу может встать вопрос: кто под него память выделит? И здесь начинающий программист может наломать дров.
← →
PVOzerski © (2004-04-20 17:55) [15]А вообще-то при передаче параметра-указателя сразу может встать вопрос: кто под него память выделит? И здесь начинающий программист может наломать дров.
← →
Digitman © (2004-04-20 17:55) [16]
> SammIk © (20.04.04 17:48) [11]
> что нельзя передовать в ф-ю DWORD(ака POINTER)?
ты хочешь заставить ДУМАТЬ автора ? или ты хочешь , чтобы заставили думать ТЕБЯ, прежде чем постить то, что имеет весьма посредственное отношение к сабжу вопроса ?
← →
Digitman © (2004-04-20 17:55) [16]
> SammIk © (20.04.04 17:48) [11]
> что нельзя передовать в ф-ю DWORD(ака POINTER)?
ты хочешь заставить ДУМАТЬ автора ? или ты хочешь , чтобы заставили думать ТЕБЯ, прежде чем постить то, что имеет весьма посредственное отношение к сабжу вопроса ?
← →
SammIk © (2004-04-20 17:56) [17]Это всеровно что анегдот:
-ты масло маж.
-я мажу.
-Нет, ты не мажешь, а клядешь
А ф-и и процедуры- одно и тоже, тока одно возвращает осмысленныи
результат, другое что душе угодно(VOID).
И разве через поинторы не лучше?
Нинадо никаких ShareMem цеплять.
← →
SammIk © (2004-04-20 17:56) [17]Это всеровно что анегдот:
-ты масло маж.
-я мажу.
-Нет, ты не мажешь, а клядешь
А ф-и и процедуры- одно и тоже, тока одно возвращает осмысленныи
результат, другое что душе угодно(VOID).
И разве через поинторы не лучше?
Нинадо никаких ShareMem цеплять.
← →
WebErr © (2004-04-20 18:01) [18]
> type RunDLLProc = function(SendData: TRegData): TReturnData; stdcall;
А она точно должна быть stdcall?
← →
WebErr © (2004-04-20 18:01) [18]
> type RunDLLProc = function(SendData: TRegData): TReturnData; stdcall;
А она точно должна быть stdcall?
← →
Digitman © (2004-04-20 18:01) [19]Удалено модератором
← →
Digitman © (2004-04-20 18:01) [19]Удалено модератором
← →
PVOzerski © (2004-04-20 18:01) [20]>А ф-и и процедуры- одно и тоже, тока одно возвращает осмысленныи
>результат, другое что душе угодно(VOID).
Ага, только надо же с синтаксисом языка считаться. И писать procedure там, где "VOID". А то компилятор не поймет.
>И разве через поинторы не лучше?
А теперь представь себе: ты получил в dll-ную ф-цию указатель на запись с длиннымим строками и у одной из этих строк, работая в DLL, попытался поменять длину. Что будет? Вот тебе и указатель...
← →
PVOzerski © (2004-04-20 18:01) [20]>А ф-и и процедуры- одно и тоже, тока одно возвращает осмысленныи
>результат, другое что душе угодно(VOID).
Ага, только надо же с синтаксисом языка считаться. И писать procedure там, где "VOID". А то компилятор не поймет.
>И разве через поинторы не лучше?
А теперь представь себе: ты получил в dll-ную ф-цию указатель на запись с длиннымим строками и у одной из этих строк, работая в DLL, попытался поменять длину. Что будет? Вот тебе и указатель...
← →
SammIk © (2004-04-20 18:05) [21]Подумаешь немного окосячил, с кем не бывает.
А принцип я думаю и так был понятен, если нет то горе мне,
слепцу этакому.
И что будет, если не секрет?
← →
SammIk © (2004-04-20 18:05) [21]Подумаешь немного окосячил, с кем не бывает.
А принцип я думаю и так был понятен, если нет то горе мне,
слепцу этакому.
И что будет, если не секрет?
← →
Digitman © (2004-04-20 18:05) [22]Удалено модератором
← →
Digitman © (2004-04-20 18:05) [22]Удалено модератором
← →
WondeRu © (2004-04-20 18:07) [23]Удалено модератором
← →
WondeRu © (2004-04-20 18:07) [23]Удалено модератором
← →
Digitman © (2004-04-20 18:08) [24]Удалено модератором
← →
Digitman © (2004-04-20 18:08) [24]Удалено модератором
← →
PVOzerski © (2004-04-20 18:09) [25]2SammIk © (20.04.04 18:05) [21]:
А непредсказуемо что будет. Но суть проблемы - та же, что в [1]: попытка работать с автоматически переинициализируемым динамическим блоком памяти, контролируемым другим менеджером кучи. То, во избежание чего sharemem используют.
← →
PVOzerski © (2004-04-20 18:09) [25]2SammIk © (20.04.04 18:05) [21]:
А непредсказуемо что будет. Но суть проблемы - та же, что в [1]: попытка работать с автоматически переинициализируемым динамическим блоком памяти, контролируемым другим менеджером кучи. То, во избежание чего sharemem используют.
← →
WondeRu © (2004-04-20 18:11) [26]Удалено модератором
← →
WondeRu © (2004-04-20 18:11) [26]Удалено модератором
← →
PVOzerski © (2004-04-20 18:11) [27]2Ultr ©:
Либо юзай ShareMem, либо убирай длинные строки из возвращаемой структуры.
← →
PVOzerski © (2004-04-20 18:11) [27]2Ultr ©:
Либо юзай ShareMem, либо убирай длинные строки из возвращаемой структуры.
← →
SammIk © (2004-04-20 18:13) [28]Удалено модератором
← →
SammIk © (2004-04-20 18:13) [28]Удалено модератором
← →
Digitman © (2004-04-20 18:14) [29]Удалено модератором
← →
Digitman © (2004-04-20 18:14) [29]Удалено модератором
← →
Digitman © (2004-04-20 18:15) [30]Удалено модератором
← →
Digitman © (2004-04-20 18:15) [30]Удалено модератором
← →
SammIk © (2004-04-20 18:17) [31]Удалено модератором
← →
SammIk © (2004-04-20 18:17) [31]Удалено модератором
← →
SammIk © (2004-04-20 18:19) [32]Удалено модератором
← →
SammIk © (2004-04-20 18:19) [32]Удалено модератором
← →
WondeRu © (2004-04-20 18:20) [33]Удалено модератором
← →
WondeRu © (2004-04-20 18:20) [33]Удалено модератором
← →
Digitman © (2004-04-20 18:27) [34]Удалено модератором
← →
Digitman © (2004-04-20 18:27) [34]Удалено модератором
← →
SammIk © (2004-04-20 18:29) [35]Удалено модератором
← →
SammIk © (2004-04-20 18:29) [35]Удалено модератором
← →
Тимохов © (2004-04-20 18:34) [36]34+35.
Какая досада - я так за этим следил :))))))
Все-таки по теме вопроса, какой выдод - он малость потерялся среди перепалок?
← →
Тимохов © (2004-04-20 18:34) [36]34+35.
Какая досада - я так за этим следил :))))))
Все-таки по теме вопроса, какой выдод - он малость потерялся среди перепалок?
← →
SammIk © (2004-04-20 18:39) [37]Удалено модератором
Примечание: Оффтоп...
← →
SammIk © (2004-04-20 18:39) [37]Удалено модератором
Примечание: Оффтоп...
← →
Smithson © (2004-04-20 18:46) [38]Удалено модератором
← →
Smithson © (2004-04-20 18:46) [38]Удалено модератором
← →
WebErr © (2004-04-20 18:56) [39]Удалено модератором
Примечание: Оффтоп...
← →
WebErr © (2004-04-20 18:56) [39]Удалено модератором
Примечание: Оффтоп...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.038 c