Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Read only Eigenschaften von Klassen  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Heimelchen
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.06.2010
Beiträge: 325
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag 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
Beitrag Heimelchen Mitglied 12:44:32 27.08.2010   Titel:              Zitieren

MyClass hat keine Eigeschaft "MyString".
C/C++ Forum :: VCL (C++ Builder) ::  Read only Eigenschaften von Klassen  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.