AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Schulprojekt: Thema: Berechnungen am Rechteck
Thema durchsuchen
Ansicht
Themen-Optionen

Schulprojekt: Thema: Berechnungen am Rechteck

Ein Thema von Dennis S. · begonnen am 16. Feb 2010 · letzter Beitrag vom 16. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23      
Dennis S.

Registriert seit: 16. Feb 2010
Ort: Kreiensen
11 Beiträge
 
Delphi 7 Personal
 
#1

Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:15
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
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:22
Bei der Berechnung kann eine Zahl rauskommen, die keine Ganzzahl ist (zB: 5/3). IntToStr wandelt aber nur Ganzzahlen in eine Zeichenkette.
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:25
Wenn du stattdessen FloatToStr oder Format nimmst, lässt sich dieses Problem jedoch ganz einfach umgehen.

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:25
Hallo

FloatToStr
oder
FloatToStrF

sind hier Deine Freunde.
Markus H.
  Mit Zitat antworten Zitat
Dennis S.

Registriert seit: 16. Feb 2010
Ort: Kreiensen
11 Beiträge
 
Delphi 7 Personal
 
#5

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:27
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 '
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:30
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.
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:32
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?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Dennis S.

Registriert seit: 16. Feb 2010
Ort: Kreiensen
11 Beiträge
 
Delphi 7 Personal
 
#8

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:36
@ Tyreal: Ja genau da stehts 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. '
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:40
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.
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Dennis S.

Registriert seit: 16. Feb 2010
Ort: Kreiensen
11 Beiträge
 
Delphi 7 Personal
 
#10

Re: Schulprojekt: Thema: Berechnungen am Rechteck

  Alt 16. Feb 2010, 16:42
also es sind insgesammt 5 Felder. Wovon 3 angesprochen wurden. Eins ist leer, endweder ist es BreiteEdit oder LaengeEdit. FlaecheEdit muss ja was drinstehen
IF (LaengeEdit.Text <> '') or ((BreiteEdit.Text<> '') and (FlaecheEdit.Text <> ''))
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.
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