Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Stilgar - Gennaio 23, 2013, 10:48:38 pm

Titolo: metodo(const parametro);
Inserito da: Stilgar - Gennaio 23, 2013, 10:48:38 pm
Ciao a tutti.
Chi conosce questa dichiarazione di firma?
Il mio problema è come utilizzare il parametro dentro al metodo.
Con il debug me lo indica come "void" ... (e già questo è tutto un dire).
Sono andato a scomodare la sintassi absolute per la dichiarazione delle variabili nello stack. Ma non vedo una beata fava che possa aiutarmi a capire cosa il compilatore fa depositare nello stack di chiamata.

Esperienze pregresse che possano essere d'aiuto?
Sono partito come approccio al array of const.
Ma ho verificato che :
1) Non funziona allo stesso modo.
xor
1) Non ci ho capito nulla.

Grazie in anticipo a chi mi darà del pirla.

Stilgar
Titolo: Re:metodo(const parametro);
Inserito da: Legolas - Gennaio 23, 2013, 11:49:03 pm
Hai provato a dare un'occhiata qua:
http://www.freepascal.org/docs-html/ref/refsu56.html#x154-16400014.4.2 (http://www.freepascal.org/docs-html/ref/refsu56.html#x154-16400014.4.2)

Sembra che i parametri untyped const siano utilizzabili, effettuando un typecast dove richiesto. Probabilmente del parametro const untyped viene passato solo l'indirizzo di memoria, però non saprei dirti di più, dato che non li ho mai usati  :o :-[

 
Titolo: Re:metodo(const parametro);
Inserito da: Stilgar - Gennaio 23, 2013, 11:59:02 pm
Il problema è che non so cosa mi viene passato e non voglio limitare l'utente nel passaggio del parametro.
La cosa stramba è che passo un TList.create come parametro...
Pensavo anche io che mi desse solo address del parametro, ma vedendo "void", non so nemmeno dove girarmi per cercare di capire.
Ok, passerò ai variant, ma li trovo ... "poco eleganti" ... per così dire.
(Legolas, io ho sempre visto la definizione in questo modo per la firma di funzioni esportate dalle dll, mai visti per funzioni/metodi scritti in Delphi/Turbo Pascal. Per questo non sapevo bene cosa aspettarmi.
Amen. Avete scoperto che si può anche non mettere il tipo nella definizione delle firme. :D
Stilgar
Titolo: Re:metodo(const parametro);
Inserito da: nomorelogic - Gennaio 24, 2013, 09:56:00 am
premesso che è la prima volta anche per me che mi imbatto in qualcosa del genere

penserei ad un parametro pointer e basta però una volta dentro al metodo come si capisce che cosa ci è stato passato?
mi sa che i variant vanno bene... ;)