Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Google Pixel 10 Pro XL è il top di gamma della serie Pixel, presentando un ampio display Super Actua da 6.8 pollici insieme alle novità della serie, fra cui la ricarica wireless magnetica Pixelsnap e le nuove funzionalità AI avanzate. Il comparto fotografico include un sistema a tripla fotocamera con zoom Pro Res fino a 100x, mentre il processore Tensor G5 con 16GB di RAM garantisce prestazioni percepite molto elevate su Android.
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-06-2007, 23:56   #1
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
[vb help] modificare i campi di un record

dunque avrei già scritto su un file di testo un record contenente 5 campi, ogni campo contiene un valore di tipo string

questa è l'istruzione che uso per scrivere sul file di testo.

dim record(1 to 5) as tipodelrecord
With record(1)
nome1 = label1.caption
nome2 = label2.caption
nome3 = label3.caption
nome4 = label4.caption
nome5 = label5.caption
end with

Open App.Path & "\testo\" & filetesto.txt For Append As #1
Print #1, nome1; nome2; nome3; nome4; nome5;
Close #1



Il file di testo ora contiene:

nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;



Ora dovrei modificare il valore del record(2).nome3 e salvare il file di testo.

pensavo di aggiungere un bottone all'applicazione e creare una nuova sub-routine che riceve in imput il nuovo valore aggiorna il record e scrive sul file di testo.

Chi mi da una mano??
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 16:42   #2
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
Perchè non risponde nessuno??

Se ho scritto qualche str@... ditelo...

Ultima modifica di Elite83 : 15-06-2007 alle 19:02. Motivo: MOD
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 19:03   #3
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
up
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 19:15   #4
icecube_HU
Member
 
L'Avatar di icecube_HU
 
Iscritto dal: May 2006
Messaggi: 71
Quote:
Originariamente inviato da Elite83 Guarda i messaggi
dunque avrei già scritto su un file di testo un record contenente 5 campi, ogni campo contiene un valore di tipo string

questa è l'istruzione che uso per scrivere sul file di testo.

dim record(1 to 5) as tipodelrecord
With record(1)
nome1 = label1.caption
nome2 = label2.caption
nome3 = label3.caption
nome4 = label4.caption
nome5 = label5.caption
end with

Open App.Path & "\testo\" & filetesto.txt For Append As #1
Print #1, nome1; nome2; nome3; nome4; nome5;
Close #1



Il file di testo ora contiene:

nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;
nome1; nome2; nome3; nome4; nome5;



Ora dovrei modificare il valore del record(2).nome3 e salvare il file di testo.

pensavo di aggiungere un bottone all'applicazione e creare una nuova sub-routine che riceve in imput il nuovo valore aggiorna il record e scrive sul file di testo.

Chi mi da una mano??
I file sequenziali di testo non sono l'ideale se si tratta di modificare spesso record all'interno, per questo meglio i file ad accesso casuale (se non vogliamo scomodare i DB).

Se non vuoi modificare tipo di file, la miglior soluzione e' di leggere tutto il file memorizzando tutti i dati in matrici (se non sono migliaia di record !), modificare quello che ti serve, poi riscrivere tutto il file.... va' da se' che e' una soluzione efficace, ma non molto efficiente !

Dai un'occhiata all'istruzione "Open" con il tipo di file "Random"...

Ciao !
icecube_HU è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 19:39   #5
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
ok e se invece decido di modificare il tipo di file?
dopotutto sempre meglio scrivere il codice una volta per tutte, come dovrei fare?
magari scomodiamoli pure sti db...
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 20:49   #6
icecube_HU
Member
 
L'Avatar di icecube_HU
 
Iscritto dal: May 2006
Messaggi: 71
Quote:
Originariamente inviato da Elite83 Guarda i messaggi
ok e se invece decido di modificare il tipo di file?
Ripeto: dai un'occhiata all'istruzione "Open" con il tipo di file "Random"..., e inoltre alle istruzioni Get# e Put#...

Documentanti un po'..., non penserai che qualcuno scriva il TUO programma, no ?
icecube_HU è offline   Rispondi citando il messaggio o parte di esso
Old 15-06-2007, 22:11   #7
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
no ma non ho capito il concetto.. dovrei ricopiare tutti i campi del record in un nuovo file ?
Equivale a caricare nuovamente il vettore con nuovi dati... non si potrebbe cambiare il dato di una sola riga del record??
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2007, 12:32   #8
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
up
praticamente dovrei modificare un record senza stravolgere il programma...
nessuno???
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2007, 20:28   #9
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
up
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 11:35   #10
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
up
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 14:24   #11
icecube_HU
Member
 
L'Avatar di icecube_HU
 
Iscritto dal: May 2006
Messaggi: 71
Quote:
Originariamente inviato da Elite83 Guarda i messaggi
no ma non ho capito il concetto.. dovrei ricopiare tutti i campi del record in un nuovo file ?
Equivale a caricare nuovamente il vettore con nuovi dati... non si potrebbe cambiare il dato di una sola riga del record??
Il concetto e' questo: un file sequenziale, pur fisicamente scritto su un supporto versatile come l'hard-disk, "simula" nella struttura un "media" sequenziale, come ad esempio un nastro.

Prendi una musicassetta: se vuoi sostituire 10 secondi di musica dopo, ad es., 2 minuti dall'inizio, cosa devi fare?
Leggi esattamente 2 minuti di nastro, poi registri esattamente 10 secondi con il nuovo contenuto (facendo attenzione a non cancellare qualcos'altro !).

Piccolo problema: puoi farlo se vuoi sostituire i 10 secondi di contenuto con ESATTAMENTE 10 secondi del NUOVO contenuto, ma se ne vuoi inserire 20, come fai ???
Leggi 2 minuti, li passi su una nuova cassetta ("l'altro" file, ricordi ?), poi inserisci i NUOVI 20 sec., e poi il resto della prima cassetta.
L'hai mai fatto ? No, eh ?... E' un casino ! APPUNTO !!!

Tornando al tuo file, puoi fare facilmente quello che desideri SOLO se il nuovo contenuto e' ESATTAMENTE LUNGO (in caratteri) quanto il precedente.... altrimenti devi usare un secondo file...

Con i file Random e' diverso, perche' in questo caso i record hanno tutti la stessa lunghezza, ed il sistema ti fornisce le istruzioni (Get# e Put#) per leggere e scrivere direttamente i record nella posizione desiderata !
(C'hai dato un'occhiata ? ... No, eh ? )

Ciao !
icecube_HU è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 14:50   #12
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
Quote:
Originariamente inviato da icecube_HU Guarda i messaggi
Il concetto e' questo: un file sequenziale, pur fisicamente scritto su un supporto versatile come l'hard-disk, "simula" nella struttura un "media" sequenziale, come ad esempio un nastro.

Prendi una musicassetta: se vuoi sostituire 10 secondi di musica dopo, ad es., 2 minuti dall'inizio, cosa devi fare?
Leggi esattamente 2 minuti di nastro, poi registri esattamente 10 secondi con il nuovo contenuto (facendo attenzione a non cancellare qualcos'altro !).

Piccolo problema: puoi farlo se vuoi sostituire i 10 secondi di contenuto con ESATTAMENTE 10 secondi del NUOVO contenuto, ma se ne vuoi inserire 20, come fai ???
Leggi 2 minuti, li passi su una nuova cassetta ("l'altro" file, ricordi ?), poi inserisci i NUOVI 20 sec., e poi il resto della prima cassetta.
L'hai mai fatto ? No, eh ?... E' un casino ! APPUNTO !!!

Tornando al tuo file, puoi fare facilmente quello che desideri SOLO se il nuovo contenuto e' ESATTAMENTE LUNGO (in caratteri) quanto il precedente.... altrimenti devi usare un secondo file...

Con i file Random e' diverso, perche' in questo caso i record hanno tutti la stessa lunghezza, ed il sistema ti fornisce le istruzioni (Get# e Put#) per leggere e scrivere direttamente i record nella posizione desiderata !
(C'hai dato un'occhiata ? ... No, eh ? )

Ciao !

ciao, grazie per la risposta, dunque si ieri sera ci ho dato un'occhiata, ho un libro sul linguaggio sql e negli utlimi capitoli c'era la gestione di un file mdb (creato con access) con il vb.
Li per li non mi è sembrato complicato, ma avrei dovuto prendere tutto il file e creare un nuovo database con access e successivamente crearmi una query in vb per accedere e modificare i campi...
Ho scartato anche l'utilizzo di un file di testo aperto con open for random, perchè dovrei rimuovere molto spesso alcuni campi del vettore per mandarlo in stampa e da quanto ho capito non è possibile compattare il vettore così finierei per avere un file txt lunghissimo pieno di spazi vuoti.
Così ho deciso di creare un nuovo file e tentare di modificarlo.
Stasera ti faccio sapere.
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 16:56   #13
icecube_HU
Member
 
L'Avatar di icecube_HU
 
Iscritto dal: May 2006
Messaggi: 71
Quote:
Originariamente inviato da Elite83 Guarda i messaggi
ciao, grazie per la risposta, dunque si ieri sera ci ho dato un'occhiata, ho un libro sul linguaggio sql e negli utlimi capitoli c'era la gestione di un file mdb (creato con access) con il vb.
Li per li non mi è sembrato complicato, ma avrei dovuto prendere tutto il file e creare un nuovo database con access e successivamente crearmi una query in vb per accedere e modificare i campi...
Ho scartato anche l'utilizzo di un file di testo aperto con open for random, perchè dovrei rimuovere molto spesso alcuni campi del vettore per mandarlo in stampa e da quanto ho capito non è possibile compattare il vettore così finierei per avere un file txt lunghissimo pieno di spazi vuoti.
Così ho deciso di creare un nuovo file e tentare di modificarlo.
Stasera ti faccio sapere.
Ok, probabilmente per quello che ti serve non conviene scomodare i DB, per modificare il singolo record del file di testo puoi fare cosi':

Codice:
   Dim F1 As String, F2 As String     'nomi dei file
   Dim L As String, NR As String
   Dim N As Long, i As Long
   
   F1 = App.Path & "\Prova.txt"     ' il nome del file da modificare
   F2 = F1 & ".tmp"                     ' il file temporaneo
   
   N = 2     '<<<<<<   il numero di record da modificare !
   NR = "---- questo e' il NUOVO contenuto del record ----"
   
   Open F1 For Input As #1
   Open F2 For Output As #2
   
   For i = 1 To N - 1     'legge e copia i record precedenti
      Line Input #1, L
      Print #2, L
   Next
   
   Line Input #1, L      ' legge il record da modificare
   Print #2, NR           ' scrive il NUOVO contenuto del record
   
   Do Until EOF(1)       ' legge e copia il resto del file
      Line Input #1, L
      Print #2, L
   Loop
   Close
   
   ' finite le modifiche ai file, ora ripristiniamo i nomi precedenti
   Kill F1
   Name F2 As F1
in questo codice devi:
- inserire il nome del file al posto di "Prova.txt"
- inserire al posto di N=2 il numero effettivo del record da modificare
- in NR mettere il contenuto dell'intero record da inserire al posto dell'N-esimo

eventualmente costruendoti una Sub in modo da passare gli argomenti N e NR...

Ciao !


P.S.: sia chiaro che, soprattutto se i dati sono molti, rimane una struttura assolutamente NON efficiente !!
Probabilmente e' molto meglio, viste le capacita' di memoria delle macchine attuali, caricare in memoria tutti i dati (una matrice, oppure un vettore per ogni campo), fare comodamente (e velocemente ! ) tutte le modifiche che ti servono direttamente sulle variabili, e salvare tutti i dati nel file di testo all'uscita del programma.

Ultima modifica di icecube_HU : 17-06-2007 alle 17:02.
icecube_HU è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 18:38   #14
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
si grazie, anche perchè io avrei già caricato tutto il contenuto del file su un vettore, per cui avrei due soluzioni, la prima operare direttamente sul vettore in memoria, la seconda operare sul file di testo.
La seconda è la più rapida io avevo già nome1,nome2.... nome5 sul file di testo e sulla matrice.

Sarebbe:

Open F1 For Input As #1
Open F2 For Output As #2

For i = 1 To N - 1 'legge e copia i record precedenti
Line Input #1, L
Print #2, L
Next

Do Until EOF(1) ' legge e copia il resto del file
Line Input #1, L
Print #2, L
Loop
Close
Open f2.txt For Append As #3
Print #3, nome1; nome2; nome3; nome4; nome5; ' qui indico i nomi delle variabili che scriverò sul file, è più comodo che unire più variabili in un unica stringa.
Close #3

Praticamente copio tutto il 1file tranne il record da modificare su un secondo file ed a questo punto inserisco alla fine un nuovo record con le modifiche necessarie, in seguito passo tutto ad una public function per l'ordinamento alfabetico dei campi del vettore.

L'altra possibilità invece sarebbe come hai detto tu di inserire un nuovo campo in fondo al vettore, dopodichè eliminare il campo che non serve più ordinare il vettore e scrivere tutto su un nuovo file di testo tipo f1mod.txt
Ma a questo punto non mi è chiaro se dovrò utilizzare due vettori uno per caricare il contenuto del file ed un'altro per apportare inserire un record, eliminare il vecchio ed ordinare il tutto prima della scrittura.

tenterò la via più breve, perchè dopotutto mi interessa non lasciare spazi bianchi ed avere un file di testo da mandarei in stampa velocemente.
Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 19:50   #15
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
le istruzioni per modificare un record del vettore sarebbero:

n= posizione che voglio modificare

vettore(n).campo1 = "nome1"
vettore(n).campo2 = "nome2modificato"
vettore(n).campo3 = "nome3"
vettore(n).campo4= "nome4"
vettore(n).campo5= "nome5"

Elite83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2007, 21:06   #16
Elite83
Member
 
L'Avatar di Elite83
 
Iscritto dal: May 2007
Messaggi: 305
funziona!!!

evvai.. ho trovato l'errore, l'ultima istruzione vettore(n).campo5= "nome5" riceveva il valore dalla textbox sbagliata... infatti avevo sempre 1 in quella posizione....


però non ho fatto come hai detto ma così:
X=msgbox

Se la posizione da modificare = x allora
scrivi sul file il contenuto delle texbox
altrimenti
copia il record dal vecchio file.

funziona bene e va anche abbastanza veloce, l'unico problema è che per il momento creo un file chiamato nuovofile.txt e che viene sovrascritto ad ogni modifica.... per cui dovrò fare in modo di modificare o al limite sovrascrivere lo stesso file.
Elite83 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
3 minuti: è il tempo per vedere l...
Gli Amazfit sono ora gli smartwatch più ...
Rowenta alza la posta: scopa elettrica s...
6 robot per le pulizie completi in offer...
Friggitrice ad aria Cecofry Full InoxBla...
iPhone 16 Pro Max a 10€ in più del minim...
Una chiavetta USB, ma SanDisk Ultra Slid...
La bolla dell'AI: perché l'econom...
Lo smartphone dovrebbe essere usato solo...
SpaceX: i video e le foto dello spettaco...
Anche a Pescara si passa ai fatti: e-bik...
La One UI 8 è pronta: Samsung con...
Xiaomi annuncia l'arrivo in Italia dei R...
La Cina stupisce ancora: test per la tur...
L'iconico iMac G3 diventerà un set LEGO?...
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: 23:44.


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