Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Schulprojekt: Thema: Berechnungen am Rechteck (https://www.delphipraxis.net/147795-schulprojekt-thema-berechnungen-am-rechteck.html)

Dennis S. 16. Feb 2010 15:15


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:
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.
So. Folgendes Problem hat sich nun ergeben: Delphi gibt mir an den letzten 2 Befehlen
Delphi-Quellcode:
    begin
     LaengeEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(BreiteEdit.Text));
     BreiteEdit.Text := IntToStr(StrToInt(FlaecheEdit.Text)/StrToInt(LaengeEdit.Text));
    end
die Meldung:
'[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

Reinhardtinho 16. Feb 2010 15:22

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.

patti 16. Feb 2010 15:25

Re: Schulprojekt: Thema: Berechnungen am Rechteck
 
Wenn du stattdessen FloatToStr oder Format nimmst, lässt sich dieses Problem jedoch ganz einfach umgehen.

mfg

markus5766h 16. Feb 2010 15:25

Re: Schulprojekt: Thema: Berechnungen am Rechteck
 
Hallo

FloatToStr
oder
FloatToStrF

sind hier Deine Freunde.

Dennis S. 16. Feb 2010 15:27

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 '

patti 16. Feb 2010 15:30

Re: Schulprojekt: Thema: Berechnungen am Rechteck
 
Zitat:

Zitat von Dennis S.
Wir hatten bisher nur FloatToStr aber der geht ja nicht.

Meinst du IntToStr? Denn FloatToStr sollte in deinem Fall eigentlich sehr gut funktionieren... Einfach oben das IntToStr durch FloatToStr ersetzen und ausprobieren.

Tyrael Y. 16. Feb 2010 15:32

Re: Schulprojekt: Thema: Berechnungen am Rechteck
 
Delphi-Quellcode:
  LaengeEdit.Text := FloatToStr(StrToInt(FlaecheEdit.Text)/StrToInt(BreiteEdit.Text));
  BreiteEdit.Text := FloatToStr(StrToInt(FlaecheEdit.Text)/StrToInt(LaengeEdit.Text));
...auch an der richtigen Stelle benutzt?

Dennis S. 16. Feb 2010 15:36

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. '

patti 16. Feb 2010 15:40

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.

Dennis S. 16. Feb 2010 15:42

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 05:19 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz