Come posso memorizzare, ad esempio, il corpo di un metodo in un database e successivamente eseguirlo? (Sto usando Delphi XE2, forse RTTI sarebbe d'aiuto.)Come posso eseguire il codice memorizzato in un database?
risposta
RTTI non è un interprete di lingua completa. Delphi è un linguaggio compilato. Lo scrivi, lo compila e distribuisci solo i tuoi binari. A meno che tu non sia Embarcadero, non hai i diritti per distribuire DCC32 (il compilatore della riga di comando).
Tuttavia, lo JVCL include un sottoinsieme di linguaggio delphi racchiuso in un componente molto facile da usare, chiamato "JvInterpreter". Potresti scrivere del codice (come pascal) e metterlo in un database. Potresti quindi "eseguire quel codice" (interpretato, non compilato) che estrai dal database. In genere, queste dovrebbero essere procedure che chiamano metodi nel codice. Dovrai scrivere alcuni "wrapper" che espongono le API compilate che desideri esporre all'interprete (fornire accesso a dati in tempo reale, oggetti di connessione al database o oggetti table/query). Stai pensando che questo suoni perfetto, vero? Bene, è una trappola.
Attenzione a qualcosa chiamato "the configuration complexity clock". Hai appena raggiunto le 9, ed è qui che inizia un sacco di dolore e sofferenza. Proprio come quando hai un problema, e lo risolvi con espressioni regolari, e "ora hai due problemi", aggiungere script e DSL alla tua app ha un modo di risolvere un problema e crearne altri.
Mentre penso che l'idea "DLL archiviata in un campo di blob del database" sia malvagia e assurda, penso che l'aggiunta sfrenata di script e linguaggi specifici del dominio alle applicazioni richieda anche molto dolore. Chiediti prima se qualche altra soluzione più semplice potrebbe funzionare. Quindi applica il principio YAGNI (non ne hai bisogno) e KISS (keep-it-simple-smartguy).
Pensa due volte prima di implementare qualcosa come quello che stai chiedendo di fare nella tua domanda.
si prega di citare correttamente: KISS = mantenerlo semplice stupido ;-) – dummzeuch
Sono abbastanza sicuro che Warren conosca il significato esatto. Sembra meno scortese in questo modo. –
Leonardo sta prendendo piede. –
La tua migliore opzione, IMHO, utilizza un motore di scripting e memorizza gli script nel database.
In alternativa è possibile inserire il codice in una DLL e inserire tale DLL nel database. C'è un codice per caricare una DLL da una risorsa in ram e elaborarla in modo che possa essere utilizzata come se fosse stata caricata usando LoadLibrary, ad es. in dzlib. Non so davvero se funziona con qualsiasi DLL e in quali versioni di Windows, ma con quelle che ho provato.
- 1. Come posso eseguire il codice Perl memorizzato all'interno di una variabile di script della shell?
- 2. Come restituire il nome del database remoto che chiama un proc memorizzato in un altro database?
- 3. Come eseguire il comando memorizzato in una variabile?
- 4. Come posso salvare un javascript memorizzato in mongodb da node.js
- 5. Codice framework entità prima - come eseguire il database di aggiornamento per il database di produzione
- 6. Come scaricare un file memorizzato in un database SQLite come un BLOB?
- 7. Posso eseguire il codice da un altro file in un modello T4 .tt per la generazione del codice?
- 8. Come posso eseguire più database Neo4j su un singolo server?
- 9. Posso eseguire il codice MATLAB su un sito web?
- 10. Come posso eseguire il mio codice al caricamento della classe?
- 11. Come posso eseguire il debug in un framework in Xcode?
- 12. Database Magento L'IP è memorizzato nella cache
- 13. Dove memorizza il codice di procedura memorizzato in SQL Server?
- 14. Valore di risultato del codice elisp memorizzato in un file?
- 15. Come eseguire il backup di un database filestream?
- 16. Come posso accedere a un processo memorizzato di SQL Server dal mio codice C#?
- 17. Come posso eseguire il codice su un thread in background su Android?
- 18. Come posso eseguire il codice in modo casuale il 33% delle volte in PHP?
- 19. Come posso eseguire codice che ho scritto in JavaScript?
- 20. Android - Dove si trova il SQLite database memorizzato
- 21. Come eseguire il backup del database SQLite?
- 22. Dove è memorizzato il database SQLite su disco?
- 23. Come posso eseguire un Makefile in setup.py?
- 24. Come eseguire il backup del database Sql a livello di codice in C#
- 25. Come posso eseguire il backport di un commit in git?
- 26. Come eseguire il backup di un database Solr?
- 27. Utilizzo di Subversion, dove è memorizzato il codice sorgente "effettivo"?
- 28. Come posso eseguire il codice PHP quando un utente fa clic su un collegamento?
- 29. Come posso eseguire il backup di un database GridFS MongoDB nel modo più semplice?
- 30. Come posso eseguire il backup di un database MySQL su AWS?
Inserire il codice in una DLL. –
@DavidHeffernan E memorizzare la DLL nel database? ;) – GolezTrol
Hai considerato l'utilizzo di un motore di scripting per questa attività? – Linas