tutto il visual basic

« Older   Newer »
  Share  
joh_lamer_3r
view post Posted on 27/3/2009, 20:34




Visualbasic è il successore del linguaggio basic quindi risulta essere molto simile al suo predecessore sotto molti aspetti;
inutile dire che per chi conosce già il basic questo corso risulta inutile e banale dato che il mio scopo non è quello di insegnare il linguaggio in se per se ma è quello di far realizzare semplici programmi per windows a tutti

ADESSO BANDO ALLE CIANCE E COMINCIAMO:

La teoria si racchiude in 4 righe:

1) FORM
2) COMMAND BUTTON
3) TEXTBOX
4) IF THEN

Cos'è FORM ?
Form è il nome che automaticamente viene dato al contenitore del programma che noi andremo a scrivere!
Ora grazie alla "moderna tecnologia" vi presento l'amico FORM:
image
Beh..questo è un form vuoto,ancora tutto da progettare ma vi assicuro che può diventare molto diverso e in alcuni casi anche INVISIBILE!

Command button è il nome che viene dato ad un bottone o pulsante (come preferite);
per crearlo basta cliccare 2 volte sul quadratino (in genere è di colore grigio ma dipende dal tipo di sfondo che avete impostato) che vi appare sulla sinistra dello schermo.
Beh...forse qualcuno si starà chiedendo:
-Ma io sulla sinistra dello schermo ho il mio armadio e il mio comodino!-
Ok..Ok..vi riporto "magicamente" un'immagine della "casella degli strumenti" di Visual basic così non ci confondiamo!Per creare questo benedetto "command button" cliccate sul quadratino;come indicato dalla freccia rossa!
image
...ah dimenticavo..forse qualcuno di voi non ha la casella degli strumenti!
Per questi sfortunati c'è comunque un rimedio:
Cliccate su "Visualizza" nel menù di Visual basic e poi su "casella degli strumenti" e vedrete che "magicamente" la casella prenderà forma!
image
Ok !Adesso ci dovremmo essere tutti...allora proseguiamo:
Una volta creato il command button vedrete che sarà finito al centro del form ; provate a spostarlo usando il mouse poi cliccateci sopra 2 volte e vedrete che entrerete nel programma.
image
In quel punto potrete scrivere ciò che volete far fare al programma se si preme il bottone (Command Button );io ho scritto una frase a caso che di certo non funziona, sia perchè è impossibile, che perchè il programma non legge "parole" scritte a caso ma appropriati codici



Cos'è TEXTBOX ?
TextBox è il nome che Visual Basic da ad uno spazio in cui è possibile scrivere testo;
per crearlo basta cliccare 2 volte sul quadratino bianco con dentro scritto ab che vi appare sulla sinistra dello schermo.(nella casella degli strumenti,per capirci)
image
Una volta creato vedrete che sarà finito al centro del form ; provate a spostarlo usando il mouse;naturalmente anche su di esso potete cliccarci sopra 2 volte per entrare nel programma ma ora non ci interssa.
Se avete seguito le mie istruzioni correttamente sul Form ci dovrebbero essere due oggetti : un Bottone e una Textbox.
image
Ora provate a premere il tasto Play (come nell'autoradio) che si trova in alto al centro dello schermo.
image
Se tutto va bene vi dovrebbe comparire il form con dentro il bottone ed uno spazio bianco. Ora cliccate all'interno dello spazio bianco e provate a scriverci qualcosa. Per chiudere "il vostro programma" cliccate sulla croce del form e vedrete che "come per magia" tornerete in fase di progettazione (si dice così!!). Fate doppioclick sul bottone che avete creato , entrate all'interno del programma e scrivete esattamente così : Text1.Text="sono un programmatore" In pratica sul vostro monitor sarà così:
image
Adesso premete il tasto Play e quando vi verrà mostrato il Form cliccate sul vostro bottone. Se avete eseguito bene le istruzioni all'interno dello spazio bianco dovrebbe vedersi la scritta : "sono un programmatore". Per chiudere il vostro "programma" sapete gia dove cliccare!



Passiamo ora a spiegare una "parola" che è il fulcro della programmazione di ogni tipo di linguaggio, sia BASIC che C++ o qualsiasi altro;questa parola si chiama IF che in italiano significa "SE" ;
In pratica ogni cosa (anche nella vita) succede "SE" :
SE NON MANGIO PER 6 MESI ALLORA MUOIO
SE ARRIVO PRIMO ALLORA DAMMI UNA COPPA
SE SPINGO IL BOTTONE ALLORA SCRIVI "sono un programmatore"
Capito no!!!!?

Naturalmente vi chiederete quando mai avrete scritto IF nel vostro programma!
Beh.. non l'avete mai fatto!
Infatti per voi lo ha fatto Visual Basic quando avete cliccato due volte sul bottone!
Proviamo ora a dare qualche ordine al programma:
cliccate due volte sul BOTTONE ed una volta entrati nel programma provate ad inserire questo codice:
IF text1.text="pluto" THEN text1.text="ciao"
premete play e cliccate sul BOTTONE;
Non succede niente!
Scrivete pluto nello spazio bianco.
Cliccate sul BOTTONE e vedrete che funziona.
La scritta "ciao" viene visualizzata SE nello spazio bianco c'è scritto pluto.

Provate a variare il programma inserendo molti più IF .
ESEMPIO: Cliccate due volte sul BOTTONE per entrare nel programma e scrivete:
if text1.text="pluto" then text1.text="cane"
if text1.text="topolino" then text1.text="topo"
if text1.text="gastone" then text1.text="papero"
if text1.text="paperino" then text1.text="papero"
Sul vostro monitor avrete:
image

Premete Play e provate a scrivere un nome nello spazio bianco.
image

In questo modo vedrete che alla pressione del tasto il programma vi dirà che pluto è un cane ...se invece scrivete pinco pallino il programma non vi dirà niente perchè non gli avete detto cosa fare SE scrivo "pinco pallino"!
Allenatevi a fare delle modifiche o ad inserire più di un bottone !


ACCESSO AI FILES

Gli accessi ai files possono essere di tre tipi:

1. Sequenziale
2. Casuale
3. Binario

Solitamente ognuno di questi accessi è utile per un determinato tipo di file:

Per poter accedere ad un file diverso da un DBMS c'è una precisa sintassi da seguire:

Dim NomeLogico As Integer
Dim NomeFile As String

Queste righe servono per l'appunto a dichiarare un nome logico (che è un numero intero compreso tra 0 e 512) ed il nome effettivo del file (es. "c:\documenti\MioFile.txt").

Per definire un nome logico bisogna utilizzare la funzione FreeFile come segue:

NomeLogico = FreeFile

Bisogna ricordarsi che ad ogni apertura del file c'è bisogno di assegnare al nome logico il valore della funzione FreeFile che restituirà un valore compreso tra 1 e 512 (che è definito come Handle del file).

Come abbiamo detto in precedenza un file si può aprire in diversi modi:
Possiamo gestirlo come insieme di record di lunghezza fissa (Random Access File - File ad Accesso Casuale)

Es.

Type MioRecord
Nome As String * 10 ' Deve essere dichiarata la lunghezza
' della stringa
Cognome As String * 20
End Type

Dim Persona As MioRecord

A questo punto si definisce l'apertura del file con lunghezza del record pari a Persona:

Open NomeFile For Random As NomeLogico Len = Len(Persona)

L'operazione di lettura di un record da questo tipo di file è legata alla funzione Get:

Get NomeLogico, 1, Persona

Questa funzione ritorna nella variabile Persona il primo record del file.
Il valore 1 (che indica il record da leggere nel file) può anche essere omesso e la lettura sarà sequenziale partendo dal primo record presente fino ad arrivare all'ultimo.

L'operazione di scrittura è la seguente

Put NomeLogico, 1, Persona

Questa funzione scriverà nel primo record del file il valore contenuto nella variabile Persona
Anche quì il valore 1 può essere omesso come per la lettura prevedendo che la scrittura sarà sequenziale partendo dal primo record del file.

ATTENZIONE!!!

Se si omette il posizionamento del record nel file, e lo stesso già contiene degli elementi, questi verranno svorascritti.

Per chiudere un file l'operazione è

Close NomeLogico

Questa operazione deve essere obbligatoria alla fine di tutte le operazioni del file altrimenti si rischia di allocare più handle fino ad arrivare all'esaurimento degli stessi e creando di conseguenza delle situazioni sgradevoli quando si vuole cancellare o riaprire il file!!!

Se al posto di avere dei record di tipo UDT(User Defined Type) si hanno in un file dati di tipo intero, data o qualunque altro tipo bisogna definire una variabile del tipo voluto ed aprire il file dando come lunghezza del record la lunghezza della variabile definita in bytes.

Es.

Dim mioRecord As Integer

Open NomeFile For Random As NomeLogico Len = Len(mioRecord)


BISOGNA RICORDARE CHE PER UN FILE AD ACCESSO CASUALE (RANDOM FILE ACCESS MODE) è obbligatorio definire la lunghezza del record!

Per aprire un file ad accesso sequenziale (SEQUENTIAL FILE ACCESS MODE) la sintassi è simile a quella per un file ad accesso CASUALE

Dim S As String ' Dichiaro una variabile di tipo string.

Open NomeFile For Input As NomeLogico ' Se devo fare operazioni
' di lettura da file.

Open NomeFile For Output As NomeLogico ' Se devo fare operazioni
' di scrittura nel file.


Line Input #NomeLogico, S ' Per leggere una stringa conclusa dal
' carattere CRLF

Input #NomeLogico, S ' per leggere una stringa dal file che ha come
' separatore da una successiva stringa il carattere
' ","

Write #NomeLogico, S ' Scrive nel file la stringa S delimitata dalle
' virgolette es. Write #1,"Prova" nel file ritrovo
' la stringa "Prova"

Print #NomeLogico, S ' identico al Write solo che come separatore di
' stringhe viene utilizzato il CRLF al posto delle
' virgolette.



Introduzione alla tecnologia Client / Server

Con lo sviluppo di Internet e dei mezzi di trasferimento di dati le applicazioni che prima lavoravano su macchine locali ed utilizzavano i dati presenti sullo stesso computer in cui il programma veniva eseguito si sono innalzate di livello.

Sono, infatti, molto comuni le applicazioni che si collegano ad altri computer posti nello stesso locale, in una rete LAN. Quasi tutti i nuovi programmi prevedono la possibilità di collegarsi ad Internet ed alcuni d'essi lavorano completamente su Internet. Alcuni programmi molto più avanzati prevedono lo sfruttamento di dati presenti in un computer remoto, posto chissà dove.

Alcuni esempi di questi programmi sono le Chat, le videoconferenze, gli strumenti di amministrazione remota, i gestori di commercio elettronico, e (perche no?) i virus.

Per effettuare questo genere di operazioni di scambio di dati possono essere utilizzati i protocolli TCP/IP preesistenti oppure si possono generare nuovi protocolli personalizzati.
Per utilizzare un protocollo preesistente è necessario conoscere le RFC relative al protocollo da utilizzare. Un completissimo archivio di RFC (in inglese) è presente in rete all'indirizzo http://www.faqs.org/rfcs.

Per tutte le applicazioni Client/Server sarà necessario utilizzare la libreria Winsock di Windows. Tale libreria è disponibile in due versioni: una è la WSOCK32.DLL da richiamare mediante le API, e l'altra è la MSWINSCK.OCX, un controllo ActiveX instanziabile all'interno di Visual Basic.
Soltanto per alcuni esempi, verrà utilizzata una terza libreria, la ICMP.DLL, la libreria del protocollo ICMP.

Introduzione al protocollo TCP/IP - Gli indirizzi IP

Prima di iniziare con lo sviluppo Client/Server è necessario conoscere il funzionamento del protocollo TCP/IP ed il comportamento di Windows nei confronti delle chiamate TCP/IP.

Tutti i computer connessi mediante TCP/IP, il protocollo di Internet, possiedono un loro indirizzo unico, detto indirizzo IP (Internet Protocol) che si compone di quattro cifre decimali, ognuna delle quali è compresa tra 0 e 255.
Un esempio di indirizzo è 212.24.124.151.

Quando utilizziamo Internet siamo abituati a digitare il nome di un sito in maniera non numerica. Un esempio di indirizzo Internet è http://vbsimple.virtualave.net/index.htm.
In realtà tale indirizzo è un DNS, ovvero una forma alternativa per rappresentare un indirizzo IP. Nel momento in cui richiediamo un collegamento ad un sito remoto in forma di DNS, la richiesta va verso un risolutore di DNS che trasforma il sito richiesto in un indirizzo IP numerico.

Il DNS che abbiamo visto si compone di tante parti:

1. http://
Indica il protocollo utilizzato per connettersi.
2. vbsimple
Indica un sottodominio di nome vbsimple all'interno di una rete.
3. virtualave
Rappresenta il nome dell'host che conterrà tutte le informazioni e gli eventuali sottodomini.
4. net
Indica un nome di dominio e rappresenta un po' la categoria cui appartiene l'host.
5. /index.htm
Rappresenta il nome di un file all'interno dell'host/sottodominio indicato.
È un percorso logico, non strettamente fisico, poiché una determinata cartella, sebbene sembri essere contenuta all'interno di un'altra, in realtà potrebbe essere posizionata anche su un altro computer. Sarà compito del programma server effettuare il mapping tra percorsi logici e fisici.

Esistono due tipologie di indirizzi IP: quelli statici e quelli dinamici. I primi sono tipici di siti web e non variano mai; i secondi sono molto comuni nelle connessioni dial-up via modem. Nel momento in cui un utente si connette ad Internet mediante un modem, gli viene assegnato dal suo ISP (Internet Service Provider) un indirizzo IP numerico. Tale indirizzo non cambierà fino a quando l'utente non si disconnetterà.

Gli indirizzi IP si possono classificare anche in due altre tipologie: esistono indirizzi pubblici ed indirizzi privati. Gli indirizzi pubblici sono univoci in tutto il mondo (non possono esisterne due uguali) e sono effettivamente raggiungibili tramite ogni connessione ad Internet. I siti web, i server di posta elettronica e tutto quanto troviamo su Internet possiede indirizzi pubblici. Anche se un sito web è inaccessibile perché protetto da qualche parola d'ordine oppure perché l'amministratore della rete ne ha disabilitato l'accesso, il suo indirizzo IP è pubblico.

Gli indirizzi privati, al contrario, sono degli indirizzi virtuali che l'amministratore di una rete può utilizzare per installare una propria rete interna (LAN), senza che questi effettivamente vadano in conflitto con altri indirizzi Internet. Infatti, a differenza degli indirizzi pubblici, possono esistere due o più computer con lo stesso indirizzo IP, purché essi stiano in due reti differenti o non collegate tra loro. Tuttavia, nessuno, all'esterno della rete con indirizzi privati potrà connettersi ad essa utilizzando Internet.

Gli indirizzi privati si dividono in tre classi, più una speciale.

1. Classe A: dall'indirizzo 10.0.0.0 al 10.255.255.255
2. Classe B: dall'indirizzo 172.16.0.0 al 172.31.255.255
3. Classe C: dall'indirizzo 192.168.0.0 al 192.168.255.255
4. Indirizzo di loopback: dal 127.0.0.1 al 127.255.255.254

L'indirizzo di loopback è un po' una finzione. È un indirizzo privato che possiedono tutti i computer che utilizzano TCP/IP. Pertanto tutte le operazioni effettuate sull'indirizzo di loopback saranno effettuate sul computer che le esegue. Il tentativo di connessione ad un indirizzo di loopback rappresenta una connessione allo stesso computer chiamante.

Introduzione al protocollo TCP/IP - Le porte TCP

Affinché un computer possa comunicare con un altro mediante TCP/IP è necessario che su entrambi i computer sia disponibile un socket utilizzabile, una sorta di handle TCP/IP. L'utilizzo di un socket comporta l'apertura di una porta TCP, ovvero la messa in ascolto su un computer server che attende che i client si colleghino. Sul computer client ci sarà anche una porta TCP aperta, ma non sarà posta in ascolto come sul server, ma tramite questa porta il computer invierà i dati relativi al tentativo di connessione.

Finché la connessione non è stabilita il server assume una posizione passiva di ascolto. Sarà compito del client effettuare tutte le operazioni di preparazione, la scelta dell'indirizzo e della porta corretta e l'effettuazione della chiamata.

L'attivazione di un collegamento comporta l'allineamento del computer client al computer server. Sarà il programma server che stabilirà su quale porta si dovrà comunicare. Il client, dal lato suo, potrà aprire il suo socket su qualunque porta. Ciò che conta, infatti, è il numero di porta su cui i dati confluiscono.

Per esempio un programma server può aprire in ascolto la sua porta locale 1500. Il programma client, affinché la connessione sia stabilita, dovrà aprire un socket libero sul computer in cui il programma viene eseguito (locale) e mediante tale socket dovrà inviare una richiesta di connessione alla porta remota 1500 dell'indirizzo del computer scelto.

Stabilita la connessione avremo tale situazione:

Porta x locale (Computer Client)Porta 1500 remota (Computer Server)

Sebbene a connessione stabilita entrambi i computer potranno inviare dati, tuttavia il programma server non dovrebbe mai inviare dati che non sono effettivamente richiesti dal client, ma si dovrebbe limitare a reagire alle operazioni richieste dal client.

Quando si vogliono rappresentare connessioni si utilizza scrivere il DNS o il numero IP del computer seguito dai due punti e dal numero della porta.
Ad esempio: 127.0.0.1:80 indica la porta 80 sul computer locale (loopback).

L'utilizzo di NETSTAT

Per visualizzare tutte le porte TCP in ascolto o collegate nel computer basta aprire un prompt di MS-DOS e digitare il comando NETSTAT -NAP TCP.
Proto Indirizzo locale Indirizzo remoto Stato
TCP 127.0.0.1:1043 213.41.60.24:80 ESTABLISHED
TCP 127.0.0.1:137 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1054 62.18.24.221:110 TIME_WAIT

L'output del comando mostra le connessioni attive, in attesa e in chiusura e per ognuna d'esse riporta il protocollo (Proto), l'indirizzo locale con la sua porta, l'indirizzo remoto con la sua porta e lo stato della connessione rispetto alla porta locale. Tale stato può essere:

* LISTENING: la porta è aperta in ascolto ed attende una connessione.
* SYN_SENT: la porta è aperta e sta inviando dati.
* SYN_RECEIVED: la porta è aperta e sta ricevendo dati.
* ESTABLISHED: la porta è aperta ed è collegata con un computer.
* TIME_WAIT: la connessione è terminata, tuttavia la porta attende la chiusura.
* FIN_WAIT_1: la porta è ancora aperta, ma si accinge a chiudersi.
* FIN_WAIT_2: la porta è ancora aperta, ma si accinge a chiudersi.
* CLOSE_WAIT: la porta attende la chiusura.
* CLOSING: la porta è in chiusura.
* LAST_ACK: la porta è in chiusura (ultimo messaggio prima di chiuderla).
* CLOSED: la porta è effettivamente chiusa.

Alcuni di questi stati sono molto difficili da vedere poiché la loro permanenza dura pochi decimi di secondo. Alcuni programmi di protezione, ad esempio un firewall, possono forzare alcuni di questi stati, anticipando o bloccando alcuni stati.

Una nota particolare la merita lo stato TIME_WAIT poiché è spesso causa di errori di funzionamento dei programmi client. Quando un programma client, utilizzando una porta x si connette ad un programma server sulla porta y ed in seguito alla fine del lavoro si disconnette (volontariamente o meno) e prova a ricollegarsi continuando ad utilizzare la porta x si verifica un errore.
Infatti, subito dopo la chiusura di una connessione, la porta x se ne va nello stato TIME_WAIT, risultando occupata per qualche secondo. Il tentativo di riconnettersi mediante la stessa porta x genererà un errore di "Indirizzo in uso".
Per risolvere questo problema è necessario attendere la completa chiusura della porta oppure cambiare la porta locale x con un'altra libera. In genere basta specificare la porta locale 0 per farsi assegnare un socket ad una porta libera.



Realizzare help files


Ogni applicazione, anche la più semplice, dispone di un file della guida di supporto, che ne documenta le funzioni e l'utilizzo. Questi file della guida, in formato Help di Windows (.hlp), sono veri e propri file compilati. Ogni file help è costituito da più pagine al suo interno (denominate Topics -argomenti-). Ad ogni pagina viene attribuito un nome univoco (paragonabile alla proprietà Name in Visual Basic) e un titolo (paragonabile alla proprietà Caption in Visual Basic). Addizionalmente, la pagina può contenere una serie di parole chiave (keywords, paragonabile al meta tag in HTML) che ne descrivono il contenuto; queste parole chiave verranno utilizzate per la funzione di 'Trova' della Guida. Il sorgente di una guida si divide solitamente in due file: un file RTF standard (Rich Text Format) e un file ASCII con estensione HPJ. Analizzeremo questi due file separatamente.

Il file RTF è un file Rich Text Format normale: nel nostro caso lo stiamo realizzando con Word 97, ma qualsiasi word processor compatibile potrà essere impiegato. Il file RTF deve rispettare alcune convenzioni:

* Ogni argomento (topic) deve essere separato dall'altro tramite una interruzione di pagina (page break) manuale; non sono valide le interruzioni generate automaticamente da Word;
* I nomi, titoli e keywords dei vari argomenti vengono assegnati tramite commenti a pie' di pagina (footnotes); questi vanno specificati all'inizio di ogni argomento, prima del testo dell'argomento stesso:
o Per impostare il nome della pagina inserire una footnote contentente al posto di un numero il carattere #; come testo della footnote inserire il nome della pagina (meglio se in maiuscolo);
o Per impostare il titolo della pagina inserire una footnote contenente al posto di un numero il carattere $; come testo della footnote inserire il titolo della pagina;
o Per impostare le keywords della pagina inserire una footnote contenente al posto di un numero il carattere K; come testo della footnote inserire tutte le parole chiave separate tra di loro da un punto e virgola;
* I collegamenti verso altre pagine sono strutturati nel modo seguente:
Testo del linkTOPICDIDESTINAZIONE
Il TOPIC DI DESTINAZIONE deve essere scritto in caratteri nascosti e si deve riferire al nome dell'argomento verso il quale link deve dirigersi.
Il testo del link deve essere sottolineato seguendo queste nozioni:
o Per i link POPUP, la sottolineatura dev'essere 'a puntini';
o Per i link normali, la sottolineatura dev'essere 'normale';
* Le immagini vanno inserite normalmente

Il file HPJ, come specificato prima, è un file ASCII contenente tutte le informazioni sul file della guida. Può essere paragonato al file .VBP di un progetto in Visual Basic. Il file HPJ è strutturato in un modo simile ai file INI. Si suddivide in più sezioni, racchiuse da parentesi quadre. Ogni sezione riguarda una parte specifica dalla compilazione. Le sezioni sono:

[OPTIONS]
ROOT=Directory contenente tutti i files della guida (.rtf, .bmp, ...)
CONTENTS=Nome (footnote #) del sommario della guida
WARNING=Il livello di visualizzazione errori durante la compilazione (max=3)

[FILES]
Elenco dei file RTF da includere nella guida; esempio:
file1.rtf
file2.rtf

[MAP]
Assegna ad ogni topic name un numero (ContextID) per poter richiamare l'argomento da Visual Basic. Per esempio:
MIO_ARGOMENTO_UNO 001

[WINDOWS]
Funzione facoltativa avanzata: definisce la posizione della finestra dell'help, utile per impostare la posizione iniziale della finestra (la finestra Main). Si imposta così:
MAIN="Guida della mia applicazione",(100,100,600,300)

Per effettuare la compilazione (il cui risultato sarà il nostro file .hlp!) è necessario aprire una finestra MS-DOS e portarsi nella directory \HC di Visual Basic. Da qui digitare:
HC c:\percorso\completo\file.hpj
Se la compilazione ha esito positivo, nella directory \HC verrà realizzato il file .hlp. Per utilizzare il file .hlp appena creato con la nostra applicazione VB, è sufficiente assegnare ad ogni componente dei nostri form un valore ContextID (definito nella sezione MAP del file .HPJ) e assegnare il file .hlp come help file per tutto il progetto. Così facendo ad ogni pressione del tasto F1 verrà automaticamente aperta la guida sull'argomento specificato



Edited by joh_lamer_3r - 27/3/2009, 20:56
 
Top
Kakone1995
view post Posted on 10/6/2009, 17:43




i miei occhi!
 
Top
FatalSnake.
view post Posted on 10/6/2009, 21:03




CITAZIONE (Kakone1995 @ 10/6/2009, 18:43)
i miei occhi!

:joker clap:
 
Top
joh_lamer_3r
view post Posted on 11/6/2009, 10:29




+1
 
Top
FatalSnake.
view post Posted on 11/6/2009, 16:57




+1
 
Top
joh_lamer_3r
view post Posted on 12/6/2009, 11:54




+1
 
Top
joh_lamer_3r
view post Posted on 13/6/2009, 11:12




+1
 
Top
FXaXtXaXlXsXnXake
view post Posted on 30/8/2009, 14:44




+1
 
Top
joh_lamer_3r
view post Posted on 29/3/2010, 17:02




+1
 
Top
FXaXtXaXlXsXnXake
view post Posted on 13/12/2010, 20:26




+1
 
Top
view post Posted on 22/1/2011, 04:22

capo dei poster

Group:
Member
Posts:
3,660
Location:
**_Torino_**

Status:


+1
 
Top
view post Posted on 24/1/2011, 20:19

capo dei poster

Group:
Member
Posts:
3,660
Location:
**_Torino_**

Status:


+1
 
Top
12 replies since 27/3/2009, 20:34   216 views
  Share