AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++ mit dem Borland Builder 6. Komponentenzugriff mit . u ->
Thema durchsuchen
Ansicht
Themen-Optionen

C++ mit dem Borland Builder 6. Komponentenzugriff mit . u ->

Ein Thema von glunzl · begonnen am 29. Dez 2005 · letzter Beitrag vom 30. Dez 2005
Antwort Antwort
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#1

C++ mit dem Borland Builder 6. Komponentenzugriff mit . u -&

  Alt 29. Dez 2005, 23:05
Hallo!

Noch eine Frage beim erlernen hat sich nicht klären lassen:
Komponentenzugriffe erfolgen mal mit . (Punkt) und mal mit dem Pfeil.
Code:
Edit1->Text.ToDouble ;  // Zugriff mit .
MemoOut->Lines->Add("hallo") ; // Zugriff mit ->
In einem Tutorial habe ich gelesen, das mit . ein Komponentenzugriff erfolgt, mit -> ein Komponentenzugriff über einen Zeiger erfolgt. Allerdings habe ich noch nicht herausgefunden, wann was zu benutzen ist und warum.

Hat jemand eine einfache Erklärung parat?

Gruß
glunzl
Michael
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#2

Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .

  Alt 29. Dez 2005, 23:30
Mit . greifst du auf die Felder eines statisch instanzierten Objekts zu, mit -> greifst du auf die Felder eines dynamisch instanzierten Objekts zu. Dabei ist a->b nur eine Abkürzung von (*a).b

Code:
class KomplexeZahl
{
    float real;
    float img;
};

// statisch instanziert
KomplexeZahl zahl;
zahl.real = 1.0f;
zahl.img = 0.5f;

// dynamisch instanziert
KomplexeZahl* zahl;
zahl = new KomplexeZahl;
zahl->real = 1.0f;
zahl->img = 0.5f;
// ist das selbe wie:
(*zahl).real = 1.0f;
(*zahl).img = 0.5f;
Der Vollständigkeit halber gibt es noch zwei weitere Zugriffsoperatoren, nämlich .* und ->*, beides sogenannte "Pointer-to-Member"-Operatoren. Man greift damit nicht direkt auf ein Member der Klasse zu, sondern eben über einen Zeiger auf das Member.
Beispiel:
Code:
(pObjekt->*pFunktion)(einWert);
Dieser Code ruft die Funktion auf, auf die pFunktion zeigt, und übergibt ihr "einWert".
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#3

Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .

  Alt 30. Dez 2005, 08:35
Zitat von Oxmyx:
Mit . greifst du auf die Felder eines statisch instanzierten Objekts zu, mit -> greifst du auf die Felder eines dynamisch instanzierten Objekts zu. Dabei ist a->b nur eine Abkürzung von (*a).b
Das ist angekommen
Komplexe Zahlen muß ich am Wochenende eh üben, danke für die Erinnerung

Aber worin besteht nun der Unterschied in meinem Beispiel mit TEdit und TMemo? Beide sind zur Entwurfszeit erzeugt worden, aber trotzdem wird die add Methode mit dem -> angesprochen

Gruß
glunzl
Michael
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .

  Alt 30. Dez 2005, 08:43
Generell werden in der VCL alle Objekte (TEdit, TMemo, TStringList) dynamisch alloziert. Deshalb der ->. Einzigste Ausnahme bildet der AnsiString. Diesen macht man in der Regel nicht dynamisch. Deshalb wird auf Methoden des AnsiStrings in der VCL mit . zugegriffen. Text ist nunmal ein AnsiString. Lines dagegen ist eine TStringList die dynamisch erzeugt wird.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

Registriert seit: 21. Mär 2004
Ort: Reinbek
119 Beiträge
 
Delphi 7 Professional
 
#5

Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .

  Alt 30. Dez 2005, 09:01
Ach sorum läuft der Hase
Ist AnsiString denn wirklich die Ausnahme, oder gibt es da noch andere geläufige Kandidaten?

Gruß
glunzl
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz