Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

О написании собственной DLL   Найти похожие ветки 

 
NasdaqPredictor ©   (2010-05-12 03:08) [0]

Доброго времени суток, коллеги !

Есть проблема, впервые столкнулся с написанием собственной ДЛЛ.
Суть задачи :
1.Есть большая прога на Дельфи.
2.Нужно вызвать эту прогу из Матлаба, получить большой массив вычисленных значений и обработать их в Матлабе.
3.Далее Матлаб по Генетическому алгоритму снова формирует
 массив параметров для вызова проги написанной в дельфи.
4.Длл делает то что в пункте 2.

и так до светлого будущего.

Процедуру вызова сторонней длл, написанной на дельфи из матлаба освоил.
Теперь вот кряхчу над самой длл-кой.

Вопрос спецам :

1.Может ли сама Длл, как полноценное приложение, без вызова формы выполнять программу внутри себя на основании public переменных, выполняя ту функцию, которая вызывается из Матлаба, причем внутри этой функции есть обращения к процедурам и функциям , содержащимся внутри самой Dll

2.Излазил книгу Фленова "Библия ДЕльфи" вдоль и поперек на предмет создания своих Длл, там нет формата создания Длл на случай, описанный в пункте 1.
Если кому не внапряг, приведите пожалуйста общий формат Длл для этого случая.

Заранее благодарю за время.
С уважением, Павел.


 
Германн ©   (2010-05-12 03:16) [1]


> 1.Может ли сама Длл, как полноценное приложение, без вызова
> формы выполнять программу внутри себя

Dll по сути своей разрабатывалась разработчиками, которые ничего не знали о формах!


> 2.Излазил книгу Фленова "Библия ДЕльфи" вдоль и поперек
> на предмет создания своих Длл

Ты всё пела, это дело. Так поди же попляши.


 
NasdaqPredictor ©   (2010-05-12 03:29) [2]

Герман, спасибо за ответ .

в моей Длл нет форм, только главная прога из которой вызываются другие процедуры и функции.

Если можно по сути.


 
Германн ©   (2010-05-12 03:40) [3]


> NasdaqPredictor ©   (12.05.10 03:29) [2]
>
> Герман, спасибо за ответ .
>
> в моей Длл нет форм, только главная прога из которой вызываются
> другие процедуры и функции.
>

Извини, но это опять бред! В длл нет и не может быть никаких прог.


 
Юрий Зотов ©   (2010-05-12 03:56) [4]

> 1.Может ли сама Длл, как полноценное приложение, без вызова
> формы выполнять программу внутри себя на основании public
> переменных, выполняя ту функцию, которая вызывается из Матлаба,
>  причем внутри этой функции есть обращения к процедурам
> и функциям , содержащимся внутри самой Dll

Может. DLL как раз для этого, в основном, и предназначены. По сути, DLL - это набор обычных констант, переменных, процедур и функций. Одну (или несколько) из этих функций вызывает внешняя программа (Матлаб), далее эта функция может делать все, что угодно (в том числе, может вызывать другие процедуры и функции из той же DLL).

> 2.Излазил книгу Фленова "Библия ДЕльфи" вдоль и поперек
> на предмет создания своих Длл, там нет формата создания
> Длл на случай, описанный в пункте 1.

Меню File-New-DLL. Delphi сама создаст прототип DLL.

> Если кому не внапряг, приведите пожалуйста общий формат
> Длл для этого случая.

library Project1;

uses ...;

const ...;

type ...;

var ...

procedure Proc1(...);
var
 ...
begin
 ...
end;

procedure Proc2(...);
begin
 ...
end;

function Func1(...);
var
 ...
begin
 ...
end;

function MainFunc(...); stdcall; // См. в справке Calling Convetions
begin
 ...
end;

exports MainFunc; // Эту функцию будет можно вызывать снаружи

begin

end.


 
Германн ©   (2010-05-12 04:16) [5]


> NasdaqPredictor ©   (12.05.10 03:29) [2]
>
> Герман, спасибо за ответ .
>
> в моей Длл нет форм, только главная прога из которой вызываются
> другие процедуры и функции.
>
> Если можно по сути.
>

Ну вот и ответ. Спасибо Юрию Зотову.


 
NasdaqPredictor ©   (2010-05-12 04:51) [6]

Юрий , спасибо за развернутый ответ !

С вопросом 1 понятно, это радует, ибо перспектива писать одну главную процедуру в матлабе, который не хочет получать результаты вычисления Длл по параметрам функций и приходится только через хард диск (временные файлы результатов вычислений) явно не хочется.

По вопросу 2, на сколько я понял из приведенного формата длл , процедуры и функции пишутся без обьявлений их , а сразу в том виде, в котором они
пишутся в обычной проге после слова implementation ?

тогда вопрос 3, у меня , моя прога вызывает специальные функции, для работы с эфемеридами NASA, из библиотеки разработчиков длл Swiss Ephemerith (Швейцарские эфемериды). с командными словами external
Где обьявлять их ? в каком разделе в типах ?

и последнее.

Вопрос 4.
при компиляции кода отлаженной длл-ки созданной по тому формату, что
приведена в книге Фленова и целиком согласуется с приведенным Вами форматом, компилятор выдает следующее сообщение об ошибке :

EXPORTS allowed only at global scope

что это значит и как это можно устранить ?


 
sniknik ©   (2010-05-12 07:50) [7]

> EXPORTS allowed only at global scope
> что это значит и как это можно устранить ?
это означает, что модифицируя шаблон Юрия ты внес него ошибку... в часть експорта. устраняется это убиранием ошибки.


 
Leonid Troyanovsky ©   (2010-05-12 07:52) [8]


> NasdaqPredictor ©   (12.05.10 04:51) [6]

> Где обьявлять их ? в каком разделе в типах ?

Там же, где и собс-ные функции.

> что это значит и как это можно устранить ?

В окне Compiler Message выделяешь интересующую ошибку и жмешь F1.

Размещать Exports надо там, где показал ЮЗ.

--
Regards, LVT.


 
NasdaqPredictor ©   (2010-05-12 08:17) [9]

Удалено модератором


 
Anatoly Podgoretsky ©   (2010-05-12 09:19) [10]

> NasdaqPredictor  (12.05.2010 03:08:00)  [0]

1. Нет.
2. Нашел где лазить.


 
Loginov Dmitry ©   (2010-05-12 13:44) [11]


> 2.Нужно вызвать эту прогу из Матлаба, получить большой массив
> вычисленных значений и обработать их в Матлабе.
> 3.Далее Матлаб по Генетическому алгоритму снова формирует
>  массив параметров для вызова проги написанной в дельфи.
>


ИМХО, через COM быстрее получится сделать.


 
NasdaqPredictor ©   (2010-05-12 15:09) [12]

Удалено модератором



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.062 c
2-1274132876
antonn
2010-05-18 01:47
2010.08.27
Дата компилирования


2-1272172207
@!!ex
2010-04-25 09:10
2010.08.27
Как програмно удалить IE Cookes и сохраненные пароли?


2-1266325693
Rail
2010-02-16 16:08
2010.08.27
как правильно указать путь к бд


2-1271319504
Б
2010-04-15 12:18
2010.08.27
Не срабатывает SetWaitableTimer.


15-1266442205
Юрий
2010-02-18 00:30
2010.08.27
С днем рождения ! 18 февраля 2010 четверг





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский