Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.039 c
8-1076164815
SiDr
2004-02-07 17:40
2004.05.09
Резкость BitMap а


3-1081423941
AlexPal
2004-04-08 15:32
2004.05.09
Проблемы с Русским шрифтом


3-1081941984
Flashas
2004-04-14 15:26
2004.05.09
S DBgrid..


3-1081937227
Турчин
2004-04-14 14:07
2004.05.09
Как можно средствами Delphi обратится к базе данных?


3-1081004186
RayRom
2004-04-03 18:56
2004.05.09
’’ is not a valid integer value





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский