Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

вопрос знатокам фортрана   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
6-1091431561
off
2004-08-02 11:26
2004.10.10
Список имен машин в сети.


8-1090222118
Ricko
2004-07-19 11:28
2004.10.10
Автоматизация вещания радиостаниции


3-1095147625
Sirus
2004-09-14 11:40
2004.10.10
Подскажите насчет транзакций???


3-1094805144
sashuly
2004-09-10 12:32
2004.10.10
Сортировка в TTAble


8-1089901260
Serg_lys
2004-07-15 18:21
2004.10.10
Графика Image и Toolbutton