![]() |
"if größer als" Frage
Hallo
Hätte da noch eine Frage. Ich möchte mein Program nach einer Art counter steuern. Z.b. wenn LabeL1 eine Zahl über 10 enthält wird eine Prozedur gestartet bzw. ändert sich was. Wenn die Zahl in LabeL1 über 20 ist start: xxx Was wäre nun sinnvoller? Methode 1.) If Label1.caption = 10 then xxx else xxx if Label1.caption = 20 then xxx else oder Methode 2.) if x>10 then ... else ... if x>20 then ... else ... eigentlich würde beides gehen aber jamand sagte mir mal das es bei =zahl zu Problemen kommen kann. Ich würde eure Meinung mal gern hören. sry für die anfänger fragen |
Re: "if größer als" Frage
Label.Caption ist ein String und 10 ein Integer. Du kannst verschiedene Typen nicht miteinenader vergleichen
|
Re: "if größer als" Frage
Es gibt unterschiedliche Datentypen in Delphi, so wie in fast jeder anderen Programmiersprache: Texte, Wahrheitswerte, Ganzzahlen und Kommazahlen. Das Problem des Vergleiches auf Gleichheit betrifft nur Kommazahlen, weil die im Computer nicht notwendigerweise 100% genau dargestellt werden. Warum, ist hier egal.
Denn Du arbeitest eh nur mit ganzen Zahlen, und da kann man auf Gleichheit prüfen. Nur bei unterschiedlichen Datentypen ist das so eine Sache, weil pingelig gesehen der Text '10' (Eins-Null) nichts mit der Zahl 10 zu tun hat. Deswegen kann man die auch nicht vergleichen. Wenn man aber den einen Datentypen in den anderen umwandelt, geht das schon.
Delphi-Quellcode:
Sei mir nicht böse, aber ich glaube, Du solltest Dir ein Buch über die Anfänge mit Delphi besorgen. Oder einen "Crashkurs Delphi" durcharbeiten. Such mal hier oder bei Google, da gibt es etwas!
If Label1.Caption = 10 Then BlaBla; // Klappt nicht und wird vom Compiler schon bemängelt.
If Label1.Caption = IntToStr(10) Then BlaBla; // Geht, weil die Zahl 10 mit Hilfe der Funktion 'IntToStr' in einen Text umgeandelt wird. If StrToInt(Label1.Caption)=10 then BlaBla; // Geht, aber nur wenn Label1.Caption in eine Ganzzahl umgewandelt werden kann Zu Deiner eigentlichen Frage: Trenne Funktion und Darstellung. Ein Zähler ist eine Ganzzahl und wie Du sie darstellst, ist erstmal egal. Du zählst also und vergleichst den Zähler mit 10,20 usw. Das geht problemlos. Damit man auch etwas sieht, stellst Du die Zahl irgendwie dar. Ein TLabel-Objekt eignet sich ganz gut, es könnten aber auch Bildchen sein. Das bleibt Dir überlassen. |
Re: "if größer als" Frage
Zitat:
Delphi-Quellcode:
oder
if Label1.Caption = '10' then
Delphi-Quellcode:
if StrToInt(Label1.Caption) = 10 then
Zitat:
Delphi-Quellcode:
var
i, j: Integer; a, b: Extended; begin ... if i = j then // das geht wunderbar ... if a = b then // das mach Probleme und sollte daher besser etwa so lauten if Abs(a - b) < 0.001 then // wobei für die 0.001 je nach Situation variiert werden kann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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 by Thomas Breitkreuz