Delphi - Frage zu (Math.) Funktionen

  • Hi Freax,
    ich will einen "hyperbolic Tangens" ausrechnen aber mir ist die Benutzung der Funktion nicht ganz klar.


    Bisher hab ich folgenden Müll fabriziert :D

    Zitat

    begin
    calc := (strtoint(Edit4.text) div strtoint(edit1.Text)*strtoint(edit2.text));
    function Tanh(const calc : integer) : integer;
    end;


    Also aus dem Ergebnis von 'calc' soll der Tanh gebildet werden.
    Mir ist klar, dass da was fehlt - aber was?
    Sollte eine Funktion nicht einen Rückgabewert haben? Wo steckt der das Ergebnis der Funktion hin? Hab ich noch garnicht bedacht was? Das Ergebnis sollte dann in einem Edit-Feld oder auf einem Label ausgegeben werden können.


    -SF³

  • TanH lässt sich wie jede andere Funktion unter Delphi aufrufen :)


    Wenn man also zum Beispiel den tanh von i ausrechnen und diesen dann im Label1 ausgeben will, müsste das so aussehen:


    Code
    [b]procedure[/b] TForm1.Button1Click(Sender: TObject);
    [b]var[/b] i:integer;
    [b]begin[/b]
    i:=strtoint(edit1.Text);
    label1.caption:=floattostr(tanh(i));
    [b]end;[/b]
  • Zitat

    Original geschrieben von mindrace
    TanH lässt sich wie jede andere Funktion unter Delphi aufrufen :)


    Und genau das habe ich noch nie gemacht :D


    Das Problem ist: "Undeclared Identifier: 'tanh'"


    Wie kann das denn sein?


    Die Prozedur sieht so aus:

    Zitat

    procedure TForm1.Button1Click(Sender: TObject);
    var calc : integer;


    begin
    calc := (strtoint(Edit4.text) div strtoint(edit1.Text)*strtoint(edit2.text));
    edit3.text:=floattostr(tanh(calc));


    end;


    -SF³

  • Dann hast Du die Unit "Math" wahrscheinlich nicht in Dein Projekt miteingebunden.


    Du musst weiter oben in der Datei die Zeile suchen, die mit "uses" beginnt.
    Da stehen dann, durch Kommas getrennt, verschiedene Units.
    In der Zeile fügst Du am Ende einfach noch "Math" ein.
    Dann sollte es funktionieren.


    Code
    [b]uses[/b]
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs[i], Math[/i];
  • So wie includes bei C was?
    Hätt ich mir eigentlich denken können müssen/sollen ;)


    Klappt auf jeden Fall - Danke :top:


    Edit:


    Argh! Ich hasse Delphi.
    Wollte mich mal für meine Inkompetenz entschuldigen - Ich hab nie Delphi gelernt.


    Jetzt möchte ich das Ergebnis durch 90 teilen und mal 100 nehmen - Sollte eigentlich ne leichte Übung sein.



    Left Side cannot be assigned to.
    Hab noch nie verstanden was der damit meint :D


    -SF³

  • > Original geschrieben von SiemensFreak


    > Left Side cannot be assigned to.
    > Hab noch nie verstanden was der damit meint


    Hallo,


    links von := muß etwas stehen, an das man einen Wert zuweisen kann, normalerweise eine Variable. Die Fehlermeldung bedeutet, daß hier links etwas steht, dem man keinen Wert zuweisen kann.


    > strtoint(edit3.text) := erg / 90 * 100;


    strtoint(...) ist ein Wert (vom Typ Int), und an einen Wert kann man keinen Wert zuweisen, im Prinzip gleicher Fehler wie 2:=3.


    edit3.text:=floattostr(erg/90*100); sollte sein, was Du suchst.


    Oder als Einzeiler:


    edit3.text:=floattostr(tanh(strtoint(Edit4.text) div strtoint(edit1.Text)*strtoint(edit2.text))/0.9);


    Gruß, Wolfgang

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!