Nach bestimmtem Inhalten in einer INI Datei suchen...



  • Ich möchte in eine *.ini Datei die MAC Adresse als Haupttitel speichern:

    [00-FF-CC-CF-92-8E]
    host=pc5
    
    [43-4F-CC-C2-92-10]
    host=pc200
    

    ...das mache ich mit:

    WritePrivateProfileString(mac.c_str(), "host", host.c_str(), CFILE.c_str());
    

    Jetzt möchte ich gern bestimmte MAC Adressen suchen/vergleichen nur wie macht man das am besten, mit GetPrivateProfileString() würde das nicht gehn, da der erste Parameter der Titel ist denn ich ja suche.

    Bitte um Tipps.



  • Mir ist nicht so ganz klar, was du machen möchtest, aber evtl. kannst du mit GetPrivateProfileSectionNames etwas anfangen...



  • Hab es mit der Funktion GetPrivateProfileSectionNames() geschafft die Section auszulesen.

    Wie kann ich in einer Schleife auf alle Sections zugreifen, damit man ein string mit dem Inhalt der Section vergleichen kann.



  • Glaub für dein Vorhaben sind ini-Dateien nicht das Richtige...



  • Also ich erklär mal kurz was ich vorhabe: Ich habe ein Client und Server, der Client muss sich beim Server registrieren, dabei versendet der Client seine MAC Adresse, diese wird beim Server in eine INI Datei gespeichert. Später möchte ich dies erweitern mit einer Passwortabfrage...
    In der Section [] steht die MAC Adresse:

    [00-FF-CC-CF-92-8E]
    host=pc5
    
    [43-4F-CC-C2-92-10]
    host=pc200
    
    [52-E4-56-1B-8E-83]
    host=hans
    

    Jetzt möchte ich die empfangene MAC Adresse mit denn Adressen aus der INI Datei vergleichen:

    GetPrivateProfileSectionNames(tmp, destSize, CFILE.c_str());
    	char* Key = tmp;
    	while( *Key )
    	{			
    		if(mac == Key)//vergleiche MAC
    		{
    			cout << "Client bereits registriert" << endl;
    			return 1;
    		}
    		else
    		{
    			cout << "Client wird registriert..." << endl;
    			WritePrivateProfileString(mac.c_str(), "host", host.c_str(), CFILE.c_str());
    			return 1;
    		}
    
    	Key += strlen( Key ) + 1;
    	}
    

    Das Problem hier ist, wenn ich nach der MAC 52-E4-56-1B-8E-83 suche, also die letzte Adresse, dann fragt er in der while schleife alle if Abfragen ab und dabei wird der Client registriert obwohl er schon existiert.
    Am besten wärs wenn erst gesucht und dann gehandelt wird.

    Bitte um Tipps



  • Warum versuchst du nicht einfach die Section auszulesen und wenn es sie gibt ist es ok, und wenn es fehl schlägt, legst du sie einfach neu an...


Anmelden zum Antworten