Frage von Prisonofmind1, 61

Lazarus power() Problem?

Hallo,

Wie ihr in der Überschrift lesen könnt, will ich in Lazarus mit Potenzen rechnen. Dafür habe ich unter "Uses" auch "Math" hinzugefügt, um die Funktion power(x,y) nutzen zu können.

Allerdings gibts es im Compiler nun folgende Fehlermeldung:

"Error:Operator is not overloaded: "AnsiString" + "Double"

Ich habe leider keine Ahnung, was ich falsch mache. Könnt ihr mir helfen?

Danke im Voraus!

Prisonofmind1

Antwort
von maximilianus7, 18

OutputValue := power(2,Counter1);

du weist dem ergebnis von power einen string zu. die fehlermeldung 'overloading' finde ich trotzdem merkwürdig. kann man in lazarus auch den returncode overloaden? in c++ geht das z.b. nicht.

Kommentar von Prisonofmind1 ,

Oh mann, war ja klar, dass es wieder an sowas liegt >.<

Vielen, vielen dank!

Antwort
von Spirit528, 23

Dein erster Wert ist eine Zeichenkette, nur der zweite Wert ist eine Fließkommazahl.

Ich denke Du müsstest den ersten Wert erst in ein Double casten oder vorneherein schon als Double deklarieren. Versuche mal StrToDouble()

http://lazarus-ccr.sourceforge.net/docs/lcl/lclproc/strtodouble.html

Kommentar von Prisonofmind1 ,

Ich bin leider ein Neuling in Lazarus ^^
Könntest du mir erklären, wie ich das machen muss?

Kommentar von Spirit528 ,

Dafür muss ich die betroffenen Codezeilen sehen.

Ich versuch es mal so..

Du rufst ja die power-Methode auf. z.B.

ergebnis := power(basis, exponent);

Und das änderst Du dann in

ergebnis := power(StrToDouble(basis), exponent);

Oder wenn Du den ** Operator  verwendest

ergebnis := basis**exponent;

Kommentar von Spirit528 ,

Ach sorry ich bin aber auch blind. Die Meldung lautete ja, dass der Operator nicht für String und Double überladen ist, sondern wahrscheinlich nur für double, double oder float, float oder int, int

Also dann wäre es:

ergebnis := StrToDouble(basis)**exponent;

Kommentar von Prisonofmind1 ,

Ah, ok ^^
Das ist so ziemlich das, was ich bisher dastehen habe. Aber nun muss ich die Funtkion ja noch irgendwie definieren. Zumindest steht im Compiler, dass sie nicht gefunden wird.

Kommentar von Spirit528 ,

Dann vielleicht StrToFloat - in der IDE gibt es doch sicher eine Dokumentation.

Kommentar von Prisonofmind1 ,

Damit kommt die selbe Fehlermeldung erneut.

Kommentar von Spirit528 ,

Ohne Source ist das jetzt mehr ein Ratespiel.

Kommentar von Prisonofmind1 ,

Ich habe hier den gesamten Projektorder mal hochgeladen:
https://www.dropbox.com/sh/7aqq0et1k6vx8n4/AAAEQSkXi354AaeWSwFhUPEIa?dl=0

Keine passende Antwort gefunden?

Fragen Sie die Community