Autor |
Beitrag |
magic87
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Di 15.08.06 12:32
Hallo!
Ich bin neu hier und gerad angefangen delphi zu programmieren(2Wochen). Möchte einen Taschenrechner programmieren wie der von Windows nur mit den Grundrechenarten. Bin so weit das ich über die Buttons die Ziffern ins Editfeld eingeben kann und der sich die auch merkt über die Variable
Var Zahl : integer
Aber wie mache ich es das wenn man auf plus drückt und danach eine neue Zahl eintippen möchte, so dass die alte in dem selben Moment verschwindet und wenn man noch mal auf Plus drückt soll er die beiden Zahlen zusammen rechnen. Wie bei einem richtigen Taschenrechner halt. Das ganze soll in einem Editfeld geschehen. Hoffe mir kann jemand so ein bisschen auf die Sprünge helfen.
Wäre nett.. Liebe Grüe aus Oldenburg
magic
|
|
ManniTwo
      
Beiträge: 46
Win XP SP III, Ubuntu 8.04, Debian 5.0
Delphi 5 Pro; Delphi 2005; C++,C# (VS 2005); Java, Ruby (Eclipse)
|
Verfasst: Di 15.08.06 13:02
Hi!
Zitat: | Aber wie mache ich es das wenn man auf plus drückt und danach eine neue Zahl eintippen möchte, so dass die alte in dem selben Moment verschwindet |
tja....das einfachste ist wohl wenn du dir beim Klick auf einen Operator merkst, dass ein solcher geklickt wurde, zum Beispiel in einer Boolean-Varible und beim Klick auf einen Operanden also eine Zahl prüfst du diese Variable und löscht dann die angezeigte Zahl
(Edit1.Text := '') wenn vorher ein Operator geklickt wurde.
_________________ Wer andern eine Bratwurst brät, der hat ein Bratwurst-Brat-Gerät, oder anders:
Delphi-Quelltext 1:
| if Self.BraetAndernEineBratwurst then Self.HasBratwurstBratGeraet := true; |
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 15.08.06 13:31
Titel: Taschenrechner
Hi Magic87
Die Frage, wie mache ich, dass... wird dich ein Leben lang begleiten. Allerdings, die meisten stellen sich dieser Thematik nicht, haben einfach Spass am Leben und geniessen ihre Freizeit. Aber... wir sind ja nicht die meisten.. und darum geb ich dir einen Tip:
Rechnen tust du mit deinen Variablen im Hintergrund, und damit das funktioniert, mußt du sie am Anfang auf 0 setzen.
Wenn du unbedingt mit nur einem Editfeld arbeiten möchtest, mußt du dir Schritte überlegen, wie du bspw. eine Eingabe tätigen kannst, wann du diese Zahl mit anderen Werten berechnen wirst und mit welchen Ereignis du dies auslöst und wie du dann bei einer Neueingabe den angezeigten Wert verschwinden lassen kannst.
Also, versuchen wir aufzulösen.
Es gibt das Ereignis onKeyDown eines Editfeldes. Damit könntest du einmal das Editfeld löschen. Das darf aber nur einmal geschehen und das eingegebene Zeichen soll auch erhalten bleiben. Also mußt du die Routine ausblenden, wenn du ein Zeichen eingegeben hast. Dies geschieht z.B. durch Zuweisung von NIL an das OnKeyDown-Ereignis.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| .... Procedure myForm.MyEditKeyDown(Sender: TObject;Var Key:Word; Shift: TShiftState); Begin MyEdit.Text:=''; MyEdit.OnKeyDown:=Nil; MyEdit.Text:=Chr$(Key); end; ..... |
So, nun hast du ein Zeichen eingegeben und den Aufruf der Procedure MyEditKeyDown ausgeblendet. Die Eingaben sollten nun wieder funktionieren. Wenn du nun auf deinen mathematischen Operator, ich nehme an, ein Button mit plus, minus, mal oder geteilt drückst, machst du zuerst deine Berechnung mittels deiner Variablen. Dann weist du durch entsprechende Umwandlung das Ergebnis dem Editfeld zu und danach gibst du wieder den Aufruf von KeyDown frei, indem du der Wariablen die Prozedur wieder zuweist.
Sieht dann ungefähr so aus
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| .... Procedure myForm.Buttonxclick(Sender: TObject); Begin Calcwert:=Calcwert+StrToInt(MyEdit.Text); MyEdit.Text:=IntToStr(Calcwert); MyEdit.OnKeyDown:=MyEditKeyDown; end; ..... |
ungeprüft, aber so müßte es gehen...
Ich hoffe dir gehelft zu haben
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
magic87 
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Di 15.08.06 13:48
ja.. danke! mir haben beide Antworten schon ein bisschen weiter geholfen! Allerdings wollte ich den Taschenrechner mit meinem jetzigen Wissens programmieren! Ist die Aufgabe meines Lehrers. Und die Sachen die in deinem Quelltext waren kamen mir noch bisschen spanisch vor! Habe bisher variablen wie boolean, integer, real, string. Die einfachen Zuweisungen und Methoden wie if..then...else, function, und das wars auch schon fast! Kann ein Taschenrechner so mit 3 Edits und Zahlen die man selber eingibt locker programmieren.. aber mit Buttons zum eingeben und einem Editfeld sieht das ganze irgendwie viel schwerer aus!
Wäre nett, wenn ihr mal so ein bisschen Anfängerdelphi benutzen würdet! Freue mich auf Rückantworten.
Liebe Grüße
|
|
magic87 
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Di 15.08.06 14:27
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:
| private Zahl : integer; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.bt1Click(Sender: TObject); begin edit1.text := edit1.text + '1'; end;
procedure TForm1.bt2Click(Sender: TObject); begin edit1.text := edit1.text + '2'; end;
procedure TForm1.bt3Click(Sender: TObject); begin edit1.text := edit1.text + '3'; end;
procedure TForm1.btplusClick(Sender: TObject); begin Zahl := StrToInt(Edit1.text); end;
end. |
So sieht mein jetziger Quelltext aus. Ist also noch nicht viel gemacht. Aber villeicht kann mir jemand für den nächsten Schritt ein Tipp geben! Irgendwie weiß ich nicht so recht wie ich jetzt anfangen bzw. weitermachen soll. Bin für jeden Tipp dankbar!
Liebe Grüße
|
|
uwewo
      
Beiträge: 154
|
Verfasst: Di 15.08.06 14:30
Hi magic86,
einfacher? Ok versuch mal so.
Nenne eine Variable "Summe" und eine "RechenArt" oder so ähnlich.
Wenn Du an Deinem Rechner die Taste +,-,*,/ drückst weist Du Deiner
Variablen "Summe" den Wert des Editfeldes zu, gleichzeitig muß nun die Variable
"Rechenart" auch einen Wert zugewiesen werden.
z.B.
+ = 1
- = 2
* = 3
/ = 4
Nun mußt Du Nur noch den Wert in der Variablen "Rechenart" auswerten z.B.
Delphi-Quelltext 1: 2:
| if Rechenart = 1 then Summe := Summe + FloatToStr(Editfeld.text); if Rechenart = 2 then |
usw.
oder
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| case Rechenart of 1 : Summe := Summe + FloatToStr(Editfeld.text); 2 : Summe := Summe - FloatToStr(Editfeld.text); 3 : 4 : end; |
Hoffe das ist einfacher für Dich.
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Di 15.08.06 14:30
du könntest, wenn auf + ( bzw -, *, /) gedrückt wurde, prüfen, ob in dem edit-feld etwas steht. wenn ja, packst du es zu deiner variable dazu variable := variable + inttostr(edit1.text) und zeigst dann den inhalt deiner variable im edit veld an mit edit1.text := strtoint(variable)
kommt das deiner vorstellung von "einfachem anfänger-delphi" etwas näher? 
|
|
magic87 
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Di 15.08.06 15:17
danke für eure Hilfe! ist echt super! hat zwar geklappt soweit! aber ich verstehe die Zeile nicht: meinetwegen für
var = Zahl : integer
Dann schreibt man wie du
Zahl := Zahl + StrToInt(edit1.text);
Kannst du mir die Zeile nochmal erklären? Das heißt ja dann:
Zahl bekommt den Wert von sich selber plus den Wert der im edit1.text steht! Aber was ist der Wert von Zahl?
Wäre nett, wenn du mir das noch beantworten könntest!
Liebe Grüße
Dennis
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 15.08.06 16:34
Titel: Taschenrechner
Hi
Ich nochmal ganz kurz...
Da hab ich mir solche Mühe gegeben, einen "einfachen" code zu erklären...
tse, diese Anfänger
Ok, Du mußt natürlich deiner Variablen einen Anfangswert zuweisen. Das kannst du bspw. in der FormCreate, das ist, wenn du in deine Form einen Doppelclick machst, bist du in dieser Procedure im Editor. Da schreibst du einfach
Delphi-Quelltext 1: 2: 3: 4:
| .... Wert:=0; Wert:=1; ..... |
Außerdem hast du ja im Rechner eine C-Taste ( Clear oder so )
Da macht es Sinn, diese einzupflegen und beim Click darauf ebenfalls die Variable Wert vorzubesetzen.
Nun kannst du folgendes machen, um mal zu if... zu kommen. Der Unterschied bei Punkt und Strichrechnen ist im Anfangswert. Daher mußt du den Inhalt der Variablen auswerten und der Rechenfunktion entsprechend anpassen. Das gilt nur für den Anfangswert.
Also: Variable Wert auf 0 mit
Delphi-Quelltext
Nun einen Wert eingegeben und eine Rechenoperation. Beim Auslösen der Rechenoperation prüfst du den Inhalt von Wert:
Also in der Ereignisroutine von der Multiplikation sowie der Division setzt du folgende Zeile an den Anfang:
Delphi-Quelltext 1:
| If Wert=0 then Wert:=1; |
danach führst du die Rechenoperation aus z. B.
Delphi-Quelltext 1: 2: 3:
| Wert:=Wert*StrToInt(Edit1.Text); Wert:=Wert/StrToInt(Edit1.Text); |
Bei einer Strichrechnung brauchts keine Änderung vom Startwert der Variable Wert
Delphi-Quelltext 1: 2: 3:
| Wert:=Wert+StrToInt(Edit1.Text); Wert:=Wert-StrToInt(Edit1.Text); |
Du hattest in deinem Posting erklärt, das du verstanden hast, das der Variablen "Wert" das Rechenergebnis aus der rechten Seite zugewiesen wird.
Na ja, aller Anfang ist schwer...., du schaffst das schon.
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 15.08.06 18:13
Titel: Re: Taschenrechner
oldmax hat folgendes geschrieben: |
Nun einen Wert eingegeben und eine Rechenoperation. Beim Auslösen der Rechenoperation prüfst du den Inhalt von Wert:
Also in der Ereignisroutine von der Multiplikation sowie der Division setzt du folgende Zeile an den Anfang:
Delphi-Quelltext 1:
| If Wert=0 then Wert:=1; | |
Ähm.. da bekommst du aber spätestens bei dieser Rechnung hier Probleme:
1
-1
*5
Richtig: (1-1)*5 = 0*5 = 0
Dein Programm: (1-1)*5 = "oh! da steht 0! aber if wert=0 then wert:=1..." 1*5 = 5
=> Falsches Ergebnis... oder?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 15.08.06 19:22
Titel: immer noch Taschenrechner
Hi
Also, klar, ich weiß schon, warum ich da die Finger von lasse, vonne Mathe. Aber da hat unser Magic87 nun wirklich ein Problem, oder ? weil, wenn Eingabe 5 und in Wert-Variable steht 0 und nun würden wir die 5 so gern mit 3 multiplizieren......
Na dann mach mal.
OK, es war vielleicht ein Schnellschuß, aber wie immer kommen dann die Fragen, wie komme ich weiter, warum stimmen die Ergebnisse nicht, wo setze ich auf's falsche Pferd. Es wär ja so schön einfach gewesen mit der Ausblenderei der Procedur KeyDown, aber er will ja da nich ran, er will's zu Fuß haben..
Also, wie wär's mit einem Kompromiß. Die Null machen wir nur bei der 1. Rechenoperation nach einem "clear" oder Neustart zu 1 für's Punktrechnen, danach nieee wieder. Also, merk dir, wenn du eine Rechnung beginnst. Vielleicht so mit einer weiteren Variable
Anfang : Boolean;
Nun mußt du die Anfangswerte setzen, zum Beipiel in einer Clearbutton-Procedur
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Procedure MyForm.ButtonCClick(Sender : TObject); Begin Wert:=0; Anfang:=True; MyEdit.Text:='0'; end; |
na ja , das sagte ich ja schon, natürlich auch beim Programmstart
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| Procedure MyForm.FormCreate(Sender : TObject); Begin Wert:=0; Anfang:=True; MyEdit.Text:='0'; end; |
Nun schreibst du einfach in alle deine Rechenoperationsbutten als letzte Zeile Anfang:=False;
z.B.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Procedure MyForm.ButtonMulClick(Sender : TObject); Begin If Anfang and ( Wert=0) then Wert:=1; .... .... Anfang:=False; end; |
So, das soll's erst mal sein. Vermutlich sind deine Procedure-Köpfe anders, aber ich denke du erkennst schon, was wichtig ist. Und bei dem ganzen Spass nicht vergessen, es gibt immer den Fehler, den man logisch macht. Der taucht in keiner Fehlerroutine auf, das Ergebnis ist einfach falsch. Syntaxfehler, klar, die erkennt der Compiler, aber Denkfehler.... ??! Wie denn auch. Der Rechner macht genau das, was du ihm sagst und meistens glaubst du nur, ihm was anderes gesagt zu haben. Da isser ziemlich stur.
ok. Viel Spass
oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mi 16.08.06 06:54
Titel: noch was zum Taschenrechner
Hi
Bevor mir wer anderes drauf kommt.. der Rechner wird vermutlich nie richtig rechnen. Schließlich gibt's diese alte blöde Regel Punkt vor Strich und nich rechnen in Reihenfolge. Da vermute ich mal ein kleines Problemchen. Das is nich ganz so einfach zu lösen und deshalb mach ich hier nur einen Hinweis.
3*4+5*7 ist richtig 47 und nicht 119...
Na denn, zeig was du kannst.
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
starsurfer
      
Beiträge: 334
Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
|
Verfasst: Mi 16.08.06 09:40
Ich hab son Ding mal vor langer langer Zeit aus Langeweile programmiert mit Recht einfachen Befehlen.
Es ist auskommentiert, guggst dir einfach mal an.
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: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237:
| ...
private procedure variablen_uebergabe; procedure rechenarten; procedure zahl_neu; ...
var Form1: TForm1; zahl1,zahl2,ergebnis:real; zahl1_eingegeben,istgleich,zahl2_eingegeben,zahl_loeschen,rechenoperation_gewaehlt:bool; rechenart:integer; implementation
{$R *.DFM}
procedure tform1.zahl_neu; begin rechenoperation_gewaehlt:=false; istgleich:=false; if zahl_loeschen=true then begin edit1.text:=''; zahl_loeschen:=false; end; end;
procedure tform1.variablen_uebergabe; begin istgleich:=false; if (zahl2_eingegeben=false)and(zahl1_eingegeben=true) then begin zahl2:=strtofloat(edit1.text); zahl2_eingegeben:=true; zahl_loeschen:=true; end; if (zahl1_eingegeben=false) then begin zahl1:=strtofloat(edit1.text); zahl1_eingegeben:=true; zahl_loeschen:=true; end; if (zahl2_eingegeben=true)and(zahl1_eingegeben=true) then begin rechenarten; zahl1:=strtofloat(edit1.text); zahl2_eingegeben:=false; end; end;
procedure TForm1.Button1Click(Sender: TObject);begin zahl_neu;edit1.text:=edit1.text+'7'; end;
procedure TForm1.Button2Click(Sender: TObject);begin zahl_neu; edit1.text:=edit1.text+'8'; end;
procedure TForm1.Button3Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'9'; end;
procedure TForm1.Button4Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'4'; end;
procedure TForm1.Button5Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'5'; end;
procedure TForm1.Button6Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'6'; end;
procedure TForm1.Button7Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'1'; end;
procedure TForm1.Button8Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'2'; end;
procedure TForm1.Button9Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'3'; end;
procedure TForm1.Button10Click(Sender: TObject); begin zahl_neu;edit1.text:=edit1.text+'0'; end;
procedure TForm1.Button11Click(Sender: TObject); var zeile:string; begin zeile:=edit1.text; if zeile='' then exit; if zeile[1]='-' then delete(zeile,1,1) else insert('-',zeile,1); edit1.text:=zeile; end;
procedure TForm1.Button12Click(Sender: TObject); var zeile:string; begin zeile:=edit1.text; if pos(',',zeile)=0 then zeile:=zeile+','; edit1.text:=zeile; end;
procedure TForm1.Button18Click(Sender: TObject); var zeile:string; begin zeile:=edit1.text; delete(zeile,length(zeile),1); edit1.text:=zeile; end;
procedure TForm1.Button19Click(Sender: TObject); begin edit1.text:='';zahl1:=0; zahl2:=0; zahl1_eingegeben:=false; zahl2_eingegeben:=false; rechenart:=0; end;
procedure TForm1.Button15Click(Sender: TObject);begin if rechenoperation_gewaehlt=true then begin rechenart:=1; exit; end; rechenoperation_gewaehlt:=true; variablen_uebergabe; rechenart:=1; end;
procedure TForm1.Button16Click(Sender: TObject); begin if rechenoperation_gewaehlt=true then begin rechenart:=2; exit; end; rechenoperation_gewaehlt:=true; variablen_uebergabe; rechenart:=2; end;
procedure TForm1.Button14Click(Sender: TObject); begin if rechenoperation_gewaehlt=true then begin rechenart:=3; exit; end; rechenoperation_gewaehlt:=true; variablen_uebergabe; rechenart:=3; end;
procedure TForm1.Button13Click(Sender: TObject); begin if rechenoperation_gewaehlt=true then begin rechenart:=4; exit; end; rechenoperation_gewaehlt:=true; variablen_uebergabe; rechenart:=4; end;
procedure TForm1.FormCreate(Sender: TObject);begin zahl1_eingegeben:=false; zahl2_eingegeben:=false; zahl_loeschen:=false; istgleich:=false; rechenoperation_gewaehlt:=false;end;
procedure tform1.rechenarten; begin case rechenart of 1:edit1.text:=floattostr(zahl1*zahl2); 2:edit1.text:=floattostr(zahl1/zahl2); 3:edit1.text:=floattostr(zahl1+zahl2); 4:edit1.text:=floattostr(zahl1-zahl2); end; end;
procedure TForm1.Button17Click(Sender: TObject); begin if istgleich=true then begin zahl1:=strtofloat(edit1.text); rechenarten; end; if zahl1_eingegeben=true then begin zahl2:=strtofloat(edit1.text); rechenarten; zahl1_eingegeben:=false; zahl2_eingegeben:=false; zahl_loeschen:=true; istgleich:=true; end;
end; |
Funktionsweise:
-1te Zahl eingeben
-Rechenart wählen
-Programm merkt sich das erste Zahl eingebenen ist UND welcher Wert
-2te Zahl eingeben
-"=" oder Rechnenart wählen
-Programm merkt sich das zweite Zahl eingebenen ist UND welcher Wert
-gibt Ergebnis aus und löscht Zahl1 und Zahl2 und die Rechnart, notiert sie als NICHT eingebenen
- sollte jetzt direkt eine neue Zahl eingegeben werden wird die alte Zahl(das Ergebnis im edit Feld) gelöscht
-sollte ne Rechenart gewählt werden dann wird das Ergbnis wieder übernommen
-sollte eine Aufgabe berechnet sein (Z.B. 5+4=9 ) und dann weiter aufs "=" geklickt werden rechnet er weiter "4" zum Eregbnis dazu
Und das Ding rechnet richtig 
_________________ GEIZ IST GEIL! - Ihr Sozialamt
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Mi 16.08.06 10:15
Schön, starsurfer!
Aber ich glaube nicht, dass es Sinn der Sache war, ihm einen kompletten Taschenrechner dahin zu stellen... das hätte er mit Sicherheit (und ein wenig Hilfe) auch selbst geschafft und sogar was dabei gelernt...
Naja...
|
|
Jinnay
      
Beiträge: 70
Delphi 6
|
Verfasst: Mi 16.08.06 10:46
Ich würd mal sagen da ist jetzt Ehrgeiz gefragt, entweder er kopiert es sich eins zu eins oder er erarbeitet sich aus dem Taschenrechner einen eigenen, manchmal hilft eine Vorlage 
|
|
magic87 
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Do 17.08.06 09:19
Nein.. ich will den Quelltext nicht kopieren.. ich bin ihn durchgegangen und gucke ob mir dadurch etwas klarer wird. Konnt eigentlich alles so nachvollziehen. Aber das mit den boolischen Werten hab ich noch nicht ganz so begriffen. Ich weiß zwar das boolean für wahr oder falsch steht... aber so im Zusammenhang mit dem Quelltext kapier ich die Variable boolean noch nicht so richtig! Naja.. werd ich auch wohl noch irgendwann hinterkommen! Wäre auch dankbar wenn mir das jemand mit seinen Worten erklären könnte. Ansonsten danke erstmal für die ganze Hilfe!
Liebe Grüße aus Oldenburg
Dennis
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Do 17.08.06 09:21
Guten Morgen!
magic87 hat folgendes geschrieben: | Aber das mit den boolischen Werten hab ich noch nicht ganz so begriffen. Ich weiß zwar das boolean für wahr oder falsch steht... aber so im Zusammenhang mit dem Quelltext kapier ich die Variable boolean noch nicht so richtig! |
Welche Variable(n) meinst du genau?
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Do 17.08.06 10:01
Titel: Versuch, den Booleantyp zu erklären
Hi
Ich denke, er meint Boolean im allgemeinen. Wofür man eine boolean z.B. braucht.
Also, ein Beispiel:
nehmen wir an, du hast Variablen definiert namens MyFlag1 und MyFlag2 vom Typ Boolean. Auf einen Variablennamen "kleiner" oder "wahr" hab ich absichtlich verzichtet, um zu zeigen, es ist die x-beliebige Variable vom Typ boolean.
Klar ist: 3 ist kleiner 5 also lautet z.B. eine If-Abfrage
Delphi-Quelltext 1: 2: 3: 4:
| If 3 < 5 then begin .... end; |
Eigentlich ist nicht wichtig 3<5 sondern das logische Erggebnis daraus, um der If -Abfrage Sinn zu geben. Also, If "true" then ...
Soweit sollte es klar sein.
Normalerweise stehen für die Zahlen 3 und 5 Variablen mit x-beliebigen Werten und du willst nur Werte erwischen, die kleiner der 2ten Variable sind.
Nehmen wir weiter an, du möchtest Zahlen in einem Bereich von bis haben, dann ist's schon etwas komplizierter.
Also nehmen wir KleinerWert und GrosserWert sowie Wert als Integervariablen auf.
Wenn Wert grösser KleinerWert und kleiner GrosserWert ist, ist unsere Bedingung erfüllt.
In der If Abfrage sieht das wie folgt aus:
Delphi-Quelltext 1: 2: 3: 4: 5:
| If (Wert>KleinerWert) and (Wert<GrosserWert) then begin ... end; |
Manchmal hat man aber wesentlich mehr Bedingungen zu betrachten und da helfen schon mal Boolean-Variable, um den Code lesbar zu halten.
Ein wenig Umständlich, aber um es deutlich zu machen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if Wert>KleinerWert then MyFlag1:=True else MyFlag1:=False; if Wert<GrosserWert then MyFlag2:=True else MyFlag2:=False; If MyFlag1 and Myflag2 then begin .... end; |
es geht natürlich auch einfacher
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| ..... MyFlag1:=Wert>KleinerWert; MyFlag2:=Wert<GrosserWert ; .....
end; |
Ich hoffe, diese Erklärung hilft dir ein wenig. Natürlich ist eine Boolean auch für andere Zwecke nützlich, um sich z. B. bestimmte Bearbeitungsschritte zu merken, aber fast immer ist diese Variable mit If, Repeat oder While in Verbindung zu bringen, nur um die wichtigsten zu nennen.
Natürlich ist auch eine Zuweisung an andere Boolsche Variablen zulässig, sowie Visible, Checked, Enabled etc.
Du kannst mal folgendes machen, das geht schnell und ist auch leicht verständlich:
Auf eine Form 3 Editfelder und 2 Panel darunter, so in der größe der Editfelder. und noch ein Button dazu.
Editfeld 1 hat den kleinen Wert, Editfeld 2 ist der Prüfwert und Editfeld 3 ist der obere Wert.
nun der Code, den du in die Ereignisprocedure des Buttons schreibst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Procedure Form1.Button1click(Sender : TObject); Begin if Edit2.Text>Edit1.Text then MyFlag1:=True else MyFlag1:=False; if Edit2.Text>Edit3.Text then MyFlag2:=True else MyFlag2:=False; Panel1.Visible:=MyFlag1; Panel1.Visible:=MyFlag1;
end; |
Probier's aus und ich denke, es wird dir etwas klarer, wofür Boolean-Variablen brauchbar sind....
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
magic87 
      
Beiträge: 45
Delphi 7, PHP
|
Verfasst: Di 22.08.06 12:19
Hallo! ich bins nochmal! Habe meinen Taschenrechner soweit fertig. Habe auch ein paar Sachen von Starsurfer abgeguckt wenn ich ehrlich sein soll. Konnte eigentlich alles nachvollziehen. Aber die Procedure Variablenuebergabe habe ich irgendwie nicht verstanden. Wäre nett wenn mir das jemand mit seinen Worten erklären könnte!
Liebe Grüße
Dennis
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 22.08.06 13:41
ich wollte nur anmerken, falls es nicht schon passiert ist, das du die Variablen in die du die erste Zahl speicherst, besser von typ Float ist da man deutlich höhere Zahlen erreichen kann als mit Integer! (jedoch kann dabei die genauigkeit flöten gehen.: alternative für genauere Zahlen: Longint)
viel Spass noch!
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
|