Graphis::TBitmap in der Konsole ?



  • Guten Abend C++ Community,

    ich hoffe ich bin hier in dem richtigen bereich gelandet auch wenn es viel mehr um eine Konsolen Anwendung als um VCL geht...

    zu meinem Problem:

    Ich versuche in einer Konsolen Anwendung (VCL angehakt) ein Bild in ein Graphics::TBitmap zu Laden.
    Ich weis das selbiges nicht in der Konsole angezeigt werden kann und das soll es auch garnicht ich will
    ein Bild nur nach bestimmten Pixeln auslesen wobei die Lage der Pixel bekannt ist.
    Soweit so gut.

    mein problem ist es allerdings wenn ich mittels:

    Graphics::TBitmap * Image = new Graphics::TBitmap;
    

    das Bitmap erstelle und über

    printf("\nGib bitte einen Pfad zur Datei an:");
       String tmp;
       scanf ("%s", &tmp);
       if (FileExists(tmp)) Image->LoadFromFile(tmp);
    

    das bild laden will wird mir nur ein Fehler angezeigt:

    "Im Projekt XYZ.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung' aufgetreten."

    und das bis dahin lauffähige Programm schmiert ab... kann mir wer sagen / erklären wo mein Fehler liegt ?

    kann es sein das ich hierfür eine falsche Komponente nutze ???
    bzw. gibt es hierfür überhaupt eine passende ???

    natürlich lässt sich das ganze auch in einer einfachen Form mit einem TImage lösen aber ich wil einfach mal wieder etwas
    mit einer Konsolen- Anwendung machen.

    gruß,
    Ich



  • Benutze bitte den Debugger und lies die Dokumentation zu scanf(), speziell, was genau scanf() tut, wenn du "%s" verwendest. Dann wird dir schnell klar, warum das falsch ist.



  • Hallo

    Oder besser noch, du verwendest gleich statt den alten C-Funktionen die sicheren C++ Äquivalente cin/cout und std::string.

    bis bald
    akari


Log in to reply