Author Topic: Domande su c++ inerenti al celeberrimo software di zax2010  (Read 15499 times)

0 Members and 1 Guest are viewing this topic.

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Domande su c++ inerenti al celeberrimo software di zax2010
« on: 10 December , 2011, 22:45:53 PM »
Sto studiando il software di zax2010 perché ho intenzione di:
1) Creare un'interfaccia grafica con il relativo codice sorgente su Visual C#
2) Aggiungere la precompressione all'analisi tensionale

Il risultato, se Gilean approverà, sarà messo nella sezione download.
Purtroppo non sono nè un esperto di C# e di C++ e nè un ingegnere del vostro livello ma cerco di fare del mio meglio. Procedo a piccoli passi leggendo il post sul forum ed il codice rilasciato. Qui di seguito vi espongo alcune domande che sorgono spontanee analizzando il codice. Oggi ho dato un'occhiata al file .h con le variabili. Quando avrò compreso tutto il codice scritto in C++ abbandonerò questa discussione e procederò nell'altra. Tutto ciò perché ho timore di fare domande troppo ovvie, magari già affrontate nel seguito della precedente discussione e con il rischio di allungare troppo il post originale.

DOMANDE

01.Perché non usare le variabili più precise double oppure meglio ancora decimal?
02.Perché si assume un valore positivo di sforzo normale quando è di compressione?
03.Dal punto di vista informatico che significato hanno questo gruppo di stringhe: (mi serve una rapida definizione scritta con parole vostre che mi illustri il significato di * e delle parentesi... il significato di void... perché calcola_caratt_geometriche (struct poligono_sezione *) e non calcola_caratt_geometriche(struct poligono_sezione *)... ecc... giusto per capire sommariamente...)
struct geometria_sezione calcola_caratt_geometriche (struct poligono_sezione *);
void   inversione_poligono (int);
struct deform verifica_SLE(struct soll_esterne);
struct lungh_fibra calcola_lungh_fibra(struct poligono_sezione,float);
struct deform_ultime_sezione calcola_deform_ultime(struct poligono_sezione *,float,int,float,float);
float  parabola_rett(float,float);
float  elast_plast_indef(float,float,float);
struct risultante_n risult_compr(struct poligono_sezione *,struct armature_sezione,float,float,float,struct deform_ultime_sezione);
struct risultante_n risult_traz(struct poligono_sezione *,struct armature_sezione,float,float,float,struct deform_ultime_sezione);
struct risultante_n_finale determina_asse_neutroSLU(struct poligono_sezione *,struct armature_sezione,float);
struct dominio_rottura calcola_dominio_SLU(float);
void   definisci_baricentro(void);
struct coord_proiez convert3Dto2D(float,float,float,float,float,float,float);
struct n_limite definisce_nlimite(void);

?

ciao e grazie
« Last Edit: 10 December , 2011, 22:49:04 PM by marchionili »

zax2010

  • Guest
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #1 on: 11 December , 2011, 11:45:35 AM »
Rispondo io. Il celeberrino.

Intanto ti prego. Controllati! Non farmi più complimenti. E' una richiesta ben precisa, 'che altrimenti non ti rispondo più.

Domanda 1: perchè no? Si può fare. Avere double dappertutto invece che 'semplici' float.
Domanda 2: E' una convenzione. Così come è stata una convenzione, agli SLE, dire che uno spostamento del baricentro , concorde con la compressione sia anch'esso positivo.
Ovviamente da tale convenzione discende tutto il resto.
Domanda 3: Quelle che riporti sono 'prototipi' delle funzioni.
In sintesi, informi il compilatore, prima che esso le debba compilare, di che natura sono le varie funzioni che incontrerà nel proseguo del listato.
Praticamente è come con le variabili. Per prima cosa le dichiari, poi le utilizzi.
In questo modo il compilatore si 'organizza' (non saprei dirti come ovviamente) lasciando i giusti spazi in memoria, ecc.
Nel C di Kernigan e Ritchie le funzioni avevano bisogno del prototipo prima solamente se non restituivano un valore int. Quando il comitato ANSI decise di standardizzare i vari dialetti C che prorompevano sulla scena, decise che era buona norma che tutte le funzioni fossero prima 'prototipate'.

Andiamo agli esempi. Parto dal semplice, andando verso il difficile

void   inversione_poligono (int);

Protopito della funzione denominata inversione_poligono. Essa accetta in ingresso (parametri formali) una variabile di tipo int (mi pare fosse il numero del poligono da invertire) e restituisce il valore......NULLA (attenzione, non NULL, o 0) semplicemente questa è una funzione che non restituisce alcun valore, questo il significato di void che se lo cerchi come vocabolo inglese è letteralmente: indefinito.

float  parabola_rett(float,float);

Prototipo della funzione denominata parabola_rett. Essa accetta in ingresso due variabili di tipo float, e restituisce alla fine un valore di tipo float.

struct deform verifica_SLE(struct soll_esterne);

Prototipo della funzione denominata verifica_SLE. Essa accetta in ingresso una variabile di tipo struct (una struct è una struttura dati che al suo interno contiene variabili di tipo più elementare, come float, int, ecc.) in particolare una variabile struct denominata soll_esterne.
La variabile struct soll_esterne deve essere dichiarata prima di protopizzare questa specifica funzione (perchè altrimenti il compilatore, non sapendo di che cosa è fatta la struttura dati soll_esterne, non può 'protopizzare' bene la funzione).
Altra cosa attenzionare bene è che soll_esterne non una vera e propria variabile. Essa a sua volta è il 'prototipo' della struttura dati. In sintesi, un nuovo tipo di dati, come float, int, double, per intenderci. Così come tu dichiari nel tuo listato una variabile:

int pippo;

così dichiarerai:

struct soll_esterne soll;

Ovvero hai creato la struttura dati soll, che ha le caratteristiche del prototipo struct soll_esterne.
Pare complicato, ed in parte lo è. Ma se guardi nel file .h e nel file .cpp troverai tanti esempi che ti consentiranno di capire meglio.
Infine la funzione in oggetto restituisce un valore che è di tipo struct deform (altra struttura dati che deve essere dichiarata prima del prototipo della funzione in oggetto). Anche in questo caso struct deform è il prototipo della struttura dati.

Piccolo inciso. In tutti i linguaggi strutturati alle funzioni possono essere passate un numero qualsiasi di variabili in ingresso, nessuno, 1, 2, 100. Invece in uscita le funzioni prevedono o void (nessuna uscita) o una ed una sola variabile.
Per cui se tu avessi una funzione a cui fornisci in ingresso i lati di un rettangolo, e volessi che in uscita ti desse sia l'area che il perimetro, non potresti farlo. O inserisci in ingresso della funzione un flag (voglio in uscita a*b, oppure voglio in uscita 2*(a+b)), e chiami la funzione due volte, oppure crei due funzioni differenti, specializzate, una per il calcolo dell'area, una per il calcolo del perimetro.
Se però il valore restituito dalla funzione è un 'puntatore', ovvero una posizione in memoria, all'uscita dalla funzione tu avrai la possibilità, sapendo come è strutturata la memoria nei 'dintorni' del puntatore, di avere più informazioni dell'unica variabile che ti viene fornita dalla funzione stessa.
Io con i puntatori non sono mai entrato troppo in confidenza.

Nel caso della restituzione di una variabile di tipo struct, in effetti ti viene restituito di fatto un puntatore (anche se non sembra), il puntatore alla posizione in memoria della struttura stessa. Se la struttura dati ha al suo interno 10 variabili elementari, io all'uscita dalla funzione, mi trovo tutti e 10 i valori che mi servono, in quanto 'incapsulati' all'interno della struttura restituita.

Infine andiamo al prototipo più complicato:

struct geometria_sezione calcola_caratt_geometriche (struct poligono_sezione *);

struct poligono_sezione * cos'è? Un puntatore.
Traducendo, si informa il compilatore che in ingresso non ci sarà una struttura dati di tipo struct poligono_sezione, ma un array (un vettore) di variabili di tipo struct poligono_sezione. Poichè il compilatore conosce la forma di tale struttura (ovvero quanto spazio occupa in memoria ogni variabile di tipo poligono_sezione) è anche in grado di 'saltare' da una variabile struct all'altra. Per cui in fase di chiamata della funzione troverai la riga:

geo=calcola_caratt_geometriche(poli);

Ma prima avevo dichiarato le variabili poli come:

struct poligono_sezione poli[5];

Ovvero un vettore di variabili poli[0], poli[1], ecc. e poli che vedi nella chiamata, cosè? Il puntatore del vettore.
Ovvero io passo alla funzione calcola_caratt_geometriche la locazione in memoria dove è contenuto il primo valore di poli[0].

D'altra parte per determinare le caratteristiche geometriche dell'intera sezione devo sapere tutto dei singoli poligoni che la costituiscono.
Ovviamente, ed è il bello della programmazione strutturata, avrei potuto agire anche in maniera differente. Piuttosto che far ingoiare ad una funzione tutti i poligoni, avrei potuto creare una funzione che agiva sul singolo poligono, restituendomi le caratteristiche geometriche dei singolo poligono, e quindi con una funzione più in 'alto' trattare i singoli risultati per arrivare a quelli della sezione nella sua totalità.

Penso che già così sia anche troppo.

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #2 on: 11 December , 2011, 23:00:58 PM »
C é davvero complicatissimo...  :(

01.Ok, grazie mille.
02.Ma non é negativo lo sforzo di compressione e positivo quello di trazione?
03.Ok grazie mille, ho inteso. In pratica dato che una funzione in C++ ammette un solo output l'unico modo per far si che la funzioni sputi fuori più di una variabile e quella di raggruppare più variabili in un gruppo struct. Detto in altro modo é una richiesta specifica della grammatica del linguaggio di programmazione utilizzato.
 :help:
Continuo a non capire il secondo pezzo del tuo messaggio (Infine andiamo al prototipo più complicato:... Penso che già così sia anche troppo.). Il valore * deve essere messo perché come argomento della sezione c'é almeno uno 'struct' che contiene un vettore oppure ha qualche significato in più e può essere omesso anche in queste circostanze?
Inoltre le due scritture in C++ sono identiche oppure no:
struct variabili funzione(struct variabili)
struct variabili funzione (struct variabili)
Ovvero lo spazio messo prima della parentesi é ininfluente oppure ha anche questo un significato?

Non vuoi che ti ringrazi ma sei davvero gentilissimo! Grazie grazie e ancora grazie!

p.s.:
float poli[5];
crea un vettore che ha 5 elementi mentre
poli = {2,3,4,5,8};
assegna un valore alle 5 variabili del vettore, giusto?
« Last Edit: 11 December , 2011, 23:10:51 PM by marchionili »

zax2010

  • Guest
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #3 on: 11 December , 2011, 23:12:46 PM »
I grazie puoi continuare a darmeli senza problemi, sempre se ti va. E' il 'celeberrimo', 'grandissimo', ecc. che ti sono preclusi.  :asd: :asd:

Le due scritture che riporti sono assolutamente identiche. Gli spazi vengono letteralmete 'mangiati' dal compilatore e non significano nulla.

Andiamo al simbolo *
Con questo si indica solamente che il parametro formale in ingresso non è una variabile 'normale' (un int, un float, una struct), bensì il puntatore ad una variabile di tipo int, float o struct
(puntatore=locazione di memoria)
Se avessi un vettore: float vett[10], vettore costituito da 10 elementi di tipo float (da 0 a 9) e volessi passarli tutti in un colpo solo ad una funzione che potrà farne ciò che vuole, scriverei il prototipo della funzione:

void funzione_vettore(float *);
(ovvero la funzione accetta in ingresso un puntatore ad una variabile di tipo float)

e poi nel corpo del mio listato, avrei una chiamata così:

funzione_vettore(vett);

(dove vett senza alcun indice è proprio la locazione di memoria, il puntatore dunque, dove risiede il primo elemento del vettore vett[10]).


Infine ti chiedo scusa per il "Penso che già così sia anche troppo". Il problema è che questi sono dettagli 'ostici' ed a mettere troppa carne al fuoco si rischia di capirci poco. Andare un passo alla volta è sempre opportuno.

zax2010

  • Guest
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #4 on: 11 December , 2011, 23:18:23 PM »
p.s.:
float poli[5];
crea un vettore che ha 5 elementi mentre
poli = {2,3,4,5,8};
assegna un valore alle 5 variabili del vettore, giusto?

Mi pare giusto.
Comunque io ho sempre fatto le due cose insieme, ovvero dichiarazione ed assegnazione contemporanea: float poli[5]={2,3,4,5,8};
e funziona.
Penso che dovrebbe funzionare anche come lo hai scritto tu.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #5 on: 12 December , 2011, 11:21:17 AM »
Rispondo io. Il celeberrino.

Intanto ti prego. Controllati! Non farmi più complimenti. E' una richiesta ben precisa, 'che altrimenti non ti rispondo più.

ihihihih
io lo avrei mandato a quel paese gia da subito.
Celeberrimo ahahahahah
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

zax2010

  • Guest
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #6 on: 12 December , 2011, 11:47:41 AM »
ihihihih
io lo avrei mandato a quel paese gia da subito.
Celeberrimo ahahahahah

In realtà ho fatto un errore.

Il Celeberrimo, nel titolo del post, è riferito al software, non al sottoscritto......

Ah! Montarsi la testa!

Offline Gilean

  • Administrator
  • Bisnonno Veterano
  • *****
  • Posts: 3292
  • Karma: 202
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #7 on: 12 December , 2011, 12:07:59 PM »
ma perche' celeberrimo non e' un complimento?
Il calcolo è come la pelle delle @@, lo tiri dove vuoi tu.
Esempio di programmazione a Loop:
L'enunciato che segue è falso
L'enunciato precedente è vero.

Nonostante la consapevolezza dei rischi che si corrono dopo aver visto le prestazioni da 3° dan

Offline Alex_Drake

  • Semi Esperto
  • **
  • Posts: 50
  • Karma: 20
  • Ingegnere
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #8 on: 12 December , 2011, 12:25:07 PM »
Sto studiando il software di zax2010 perché ho intenzione di:
1) Creare un'interfaccia grafica con il relativo codice sorgente su Visual C#
2) Aggiungere la precompressione all'analisi tensionale


Mi permetto di darti qualche consiglio: non puntare troppo lontano come obiettivo iniziale, altrimenti rischi di perdere l'entusiamo strada facendo (a me è successo con l'implementazione delle OpenGL nei miei software)
Dalle domande che hai posto mi sembra che tu sia partito con il compilatore aperto, meglio se in un primo step guardi dei libri/testi (io sono partito con due libri (anche abbastanza economici): "Programmare con il .net framework" vol. 1 e 2(mondadori informatica). Li pagai circa 15 euro l'uno ma sono veramente chiari).
Te lo dico per esperienza: se ti dai dei piccoli obiettivi, una volta raggiunti sei motivato a migliorare quanto raggiunto, quindi cominci a riguardare il codice, lo migliori, capisci meglio alcuni aspetti, inevitabilmente butti quasi tutto perchè si può fare meglio e ricominci...

Alessandro
ing. Alessandro Dragone

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #9 on: 13 December , 2011, 00:09:44 AM »
Se avessi un vettore: float vett[10], vettore costituito da 10 elementi di tipo float (da 0 a 9) e volessi passarli tutti in un colpo solo ad una funzione che potrà farne ciò che vuole, scriverei il prototipo della funzione:

void funzione_vettore(float *);
(ovvero la funzione accetta in ingresso un puntatore ad una variabile di tipo float)

e poi nel corpo del mio listato, avrei una chiamata così:

funzione_vettore(vett);

(dove vett senza alcun indice è proprio la locazione di memoria, il puntatore dunque, dove risiede il primo elemento del vettore vett[10]).

Se invece si scrivere:
void funzione_vettore(float);
nel corpo del listato si deve scrivere ad esempio:
funzione_vettore(vett[3]);
era questo collegamento che non avevo fatto. Non é certo facile ma non é neppure tanto complicato e la questione più nodosa e faticosa é entrare nell'ottica. Sei molto bravo ad esprimerti, sai essere precisissimo e semplice allo stesso tempo, meglio di un manuale!  :clap:

Grazie mille

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #10 on: 13 December , 2011, 00:20:23 AM »
Mi permetto di darti qualche consiglio: non puntare troppo lontano come obiettivo iniziale, altrimenti rischi di perdere l'entusiamo strada facendo (a me è successo con l'implementazione delle OpenGL nei miei software)
Dalle domande che hai posto mi sembra che tu sia partito con il compilatore aperto, meglio se in un primo step guardi dei libri/testi (io sono partito con due libri (anche abbastanza economici): "Programmare con il .net framework" vol. 1 e 2(mondadori informatica). Li pagai circa 15 euro l'uno ma sono veramente chiari).
Te lo dico per esperienza: se ti dai dei piccoli obiettivi, una volta raggiunti sei motivato a migliorare quanto raggiunto, quindi cominci a riguardare il codice, lo migliori, capisci meglio alcuni aspetti, inevitabilmente butti quasi tutto perchè si può fare meglio e ricominci...

Alessandro

Questo é vero ma tolto qualche parolina come struct e * il resto mi sembra abbastanza accessibile e molto simile a C# che ho approfondito dai corsi di Gilean. Spero di riuscire ad arrivare alla fine di questo compito, se ciò avverrà sarà grazie alla vostra pazienza. Sto facendo di tutto (é da un mese che vado a dormire alle 00:20) per poter riuscire nell'intento e poter contribuire alla comunità. Un forum, una comunità che lavora su un unico codice! Pensa che bello e pensa a che risultati si potrebbe arrivare! Semplicemente fantastico. Ho ragazzi non so più cosa dirvi... io ce la metto tutta se poi mi dovessi sbagliare vi chiedo scusa... avrò perso del tempo, pazienza... I libri sono una cosa importante ma credo che li leggerò solo dopo che avrò completato qualche programmino per approfondire ulteriormente il linguaggio. Ho iniziato con i video di Gilean (tutta teoria) ed ora vorrei fare pratica con il codice di zax2010. In futuro cercherò sicuramente qualche buon libro ma passare mesi e mesi a leggere manuali in questo momento sarebbe sbagliato. Inoltre leggere un linguaggio su cui si ha già un'infarinatura é un'altra cosa. Mi posso sbagliare ma credo che procedere a piccoli passi non sia una cosa sbagliata. Vi prego datemi un incoraggiamento!

Offline mg

  • Semi Esperto
  • **
  • Posts: 167
  • Karma: 24
  • Novizio
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #11 on: 13 December , 2011, 09:23:59 AM »
Ciao

Mi chiedevo come vuoi gestirre l'interfaccia. Immagino tu utilizzi WPF e non windows form. Seppure vedo che sei un po' allergico ai manuali ti consiglio oltre al libro sopra citato di John Charp anche "Pro WPF in C# ..." (io ho la versione 2008 che si riferisce al .NET 3.5).

Sono anche io alle prime armi con C#.
Per ora ho creato una interfaccia di input in WPF che a mio avviso sempre deve:

- permettere di passare da una textbox all'altra tramite il tasto invio. Magari evidenziare la cella col focus.
- quando si lancia una elaborazione tutti gli input devono essere salvati in un file esterno (io salvo o in un database o in un file testo)
- quando si riapre il programma gli ultimi input inserirti devono essere i valori di default, cioè è necessario ricaricare da file esterno i valori precedentemetne salvati.
- definire il menu tipo (Apri - salva - salva con nome...)

Ora personalemnte sto litigando con la "flexgrid"...

Ogni tanto penso che più diretto del basic di openoffice ci sia poco: interfaccia già pronta, basic semplice ma abbastanza completo... il tutto gratuito  :)

Nel caso qualcosa che ho fatto ti possa essere utile batti un colpo!  :piacere:

ciao
MArco

Offline Gilean

  • Administrator
  • Bisnonno Veterano
  • *****
  • Posts: 3292
  • Karma: 202
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #12 on: 13 December , 2011, 09:49:16 AM »
se posso consigliare, le WPF richiedono qualche conoscenza di xml. Fossi in voi partirei dalle care vecchie windows form.
Il calcolo è come la pelle delle @@, lo tiri dove vuoi tu.
Esempio di programmazione a Loop:
L'enunciato che segue è falso
L'enunciato precedente è vero.

Nonostante la consapevolezza dei rischi che si corrono dopo aver visto le prestazioni da 3° dan

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #13 on: 13 December , 2011, 21:43:00 PM »
Ciao

Mi chiedevo come vuoi gestirre l'interfaccia. Immagino tu utilizzi WPF e non windows form. Seppure vedo che sei un po' allergico ai manuali ti consiglio oltre al libro sopra citato di John Charp anche "Pro WPF in C# ..." (io ho la versione 2008 che si riferisce al .NET 3.5).

Sono anche io alle prime armi con C#.
Per ora ho creato una interfaccia di input in WPF che a mio avviso sempre deve:

- permettere di passare da una textbox all'altra tramite il tasto invio. Magari evidenziare la cella col focus.
- quando si lancia una elaborazione tutti gli input devono essere salvati in un file esterno (io salvo o in un database o in un file testo)
- quando si riapre il programma gli ultimi input inserirti devono essere i valori di default, cioè è necessario ricaricare da file esterno i valori precedentemetne salvati.
- definire il menu tipo (Apri - salva - salva con nome...)

Ora personalemnte sto litigando con la "flexgrid"...

Ogni tanto penso che più diretto del basic di openoffice ci sia poco: interfaccia già pronta, basic semplice ma abbastanza completo... il tutto gratuito  :)

Nel caso qualcosa che ho fatto ti possa essere utile batti un colpo!  :piacere:

ciao
MArco

Si si, sono molto interessato! Cavolo ma tu fai le cose in grande! :) Se riesci a spiegarmi come fare sarei felicissimo. Seguendo i corsi di Gilean ho imparata ad usare la windows form. Ho aperto proprio ora la WPF e noto che é davvero molto più carina. Ci sono anche altri vantaggi nell'usare questo tipo di interfaccia? La questione del database credo sia essenziale per i parametri dei materiali (gammac, fdb, fyk, ecc...). Tutte le info che riesci a darmi mi saranno di aiuto. Ora però prima di procedere devo analizzare nel dettaglio il codice di zax2010 e penso che ci metterò parecchio.
Nel frattempo se avessi voglia di fare una videopresentazione per i punti sopra faresti davvero una gran cosa.  :coffee:
« Last Edit: 13 December , 2011, 21:45:32 PM by marchionili »

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Domande su c++ inerenti al celeberrimo software di zax2010
« Reply #14 on: 13 December , 2011, 21:50:08 PM »
se posso consigliare, le WPF richiedono qualche conoscenza di xml. Fossi in voi partirei dalle care vecchie windows form.

Quali sono i vantaggi nell'usare le WPF e i fogli xml? Tra il resto é complicato creare un tasto che stampa su pdf o su una classica stampante i dati di output?

grazie e a presto

P.S.: l'xml sembra identico all'xhtml... per caso si possono anche inserire dei fogli di stile in css su visual studio? se si potesse saprei fare delle cose megagalattiche... :)
« Last Edit: 13 December , 2011, 22:29:45 PM by marchionili »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24