Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prob mit Schul- und Privat Delphen. (https://www.delphipraxis.net/3484-prob-mit-schul-und-privat-delphen.html)

Zombi 15. Mär 2003 13:57


Prob mit Schul- und Privat Delphen.
 
Hi!

Das delphen hab ich teilweise in der Schule und teilweise zuhause gelernt. Die Grundkenntnisse was ObjektInspektor angeht und alles was wir an Objekten gemacht haben habe ich eigentlich aus der Schule. 2 Zahlen addieren z.B hab ich aber Privat gelernt. Ich mach auch erst seit ca 3 Wochen etwas mit Delphi.

Jetzt hab ich aber Probleme gekriegt mit dem was wir in der Schule machen weil die das ganz anders machen. Wenn ich z.B ein FormatFloat bei mir reinmachen will dann klappt das nicht so wie ich das will. Ich liste mal zuerst den QT aus meiner Schule auf und dann den ich machen würde:

Delphi-Quellcode:
var T_Fahrenheit:Real;
begin
T_Fahrenheit:=StrToFloat(Edit2.Text)*9/5+32;
Edit1.Text:=FormatFloat('###.#0',T_Fahrenheit);
Edit2.SetFocus;
end;
und jetzt mal meinen:
Delphi-Quellcode:
Begin
EDIT2.Text:=FloatToStr(StrToInt(Edit1.Text)*9/5+32);
end;
Das is nen stinknormaler Rechner von Celsius nach Fahrenheit nur verstehe ich den QT aus der Schule gar nich. So wie ich das mache habe ich es auch bisher nich geschafft ein Formatfloat zu setzen weil der entweder Fehler hatte oder das nicht so gemacht hat wie ich wollte.

Jetzt meine Frage:
Kann mir vielleicht jemand leicht erklären wie ich den QT aus der Schule zu verstehen hab und wie würde das jetzt aussehen wenn ich 2 Zahlen addieren will ?!.Und wie ich und ob ich überhaupt ein FormatFloat in meinem setzen kann.

THX !!!

cya
mfg Zombi :firejump:

Luckie 15. Mär 2003 14:11

F1 -> FormatFloat. Lesen und verstehen. :wink:

Zombi 15. Mär 2003 14:30

F1 -> FormatFloat. Lesen und verstehen.
 
yo ich hab das mal gemacht aber das hilft mir irgendwie nich sehr weiter. ich hab das Englische Delphi und soooo ein englisch Profi bin ich nich wirklich.

Aber das is ja auch nich mein einzigstes Prob!!

cya

MfG Zombi :firejump:

Touchdown 15. Mär 2003 15:47

Schau dir mal StrtoFloatf an, ist viel besser. Auch 1000er Punkte möglich usw.

Zu deinem Problem: Mach es dir nicht so schwer und teile Berechnungen in Funktionen auf. Einfach aufrufen und du hast (natürlich muss die richtig rechnen) schon mal den richtigen Wert! Z.B:

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
begin
  Result := // dein Code
end;
function FahrenheitinCelsius (Parameter : Real) : Real;
begin
  Result := // dein Code
end;
Achte auf Klammern und mathematische Regeln (Punkt vor Strich usw. ). Der Rechner ist da gnadenlos!

Zombi 15. Mär 2003 17:05

Hi!

Also mir der Mathematischen Formel habe ich eigentlich keine Probz das ging ja auch bisher aber das mit den function sieht noch ne bissel komplizierter aus. Aber auch nur weil ich das noch nich getestet habe als ich z.B: das erste mal eine ComboBox eingerichtet hab da kam ich zuerst auch nicht weiter aber das is nun auch kein Problem mehr !

Ich werde das dann mal testen...

Dieses (Parameter : Real) muss das jetzt so heißen oder Result ? weil von Result hab ich noch nie etwas gehört ist das ein fester Begriff in Delphi oder eine normale Variable ?

Dann noch eine Frage da ich mit Pascal angefangen habe zu proggen waren Befehle wie strtofloat floattostr oder strtoint alles neu für mich ich weiß auch gar nicht richtig was die bedeuten ausser das str für string steht int für integer und float von ? fließkommazahl ? Wo liegt denn da jetzt der Unterschied zwischen FloatToStr und StrToFloat ?

Wenn ich das jetzt so wie im unteren Beispiel mache dann muss ich aber trotzdem noch den ganze Code eingeben oder ?
also so:

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
begin
  Result :=StrToFloat(StrToInt(Edit1.Text)*9/5+32);
oder dann stumpf nur noch die Formel das kann ich mir dann aber nich vorstellen weil das währe dann ja wirklich einfach =))
Wie würde das aussehen wenn das FormatFloat da noch hinkommt ? einfach das da drunter schreiben wie in dem QT aus der Schule ?

Sorry für solche fragen aber ich bin halt noch ein blutiger Anfänger =)

THX
cya

MfG Zombi :firejump:

Christian Seehase 15. Mär 2003 17:33

Moin Zombi,

als erstes mal zu Result.
Result ist eine Variable, die in jeder Funktion automatisch vom Compiler erkannt wird, und nicht deklariert werden muss. Dies geschieht implizit dadurch, dass eine Funktion deklariert wird. Result hat immer den Typ des Rückgabewertes der Funktion.

Bei einer Funktion

Delphi-Quellcode:
function IchHabeAlsErgebnisInteger : integer;
hat Result z.B. den Typ integer.

Mit dieser Variablen kann innerhalb der Funktion alles gemacht werden, was man auch sonst mit einer Variablen dieses Typs machen kann.

Die Funktionen:
  • StrToFloat
    Bekommt einen String übergeben, der eine Gleitkommazahl repräsentiert, und gibt diese als numerischen Wert zurück
  • FloatToStr
    Hier wird eine numerische Gleitkommazahl übergeben, und diese als String zurückgeben
  • Allgemein
    StrToXXX wandelt einen String der den Typ XXX repräsentiert in einen Wert vom Typ XXX um
    XXXToStr wandelt einen Wert vom Typ XXX in einen entsprechenden String um.
    Manchmal wird String allerdings auch ausgeschrieben, und es gibt auch noch den Sonderfall des IntToHex. Hiermit kann eine Ganzzahl in einen String der die Zahl als Hexadezimalzahl enthält umgewandelt werden.

Touchdown 15. Mär 2003 18:39

In der einer Funktion CelsiusinFahrenheit hat keine visuelle Komponente etwas verloren, hier kommt nur der reine mathematische Aspekt rein.

Hoffe dir geht gleich ein Licht auf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Fahrenheit : Real;
begin
  Fahrenheit := CelsiusinFahrenheit( StrtoFloat(Edit1.text ));
  Label1.caption := FloattoStrF( Fahrenheit, ffNumber, 3, 1 );
end;
Habs nicht compiliert, aber das auch nicht wichtig, es ist der Sinn der da hintersteckt (sollte aber zu compilieren sein :mrgreen: ).

Zombi 15. Mär 2003 20:04

Danke erstmal @ Christian Seehase für die Funktionen !

@ Touchdown also irgendwie werde ich aus deinem noch weniger schlau als aus dem aus meiner Schule obwohl er dem ähnelt.

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
begin
  Result :=StrToFloat(StrToInt(Edit1.Text)*9/5+32);

end;
hab ich jetzt mal ausprobiert doch das funzt nich :(
[Error] Unit1.pas(57): There is no overloaded version of 'StrToFloat' that can be called with these arguments

Bekomme ich als Fehlermeldung ob ich jetzt Result oder Edit2.Text nehme und drehe ich StrToFloat um sagt er mir irgendwas mit Real and String.
Könnte mir vielleicht einer mal einen funzenden QT geben mit Result ? den würde ich dann mal ausprobieren. Aber mit function weil wenn ich das mache mit Edit2.Text und nicht Result sagt er mir die function währe dann unnötig.

cya
THX für eure Hilfe ! Bin halt noch nen Blutiger Noob und muss noch viel lernen :D
mfg Zombi :firejump:

Touchdown 15. Mär 2003 21:34

Meine Signatur wäre so ein Beispiel :coder:

Was du in der Schule lernst ist vielleicht nicht das gelbe vom Ei. Schau dir an was ich geschrieben hab, ist recht einfach zu verstehen denke ich.

Was erwartetst du von einer Funktion FahrenheitinCelsius?

Ich erwarte nur ein Ergebnis!

Zombi 15. Mär 2003 22:11

Yo ich erwarte im Endeffekt natürlich auch nur ein Ergebnis aber ich will auch verstehen was ich mache. Deswegen frage ich ja auch (so blöd) :D

Wenn ich das verstehe dann is ja auch logisch das ich mir das besser merken kann.

Das mit der Schule da haste recht ich bin zwar auf einem Berufskolleg in Münster für Telekommikations und Informationstechnik aber der Lehrer is echt manchmal wirsch der tut so als würden wir das alles können :(

cya

mfg Zombi :firejump:

Christian Seehase 16. Mär 2003 02:03

Moin Zombi,

lass' mal bei Deiner Funktion das StrToFloat weg (und natürlich auch die zugehörige schliessende Klammer)

Mit StrToInt wird ja der Wert des Editfeldes in eine Ganzzahl verwandelt, und dann gleich weiter in eine Gleitkommazahl.
Das Ergebnis ist also schon eine Gleitkommazahl, so dass StrToFloat nicht gehen kann, da ja kein String für die Funktion zur Verfügung steht.

Es wäre übrigens sicherer StrToIntDef zu verwenden, denn dann kannst Du, für den Fall, dass im Editfeld keine Zahl steht einen Defaultwert annehmen. Ansonsten würde im Fehlerfalle eine Exception ausgelöst werden.

Zombi 16. Mär 2003 12:57

Tach!

Also das mit der Fehlerhaften Eingabe regel ich anders ich hab mir ne Fehlermeldung gebastelt und hab ihm dann gesagt bei Fehlerhafter Eingabe soll er dann halt die Fehlermeldung zeigen. Das hab ich mit.
Delphi-Quellcode:
Try
blabla
On EconvertError Do
blabla
Doch das mit result klappt immer noch nich :(
Ich kann machen was ich will der sagt mir immer wieder Begin expected but End found.. warum zum Hacker will der nen begin ham is der blöd ? ich will das doch einfach nur ausrechnen der QT sieht dann so aus :
Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  result:=StrToInt(Edit1.Text)*9/5+32;
end;
THX
cya

MfG Zombi :firejump:

Touchdown 16. Mär 2003 13:23

Schau dir unbedingt die Hilfe zu Funktionen, Try-Blöcken und Übergabeparametern an. Wenn alles so einfach wäre, könnte es ja jeder :mrgreen:

Delphi-Quellcode:
try
 ...
except // oder auch finally
  on xxx do
end;
Die Sache mit dem StrtoInt hat einen großen Nachteil, es wären nur Integerwerte zur Berechnung möglich.

Zombi 16. Mär 2003 14:35

Tach.

Mit dem Try und Except Block hab ich ja nich wirklich schwierigkeiten ich wollte nur mal posten wie ich das mache :mrgreen:

Ich habe nur Probz mit der Result Funktion, deswegen währe ich schon sehr dankbar wenn mir jemand eine funzende Funktion mit dem Fahrenheit quatsch posten würde. Ich würde sie mir dann angucken, draus lernen, nutzen :dancer:

cya
THX

MfG
Zombi :firejump:

Touchdown 16. Mär 2003 14:46

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  result := Parameter * 9 / 5 + 32;
end;
So schwer war es doch nicht! Hättest mit ein bißchen nachdenken auch drauf kommen können und so viel mehr daraus gelernt!

Zombi 16. Mär 2003 15:34

Tach !

Sorry aber genau das hab ich auch ausprobiert und mein Rechner hat nix anderes zu tun als mir ständig Fehlermeldungen zu geben :evil: :evil: . entweder er meint
Delphi-Quellcode:
Begin expected but end found
oder ein ganz unbekannte Fehlermeldung
Delphi-Quellcode:
[Warning] Celsius.pas(51): Return value of function 'CelsiusinFahrenheit' might be undefined
:?:
Is aber von wegen undefined ich habe den QT genau wie du ihn beschrieben hast *grr*

Voll der Abfall aber ich werde das jetzt ersteinmal so lange testen bis es funzt...
Das coolste noch is wenn ich einfach 2 Labels und 2 Buttons mache und nicht mein fertiges Programm wo ich einfach immer nur die Formel ändere, dann meint er wenn ich die Funktion bei dem einen Button eingestellt habe das ihm wenn ich Button 2 einstelle eine implementation fehlt.. naja ich hab ja mein fertiges PRogramm und ich teste das jetzt solange bis es funzt!

THX
cya

MfG
Zombi :firejump:

Daniel B 16. Mär 2003 15:38

Zitat:

Zitat von Zombi
Sorry aber genau das hab ich auch ausprobiert und mein Rechner hat nix anderes zu tun als mir ständig Fehlermeldungen zu geben :evil: :evil: . entweder er meint
Delphi-Quellcode:
Begin expected but end found

Warscheinlich ein ; vergessen
Zitat:

oder ein ganz unbekannte Fehlermeldung
Delphi-Quellcode:
[Warning] Celsius.pas(51): Return value of function 'CelsiusinFahrenheit' might be undefined
:?:
Is aber von wegen undefined ich habe den QT genau wie du ihn beschrieben hast *grr*
Nicht unbekannt, sondern intelliegenter Compiler.

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  Result := 0;
  result := Parameter * 9 / 5 + 32;
end;
Er sagt ja, Ergebniss könnte undefiniert sein, oder ist es. Man muss in jeder Funktion Result erstmal auf ein Standardwert setzen.


Grüsse, Daniel :hi:

Touchdown 16. Mär 2003 16:26

Hallo Daniel

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  result := Parameter * 9 / 5 + 32;
end;
ist so niemals undefiniert, habs eben getestet. Sicher kann man bei komplexen Funktionen sofort ein Result definieren, hier ist es nicht nötig da immer definiert.


Hier sieht es natürlich anders aus:
Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  if parameter > -274 then
    result := Parameter * 9 / 5 + 32;
end;
PS: Es gibt eine fertige CelsiustoFahrenheit :D

Zombi 17. Mär 2003 16:05

Hi!

Danke für eure Hilfe doch sehr viel weiter bin ich leider immer noch nich :( ich habe alles ausprobiert was ihr geschrieben habt und auch sehr viel selber probiert doch Delphi hat so dermaßen viele Fehlermeldungen das gibts nich. Damals als ich in der Schule Pascal gelernt hab war das alles easyer soweit wie ich das gelernt habe waren die Fehlermeldungen wie ich finde doch leichter zu verstehen. Vor allem gabs nur eine Möglichkeit nicht so wie in meinen allerersten Beitrag wo das aus der Schule und das was ich mache theoretisch das gleiche bewirkt aber doch anders is. Hmm entweder ich erfahre jetzt warum und wie ich bei meiner Lösung ein FormatFloat mache oder ich musses lassen das mit dem result klappt ja doch nich :(

trotzdem THX

cya

MfG Zombi :firejump:

Luckie 17. Mär 2003 16:21

Delphi-Quellcode:
function CelsiusinFahrenheit (Parameter : Real) : Real;
Begin
  result := Parameter * 9 / 5 + 32;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := FormatFloat('#.##', Celsiusinfahrenheit(StrToFloat(Edit1.Text)));
end;

Touchdown 17. Mär 2003 18:00

Geeignete Lösungen haste hier nun schon viele, vermutlich hast du die Funktionen nicht richtig deklariert oder es fehlt irgendwo ein 'end' oder ';'.

Kannst uns dein Meisterwerk ja mal zeigen, dann finden wir den Fehler sicher!

Zombi 17. Mär 2003 20:56

:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:

Ich dummer Trottel !! Ich habe die Funktion in die Procedure gepackt Boah bin ich dämlich ARGH ! Danke Lucky jetzt funzts !! ARGH verdammt :oops: :oops:

:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:

Vielen vielen dank mein Problem is dann nu jetzt gelöst!

THX!!!!!

cya

MfG Zombi :firejump:

Daniel B 17. Mär 2003 21:15

Zitat:

Zitat von Zombi
Ich dummer Trottel !! Ich habe die Funktion in die Procedure gepackt Boah bin ich dämlich ARGH !

Und wo ist das Problem?
Zwischen procedure und begin kannst Du Funktionen und Prozeduren schrieben wie Du willst.

Grüsse, Daniel :hi:

Zombi 17. Mär 2003 21:36

häääää ???? :wiejetzt:

Ich hab das doch genauso die ganze Zeit gemacht nur die Funktion steht JETZT ausserhalb einer Funktion ! So jetzt funzt es aber vorher als ich das in die Prozedur geschrieben hab genau so da bekam ich 1000 von Fehlern !

mfg

cya
Zombi :firejump:

Zombi 17. Mär 2003 21:47

und noch mal schnell was anderes...

Es funzt ja jetzt perfekt das komische jetzt is nur das wenn ich das ausrechne ein absolut gerades Ergebnis bekomme aber durch FormatFloat wollte ich ja eigentlich erreichen das der au 2 Stellen rundet :?::!: :D

THX

cya

mfg Zombi :firejump:

Luckie 17. Mär 2003 21:54

Mußt mal etwas probieren, ich habe auch bei ein paar Versuchen nur Zahlen ohne Nachkommastellen bekommen.

Zombi 18. Mär 2003 13:42

:wiejetzt: ich dachte FormatFloat währe dafür ?! das hat zumindest unser Lehrer uns gesagt aber naja das werde ich wohl sauber rausfinden können :)

THX

cya

MfG

Zombi:firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.

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