Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    struct con c#

    Ciao ragazzi.
    Sto provando a convertire un programma fatto in c++, in c#.
    Ho un problema riguardo le strutture.
    Ho un file.acp e sono riuscito a far leggere i dati del file costruendo un array
    in cui ho tutti i byte.
    a questo punto ho creato diverse strutture per poter associare i vari byte a delle variabili.
    Il mio problema è che non riesco a passare l' array alla struttura, qualcuno mi sa dire cone si fa in C#?


    Grazie

  2. #2
    Non sono sicuro di aver ben compreso il tuo problema, ma in C# le strutture funzionano esattamente come in C++ (almeno in base alla mia preparazione attuale, ma potrei anche sbagliare). Potresti riportare il problema in codice?

  3. #3
    questa è la mia struttura:

    public struct ip_address
    {
    public char byte1;
    public char byte2;
    public char byte3;
    public char byte4;
    }

    Ora ho preso un file .acp e l'ho sviluppato creando un array "ReadArray"
    public void Carica_File( string FileName )
    {


    StreamReader SReader = new StreamReader( FileName );
    Stream RStream;
    byte [] ReadArray;
    byte [] HeaderData = new byte[24];
    RStream = SReader.BaseStream;
    ReadArray = new byte[(int) RStream.Length - 24 ];
    RStream.Read( HeaderData , 0 , 24 );
    RStream.Read( ReadArray , 0 , (int) RStream.Length - 24 );


    a questo punto vorrei sapere come faccio a far scorrere il mio array, passandolo alla struttura.

    in c++ facevo cosi':
    ip_address *ip;

    ip=(address *) (ReadArray );

    ma con c# non funziona.

    Se mi sai dare una soluzione.
    grazie

  4. #4
    Ah, ho capito.

    Si, questo succede perchè in C# i puntatori non _potrebbero_ e non _dovrebbero_ essere usati, in quanto dato che tutta la gestione relativa alla memoria è affidata al garbage collector.

    Puoi però utilizzare i puntatori solo in codice definito "unsafe", per esempio:

    codice:
    class ProvoAFareLeStesseCoseDiC++
    {
        unsafe int *puntatore;
        //devi quindi usare la parola chiave "unsafe" per utilizzare i puntatori
    }
    Su questo però posso solo farti questo esempio, dato che anche io il C# lo sto usando e studiando da poco.

  5. #5
    Si ci ho provato solo mi dice di attivare la modalita \unsafe.
    Solo che quando vado nella barra di controllo in visualizza non mi fa selezionare "proprietà di pagina" dove dovrei teoricamente attivare la modalità unsafe.
    Sapresti dirmi come devo fare per attivarla?

    grazie

  6. #6
    Dovrebbe essere:

    da monodevelop per .net 2.0
    gmcs /unsafe programma.cs

    da monodevelop per .net1.1
    mcs /unsafe programma.cs

    dal compilatore microsoft a linea di comando:
    csc /unsafe programma.cs

    Su visual studio dovrebbe essere invece:
    Menu -> Project -> NomeProgetto Properties
    -> Build -> spuntare : Allow unsafe code

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.