EAccessViolation bei Zugriff auf Klassenvariable (private: char*)
-
Hallo!
Ich stehe gerade total auf der Leitung. Wo liegt der Fehler?
Habe eine Klasse definiert, in der es eine private Variable char *Key gibt.
Diese Soll mittels der Methode SetKey(char * K) gesetzt werden. Leider knallt
es an der unten angeführten Stelle.// Klasse zur Überprüfung der Seriennummer class TRegister { private: char *Key; // der CD-Key, 12 stellig public: TRegister(); // Konstruktor bool SetKey (char *k); // Key setzen (Key = k) char *GetKey(); // Key abfragen (return Key) bool Valid(); // true, wenn Key gültig, false sonst }; // Test - Formular, dass TRegister verwendet class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TLabel *Label3; TEdit *Edit1; TButton *Button1; TLabel *Label4; TButton *Button2; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall FormCreate(TObject *Sender); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); TRegister *CDKey; // 1 Instanz in Form1 verwenden }; [...] bool TRegister::SetKey(char *k) { Key = k; // <--- ERROR: EAccessViolation return true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Key->SetKey("ABC-12345678"); // zugehöriger Aufruf } void __fastcall TForm1::FormCreate(TObject *Sender) { TRegister *Key = new TRegister(); }
-
void __fastcall TForm1::FormCreate(TObject *Sender) { TRegister *Key = new TRegister(); }muss
void __fastcall TForm1::FormCreate(TObject *Sender) { Key = new TRegister(); // deklariert ist die Variable im Header }heissen
-
Ist mir peinlich aber ich hab's eben gemerkt

Key existiert doppelt; 1x global und 1x privateStatt
TRegister *Key = new TRegister();muss es natürlich
Key = new TRegister();heissen.
--CLOSE--
-
