Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    c# [eseguire metodi a runtime]

    Salve a tutti.Ho il seg. problema , e finora non ho trovato risposta.

    Problem:
    Ho una form , 1 textbox e 1 button.
    Supponiamo che nella casella di testo , io scriva "button1.go".
    a questo punto premo invio e automaticamente , venga eseguita la funzione go del button1.


    Spero che ci sia qualcuno che possa aiutarmi,non so dove sbattere la testa.
    Aiuto

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: c# [eseguire metodi a runtime]

    Originariamente inviato da Dylan_Web
    Ho una form , 1 textbox e 1 button.
    Supponiamo che nella casella di testo , io scriva "button1.go".
    a questo punto premo invio e automaticamente , venga eseguita la funzione go del button1.
    Un Button non ha una funzione Go...cosa intendi di preciso? Spiegati meglio...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ho scritto Button1.go , per dire che è una funzione associata ad un certo oggetto, ad esmpio button.

    Se ti è + chiaro, al posto di button1.go , posso scrivere "button1.Enabled = false".
    A questo punto automaticamente devo settare la proprietà enabled a false.


    Grazie mille per il tuo inetresamento.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se ho capito bene, tu intendi eseguire un'istruzione partendo dalla sua rappresentazione sottoforma di stringa?

    Per eseguire codice alla pressione di un tasto o al clic su un pulsante, sono disponibili gli eventi.

    Così come mi è parso tu voglia implementare le cose, dovresti fare un uso pesante delle classi di gestione del CodeDOM, cioè di classi particolari che possono essere utilizzate per la generazione al volo di codice e relativa compilazione per poterle mandare poi in esecuzione.

    Si tratta di una tematica molto complessa, secondo me, che sconsiglierei ai neofiti.

    Se ne hai la necessità per esigenze specifiche di progetto, dovresti iniziare a cercare la parola chiave che ti ho suggerito su Google, altrimenti adottare una strada alternativa (quasi sicuramente possibile) per ottenere lo stesso risultato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ti approfondisco il mio problema, ho un client in c# ed un server supponiamo anch'esso in c#.
    Il server ad un certo punto invierà dati al client sotto forma di stringa, tipo "Botton1.setEnabled= true".
    A questo punto il client, dovrà eseguire il compito.


    Ora l'altra strada che mi ero posto è definire ciò che pùò richiedere o meno il server, tipo una classe dove dove definisco "se ricevi setenabled_on allora avvia Botton1.setEnabled= true"
    Solo che mi sembra limitativo.

    Secondo te se mi studio CodeDOM, riesco a generare tipo l'evento on_click , on_double_click , ... , setenabled ecc..?
    Hai qualche esempio da postarmi o link interessanti?



    Grazie mille per i tuoi consigli.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Secondo me, se ho compreso a fondo il tuo obiettivo, la strada che hai intrapreso è troppo complessa e - soprattutto - si presta a molti buchi di sicurezza terribili: potrebbero essere utilizzati comandi tali da danneggiare il sistema.

    Se vuoi implementare una comunicazione tra client e server, non è meglio che tu stabilisca una specie di protocollo proprietario?

    In definitiva, contempli un numero limitato e preciso di comandi eseguibili ai quali si possono associare dei parametri con altrettanti valori; in seguito, implementi tramite codice un parser, cioè una classe in grado di interpretare i comandi in arrivo ed eseguire, in modo incorporato o attraverso la generazione di eventi, codice in modo opportuno che sia in grado di assolvere il compito assegnato (leggi "rispondere al comando").

    Ad esempio, il tipo di dati System.String ti fornisce tantissimi metodi per estrarre sottostringhe, verificare la presenza e la posizione di un testo, convertire in valori numerici e così via.

    La realizzazione di un parser può essere un po' boriosa e lunga ma abbastanza intuitiva; a fronte dei comandi che riesci ad interpretare (in base alle funzionalità che prevedi di inserire) esegui il codice corrispondente.

    L'esecuzione di codice al volo sarebbe molto rischiosa, secondo me, oltre che più complessa da implementare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Sono d'accordo con te, nel costruire un parser che esegua dei comandi.Ma pensa un'attimo a come poi è possibile aggiungere un comando.
    Tipo Parser.add("Stringa" , "comandao da eseguire");

    Esempio:
    parser.add("clicca" , "on_click()");


    A questo punto on_click() dovrebbe essere un puntatore al metodo.

    Quindi dovrei pensare ad un'array bidimensionale[Stringa , *func]
    Giusto? Che ne pensi? Suggerimenti?


    1.000.000 di ringraziamenti

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Dylan_Web
    A questo punto on_click() dovrebbe essere un puntatore al metodo.
    Uhm...no, non hai capito cosa intendevo io.

    Io intendevo qualcosa del tipo

    Comando: BUTTON Click

    cui il parser identifica la parte BUTTON e la parte Click eseguendo il codice (fisso, non reso dinamico):
    codice:
    if (command == "BUTTON" && arg = "Click")
    {
      MyButton.Click();
    }
    In definitiva, definisci in modo statico le azioni che puoi eseguire e inventi un protocollo che possa eseguirle una per una; in base al comando e all'argomento, esegui il codice appropriato, ma senza compilare ed eseguire il codice nella stringa del comando, altrimenti in tal caso torniamo alla situazione iniziale.

    In realtà, dovresti spiegarmi di preciso cosa stai cercando di realizzare, altrimenti è inutile che stiamo qui a cercare di trovare una soluzione che poi non si adatta al problema vero e proprio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Io mi ero posto il problema , perchè volevo creare qualcosa di dinamico.
    Per mia fortuna, mi hanno appena chiesto di fare qualcosa di statico.

    Quindi il semplice parser va + che bene.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.