Schleifen Problem



  • Hallo Forenmitglieder,

    ich habe ein Problem undzwar habe ich eine Schleife erstellt:

    while(!fin.eof())
    {
      fin.get(d);
     fout.put(d);
    }
    

    Ganz einfache Schleife um Dateien auszulesen und in Dateien hereinzuschreiben.
    Allerdings gibt es da ein kleines Problem.
    Undzwar wenn ich dies mit Dateien mache die um die 30megabyte sind oder mehr dann steht irgendwann da an der Leiste "Keine Rückmeldung", jedoch arbeitet er weiter
    da sich die Größe zu hereinschreibendes Prgrammes immer Größer wird, aber sowas hat kein User gern.
    Ich habe schon sehr viel dazu gegoogelt, sogar mit sehr vielen Ergebnissen, allerdings braucht man für diese Lösungen immer diese afx include Reihe,
    die ich nicht besitze.
    Aber es muss doch bestimmt noch andere Lösungen geben oder?



  • Natürlich reagiert das Fenster nicht mehr, wenn dein Programm anderweitig beschäftigt ist. Du musst die Arbeit in viele kleine Schritte zerlegen und das Fenster zwischendurch aktualisieren.

    Da du anscheinend eine Datei kopieren willst, rate ich dir aber von reinem C++ ab und zu betriebssystemsspezifischen Lösungen.



  • Tu die Kopiererei in einen Thread.



  • Habs mit PeekMessgage gelöst.


  • Mod

    Ganz doofe Schleife! Besser:

    while( fin.get(d) ) 
        fout.put(d);
    

    Ganz einfache Schleife um Dateien auszulesen und in Dateien hereinzuschreiben.

    Das geht zwar direkter (per std::copy und istreambuf_iterator ), aber gut, da sollte man womöglich dem OS etwas überlassen.

    Edit: Du hast es schon anders gelöst. Merke dir die Weiterlaufbedingung trotzdem.



  • ProGrAmIrEn schrieb:

    ich habe ein Problem undzwar habe ich eine Schleife erstellt:

    while(!fin.eof())
    {
      fin.get(d);
     fout.put(d);
    }
    

    Ganz einfache Schleife um Dateien auszulesen und in Dateien hereinzuschreiben.
    Allerdings gibt es da ein kleines Problem.

    Richtig. Du ließt schonmal falsch.

    ProGrAmIrEn schrieb:

    Undzwar wenn ich dies mit Dateien mache die um die 30megabyte sind oder mehr dann steht irgendwann da an der Leiste "Keine Rückmeldung", jedoch arbeitet er weiter

    Hmm, ich hab schon 200MB+ große Dateien verarbeitet und hatte keinerlei Probleme.

    Marthog schrieb:

    Da du anscheinend eine Datei kopieren willst, rate ich dir aber von reinem C++ ab und zu betriebssystemsspezifischen Lösungen.

    Wieso denn dass?

    Datei kopieren:

    fout << fin.rdbuf();
    

Anmelden zum Antworten