Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktionen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.10.2005, 16:10 Uhr
Midori



Hi.

Ich habe folgenden Delphi Code

C++:
ExprFunc1V = function(const x: Extended): Extended;

SinC   : ExprFunc1V;

SinC := CompileExpr(ParseExpr('sin(x)/x',['x']),tyPass1V);    // parse and compile expression
Result := SinC(1.0);                                          // evaluate the Expression
FreeFunc(@SinC);                                              // Free Function
ShowMessage('Result = '+FloatToStr(Result));


und möchte das gerne in C++ übernehmen, jedoch weiss ich nicht wie man hier eine Funktion "erstellt" wie dort oben. Falls das jemand kann und überhaupt versteht was ich möchte, wäre echt super!
Ich würde mich schon freuen wenn mir jemand sagen könnte, nach welchem Begriff ich googlen müsste, um etwas darüber zu finden.


Ist eine CBuilder Komponente und in der C++ Header steht schonmal
typedef Extended __fastcall (*ExprFunc1V)(const Extended x);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.10.2005, 17:12 Uhr
DarthDevilous



wieso kannst du nicht direct sin(1.0)/1.0 schreiben, anstatt eine funktion zu erstellen?

Naja, um deinen delphi-code eins zu eins zu übernehmen, brauchst du zusätzliche libraries, ich kann Boost C++ empfehlen www.boost.org
wenn du das installiert hast kannst du dann schreiben:

C++:
// am anfang der datei
#include <math.h>
#include <iostream>
#include <boost\lambda\lambda.hpp>
#include <boost\lambda\bind.hpp>
#include <boost\function.hpp>

//anstatt dem delphi code
using namespace boost;
using boost::lambda::_1;
function<double (double x)> SinC = lambda::bind<double>(sin, _1) / _1;
double Return = SinC(1.0);
std::cout << "Result = " << Return;


ich empfehle dir einen anderen lösungsweg zu suchen, da das hier recht kompliziert ist

Dieser Post wurde am 21.10.2005 um 17:51 Uhr von DarthDevilous editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.10.2005, 20:30 Uhr
Midori



Hehe, ja wäre wohl besser
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.10.2005, 20:42 Uhr
DarthDevilous



Wär vielleicht nicht schlecht wenn du erklären würdest wieso dass du nicht direkt eine funktion double SinC(double x) { return sin(x)/x; } schreibst und diese dann ganz normal aufrufst...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.10.2005, 20:45 Uhr
Midori



Weil das dort einen string parst und rechnet. Ich kann also in einer Eingabe Text eingeben und er spuckt nen Ergebnis aus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.10.2005, 09:18 Uhr
(un)wissender
Niveauwart


nimm regex von boost.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.10.2005, 11:51 Uhr
Midori



aha und die Klammerlogik, Punkrechnung vor Strichrechnung etc macht der liebe Gott oder was?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.10.2005, 12:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


CompileExpr, sowas kennt C++ nicht
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.10.2005, 12:02 Uhr
Midori



Ja das ist ja auch eine eingebundene Klasse.
Es geht nur allgemein um das Verfahren eine Funktion so wie dort in Delphi zu "erstellen".
So'ne art Funktionszeiger ist das ja.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: