AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Borland C++ Builder 6, To.Double

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

Borland C++ Builder 6, To.Double

  Alt 29. Dez 2005, 16:43
Hallo!

In der Schule gibts statt Delphi, C++ mit dem Borland Builder 6.
Ich Frage mich gerade, warum die Methode To.Double (ist doch eine Methode?!?) hinten ansteht und wie ihr was übergeben werden kann, da die Klammern doch hintern leer sind.
Code:
Bsp: x = Edit1->Text.ToDouble()
Die Suche fühte mich in der dstring.cpp auf folgende Zeile:

Code:
 
double __fastcall AnsiString::ToDouble() const
  {
#if 0
    //!JK change this to return a long double when the compiler properly
    //!JK promotes/demotes long doubles/doubles
#endif
    return Sysutils::StrToFloat(*this);
  }
Ich denke mir, das hier auf die Funktion StrToFloat umgeleitet wird. Aber immernoch bleibt bei ir die Frage, wie funktioniert das mit den hinten anstellen der Methode/Funktion und warum die Klammern leer bleiben.

Kann jemand mal Licht in mein Dunkel bringen?

Dank und Gruß
Glunzl
Michael
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: Borland C++ Builder 6, To.Double

  Alt 29. Dez 2005, 17:07
Du bist hier seit 21.3.2004 angemeldet, du solltest also mittlerweile ein wenig programmieren können.
Wieso sollte man einer Funktion ToDouble() einen Parameter übergeben? Es ist eine Methode der verwendeten String-Klasse und wandelt den enthaltenen String in einen Wert vom Typ double um.
Und wo sollte man sie sonst anstellen, wenn nicht hinten? Es ist eine Methode der Stringklasse, also schnappst du dir mit Edit1->Text den String und rufst die Methode auf, ganz einfach.
Wäre in Delphi String ebenfalls eine Klasse und nicht Compiler-Magic, würde das in Delphi genauso funktionieren: Edit1.Text.EineMethode().
Und warum die Klammern leer bleiben, hast du schon richtig erkannt: es werden keine Parameter übergeben. Eine Methode, die lediglich das Objekt in einen anderen Typ umwandelt, braucht keinen weiteren Parameter mehr. Müsste man ihr etwas übergeben, müsste man es zwischen die Klammern schreiben, wie bei jeder anderen Funktion in C auch.
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

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

Re: Borland C++ Builder 6, To.Double

  Alt 29. Dez 2005, 17:39
Zitat:
also schnappst du dir mit Edit1->Text den String und rufst die Methode auf, ganz einfach
Angenommen in Delphi wäre es eine Klasse ...
Zitat:
Edit1.Text.EineMethode().
würde EineMethode doch links den Rückgabewert haben. Aer ich weise doch nicht Edit1.Text etwas zu, sondern
Code:
Bsp: x = Edit1->Text.ToDouble()
Ich glaube, ich sehe den Wald vor lauter Schnee nicht ...
Michael
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#4

Re: Borland C++ Builder 6, To.Double

  Alt 29. Dez 2005, 18:11
Zitat von glunzl:
würde EineMethode doch links den Rückgabewert haben.
Richtig, aber dabei ist "Edit1.Text.EineMethode" ein Entity und das Ergebnis der Methode landet links *davon*, also in der Variable x. Das ist in Delphi und in C++ genauso. Genaugenommen sieht das ganze so aus:[code]x = (Edit1->Text).EineMethode();[/quote]Zuerst wird Edit1->Test "aufgelöst", man erhält
Code:
x = virtuelle_temporaere_variable.EineMethode();
und der Rückgabewert von EineMethode() landet in der Variable x.
  Mit Zitat antworten Zitat
Benutzerbild von glunzl
glunzl

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

Re: Borland C++ Builder 6, To.Double

  Alt 29. Dez 2005, 20:19
Danke für die Hinweise. Ich werd das nochmal vertiefen müssen, sehe aber schon klarer

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

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

Re: Borland C++ Builder 6, To.Double

  Alt 30. Dez 2005, 09:11
Hallo nochmal!

Kann man denn allgemein sagen, das Methoden, da Objektbezogen, immer "hinten anstehen"?

Und sind somit folgende Ausdrücke äquivalent:
Code:
x = Edit1->Text.ToDouble() ;
x = StrToFloat(Edit1->Text) ;
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
 
#7

Re: Borland C++ Builder 6, To.Double

  Alt 30. Dez 2005, 09:23
Zitat von glunzl:
Hallo nochmal!

Kann man denn allgemein sagen, das Methoden, da Objektbezogen, immer "hinten anstehen"?

Und sind somit folgende Ausdrücke äquivalent:
Code:
x = Edit1->Text.ToDouble() ;
x = StrToFloat(Edit1->Text) ;
Gruß
glunzl
Ja.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  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:13 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