Oppure

Loading
06/02/15 17:05
David
Sto programmando un giochino testuale con turbo pascal 7 in modo
protetto, che comprende l'uso di un oggetto implementato in una dll.

Ho usato un procedimento che mi funziona, ma non so se
è un procedimento sempre valido.
Il procedimento è questo.
Ho creato un oggetto in una unit che ha solo campi(variabili)
con indicatore di visibilità public, non avendo la possibilità di
usare il protected.
es. unit prv;
Type
minicalc=object
x,y:integer;
end;

A questo punto ho creato in una dll un oggetto in questo modo
che contiene solo metodi. Es. library prv_dll;
uses prv;
mcalc=object(minicalc)
procedure init;
procedure dai_num(a,b:integer);
end;

procedure mcalc.init;
begin ... end;
procedure mcalc.dai_num;
begin ... end;

procedure init(var s:mcalc); export;
begin s.init end;
procedure dai_num(var s:mcalc;a,b:integer); export;
begin s.dai_num(a,b) end;

exports
init,
dai_num;


A questo punto nel programma scrivo:
uses prv;
var q:^minicalc;

procedure init(var s:minicalc); far; external 'prv_dll';
procedure dai_num(var s:minicalc;a,b:integer);far;external 'prv_dll';

begin
new(q);
init(q^);
dai_num(q^,3,4);
dispose(q);
end.


Il sistema per quello che devo fare funziona,
ma non so se è un metodo sempre valido!
Che ne pensate?
aaa
07/02/15 9:49
David
Funziona anche in un'altra maniera,
con oggetti 'compatibili'(senza polimorfismo
ossia senza passare nel parametro passato
per indirizzo oggetti discendenti!)...

modifiche:
nella unit prv dichiaro le stesse variabili con
indice di visibilità private

nella dll aggiungo nell'oggetto le stesse variabili con lo stesso
ordine sempre con visibilità private, senza creare
discendenza ossia dichiarando nella dll
mcalc=object e non mcalc=object(minicalc)
ecc...

funziona tutto benissimo!.....

Ultima modifica effettuata da David 07/02/15 19:56
aaa