|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2007, 04:17 | #1 |
Пользователь
Регистрация: 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. Причина: объединение |
08.05.2007, 07:32 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
давай код который в DLL, телепаты в отпуске
|
08.05.2007, 11:55 | #3 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
По второму вопросу компилятор действительно воспринимает их как разные типы. Обычно этого избегают так:
type TMyArr = array of integer; .... var A: TMyArr; B: TMyArr;
Не надо ничего усложнять. Все достаточно тривиально.
|
08.05.2007, 13:11 | #4 |
Пользователь
Регистрация: 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 , трудно будет переделывать все предыдущие операции над массивами, скорее всего даже не возможно... =(( |
08.05.2007, 16:40 | #5 |
Пользователь
Регистрация: 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; |
09.05.2007, 20:31 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
надо так
procedure del( var A:arr; Index:integer; var numarr:integer);stdcall; |
09.05.2007, 21:50 | #7 |
Пользователь
Регистрация: 27.04.2007
Сообщений: 17
|
спасибо попробую..
|
11.05.2007, 20:05 | #8 |
Heavy metal
Пользователь
Регистрация: 02.04.2007
Сообщений: 42
|
Access Violation не хочешь? Тогда пиши for i:=0 to numarr - 1
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамический массив | 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 |