Probleme mit getline() - *HELP* (Dringend)



  • Hallo,

    ich habe diesen Code:

    ShellExecute(NULL, "open", "cmd", "/c devcon.exe listclass USB > usb.data", NULL, SW_HIDE);
    ifstream eingabe("usb.data");
    while(eingabe.good()){
    	eingabe.getline(spacer, 255, '\\');
    	eingabe.getline(data1, 255, '&');
    	eingabe.getline(data2, 255, '\\');
    	eingabe.getline(spacer, 255, ':');
    	eingabe.getline(spacer, 255, ' ');
    	eingabe.getline(name, 255);
    	vid.Format("%c%c%c%c", data1[4], data1[5], data1[6], data1[7]);
    	pid.Format("%c%c%c%c", data2[4], data2[5], data2[6], data2[7]);
    	devname.Format("%s", name);
    	MessageBox("VendorID: " + vid + " - ProductID: " + pid + " - Hardware: " + devname);
    }
    

    Ich habe diese Probleme:
    1. Die Datei usb.data wird erstellt.
    Wenn ich sie anschliesend auslese, wird die while-Schleife nur 1x durchlaufen und nichts gelesen. Die Datei ist scheinbar leer...
    2. Wenn ich das Programm starte, und die Zeile ShellExecute(..) auskommentiere, wird alles richtig gelesen.
    Scheinbar wird die Datei bereits geöffnet, wenn noch gar keine Daten reingeschrieben wurden.

    Wie vermeide ich das?
    Prüfen, ob die Datei existiert, macht ja wohl keinen Sinn, da sie ja existiert, nur scheinbar leer ist.

    Bin für jeden Vorschlag dankbar...

    mfg
    trequ



  • *push*



  • such bitte mal nach i(f)stream und getline im C++ Forum,
    dann müsstest du etwas finden, was dir weiterhilft.
    Die Bedingung in der where Schleife ist imho nicht richtig.

    In der C++ FAQ steht auch ein guter Artikel über Streams in C++,
    evtl. hilft der auch weiter.

    Devil



  • Hallo,

    danke für die Info, aber irgendwie finde ich da nix was funktioniert.

    Das Problem ist scheinbar, dass die Datei bereits existiert, aber noch leer ist, weil die devcon.exe noch rein schreibt.

    Kann man nicht irgendwie warten, bis die devcon.exe fertig ist?

    So langsam brennt es bei mir wirklich an...

    mfg
    trequ


Anmelden zum Antworten