| Autor |
Beitrag |
boboy162
Hält's aus hier
Beiträge: 11
|
Verfasst: Mo 12.10.09 16:40
Hallo zusammen, bin neu hier und das ist mein erster Eintrag hier ^^
Also ich steh hier vor einem Problem das irgendwie für mich einfach nicht Nachvollziehbar ist, und das mir schon alle Nerven geraubt hat.
Problem: Ich gebe eine Zahl ein klicke dann auf Plus, und wenn ich jetzt den Zweiten Summanden sozusagen eintippen will, dann müsste er wenn ich die erste Ziffer eingebe sofort das edit1 Fenster löschen und dies durch die Ziffer ersetzen.
Gruß
und vielen Dank
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) BPlus: TButton; BMinus: TButton; BMal: TButton; BTeilen: TButton; BGleich: TButton; B7: TButton; B8: TButton; B6: TButton; B3: TButton; B4: TButton; B5: TButton; B1: TButton; BPunkt: TButton; B2: TButton; B9: TButton; BClear: TButton; Edit1: TEdit; B0: TButton;
procedure B1Click(Sender: TObject); procedure B2Click(Sender: TObject); procedure B3Click(Sender: TObject); procedure B4Click(Sender: TObject); procedure B5Click(Sender: TObject); procedure B6Click(Sender: TObject); procedure B7Click(Sender: TObject); procedure B8Click(Sender: TObject); procedure B9Click(Sender: TObject); procedure B0Click(Sender: TObject); procedure BGleichClick(Sender: TObject); procedure BPlusClick(Sender: TObject);
procedure richtigAnzeigen(text: string); procedure Zusammenrechnen(); procedure ProzessAntwortschonangezeigt();
private public end;
var Form1: TForm1; Ergebnis: double = 0; Operator: string = ''; Antwortschonangezeigt : integer = 0;
implementation
{$R *.dfm}
procedure TForm1.Zusammenrechnen(); Begin if Operator = '' then begin Ergebnis := strtofloat(edit1.Text); end; if Operator = '+' then begin Ergebnis := Ergebnis + strtofloat(edit1.Text); end; if Operator = 'x' then begin Ergebnis := Ergebnis * strtofloat(edit1.Text); end; if Operator = '/' then begin Ergebnis := Ergebnis / strtofloat(edit1.Text); end; if Operator = '-' then begin Ergebnis := Ergebnis - strtofloat(edit1.Text); end; end;
procedure TForm1.ProzessAntwortschonangezeigt(); begin Antwortschonangezeigt := 1; edit1.Text := floattostr(Ergebnis); end;
procedure TForm1.richtigAnzeigen(text: string); begin
if Antwortschonangezeigt = 1 then begin Antwortschonangezeigt := 0; edit1.text := '' ; end;
if edit1.Text = '0' then begin edit1.Text := ''; end; edit1.Text := edit1.Text + text;
end;
procedure TForm1.BPlusClick(Sender: TObject); begin
Zusammenrechnen();
Operator := '+';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.BGleichClick(Sender: TObject); begin Zusammenrechnen();
Operator := '';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.B1Click(Sender: TObject); begin richtigAnzeigen ('1');
end;
procedure TForm1.B2Click(Sender: TObject); begin richtigAnzeigen ('2');
end;
procedure TForm1.B3Click(Sender: TObject); begin richtigAnzeigen ('3');
end;
procedure TForm1.B4Click(Sender: TObject); begin richtigAnzeigen ('4');
end;
procedure TForm1.B5Click(Sender: TObject); begin richtigAnzeigen ('5');
end;
procedure TForm1.B6Click(Sender: TObject); begin richtigAnzeigen ('6');
end;
procedure TForm1.B7Click(Sender: TObject); begin richtigAnzeigen ('7');
end;
procedure TForm1.B8Click(Sender: TObject); begin richtigAnzeigen ('8');
end;
procedure TForm1.B9Click(Sender: TObject); begin richtigAnzeigen ('9');
end;
procedure TForm1.B0Click(Sender: TObject); begin richtigAnzeigen ('0');
end;
end. |
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Mo 12.10.09 17:10
Hallo,
eine Möglichkeit wäre folgendes:
Deine Methode Zusammenrechnen wird immer ausgeführt sobald ein Rechenoperation durchgeführt wird. Dort könnte auch noch eine Variable zb. "LoescheDisplay" gesetzt werden. Der nächste Schritt ist eine Eingabe der Buttons, die Methode richtigAnzeigen wird aufgerufen. Wenn du dort abfragen würdest ob "LoescheDisplay" gesetzt wurde, dann lösche die Anzeige und setzte "LoescheDisplay" auf false zurück;
Somit würde das gleiche Verhalten wie bei einem Taschenrechner erzeugt werden;
|
|
boboy162 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mo 12.10.09 17:17
Ist das nicht das selbe wie Antwortschonangezeigt?
Gruß
--- Moderiert von Narses: Beiträge zusammengefasst---
Also ich muss mich nochmal melden, aber das Problem hat sich wohl gelöst!!!^^
Einfach SOOOOOOOOOOO!!! ICH VERSTEH EINFACH NICHT WARUM SO GANZ PLÖtzlich, obwohl ich mich jetzt so recht erinnere und ich eigentlich nichts verändert habe.
Egal, zumindest trotzdem Danke für die Hilfe!
Gruß
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Mo 12.10.09 17:34
|
|
boboy162 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mo 12.10.09 17:57
Ach neues Problem...
Wie kann ich die Hochzahlen ausrechnen?
Hab Zwei Zahlen. LetztesErgebnis und die Zahl die im Edit1 steht. .
Delphi-Quelltext 1:
| edit1.text := Power(letztesErgebnis, (strtofloat (edit1.Text))); |
Funktuniert aber irgendwie nicht.
Hmmmmmmmm
Edit: Ich glaub ich hab dieses Math Unit nicht.
Danke
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Mo 12.10.09 18:09
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var x : Double; begin x := power(2,2); lbl1.Caption := FloatToStr(x); end; |
Typumwandlung bzw. in Uses Math anhängen;
|
|
boboy162 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mo 12.10.09 18:22
Also ich hab gemerkt dass ich diese Math Bibliothek oder wie es auch heisst nicht habe, zumindest erkennt Delphi diese bei der Deklaration unter USES mit "MATH" nicht.
Hab dann das Problem gelöst in dem ich geschaut hab wie so eine Funktion die so eine Rechnung mit Hochzahlen löst aussieht.
Hier dann der ganze Code, für die Leute die vor einem ähnlichem Problem stehen oder stehen werden.
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: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) BPlus: TButton; BMinus: TButton; BMal: TButton; BTeilen: TButton; BGleich: TButton; B7: TButton; B8: TButton; B6: TButton; B3: TButton; B4: TButton; B5: TButton; B1: TButton; BPunkt: TButton; B2: TButton; B9: TButton; BClear: TButton; Edit1: TEdit; B0: TButton; BPlusMinus: TButton; BHochzahl: TButton; BWurzel: TButton; BCos: TButton;
procedure B1Click(Sender: TObject); procedure B2Click(Sender: TObject); procedure B3Click(Sender: TObject); procedure B4Click(Sender: TObject); procedure B5Click(Sender: TObject); procedure B6Click(Sender: TObject); procedure B7Click(Sender: TObject); procedure B8Click(Sender: TObject); procedure B9Click(Sender: TObject); procedure B0Click(Sender: TObject); procedure BGleichClick(Sender: TObject); procedure BPlusClick(Sender: TObject);
procedure richtigAnzeigen(text: string); procedure Zusammenrechnen(); procedure ProzessAntwortschonangezeigt(); procedure BMinusClick(Sender: TObject); procedure BMalClick(Sender: TObject); procedure BTeilenClick(Sender: TObject); procedure BClearClick(Sender: TObject); procedure BPunktClick(Sender: TObject); procedure BPlusMinusClick(Sender: TObject); procedure BHochzahlClick(Sender: TObject); procedure BWurzelClick(Sender: TObject); procedure BCosClick(Sender: TObject);
private public end;
var Form1: TForm1; Ergebnis: double = 0; Operator: string = ''; Antwortschonangezeigt : integer = 0;
implementation
{$R *.dfm}
function Potenz(Base, Exponent: Extended): Extended; begin if Exponent = 0.0 then Result := 1.0 else if (Base = 0.0) and (Exponent > 0.0) then Result := 0.0 else if Exponent = 2 then result := Sqr(Base) else Result := Exp(Ln(Base) * Exponent ); end;
function degcos(x: Extended): Extended; begin degcos := cos(x * 2 * pi / 360); end;
procedure TForm1.Zusammenrechnen(); Begin if Operator = '' then begin Ergebnis := strtofloat(edit1.Text); end; if Operator = '+' then begin Ergebnis := Ergebnis + strtofloat(edit1.Text); end; if Operator = 'x' then begin Ergebnis := Ergebnis * strtofloat(edit1.Text); end; if Operator = '/' then begin Ergebnis := Ergebnis / strtofloat(edit1.Text); end; if Operator = '-' then begin Ergebnis := Ergebnis - strtofloat(edit1.Text); end; if Operator = 'xx' then begin Ergebnis := Potenz(Ergebnis, (strtofloat (edit1.Text))); end; if Operator = 'Wurzel' then begin Ergebnis := Potenz(Ergebnis, 0.5); end; if Operator = 'Cos' then begin Ergebnis := degCos (strtofloat (edit1.Text)); end;
end;
procedure TForm1.ProzessAntwortschonangezeigt(); begin Antwortschonangezeigt := 1; edit1.Text := floattostr(Ergebnis); end;
procedure TForm1.richtigAnzeigen(text: string); begin
if Antwortschonangezeigt = 1 then begin Antwortschonangezeigt := 0; edit1.text := '' ; end;
if edit1.Text = '0' then begin edit1.Text := ''; end; edit1.Text := edit1.Text + text;
end;
procedure TForm1.BTeilenClick(Sender: TObject); begin Zusammenrechnen();
Operator := '/';
ProzessAntwortschonangezeigt(); end;
procedure TForm1.BMinusClick(Sender: TObject); begin Zusammenrechnen();
Operator := '-';
ProzessAntwortschonangezeigt(); end;
procedure TForm1.BPlusClick(Sender: TObject); begin
Zusammenrechnen();
Operator := '+';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.BHochzahlClick(Sender: TObject); begin Zusammenrechnen();
Operator := 'xx';
ProzessAntwortschonangezeigt(); end;
procedure TForm1.BWurzelClick(Sender: TObject); begin Zusammenrechnen();
Operator := 'Wurzel';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.BCosClick(Sender: TObject); begin Zusammenrechnen();
Operator := 'Cos';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.BGleichClick(Sender: TObject); begin Zusammenrechnen();
Operator := '';
ProzessAntwortschonangezeigt();
end;
procedure TForm1.BMalClick(Sender: TObject); begin Zusammenrechnen();
Operator := 'x';
ProzessAntwortschonangezeigt(); end;
procedure TForm1.B1Click(Sender: TObject); begin richtigAnzeigen ('1');
end;
procedure TForm1.B2Click(Sender: TObject); begin richtigAnzeigen ('2');
end;
procedure TForm1.B3Click(Sender: TObject); begin richtigAnzeigen ('3');
end;
procedure TForm1.B4Click(Sender: TObject); begin richtigAnzeigen ('4');
end;
procedure TForm1.B5Click(Sender: TObject); begin richtigAnzeigen ('5');
end;
procedure TForm1.B6Click(Sender: TObject); begin richtigAnzeigen ('6');
end;
procedure TForm1.B7Click(Sender: TObject); begin richtigAnzeigen ('7');
end;
procedure TForm1.B8Click(Sender: TObject); begin richtigAnzeigen ('8');
end;
procedure TForm1.B9Click(Sender: TObject); begin richtigAnzeigen ('9');
end;
procedure TForm1.B0Click(Sender: TObject); begin richtigAnzeigen ('0');
end;
procedure TForm1.BPunktClick(Sender: TObject); begin richtigAnzeigen ('.');
end; procedure TForm1.BPlusMinusClick(Sender: TObject); begin richtigAnzeigen ('-');
end;
procedure TForm1.BClearClick(Sender: TObject); begin Ergebnis := 0 ; Operator := ''; Antwortschonangezeigt := 0; edit1.Text := ''; end;
end. |
Nur noch eine Frage, wie schaff ich es gewisse Teile in meinem Code zusammen zufassen. Also z.B so dass dann bei den Buttons im Editor ein Plus Zeichen davor steht damit man sich das anzeigen kann oder ausblenden kann.
Weil der ist jetzt ziemlich lang geworden mit der Zeit.
Und noch eine Frage...^^ Wie kann ich diese Math Bibiothek noch dazu installieren. Besitze die Schüler Version von Delphi 6.
Gruß
Danke
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Di 13.10.09 10:18
Sobald du auf der Form auf einen Button klickst wird dem Ereignis eine Methode zugewiesen. Bei dir ist das B0Click bis B9Click und noch die ganzen Operatoren. Der Inhalt ist immer
Delphi-Quelltext 1:
| richtigAnzeigen ('entsprechende Nummer'); |
Da bei einem Taschenrechner die Buttons eine Beschriftung haben könntest du diese Abfangen und den ganzen Button klicks eine einzige Methode zuweisen. Diese Methode liest die Beschriftung ein und sendet sie weiter.
Das könnte so aussehen:
Delphi-Quelltext 1:
| procedure ButtonClick (Sender : TObject); |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TFormXX.ButtonClick(Sender: TObject); var btnCaption : String; begin if Sender is TButton then begin btnCaption := TButton(Sender).Caption; richtigAnzeigen(btnCaption); end; end; |
Diese Methode kann im Objektinspektor bei jedem Button in der Registerkarte Ereignisse unter Eingabe und dann OnClick (dort stehen schon deine ganzen Methoden) ersetzt werden.
Wie es mit der Potenz in deiner Delphi Version aussieht kann ich nicht sagen. Du hast aber schon selbst eine Funktion geschrieben, die das auch kann.
|
|
boboy162 
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 13.10.09 17:08
Gibt es keine möglich keit im Delphi Editor gewisse Teile des Quelltextes auszublenden, zusammen zufassen oder um irgendwie die ÜBersichtbarkeit zu steigern?
Gruß
|
|
Hugo343
      
Beiträge: 114
Erhaltene Danke: 2
Windows 7
Turbo Delphi, Dev C++
|
Verfasst: Di 13.10.09 17:23
Soweit ich weiß ist die einfachste Möglichkeit dazu auf das + links neben "procedure ..." klicken. Oder du lagerst Funktionen und Prozeduren in einer anderen Unit aus.
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Di 13.10.09 18:08
Du könntest auf eine neue Delphi Version umsteigen. Nähere Infos gibt hier:
www.delphi-library.d...ewtopic.php?p=539975
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 14.10.09 01:24
Nein, leider ist das nicht mehr möglich wie ich auch vor einigen Tagen in die Anleitung hineineditiert habe. Seit einigen Tagen ist Turbo Delphi nämlich nicht mehr verfügbar.
Und wenn die Version von Delphi um die es hier geht noch nicht einmal die Unit Math kennt, dann sind dort sicher auch noch keine Funktionen wie Codefolding oder ähnliches drin, weil es sich noch um Delphi 3 oder so handelt. Leider kommt die Frage dann 3 Wochen zu spät oder so, denn derzeit gibt es eben leider keine neuere Delphiversion mehr kostengünstig.
|
|
boboy162 
Hält's aus hier
Beiträge: 11
|
Verfasst: Sa 17.10.09 16:57
Hallo zusammen
ICh möchte jetzt meinem Taschenrechner das Rechnen mit Logarithmus zeigen, da ich die Math Unit nicht einbinden kann, wollte ich fragen ob jemand eine Funktion kennt, die einen Logarithmus berechnet.
Hab bei google schon nachgefragt...^^
Gruß
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.10.09 00:18
boboy162 hat folgendes geschrieben : | | da ich die Math Unit nicht einbinden kann |
Also selbst bei Delphi 3 ist die eigentlich dabei.
|
|