| Autor |
Nachricht |
Heimelchen
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
|
Heimelchen Mitglied
14:50:46 26.08.2010 Titel: |
Read only Eigenschaften von Klassen |
Zitieren |
Hi,
einige der VCL-Klassen haben Public Eigenschaften, die Read Only sind. Wie definiere ich eine Eigenschaft als Read Only? |
|
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11253
|
akari Moderator
15:15:28 26.08.2010 Titel: |
|
Zitieren |
Hallo
Indem du die Setter-Methode wegläßt.
bis bald
akari |
_________________ In der nächsten Version wird alles besser!
|
|
 |
Heimelchen
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
|
Heimelchen Mitglied
18:01:06 26.08.2010 Titel: |
|
Zitieren |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | class TMyClass
{
public:
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt";
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | class TMyClass
{
public:
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt";
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | class TMyClass
{
public:
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt";
| |
Welche Methode? Wie implemtier ich denn eine Setter/Getter-Methode für dies Beispiel? |
|
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11253
|
akari Moderator
19:58:16 26.08.2010 Titel: |
|
Zitieren |
Hallo
Standard C++
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | class TMyClass
{
public:
UnicodeString GetMyString() {return MyString;}; // Getter-Methode
// void SetMyString(UnicodeString x) {MyString = x;}; // Setter-Methode, hier nicht verfügbar
private :
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->GetMyString();
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | class TMyClass
{
public:
UnicodeString GetMyString() {return MyString;}; // Getter-Methode
// void SetMyString(UnicodeString x) {MyString = x;}; // Setter-Methode, hier nicht verfügbar
private :
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->GetMyString();
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | class TMyClass
{
public:
UnicodeString GetMyString() {return MyString;}; // Getter-Methode
// void SetMyString(UnicodeString x) {MyString = x;}; // Setter-Methode, hier nicht verfügbar
private :
UnicodeString MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->GetMyString();
| |
VCL
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | class TMyClass
{
public:
__property UnicodeString MyString = {read = _MyString};
private :
UnicodeString _MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->MyString; // geht
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | class TMyClass
{
public:
__property UnicodeString MyString = {read = _MyString};
private :
UnicodeString _MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->MyString; // geht
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | class TMyClass
{
public:
__property UnicodeString MyString = {read = _MyString};
private :
UnicodeString _MyString;
};
TMyClass *MyClass = new TMyClass();
MyClass->MyString = "Hallo Welt"; // geht nicht
UnicodeString x = MyClass->MyString; // geht
| |
Weiterführendes zum Thema VCL-Eigenschaften findest du hier.
Noch zwei Anmerkungen :
- Verwende mit new erstellte Instanzen immer nur, wenn du wirklich dynamischen Speicher brauchst. In diesem Beispiel ist es nicht nötig. Und wenn du new verwendest, must du auch immer die Instanz mit delete wieder löschen
- Verwende lieber String anstelle von UnicodeString. Der Compiler kümmert sich dann um den richtigen Stringtyp.
bis bald
akari |
_________________ In der nächsten Version wird alles besser!
Zuletzt bearbeitet von akari am 20:00:08 26.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Heimelchen
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
|
Heimelchen Mitglied
08:15:57 27.08.2010 Titel: |
|
Zitieren |
Ok, soweit so gut. Ich hab nun auch festgestellt, dass die Standard-C++ Syntrax unter CodeGear nicht funktioniert. Kann ich denn in der VCL-Syntax auch komplexere Setter-Funktionen umsetzen, beispielsweise mit Überprüfung des Strings?
Übrigens: Erstaunlicherweise finde ich in meinem C++-Buch keine Doku zu Getter und Setter. Haben die offiziell eine andere Bezeichnung? |
|
|
|
 |
VergissEs
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.06.2001
Beiträge: 1010
|
VergissEs Mitglied
08:25:40 27.08.2010 Titel: |
|
Zitieren |
| Heimelchen schrieb: | | Ich hab nun auch festgestellt, dass die Standard-C++ Syntrax unter CodeGear nicht funktioniert. |
Und wie bitte hast da das festgestellt? |
_________________ MfG
VergissEs
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11253
|
akari Moderator
09:54:45 27.08.2010 Titel: |
|
Zitieren |
Hallo
Die C++ Syntax muß auch im CodeGear funktionieren.
Ja du kannst in die property-Deklaration auch Methoden einbinden. Wie das geht steht in der von mir verlinkten Seite.
bis bald
akari |
_________________ In der nächsten Version wird alles besser!
|
|
 |
Heimelchen
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
|
Heimelchen Mitglied
12:00:59 27.08.2010 Titel: |
|
Zitieren |
| VergissEs schrieb: | | Heimelchen schrieb: | | Ich hab nun auch festgestellt, dass die Standard-C++ Syntrax unter CodeGear nicht funktioniert. |
Und wie bitte hast da das festgestellt? |
Ich hab es ausprobiert und es lief nicht. |
|
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11253
|
akari Moderator
12:03:10 27.08.2010 Titel: |
|
Zitieren |
Hallo
"läuft nicht" und "funktioniert nicht" sind keine ausreichende Fehlerbeschreibungen. Da kann dir auch niemand weiterhelfen.
bis bald
akari |
_________________ In der nächsten Version wird alles besser!
|
|
 |
Heimelchen
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
|
Heimelchen Mitglied
12:44:32 27.08.2010 Titel: |
|
Zitieren |
MyClass hat keine Eigeschaft "MyString". |
|
|
|
 |