Bild anzeigen
-
Hallo
Habe es wie in der Hilfe probiert, doch bekomme den Fehler, dass TObject kein Element von TForm1 ist
Bist du wirklich der Meinung, in der gesamten BCB-Hilfe gibt es nur ein einziges Beispiel, sodas wir genau wissen welches du meinst?
Ist der Programmiercode bei Borland und Visual Studio unterschiedlich?
Der Sprachstandard (C++) ist bei beiden derselbe. Aber sowohl Microsoft als auch Borland haben die Sprache um eigene Erweiterungen ergänzt, so das jeweils ein eigenes Framework herauskam, das zu anderen inkompatibel ist. Und da der C++ Standard nicht die Behandlugn von Grafiken in welcher Form auch immer behandelt, must du auf jedem Framewirk damit unterschiedlich umgehen.
bis bald
akari
-
Hallo,
schonmal danke für eure Hilfe.
Zu dem verwendeten Beispiel:
Der aus der Hilfe verwendete Quelltext zum Laden eines Bildes lautet:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Picture->LoadFromFile("Pfadangabe");
}Eine Picturebox habe ich schon angelegt. Diese heißt auch Image1.
Leider bekomme ich die Fehlermeldung: "__fastcall TForm1::FormCreate(TObject*) ist kein Element von 'TForm1'"
Außerdem werden die "\" als ungültiges char-Zeichen angezeigt.
-
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;
//---------------------------------------------------------------------------
#endifOben 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
