AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"if größer als" Frage

Ein Thema von sunrise · begonnen am 21. Okt 2008 · letzter Beitrag vom 21. Okt 2008
Antwort Antwort
sunrise

Registriert seit: 20. Jan 2008
15 Beiträge
 
Delphi 6 Enterprise
 
#1

"if größer als" Frage

  Alt 21. Okt 2008, 20:29
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: "if größer als" Frage

  Alt 21. Okt 2008, 20:40
Label.Caption ist ein String und 10 ein Integer. Du kannst verschiedene Typen nicht miteinenader vergleichen
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: "if größer als" Frage

  Alt 21. Okt 2008, 20:41
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:
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
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!

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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#4

Re: "if größer als" Frage

  Alt 21. Okt 2008, 20:41
Zitat von sunrise:
If Label1.caption = 10 then xxx
Das wird so eh nicht gehen: Label1.Caption ist ein string und den kann man nicht so ohne weiteres mit einer Zahl vergleichen. Also entweder

if Label1.Caption = '10then oder

if StrToInt(Label1.Caption) = 10 then
Zitat von sunrise:
aber jamand sagte mir mal das es bei =zahl zu Problemen kommen kann.
Das ist nur bedingt richtig: Man kann ganze Zahlen auf Gleichheit testen, aber bei reellen Zahlen sollte man eine gewisse Ungenauigkeit zulassen.

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
Uwe Raabe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz