Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача массива в DLL 
V
    Опции темы
valentos
Дата 23.5.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Есть прога, которая из СтрингГрида заносит значения в Динамический массив!
Код

Mass:array of array of real;
/////
setlength(mass,n,m);

Потом этот массив нужно передать в функцию, расположенную в DLL, для последующей обработки!!!
Как передать такой массив!?  smile 
Напишите плиз маленький примерчик, на передачу, что бы можно было понять как это делается!!!
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
Yanis
Дата 23.5.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(valentos @  23.5.2007,  20:48 Найти цитируемый пост)
Ну так Помогите по теме, чем можите!

Код
функция(массив);

Вот так передаются параметры.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
valentos
Дата 23.5.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Цитата(Yanis @  23.5.2007,  20:00 Найти цитируемый пост)
1:функция(массив); Вот так передаются параметры.

Код

Function Func(mass:array of array of real);

Так что ли?, Помоему это бред. Так не чего не работает!

Добавлено через 2 минуты и 49 секунд
Yanis,Примерчик мона?

Это сообщение отредактировал(а) valentos - 23.5.2007, 20:09
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
Yanis
Дата 23.5.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(valentos @  23.5.2007,  21:08 Найти цитируемый пост)
Yanis,Примерчик мона?

Мона, если исходных данных дашь побольше.
Что за функция, твоя ли это dll, какой массив.

Добавлено через 49 секунд
Кстати, глянь темы предложенные внизу страницы.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
valentos
Дата 23.5.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Ну вот,   массив (Mass) -- Динамический, двумерный типа Real !!! Забит данными:
 
Код

(1 2 3 4
  5 6 7 8
 3 4 5 6)

Массив в проге:
Код

var
mass: array of array of Real;
/// Размеры
Setlength(mass,n,m);


 Его нужно передать в функцию в DLL(Своя), ну допустим Func(); Долго соченять не будем!
Код DLL:
Код

type
    aw=array of array of real;
// это функция в DLL
// Сюда надо передать массив!

function Func(ax:aw):real;
     begin
// расчеты от балды, допустим: 
       result:=ax[1,1]*ax[2,2]-ax[1,2]*ax[2,1];
     end;
 
Как передать в эту функцию мой массив(Mass)?

Это сообщение отредактировал(а) valentos - 23.5.2007, 20:40
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
Yanis
Дата 23.5.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Код
library Project1;

uses SysUtils, Classes;

type
  PArr = ^TArr;
  TArr = array of Byte;

{$R *.res}

function Summ(a: PArr): Integer; stdcall;
var
  i: Integer;
begin
  Result := 0;
  for i := Low(a^) to High(a^) do
    Result := Result + a^[i];
end;

exports
  Summ;

begin
end.


Код
function Summ(a: PArr): Integer; stdcall; external 'Project1.dll';

var
  a: TArr;
begin
  SetLength(a, 5);
  a[0] := 1;
  a[1] := 2;
  a[2] := 3;
  a[3] := 4;
  a[4] := 5;
  ShowMessage(IntToStr(Summ(@a)));
end;



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
valentos
Дата 23.5.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 7.12.2006
Где: Belarussia, Gomel

Репутация: нет
Всего: 2



Спасиб, что навели на путь истиный!!! smile 
--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
ivan219
  Дата 24.5.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Подождите речь шла о двух мерном массиве а пример на одномерном  smile  это непорядку  smile 

Как передать двух мерный массив smile 
PM MAIL ICQ   Вверх
Yanis
Дата 24.5.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(ivan219 @  24.5.2007,  19:45 Найти цитируемый пост)
Как передать двух мерный массив

Ну я ж не совсем слепой.
Я привёл просто пример. Как видно valentos догадался как переделать под себя.
А вообще, всего не много надо, а просто сменить 
Цитата(Yanis @  23.5.2007,  21:57 Найти цитируемый пост)
type
  PArr = ^TArr;
  TArr = array of Byte;

на
Цитата(Yanis @  23.5.2007,  21:57 Найти цитируемый пост)
type
  PArr = ^TArr;
  TArr = array of array of Byte;

Ну и работать с массив как с двумерным.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.