Newsgroup: it.comp.lang.visual-basic
Titolo: X Ivan o quualche altra anima pia: Come si crea "modulo1.bas"???

Purtroppo - nonostante le istruzioni molto chiare avute qui sul NG (Ivan e 
Zanna che ringrazio ancora) - non riesco a creare il "Modulo1.bas" per 
dichiaravi le variabili Global in quanto... non lo trovo!
Riporto qui le istruzioni relative ricevute:
".....
Allora devi aggiungere un Modulo.Bas, seguimi attentamente
1) Vai sul Menu Progetto di VB6 e seleziona "Inserisci Modulo", ti verrà
creato il modulo vuoto
2) Vai sulla ToolBar di VB6 e clicca su Gestione Progetti, si apre una
finestra e nella cartella modoli troverai MODULO1.BAS
3) Apri Il modulo con un doppioClick, lo troverai vuoto"
Sono andato sulla ToolBar di VB6 e cliccando su gestione risorse NON succede 
nulla.
Mi sono "bloccato" al punto 1) ed ho quindi creato qui un Module1.bas (il 
nome me lo ha detto VB6) e l'ho salvato nella cartella VB98: ovviamente il 
programma non funziona.
Qualche idea?
Grazie.
(G)

"Guido" <g,TOgu...@tisIMcIali.it> ha scritto nel messaggio 
news:43698a2c$0$22292$4faf...@reader1.news.tin.it...
Aggiungo che il "module1.bas" č cosě composto:
Option Explicit
Type Dati
n1 As String * 50
n2 As String * 50
n3 As String * 50
n4 As String * 50
n7 As String * 50
n5 As String * 20
n6 As String * 20
End Type
Mentre all'interno della Sub (nella Form2) ho lasciato il resto del codice 
per la scrittura random dei dati inseriti dall'utente ma, purtroppo, non 
funziona e mi indica un errore sul primo LSet:
Option Explicit
Private Sub Command1_Click()
Dim a as Integer
......
Open "dati.rnd" For Random As #1 Len = 245
a = LOF(1) / 245
Close #1
a = a + 1
Open "dati.rnd" For Random As #1 Len = 245
LSet n1 = Text1 ---> Qui mi riposrta un errore e la scritta Private Sub č 
evidenzita in giallo. :-(
LSet n2 = Text2
LSet n3 = Text3
LSet n4 = Text4
LSet n5 = Text5
LSet n6 = Text6
LSet n7 = Text7
Put #1, a, Dati
Close #1
...
End Sub
Grazie per ogni aiuto.
(G) 

"Guido" <g,TOgu...@tisIMcIali.it> ha scritto nel messaggio 
news:43698d45$0$22292$4faf...@reader1.news.tin.it...
Ho provato a togliere l'istruzione LSet e ad assegnare "brutalmente" 
n1=text1 (dopo aver DIMensionato as integer n1..n7), n2=text2... e cosě via.
L'erroe non c'č piů, ma il file č tragicamente VUOTO! Non scrive nulla!
Come faccio a scrivere/leggere con l'accesso causale usando il vb6?
Grazie e scusate.
(G)


Appunto il modulo adesso c'è, forse quello che non sai è cosa è una ToolBar, 
allora uso parole meno tecniche, hai presente quella finestra che ti fa 
vedere l'elenco di tutti i form che hai nel tuo progetto ? ecco sempre li 
dentro, oltre alla cartella "Form" che elenca appunto tutti i tuoi form, da 
quando hai aggiunto il modulo se ne è creata sicuramante un'altra che si 
chiama "Moduli" entra li dentro anzi che in quella dei form e ci troverai 
Modulo1.bas, quindi apri quel modulo Bas con doppioclick, e lo troverai 
vuoto, ecco li dentro devi spostare la struttura dei record TYPE --> END 
TYPE comprese, che hai nella form2 se non ho mal inteso, e lascia le altre 
istruzioni invece sempre nel form2, quindi salva il progetto e prova il 
programma !!!
Ivan


LSET è indispensabie, scrive tutti i dati nella struttura del record 
pertanto non può essere omesso,  i problemi che lamenti spariranno appena 
nel modulo1.bas sarà presente la struttura di dichiararazione dei campi del 
record, quindi Type ---> End Type comprese.
Vedi mio post precendente.
Ivan

 quindi salva il progetto e prova il programma !!!
Ciao Ivan,
Grazie molto per la tua cortesia e la tua pazienza.
Per merito delle tue indicazioni avevo già capito cosa era lo toolbar ma, lo 
stesso, il programma NON funziona e mi riporta l'errore:
"errore di compilazione"
"LSet ammessa solo in stringhe o tipi definite dall'utente" e viene 
evidenziato in giallo "Private Sub Command1_Click()"
Cosa significa?
Il modulo "Modulo1.bas" è presente nella cartella "Moduli" sotto al box 
"Form" (riquadro "Progetto", in alto a dx dello schermo)
Progetto
 |-Form
 |  |--Form1
 |  |--Form2
 |
 |-Moduli
   |-Module1 (Modulo1.bas)
Il contenuto di Modulo1.bas è:
 Option Explicit
 Type dati
 n1 As String * 50
 n2 As String * 50
 n3 As String * 50
 n4 As String * 50
 n5 As String * 20
 n6 As String * 20
 n7 As String * 50
 End Type
Mentre il contenuto del Coomand1_Click() nella Form2 (pulsante deputato al 
salvataggio) è:
Private Sub Command1_Click()
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
Dim n4 As Integer
Dim n5 As Integer
Dim n6 As Integer
Dim n7 As Integer
Dim dati As Integer
Dim nominativo As String
Dim cavvpostale As Integer
Dim percorso As String
Dim a As Integer
cavvpostale = Val(Text3)
If cavvpostale <= 0 Or cavvpostale > 99999 Or Len(Text3) <> 5 Then
MsgBox "CAP ERRATO, MAX 5 numeri!", vbOKOnly
End If
nominativo = UCase(text1)
Open "dati.rnd" For Random As #1 Len = 245
a = LOF(1) / 245
Close #1
a = a + 1
percorso =  Text3
Open percorso For Append As #1
Print #1, a, text1, Text2
Close #1
Open "dati.rnd" For Random As #1 Len = 245
LSet n1 = nominativo
LSet n2 = Text2
LSet n3 = Text3
LSet n4 = Text4
LSet n5 = Text5
LSet n6 = Text6
LSet n7 = Text7
Put #1, a, dati
Close #1
End
Dove sbaglio?????
Per favore fammi capire dove è l'errore ed aiutami ancora, se ne hai voglia.
Ti ringrazio.
(G)

Ciao!
Non so se capisco bene qual e' il tuo obiettivo perche' ho guardato appena 
il tuo codice, ma forse potrebbe andar meglio cosi':
- Codice del modulo:
Option Explicit
Type dati
    n1 As String * 50
    n2 As String * 50
    n3 As String * 50
    n4 As String * 50
    n5 As String * 20
    n6 As String * 20
    n7 As String * 50
End Type
Public RecDati As dati
- Codice nella procedura che gestisce il click del pulsante:
    Open "dati.rnd" For Random As #1 Len = Len(RecDati)
    LSet RecDati.n1 = nominativo
    LSet RecDati.n2 = Text2
    LSet RecDati.n3 = Text3
    LSet RecDati.n4 = Text4
    LSet RecDati.n5 = Text5
    LSet RecDati.n6 = Text6
    LSet RecDati.n7 = Text7
    Put #1, a, RecDati
    Close #1
Le variabili locali che dichiari all'interno della procedura Private Sub 
Command1_Click(), non vengono usate da nessuna parte, mi pare, e hanno lo 
stesso nome dei membri della type definita nel modulo. Inoltre, non ha senso 
utilizzare LSet per assegnare una stringa ad una variabile intera.
Dalla guida di VB:
"Istruzione LSet:
Allinea una stringa a sinistra all'interno di una variabile stringa, o copia 
una variabile di tipo definito dall'utente su una variabile di un altro tipo 
definito dall'utente."
Ciao!
    Alex

CUT
Funziona!
Grazie!
Per favore mi spieghi - se ti va - in parole semplici "come hai fatto"?
Sei stato gentilissimo!
Grazie ancora.
(G)
P.S. Prima che butto altri soldi sul Balena & Co mi sapresti indicare un 
buon testo che tratti non solo il VB6 "per principanti" ma anche la 
speigazione dei comandi e relativa sintassi?

 del record, quindi Type ---> End Type comprese.
In 10 anni di VB non ho mai usato LSET e tutto ha sempre funzionato 
benissimo: LSet è un retaggio dei vecchi basic, inutile in VB6.
Non funziona semplicemente perchè non sta impostando i campi del type ma 
delle variabili di nome n1, n2 ecc, che non dovrebbe neppure compilare dato 
che non sono state dichiarate.
Per assegnare correttamente il valore occorre dimensionare la var. del 
record:
Dim rec As Dati
...
rec.n1 = ...
rec.n2 = ...
...
Put #file, pos, rec
Ciao 

 Cosa significa?
Esattamente quello che dice: funziona solo con le stringhe.
n1, n2 ecc sono interi non stringhe!
E Text1 è un oggetto non una stringa: la stringa è Text1.Text.
Inoltre come dicevo LSet è assolutamente inutile in VB6.
P.S.: questi concetti di base però si trovano in qualsiasi libro di VB nei 
primi capitoli.
Ciao 

 ha scritto nel messaggio 
news:436a3...@x-privat.org...

Grazie per le ulteriori delucidazioni!
Chiedo venia ma il libro "Microsoft Vicual Basic 6  - I portatili" del 
Balena attacca subito con Form, maschere, ecc... ecc.... dando - forse - per 
scontato che uno già conosca l'ambiente LOGICO in cui si dovrà muovere. 
Meglio - a mio parere - il McGrawHill (seppure del VB5): almeno spiega i 
comandi anche se gli esempi a me non funzionano mai.
E' stato un mio acquisto sbagliato e lo riconosco. :-((((
Odio il VB6 sempre di più!
Adesso sto combattendo con i file sequenzaili: sul Balena e sul McGraw Hill 
(però VB5) c'è scritto che sono molto simili al "vecchio" basic, comandi 
compresi.
Ebbene io NON riesco assolutamente a leggere i 3 dati sequenzaili che ho 
scritto con
  Open "c:\elenco_dati" For Append As #1
  Print #1, a
  Print #1, nominativo
  Print #1, Text2
  Close #1
dove "a" è il solito contatore ottenuto con il LOF onde conoscere quanti 
files sono già presenti (ovviamente a è già stato maggiornato di uno)
nominativo è il contenuto della Text1 ma tutto in maiuscolo (nominativo = 
ucase (text1)
text2 è il cap
ho DIMensionato tutto!
eppure quando vado a leggere questo banalissimo file con:
  Open "c:\elenco_dati" For Input As #1
  Line Input #1, primariga   ---> ERRORE DI COMPILAZIONE Tipo non 
corrispondente
  Line Input #1, secondariga
  Line Input #1, terzariga
   Close#1
Apriti cielo!
P.S. anche qui ho DIMensionato primariga, secondariga, terzariga ed a
Il McGraw Hill mi dice di usare Line Input#1, a$ ma appena premo INVIO il 
VB6 mi dice che non posso usare a$ ed, ovviemtne, non posso DIMensionare a$ 
as String.
Scusate se vi rompo così tanto ma proprio non so più dove sbattere la testa 
ed ho anche finito l'aspirina!
Quasi quasi butto a mare tutto ed uso Access!
Però vorrei imparare almeno i rudimenti del VB6.
(G) 

CUT
forse ho risolto: prima DIM primariga$
e poi
line input#1,primariga$.
ma il comando PRINT che sul McGraw Hill viene dato UGUALE al corrispettivo 
del GwBasic come si usa in VB6???
Ossia se io voglio far apparire sul video il contenuto di "primariga$" quale 
rito satanico devo compiere?
Il banale Print Primariga$ non sortisce - ovviamente - alcun effetto!
(G)

 Il banale Print Primariga$ non sortisce - ovviamente - alcun effetto!
Risolto anche questo! Sono un drago! ;-)))))))))
Sono sempre più incasinato!
(G)

 Quasi quasi butto a mare tutto ed uso Access!
E saresti daccapo, perche' il VBA di Access e' parente stretto di VB. ;-)
Buon fine settimana.
    Alex

CUT
Ti ringrazio moltissimo!
Mi hai chiarito un passaggio che mi sfuggiva!
Sei stato molto gentile, speriamo di poter mettere "a frutto" i vostri 
insegnamenti.
...abbi pazienza se ti "romeprň" ancora!
Ciao e buona domanica.
(G)