w bibliotece:
Kod :
procedure usun(var root: lista; prejestracja: string); stdcall;
var
temp, usuwany: lista;
begin
if(root^.rejestracja = prejestracja) then begin
usuwany := root;
if(root^.next <> nil) then begin
root := root^.next;
end;
dispose(usuwany);
exit;
end;
temp := root;
while(temp^.next^.rejestracja <> prejestracja) do begin
temp := temp^.next;
end;
usuwany := temp^.next;
if(usuwany^.next <> nil) then begin
temp^.next := usuwany^.next;
end else begin
temp^.next := nil;
end;
dispose(usuwany);
end;
Kod :
exports
(...)
usun index 2,
(...)
Kod :
procedure TForm1.Button3Click(Sender: TObject);
var
lib: HModule;
usun: procedure(var root: lista; prejestracja: string);stdcall;
begin
lib := LoadLibrary('Project1.dll');
usun := GetProcAddress(lib, PChar(2));
usun(root, ListBox1.Items.Strings[ListBox1.ItemIndex]);
wypisz();
end;

jeśli uruchomię program poza środowiskiem to po zamknięciu i odczekaniu chwili:

jeśli w programie tylko dodaję elementy do listy albo nic nie robię i od razu go zamknę - wszystko jest ok.
pomocy!
Zakładki