Vai al contenuto



Foto

[mshell] Passare Puntatori


  • Per favore accedi per rispondere
8 risposte a questa discussione

#1 OFFLINE   lento

lento

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 638 messaggi
  • Cellulare:E72

Inviato 27 novembre 2009 - 11:23

Scusate, ma forse sto' perdendo troppo velocemente i miei pochi neuroni....
Ero convinto che anche in mShell si potesse assegnare funzioni tramite i puntatori.
Esempio:
function stampa(frase)
	  print(frase);
end;

printone=stampa;

printone("hello");

Forse mi confondo con il linguaggio Lua....ma ero convinto che si poteva fare! magari nelle prime versioni di mShell????
qualcuno sa rispondermi?

#2 OFFLINE   xMetallicax

xMetallicax

    Senior Member

  • Developer
  • 953 messaggi
  • Località:Saporito (CS)
  • Cellulare:6720
  • Firmware:031.022

Inviato 27 novembre 2009 - 14:26

Si può fare ;)
Basta che prima della funzione ci metti la E commerciale (&)

quindi:
printone=&stampa;
printone("hello");


#3 OFFLINE   lento

lento

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 638 messaggi
  • Cellulare:E72

Inviato 27 novembre 2009 - 18:17

Grazie!
Mi ero un pò perso, ho visto che cè una bella paginetta sul manuale...certo che allora si può veramente fare un bel mucchietto di cose in mShell! :crying_anim02:

#4 OFFLINE   Nick_7

Nick_7

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStelletta
  • 349 messaggi
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 29 novembre 2009 - 11:02

Ciao lento, mi attendo qualche piccolo esempio anche riguardo a questa funzione "cursore" come al solito...

#5 OFFLINE   lento

lento

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 638 messaggi
  • Cellulare:E72

Inviato 29 novembre 2009 - 11:31

Ciao lento, mi attendo qualche piccolo esempio anche riguardo a questa funzione "cursore" come al solito...

Ciao 'Nick_7' .
Se ti riferisci al passaggio di funzioni tramite puntatori, puoi star tranquillo a breve ne vedrai delle belle!. (Spero)
Cursore? (ricorda che ho pochi neuroni) a cosa ti riferisci con cursore?

#6 OFFLINE   Nick_7

Nick_7

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStelletta
  • 349 messaggi
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 29 novembre 2009 - 13:50

mi sa che ho confuso puntatore con cursore... Io per cursore intendevo la freccia stile mouse, per puntatore invece che cosa si intende?

#7 OFFLINE   lento

lento

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 638 messaggi
  • Cellulare:E72

Inviato 29 novembre 2009 - 13:57

mi sa che ho confuso puntatore con cursore... Io per cursore intendevo la freccia stile mouse, per puntatore invece che cosa si intende?

'Nick_7' prova a chiederlo nel forum aprendo un nuovo topic.
Son convinto che troverai persone disposte a spiegartelo.
Anche perché è un concetto presente sia nella programmazione c++ che in Python e j2me. Di sicuro in questo forum ci sono persone più competenti di me per spiegartelo.

#8 OFFLINE   masmil1988

masmil1988

    Millennium Member

  • Developer
  • 1576 messaggi
  • Località:Alcamo (TP)
  • Cellulare:Nokia 5800
  • Firmware:51.0.006

Inviato 30 novembre 2009 - 16:09

Uhm, manca effettivamente qualcosa a riguardo nella guida e forse sarebbe il caso di trattare anche questo...

Un puntatore è nient'altro che una variabile che contiene un indirizzo in memoria, di una variabile o una funzione, si tratta comunque di un indirizzo.
In mShell è possibile far contenere a una variabile l'indirizzo di una funzione (ma non di una variabile, non chiedetemi perchè).

Un esempio veloce:
function somma(primo,secondo)
	return a+b;
end;

function differenza(primo,secondo)
	return a-b;
end;

"scegli cosa vuoi fare" // sarebbe da implementare il codice per la scelta ma mi secca
"inserisci a e b" // sarebbe da scrivere anche questo

if scelta=1 then pFunc=&somma end;
if scelta=2 then pFunc=&differenza end;

print pFunc(a,b);

Questo è un utilizzo molto stupido dei puntatori a funzione, però in generale può avere utilità anche fondamentali.
Un esempio, mettiamo caso qualcuno crei una classe per creare figure geometriche, e voglia lasciare la libertà al programmatore di decidere come implementare la funzione per stampare gli oggetti. In questo caso il programmatore si ritrova già tutta la classe bell'e fatta e deve soltanto preoccuparsi di realizzare una funzione, che poi passerà come parametro al costruttore della classe, la quale saprà quale funzione chiamare per stampare gli oggetti...

Mi viene questo esempio, ma ce ne potrebbero essere anche molti altri, se lento o qualcun altro ha qualcos'altro in mente o un esempio migliore che lo scriva pure, magari riusciamo a essere più chiari e poi metto tutto nella guida ;)


ps. Dovremmo anche parlare di classi astratte... ;) quante cose e quanto poco tempo a disposizione!!!

Messaggio modificato da masmil1988, 30 novembre 2009 - 16:15


#9 OFFLINE   lento

lento

    Senior Member

  • Utente
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 638 messaggi
  • Cellulare:E72

Inviato 02 dicembre 2009 - 08:48

Uhm, manca effettivamente qualcosa a riguardo nella guida e forse sarebbe il caso di trattare anche questo...

'masmil1988' se vuoi fare un opera di bene.....Dovresti spiegarci come si gestisce la tastiera e gli schermi tattili con i nuovi nokia
N97 e 5800.
Vedo che sul sito ufficiale nessuno risponde alla domanda di 'Nik_7' e personalmente trovandomi meglio con E71 non me la sento
di passare giornate intere a sperimentare, per capire come funziona il tutto.

Se hai già affrontato il problema potresti aiutare parecchi adoratori di mShell ( di sicuro due!.)

Grazie in tutti i casi.