Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Внизвопрос знатокам фортрана Найти похожие ветки
← →
ghg © (2004-09-15 12:01) [0]на фортране написана dll
что хочется:
на вход к ней поступает из дельфи объект содержащий длину массива и дин.массив (ну или указатели на дин.массив)
вопрос: как описать в фортране поступающий на вход объект
type datas
integer*4 NQ
real*8 XRC(1:NQ)
END type
так не компиляется
type datas
integer*4 NQ
pointer pXRC
END type
так тоже
← →
Pul (2004-09-15 14:51) [1]Цитата 1
>> на фортране написана dll
Цитата 2
>> так не компиляется
DLL уже написана, осталось только разобраться как ее откомпилировать
← →
ghg © (2004-09-15 15:43) [2]dll написана и работает когда в объекте нет указателей и массивов
вопрос в том как вставить в объект еще и массив или указтель на массив и чтобы все работало
кто нибудь работал в фортране с записами, структурами, type-ми?
← →
MBo © (2004-09-21 14:16) [3]http://triton.itep.ru/~lyosha/Articles/LanguageBarrier.html
← →
MBo © (2004-09-21 14:25) [4]http://www.nag.co.uk/numeric/BorlandDelphi.asp
http://www.nag.co.uk/doc/inun/fl20/dll4zl/un.html#Delphi
← →
ghg © (2004-09-21 15:16) [5]2 Mbo
ничего нового для себя не узнал
во всех этих примерах в качестве параметров импортируемых из фортрана процедур выступают статические массивы
кроме того, этих параметров очень много, что на мой взгляд очень неудобно
а хотелось бы на вход расчетной процедуры в DLL подать объект который всё это большое количество параметров содержит в себе (и в частности ими могут быть дин.массивы)
вот по этому поводу что-нибудь можно узнать? Вы это делали сами?
← →
Amoeba © (2004-09-21 15:29) [6]
> а хотелось бы на вход расчетной процедуры в DLL подать объект
> который всё это большое количество параметров содержит в
> себе (и в частности ими могут быть дин.массивы)
А с чего ты решил, что FORTRAN эти вещи обязан поддерживать?
← →
MBo © (2004-09-21 15:30) [7]>подать объект
смущает использование термина объект - полагаю, не в смысле экземпляра класса, а все же скорее запись.
>Вы это делали сами?
Давно уже, не знал, как строки передавать - одна из ссылок помогла.
Синтаксис фортрана я уже забыл, конкретных рекомендаций, увы, не дам.
← →
ghg © (2004-09-21 15:36) [8]>Amoeba © (21.09.04 15:29) [6]
ни с чего
но и не видел нигде чтобы было написано что фортран этого не поддерживает
>MBo © (21.09.04 15:30) [7]
да конечно для делфи это запись, в фортране же приходится описывать как type
передать строку это еще не сильная проблема, а вот чтобы эта строка (AnsiString) была внутри record, вот тут у меня сложности
← →
KSergey © (2004-09-21 15:45) [9]> [8] ghg © (21.09.04 15:36)
> передать строку это еще не сильная проблема, а вот чтобы
> эта строка (AnsiString) была внутри record, вот тут у меня
> сложности
По-моему, передавать куда-либо дельфийские строки - неверный подход. Равно как (тем более) пытаться их принимать.
Просто потому, что формат их недокументирован (если не заблуждаюсь; т.е. найти его описание - не проблема, конечно, но...)
А если и документирован - фортран-то про них все равно нифига не знает по определению.
Так что тут единственно верный путь по-моему - строки фиксированной длины, либо PChar.
← →
ghg © (2004-09-21 15:52) [10]>KSergey © (21.09.04 15:45) [9]
строки меня мало интересуют, мне дин.массивы интересны
просто если суметь сделать со строкой Ansi, то тем же менером можно и с дин.массивом обойтись
← →
KSergey © (2004-09-21 15:58) [11]Ну елки...
В моем посте меняем "строки" на "дин. массивы" - и тоже самое читаем!
Для массива - можно передать указатель на первый элемент (это указатель на память где он лежит получится), а так же - кол-во элементов. Вот и все. Аналоги в фортране, уверен, найти можно. Смотреть сейчас лень.
Только вот вопрос: вы хотите дин. массив просто передать и попользовать данные из него или записать новые не меняя длину, или прямо на ходу менять длину дин. массива в фортран проге? Второе, однако, никак не получится, уверяю. Разве что перепишете менеджер память в фортране на манер дельфийского sharemem.dll, либо научитись ее пользовать... Но что-то в этом подходе все равно не верно...
← →
ghg © (2004-09-21 16:12) [12]>KSergey © (21.09.04 15:58) [11]
"Для массива - можно передать указатель на первый элемент (это указатель на память где он лежит получится), а так же - кол-во элементов. Вот и все. Аналоги в фортране, уверен, найти можно. Смотреть сейчас лень."
это все понятно. но как это реализовать? я попробовал, у меня не получилось найти аналоги.
"вы хотите дин. массив просто передать и попользовать данные из него"
вот этого и хочу, но чтобы эти массивы были внутри record-а, который подаем как входной параметр
← →
KSergey © (2004-09-21 16:19) [13]> "вы хотите дин. массив просто передать и попользовать данные
> из него"
> вот этого и хочу, но чтобы эти массивы были внутри record-а,
> который подаем как входной параметр
Увы, невозможно.
В рекор просто покласть указатель на начало массива и жлину - вот и все.
К стати, открою секрет: в дельфи на самом деле это так и есть. Вот. Только там не просто указатель, а может какая служебная еще инфа лежит- но это уже детали, мы ее тоже по сути ложим - см. про длину.
← →
ghg © (2004-09-22 06:13) [14]:)
и так тоже пробовал. нифига не получается. в фортране работа с указателями как-то не очень понятно.
если можешь что-то посоветовать то завтра в аське с тобою свяжусь.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.034 c