| Autor |
Beitrag |
Xodem
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 12.06.09 19:40
Ich hab ein Problem mit einem Projekt. Ich möchte einen ganz ganz simplen taschenrechner erstellen. Der Benutzer soll in 3 Felder etwas eintippen: in das Erste die erste Zahl, dann in das nächste das Rechenzeichen und in das Letzte die 2. Zahl. Mein Problem ist jetzt das ich mit den Variablen Typen anscheinend kommplett durcheinander komme.
Aber hier erst mal der Quellcode:
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:
| procedure TForm1.Button1Click(Sender: TObject); var zahl1, zahl2, ergebnis: Extended; var verk: String[1];
begin zahl1 := StrToFloat(Edit1.Text); zahl2 := StrToFloat(Edit2.Text);
verk := Edit3.Text;
case verk of '+' : ergebnis := zahl1+zahl2; '*' : ergebnis := zahl1*zahl2; '/' : ergebnis := zahl1/zahl2; '-' : ergebnis := zahl1-zahl2; else Label4.Caption := 'Achtung keine Gültige Verknüpfung eingegeben';
end;
Label4.Caption := FloatToStr(ergebnis); end;
end. |
Ich bin wirklich anfänger was delphi angeht, dessweegn hab ich auch keine Ahnung ob hier das Thema angebracht ist.
Ich behersche aber schon Javascript so wie teilweise c++ und java.
Mir sind also Begriffe wie Funktionen usw geläufig.
Ich würde mich sehr freuen, wenn mir jemand sagen kann warum mein compiller immer sagt ungültige übertrageung von Extend zu String und Integer zu Char.
Moderiert von Gausi: Highlight- durch Delphi-Tags ersetzt
Moderiert von Gausi: Topic aus VCL (Visual Component Library) verschoben am Fr 12.06.2009 um 19:57
Zuletzt bearbeitet von Xodem am So 14.06.09 13:46, insgesamt 1-mal bearbeitet
|
|
Sinspin
      
Beiträge: 1338
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Fr 12.06.09 19:53
Hi und  in der EE!
Schreib mal bitte in welcher Zeile die Fehlermeldung kommt. Ich kann nämlich keinen Fehler finden, es sei denn ich bin Blind 
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 12.06.09 19:56
Hallo und  in der Entwickler-Ecke,
Erstmal: Bitte ändere den Titel, denn "Anfängerfrage" hilft nicht wirklich, den Inhalt der Frage etwas einzugrenzen.
Zum Problem: Case mit Strings geht nicht, auch wenn es ein String[1] ist. Das muss dann schon ein Char sein - Delphi ist bei sowas recht pingelig.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| verk: Char;
begin if Edit3.Text <> '' then verk := Edit3.Text[1] else verk := 'o'; |
_________________ We are, we were and will not be.
|
|
Xodem 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 12.06.09 20:05
ja danke erst mal für die schnellen antworten.
Also bei Turbo Delphi wird diese Zeile rot unterlegt:
Quelltext
Der rest bleibt unverändert.
Und hier noch mal die komplette fehlermeldung:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| [Pascal Fehler] Unit1.pas(46): E2001 Ordinaltyp erforderlich [Pascal Fehler] Unit1.pas(47): E2010 Inkompatible Typen: 'Integer' und 'Char' [Pascal Fehler] Unit1.pas(47): E2010 Inkompatible Typen: 'Extended' und 'string' [Pascal Fehler] Unit1.pas(48): E2010 Inkompatible Typen: 'Integer' und 'Char' [Pascal Fehler] Unit1.pas(48): E2010 Inkompatible Typen: 'Extended' und 'string' [Pascal Fehler] Unit1.pas(49): E2010 Inkompatible Typen: 'Integer' und 'Char' [Pascal Fehler] Unit1.pas(49): E2010 Inkompatible Typen: 'Extended' und 'string' [Pascal Fehler] Unit1.pas(50): E2010 Inkompatible Typen: 'Integer' und 'Char' [Pascal Fehler] Unit1.pas(50): E2010 Inkompatible Typen: 'Extended' und 'string' [Pascal Fataler Fehler] Project2.dpr(5): F2063 Verwendete Unit '..\Delphi\Rechner\Unit1.pas' kann nicht compiliert werden |
Gibs denn noch ne andere möglichkeit sowas zu realisieren, Taschenrechner jetzt mein ich ohne die Oberfläche zu verändern?
Oberfläche=anordnung von Buttons Labels etc.
Moderiert von Gausi: Highlight- durch Code-Tags ersetzt
Moderiert von Gausi: Beiträge zusammengefasst.
wenn ich den Typ von verk zu Char änder kommt die Fehlermedung hier:
Quelltext 1: 2:
| [Pascal Fehler] Unit1.pas(44): E2010 Inkompatible Typen: 'Char' und 'TCaption' [Pascal Fataler Fehler] Project2.dpr(5): F2063 Verwendete Unit '..\Delphi\Rechner\Unit1.pas' kann nicht compiliert werden |
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.06.09 23:54
|
|
Xodem 
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 13.06.09 15:20
Danke ich habs jetztsoweit hinbekommen.
Kann man das eiendlich auch alles in ein Edit schreiebn lassen, sodass z.B.: Edit1.Text:='22+8' ist und das das Programm, dann 30 ausgibt, je nach rechenzeichen?
Bei javascript gabs dafür die function char(), baer bei delphi hab ich keine Ahnung.
Geht das?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 13.06.09 15:49
Delphi ist keine interpretierte Sprache, dementsprechend musst du das selbst parsen.
Wenn du hier nach Parser suchst, solltest du sehr viel finden, die Frage kommt ständig immer wieder.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 13.06.09 16:21
Xodem,
bitte komme Gausis Aufforderung nach, einen anständigen Titel zu wählen
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Xodem 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 14.06.09 13:38
äähhhm wie änrt man das denn?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.06.09 13:40
Hier gibt's die Erklärung dazu 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: So 14.06.09 14:14
Xodem hat folgendes geschrieben : | Danke ich habs jetztsoweit hinbekommen.
Kann man das eiendlich auch alles in ein Edit schreiebn lassen, sodass z.B.: Edit1.Text:='22+8' ist und das das Programm, dann 30 ausgibt, je nach rechenzeichen?
Bei javascript gabs dafür die function char(), baer bei delphi hab ich keine Ahnung.
Geht das? |
Ja. Hier nur um das Prinzip zu zeigen.
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:
| procedure TForm1.Button1Click(Sender: TObject); var i, p: Integer; s, sz1, sop, sz2: String; r, rz1, rz2: Double; begin s := Edit1.Text;
for i := 1 to 4 do begin p := Pos(Copy('+-*/', i, 1), s); if p > 0 then begin sz1 := Copy(s, 1, p-1); sop := Copy(s, p, 1); sz2 := Copy(s, p+1, Length(s)); Break; end; end;
try rz1 := StrToFloat(sz1); rz2 := StrToFloat(sz2);
case sop[1] of '+': r := rz1 + rz2; '-': r := rz1 - rz2; '*': r := rz1 * rz2; '/': r := rz1 / rz2; end;
Label1.Caption := FloatToStr(r); except ShowMessage('Fehler'); end; end; |
_________________ Popov
|
|
Xodem 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 14.06.09 18:14
Danke für deine Bemühingen dein beispiel code hat mir viel gebracht, aber was genau bewirkt copy() inerhab der function pos().
Ich hab zwar bei google schon sachen darüber gefunden, aber meistends nur in irgendsoeinem fach chinesisch.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 18:18
Xodem hat folgendes geschrieben : | | Danke für deine Bemühingen dein beispiel code hat mir viel gebracht, aber was genau bewirkt copy() inerhab der function pos(). |
Damit wird der i-te Buchstabe, also der i-te Operator benutzt. Es wird ja das Zeichen 1, 2, 3 und am Ende 4 kopiert, das sind die 4 Operatoren der Reihe nach.
Ich würde ein konstantes Array bevorzugen, aber so gehts notfalls eben auch.
|
|
Xodem 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 14.06.09 18:53
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: So 14.06.09 22:50
|
|