tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
685
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    theGhost2006 theGhost2006 ist offline Grünschnabel
    Registriert seit
    Feb 2005
    Beiträge
    2
    Hallo!

    Ich programmiere seit 3 Jahren C++, jedoch erst seit ein paar Woche mit dem CBuilder, nun hab ich ein problem, ich hoffe ihr könnt mir dort weiterhelfen.

    Und zwar folgendes, ich möchte eine Klasse namens "ICar", diese soll ein TImage enthalten, dem ich später ein Bild, Größe, etc. zuweißen kann mit methoden der Klasse

    Nun hab ich aber ein Problem damit, das ich ja das Bild auf Form1 anzeigen möchte.
    Die Klasse brauche ich, um den Code sauberer zu halten und einfacher mit dem Bild umgehen kann.

    Ich hab auf dem Form1 nur einen button der mir beim ausführen eine neue ICar Instanz erstellt. Danach möchte ich dem Bild die Top position ändern, nur da meckert das Programm, wegen Zugriffsfehler auf Speicher. Ich hab einiges im Internet recharchiert, aber ich finde keine Lösung. Wäre um Hilfe sehr dankbar.

    Hier noch der Code:

    H-Datei der Class ICar
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    #include <Graphics.hpp>
    #include "Unit1.h"
     
    class ICar
    {
      public:
             ICar();
             ~ICar();
     
             TImage *image;
    };
    CPP-Datei der Class ICar
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    #include "ICar.h"
     
    ICar::ICar()
    {
        image = new TImage(Form1);
        image->Parent = Form1;
    }
    BUTTON-Code
    Code :
    1
    2
    
    ICar *car1;
    car1->image->Top = 20;
    Ich denke das vielleicht der CBuilder Probleme hat während der Laufzeit ein TImage zu erzeugen, ich weiß es nicht. VC++ & MFC sind mir vertrauter !

    Mit freundlichen Grüßen
    Ghost
     

  2. #2
    Avatar von Turri
    Turri Turri ist gerade online Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Hallo,

    Code :
    1
    2
    
    ICar *car1;
    car1->image->Top = 20;
    du legst nur einen Zeiger an, und der zeigt ins Nirvana... deswegen dann die Zugriffsverletzung...
    Probiers mal so:
    Code :
    1
    2
    
    ICar *car1 = new ICar(); // neues Objekt
    car1->image->Top = 20;
    Bei deinem TImage machstes ja genauso
    Code :
    1
    
    image = new TImage(Form1);
    da bekommt der "image" Zeiger auch nen new TImage Objekt

    MfG Turri
     

  3. #3
    theGhost2006 theGhost2006 ist offline Grünschnabel
    Registriert seit
    Feb 2005
    Beiträge
    2
    Danke für deinen Tipp!

    Ich hab jetzt herausgefunden warum es nicht geklappt hat, und zwar hatte ich folgendes gemacht:

    ICar *car1;

    Ich hätte dies machen sollen:

    ICar *car1 = new ICar();

    Ich hatte das mal gemacht nur kam dann ein fehler wegen dem ~ICar(); Constructor.
    Ich hab den nicht geklariert daher hat es nicht geklappt. Es hat dsa gefehlt in der CPP-Date:

    ICar::~ICar()
    {

    };


    In diesem Sinne, vielen dank!
    Super Support hier!

    Ghost
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.03.08, 16:41
  2. Erben von TImage
    Von Infernus im Forum Delphi, Kylix, Pascal
    Antworten: 0
    Letzter Beitrag: 31.08.06, 17:06
  3. TImage
    Von ZeroGirl im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 19.01.06, 17:44
  4. Ableiten von TImage
    Von wolf_10de im Forum Borland CBuilder und VCL
    Antworten: 1
    Letzter Beitrag: 25.10.04, 14:53
  5. TImage und Thread-Objekte
    Von xerses im Forum Delphi, Kylix, Pascal
    Antworten: 0
    Letzter Beitrag: 23.03.04, 21:51