Entwickler-Ecke
Sonstiges (Delphi) - Prüfen ob Zahl im Wertebereich zwischen 1001 und 1005 liegt
Danny87 - Sa 06.10.07 16:29
Titel: Prüfen ob Zahl im Wertebereich zwischen 1001 und 1005 liegt
Hey Leute,
ich bekam grad ne Frage wie man prüfen kann, ob eine Zahl in einem Edit-Feld in einem gewissen Wertebereich (1001 - 1005) liegt.
Ich wollte natürlich sofort mit meinem schier endlosen Wissen angeben (hatte sowas ja schließlich früher schon mal gemacht) und musste feststellen, dass mein Wissen scheinbar doch endlich ist :(
Ich hab ihm geschrieben, er solle mal
Delphi-Quelltext
1:
| if zahl in [1001..1005] then ... |
probieren.
Das funktioniert so allerdings nicht.
Ich würde ja die Suche bemühen, aber die hat mir alles geliefert außer das was ich suche *g*
Wie ging das noch gleich?
Bitte helft mir dabei mein Wissen wieder endlos werden zu lassen ;)
Grüße
Daniel
Gausi - Sa 06.10.07 16:35
Delphi-Quelltext
1:
| if (zahl >= 1001) and (zahl <= 1005) then |
Oder suchst du was komplizierteres? :gruebel:
Danny87 - Sa 06.10.07 16:38
OH MEIN GOTT!! :shock: :lol: :oops: :autsch:
Peinlich, peinlich....hab ich mal wieder zu verwirrend gedacht^^
Danke xD
Kroko - Sa 06.10.07 16:47
Gausi hat folgendes geschrieben: |
Delphi-Quelltext 1:
| if (zahl >= 1001) and (zahl <= 1005) then |
Oder suchst du was komplizierteres? :gruebel: |
Vielleicht so,
Delphi-Quelltext
1:
| if (Zahl-1000) in [1,2,3,4,5] then |
, :D
Lannes - Sa 06.10.07 17:13
Hallo,
dann so:
Delphi-Quelltext
1: 2:
| if (Zahl-1000) in [1..5] then |
oder so:
Delphi-Quelltext
1: 2: 3:
| case Zahl of 1000..1005 : ShowMessage('im Wertebereich'); end; |
:D
GericasS - Sa 06.10.07 17:15
Hey,
ich danke vielmals dafür das es hier besprochen wurde !
EDIT :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure TForm1.Button1Click(Sender: TObject); begin if (zahl >= 1001) and (zahl <= 1005) then begin if edit1.text = '1001' then begin panel1.Caption := 'Monitor Fujitsu-Siemens' ; panel2.Caption := '199,99€' ; end; if edit1.Text = '1002' then begin panel1.caption := 'Festplatte 250 GB' ; panel2.caption := '89,50€' ; end; if edit1.Text = '1003' then begin panel1.caption := 'Motherboard mit CPU' ; panel2.caption := '155,00€' ; end; if edit1.Text = '1004' then begin panel1.caption := 'DVD-Combolaufwerk' ; panel2.Caption := '36,90€' ; end; if edit1.Text = '1005' then begin panel1.caption := 'PC Tower-Gehäuse' ; panel2.caption := '44,80€' ; end; end;
end. |
so wirklich funktionieren tut es noch nicht, wie soll ich die Meldung einbauen wenn die Zahl nicht vorhanden ist ?
jasocul - Sa 06.10.07 18:05
Ausgehend davon, dass Zahl ein Integer ist und den gleichen Wert hat, wie edit1.text:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button1Click(Sender: TObject); begin if (zahl >= 1001) and (zahl <= 1005) then begin case zahl of 1001 : begin panel1.Caption := 'Monitor Fujitsu-Siemens' ; panel2.Caption := '199,99€' ; end; 1002 : begin panel1.caption := 'Festplatte 250 GB' ; panel2.caption := '89,50€' ; end; 1003 : begin panel1.caption := 'Motherboard mit CPU' ; panel2.caption := '155,00€' ; end; 1004 : begin panel1.caption := 'DVD-Combolaufwerk' ; panel2.Caption := '36,90€' ; end; 1005 : begin panel1.caption := 'PC Tower-Gehäuse' ; panel2.caption := '44,80€' ; end else ShowMessage('Eigentlich ein unmöglicher Fall'); end; end else begin ShowMessage('Falsche Eingabe'); end; end. |
An Deinen Einrückungen solltest Du arbeiten. :wink:
GericasS - Sa 06.10.07 23:39
Okay,
danke für dem Source werde mich morgen mal melden !
Danny87 - So 07.10.07 04:20
GericasS hat folgendes geschrieben: |
Okay,
danke für dem Source werde mich morgen mal melden ! |
Huch^^
da is ja der Fragesteller xD
GericasS - Di 09.10.07 08:07
Hey,
ich hab da doch noch eine Frage, hab das ganze jetzt mal weiter geführt, nur wie geb ich ihm zu verstehen das case ** of für das Edit Feld bestimmt ist bzw. vom edit Feld ausgeht, da "zahl"
edit1.text sein soll !
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| procedure TForm1.Button1Click(Sender: TObject); begin if (zahl >= 1001) and (zahl <= 1005) then begin case zahl of 1001 : begin panel1.Caption := 'Monitor Fujitsu-Siemens' ; panel2.Caption := '199,99€' ; end; 1002 : begin panel1.caption := 'Festplatte 250 GB' ; panel2.caption := '89,50€' ; end; 1003 : begin panel1.caption := 'Motherboard mit CPU' ; panel2.caption := '155,00€' ; end; 1004 : begin panel1.caption := 'DVD-Combolaufwerk' ; panel2.Caption := '36,90€' ; end; 1005 : begin panel1.caption := 'PC Tower-Gehäuse' ; panel2.caption := '44,80€' ; end else ShowMessage('Eigentlich ein unmöglicher Fall'); end; end else begin ShowMessage('Falsche Eingabe'); end; end; end. |
TProgger - Di 09.10.07 08:14
ganz am Anfang:
Zahl := StrToIntDef(Edit1.Text); ?
GericasS - Di 09.10.07 08:20
TProgger hat folgendes geschrieben: |
ganz am Anfang:
Zahl := StrToIntDef(Edit1.Text); ? |
oh peinlich :oops:
GericasS - Di 09.10.07 08:40
Eine weitere Frage stellt sich dann noch für mich , wofür sind diese Zeilen ?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| end; 1005 : begin panel1.caption := 'PC Tower-Gehäuse' ; panel2.caption := '44,80€' ; end else ShowMessage('Eigentlich ein unmöglicher Fall'); end; end else begin |
wenn das hier unten nocheinmal erscheint !
Delphi-Quelltext
1: 2: 3: 4: 5:
| else begin ShowMessage('Falsche Eingabe'); end; end; |
Grüße
GericasS
TProgger - Di 09.10.07 08:43
Edit: Die erste (im case) ShowMessage ist überflüssig, würd ich sagen...
GericasS - Di 09.10.07 08:47
TProgger hat folgendes geschrieben: |
| Edit: Die erste (im case) ShowMessage ist überflüssig, würd ich sagen... |
das dachte ich mir nämlich auch, bewirken tun sie im Endeffekt doch beide das gleiche oder ?
Grüße
TProgger - Di 09.10.07 08:55
die im case würde ja nie aufgerufen, die zweite erscheint, wenn die Zahl nicht im Bereich ist.
GericasS - Di 09.10.07 09:01
TProgger hat folgendes geschrieben: |
| die im case würde ja nie aufgerufen, die zweite erscheint, wenn die Zahl nicht im Bereich ist. |
ja stimmt, dann mach ich die mal raus !
jasocul - Di 09.10.07 09:07
Ich habe mich schon gefragt, wann Dir das auffällt. :mrgreen:
Deswegen hatte ich ja schon geschrieben, dass das ein unmöglicher Fall ist.
Du kannst auch einfach diesen Teil rausschmeissen:
Delphi-Quelltext
1:
| if (zahl >= 1001) and (zahl <= 1005) then |
inklusive dem passenden
else. Das hat den Vorteil, dass Du bei einem veränderten Zahlen-Bereich nur das
Case anpassen musst. Dafür muss natürlich das
else für das
case erhalten bleiben.
GericasS - Di 09.10.07 09:10
jasocul hat folgendes geschrieben: |
Ich habe mich schon gefragt, wann Dir das auffällt. :mrgreen:
Deswegen hatte ich ja schon geschrieben, dass das ein unmöglicher Fall ist.
|
Hey,
danke das du es noch auflöst :lol: aber ich hatte erst heute morgen so wirlich Zeit mir den Source mal anzuschauen.
| Zitat: |
| inklusive dem passenden else. Das hat den Vorteil, dass Du bei einem veränderten Zahlen-Bereich nur das Case anpassen musst. Dafür muss natürlich das else für das case erhalten bleiben. |
Danke :D
Grüße
Lannes - Di 09.10.07 09:13
Hallo,
und damit es übersichtlich wird noch die Panelbeschriftung in eine Prozedur auslagern:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.SetPanelCaption(sArtikel,sPreis: String); begin Panel1.Caption := sArtikel; Panel2.Caption := sPreis; end;
procedure TForm1.Button1Click(Sender: TObject); begin case zahl of 1001 : SetPanelCaption('Monitor Fujitsu-Siemens','199,99€'); 1002 : SetPanelCaption('Festplatte 250 GB','89,50€'); else ShowMessage('Falsche Eingabe'); end; end; |
GericasS - Di 09.10.07 09:32
Hey,
hat das noch einen tieferen Sinn außer, das es übersichtlicher wird ?
Also mir kommt es vor als wäre dann das hinzufügen von weiteren Artikeln einfach zu schreiben. Anyway danke dir für den Tipp werds gleich versuchen !
Grüße
Kroko - Di 09.10.07 10:59
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TframeLauf.TestClick(Sender: TObject); const coArtikel: array[1001..1002] of array[0..1] of String = (('Monitor Fujitsu-Siemens','199,99€'), ('Festplatte 250 GB','89,50€') ); var Zahl: Integer; begin Zahl := 1001; if (Zahl>=Low(coArtikel)) and (Zahl<=High(coArtikel)) then begin Panel1.Caption := coArtikel[Zahl,0]; Panel2.Caption := coArtikel[Zahl,1]; end else ShowMessage('Falsche Eingabe'); end; |
so spart man noch eine Procedure und das Erweitern wird noch einfacher!
Gausi - Di 09.10.07 11:04
Das ist mal wieder so ein Optimierungs-Thread, was? Eine ganz triviale Frage, und zwei Seiten Diskussion. :lol:
Los jetzt - ich will noch ne Assembler-Variante sehen!
GericasS - Di 09.10.07 11:39
Oh,
ich danke ja schon recht herzlich für die ganzen Optimierungen aber ich kann das doch alles noch gar nicht anwenden xD ^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!