Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2007, 04:17   #1
LEKA
Пользователь
 
Регистрация: 27.04.2007
Сообщений: 17
По умолчанию

Проблема такая , процедуры в DLL работающие с динамическими массивами не хотят работать,так мало того и виснет комп.Пробывал ставить ShareMem не помогает = (
Пишет ошибку


и еще вопрос , у меня в type обьявленно arr = array of integer;
a:arr;
B:array of integer;
Когда делаю так a:=b; пишет что разные типы, как исправить проблему?

Последний раз редактировалось zetrix; 08.05.2007 в 15:52. Причина: объединение
LEKA вне форума Ответить с цитированием
Старый 08.05.2007, 07:32   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

давай код который в DLL, телепаты в отпуске
rpy3uH вне форума Ответить с цитированием
Старый 08.05.2007, 11:55   #3
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

По второму вопросу компилятор действительно воспринимает их как разные типы. Обычно этого избегают так:
type
TMyArr = array of integer;

....
var
A: TMyArr;
B: TMyArr;
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 08.05.2007, 13:11   #4
LEKA
Пользователь
 
Регистрация: 27.04.2007
Сообщений: 17
По умолчанию

Функция вызываемая из dll:
function arrconnect(var firstarr:array of integer; numarr:integer;Secondarr:array of integer; numarr2:integer):arr;stdcall;
var
i,z: Integer;
a:arr;
begin
for i:=1 to numarr do
a[i]:=firstarr[i];
z:=numarr+1;
for i:=1 to numarr2 do
begin
a[z]:=secondarr[i];
z:=z+1;
end;
result:=a;

end;



т.к до этого массв используються как array of integer , трудно будет переделывать все предыдущие операции над массивами, скорее всего даже не возможно... =((
LEKA вне форума Ответить с цитированием
Старый 08.05.2007, 16:40   #5
LEKA
Пользователь
 
Регистрация: 27.04.2007
Сообщений: 17
По умолчанию

Или вот эта процедура удаления элемента из масива, возвращает изначальное значение numarr вместо numarr-1; в чем может проблема??
procedure del( var A:arr; Index:integer; numarr:integer);stdcall;
var i : integer;
begin
for i:=index to numarr do
begin
a[i]:=a[i+1];
end;
numarr:=numarr-1;
end;
LEKA вне форума Ответить с цитированием
Старый 09.05.2007, 20:31   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

надо так
procedure del( var A:arr; Index:integer; var numarr:integer);stdcall;
rpy3uH вне форума Ответить с цитированием
Старый 09.05.2007, 21:50   #7
LEKA
Пользователь
 
Регистрация: 27.04.2007
Сообщений: 17
По умолчанию

спасибо попробую..
LEKA вне форума Ответить с цитированием
Старый 11.05.2007, 20:05   #8
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
По умолчанию

Цитата:
Сообщение от LEKA Посмотреть сообщение
...
for i:=1 to numarr do
a[i]:=firstarr[i];
...
Access Violation не хочешь? Тогда пиши for i:=0 to numarr - 1
Voland вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический массив _ares_ Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2007 23:54
динамический массив Diller Помощь студентам 48 07.10.2007 16:43
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31
Динамический массив Mickle Общие вопросы Delphi 8 19.06.2007 06:45