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
C# / VB.NET - Realizzare un piccolo compilatore Vb.Net
Forum - C# / VB.NET - Realizzare un piccolo compilatore Vb.Net

Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:43
Sabato, 30/08/2008
Questo topic è stato chiuso dal moderatore

Ciao ragazzi dopo un po di tempo ritorno ad aprire un nuovo topic x risolvere un piccolo problemuccio. Per dare l'idea sto realizzando un piccolo compilatore di Vb.Net in Vb.Net. Per compilare i sorgenti infatti utilizzo la classe Microsoft.VisualBasic.VBCodeProvider. Adesso, dopo essere stato alcuni giorni x capire il funzionamento della classe, sono in grado di compilare sia applicazioni console che windows form. La domanda che volgio porvi è come posso aggiungere ai programmi che vado a compilare delle risorse x poi richiamarle dall'applicazione stessa, una volta eseguita. Riassumendo:

1) Come genero un file di risorse partendo da un file qualsiasi;
2) Come lo "aggiungo" al sorgente che vado a compilare;
3) Alla fine come lo richiamo dall'applicazione compilata.

Ovviamente il tutto senza passare x VisualStudio.
Spero di essere stato chiaro nell'esporre il mio problema. Grazie per l'attenzione spero possiate aiutarmi. Ciao :k:

Ultima modifica effettuata da klez91 il 30/08/2008 alle 20:45
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:59
Sabato, 30/08/2008
Non credo che per risorse tu intenda My.Resources, quindi guarda qui:
http://www.pierotofy.it/pages/extras/forum/16/40120-lettur ...

PM
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:51
Domenica, 31/08/2008
In realtà mi scuso se mi sono spiegato male ma mi riferivo proprio a quello. In pratica vorrei aggiungere un file( ad esempio un .txt, .bmp ecc. ecc.) x poi richiamarlo dalla mia applicazione che vado a compilare con il mio programma quindi senza passare x visual studio. Per questo avevo pensato di ispirarmi a visual studio che crea un file di risorse.resx con i file da me inseriti e lo aggiunge all'applicazione la quale a sua volta può accedere ai files attraverso My.Resources. Però come ho già detto prima non ho la minima idea di come creare un file.resx senza passare x visual studio, ne tantomeno di come richiamarlo dall'applicazione una volta compilata. Penso che sia questa la soluzione più semplice, ma se c'è ne una ancora più semplice ben venga. Spero di essere stato più chiaro questa volta, grazie, Ciao.

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:59
Lunedì, 01/09/2008
La soluzione più semplice è di copiarli nella cartella del programma e, nei sorgenti, riscrivere la classe MyResources in modo che carichi le risorse non direttamente dall'eseguibile, ma dai file grezzi che sono presenti.

PM
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:17
Lunedì, 01/09/2008
Nooooo...era proprio quello che volevo evitare. Comunque nel frattempo sono ad un'ottimo punto cn quello che volevo fare. Infatti per generare un file di risorse (.resources e non .resx, mi sbagliavo) utilizzo la classe System.Resources.ResourceWriter, per aggiungerli all'eseguibile utilizzo la classe VBCodeProvider, e per richiamarlo a runtime la classe ResourceManager. Fin qui tutto ok, se nn fosse x il fatto che l'unico tipo di risorse che riesco ad aggiungere sono le immagini. Infatti la funzione "AddResource" della classe ResourceWriter, accetta come primo argomento una stringa che costituisce il nome x identificare la risorsa e come secondo argomento o una stringa ancora o un object o una matrice di byte. Adesso nel caso di un immagine al posto di object gli passo un System.Drawing.Image precedentemente dichiarato che fa riferimento ad esempio ad un immagine in locale, però come faccio a passargli come secondo argomento ad esempio un file audio o un file generico di cui conosco solo l'estensione ?

Edit----------------------------------------------
Non ho avuto il tempo di provare ma con un FileStream in modalità open e una matrice di byte da passare come secondo argomento alla funzione AddResource, otterrei lo stesso risultato ?

Ultima modifica effettuata da klez91 il 02/09/2008 alle 10:36
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:01
Martedì, 02/09/2008
Secondo me sì. Infatti, ogni risorse che non sia un file di testo o un'immagine viene rappresentata da una matrice di bytes. Quindi, se come secondo argomento passi il contenuti in bytes di un qualsiasi stream, ottieni lo stesso risultato.

Vedi che anche senza di me si riesce benissimo? :rotfl:

PM
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 19:50
Martedì, 02/09/2008
Si infatti, passando la matrice di byte funziona, ovviamente durante l'esecuzione ho dovuto dichiarare un nuovo FileStream questa volta in modalità Create, per riscrivere dinuovo il file partendo dalla matrice di byte che c'era nella risorsa, ma nn ci sono stati problemi. Grazie mille comunque per l'interessamento, credo che a questo punto si potrebbe anche chiudere il topic.
Ciao :k: !!!

Ultima modifica effettuata da klez91 il 02/09/2008 alle 19:50
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:30
Mercoledì, 03/09/2008
Ok, passo e chiudo.

PM