.dat erstellen aber wie



  • Hallo mal wieder
    Hab da mal ne frage zu den ".dat" dateien.
    Ich möchte mit einem kleinen prog ne "xxx.dat" erstellen in der dann daten für ein anderes prog sind die dort halt dann ausgelesen werden sollen und mit denen dann gerechnet werden soll.
    Ich bin jetzt auf die lösung gekommen wollte aber mal fragen ob das so geht und wenn nich wie dann oder wie besser.

    char Datei [300]= "c:\\xxx.dat";

    So und nun noch das prob wie schreibe ich dann in die datei?

    Danke schon mal

    MfG Nico



  • schon mal was von fstream gehört? findeste sicher in der faq. falls du meinst, dass eine dateiendung (z.b. *.dat) zwangsläufig was mit dem inhalt/aufbau zutun hat, dann bist du auf dem holzweg. natürlich isses blödsinn in einer text.bmp einfache textdaten zu speichern statt bitmapdaten.
    was suchst du also:
    schreiben in dateien oder den aufbau von .dat dateien?



  • Beides 😃
    ne mal im ernst ich schreibe gerade nen kleines prog was mir für mein hauptprog ne datei erstellen soll in dem die ganzen daten die ich im hauptprog brauche drin sind. Ich habe in dem hauptprog ne dropdownlist. Die daten für die dropdownlist sollen nun in einer datei stehen und wenn das prog startet sollen die daten eingelesen werden für das dropdown und wenn ich dann eine auswahl gemacht habe sollen die jeweiligen daten der auswahl eingelesen werden (sind daten mit denen dann gerechnet werden soll) um im prog arbeiten zu konnen.
    Ich möchte das auf die art machen da ich so immer updates anbieten kann ohne das sich die leute dann das ganze prog neu downloaden und installieren müßen. Ich habe zwar dann auch noch das prob das ich noch nich genau weis wei ich die auswahl einlese doch kann ich das ja auch nich testen bis ich nich ne datei habe in der das alles steht.
    Ich hoffe ihr habt das jetzt so halbwegs verstanden.



  • ok wie ich die datei erstelle und wie ich den aufbau mache weis ich jetzt (hoffe es auf jeden fall) doch wie kann ich bestimmte zeilen auslesen und die dann in der dropdownlist anzeigen?
    Beispiel der datei:

    [AUTO-72]
    Wert1: 2867
    Wert2: 4356
    Wert3: 7883

    [AUTO345]
    Wert1: 654
    Wert2: 3187
    Wert3: 24

    Wenn der aufbau der datei nun so ist wie kann ich nur das was in den klammern steht in meiner Dropdownlist anzeigen und wenn ich dann aus der dropdownlist z.b [AUTO-72] ausgewählt habe sollen die dazugehörigen werte eingelesen wertden damit ich mit diesen etwas berechnen kann.
    Kann mir vieleicht jetzt einer helfen?



  • Hallo !

    Dein Beispiel ähnelt doch ziemlich stark einer *.ini - Datei...

    Du könntest die ": " durch "=" ersetzen und dann mit

    DWORD GetPrivateProfileString(
      LPCTSTR lpAppName,        // points to section name
      LPCTSTR lpKeyName,        // points to key name
      LPCTSTR lpDefault,        // points to default string
      LPTSTR lpReturnedString,  // points to destination buffer
      DWORD nSize,              // size of destination buffer
      LPCTSTR lpFileName        // points to initialization filename
    );
    

    Werte aus- und mit

    BOOL WritePrivateProfileString(
      LPCTSTR lpAppName,  // pointer to section name
      LPCTSTR lpKeyName,  // pointer to key name
      LPCTSTR lpString,   // pointer to string to add
      LPCTSTR lpFileName  // pointer to initialization filename
    );
    

    Werte einlesen. Wahrscheinlich muss man noch nicht mal die Endung .dat in .ini ändern. Geht bestimmt auch so...

    Zu deiner Dropdown-Liste:
    ich glaube, es gab auch irgendeine Funktion, die alle Sektionen zurück liefert, fällt mir aber gerade nicht ein. Ansonsten selber schreiben: Datei zeilenweise auslesen und nach "[" im ersten Zeichen suchen.

    Tschüss



  • ok ich habe das jetzt mal so gemacht:

    die data.ini sieht jetz so aus

    [AIRCRAFT1]
    Name=ATR-72
    Wert1=2654
    Wert2=835
    Wert3=7642
    [AIRCRAFT2]
    Name=B-747
    Wert1=763
    Wert2=58
    Wert3=643

    usw.

    und ich versuche mir den namen so zu holen:

    int a;

    {
    for (a = 0; a < 2000; a++)
    wsprintf (SrcDatei,"d:\\data.INI",ctemp);
    wsprintf (Section1,"AIRCRAFT1%d",a);

    GetPrivateProfileString (Section1,"Name" ,"0",(LPSTR) Name,200,SrcDatei);
    }

    Gejht das so und wenn ja wie kann ich dann die namen in die dropdownlist bringen das sie dort angezeigt und ausgewählt werden können?



  • also habe das jetzt so weit hin bekonne wie es unten steht doch habe ich noch das prob das in meinem dropdownlist nich die namen stehen sondern nur ne "0" nur warum das?

    {
    char SrcDatei [300];
    char ctemp [300];
    char Section1 [200];
    char Name [200];

    int a;

    {
    for (a = 0; a < 20; a++)

    wsprintf (SrcDatei,"d:\\data.INI",ctemp);
    SetCursor (LoadCursor (NULL,IDC_WAIT));
    wsprintf (Section1,"AIRCRAFT%d",a);

    GetPrivateProfileString (Section1,"Name" ,"0",(LPSTR)Name,200,SrcDatei);
    CComboBox *c = (CComboBox 😉 GetDlgItem (IDC_AIRCRAFT);
    c->ResetContent();
    c->AddString (Name);
    }
    }



  • Wenn dein Code wirklich so aussieht (und es nicht nur ein Kopierfehler ist), hast du die erste Klammer der for-Schleife falsch gesetzt:

    {
    for (a = 0; a < 20; a++)
    

    besser:

    for (a = 0; a < 20; a++)
    {
    

    Ausserdem hast du die Zeile

    c->ResetContent();
    

    innerhalb der Schleife. Die Liste der ComboBox wird also bei jedem Schleifendurchlauf gelöscht.



  • ich danke dir für den tip und das hatte ich auch mitbekommen und habe es auch schon geändert und nun stehen meine Name auch in der liste habe jetzt nur noch das prob das die schleife mir wenn keine namen mehr da sind lauter nullen gibt und die halt mit in die liste geschrienben werden.



  • if(name==""||name=" ")
    {}
    else
    hier dein code rein zum einfügen der Item ins Combo Box

    Also dat ding macht folgendes. Bevor du was ins Combo einträgst überprüft es ob in name überhaupt text drinne steht wenn da nur nix oder nur nen " " drinne ist, passiert nix und schleife geht weiter wenn da aber wat drinne steht dann wirds eingetragen. simpel oder?


Anmelden zum Antworten