WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [Pascal] Dateitypenproblem (http://www.wcm.at/forum/showthread.php?t=149646)

3of4 07.11.2004 07:47

[Pascal] Dateitypenproblem
 
Hab ein Programm, das irgendeine Cosinustabelle ausrechnen soll, nur leider keine Ahnung von Pascal und keine Zeit mich einzulesen (Schulstress, muss heut noch 40 Seiten schreiben).
Wenn also jemand die Fehler enddeckt, bitte ausbessern und sagen wo der Fehler gesteckt hatte (mein Bruder will auch wissen was falsch ist)

code:
Code:

unit Cosinustabelle;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TCosinus = class(TForm)
    Schrittweite: TLabel;
    Eingabefeld: TEdit;
    Berechnen: TButton;
    Beenden: TButton;
    Ausgabefeld: TMemo;
    procedure BerechnenClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Cosinus: TCosinus;




implementation

{$R *.dfm}



procedure TCosinus.BerechnenClick(Sender: TObject);

Const Pi= 3.1415926535898;

Var
 Schrittweite,grad:integer;
 i, aus:integer;
 gr, co, ausg:real;

Begin
  Ausgabefeld.clear;
  Schrittweite := StrToInt(Eingabefeld.Text);

 If Schrittweite > 90 Then
    ShowMessage ('Schrittweite zu groß');

 If Schrittweite <=0 Then
    ShowMessage ('Schrittweite zu klein');
 Try
    Schrittweite := StrToInt(Eingabefeld.Text);
 Except
    ShowMessage ('ungültige Eingabe');
 i:= 0;
 grad:= i+Schrittweite;
 While grad<=90 Do
  begin


    gr:= grad*(Pi/180);
    co:= cos(gr);

    str (grad :2, aus);
    str (co:2:4, ausg);

    Ausgabefeld.Lines.Add('cos('aus'):'ausg);

    grad:= grad+Schrittweite ;

  end;

end;

end;


jak 08.11.2004 12:27

Eine genaue Fehlermeldung wäre hilfreich, ich möcht Delphi jetzt nicht installieren.
Rein von der Logik ist dieser Block aber sehr seltsam:
Code:

Schrittweite := StrToInt(Eingabefeld.Text);

 If Schrittweite > 90 Then
    ShowMessage ('Schrittweite zu groß');

 If Schrittweite <=0 Then
    ShowMessage ('Schrittweite zu klein');
 Try
    Schrittweite := StrToInt(Eingabefeld.Text);
 Except
    ShowMessage ('ungültige Eingabe');

der Try Except Block gehört ganz an den Anfang, sonst ist er sinnlos.
Code:

Try
    Schrittweite := StrToInt(Eingabefeld.Text);
 Except
    ShowMessage ('ungültige Eingabe');
 If Schrittweite > 90 Then
    ShowMessage ('Schrittweite zu groß');

 If Schrittweite <=0 Then
    ShowMessage ('Schrittweite zu klein');

Dieser Teil ist auch sehr komisch:
Code:

    str (grad :2, aus);
    str (co:2:4, ausg);
Ausgabefeld.Lines.Add('cos('aus'):'ausg);

aus ist ein Integer, ausg ist überhaupt nicht definiert.Str gibt einen String zurück.
Du müßt also bei den Variablen oben statt
i, aus:integer; //i wird nie verwendet
aus, ausg:string;
Auerdem schätz ich mal, daß statt
Ausgabefeld.Lines.Add('cos('aus'):'ausg);
Ausgabefeld.Lines.Add('cos('+aus+'):'+ausg);
hingehört.

Jak


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag