ich habe ein folgendes problem !!!
Ich will mit mein eigenen erzeugten TKreisHelfer Objekt die Flaeche in Memo1 und Umfang in Memo2 ausgeben.
Es läuft bis "Button 4" ohne Fehler.
Button 5 Soll es Füllen und Button 6 Ausgeben.
Könnt ihr mir dabei helfen.. ?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, contnrs;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
{ TGeometrieHelfer }
TGeometrieHelfer = class
private
fBreite: double;
fLaenge: double;
fRadius: double;
fDurchmesser: double;
fPi: double;
protected
function GetFlaeche: double; virtual; abstract;
function GetUmfang: double; virtual; abstract;
public
constructor Create;
destructor Destroy; override;
end;
{ TRechteckHelfer }
TRechteckHelfer = class(TGeometrieHelfer)
private
protected
public
constructor Create(ABreite, ALaenge: double);
destructor Destroy; override;
function GetFlaeche: double; override;
function GetUmfang: double; override;
end;
{ TKreisHelfer }
TKreisHelfer = class(TGeometrieHelfer)
private
protected
public
constructor Create(ADurchmesser,ARadius: double); overload;
constructor Create; overload;
destructor Destroy; override;
function GetFlaeche: double; override;
function GetUmfang: double; override;
end;
{ TGeometrieliste }
TGeometrieliste = class(TObjectlist)
private
protected
public
constructor Create;
destructor Destroy; override;
end;
var
Form1: TForm1;
GeometrieHelfer: TGeometrieHelfer;
RechteckHelfer: TRechteckHelfer;
KreisHelfer: TKreisHelfer;
Geometrieliste: TGeometrieliste;
implementation
{ TGeometrieliste }
constructor TGeometrieliste.Create;
begin
inherited create(true);
end;
destructor TGeometrieliste.Destroy;
begin
inherited Destroy;
end;
{ TKreisHelfer }
constructor TKreisHelfer.Create(ADurchmesser,ARadius: double);
begin
inherited Create;
fDurchmesser := ADurchmesser;
fRadius := ARadius;
end;
constructor TKreisHelfer.Create;
begin
fRadius := random(100);
fDurchmesser := 0;
end;
destructor TKreisHelfer.Destroy;
begin
inherited Destroy;
end;
function TKreisHelfer.GetFlaeche: double;
begin
Result := fPi * fDurchmesser * fDurchmesser / 4;
end;
function TKreisHelfer.GetUmfang: double;
begin
Result := 2 * fPi * fRadius;
end;
{ TRechteckHelfer }
constructor TRechteckHelfer.Create(ABreite, ALaenge: double);
begin
inherited Create;
fBreite := ABreite;
fLaenge := ALaenge;
end;
destructor TRechteckHelfer.Destroy;
begin
inherited Destroy;
end;
function TRechteckHelfer.GetFlaeche: double;
begin
Result := fBreite * fLaenge;
end;
function TRechteckHelfer.GetUmfang: double;
begin
Result := 2 * fBreite + 2 * fLaenge;
end;
{ TGeometrieHelfer }
constructor TGeometrieHelfer.Create;
begin
fBreite := 0.0;
fLaenge := 0.0;
fRadius := 0.0;
fDurchmesser := 0.0;
fPi := 3.14;
end;
destructor TGeometrieHelfer.Destroy;
begin
inherited Destroy;
end;
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
Geometriehelfer := TGeometrieHelfer.Create;
Geometrieliste := TGeometrieliste.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
i := 0;
For i := 1 to 10 do begin
if (( i mod 2 ) <> 0 ) then begin
Memo1.Lines.Add(IntToStr(i));
end else begin
Memo2.Lines.Add(IntToStr(i));
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
i := 0;
Repeat
i := i + 1;
if (( i mod 2 ) <> 0 ) then begin
Memo1.Lines.Add(IntToStr(i));
end else begin
Memo2.Lines.Add(IntToStr(i));
end;
until i >= 10;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Breite, Laenge: double;
i: integer;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
For i := 1 to 10 do begin
Breite := i;
Laenge := i;
RechteckHelfer := TRechteckHelfer.Create(Breite, Laenge);
try
Memo1.Lines.Add(Format('Flaeche: %2f' , [RechteckHelfer.GetFlaeche]));
Memo2.Lines.Add(Format('Umfang: %2f' , [RechteckHelfer.GetUmfang]));
finally
FreeAndNil(RechteckHelfer);
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i: integer;
Radius: double;
Durchmesser: double;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
For i := 1 to 10 do begin
Radius := i;
Durchmesser := i;
KreisHelfer := TKreisHelfer.Create(Radius, Durchmesser);
try
Memo1.Lines.Add(Format('Flaeche: %2f' , [KreisHelfer.GetFlaeche]));
Memo2.Lines.Add(Format('Umfang: %2f' , [KreisHelfer.GetUmfang]));
finally
FreeAndNil(KreisHelfer);
end;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i: integer;
kh: TKreisHelfer;
begin
Geometrieliste.Clear;
i := 0;
For i := 1 to 100 do begin
kh := TKreisHelfer.Create;
Geometrieliste.Add(kh);
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i: integer;
kh: TKreisHelfer;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
i := 0;
For i := 1 to Geometrieliste.Count do begin
kh := TKreisHelfer(Geometrieliste.Items[i]);
Memo1.Lines.Add(Format('Flaeche: %d' , [Geometrieliste.Count]));
Memo2.Lines.Add(Format('Umfang: %d' , [Geometrieliste.Count]));
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
FreeAndNil(Geometrieliste);
end;
end.
Gruß,
helpge1