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
C# / VB.NET - problema a convertire una type vb6 in una struttura vb.net
Forum - C# / VB.NET - problema a convertire una type vb6 in una struttura vb.net

Avatar
marcosta (Normal User)
Newbie


Messaggi: 2
Iscritto: 24/04/2015

Segnala al moderatore
Postato alle 17:29
Giovedì, 25/05/2023
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

  1. Type SalvaLas
  2.     FileName As String * 80
  3.     SigLas As String * 6
  4.     CoordLasX(1 To 50) As Integer
  5.     CoordLasY(1 To 50) As Integer
  6.     RuotaLas As Integer
  7.     LungLas As Integer
  8.     LargLas As Integer
  9.     NVert As Integer
  10.     NLas  As Integer
  11.     Tral(1 To 5, 1 To 2) As Integer
  12.     NTral As Integer
  13.     Fer1(1 To 5, 1 To 3) As Integer
  14.     Fer2(1 To 5, 1 To 3) As Integer
  15.     Fer3(1 To 5, 1 To 3) As Integer
  16.     PolisX(1 To 80, 1 To 4) As Integer
  17.     PolisY(1 To 80, 1 To 4) As Integer
  18.     PolMaxX(1 To 80) As Integer
  19.     PolMaxY(1 To 80) As Integer
  20.     PolisH(80) As Integer
  21.     NPol As Integer
  22.     ForiX(1 To 80, 1 To 4) As Integer
  23.     ForiY(1 To 80, 1 To 4) As Integer
  24.     ForMaxX(1 To 80) As Integer
  25.     ForMaxY(1 To 80) As Integer
  26.     NFor As Integer
  27.     RisX(1 To 80, 1 To 4) As Integer
  28.     RisY(1 To 80, 1 To 4) As Integer
  29.     RisMaxX(1 To 80) As Integer
  30.     RisMaxY(1 To 80) As Integer
  31.     RisH(1 To 80) As Integer
  32.     NRis As Integer
  33.     PosFileOr As Integer
  34.     Offsetx As Integer
  35.     Offsety As Integer
  36.     Separatore As Integer
  37.     LargSep As Integer
  38.     LungSep As Integer
  39.     PosLas As Integer
  40.     LatoLas As Integer
  41.     NPic As Integer
  42.     Testo As String * 20
  43. End Type
  44.  
  45. 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

        'UPGRADE_TODO: "Initialize" deve essere chiamato per inizializzare istanze di questa struttura. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
        Public Sub Initialize()
            'UPGRADE_WARNING: Il limite inferiore della matrice CoordLasX è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim CoordLasX(49)
            'UPGRADE_WARNING: Il limite inferiore della matrice CoordLasY è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim CoordLasY(49)
            'UPGRADE_WARNING: Il limite inferiore della matrice Tral è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim Tral(4, 1)
            'UPGRADE_WARNING: Il limite inferiore della matrice Fer1 è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim Fer1(4, 2)
            'UPGRADE_WARNING: Il limite inferiore della matrice Fer2 è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim Fer2(4, 2)
            'UPGRADE_WARNING: Il limite inferiore della matrice Fer3 è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim Fer3(4, 2)
            'UPGRADE_WARNING: Il limite inferiore della matrice PolisX è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim PolisX(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice PolisY è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim PolisY(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice PolMaxX è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim PolMaxX(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice PolMaxY è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim PolMaxY(79)
            ReDim PolisH(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice ForiX è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim ForiX(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice ForiY è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim ForiY(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice ForMaxX è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim ForMaxX(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice ForMaxY è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim ForMaxY(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice RisX è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim RisX(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice RisY è stato cambiato da 1,1 a 0,0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim RisY(79, 3)
            'UPGRADE_WARNING: Il limite inferiore della matrice RisMaxX è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim RisMaxX(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice RisMaxY è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim RisMaxY(79)
            'UPGRADE_WARNING: Il limite inferiore della matrice RisH è stato cambiato da 1 a 0. Fare clic per ulteriori informazioni: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword= ..."'
            ReDim RisH(79)
        End Sub
    End Structure


    Public Sal As SalvaLas




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.

il file lo apro con:

Codice sorgente - presumibilmente Plain Text

  1. ffCP = FreeFile()
  2. FileOpen(ffCP, NomeFile(1) + ".dat", OpenMode.Random,,, Len(Sal))
  3. FileGet(ffCP, Sal,)



Naturalmente ho cercato su internet ma non ho trovato nulla di significativo.
Grazie

Ultima modifica effettuata da Thejuster il 25/05/2023 alle 19:42
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 19:51
Giovedì, 25/05/2023
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

  1. 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.




https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:14
Giovedì, 25/05/2023
Prova a modificare così la struttura

Codice sorgente - presumibilmente VB.NET

  1. <VBFixedString(80)> Dim Filename As String
  2. <VBFixedString(6)> Dim SigLas As String
  3. <VBFixedArray(49)> Dim CoordLasX() As Short
  4. <VBFixedArray(49)> Dim CoordLasY() As Short
  5. Dim RuotaLas As Short
  6. Dim LungLas As Short
  7. Dim LargLas As Short
  8. Dim NVert As Short
  9. Dim NLas As Short
  10. <VBFixedArray(4, 1)> Dim Tral(,) As Short
  11. Dim NTral As Short 'Numero tralicci nella Lastra
  12. <VBFixedArray(4, 2)> Dim Fer1(,) As Short
  13. <VBFixedArray(4, 2)> Dim Fer2(,) As Short
  14. <VBFixedArray(4, 2)> Dim Fer3(,) As Short
  15. <VBFixedArray(79, 3)> Dim PolisX(,) As Short
  16. <VBFixedArray(79, 3)> Dim PolisY(,) As Short
  17. <VBFixedArray(79)> Dim PolMaxX() As Short
  18. <VBFixedArray(79)> Dim PolMaxY() As Short
  19. <VBFixedArray(79)> Dim PolisH() As Short
  20. Dim NPol As Short
  21. <VBFixedArray(79, 3)> Dim ForiX(,) As Short
  22. <VBFixedArray(79, 3)> Dim ForiY(,) As Short
  23. <VBFixedArray(79)> Dim ForMaxX() As Short
  24. <VBFixedArray(79)> Dim ForMaxY() As Short
  25. Dim NFor As Short
  26. <VBFixedArray(79, 3)> Dim RisX(,) As Short
  27. <VBFixedArray(79, 3)> Dim RisY(,) As Short
  28. <VBFixedArray(79)> Dim RisMaxX() As Short
  29. <VBFixedArray(79)> Dim RisMaxY() As Short
  30. <VBFixedArray(79)> Dim RisH() As Short
  31. Dim NRis As Short
  32. Dim PosFileOr As Short
  33. Dim Offsetx As Short
  34. Dim Offsety As Short
  35. Dim Separatore As Short
  36. Dim LargSep As Short
  37. Dim LungSep As Short
  38. Dim PosLas As Short
  39. Dim LatoLas As Short
  40. Dim NPic As Short
  41. <VBFixedString(20)> Dim Testo As String



Ultima modifica effettuata da nessuno il 25/05/2023 alle 21:16


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
marcosta (Normal User)
Newbie


Messaggi: 2
Iscritto: 24/04/2015

Segnala al moderatore
Postato alle 2:12
Venerdì, 26/05/2023
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!

PM Quote