• 23.08.2025, 18:28
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

palme_kex

God

Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 17:31

So folgendes Problematic,
Ich benötige ne anleitung wie aus einer binär Datei sachen auslese und diese dann in ein Array (von ner structur) schreiben kann

Quellcode

1
2
3
4
5
6
7
8
9
10
int x=0;
    char datname[size] = "c://test.bin";
    struct details main[1000];

    FILE *datei;
    datei=fopen(datname,"r+b");

    ???...???

    fclose(datei);

Das Problem ist eben wie bekomme ich genau die Daten aus meiner Struktur in meine Strukur und nicht irgend welche anderen...
Könnt ihr mir da helfen ?

NikoMo

NikoMod

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 17:42

*zauber*

und schwupps isses im richtigen forum
von all den dingen die mir sind verloren gegangen,
habe ich am meisten an meinem Verstand gehangen

Y0Gi

God

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 17:44

...wodurch ich dann etwas mehr rumklicken musste. danke ;P


du willst das in C machen, richtig? und wenn ja: wieso in gottes namen? für sowas gibt es höhere sprachen, die um ein vielfaches weniger fehleranfällig sind, weniger code erfordern und eleganteres programmieren zulassen.

hurra

God

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 17:48

Hi

Sollte es nicht "c:\\dateiname" heißen?

vielleicht geht das ganze ja mit fread ...

Cu Hurra

palme_kex

God

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 18:35

Ja C muss es sein war vorgegeben wenn ich das für meine eigenen gebrauchmahcen sollte würd ich das gar nit machen da fürd ich mit ner SQL datenabnk arbeiten aber ich msus das leider in C machen

edit:
Wo finde ich den erklärung zu der Funktion fread ???

Y0Gi

God

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 19:02

wenn du deinen code auch so schreibst wie deine beiträge: viel spaß beim fehler suchen ;P

palme_kex

God

Re: Hilfe bei Datenbank marke eigenbau

Mittwoch, 5. Januar 2005, 22:03

Joa ich weis das dauert ab und zu auch recht lange bis ich alle fehler gefunden hab aber mir fehlt am anfang immer die gedult auf solche lapalien wert zu legen dann muss man eben mit den Konsequenzen rechnen....

palme_kex

God

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 14:40

So hab das nun raus gefunden...

Quellcode

1
2
3
4
5
6
7
8
9
10
void load_data()
{
    FILE *datei;
    struct details main[1000];
    int x=0;
    char datname[size] = "F:\Datenbank\default.kex";
    datei=fopen(datname,"r+b");
    fread(main, sizeof(struct details), XXX, datei)
    fclose(datei);
}

Das Üroblem was ich nun habe wie finde ich herraus wieviele Datensätzte in der bin Datei stehen ??

Y0Gi

God

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 18:10

das ist nicht mein spezialgebiet, aber vielleicht dateilänge / datensatzgröße?

r1ppch3n

Moderator

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 18:19

oder man definiert einfach zusätzlich zu den daten noch einen dateiheader den man zuerst ausliest und der solche infos enthält...

alternativ kannst auch einfach ne relationale datenbank aufbaun, mit sqlite und co geht das schneller und einfacher als ne eigene lösung, einfach einbinden, datei angeben in der das ganze gespeichert ist/werden soll und mit sql befehlen totschmeissen ;)

hurra

God

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 18:25

Oder halt Satz für Satz auslesen und dann beim EOF stoppen.

r1ppch3n

Moderator

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 18:36

würd funktionieren is aber eindeutig nicht die eleganteste methode

ich persönlich mag feste vordefinierte strukturen lieber als einfach nur weiterzulesen bis nix mehr da is...
kann später auch das debugging erleichtern ;)

palme_kex

God

Re: Hilfe bei Datenbank marke eigenbau

Donnerstag, 6. Januar 2005, 22:14

Hab ne Lösung gefunden...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void load_data(struct details *main, int *x)
{
    int a=0;
    char datname[size]="F:\\Datenbank\\default.kex";
    FILE *datei;
    datei=fopen(datname,"r+b");
    if (!datei)
    {
        cout << "fehler beim öffnen der datei";         
    }
    else 
    {
        a=fread(main, sizeof(struct details), maXsize, datei);
    }    
    fclose(datei);
    *x=a;   
};
void save_data(struct details *main, int* x)
{
    char datname[size]="F:\\Datenbank\\default.kex";
    FILE *datei;
    datei=fopen(datname,"w+b");
    fwrite(main, sizeof(struct details), *x, datei);
    fclose(datei);
};

eben meine funktionen zum ein und auslesen einer bin Datei in ein Array von struct details...