Entwickler-Ecke

Sonstiges (Delphi) - eine Excel Formel in Delphi übernehmen /mit Tan Funktion


NoEon - Fr 07.03.03 14:10
Titel: eine Excel Formel in Delphi übernehmen /mit Tan Funktion
Hallo,
mein Problem,
ich habe folgende Formel in Excel =tan(F25*pi/(2*180))*A27*2)*0,85
F25 und A27 sind beliebige Zahlen (real) die ich mir in Delphi durch edit Felder hole. wobei F25 eine Grad Angabe ist.

mein Lösungsansatz ist jetzt gewesen;
z1:=((F25*pi/(2*180))*A27*2);
ergz1:=sin(z1)/cos(z1)*0,85;
label44.caption:=FloatToStrF(ergz1, ffFixed, 18, 2);

tan = sin(x)/cos(x) das stimmt doch, die uses math ist auch drinne.

Danke für die Hilfe!
NoEon


bis11 - Fr 07.03.03 14:59

Hi,

bedenke bitte, dass Sinux & Cosinus & Tangens - Formeln in Delphi das Ergebnis immer im Bogenmaß (RAD) zurückgeben. Dieses ist ein anderer Wert, als wenn Du es in Excel oder auf einem Taschenrechner eingibst. Ich weiß nur nichtmehr, wie man den Wert wieder umrechnet.


NoEon - Fr 07.03.03 15:34

rad =pi*grad/180=0.01745*grad
grad=180*rad/pi=57.296 * rad

so sollte die umrechnung sein. Das Funktioniert auch aber... hier weiss ich nicht weiter.. es sind einfach immer andere Ergebnisse.

Mist


Christian S. - Fr 07.03.03 15:48

Könntest Du evtl. mal ein paar Beispieleingaben und die Ergebnisse aus Delphi und aus Excel posten? Vielleicht können wir Dir dann besser helfen!
Ist die Ergebniszelle in Excel oder eine der Eingabezellen auf irgendeine Art formatiert (Zahlenformat, etc.)? Vielleicht rechnet Excel da noch irgendwan um, was nicht in der Formel steht.

MfG,
Peter

P.S.: Bei z1 kannst Du eine 2 kürzen.


NoEon - Fr 07.03.03 15:57

Zellen sind erstmal alle Standard Formatiert.

=(TAN(F25*3,14/(2*180))*A27*2)*0,85
=(tang(55*3,14/(2*180))*350*2)*0,85
=309,55 das kommt in Excel dabei raus!

nur so kann ich die Formel nicht in Delphi übernehmen.

das was da setht muss ich auch in Delphi rausbekommen!
// MOM Feierabend mach gleich zu Hause weiter, ca. 20min danke//

Danke erstmal bis hier!

NoEon


NoEon - Fr 07.03.03 16:32

so....
in Delphi gibt es ja nun die TAN Funktion nicht, die soll sich ergeben aus sin(x)/cos(x).... aber mehr kann ich damit auch nicht anfangen.

wenn noch was gefragt ist.. sagen!


bis11 - Fr 07.03.03 17:51

Dein Fehler liegt in F25 und A27. Trage an der stelle mal die Zahlen aus Deiner Tabelle ein, dann sollte das Ergebnis rauskommen. Probiere mal folgende Zeilen Code :


Quelltext
1:
2:
3:
z1:=((StrToFloat(edit1.text)*pi/(2*180))*StrToFloat(edit2.text)*2); 
ergz1:=sin(z1)/cos(z1)*0,85; 
label44.caption:=FloatToStrF(ergz1, ffFixed, 18, 2);


Einfach noch zwei Edit-Felder dazu und dann müsste es so funktionieren.

(++Achtung++ Nicht getestet ++Achtung++)


Christian S. - Fr 07.03.03 19:00

Zitat:
=(TAN(F25*3,14/(2*180))*A27*2)*0,85

Mit dieser Formel (in Delphi kopiert) und mit der Unit Math eingebungen, funktioniert es. Der Quelltext sieht so aus:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
VAR ergz1, F25, A27 : Real;
begin
  F25:=StrToFloat(edit1.text);
  A27:=StrToFloat(edit2.text);
  ergz1:=(TAN(F25*3.14/(2*180))*A27*2)*0.85;
  label44.caption:=FloatToStrF(ergz1, ffFixed, 18, 2);
end;


Es kommt das heraus, was auch in Excel herauskommt. Ich tippe auf falsch gesetzte Klammern. Habe ich jetzt nicht nachgeguckt.

MfG,
Peter

P.S.: Wenn Du das ganze ohne die Unit Math machen willst, dann würde ich mir eine eigene Function tan definieren. Dann bleibt das ganze schön übersichtlich und Du kannst auch die undefinierten Stellen abfangen.


NoEon - Mo 10.03.03 13:14

Hallo Schoene neue Woche. Danke für die letzet Antwort Peter Lustig.

Interessant das es funktioniert! Aber ok so soll es sein.

Frohes Schaffen
MfG
NoEon