![]() |
Delphi-Version: 5
Delphi Rechnung mit Label
Hallo,
ich habe folgendes Problem ich muss in einer Formel durch ein Label teilen Delphi zeigt mir dabei aber immer nur an das ich den falschen Typ zum Rechnen gewählt habe. Die anderen Zahlen sind eingaben aus dem Edit Feld. Da ich änfänger bin mit delphi und schon vieles ausprobiert habe weiß ich nun nicht mehr weiter ich hoffe ihr könnt mir helfen.
Delphi-Quellcode:
speziell geht es um diese Rechnung
unit Unit1;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Button2: TButton; Label4: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label7Click(Sender: TObject); procedure Label11Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Zahl1, Zahl2,Zahl3,Zahl4: single; implementation {$R *.DFM} procedure TForm1.Edit1Change(Sender: TObject); begin Label1.caption := Inputbox('Eigabe des Kredites','Wie viel € ?',''); end; procedure TForm1.Edit2Change(Sender: TObject); begin label2.caption := Inputbox('Eigabe der Wunschrate','Wie hoch ist die monatliche Wunschrate?',''); end; procedure TForm1.Edit3Change(Sender: TObject); begin Label3.caption := Inputbox('Eigabe des Zinssatzes','Wie hoch ist der Zinssatz?',''); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.Label5Click(Sender: TObject); begin if (RadioButton1.Checked) then begin Zahl1:= StrToFloat(Edit1.text); Zahl2:=100; Label5.caption := FloatToStr((Zahl1/Zahl2)/2) end else Label5.caption :='0'; end; procedure TForm1.Label7Click(Sender: TObject); begin Zahl1 := StrToFloat(Edit1.text); Zahl2 := 100; Label7.caption := FloatToStr(Zahl1 / Zahl2) end; procedure TForm1.Label11Click(Sender: TObject); begin Zahl1:=StrToFloat(Edit1.text); Zahl2:=StrToFloat (Edit2.text); Zahl3:=StrToFloat (Edit3.text); Zahl4:= (Label7); Label11.Caption:= FloatToStr ((Zahl1)+(Zahl4)) div ((Zahl2) - (Zahl3)); end; end.
Delphi-Quellcode:
procedure TForm1.Label11Click(Sender: TObject);
begin Zahl1:=StrToFloat(Edit1.text); Zahl2:=StrToFloat (Edit2.text); Zahl3:=StrToFloat (Edit3.text); Zahl4:= (Label7); Label11.Caption:= FloatToStr ((Zahl1)+(Zahl4)) div ((Zahl2) - (Zahl3)); end; |
AW: Delphi Rechnung mit Label
Delphi-Quellcode:
meinst du bestimmt nicht ernst :-)
Zahl4:= (Label7);
Du hast davor die drei mal doch auch erkannt, dass man man in deine "ZahlX"-Variablen vom Typ Single (also Kommazahl) nicht einfach ein Label reinstecken kann. Die drei mal davor nimmst du den Text des Labels und konvertierst diesen String in eine Fließkommazahl. Warum diesmal nicht? |
AW: Delphi Rechnung mit Label
Ok wenn ich dich richtig verstanden habe meinst du das ich das so machen sollte
Delphi-Quellcode:
. Wenn du das meinst dann habe ich das bereits probiert da zeigt delphi mir aber an das das ein falscher typ ist :(
Zahl4:= StrToFloat (Label7);
|
AW: Delphi Rechnung mit Label
Delphi-Quellcode:
bezeichnet aber die Labelkomponente selbst. Wie willst du aus der eine Zahl machen?
Label7
Umwandeln willst du ja den Text den das Label anzeigt und wie du den erreichst, siehst du in deiner Funktion
Delphi-Quellcode:
.
Label5Click
Gruß Luggi |
AW: Delphi Rechnung mit Label
ok Aber bei label 5 habe ich dem Label eine Zahl zugewiesen. bei dem anderen Label wird eine Zahl ausgerechnet und das verstehe ich irgendwie nicht wie das gehen soll. Tut mir leid ich bin noch anfänger und noch nicht so mit Delphi vertraut :-D
|
AW: Delphi Rechnung mit Label
Lies nochmal genau: Wem hast du bei Label5 eine Zahl zugewiesen und was liest du jetzt bei Label7 aus?
|
AW: Delphi Rechnung mit Label
Zudem ist es eine schlechte Idee ein Label als Speicher für Zahlen zu verwenden
|
AW: Delphi Rechnung mit Label
Ja dem Label habe ich mit
Delphi-Quellcode:
den Wert 0 zugewiesen das habe ich soweit verstanden. Aber was ich nicht genau weiß ist wie man das macht wenn man in den label eine Zahl ausrechnet,
Label5.caption :='0'
|
AW: Delphi Rechnung mit Label
Und nochmal: Was hast du wem zugewiesen? Wie unterscheidet sich deine Verwendung von Label5 und Label7. Lies bitte genau, was du getan hast.
Was bedeutet denn der Ausdruck
Delphi-Quellcode:
?
Label5.Caption
Luggi |
AW: Delphi Rechnung mit Label
Mit dem Ausdruck
Delphi-Quellcode:
weise ich dem Label eine zahl zu.
Label5.Caption
|
AW: Delphi Rechnung mit Label
Oder noch allgemeiner:
Zitat:
Zitat:
Zitat:
Ausgehend von deinen vorherigen Post vermute ich, dass du
Delphi-Quellcode:
suchst.
Zahl4:= StrToFloat(Label7.caption);
Aber nimm dir den Rat von mkinzler zu Herzen: Warum speicherst du
Delphi-Quellcode:
nicht einfach in einer Variable?
Zahl1 / Zahl2
|
AW: Delphi Rechnung mit Label
Zitat:
Luggi |
AW: Delphi Rechnung mit Label
Zitat:
Nein, du weist nicht dem Label eine Zahl zu, sondern der Caption des Labels eine in eine Zeichenkette umgewandelte Zahl. Was ist denn der Unteschied zwischen dem Label und der Caption des Labels? |
AW: Delphi Rechnung mit Label
Ich glaube das Label ist das anzeigefeld und die Caption der Wert den das label anzeigt. Bin mir aber nicht sicher ich frag mal meine Lehrerin. Trotzdem danke.
|
AW: Delphi Rechnung mit Label
Zitat:
Und jetzt schau dir nochmal an, was du geschrieben hast:
Delphi-Quellcode:
StrToFloat macht aus einer Zeichenkette eine Zahl. Nachdem Label7 ein Anzeigefeld ist, versuchst du hier aus einem Anzeigefeld (also aus dem ganzen Feld, das ja auch z.B. Schriftart und Größe umfasst und nicht nur den Text den es darstellt) eine Zahl zu machen. Kann das funktionieren?
StrToFloat(Label7);
Die Zahl willst du ja aus dem Wert den das Label anzeigt machen - also wie muss der Befehlt lauten? Luggi |
AW: Delphi Rechnung mit Label
Ich würde dann mal sagen so
Delphi-Quellcode:
StrToFloat(Label7.caption);
|
AW: Delphi Rechnung mit Label
Zitat:
Beim Schreiben des Codes müssen wir also folgendermassen vorgehen:
In Pascal wird die Trennung zwischen Objekt und Attribut/Methode durch den Punkt festgelegt. D.h. also Label7.Caption:= 'Mein Eintrag';
|
AW: Delphi Rechnung mit Label
Zitat:
Bernerbaer hat die Sache ja bereits ein bischen erklärt. Jetzt alles klar? Luggi |
AW: Delphi Rechnung mit Label
Ja danke euch jetzt ist es mir klarer geworden wie Delphi funktioniert das wird mir weiterhelfen. Dankeschön :)
|
AW: Delphi Rechnung mit Label
Zitat:
Wenn du nun also versuchst, einer Label-Variablen (z.B. MeinLabel) eine Zahl zuzuweisen, funktioniert das nicht, weil eine Zahl z.B. vom Typ Integer ist und dieser Typ sich vom Variablentyp des Labels unterscheidet. Auch wenn du versuchst, der Caption des Labels, die ja vom Typ String ist, eine Zahl zuzuweisen, erhältst du eine Fehlermeldung, weil sich die Typen unterscheiden. Dem Label-Property Left oder Top z.B. kannst du einen Integerwert zuweisen, denn diese Properties sind vom Typ Integer. |
AW: Delphi Rechnung mit Label
Wenn grundlegendste Sprachbestandteile gerade erst verstanden werden, gleich mit Zeigern und Sichtbarkeitsmodifikatoren zu kommen finde ich ehrlich gesagt ein bisschen hart, aber das sieht wohl jeder anders.
|
Off Topic
Zitat:
|
AW: Delphi Rechnung mit Label
Zitat:
|
AW: Off Topic
Zitat:
Gruß K-H |
AW: Off Topic
Zitat:
Zitat:
Zitat:
Aufgrund der unnötigen und unqualifizierten Angriffe einiger User hier werde ich diesen Thread weder weiterverfolgen noch weiter kommentieren. Ich laß mir doch von euch nicht vorschreiben, wie detailliert ich posten darf! Also bitte! Man kann's auch übertreiben ... |
AW: Delphi Rechnung mit Label
Zitat:
|
AW: Delphi Rechnung mit Label
Markus (mkinzler) hat es ja bereits angedeutet: Du solltest es vermeiden, Anzeigekomponenten als Datenspeicher zu missbrauchen. Da Du ja etwas berechnen willst/musst, brauchst Du auch Variablen bzw. Felder von entsprechenden Zahlentypen (z.B. Integer für ganze Zahlen oder double für Gleitkommazahlen). Die Komponenten dienen dann als Schnittstelle zwischen Benutzer und diesen Variablen/Feldern. In größeren Projekten würde ich dazu raten, den ganzen "Berechnungsskram" in eine eigene Klasse auszulagern, aber das ist in diesem Fall wohl etwas oversized, und außerdem ist der "gemeine Delphi-Anfänger" (das ist nicht wertend gemeint) damit aller Wahrscheinlichkeit hoffnungslos überfordert. Ein einfaches Beispiel: ein Formular mit 2 Edits, einem Button und einem Label. In die Edits sollen jeweils Zahlen eingegeben werden, auf Button-Click soll die Summe dieser Zahlen im Label ausgegeben werden. Achtung: der folgende Code ist im Editor getippt und daher ungetestet. Außerdem habe ich auf jegliche Fehlerbehandlung verzichtet:
Delphi-Quellcode:
Dass da die Fehlerbehandlung fehlt, wirst Du merken, wenn Du die Edits leer lässt oder etwas anderes als Ziffern eingibst und dann auf den Button klickst. Ich hoffe, es hilft Dir trotzdem etwas weiter.
type
TRechenForm = class(TForm) (* Edits für die Eingabe *) edtZahl1: TEdit; edtZahl2: TEdit; (* Button, der die Berechnung anstoßen soll *) btnRechne: TButton; (* Ausgabelabel *) lblErgebnis: TLabel; (* Ereignis, das bei Click des Buttons ausgelöst werden soll *) procedure btnRechneClick(Sender: TObject); private (* private Felder, mit denen gerechnet werden soll *) FZahl1: integer; FZahl2: integer; FErgebnis: integer; (* Deklaration der Rechenroutine *) procedure Rechne; end; ... procedure TRechenForm.Rechne; begin (* Berechnung *) Ergebnis := FZahl1 + FZahl2; end; procedure TRechenForm.btnRechneClick(Sender: TObject); begin (* Umwandlung der Eingaben in Zahlen und Zuweisung an die Felder *) FZahl1 := StrToInt(edtZahl1.Text); FZahl2 := StrToInt(edtZahl2.Text); (* Berechnung aufrufen *) Rechne; (* Ausgabe des Ergebnisses, dabei Umwandlung von Zahl -> String *) lblErgebnis.Caption := IntToStr(FErgebnis); end; |
AW: Delphi Rechnung mit Label
Zitat:
|
AW: Delphi Rechnung mit Label
Zitat:
Gruß K-H |
AW: Delphi Rechnung mit Label
Richtig, aber das kann nur die Klasse, zu der die Felder gehören. Es gibt zwar delphi-spezifische Ausnahmen, aber wir wollen das hier noch nicht näher vertiefen.
|
AW: Delphi Rechnung mit Label
Aha Ok Dankeschön für eure Erklärungen und Hilfe, das hat mir sehr viel weiter geholfen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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