Announcement

Collapse
No announcement yet.

Formel Problem. Geht in Delphi aber nicht in VB2005

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formel Problem. Geht in Delphi aber nicht in VB2005

    Hallo,

    ich habe eine Formel aus einer Delphi Anwendung in eine VB.net 2005 Anwendung "kopiert". In Delphi funktioniert die Formel wunderbar aber nicht in VB. Vielleicht kann mir ja jemand helfen.

    VB.Net


    Code:
    Imports System.Math
    
    DIM b, flankenwinkel, radius,s, a, querschnitt AS Double
    
    querschnitt = Format((b + 2 * radius / Cos(flankenwinkel * PI / 180)) * (s - a - radius) + Sqrt(radius) * PI / 2 + b * (a + radius) + (Sqrt(s - (a + radius)) * Sin(flankenwinkel * PI / 180) / Cos(flankenwinkel * PI / 180)), "F")
    Eingabe:

    flankenwinkel = 1
    s = 2
    b = 4
    a = 6
    radius = 7

    Ergebnis querschnitt = n. def.

    Delphi

    Code:
    var
    flankenwinkel, s, b, a, radius, querschnitt:real;
    
    querschnitt := floattostrf((b + 2 * radius / cos(flankenwinkel * pi / 180)) * (s - a - radius) + sqr(radius) * PI / 2 + b * (a + radius) + (sqr(s - (a + radius)) * sin(flankenwinkel * PI / 180) / cos(flankenwinkel * PI / 180)),fffixed,9,2);
    Eingabe:

    flankenwinkel = 1
    s = 2
    b = 4
    a = 6
    radius = 7

    Ergebnis querchnitt = -66,94

    Meine Aufgabe ist einfach ein Delphi Programm von 1997 neu zu gestalten und zu verbessern. Ich schreibe quasi die Formeln ab die die Delphi Anwendung enthält. Bis auf diese Formel und noch einer anderen klappt sonst alles. Ich habe keine Ahnung von solchen Formeln. Und weiß auch, dass die Eingaben total Schwachsinnig sind, aber egal was ich eingebe ich hab immer bei der Formel ein anderes Ergebnis in .NET. Vielleicht ist das auch so richtig, ich weiß es nicht. Allerdings wäre ich beruhigter wenn im VB.net das selbe immer rauskommt wie in der Delphi Anwendung.

    Tausend Dank, schonmal im vorraus!

  • #2
    Hallo,

    ich kann die Formel momentan nicht exakt zuordnen, aber aufgrund deiner Bezeichnungen handelt es sich um eine Schnittfläche.

    Werte für Schnittflächen können nicht negativ sein (außer es wird im imaginären Zahlenraum operiert).

    In beiden Formeln (sind richtig übersetzt) wird im Ausdruck
    Code:
    sqr(s - (a + radius))
    mit den angegebenen Werten die Wurzel von -11 berechnet und diese ist weder in .net noch in Pascal (Delphi) definiert. Deshalb wundert es mich warum Pascal ein Ergebnis liefert.

    Probier die gleiche Berechnung mit s = 20, sodann ist die Wurzel positiv und beide Varianten liefern ein Ergebnis. Da ich kein Delphi laufen habe kann ich's nicht vergleichen.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      sqr(s - (a + radius))
      In Delphi ist mit sqr Square (also Quadrat) gemeint nicht SquareRoot.
      Ersetze sqrt in VB durch ^2 und man bekommt -66,94.

      Die Delphi Version ist auch irgendwie daneben. floattostrf liefert sicherlich keinen real Wert.
      Zuletzt editiert von Ralf Jansen; 03.11.2008, 22:09.

      Comment


      • #4
        Originally posted by Ralf Jansen View Post
        In Delphi ist mit sqr Square (also Quadrat) gemeint nicht SquareRoot.
        Ersetze sqrt in VB durch ^2 und man bekommt -66,94.

        Die Delphi Version ist auch irgendwie daneben. floattostrf liefert sicherlich keinen real Wert.
        Ahhhhhhh. Ok, das wars. So gehts
        Ja, in der Delphi Anwendung sind eh einige Dinge, die daneben sind.
        Die Formel berechnet den Nahtquerschnitt einer Schweissnaht.

        Comment

        Working...
        X