Autor Beitrag
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 07:17 
Rein interessenhalber: Muss in dem Edit immer nur der Wert '1' stehen?

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 14:22 
nein, es geht nur darum zu prüfen ob eine zahl im edit steht, da ist mir auch noch aufgefallen, das 1 ja weder kleiner noch größer als ein ist, also wenn eine 1 im edit steht, dann ist ja die bedingung false, also wird alles nach dem then nicht ausgeführt. desshalb nehme ich jetzt einfach kleiner als 10000 da zahlen über 9999 eh quatsch wären.!
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 14:48 
ähm riesenfehler!!!

so wie du prüfst, checkst du nur ob der wert im edit1 <> deinem wert ist.

tipp ich genau diesen wert ein passiert ein fehler!!!

prüf so

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 ...
 //Prüfen ob was eingegeben wurde
 if length(edit1.text) > 0 then
 begin
  //Prüfen, ob Eingabe im Bereich liegt
 end
 else
  //Abruch, da keine Eingabe

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 17.05.06 14:54 
ja, so hast du aber die länge. wie ich das sehe gehts doch drum, ob ne zahl drinsteht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var E1,E2,E3,E4,E5: integer;
begin
 try 
  E1:=strtoint(Edit1.Text);
 except
  E1:=0//ggf. ShowMessage-Meldung
 end;

 try 
  E2:=strtoint(Edit2.Text);
 except
  E2:=0//ggf. ShowMessage-Meldung
 end;

...
if ...
...

end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 15:01 
so hab ich nicht die länge so prüf ich ob etwas im edit steht
was bis dahin drin steht ist gleich!
sobald etwas drin steht kann er da wo Verarbeitung steht prüfen ob es eine Zahl ist!!
am besten mit der Funktion VAL, diese gibt auch gleich zurück welches zeichen nicht korrekt ist also 12a4 gibt die funktion nen fehler aus und sagt das position 3 nicht korrekt ist.

so würd ichs machen ist die beste lösung meiner meinung nach wenn er nicht unbedingt alles in try-except-blöcke fassen möchte..

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 15:10 
ja, das habe ich auch gemerkt desshalb habe ich dann geschrieben
ausblenden Delphi-Quelltext
1:
2:
if(edit1.text <> 1or
           (edit1.text =1) ...


aber das ging nicht und


ausblenden Delphi-Quelltext
1:
if(edit1.text > 99999999999)					


ging auch net!

aber

ausblenden Delphi-Quelltext
1:
if(edit1.text <>0,00000000000000000001then...					


ging, da ich ja nie den wert 0,00000000000000000001 eingeben werde! ;-)
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 15:13 
also wegen dem try/except!

auf deutsch sozusagen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
try                  //versuche ob das gehen würde
  E1:=strtoint(Edit1.Text);
 except              //wenn es geht dann mache folgendes
  E1:=0//ggf. ShowMessage-Meldung
 end;
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 15:16 
lol!!

so prüft man aber nicht wirklich auf korrekte eingaben!
wenn jemand anders das programm nutzt und genau das eingibt auf was du ungleich prüfst hast du wieder den selben fehler wie mit prüfung auf ungleich 1 oder 999999

mach folgendes:

2 möglichkeiten

1. schreib in edit1.onKeyPress folgendes

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', DecimalSeparator, ThousandSeparator, Char(VK_BACK)]) then
  Key := #0;
end;


2. möglichkeit

Bei heutiger Rechnerleistung stellt es auch kein Problem mehr dar, bei jeder Eingabe den kompletten Inhalt des Feldes zu prüfen und dem Anwender beispielsweise durch Signalfarben deutlich zu machen, dass er noch keinen eindeutigen Wert angegeben hat. Hier ist das OnChange-Ereignis der richtige Ansatzpunkt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Edit1Change(Sender: TObject);
var
 Error: Integer;
 Dummy: Integer;
begin
 val(Trim(Edit1.Text), Dummy, Error);
 if Error<>0 then
   Edit1.Color:=clRed
 else
   Edit1.Color:=clWindow;
end;


so lässt du nur zahleneingaben zu!

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 15:20 
ne, das geht nicht, weil wenn man keinen wert eingibt, dann soll er diesen ja berechnen
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 15:24 
achso du meinst beispielsweise so

ich hab 3 edits

edit1 = summand1
edit2 = summand2
edit3 = summe(ergebnis)

benutzer tippt in edit1 5 ein und in edit3 15
dann klickt er aufn button und da in edit2 nix steht muss das programm edit2 berechnen (im beispiel also 10)

vom prinzip her richtig?

nur um dir dann nen korrekten ansatz geben zu können..

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 15:29 
ja und wenn edit 1 leer ist aber edit 2 und 3 befüllt ist, dann soll edit 1 berechnet werden! mit einer anderen formel!
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 15:40 
dann ist der beste weg folgender

je nach status wird eine andere formel ausgeführt (machst du am besten mit case auf den status)

ausblenden 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:
 
 procedure meineFormeln(status: integer);
 begin
  case status of
   1begin
       //Formel 1
      end;
   2begin
       //Formel 2
      end;
   ...
 end;
 
 procedure pruefeEingabe;
 begin
  if length(edit1.text) <= 0 then
  begin
   meineFormel(1);
   exit; //Damit er nicht weiterläuft
  end
  else
   if length(edit2.text) <= 0 then
   begin
    meineFormel(2);
    exit;
   end
   else 
    if ....
 end;

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mi 17.05.06 15:50 
jo danke, das würde gehen, dann muss nur noch zusätzlich geprüft werden, ob in den anderen etwas drinne ist, sonst gibs ja nen fehler! ich habe nun nur schon das ganze mit mit nem langen if satz fast fertig, und das geht, dann schreibe ich dazu, das man aus technischen gründen den wert 0,0000000001 nicht eingeben soll! :-D
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 17.05.06 15:53 
wenn du das mit den technischen gründen schreibst, versprech ich dir probierts jeder aus =)
du kannst ja dann bei der formel-berechnung prüfen, ob in den feldern, die du zur berechnung brauchst etwas steht.

wie gesagt die lösung mit 0,00000001 ist nicht sehr äquivalent..

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 18.05.06 08:41 
Ok, also ich hab das jetzt so verstanden, das du einmal überprüfen willst ob Zahlen eingegeben wurden und dann je nach dem welche edits belegt sind ,eine bestimmte Formel benutzen willst.

Also wegen Zahlen eingeben, würde ich nur Zahlen zulassen :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//Läßt nur gültige Zahlen-Eingaben zu
if not (Key in ['0'..'9', DecimalSeparator, Char(VK_BACK)]) then
  Key := #0;
 if (Key = DecimalSeparator) AND (pos(Key, (Sender as TCustomEdit).Text) > 0then
    Key := #0;
end;

Und dieses Ereignis jedem Edit im KeyPress-Ereignis zuordnen (über Objektinspektor)

Dann Eingabe überprüfen und entsprechende Formel auswählen :
ausblenden volle Höhe 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:
36:
37:
38:
39:
40:
procedure Rechnen;
var Formel1, Formel2, Formel3, Formel4, Formel5 : boolean;
 begin
 // Bestimme welche Formel
 //Edit1 ist leer
   Formel1 := (Edit2.text<>"") AND (Edit3.text<>"") AND (Edit4.text<>"") AND (Edit5.text<>"");
 //Edit2 ist leer
   Formel2 := (Edit1.text<>"") AND (Edit3.text<>"") AND (Edit4.text<>"") AND (Edit5.text<>""); 
 //Edit3 ist leer
   Formel3 := (Edit1.text<>"") AND (Edit2.text<>"") AND (Edit4.text<>"") AND (Edit5.text<>"");
 //Edit4 ist leer
   Formel4 := (Edit1.text<>"") AND (Edit2.text<>"") AND (Edit3.text<>"") AND (Edit5.text<>"");
 //Edit5 ist leer
   Formel5 := (Edit1.text<>"") AND (Edit2.text<>"") AND (Edit3.text<>"") AND (Edit4.text<>"");

 //Setze Formel
  If Formel1 then
   begin
   //Hier entsprechende Formel einsetzen
   //z.B. :
   Edit1.text := FloatToStr(strtofloat(Edit2) + strtofloat(Edit3) * strtofloat(Edit4) + strtofloat(Edit5));
   end;
  If Formel2 then
   begin
   //Hier entsprechende Formel einsetzen
   end;
  If Formel3 then
   begin
   //Hier entsprechende Formel einsetzen
   end;
  If Formel4 then
   begin
   //Hier entsprechende Formel einsetzen
   end;
  If Formel5 then
   begin
   //Hier entsprechende Formel einsetzen
   end;

 end;
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Do 18.05.06 16:13 
Ok, also nu weiß ich, wei ich es mach!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
try

edit.text:=floattostr(meine fornmel);

except
try
edit2.text:=floattostr(meinezweiteformel);
except
try

...
...
...


so geht es wuuunderbar!

danke an alle!
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.05.06 16:20 
versteh ich ned =(

so weißt du nur das ergebnis vor..da frag ich mich was dir das bringt wenn du das in nen try except block fässt..

naja..vielleicht erklärst es mal =)

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Do 18.05.06 18:18 
ich habe ja 5 edit felder, wenn ich in 4 stück werte eingebe, soll er die mit formel 1 berechnen
wenn ich in andere 4 werte eingebe, soll er das mit formel 2 berechnen usw.

also dachte ich baue ich was mit try, wobei ich bei meinem letztem post was falsch verstanden hatte

ich muss also versuchen, ob variante eins (wo fie felder 1-4 befüllt sind) funktioniert, denn wenn ich mit einem leerem feld rechne, dann bekomme ich ja immer einen fehler, also, wenn er dann einen fehler bekommt, soll er dann verscuhen, ob variante zwei funtzt (wo felder 2-6) befüll sind

usw.