Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi if then (https://www.delphipraxis.net/47354-if-then.html)

coolchatter 9. Jun 2005 20:29


if then
 
Hi,

ich habe ein problem. Und zwar:

Delphi-Quellcode:
if (Edit1.Text > '0') and (Edit1.Text <= '4') then Edit2.Text := '<= 4';
if (Edit1.Text > '4') and (Edit1.Text <= '9') then Edit2.Text := '<= 9';
if (Edit1.Text > '9') and (Edit1.Text <= '13') then Edit2.Text := '<= 13';
dann müsste, wenn ich in Edit1 z.B. 10 eingebe in Edit2 <= 13 angezeigt werden. Das passiert aber nicht. Sondern es steht <= 4 da.

Ich suche schon seit Tagen den Fehler, finde ihn aber nicht.

Dax 9. Jun 2005 20:30

Re: if then
 
Du musst deine Strings in den Edit erst mit Delphi-Referenz durchsuchenStrToInt umwandeln, bevor du sie wirklich vergleichen kannst ;)

s.h.a.r.k 9. Jun 2005 20:36

Re: if then
 
Nein... Der Code passt schon - du hast aber eine Null vergessen! Und zwar wenn du das so machst klappt es:
Delphi-Quellcode:
if (Edit1.Text > '0') and (Edit1.Text <= '4') then Edit2.Text := '<= 4';
if (Edit1.Text > '4') and (Edit1.Text <= '9') then Edit2.Text := '<= 9';
if (Edit1.Text > '09') and (Edit1.Text <= '13') then Edit2.Text := '<= 13';

coolchatter 9. Jun 2005 20:38

Re: if then
 
Danke

Wegen einer Null :-(

hab ich was dazugelernt, danke.

s.h.a.r.k 9. Jun 2005 20:40

Re: if then
 
mit meinem Code klappt das auch! habs grad mal getestet! bei 10,9 spuckt er "<= 13" aus

[EDIT] Hab ich auch nicht gewusst - einfach mal ausprobiert :mrgreen: Die dumm ham halt s glück *g*[/EDIT]

nailor 9. Jun 2005 20:42

Re: if then
 
wandel es wie Dax gesagt hat in numerische variablen um. also mit strtoint oder strtofloat.

Dax 9. Jun 2005 20:44

Re: if then
 
Ich hab den Code auch ausprobiert.

Ergebnisse:
Code:
45: <= 9
1: <= 13
14: <= 4
54: <= 9
Wenn das mal kein Nichtfunktionalitätsbeweis ist :roll:

[edit]*reinlins* Roter Kasten? putt putt putt, komm her Roter Kasten...

malo 9. Jun 2005 20:49

Re: if then
 
Zitat:

Zitat von Dax
Ich hab den Code auch ausprobiert.

Ergebnisse:
Code:
45: <= 9
1: <= 13
14: <= 4
54: <= 9
Wenn das mal kein Nichtfunktionalitätsbeweis ist :roll:

Der Grund ist einfach der, dass Bei Stringvergleichen immer Zeichen für Zeichen überprüft wird, ob der ASCII-Wert kleiner, gleich oder größer ist. Es ist eine ähnliche Frage, wie die Frage "Was ist mir: eins komma elf oder eins komma zwei" (in Worten ausgedrückt). 1,11 ist natürlich weniger als 1,2. Wer aber nicht nachdenkt, sagt, 1,2 ist weniger ;)

coolchatter 9. Jun 2005 20:56

Re: if then
 
Das ging jetzt, aber ich hab ein neues Problem :-) und zwar:

Delphi-Quellcode:
if (Edit7.Text > '0')      and (Edit7.Text <= '0900,42') then Label9.Caption := '<= 900,42';
if (Edit7.Text > '0900,42') and (Edit7.Text <= '2099,33') then Label9.Caption := '<= 2099,33';
if (Edit7.Text > '2099,33') and (Edit7.Text <= '4266,00') then Label9.Caption := '<= 4266,00';
if (Edit7.Text > '4266,00')                               then Label9.Caption := 'größer';
Ich kann z.B. keine 4 eingeben und bekomme <= 900,42 heraus.

Dax 9. Jun 2005 20:59

Re: if then
 
Meine Güte, hör mit den Stringvergleichen auf! :twisted:

Wandel dir das Gesocks mit StrToFloat um und Vergleiche das. Das funktioniert wenigstens.

Sharky 9. Jun 2005 21:04

Re: if then
 
Hai coolchatter,

ausser das man nicht die Strings vergleichen sollte brauchst Du die "and-Bedingung" nicht da diese durch die IF-Logik ereicht ist.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  foo : Real;
begin
  try
    foo := StrToFloat(Edit7.text);
    if (foo > 0) then
    begin
     Label9.Caption := '<= 900,42';
    end;
    if (foo > 900.42) then
    begin
      Label9.Caption := '<= 2099,33';
    end;
    if (foo > 2099.33) then
    begin
      Label9.Caption := '<= 4266,00';
    end;
    if (foo > 4266.00) then
    begin
      Label9.Caption := 'größer';
    end;
  except
    ShowMessage('Ungültige Eingabe');
  end;
end;

coolchatter 9. Jun 2005 21:06

Re: if then
 
Danke Sharky für den Code, hat mir weitergeholfen.

nailor 9. Jun 2005 21:10

Re: if then
 
man kann imho mit if ... then ... else die sache sogar noch schöner darstellen.

Sharky 10. Jun 2005 06:25

Re: if then
 
Zitat:

Zitat von nailor
man kann imho mit if ... then ... else die sache sogar noch schöner darstellen.

Wenn es um "Schönheit" geht und sichergestellt ist das es nur 2 Nachkommastelle gibt: ;-)
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  foo : Integer;
begin
  try
    foo := Trunc (StrToFloat(Edit7.text) * 100);
    case foo of
      0..90042 : Label9.Caption := '<= 900,42';
      90043..209933 : Label9.Caption := '<= 2099,33';
      209934..426600 : Label9.Caption := '<= 4266,00';
    else
      Label9.Caption := 'größer';
    end;
  except
    ShowMessage('Ungültige Eingabe');
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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