Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

ridefinire una variabile in Visual basic

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

ridefinire una variabile in Visual basic

Messaggioda Stefano Pasca » sab apr 19, 2008 10:42 am

due domande in una:
1a)
come si definisce una variabile a lunghezza fissa?
per esempio un campo "pippo" lungo 50 caratteri
2a)
é possibile ridefinire una variabile in Visual Basic ?
per esempio ho un campo "pippo" lungo 50 caratteri e lo voglio scomporre in due distinti campi; il primo di nome "pippoparte1" lungo 20 caratteri e il secondo di nome "pippoparte2" di 30 caratteri.

Il problema mi viene fuori dal fatto che intendo elaborare solo una parte del contenuto di un campo presente in una cella di excel.
Le domande le ho poste in questo modo in quanto sono un vecchio programmatore (di altri tempi!) di pl1 e penso ci sia questo sistema per gestire parte di un campo.....o forse c'è un altro modo ?
In tal caso, quale è ?
Grazie a chi mi da una dritta
Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Re: ridefinire una variabile in Visual basic

Messaggioda Silver Black » sab apr 19, 2008 12:10 pm

Stefano Pasca ha scritto:1a)
come si definisce una variabile a lunghezza fissa?
per esempio un campo "pippo" lungo 50 caratteri


Dim strLaMiaStringaALunghezzaFissa As String * 50

2a)
é possibile ridefinire una variabile in Visual Basic ?
per esempio ho un campo "pippo" lungo 50 caratteri e lo voglio scomporre in due distinti campi; il primo di nome "pippoparte1" lungo 20 caratteri e il secondo di nome "pippoparte2" di 30 caratteri.


Inserisci un carattere separatore che vuoi e poi gestisci le due parti tu, trovando la posizione del separatore con InStr e prendendo la prima parte della stringa (dall'inizio alla posizione del separatore - 1) e l'ultima (dalla fine alla posizione del separatore + 1).

Un metodo più convenzionale e meno macchinoso e fare un RECORD (chiamato anche UDT, o User Defined Type, cioè Tipo Definito dall'Utente), con due campi stringa, uno per la prima parte di stringa e uno per la seconda.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Re: ridefinire una variabile in Visual basic

Messaggioda Stefano Pasca » sab apr 19, 2008 5:18 pm

Silver Black ha scritto:Inserisci un carattere separatore che vuoi e poi gestisci le due parti tu, trovando la posizione del separatore con InStr e prendendo la prima parte della stringa (dall'inizio alla posizione del separatore - 1) e l'ultima (dalla fine alla posizione del separatore + 1).

Un metodo più convenzionale e meno macchinoso e fare un RECORD (chiamato anche UDT, o User Defined Type, cioè Tipo Definito dall'Utente), con due campi stringa, uno per la prima parte di stringa e uno per la seconda.


la 1a ipotesi di soluzione mi pare più adatta quando i due campi sono a lunghezza variabile e quindi risulta necessario cercare la posizione del separatore per capire dove finisce il 1° campo e comincia il 2°.

Per quanto riguarda il metodo meno macchinoso (come tu lo definisci) mi pare perfetto; pero mi farebbe piacere vederne un esempio di dichiarazione....se me lo fai te ne sono grato.
Grazie ancora ciao Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia


Messaggioda Robby78 » sab apr 19, 2008 5:39 pm

per scindere le 2 parti della stringa puoi usare la funzione trim:

trim(stringa,1,20) = primi 20 caratteri
trim(stringa,21,30) = ultimi 30 caratteri
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Stefano Pasca » sab apr 19, 2008 5:56 pm

Robby78 ha scritto:per scindere le 2 parti della stringa puoi usare la funzione trim:

trim(stringa,1,20) = primi 20 caratteri
trim(stringa,21,30) = ultimi 30 caratteri


Per capire se ho capito ti faccio un esempio:

dim pippo * 50 as string
pippo = "Paperino mangia la Tunella con piacere"
.......
.......
if trim(pippo,1,20) = "Paperino mangia la T" then go to mangioanchio

HO CAPITO ?

Grazie tante
ciao Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Stefano Pasca » sab apr 19, 2008 6:13 pm

a parte la dim che dovrebbe essere :
dim pippo as string * 50
credo di non avere capito, in quanto non funziona manco per niente.
Allora ti prego di farmi un esempio.
Grazie stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Silver Black » dom apr 20, 2008 11:47 am

Stefano Pasca ha scritto:a parte la dim che dovrebbe essere :
dim pippo as string * 50
credo di non avere capito, in quanto non funziona manco per niente.
Allora ti prego di farmi un esempio.
Grazie stefano


Non funziona perché non è Trim la funzione da usare (la Trim toglie gli spazi a inizio e fine stringa), ma Left e Right rispettivamente per i caratteri iniziali e finali.

Codice: Seleziona tutto
Dim strText As String * 50
Dim strPrimi As String
Dim strUltimi As String

strText = "1234567890_11121314151617181920_21212324252627282930_31323334353637383940_41424344454647484950"
strPrimi = Left(strText, 10)
strUltimi = Right(strText, 10)

MsgBox "Primi 10 caratteri = " & strPrimi
MsgBox "Ultimi 10 caratteri = " & strUltimi



Per la dichiarazione del record invece (nelle dichiarazioni del modulo):

Codice: Seleziona tutto
Private Type MyStringRec
  strTotal As String * 50
  strPrimi As String * 30
  strUltimi As String * 20
End Type



E poi puoi usare questo codice di esempio:

Codice: Seleziona tutto
Private Sub Form_Load()

Dim strMyStr As MyStringRec

strMyStr.strTotal = "1234567890_11121314151617181920_21212324252627282930_31323334353637383940_41424344454647484950"
strMyStr.strPrimi = Left(strMyStr.strTotal, 30)
strMyStr.strUltimi = Right(strMyStr.strTotal, 20)

MsgBox "Primi 10 caratteri = " & strMyStr.strPrimi
MsgBox "Ultimi 10 caratteri = " & strMyStr.strUltimi

End Sub
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Stefano Pasca » dom apr 20, 2008 6:22 pm

Caro Sergio dal siculo cognome,
grazie infinite per la tua dritta.....funziona perfettamente e te ne sono grato. Ho apprezzato altresi la chiarezza con cui tu sei espresso. Vorrei comprare un libro dove trovare la sintassi delle istruzioni di VB per excel, hai modo di consigliarmene uno?
Come ho avuto modo di dirti, sono un vecchio programmatore di assembler e pl1 quindi la mentalità la conservo sempre.
In questo momento mi sto divertendo a fare il match fra il mio c/c che aggiorno su excel inserendo periodicamente i movimrnti, e i movimenti che mi arrivano dalla banca a mia richiesta. il match, ovviamente, lo sto facendo in VB con una macro.
Ti racconto questo perché puo venirti la curiosità di saperlo.
Grazie ancora
Ciao Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Robby78 » dom apr 20, 2008 6:22 pm

caspita che strafalcione!!! Scusatemi mi son confuso... è da un bel po' che non uso più vb, la funzione non è Trim (del cui funzionamento ti ha spiegato SilverBlack), ma.... oh non mi viene... mumble mumble.... ahh si ecco Mid.

sostituisci mid all'esempio che ti ho fatto e vedrai che funzionerà. Oppure usa l'altrettanto valido metodo di SilverBlack!

Ciao
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Stefano Pasca » dom apr 20, 2008 6:30 pm

Robby78 ha scritto:caspita che strafalcione!!! Scusatemi mi son confuso... è da un bel po' che non uso più vb, la funzione non è Trim (del cui funzionamento ti ha spiegato SilverBlack), ma.... oh non mi viene... mumble mumble.... ahh si ecco Mid.

sostituisci mid all'esempio che ti ho fatto e vedrai che funzionerà. Oppure usa l'altrettanto valido metodo di SilverBlack!

Ciao

Caro Robby78,
nella giungla delle istruzione capita sempre di fare confusione....quindi non te ne rammaricare. Sei stato ugualmente apprezzato per la tua solerzia.
Terrò conto anche del tuo Mid ....e se anche tu hai modo di consigliarmi un testo dove avere la sintassi delle istruzioni VB per excel, te ne sono altrettanto grato.
Grazie ancora con un saluto da me......
Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Silver Black » dom apr 20, 2008 10:25 pm

Lieto di esserti stato d'aiuto! [std]
Per VB (non so per VBA) ti consiglio di cercare il libro di Francesco Balena. Comunque il manuale in linea è un perfetto punto di partenza! [fischio]
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Robby78 » lun apr 21, 2008 8:09 am

condivido in pieno: Balena è uno degli autori migliori, in particolare proprio per le guide VB. Io comunque ho imparato VB (allora VB4) grazie all'ottimo help in linea; non so se quello di Excel sia altrettanto valido ma non ho motivo di dubitarne. Buona ricerca!
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Stefano Pasca » lun apr 21, 2008 3:56 pm

la guida in linea di macro excel (almeno quella che ho io) è una schifezza. Non c'è una cosa che cerco che riesco a trovare. Non so se ne esistono altre e non so nemmeno se si possono cambiare...ma credo di si. me ne servirebbe una dove si cerca una istruzione e lui ti fornisce la sintassi.....ma forse chiedo troppo [fischio]
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Robby78 » lun apr 21, 2008 3:59 pm

la sintassi dovrebbe comparire quando apri la parentesi dopo la funzione... se premi f1 col cursore sulla funzione non vien fuori il relativo help? Che versione di excel hai? hai fatto l'installazione completa di office?
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Stefano Pasca » mer apr 23, 2008 4:12 pm

Robby78 ha scritto:la sintassi dovrebbe comparire quando apri la parentesi dopo la funzione... se premi f1 col cursore sulla funzione non vien fuori il relativo help? Che versione di excel hai? hai fatto l'installazione completa di office?

[acc2] ... ops ! non sapevo che pressando f1 col cursore sulla funzione mi venisse fuori l'help !!
di excel ho office 2003 e l'ho istallato tutto.....forse sono io che dovrei studiare tante cosette !!
Grazie di tutto
Ciao Stefano
Avatar utente
Stefano Pasca
Senior Member
Senior Member
 
Messaggi: 226
Iscritto il: sab ott 18, 2003 10:33 am
Località: Sicilia

Messaggioda Robby78 » mer apr 23, 2008 4:28 pm

a disposizziò [;)]
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising