![]() |
Schulprojekt: Thema: Berechnungen am Rechteck
Hallo Leute,
ich habe das Programieren ganz neu in der Schule gelernt. Wir sollen nun ein Programm schreiben, mit dem man die Fläche, den Umfang und die Diagonale eines Rechtecks berechnen kann, wenn man die Seiten a und b hat. Aufgabe 2 war, das Programm so zuerweitern, das wenn man Seite a oder b + die Fläche eingibt, dass das Programm dann die fehlende Seite ausspuckt. Hier mein Quelltext:
Delphi-Quellcode:
So. Folgendes Problem hat sich nun ergeben: Delphi gibt mir an den letzten 2 Befehlen
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; LaengeEdit: TEdit; BreiteEdit: TEdit; FlaecheEdit: TEdit; DiagonaleEdit: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; UmfangEdit: TEdit; RechnenButton: TButton; AbbruchButton: TButton; Label11: TLabel; procedure AbbruchButtonClick(Sender: TObject); procedure RechnenButtonClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AbbruchButtonClick(Sender: TObject); begin Close; end; procedure TForm1.RechnenButtonClick(Sender: TObject); begin IF (LaengeEdit.Text <> '') and (BreiteEdit.Text <> '') THEN begin FlaecheEdit.Text := IntToStr(StrToInt(LaengeEdit.Text)*StrToInt(BreiteEdit.Text)); UmfangEdit.Text := IntToStr(StrToInt(LaengeEdit.Text)*2+StrToInt(BreiteEdit.Text)*2); DiagonaleEdit.Text := FloatToStr(sqrt(StrToInt(LaengeEdit.Text)*StrToInt(LaengeEdit.Text)+StrToInt(BreiteEdit.Text)*StrToInt(BreiteEdit.Text))); Label11.Caption := ''; end ELSE begin IF (LaengeEdit.Text <> '') or ((BreiteEdit.Text<> '') and (FlaecheEdit.Text <> '')) THEN begin LaengeEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(BreiteEdit.Text)); BreiteEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(LaengeEdit.Text)); end ELSE Label11.Caption := 'Fehlende Eingabe' end end; end.
Delphi-Quellcode:
die Meldung:
begin
LaengeEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(BreiteEdit.Text)); BreiteEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(LaengeEdit.Text)); end '[Fehler] Unit1.pas(65): Es gibt keine überladene Version von 'IntToStr', die man mit diesen Argumenten aufrufen kann' Mein Informatiklehrer hat auch keinen Plan wie das funktionieren könnte. Wäre echt cool wenn mir jemand sagen könnte was ich da falsch mache. Danke im Vorraus. MfG Dennis |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Bei der Berechnung kann eine Zahl rauskommen, die keine Ganzzahl ist (zB: 5/3). IntToStr wandelt aber nur Ganzzahlen in eine Zeichenkette.
|
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Wenn du stattdessen FloatToStr oder Format nimmst, lässt sich dieses Problem jedoch ganz einfach umgehen.
mfg |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Hallo
FloatToStr oder FloatToStrF sind hier Deine Freunde. |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Danke
kannst ihr mir den genauen Befehl für dafür sagen? Soweit sind wir noch nicht gekommen und im Netz steht soviel Zeugs das ich eweig suchen würde. Wir hatten bisher nur FloatToStr aber der geht ja nicht. Und bei FloatToStrF kommt wieder ' [Fehler] Unit1.pas(65): Es gibt keine überladene Version von 'FloatToStrF', die man mit diesen Argumenten aufrufen kann ' |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Zitat:
|
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Delphi-Quellcode:
...auch an der richtigen Stelle benutzt?
LaengeEdit.Text := FloatToStr(StrToInt(FlaecheEdit.Text)/StrToInt(BreiteEdit.Text));
BreiteEdit.Text := FloatToStr(StrToInt(FlaecheEdit.Text)/StrToInt(LaengeEdit.Text)); |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
@ Tyreal: Ja genau da stehts :wink: ich sitze hier schon ne ganzeweile und versuche alles mirbekannte durch. Das ist sicher nicht der Fehler.
@ Patti: Das habe ich schon probiert, aber wenn ich dann das Programm im Testlauf starte und auf den RechnenButton drücke gibt es eine Fehlermeldung: ' Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: ''' ist kein gültiger Integerwert'. Prozess wurde angehalten. ' |
Re: Schulprojekt: Thema: Berechnungen am Rechteck
Dann stimmt wohl eine Eingabe in den EditFeldern nicht. Wenn da z.B. Buchstaben drinstehen, dann liefert FloatToStr (wie auch IntToStr) einen Fehler. Du musst vorher überprüfen, ob eine gültige Eingabe in allen Feldern vorhanden ist. Deiner Beschreibung nach ist wohl mindestens eines der Felder leer, wenn du auf den Button klickst.
|
Re: Schulprojekt: Thema: Berechnungen am Rechteck
also es sind insgesammt 5 Felder. Wovon 3 angesprochen wurden. Eins ist leer, endweder ist es BreiteEdit oder LaengeEdit. FlaecheEdit muss ja was drinstehen
Delphi-Quellcode:
IF (LaengeEdit.Text <> '') or ((BreiteEdit.Text<> '') and (FlaecheEdit.Text <> ''))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz