Probleme beim Lesen aus ini-Datei



  • Hallo,

    ich will aus einer ini-Datei Daten lesen und hab folgendes Problem: muss ungefähr 10.000 mal jeweils 2 Datensätze aus der ini-Datei lesen, aber ich bekomme immer eine Fehlermeldung, dass er die Daten aus Sektion 271 nicht findet. Wenn ich nun nicht 10.000 sondern 270 mal die 2 Datensätze lesen will, läuft das Programm einwandfrei.

    Funktion, die ich benutze:

    int getString ( char * myString, char * fileName, char * secName, char * keyName, char * functionName ) {

    char dummy [LAENGE_BUFFER]; // Buffer, der den auszulesenden String aufnimmt

    GetPrivateProfileString ( secName, keyName, "-1", dummy, sizeof ( dummy ), fileName );

    if ( atoi ( dummy ) < 0 ) { // wurde String gefunden?sonst mit -1 initialisiert
    printf ( "\nFEHLER in %s: %s \nwurde nicht in Sektion %s in ini-Datei %s gefunden\n", functionName, keyName, secName, fileName );
    exit ( 2 );
    }

    strcpy (myString, dummy);

    return ( 0 );

    }

    Frage: Hat jemand eine Ahnung, ob man nur eine gewisse Anzahl an Daten aus einer ini-Datei lesen kann, bzw. wo der Fehler liegen könnte und was man ändern sollte?

    Danke!
    Urs



  • würd mir die funktion:
    GetPrivateProfileString ( secName, keyName, "-1", dummy, sizeof ( dummy ), fileName );

    mal gnau anschauen, ob sie auch wirklich die datei wieder zumacht

    mfg



  • sorry, hab die tags vergessen...
    Also hier nochmal mit tags:

    Hallo,

    ich will aus einer ini-Datei Daten lesen und hab folgendes Problem: muss ungefähr 10.000 mal jeweils 2 Datensätze aus der ini-Datei lesen, aber ich bekomme immer eine Fehlermeldung, dass er die Daten aus Sektion 271 nicht findet. Wenn ich nun nicht 10.000 sondern 270 mal die 2 Datensätze lesen will, läuft das Programm einwandfrei.

    Funktion, die ich benutze:

    int getString ( char * myString, char * fileName, char * secName, char * keyName, char * functionName ) { 
    
    char dummy [LAENGE_BUFFER]; // Buffer, der den auszulesenden String aufnimmt 
    
    GetPrivateProfileString ( secName, keyName, "-1", dummy, sizeof ( dummy ), fileName ); 
    
    if ( atoi ( dummy ) < 0 ) { // wurde String gefunden?sonst mit -1 initialisiert 
    printf ( "\nFEHLER in %s: %s \nwurde nicht in Sektion %s in ini-Datei %s gefunden\n", functionName, keyName, secName, fileName ); 
    exit ( 2 ); 
    } 
    
    strcpy (myString, dummy); 
    
    return ( 0 ); 
    
    }
    

    Frage: Hat jemand eine Ahnung, ob man nur eine gewisse Anzahl an Daten aus einer ini-Datei lesen kann, bzw. wo der Fehler liegen könnte und was man ändern sollte?

    Danke!
    Urs



  • Hallo,
    ich glaub ich weiss jetzt, woran es liegt: Hab gelesen, dass eine ini-Datei höchstens 64 KB gross sein darf und meine ist ca. 250 KB gross 😞
    Werd dann wohl ne Textdatei nehmen und die Prozeduren, um aus dieser auszulesen, selber schreiben (die, um aus ner ini-Datei zu lesen hatte ich schon, deshalb auch die ini).
    Kann mir jemand einen Tipp geben, mit welchen Funktionen ich am besten Daten aus einer Textdatei lesen kann ( und wie ich sie vorher geeigneter Weise hineinschreiben sollte ). Muss immer wieder einen gewissen Datensatz auslesen: kann ich mit einer Funktion in gewisse Zeilen springen oder muss ich immer von Beginn an alle durchlaufen ( mit while oder so )?
    Danke!
    Urs



  • ich würde einfach fscanf() - verwenden

    Urs24 schrieb:

    kann ich mit einer Funktion in gewisse Zeilen springen oder muss ich immer von Beginn an alle durchlaufen ( mit while oder so )?

    bin mir nicht sicher, aber ich glaube es gibt so etwas wie fseek oder so - die Funktion erwartet einen Offset und ließt dann, ab einer bestimmten Stelle die Daten ein - weiß ich nicht ob man nicht einfach den Filepointer (den man durch fopen) bekommt nicht einfach "manipulieren" kann und damit etwas in der Datei überspringen kann - glaub eher nicht


Anmelden zum Antworten