Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Problema di lettura/scrittura records in modalità random
Forum - Visual Basic 6 - Problema di lettura/scrittura records in modalità random

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 18:48
Venerdì, 30/12/2011
Sto lavorando su un programma gestionale tramite ausilio di archivi, l'utente finale ha la possibilità di visualizzare (tramite l'ausilio delle listbox) tutti i records messi e di ordinarli in base alle proprie necessità, proprio per questo motivo ho inserito in un frame le varie opzioni, esempio "ordina per codice" "ordina per titolo" ect, l'ordinamento viene effettuato leggendo in modalità sequenziale il file, per poi scrivere i dati in un file con accesso random, questi a loro volta vengono riletti e riordinati per poi esser riscritti in modo ordinato in un'altro file in modo sequenziale. Di seguito il codice:

Codice sorgente - presumibilmente VB.NET

  1. App.Path & "\Archivi\" & comboCat & "-Random.temp" For Random As #2
  2.   Scarto = N
  3.   Do
  4.      Scarto = Int(Scarto / 2)
  5.      If Scarto < 1 Then Exit Do
  6.      J = 1
  7.      K = N - Scarto
  8.      Do
  9.        i = J
  10.          Do
  11.            m = i + Scarto
  12.            Get #2, i, Cod, Tit, TitO, Naz, Gen1, Gen2, Regia, SitU, SocN, Prod, Distr, Trama, Copertina: Get #2, m, Cod2, Tit2, TitO2, Naz2, Gen12, Gen22, Regia2, SitU2, SocN2, Prod2, Distr2, Trama2, Copertina2
  13.            If Cod <= Cod2 Then Exit Do



Il problema riscontrato è il seguente "Previsto: fine istruzione" precisamente in "Cod," nel primo "Get #2" (ovviamente anche nel secondo)

Consigli?! Soluzioni!?

Ultima modifica effettuata da WillyVB il 31/12/2011 alle 1:41
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:32
Venerdì, 30/12/2011
Ma cosa è quella enorme Get con tutti quei parametri?

La Get prevede solamente il numero del file, il numero di record, e la variabile da leggere, vedi

http://msdn.microsoft.com/en-us/library/aa243376(v=VS.60). ...

La variabile è bene che sia strutturata.



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 19:40
Venerdì, 30/12/2011
Ok e se io volessi leggere i dati del file?

Esempio, in modo sequenziale uso "Input #1, Var1, Var2, Var3 ect.... in modo random invece cosa dovrei usare?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:46
Venerdì, 30/12/2011
I dati in modalità random si scrivono con la

Put #

e si rileggono con la

Get #

Non mischiare le modalità random e sequenziali.

La Put e la Get devono usare una variabile strutturata.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 20:29
Venerdì, 30/12/2011
Testo quotato

Postato originariamente da nessuno:

I dati in modalità random si scrivono con la

Put #

e si rileggono con la

Get #

Non mischiare le modalità random e sequenziali.

La Put e la Get devono usare una variabile strutturata.



si ok ma io non devo leggere una solo dato per immetterlo in una sola variabile, ne devo leggere più di uno... quindi come dovrei fare?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:51
Venerdì, 30/12/2011
Mica ho detto che ne devi leggere/scrivere uno.



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 0:10
Sabato, 31/12/2011
Testo quotato

Postato originariamente da nessuno:

Mica ho detto che ne devi leggere/scrivere uno.




Si ma se io scrivo Get #2, Var1, Var2, Var3, Var4 ect mi da errore -.- qualcuno mi può fare un esempio?!

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:53
Sabato, 31/12/2011
Allora non hai letto quello che ti ho scritto sulla Get ...

La Get accetta il numero di file, il numero di record e la variabile

Get #2, 12, Rec

vuol dire leggi il record 12 dal file 2 e mettilo in Rec (che è la variabile strutturata)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
WillyVB (Normal User)
Rookie


Messaggi: 31
Iscritto: 30/12/2011

Segnala al moderatore
Postato alle 1:40
Sabato, 31/12/2011
Testo quotato

Postato originariamente da nessuno:

Allora non hai letto quello che ti ho scritto sulla Get ...

La Get accetta il numero di file, il numero di record e la variabile

Get #2, 12, Rec

vuol dire leggi il record 12 dal file 2 e mettilo in Rec (che è la variabile strutturata)



Ok devo usare una variabile strutturata quindi mettiamo caso che io strutturo una variabile cosi:

Type Prova
Titolo as string
Anno as integer
End Type

Dopodiché dichiaro una variabile per la struttura scritta sopra

Dim Archivio as Prova

Ora mettiamo che voglio leggere i dati di un file in modo sequenziale per trascriverli in Random dovrei prima di tutto conoscere la lunghezza della variabile strutturata che calcolo tramite len, quindi

Dim N as Integer
DimRec=Len(Archivio)


Open "Directory:NomeFile" for Input as #1
Open "Directory:NomeFile.temp" for Random as #2 Len= Archivio
N=0
Do While Not EOF(1)
N=N+1
Input #1, Titolo, Anno
Put #2, N, Archivio
Loop
Close#2
Close#1

Una volta fatto ciò dovrei leggere i dati in modo random per poterli paragonare per riordinarli e riscriverli in modo sequenziale, quindi arrivato a questo punto dovrò riaprire il file in random ed usare:

Get #2, N, Archivio


Però cosi riscontro un "errore" nella scrittura, ovvero se vado ad aprire il file temporaneo "nomefille.temp" non trovo i dati scritti... bensì trovo lo spazio vuoto... come se ad ogni carattere avesse messo uno "spazio"... cosa sbaglio?!

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo