Bild anzeigen



  • Was ist eine Picturebox? Meinst du eine PaintBox?
    Image1 ist ein ein Objekt vom Typ TImage.



  • In werden in C/C++ (wei in vielen anderen Sprachen auch) Escapesequenzen genutzt:

    http://www.marquardtnet.info/cecke/quickies.1/1_quicky_40.html



  • Hallo

    Leider bekomme ich die Fehlermeldung: "__fastcall TForm1::FormCreate(TObject*) ist kein Element von 'TForm1'"

    Du hast vergessen, das die Methode noch in dem Header des Forms als zu der Klasse TForm1 zugehörig deklariert werden muß. Überlass solche Sachen am besten dem Objektinspektor, den diesen Event kannst du auch generieren lassen.

    bis bald
    akari



  • Tja, manchmal ist man schon ein wenig bescheuert. Also hab den Header jetzt richtig. Jetzt habe ich das Problem, dass sobald ich das Programm als Projekt speicher ein Linker Fehler kommt. Dieser Teilt mir mit, dass er in folgender Zeile einen File Name erwartet:

    Image1->Picture->LoadFromFile("test.bmp");

    Die Datei "test.bmp" liegt im gleichen Verzeichnis wie das Projekt.

    Wenn ich ein neues Projekt öffne und dort alles eingeben, startet wenigstens das Programm, solang ich nichts speichere. Dort wird jedoch kein Bild in Image1 angezeigt.

    Langsam bin ich echt am verzweifeln...



  • Wenn das File nicht gefunden würde müsste eine Exception kommen. Ein Linker-Fehler deutet auf etwas anderes hin. Gib bitte mal die komplette Fehlermeldung an.



  • Hallo

    dass sobald ich das Programm als Projekt speicher ein Linker Fehler kommt. Dieser Teilt mir mit, dass er in folgender Zeile einen File Name erwartet

    Es gibt keine solchen Linklerfehler. Du meinst sicher einen Laufzeitfehler beim Ausführen des fertig kompilierten und gelinkten Programms.

    Die Datei "test.bmp" liegt im gleichen Verzeichnis wie das Projekt.

    Wenn das so wäre, würde die Fehlermeldung nicht kommen.

    Wenn ich ein neues Projekt öffne und dort alles eingeben, startet wenigstens das Programm, solang ich nichts speichere.

    😕

    Das Besipiel aus der BCB-Hilfe wird bei korrekter Anwendung auch korrekt laufen.
    Korekte Anwendung heißt :
    - Den OnCreate-Event des Forms durch den OI erzeugen lassen.
    - Die eine Zeile in den Programmcode kopieren
    - Eine BMP-Datei in das Projektverzeichnis kopieren, den Dateinamen im Quellcode entsprechend anpassen
    - Projekt kompilieren und starten

    Übrigens ist es nicht nötig, für ein rein statisches Bild so einen Quellcode zu schreiben. Nimm ein TImage statt der TPaintBox, und du kannst ein beliebiges Bitmap über den OI reinladen, das dann ohne weitere Verarbeitung angezeigt wird. Der zusätzliche Vorteil ist, das die Bitmapdatei selber nicht mehr mit dem fertigen Programm mitgegeben werden muß.

    bis bald
    akari



  • So jetzt mal das Programm, damit ihr es versteht.

    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent
    Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::FormCreate(TObject *Sender)

    {
    Image1->Picture->LoadFromFile("test.bmp");
    }

    void __fastcall TForm1::BeendenClick(TObject *Sender)
    {
    Close();
    }

    //---------------------------------------------------------------------------

    Header

    /---------------------------------------------------------------------------

    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // Von der IDE verwaltete Komponenten
    TImage *Image1;
    TButton *Beenden;
    void __fastcall BeendenClick(TObject *Sender);
    void __fastcall FormCreate(TObject Sender);
    private: // Anwender-Deklarationen
    public: // Anwender-Deklarationen
    __fastcall TForm1(TComponent
    Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

    Oben das ist die .cpp unten das der Header.

    Sobald ich dieses ausführe kommt der Fehler: "[Linker Fataler Fehler] Fatal: Expected a file name:".

    Die Datei test.bmp ist in dem selben Ordner wie das Programm.



  • Hallo

    Siehst du, du bringst hier einiges durcheinander.
    Der Fehler den du bekommst ist tatsächlich ein Linkerfehler, hat aber gar nichts mit der Bitmap-Datei zu tun, sondern ist ein ganz anderes Problem. Die Erklärung und Lösung findest du in der FAQ unseres Builder Forums.

    bis bald
    akari



  • Das ist ja mal ein schöner Bug. Mein Ordner hieß wirklich C++. 😉

    Nachdem ich dies geändert hatte kam das nächste Problem, und zwar das ich einen unresolved External habe. Die passende .obj Datei hab ich in das Verzeichnis kopiert, wo auch das Projekt liegt. Ein Einbinden über Projekt->Dem Projekt hinzufügen hat nix geändert.

    Prima, jetzt hab ich den nächsten Fehler.

    [C++ Fehler]: E2303 Typname erwartet
    [C++ Fehler]: E2121 )fehlt beim Funktionsaufruf
    [C++ Fehler]: E2451 Undefiniertes Symbol 'exception'

    Diese Fehler treten in der WINAPI WinMain auf.

    Kennt ihr das Gefühl, bevor man durchdreht? 😡



  • lösche mal alle obj-Files aus dem Projektordner und kompilier das gesamte Projekt neu



  • Hallo

    mir scheint du reparierst dein Projekt grad zu Tode. Ich habe jedenfalls keinen Überblick mehr, was den letzten Fehler verursacht (schon gar nicht ohne passenden Code), und du offenbar auch nicht.
    Mach ein neues Projekt auf, und schreib oder kopier alles dort rein. Beachte aber die gezeigten Berichtigungen, zum Beispiel einen Event über den Objektinspektor zu erstellen.

    bis bald
    akari



  • Also OHNE jetzt großartig und detailiert hier zu lesen, du wolltest ein Beispielprogramm haben, Schmuech.

    Ich habe selber viel daran gesessen, Bilder anzuzeigen und habe einfach mal verschiedene Versuche gemacht.

    http://home.arcor.de/bigdeak/Bilder_Prog.rar <--- Da ist das Programm, vielleicht hilft es dir ja weiter ^^



  • So schonmal vielen Dank an euch alle. Mit dem Beispielprogramm habe ich es hinbekommen.

    Jetzt kanns weitergehen 😉


Anmelden zum Antworten