Autor Beitrag
r@cer
Hält's aus hier
Beiträge: 13

Win 7, Ubuntu 10.10
Delphi 5 Prof., Lazarus
BeitragVerfasst: Mi 25.08.10 22:46 
Hi an alle,

ich bin Programmieranfänger, d.h. ich habe gerade mit Delphi in der Schule angefangen. Dort mussten wir ein kleines Programm schreiben, mit dem man zwei Zahlen zusammen rechnen kann. Dass ganze soll mit zwei Edit-Fenstern und einem Button laufen und natürlich mit dem Quellcode. Der sah dann so aus: (hier funktionniert alles wunderbar)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,ergebnis:integer;
begin
x:=strtoint(edit_zahl1.text);
y:=strtoint(edit_zahl2.text);
ergebnis:=x+y;
showmessage('Ergebnis = '+inttostr(ergebnis));
end;

unsere Hausaufgabe ist es das selbe nur mit minus, mal und geteilt, also den restlichen Grundrechenarten durchzuführen. Mit dem Subtrahieren und Multiplizieren hat es ebenfalls auf Anhieb geklappt, doch als ich den selben Code auf die Division angepasst hatte, wurde die 6. Zeile rot hinterlegt. Ich weiß nur nicht wo der Fehler sein soll. Ich habs auch schon vergeblich mit double und float statt int versucht, aber da ich mich damit noch ganz einfach nicht auskenne wurde das natürlich auch nichts.
Also ich zeig euch einfach mal den zugehörigen Quellcode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button4Click(Sender: TObject);
var x,y,ergebnis:integer;
begin
x:=strtoint(edit_zahl7.text);
y:=strtoint(edit_zahl8.text);
ergebnis:=x/y;                                      
showmessage('Ergebnis = '+inttostr(ergebnis));
end;

In der Zeile "ergebnis:=x/y;" wurde wie gesagt der Fehler angezeigt. Für euch professionelle Programmierer ist das bestimmt nur Kindergram, deshalb hoffe ich umso mehr, dass mir jemand helfen kann. ;)

würde mich freuen :)

lg r@cer

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 25.08.2010 um 23:13
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 25.08.10 22:54 
Hi und :welcome: im Forum!

user profile iconr@cer hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button4Click(Sender: TObject);
var x,y,ergebnis:integer;
begin
x:=strtoint(edit_zahl7.text);
y:=strtoint(edit_zahl8.text);
ergebnis:=x/y;                                      
showmessage('Ergebnis = '+inttostr(ergebnis));
end;

Integer ist ein Datentyp für natürliche Zahlen. Du brauchst allerdings bei einer Divison einen Typ, der Fließkommazahlen aufnehmen und darstellen kann, wie "Extended".
Entsprechend muss auch die Umwandlung der Zahl in Text angepasst werden: FloatToStr();
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button4Click(Sender: TObject);
var x,y: Integer;
    result: Extended;
begin
  x := strtoint(edit_zahl7.text);
  y := strtoint(edit_zahl8.text);
  ergebnis := x / y;                                      
 showmessage('Ergebnis = '+FloatToStr(ergebnis));
end;

Was passiert bei Y = 0? :roll: :idea:

Darüberhinaus empfehle ich Dir dringest einen Blick in user profile iconChristians Crashkurs zu werfen, um grundlegende Problem aus dem Weg zu räumen. :)

PS: QuellCode lässt sich mit den Delphi-Tags [delphi] [/delphi] darstellen.


Zuletzt bearbeitet von Marc. am Mi 25.08.10 22:58, insgesamt 3-mal bearbeitet

Für diesen Beitrag haben gedankt: r@cer
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 25.08.10 22:56 
Hallo und :welcome: im Delphi-Forum!

Dein "Fehler", wenn man es so nennen will, ist das es 2 unterschiedliche Divisionsmethoden gibt. Eine liefert eine Ganzzahl (Integer) zurück und die andere liefert eine Gleitkommazahl (Float) zurück. Du verwendest derzeit die für Float.
Lösung: Ersetzte dein "/" durch ein "div" und es sollte alles funktionieren. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Mi 25.08.10 22:58 
da ergebnis vom typ integer ist, musst du div benutzen. da das ergebnis nur ne ganze zahl sein kann. / ist fuer floating point zahlen.

Für diesen Beitrag haben gedankt: r@cer
r@cer Threadstarter
Hält's aus hier
Beiträge: 13

Win 7, Ubuntu 10.10
Delphi 5 Prof., Lazarus
BeitragVerfasst: Mi 25.08.10 23:21 
Hi Marc,

vielen Dank füre deine Hilfe. Ich habe den Quellcode wie folgt abgeändert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button4Click(Sender: TObject);
var x,y: Integer;
    result: Extended;
begin
x :=strtoint(edit_zahl7.text);
y :=strtoint(edit_zahl8.text);
result:=x / y;
showmessage('Ergebnis = '+FloatToStr(result));
end;


leider entsteht immer noch ein Fehler, nur diesmal um einiges weiter oben in folgender Zeile:
(das ist natürlich nur ein kleiner Ausschnitt des kompletten codes)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
 
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure edit_zahl7Change(Sender: TObject); <--- diese Zeile wird rot hinterlegt



@elundril

ich habe auch deinen kleinen Tipp ausprobiert (und auch noch mal danke deswegen),
und bin bei folgendem Code auf den selben Fehler gestoßen, wie ich ihn bereits Marc beschrieben habe, ein paar Zeilen weiter oben.
also ebenfalls in der Zeile "procedure edit_zahl7Change(Sender: TObject);"

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button4Click(Sender: TObject);
var x,y,result:integer;
begin
x :=strtoint(edit_zahl7.text);
y :=strtoint(edit_zahl8.text);
result:=x div y;
showmessage('Ergebnis = '+IntToStr(result));
end;
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: Mi 25.08.10 23:36 
der fehler hat nichts mit der div korrektur zu tun.
r@cer Threadstarter
Hält's aus hier
Beiträge: 13

Win 7, Ubuntu 10.10
Delphi 5 Prof., Lazarus
BeitragVerfasst: Mi 25.08.10 23:39 
Aber auf jeden Fall har der Fehler was mit diesen acht Zeilen Quellecode zu tun.
Und er kam erst nachdem ich den Code so abgeändert hatte.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 25.08.10 23:42 
Was steht denn im Nachrichtenfenster von Delphi? Da sollte meisten "[Fehler]" oder bei der englischen Version "[Error]" stehen. Ohne der Fehlermeldung können wir leider nicht viel sagen.

Zum Beiträge löschen: Einfach auf "Beitrag melden" klicken und dann sagen das du dich verklickt hast. Das Team löscht dann den Beitrag. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
r@cer Threadstarter
Hält's aus hier
Beiträge: 13

Win 7, Ubuntu 10.10
Delphi 5 Prof., Lazarus
BeitragVerfasst: Mi 25.08.10 23:44 
Ok, diese beiden Zeilen wurden angezeigt:

[Fehler] Unit1.pas(35): Ungenügende Forward- oder External-Deklaration: 'TForm1.edit_zahl7Change'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 25.08.10 23:47 
lösch mal die rot markierte zeile. Ich glaube, das Problem erledigt sich dann. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.

Für diesen Beitrag haben gedankt: r@cer
r@cer Threadstarter
Hält's aus hier
Beiträge: 13

Win 7, Ubuntu 10.10
Delphi 5 Prof., Lazarus
BeitragVerfasst: Mi 25.08.10 23:51 
Ok vielen dank, das Programm läuft :)

und narürlich auch danke den Rest, ihr habt mir alle sehr geholfen.

lg r@cer
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 26.08.10 00:01 
Grund ist das du eine Methode deklariert hast, die du dann nicht ausformuliert hast. Du hast sozusagen dem Compiler gesagt: "Es gibt ne Methode mit diesem Namen". Und der sucht sich natürlich nen Wolf und findet die nicht. Deswegen: Wenn du mal unabsichtlich eine Methode erzeugt hast, entweder leer lassen (der Compiler optimiert die dann weg) oder auch die Deklaration löschen. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 26.08.10 02:06 
Es wäre hilfreicher, wenn du uns den Fehler nennen würdest, den die IDE ausgibt und nicht mit welcher Farbe die fehlerhafte Zeile unterlegt wird. ;)