Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Buon giorno a tutti.
Sto cercando di convertire un vecchio programma VB6 in VB.NET, sto usando VB2019 ma credo non abbia molta importanza.
nel programma VB6 avevo creato una Type per leggere e scrivere un file random purtroppo non riesco a convertirla in vb.net di conseguenza non riesco a leggere i dati salvati con la versione VB6, ho provato a fare la conversione con vb2005.net, converte tutto il resto abbastanza bene ma quando tento di leggere i file niente da fare, chiedo aiuto.
Allego le die versioni.
VB6:
Codice sorgente - presumibilmente VB.NET
Type SalvaLas
FileName AsString* 80
SigLas AsString* 6
CoordLasX(1 To 50)AsInteger
CoordLasY(1 To 50)AsInteger
RuotaLas AsInteger
LungLas AsInteger
LargLas AsInteger
NVert AsInteger
NLas AsInteger
Tral(1 To 5, 1 To 2)AsInteger
NTral AsInteger
Fer1(1 To 5, 1 To 3)AsInteger
Fer2(1 To 5, 1 To 3)AsInteger
Fer3(1 To 5, 1 To 3)AsInteger
PolisX(1 To 80, 1 To 4)AsInteger
PolisY(1 To 80, 1 To 4)AsInteger
PolMaxX(1 To 80)AsInteger
PolMaxY(1 To 80)AsInteger
PolisH(80)AsInteger
NPol AsInteger
ForiX(1 To 80, 1 To 4)AsInteger
ForiY(1 To 80, 1 To 4)AsInteger
ForMaxX(1 To 80)AsInteger
ForMaxY(1 To 80)AsInteger
NFor AsInteger
RisX(1 To 80, 1 To 4)AsInteger
RisY(1 To 80, 1 To 4)AsInteger
RisMaxX(1 To 80)AsInteger
RisMaxY(1 To 80)AsInteger
RisH(1 To 80)AsInteger
NRis AsInteger
PosFileOr AsInteger
Offsetx AsInteger
Offsety AsInteger
Separatore AsInteger
LargSep AsInteger
LungSep AsInteger
PosLas AsInteger
LatoLas AsInteger
NPic AsInteger
Testo AsString* 20
End Type
Public Sal As SalvaLas
VB.NET Tradotto da VB2005.net
Testo quotato
'UPGRADE_WARNING: La dimensione della stringa di lunghezza fissa deve essere contenuta nel buffer. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
<VBFixedString(80), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=80)> Public FileName As Char
'UPGRADE_WARNING: La dimensione della stringa di lunghezza fissa deve essere contenuta nel buffer. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
<VBFixedString(6), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=6)> Public SigLas As Char
<VBFixedArray(49)> Dim CoordLasX() As Short
<VBFixedArray(49)> Dim CoordLasY() As Short
Dim RuotaLas As Short
Dim LungLas As Short
Dim LargLas As Short
Dim NVert As Short
Dim NLas As Short
<VBFixedArray(4, 1)> Dim Tral(,) As Short
Dim NTral As Short 'Numero tralicci nella Lastra
<VBFixedArray(4, 2)> Dim Fer1(,) As Short
<VBFixedArray(4, 2)> Dim Fer2(,) As Short
<VBFixedArray(4, 2)> Dim Fer3(,) As Short
<VBFixedArray(79, 3)> Dim PolisX(,) As Short
<VBFixedArray(79, 3)> Dim PolisY(,) As Short
<VBFixedArray(79)> Dim PolMaxX() As Short
<VBFixedArray(79)> Dim PolMaxY() As Short
<VBFixedArray(79)> Dim PolisH() As Short
Dim NPol As Short
<VBFixedArray(79, 3)> Dim ForiX(,) As Short
<VBFixedArray(79, 3)> Dim ForiY(,) As Short
<VBFixedArray(79)> Dim ForMaxX() As Short
<VBFixedArray(79)> Dim ForMaxY() As Short
Dim NFor As Short
<VBFixedArray(79, 3)> Dim RisX(,) As Short
<VBFixedArray(79, 3)> Dim RisY(,) As Short
<VBFixedArray(79)> Dim RisMaxX() As Short
<VBFixedArray(79)> Dim RisMaxY() As Short
<VBFixedArray(79)> Dim RisH() As Short
Dim NRis As Short
Dim PosFileOr As Short
Dim Offsetx As Short
Dim Offsety As Short
Dim Separatore As Short
Dim LargSep As Short
Dim LungSep As Short
Dim PosLas As Short
Dim LatoLas As Short
Dim NPic As Short
'UPGRADE_WARNING: La dimensione della stringa di lunghezza fissa deve essere contenuta nel buffer. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
<VBFixedString(20), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=20)> Public Testo As Char
Ho fatto diversi Tentativi come sostituire short con integer o char con String ma senza soluzione.
Ho notato che la lunghezza di Sal misurata con una Len(Sal) è diversa tra le due versioni e probabilmente è il motivo della mancata lettura del file.
Ciao marcosta.
Ricorda di usare i tag [ code ] e [ quote ] altrimenti è veramente impossibile capire...
Non ci capisco granché di vb.net sicuramente @Carlo potrà aiutarti.
Ma personalmente è la prima volta che vedo <VBFixedArray(49)>
Sicuro che non sia quello il problema?
da quel che leggo, solitamente è un'attributo che va inserito in una struttura.
Ma altrettanto strano. Perché solitamente la dimensiona di un array va dichiarata direttamente senza
usare quell'attributo
esempio
Codice sorgente - presumibilmente C# / VB.NET
Dim array_fisso(10) As Integer
che sarebbe un array di 10 elementi.
C'è poco da fidarsi dei convertitori.
Poi come detto, Carlo ne sà più di me sul vb.net spero sappia aiutarti.
Grazie a tutti per l'interessamento
Ho trovato la soluzione, errore mio, scusate per il tempo perduto
nella riga <VBFixedArray(79)> Dim PolisH() As Short
ho scritto erroneamente (79) perché gli indici in vb.net partono sempre da 0 mentre in vb6 li avevo fatti partire da 1 definendoli (1 To 80).
Questa modifica della dimensione era corretta per gli altri dimensionamenti ma non per la definizione su citata che aveva come indice fisso (80).
Ho modificato scrivendo (80) al posto di (79) e tutto è andato a posto.
Dovrò acquistare un monitor più grande Sigh!