Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hilfe Luftdruckrechner (https://www.delphipraxis.net/87264-hilfe-luftdruckrechner.html)

Y-Fritz 26. Feb 2007 12:33

Re: Hilfe Luftdruckrechner
 
Zitat:

Zitat von Nikolas
Das x steht für die Meter und das ^ ist das Zeichen für Potenzierung also die Höhe auf 1000m ist dann P(1000m)=P0*[ (1-p) hoch 1000 ]

Danke,:thumb:
nur wie bekomme ich den Logarithmus in Delphi hin. Weil ich kenne nur den Befehl für den natürlichen Logarithmus. :gruebel:

Delphi-Quellcode:
h2:=ln(1000 *(1-p))*luft;

Nikolas 26. Feb 2007 14:36

Re: Hilfe Luftdruckrechner
 
Der reicht auch völlig. Such mal nach Log-Gesetzen, da wirst du ein Gesetz finden, wie du so einen Ausdruck auch mit dem ln berechnen kannst. (Besser gesagt, mit Log-Funktionen zu beliebiger Basis)

Zacherl 26. Feb 2007 14:46

Re: Hilfe Luftdruckrechner
 
log(4)3 = lg(4) / lg(3)

wenn ich mich nicht irre ..

Y-Fritz 26. Feb 2007 16:07

Re: Hilfe Luftdruckrechner
 
Hab das mal versucht so zu programmieren, aber die Werte stimmen noch nicht.

Wenn jemand sich nochmal den Quelltext anschauen könnte?

Delphi-Quellcode:

p:=0.013869/100;
luft:=strtofloat(edit4.Text);
h2:=ln(1000*(1-p))/ln(luft);
edit3.text:=floattostrf(h2,fffixed,10,2);
Bei einem Druck von z.B.: 933hpa müssten 500 Meter herauskommen.

Y-Fritz 26. Feb 2007 18:38

Re: Hilfe Luftdruckrechner
 
Danke euch allen, jetzt klapts.
Zu Vollständigkeit noch:

933=1000(1-0,00013869)500 /:1000
0,993=(1-0,00013869)500
log(1-0,00013869)0,933=500
500=ln(0,933)/ln(1-0,00013869)

Nikolas 27. Feb 2007 07:56

Re: Hilfe Luftdruckrechner
 
Deine Schreibweise ist recht unverständlich, aber es sieht so aus, als hättest du es verstanden. :mrgreen: Falls es sich um eine Hausaufgabe handelt, solltest du bei der Abgabe natürlich erklären können, wie du auf die Formel gekommen bist.
Auf jeden Fall sieht diese Lösung doch deutlich eleganter aus, als deine Schleife, die einmal recht lange dauert und in der du bei den ganzen Operationen mit Rundungsfehlern rechnen musst.

Y-Fritz 27. Feb 2007 09:32

Re: Hilfe Luftdruckrechner
 
Zitat:

Zitat von Nikolas
Deine Schreibweise ist recht unverständlich, aber es sieht so aus, als hättest du es verstanden. :mrgreen: Falls es sich um eine Hausaufgabe handelt, solltest du bei der Abgabe natürlich erklären können, wie du auf die Formel gekommen bist.
Auf jeden Fall sieht diese Lösung doch deutlich eleganter aus, als deine Schleife, die einmal recht lange dauert und in der du bei den ganzen Operationen mit Rundungsfehlern rechnen musst.

Das war nur das umstellen der Formel, der Quelcode war dann dieser:
Delphi-Quellcode:
luft:=luft/1000;
h2:=ln(luft)/ln(1-p);
Ach kennt jemand zufällig noch nein Algorithmus zum Absichern? Sprich das wenn man in ein edit Feld z.b.: einen Buchstaben eingibt, eine Warnung ausgegeben wird? (um zu verhindern, dass das Programm abstürtzt)

Also mir ist dieser bekannt (funktioniert aber nicht):

Delphi-Quellcode:
try
 h:=strtoint(edit1.text);
except
 MessageDlg ('Bitte nur Zahlen eingeben!', mtwarning,[mbOK],0);
 edit1.setfocus;
 exit;
end;
Gibts da noch ne andere Möglichkeit? Zum Beispiel mit "if Buchstabe do begin"?

Mavarik 27. Feb 2007 09:42

Re: Hilfe Luftdruckrechner
 
Zitat:

Zitat von Y-Fritz
Also mir ist dieser bekannt (funktioniert aber nicht):

Delphi-Quellcode:
try
 h:=strtoint(edit1.text);
except
 MessageDlg ('Bitte nur Zahlen eingeben!', mtwarning,[mbOK],0);
 edit1.setfocus;
 exit;
end;

Hast Du das in der IDE getestet? Da geht es nicht, da die IDE die Exception vorher abfängt. (Kann man auch einstellen)

Frank :coder:

PS.: Int(S,Error); // Sowas?

Nikolas 27. Feb 2007 10:52

Re: Hilfe Luftdruckrechner
 
Ich habe mal den Code für ein Editfeld, dass nur korrekt eingegebene Zahlen zulässt in der Codelibrary veröffentlicht, den kannst du für deine Zwecke anpassen.

ibp 27. Feb 2007 11:07

Re: Hilfe Luftdruckrechner
 
Zitat:

Zitat von Y-Fritz
Delphi-Quellcode:
try
 h:=strtoint(edit1.text);
except
 MessageDlg ('Bitte nur Zahlen eingeben!', mtwarning,[mbOK],0);
 edit1.setfocus;
 exit;
end;
Gibts da noch ne andere Möglichkeit? Zum Beispiel mit "if Buchstabe do begin"?

schau mal nach trystrtoint oder du musst die eingabe direkt abfangen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz