Salve a tutti. Sto cercando di dimostrare a me stesso che è possibile vivere senza usare le strutture
In VB10 uso le funzioni FilePut e FileGet con un record dichiarato a livello di struttura, senza problemi. In VB5 il mio record per la lettura/scrittura di un file random era una semplice variabile dichiarata a lunghezza fissa con la sua brava istruzione

Dim rec As String*100

ad esempio. Sto cercando di "forzare" il VB10 per fare lo stesso, in questo modo:

codice:
Public Class Form1

    <VBFixedString(15)> Public rec As String

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles Button1.Click

        FileOpen(1, "esempio.dat", OpenMode.Random, , , 15)
        rec = "1" + Space(14)
        FilePut(1, rec, 1, True)
        rec = "2" + Space(14)
        FilePut(1, rec, 2, True)
        rec = "3" + Space(14)
        FilePut(1, rec, 3, True)
        rec = "4" + Space(14)
        FilePut(1, rec, 4, True)
        rec = "5" + Space(14)
        FilePut(1, rec, 5, True)

        FileClose(1)

     End Sub
End Class
Fin qui niente di particolare, il Button1 fa il suo dovere, se apro in BlockNotes il file esempio.dat mi ritrovo 5 campi di 15 caratteri ciascuno, che iniziano per 1,2,3,4,5.
Il "True" come parametro a FilePut imposta StringIsFixedLength in modo che non scriva il descrittore a due byte della lunghezza della stringa (ma questo lo sapete meglio di me). Il problema nasce quando vado a leggere un record con la funzione FileGet. Io faccio così:

codice:
Public Class Form1
    
    <VBFixedString(15)> Public rec As String

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As _     
    System.EventArgs) Handles Button1.Click

        FileOpen(1, "esempio.dat", OpenMode.Random, , , 15)

        FileGet(1, rec, 1, True)

        MsgBox(rec & Len(rec))

        FileClose(1)



    End Sub
End Class
Risultato: il nulla totale per 'rec', e 0 per il valore di len(rec). E nessun messaggio di errore da parte del compilatore. Come mai FilePut capisce e FileGet no? Dove sbaglio?