c Strukturen in c#



  • Sitze hier an einem bestimmt lächerlichen Problem (bitte nicht auslachen) und komm nicht weiter.

    Wie schaffe ich es, c Strukturen (sind in einem .dat file gespeichert) mit c# auszulesen?

    Bin für jeden Gedankenanstoss dankbar.

    Grüße aus dem verschneiten Allgäu.



  • wie hast du die gespeichert ?

    Das muss man schon vorher wissen. 🙂



  • Habe den Ausschnitt des c-Codes kurz angehängt. Hier sollen nun die Werte der Variablen der c Struktur ausgelesen und Variablen in c# zugewiesen werden.

    #include <stdio.h>

    struct TMaschineAllgemein
    {
    int Maschinennummer;
    char Maschinenname[30];
    int Version;
    int keineAnhnung;
    } prototyp;

    int main()
    {
    FILE *datei_ptr;
    char *name = "mannitest.dat";

    datei_ptr = fopen(name, "w");

    if(datei_ptr == NULL)
    {
    printf("Fehler beim Öffnen der Datei %s\n", name);
    printf("(Datei ggf. noch nicht vorhanden)\n");
    return(-1);
    }

    else
    {
    prototyp.Maschinennummer = 8;
    prototyp.Maschinenname[0] = 'x';
    prototyp.Maschinenname[1] = 'y';
    prototyp.Maschinenname[2] = 'z';
    prototyp.Maschinenname[3] = 'a';

    prototyp.Version = 2;
    prototyp.keineAnhnung = 16;

    fprintf(datei_ptr,"%d", prototyp.Maschinennummer);
    fprintf(datei_ptr, "%s", prototyp.Maschinenname);
    fprintf(datei_ptr,"%d", prototyp.Version);
    fprintf(datei_ptr,"%d", prototyp.keineAnhnung);

    fclose(datei_ptr);
    return(0);
    }
    }



  • Hallo.
    Als erstes würde ich auch mal so eine Struktur in C# anlegen.

    public struct TMaschineAllgemein 
    {
        int Maschinennummer; 
        byte Maschinenname[30]; 
        int Version; 
        int keineAnhnung; 
    }
    

    Um die Daten dann zu lesen, öffnest du einen Stream :

    using System.IO;
    ...
    TMaschineAllgemein MeineMasch = new TMaschineAllgemein();
    FileStream oStream = new FileStream(DateiName, FileMode.Open);
    BinaryReader oReader = new BinaryReader(oStream);
    // ... Daten auslesen
    oReader.Close();
    

    mfg BlueShift


Anmelden zum Antworten