LoadFromFile Programmabsturz



  • Hallo Smitty,

    geht leider nicht, da beim Compilieren "unzulässiger typ" erscheint.
    Wird wohl vom typ "void" sein.

    Vielleicht gibt es noch andere Vorschläge?



  • stimmt, ist ein void 😞

    ist das JPEG denn kaputt, oder ist es ein Codefehler?
    einfach mal mit Paint o. ä. öffnen.

    grüssle 🙂



  • mr_crabs schrieb:

    Danke für die schnelle Antwort.

    Hab gedacht mit try und catch könnte man das Problem abfangen.

    Wenn jemand noch Tipps hat dann bitte 🙂

    In der IDE wird die Exception IMMER gefangen und das try/catch funktioniert scheinbar nicht. Außerhalb der IDE greift das try/catch...

    mfg
    xXx



  • Hallo

    -=]xXx[=- schrieb:

    In der IDE wird die Exception IMMER gefangen und das try/catch funktioniert scheinbar nicht. Außerhalb der IDE greift das try/catch...

    Selbst verständlich funktioniert das try-catch auch in der IDE. Nur das die IDE im Debug-Modus eben jede Exception abfängt, das ist so gewollt und kein Fehlverhalten. Wenn man die Meldung der IDE wegklickt, läuft das Programm nach Plan weiter.

    Zum Thema : try-catch ist die korrekte Lösung.

    bis bald
    akari



  • @Smitty:

    Das Jpeg-File ist definitiv beschädigt, ich kann es mit keinem Programm öffnen

    @akari:

    Try and Catch habe ich wie oben versucht anzuwenden,
    jedoch erhalte ich eine Fehlermeldung
    bezüglich einer Zugriffsverletzung, wenn ich die Exe direkt starte.

    Im Debugmodus erhalte ich zuerst die Fehlermeldung
    'Jpeg-Fehler #52', wenn ich diese dann weg klicke
    erhalte ich anschließend eine Fehlermeldung
    bezüglich einer Zugriffsverletzung auf Adresse....

    Und die Fehlermeldung kommen dann haufenweise hintereinander,
    ich kann dann nur noch das Programm abschießen übern Taskmanager.



  • mr_crabs schrieb:

    Im Debugmodus erhalte ich zuerst die Fehlermeldung
    'Jpeg-Fehler #52', wenn ich diese dann weg klicke
    erhalte ich anschließend eine Fehlermeldung
    bezüglich einer Zugriffsverletzung auf Adresse....

    Und die Fehlermeldung kommen dann haufenweise hintereinander,
    ich kann dann nur noch das Programm abschießen übern Taskmanager.

    Wenn du Eigenverschulden mit Sicherheit ausschließen kannst, solltest du einen robusteren JPEG-Importer benutzen. GDI+ oder WIC wären einen Blick wert. Aktuelle C++Builder-Versionen unterstützen beides (GDI+ schon lange, WIC ab C++Builder 2010).



  • mr_crabs schrieb:

    Das Jpeg-File ist definitiv beschädigt, ich kann es mit keinem Programm öffnen

    Kannst du die Datei mal irgenwo hochladen?



  • @Jansen
    Ich habe keine Möglichkeit Dateien irgendwo hochzuladen,
    wo jemand diese abholen könnte außer per Email zu schicken.

    @audacia
    Ich benutze noch den Borland 5. Ich werde mir mal den GDI+ anschauen.

    Aber lieber wäre es mir, wenn es eine "einfache" Funktion gibt
    und diese prüft, ob das File in Ordnung ist.
    Try and catch hilft mir nicht weiter,
    obwohl das doch immer funktionieren sollte.

    Muss ich eventuell irgendwelche Einstellung noch vornehmen?



  • mr_crabs schrieb:

    Ich habe keine Möglichkeit Dateien irgendwo hochzuladen [...]

    http://www.upload-king.de/ o.ä.?



  • @Jansen

    hier der Link:

    http://www.filesend.net/download.php?f=f03289b81f7e3e0d42946cef9f514d50

    Ich habe versucht über uploadking die datei hochzuladen, aber beim upload kam ne fehlermeldung, dass es sich nicht um eine Bilddatei handelt.

    Gruß crabs



  • mr_crabs schrieb:

    Ich habe keine Möglichkeit Dateien irgendwo hochzuladen

    Schau dir mal Dropbox an.



  • Minimalprojekt:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #include <jpeg.hpp>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      String strImage = "d:\\diagramm01.jpg";
      TImage *tiBuffer = new TImage(Form1);
      try
      {
    	tiBuffer->Picture->LoadFromFile(strImage);
      }
      catch(Exception &E)
      {
    	ShowMessage(E.Message);
      }
      delete tiBuffer;
    }
    //---------------------------------------------------------------------------
    

    Bringt hier (W7 64, C++Builder XE) mit deiner JPG-Datei eine sauber abgefangene Exception mit JPEG-Error #53. Keine weiteren Access Violations o.ä.
    Ich bezweifle, dass die JPEG-Implementierung des BCB5 einen so schweren Bug haben sollte, der das von dir beschriebene Verhalten verursachen könnte.
    Wahrscheinlicher scheint, dass du z.B. an anderer Stelle im Programm versuchst, auf tiBuffer zuzugreifen, obwohl da aufgrund des Dateifehlers nix drin ist.



  • Vielen Dank Jansen und an alle anderen,

    hast recht Jansen, es ist an einer anderen Stelle, wo dieser AccessVolation Fehler auftritt.
    Wurde mir erst klar, als ich den Block mit der Try and Catch Anweisung wie in deinem Beispiel in das Clickevent eines Buttons gelegt habe.

    Nun geht die Suche weiter, somit hat sich das Thema hier erledigt 🙂

    Vielen Dank nochmal!

    Gruß Crabs


Anmelden zum Antworten