Newsgroup: it.comp.lang.visual-basic
Titolo: Vecchi files

Come posso leggere da VB i vecchi files a indice di QBasic??
Grazie!
Roberto Bertolotti

 Come posso leggere da VB i vecchi files a indice di QBasic??
Non mi risulta che QBasic gestisca file a indice. A cosa ti
riferisci esattamente? Forse a QuickBASIC? BASIC PDS? ISAM?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 wrote in message
8l25fb$fod$3...@nslave1.tin.it...

Scusate, mi riferisco ai files ad indice numerico (tipo i relative del
Cobol) di QuickBasic.
Grazie!
Ciao
Roberto Bertolotti

Forse non ho capito il problem ma... Non puoi riciclare il codice QB?
Ciao,
Alessandro
(P.S. Se invece parlavi proprio del codice devi salvarlo in formato txt da
QB, che e' presente nell'oldmsdos del CD di windows)


 wrote in message
8l3sp5$37ve$1...@stargate1.inet.it...


 wrote in message
news:8l47q0$fgg$1...@nslave1.tin.it...


ODIO quando OE mi spedisce i messaggi da solo...
Come dicevo sono passati un po' di anni da quando usavo QB, percui non mi
ricordo le funzionalita' di cui stai parlando (probabilmente non ne ho mai
fatto uso quindi andro' un po' a braccio: se ne escono delle stranezze te
abbozza :))...
Cmq non mi sembra di ricordare che QB avesse funzioni intrinseche che non
siano presenti in VB, fatta eccezione per la gestione dell'IO da console.
Se avevi dei vecchi programmi in QB che hanno creato dei file che oggi vuoi
rileggere, non puoi riciclare in VB il codice che usavi in QB?
Ciao,
Alessandro


 wrote in message
8l4dho$5og8$1...@stargate1.inet.it...


 wrote in message
news:8l4eeo$na7$1...@nslave1.tin.it...


 wrote in message
8l6cq2$75nq$1...@stargate1.inet.it...


 wrote in message
news:8l6gqn$n8b$1...@nslave1.tin.it...


cosa gli spara dentro?
saranno mica dei files "binari", in cui i dati vengono scritti cosě come
sono rappresentati in memoria?
Per l'accesso ai files binari, si usa
Open "miofile" for Binary as #1
poi devi usare le istruzioni di accesso binario, Seek, Get e Put. (Guardati
l'help)
Ovviamente sei tu a dare un significato alla sequenza di bytes del file...
ovvero devi sapere esattamente tipo e dimensione delle variabili scritte, e
in che sequenza. Tipicamente si usavano dei record definiti con Type.
Per questo devi aver presente il codice QB che scrive i files.
Ciao e buon lavoro
Sig
_________________________________________________________
Luca Sigfrido Percich              
sigf...@tiscalinet.it
_________________________________________________________
non avere stile č il mio stile

PUT 4, NUM
Non ho mai visto una sintassi del genere, che associa direttamente delle
variabili ad un file... comunque credo di avere ragione, si tratta di un
file binario (nel senso che i dati numerici sono scritti in formato
binario).
L'unica cosa che mi insospettisce è che, essendo apparentemente i 4 campi
tutte stringhe ($), dovresti comunque vedere un bel pò di testo nel file...
E' così ?
LEN = 15 definisce la lunghezza del record; infatti ho 4 campi di 8 + 1+ 1+
5 = 15 bytes; di primo acchito potresti quindi dimensionare un array di 15
bytes, o una struttura con campi per un totale di 15 bytes, e leggerlo
sequenzialmente con una Get dopo aver aperto il file in modo bynary o
random:
dim rec(15) as byte
oppure
Type MyRecord
    V(8) as byte
    L    as byte
    Mac as byte
    Fil(5) as byte
end type
dim rec as MyRecord
quindi apri il file
Open "myfile.dat" For Random As #1 Len = 15
do while not eof(1)
    get #1,, rec
loop
Non ricordo se Get fa' avanzare il puntatore, in caso contrario usa
l'istrizione seek o passa il numero di record alla stessa get. Tieni
presente che se hai specificato la dimensione del record con open, seek o
get(numrec) fanno riferimento al numero di record, altrimenti a un offset in
byte dall'inizio del file (ovvero, lunghezza record = 1).
Guardati l'help su Open, Get, Seek, FileLen, LOF, EOF.
Dopo che sei riuscito a leggere i dati, sta a te dar loro il tipo
correttamente. Se si tratta di stringhe, forse puoi definire i campi nella
type come as string * n (n = lunghezza), ma non so se VB è tanto
intelligente da leggere solo i bytes dei caratteri, saltando i bytes di
lunghezza...
ovvero, prova anche con :
Type MyRecord
    V as string * 8
    L    as string * 1
    Mac as string * 1
    Fil as string * 5
end type
Alternativamente, puoi leggere tutto come array di bytes, quindi assegnare i
bytes alle stringhe carattere per carattere:
for ct = 1 to 8
    V = v & chr$(rec(ct))
next ct
Controlla inoltre il discorso base 1 o base 0 per gli array, se usi option
base 1... insomma, rec(15) potrebbe essere un array di 16 elementi,
l'indirizzo dell'array è l'indirizzoo del primo elemento, che quindi
potrebbe essere rec(0) o rec(1)... controlla!


 wrote in message
news:8l93so$pj6$1...@nslave2.tin.it...


 l'indirizzo dell'array č l'indirizzoo del primo elemento, che quindi


 Non ho mai visto una sintassi del genere, che associa
direttamente delle variabili ad un file...
:-)
FIELD
Scopo
L'istruzione FIELD definisce la struttura dei record da
utilizzare in un file ad accesso casuale. Se possibile,
tuttavia, e` meglio utilizzare la struttura TYPE ... END TYPE
per eseguire questa operazione.
Sintassi
FIELD [#]numerofile, largcampo AS var [,largcampo AS var] ...
[...]
Commenti
L'istruzione FIELD puo` definire soltanto campi con stringhe a
lunghezza variabile; per utilizzare le variabili numeriche e`
necessario effettuare altre operazioni per convertire i numeri
nei corrispondenti equivalenti di stringa e quindi di nuovo in
numeri. Le funzioni MKD$, [...], MKSMBF$ convertono i numeri
in stringhe mentre CVD, [...], CVSMBF convertono nuovamente
queste stringhe in numeri. L'utilizzo dell'istruzione TYPE ...
END TYPE per definire un record consente di eliminare la
necessita` di eseguire questa procedura complicata.
(The Waite Group's _MS-DOS QBasic - Guida del programmatore_,
McGraw-HILL Italia/Microsoft Press, 1992.)


Scopo
<SNIP>
Grazie per le Info, Maurizio.
(E intanto QBasic torna dal passato per tormentarmi...)
;o)
Sig

eventuali modifiche direttamente da lě.
Spiacente, non so aiutarti.
Comunque, se non riesci a risolvere con qualche driver di testo a larghezza
fissa, penso che popolare un MSFlexGrid con il contenuto del tuo file e
salvare le modifiche sia questione di non molte righe di codice.
Buona fortuna
Sig