Release fehler....



  • Hallo...

    voller verzweifelung wende ich mich mal wieder an euch.

    Also, ich habe ein .NET Programm, welches eine CLI dll aufruft.

    Problem:
    Auf dem entwicklungsrechner (WinXp) läuft alles gut, sowie im Debug als auch im Release.

    Nun installiere ich es auf einen Zielrechner (WinXP). Mein programm speichert dateien mittels fstream. Doch bei einer release compilation, werden die Dateien falsch gespeichert.

    Auf einem Zielrechner mit Windows Vista, werden die Dateien ÜBERHAUPT nicht gespeichert. Alle dateien sind 0Byte groß. Eine fehlermeldung kommt nicht immer, aber wenn eine kommt, ist es eine "SehExeption". Also eine Exception die das Framework nicht kennt.

    Release Fehler kann man auch schlect finden, weil man es nicht debuggen kann.

    WOher kann das kommen, das programm im Release nicht so laufen wie im DEBUG?

    Gruß Stu



  • Nicht initialisierte Variabeln.



  • nicht initialisierte Variablen werd, danach werd ich nochmal suchen.

    Das ist echt komisch, unter Vista wird die datei nicht gespeichert. Es werden imm 0 Byte geschrieben.

    Wie ist das eigentlich mit speicher überschreitungen im nativen code?
    Bekomme ich da mit nem Release comilat noch ne Exception?

    fstream ist ja schon recht alt. Wäre es möglich, das wenn man mit fstream.write einen block schreibt, der kleiner ist, als die dazu angegebene größe, das er ohne eine fehlermeldung einfach weiter macht?



  • Wie ist das eigentlich mit speicher überschreitungen im nativen code?
    Bekomme ich da mit nem Release comilat noch ne Exception?

    Nein, es resultiert ein undefiniertes Verhalten. Kann sein, dass ne Access Violation ausgelöst wird, kann aber auch allerlei anderes passieren.

    fstream ist ja schon recht alt. Wäre es möglich, das wenn man mit fstream.write einen block schreibt, der kleiner ist, als die dazu angegebene größe, das er ohne eine fehlermeldung einfach weiter macht?

    Falls Du so meinst wie mein kleines Codeschnippsel:

    std::fstream fs;
    // .. open ..
    char buf[20];
    // .. fill buf ..
    fs.write(buf, 40);
    // .. close ..
    

    Das beudeuted undefiniertes Verhalten... siehe oben...

    Warum benutzt Du nicht die File IO Library von .NET (wenn du schon im C++/CLI Forum postest)??

    Gruss Simon



  • ich hatte dieses File handling sache ursprünglich in C++ geschrieben, und dann einfach zu meinen CLI sachen hinzugefügt. (schlechte planung, wie das halt so ist)

    Das Format, welche ich schreibe, kann "Container" verwalten. Also mehrere Container pro datei. Und aus irgenteinem grund kann man mit den .NET sachen nicht in irgenteine stelle in der Datei springen. Bei IO stream geht das wunderbar.

    Mittlerweile hab ich den fehler gefeunden:

    Unter Vista hat das "eof" flag vom fstream nicht funktioniert, bzw anderst funktioniert als unter XP.



  • Und aus irgenteinem grund kann man mit den .NET sachen nicht in irgenteine stelle in der Datei springen.

    FileStream.Seek(...)
    http://msdn2.microsoft.com/en-us/library/system.io.filestream.aspx


Anmelden zum Antworten