Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - oggetti nelle dll
Forum - Pascal - oggetti nelle dll

Avatar
David (Member)
Newbie


Messaggi: 4
Iscritto: 23/12/2014

Segnala al moderatore
Postato alle 18:05
Venerdì, 06/02/2015
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?

PM Quote
Avatar
David (Member)
Newbie


Messaggi: 4
Iscritto: 23/12/2014

Segnala al moderatore
Postato alle 10:49
Sabato, 07/02/2015
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 il 07/02/2015 alle 20:56
PM Quote