Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-06-2006, 14:34   #1
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
Gestire un elenco di indirizzi vb

Oggi tentavo di gestire un elenco di indirizzi email con il vb, quindi ho pensato di utilizzare un vettore (di dimensione pari al numero degli indirizzi) e di dichiarare come record ogni elemento del vettore.

Sulla carta ho tutto pronto, ma "non funziona" il codice che avrei predisposto è questo ed almeno per il momento dovrei riuscire ad inserire e visualizzare gli indirizzi con i loro dati senza salvare nulla su file, in seguito tenterò di salvare tutto su un file tipo Archivio.dat.


PEr ora ho scritto questo... vedete un pò:



Private Sub Form_Load()

Public Type archivio

email As String
nome As String
password As String
dataregistrazione As String

datiutente As utente

Dim registrazioni() As archivio

End Type

Type utente

nome As String
cognome As String
indirizzo As String
città As String
via As String
telefono As String

End Type






End Sub



Purtroppo nonostante in teoria sembri tutto corretto, il programma genera l'errore "invalid inside procedure e si ferma" che fare per andare avanti???
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 14:52   #2
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Codice:
Private Sub Form_Load()

Public Type archivio

email As String
nome As String
password As String
dataregistrazione As String

datiutente As utente

Dim registrazioni() As archivio

End Type

Type utente

nome As String
cognome As String
indirizzo As String
città As String
via As String
telefono As String

End Type



End Sub
E' tutto errato ... perchè:
1) dichiari dei Type dentro un evento load al posto che nelle dichiarazioni o in un modulo
2) dichiari datiutente come utente quando devi ancora dichiarare quel tipo
3) dichiari registrazioni() come archivio da dentro il tipo archivio

Prova così:

Codice:
Type utente
   nome As String
   cognome As String
   indirizzo As String
   città As String
   via As String
   telefono As String
End Type

Public Type archivio
   email As String
   nome As String
   password As String
   dataregistrazione As String
   
   datiutente As utente
End Type

Private Sub Form_Load()
   Dim registrazioni() As archivio
End Sub
oppure con le dichiarazioni dei 2 type in un modulo.
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 14:56   #3
Spike79
Senior Member
 
L'Avatar di Spike79
 
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6267
Mah, con VB6 ho messo tutto in un module:
Codice:
Public Type utente
nome As String
cognome As String
indirizzo As String
città As String
via As String
telefono As String
End Type

Public Type archivio
email As String
nome As String
password As String
dataregistrazione As String
datiutente As utente
End Type
e questo in un form:

Codice:
Dim registrazioni() As archivio
e funzia tutto.
Con il tuo 'ordine' dava un errore di dichiarazione anticipata.

EDIT: appunto, mentre provavo, mi hai anticipato
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO
Spike79 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 18:43   #4
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
si, ora ho utilizzato un unico record

il codice è:
Public Type archivio
email As String
nomeaccount As String
nomeserver As String
password As String
dataregistrazione As String
nomeutente As String
cognomeutente As String
indirizzo As String
via As String
città As String
datanascita As String
codicefiscale As String
telefono As String
mailcollegata As String

End Type


ed in form load ho inserito l'istruzione:

Dim email() As archivio


ok.


ora dovrei, caricare il vettore, visualizzare, salvare sul file, leggere dal file, visualizzare ed eventualmente modificare i campi. Inoltre si pone il problema del dimensionamento dinamico del vettore. (non vorrei cancellare tutto ogni volta che inserisco o elimino un singolo record all'interno del vettore email)
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 18:45   #5
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
con

con l'istruzione:


dim dimensione as string

redim email (1 to dimensione)




Potrei andare incontro a questo genere di problemi??
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2006, 21:49   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
"dimensione" deve essere un numero, dichiaralo come integer.
E poi se fai il "redim" semplice ogni volta cancella tutto il contenuto del vettore, se vuoi conservarne il contenuto devi usare "redim preserve".
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 00:13   #7
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok

Public Type indirizzi
email As String
nomeaccount As String
nomeserver As String
password As String
dataregistrazione As String
nomeutente As String
cognomeutente As String
indirizzo As String
via As String
città As String
datanascita As String
codicefiscale As String
telefono As String
mailcollegata As String

End Type

const max as integer = 500
dim email as indirizzi
dim archivio(1 to max) as indirizzi



più o meno dovrebbe essere così... domani vedrò di caricare gli indirizzi e di salvare tutto sul file archivio.dat.
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 14:25   #8
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok il programma inizia a prendere forma.


http://img223.imageshack.us/img223/4...dirizzi6ka.png


le 13 text box a sinistra ricevono i dati di imput dei singoli indirizzi email, la label sulla destra, permette di scorrere gli indirizzi email da 1 a 500 visualizzando le informazioni oppure di visualizzare direttamente una posizione in particolare.


il codice fin'ora è:

Const max As Integer = 500
Dim archivio(1 To max) As indirizzi
Dim dimensione As Integer

Private Sub Command1_Click()
Call inserisci

End Sub






Private Sub inserisci()

dimensione = dimensione + 1
If dimensione <= max Then

With archivio(dimensione)

nomeaccount = Text1.Text
nomeserver = Text2.Text
password = Text3.Text
dataregistrazione = Text4.Text
nomeutente = Text5.Text
cognomeutente = Text6.Text
indirizzo = Text7.Text
via = Text8.Text
città = Text9.Text
datanascita = Text10.Text
codicefiscale = Text11.Text
telefono = Text12.Text
mailcollegata = Text13.Text

End With
End If


Call ripulisci

End Sub

Private Sub ripulisci()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""



End Sub

Private Sub Command2_Click()
Dim i As Integer
For i = 0 To 13
Debug.Print "text" & i & ".text ="
Next i


End Sub

Private Sub Form_Load()

End Sub



più una piccola aggiunta sul modulo (add module, come avete suggerito)


Public Type indirizzi
email As String
nomeaccount As String
nomeserver As String
password As String
dataregistrazione As String
nomeutente As String
cognomeutente As String
indirizzo As String
via As String
città As String
datanascita As String
codicefiscale As String
telefono As String
mailcollegata As String

End Type

Dim email As indirizzi




Che mi dite???


(starei prendendo in considerazione l'idea di visualizzare una piccola immagine per ogni indirizzo email, inoltre dovre utilizzare un database...??? insomma vedete anche qua... http://www.hwupgrade.it/forum/showthread.php?t=1226212 )



ok.
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 14:57   #9
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Puoi tranquillamente usare un file di testo sequenziale, in cui ogni riga sarà un record contenente le varie informazioni separate ognuna da una virgola ... vb6 mette a disposizione alcuni comandi per la lettura di file sequenziali molto veloci e semplici, in poche righe si fa tutto (a differenza magari di un database in cui si deve fare la connessione, una query etc etc ... anche se nel tuo caso sarebbe ugualmente semplice); da tenere conto che poi un file di testo sequenziale in cui ogni campo è separato da una virgola, può essere facilmente importato in Excel che verrà trattato automaticamente in righe e colonne, senza nessuno smanettamento particolare.

Per aprire un file e leggerlo sequenzialmente, si può fare così:

Codice:
dim var1, var2, var3, var4 as string
dim i as integer
i = 0

Open nomefile For Input As #1
   Do While Not EOF(1)
      Input #1, var1, var2, var3, var4
         archivio(i).nomeaccount = var1
         archivio(i).nomeserver = var2
         ' ...
         i = 1 + 1
   Loop
Close #1
è solo un esempio!!! cmq funzionante.
Il comando Input #1 var1, var2, var3, var4 non fa altro che prendere i vari pezzettini di riga separati da virgole e assegnarli alle 4 variabili var1 etc.
Poi sempre da dentro il ciclo "do while" puoi salvarti le variabili dove meglio credi, ad esempio facendo avanzare il contatore di archivio e memorizzando in esso tutte le righe.

Per scrivere invece in un file sequenziale (aggiungengo all' ultima riga) si fa semplicemente così:

Codice:
Open nomefile For Append As #1
   Print #1, variabile1; ","; variabile2; ","; variabile3
Close #1
Ovvero scrive una riga formata dalle 3 variabili separate dalle virgole.
E' bene, un consiglio mio, usare le variabili (in salvataggio) come stringhe tra virgolette; es:
variabile1 = chr(34) & "pippo" & chr(34)
variabile2 = chr(34) & "pluto" & chr(34)
variabile3 = chr(34) & "paperino e clarissa" & chr(34)
In modo che se apri il file col blocconote avrai la riga:
"pippo","pluto","paperino e clarissa"
così da non avere problemi in caso di spazi tra le stringhe; anche i numeri puoi salvarli tra virgolette, tanto li puoi dopo trattare come numeri con le solite funzioni val() etc etc ...
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 18:07   #10
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok,

ho quasi finito, ora il programmino riesce a :


Salvare 13 campi per ogni record su un file, per un massimo di 500 indirizzi email,
caricare il file già salvato, leggere un record di posizione indicata oppure visualizzare i dati di ogni indirizzo procedendo avanti o indietro a passi di 1.


Ora:
1)Potrei caricare il programmino sul web e rendere disponibile qui l'indirizzo, in modo che anche voi abbiate un sorgente ?

2) Piccoli problemi della visualizzazione avanti, ossia, dal primo in avanti il programma continua a procedere nonostante i record siano terminati e non riesco a trovare un "limite " come invece ho fatto per il bottone "indietro", pensavo al numero dell'ultimo record ossia della dimensione del file.. ma come fare per selezionarlo????


ecco il codice che non va:


Private Sub Avanti_Click()
Dim f As Integer

f = Text14.Text + 1
Text14.Text = f
Text14.Refresh

If f <= (qui dovrei indicare il valore corrispondente al numero dell'ultimo record del file... )Then

Call mostra(f)

Else

End If

End Sub


Quando invece si scorre a ritroso... funziona tutto a meraviglia...

Private Sub Indietro_Click()
Dim f As Integer
f = Text14.Text - 1
Text14.Text = f
Text14.Refresh
If f <= 0 Then
MsgBox (finito)
Text14.Text = 1
Else

Call mostra(f)
End If

End Sub




ok
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:08   #11
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Quote:
Originariamente inviato da monocromo
1)Potrei caricare il programmino sul web e rendere disponibile qui l'indirizzo, in modo che anche voi abbiate un sorgente ?
Certo ...

Quote:
Originariamente inviato da monocromo
2) Piccoli problemi della visualizzazione avanti, ossia, dal primo in avanti il programma continua a procedere nonostante i record siano terminati e non riesco a trovare un "limite "


Beh, il limite lo puoi conoscere solo leggendo il file sequenziale ed incrementando un contatore nel ciclo di input:

Codice:
dim contatore as integer
contatore = 0

Open nomefile For Input As #1
   Do While Not EOF(1)
      Input #1, var1, var2, var3, var4
         contatore = contatore + 1
   Loop
Close #1
La variabile contatore poi la puoi usare come limite ...

Piccolo appunto:

Quote:
Private Sub Avanti_Click()
Dim f As Integer

f = Text14.Text + 1
Text14.Text = f
Text14.Refresh

If f <= (qui dovrei indicare il valore corrispondente al numero dell'ultimo record del file... )Then

Call mostra(f)

Else

End If

End Sub
Quell' Else in grassetto non serve e lo puoi togliere, se non usi la parte Else del ciclo.
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:13   #12
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok,

ora cerco un sito di file hosting ed inserisco qui il link dei sorgenti. ..


vedrai che la (i) che utilizzo come contatore all'interno di una private sub, non è (almeno così ho capito) "visibile" all'interno di altre sub sel programma, per questo dovre accedere in lettura da una public e riutilizzare poi il valore all'interno di tutto il programma.



ora arrivano i sorgenti.
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:17   #13
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Dichiara la variabile i come globale ... magari in un modulo, vedrai che sarà leggibile e modificabile ovunque
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:17   #14
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok

http://www.hostfiles.org/files/20060622072001_email.zip



ok ecco i sorgenti, trattandosi di un file.txt, preferisco almeno per ora, cancellare le registrazioni "manualmente" anche se appena avrò ottenuto una versione "riciclabile" mi occupero anche dei bottoni, Modifica ed Elimina, che per il momento ho escluso..

Ultima modifica di monocromo : 22-06-2006 alle 19:21.
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:25   #15
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Devo ancora provare il programma ma ti faccio ugualmente due appunti:

1) abituati ad usare i rientri per avere anche a vista d' occhio la struttura del programma e soprattutto impara ad usare anche nei passaggi più semplici i commenti

2) non ti consiglio di usare (sempre che non serva o sia necessario) dei percorsi di file assoluti ... falli relativi ... magari con l' utilizzo di app.path o selezionandoli con una commondialog (perchè se io non ho il volume c: il programma va in errore)

Ora guardo il programma ... che ci devo fare?
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 19:37   #16
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Allora, è pieno di errori ... ma cmq, sbaglio o non funziona?
Quote:
Open "c:\archivio.txt" For Append As #1
Print #1, nomeaccount; ","; nomeserver; ","; password; ","; dataregistrazione; ","; nomeutente; ","; cognomeutente; ","; indirizzo; ","; via; ","; città; ","; datadinascita; ","; codice; ","; fiscale; ","; telefono; ","; mailcollegata; ",";
Close #1
La parte in grassetto finale non ci va (l' ultima variabile non deve essere seguita nè dal ; nè dal ","); mentre il ","; in mezzo si.
Altra cosa importante che ti consiglio vivamente di fare ... è di aggiungere a tutte le variabili che scrivi le virgolette (le puoi scrivere da codice usando chr(34)).

Es:

nomeaccount = chr(34) & nomeaccount & chr(34)
nomeserver = chr(34) & nomeserver & chr(34)
Print #1, nomeaccount; ","; nomeserver

In modo che nel file i dati siano così, es:
"pippo","pluto"
e non:
pippo,pluto

Quote:
f = Text14.Text + 1
e
f = Text14.Text - 1
Ti consiglio di fare un casting e trasformare la stringa in intero prima di fare i conti ... usa val() o cint() ...

Quote:
MsgBox (finito)
Il finito va tra virgolette essendo stringa, altrimenti msgbox non visualizza nulla: MsgBox ("finito")
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 20:16   #17
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ma, funzionare.. funziona

altrimenti che lo mettevo a fare..


tuttavia... al primo avvio è necessario

1) fare clic almeno una volta su "inserisci" in modo che venga creato il file archivio.txt.

e qui come dici tu, se uno non ha il c: si va in errore, per cui ora cercherò il codice che crei il file nella stessa directory dell'eseguibile.

2) quando si fa click su visualizza n^ è necessario che ci sia almeno un numero sulla text box adiacente.


(per cui forse dovrei invertire l'ordine della textbox e del bottone...)



Ora vado ad applicare il tutto.. ma un'ultima cosa..


se inserisco le virgolette, quando poi il prog ricarica i dati dal file... queste virgolette compaiono anche nelle text box???


ok,


(per associare un'immagine ad ogni indirizzo pensavo a due vettori paralleli...)
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 20:25   #18
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Per avere il percorso della directory in cui è presente l' eseguibile del programma basta usare: app.path & "\nomefile.txt"

Per il discorso delle virgolette, quando carichi il valore nella variabile stringa, viene in automatico convertito a stringa in quanto trova le virgolette per quello ti ho consigliato sto trucchetto onde evitare problemi con spazi o altri caratteri particolare, ad esempio l' uso di virgole nella stringa che genera confusione al programma in quanto le virgole sono usate per separare le variabili.

La gestione delle immagini, puoi implementarla come vuoi ... visto che hai il file di testo sequenziale coi vari dati, perchè non usare un' ulteriore variabile che contiene il percorso dell' immagine? magari solo il percorso relativo a partire dalla dir dell' applicazione, così basta semplicemente aggiungerla ad app.path ..
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2006, 23:55   #19
mon--edited--romo
Bannato
 
Iscritto dal: Jul 2005
Messaggi: 261
ok,

bene, ora il programmino funziona... perquanto sia ancora ristretto all'osso.


Ho aggiunto l'immagine per ogni file, come mi hai detto tu, non con due vettori paralleli ma semplicemente aggiungendo un campo a quelli che già c'erano...

qui ho trovato il primo errore (segnalato da un commento...) nel caso si commetta un errore digitando il nome del file, infatti il programma procede ma al momento di caricare il file si pianta tutto... dovrò quindi utilizzare una funzione predefinita tipo msgbox o inputbox per sfogliare le cartelle e selezionare manualmente il nome del file.


Ora il programmino va fino a 500 indirizzi. Il secondo errore stà nel fatto che nonostante sia riuscito ad agganciare il contatore al numero reale delle registrazioni presenti sul file...non sono ancora riuscito ad impedire che si vada oltre con il bottone avanti... (al momento non so perchè...).



Il prossimo passo sarà utilizzare delle funzioni come modifica, (dato che modificando i valori ed utilizzando il bottone inserisci si crea una nuova registrazione ed il contatore viene aggiornato, quindi dovrò aggiungere un'altro bottone..) elimina (dato che per ora ho preferito eliminare i campi manualmente dal file .txt). Inoltre vorrei poter (so che è facile e dovrei riuscirci in una mezzoretta...) generare una lista in html con un bottone apposito. Ovviamente per fare questo dovrò necessariamente conoscere la fine del file... altrimenti ogni volta sarà generato un file da 500 campi.


Beh.. dimmi che ti sembra... io ho già iniziato ad inserire 3 indirizzi (primo, secondo e terzo) e 3 immagini (yahoo, lycos e tiscali) almeno per verificare il funzionamento. (vi è poi un immagine standard nel caso il campo sia vuoto, tutte le immagini sono sulla stessa cartella del programma e del file txt)

http://www.hostfiles.org/files/20060622114837_email.zip


ok,

un ultima cosa, non ho inserito le virgolette.. poichè ho paura che poi vengano visualizzate sulle text box.
mon--edited--romo è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2006, 10:20   #20
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Parto dal ri-chiarire alcune cose su questi file sequenziali ... il file lo puoi creare come vuoi tu (quindi con la struttura che preferisci) ... ma cerca però di dargli una struttura corretta. Ti spiego ...
Tu quando salvi nel file ottieni questa cosa qua:
Codice:
primo,,,,,,,,,,,,,tiscalimail.gif,secondo,,,,,,,,,,,,,lycos.jpg,terzo,,,,,,,,,,,,,yahoomail.gif,
è un caso che il programma che hai fatto riesca a suddividerla in 3 parti (come dovrebbe essere) ed è anche poi difficile da esaminare (parlo ad occhio) e da mantenere e modificare ...
Io ti CONSIGLIO (prendilo come un ordine) di usare innanzitutto le virgolette (fidati che non si vedono nelle variabili in quanto il vb le considera come delimitatore di stringhe!!!!!) e di separare i record in righe (ogni riga un record!!!) ... ultima cosa che ti avevo già segnalato in un post precedente, alla fine l' ultimo campo del record non deve finire con una virgola!!!!

Il file che dovresti ottenere è questo:
Codice:
"primo","","","","","","","","","","","","","tiscalimail.gif"
"secondo","","","","","","","","","","","","","lycos.jpg"
"terzo","","","","","","","","","","","","","yahoomail.gif"
Il problema sta nella sub Inserisci in cui hai scritto questo codice errato (come ti avevo già segnalato in precedenza):
Quote:
Open App.Path & "\archivio.txt" For Append As #1
Print #1, nomeaccount; ","; nomeserver; ","; password; ","; dataregistrazione; ","; nomeutente; ","; cognomeutente; ","; indirizzo; ","; via; ","; città; ","; datadinascita; ","; codice; fiscale; ","; telefono; ","; mailcollegata; ","; immagine; ",";
Close #1
","; non ci va!! questa virgola finale è la causa che non ti suddivide le righe in quanto il vb pensa che ci siano altre variabili campo da inserire nello stesso record.
Per risolvere poi il 1° problema delle virgolette ... quando assegni alle variabili le stringhe delle textbox, aggiungici prima e dopo le virgolette tramite il carattere ascii 34:
Codice:
miavariabile = chr(34) & textbox.text & chr(34)
o qualcosa di simile in base a come assegni.

##############################

Per quanto riguarda invece l' inserimento del file immagine, ti consiglio di aggiungere alla tua maschera un pulsante sfoglia così uno può cercare comodamente l' immagine senza dover scrivere a mano il percorso (e niente inputbox!!!!!!!!!) ... per fare questo si usano le CommonDialog ...
Come si fa? devi innanzitutto aggiungere il componente "Microsoft Common Dialog Control" facendo tasto destro sulla casella degli strumenti, cliccare su "Componenti" e cercare nella lista il componente che di ho detto.
Ora te lo ritrovi nella casella degli strumenti, facci un doppio-click così da inserirlo nel form (non lo puoi modificare esteticamente in quanto è un controllo invisibile che funziona solo in esecuzione).
Che fa sto CommonDialog? è il componente di Windows che gestisce tutte le finestre di dialogo (Apri, Salva, Caratteri, Colori, ...).
Come si usa?
All' interno del pulsante che aprirà la finestra di dialogo inserisci questo codice:
Quote:
CommonDialog1.ShowOpen

textbox.text = CommonDialog1.FileName
Questo non fa altro che aprire la finestra di dialogo "Apri" e assegnare alla textbox (che cambiera nome) il percorso completo del file (puoi quando vai a salvarlo devi togliere le varie directory per usare app.path, o quello che devi fare).
Questo codice però non ha la gestione degli errori in caso il file non fosse disponibile (impegnato da un altro programma) e gli mancano delle proprietà che permettono di visualizzare solo alcuni formati di file, di nascondere i file nascosti, etc etc ... ecco il codice rivisitato e migliorato per il tuo caso:
Quote:
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.Filter = "Tutti i file (*.*)|*.*|Immagine JPG (*.jpg)|*.jpg|Immagine GIF (*.gif)|*.gif|Immagine BMP (*.bmp)|*.bmp"
CommonDialog1.FilterIndex = 2

CommonDialog1.ShowOpen

textbox.text = CommonDialog1.FileName

ErrHandler:
Exit Sub
La proprietà filter indica quali formati filtrare; la proprietà filterindex serve a impostare il formato predefinito (il 2°: jpg).

####################################

Detto questo ... riguardo il codice perchè non ricordo più cosa dovevo dirti
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino
mynos79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
BioWare conferma: il nuovo Mass Effect &...
5 robot aspirapolvere di fascia alta in ...
Xiaomi Redmi Note 14 5G a 179€ è ...
Veri affari con gli sconti de 15% Amazon...
Tutti gli iPhone 16 128GB a 699€, 16e a ...
Take-Two ammette: vendite di Borderlands...
Tutti i Macbook Air e Pro con chip M4 ch...
GeForce RTX 50 SUPER: non cancellate, ma...
Warner Bros. riporterà al cinema ...
Hai usato il 'Pezzotto'? Ora anche la Se...
TeraFab: Musk vuole costruire la fabbric...
Lo compri una volta, lo giochi dove vuoi...
Qiantinuum annuncia Helios, "il com...
Samsung Galaxy S26 Ultra: una sola novit...
Google prepara Gemini 3 Pro e Nano Banan...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v