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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 16:45   #1
Ne)(us
Новичок
Джуниор
 
Регистрация: 05.05.2009
Сообщений: 1
Восклицание Делфи

Здравствуйте!! Такая проблема: реализовал в Delphi 7 DLL- библиотеку (динамически) в котором реализуется сортировка одномерного массива, но при сортировке массива постоянно прога выдаёт ошибку:

Project1
"Accsess violation at address 00000000. Read of address 00000000."

Никак не могу понять в чём проблем

Листинг проги:

library Projectdll;
uses

SysUtils,
Classes;
type
mas1 = array[1..8] of integer;
mas = array[1..8, 1..8] of integer;

var
massiv:mas;
{$R *.res}

Function sort(a:mas1):mas;export;stdcall;

var i,j,k,f: integer; x:integer;
begin
for i:=2 to 8 do
begin
for j:=8 downto i do
if a[j-1] > a[j] then
begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
end;
for k:=1 to 8 do
massiv[i-1][k]:=a[k];

end;
result:=massiv;
end;
exports sort;

begin
end.


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
aGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
mas1 = array[1..8] of integer;
mas = array[1..7, 1..8] of integer;
var
Form1:TForm1;
Sort:Function(a: mas1): mas; stdcall;
LibHandle:THandle;
i,z,k,x:integer;
a:mas1;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
randomize;
for i:=1 to 8 do
begin
a[i]:=random(200);
AGrid1.Cells[i,1]:=inttostr(a[i]);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
massiv:mas;
begin
massiv:=sort(a);
for i:=1 to 7 do
for z:=1 to 8 do
agrid1.Cells[z,i+1]:=inttostr(massiv[i,z]);

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
@Sort:=nil;
LibHandle:=loadLibrary('Projectdll. DLL');
if LibHandle >= 32 then
begin
@Sort:=GetProcAddress(LibHandle,'So rt');
end;
button1.Enabled:=true;
button2.Enabled:=true;

end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeLibrary(Handle);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

end.
Ne)(us вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
БД в делфи Neymexa Помощь студентам 29 29.01.2009 20:32
Делфи 7 Lemo Софт 1 30.12.2008 14:21
Из с++ в Делфи Andre1723 Общие вопросы Delphi 4 02.06.2008 17:50
Делфи ozhjog Свободное общение 4 20.05.2007 21:06