Thema: Delphi Memory-Spiel: Ideen

Einzelnen Beitrag anzeigen

XardasLP
(Gast)

n/a Beiträge
 
#27

AW: Memory-Spiel: Ideen

  Alt 27. Jan 2016, 18:06
Zitat:
In diesem Thread geht es um das Memory Spiel und nicht um das Speichern von Benutzername und Passwort.
Ich mache doch nicht mehrere Threads für ein Komplexprogramm, am Ende muss das ja alles eine Verbindung haben.


Das einzige was wir mal mit Klassen ("komplex") gemacht haben ist das hier:

Unit1:
Delphi-Quellcode:
unit Umain;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    EditID: TEdit;
    ButtonND: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    RG: TRadioGroup;
    ButtonBA: TButton;
    ButtonSAVE: TButton;
    ButtonCLOSE: TButton;
    EditDS: TEdit;
    EditB: TEdit;
    EditLZ: TEdit;
    CB: TComboBox;
    EditmZ: TEdit;
    EditmR: TEdit;
    EditGz: TEdit;
    EditGza: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    procedure ButtonBAClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButtonNDClick(Sender: TObject);
    procedure RGClick(Sender: TObject);
    procedure ButtonSAVEClick(Sender: TObject);
    procedure ButtonCLOSEClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  liste: TStrings;
  anz: integer;

implementation

uses UDarlehen;

{$R *.dfm}

procedure TForm1.ButtonBAClick(Sender: TObject);
begin
 EditDS.Enabled := False;
  EditB.Enabled := False;
  EditLZ.Enabled := False;
  CB.Enabled := False;
  Label3.Enabled := False;
  Label4.Enabled := False;
  Label5.Enabled := False;
  Label6.Enabled := False;
  Label7.Enabled := True;
  Label8.Enabled := True;
  Label9.Enabled := True;
  Label10.Enabled := True;
  EditGZ.Enabled := True;
  EditGza.Enabled := True;
  EditmR.Enabled := True;
if (EditDS.Text = '') or (EditB.Text = '') or (EditLZ.Text = '') or (CB.Text = '')
    then begin
    EditDS.SetFocus;
         end
    else begin
        darlehen.set_DS(strtofloat(Editds.Text));
        darlehen.set_BE(strtodate(EditB.Text));
        darlehen.set_LZ(strtoint(EditLZ.Text));
        darlehen.set_JZ(strtofloat(CB.Text));
        case RG.ItemIndex of
          0: begin
                EditMR.Text := formatfloat('0.00',darlehen.get_mon_Raten);
                EditMZ.Clear;
                EditGZ.Text := formatfloat('0.00',darlehen.get_ges_zinsen);
                EditGza.Text := formatfloat('0.00',darlehen.get_ges_zahlung);
             end;
          1: begin
                EditMZ.Text := formatfloat('0.00',darlehen.get_mon_Zinsen);
                EditMR.Text := '';
             end;
    end;
     EditGz.Text := formatfloat('0.00', darlehen.get_ges_zinsen);
     EditGza.Text := formatfloat('0.00', darlehen.get_ges_zahlung);
end;
ButtonSave.Enabled := True;
ButtonClose.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  liste := TStringList.Create;
end;

procedure TForm1.ButtonNDClick(Sender: TObject);
begin
  ButtonND.Enabled := False;
  EditID.Enabled := False;
  Label2.Enabled := False;
  EditDS.Enabled := True;
  EditB.Enabled := True;
  EditLZ.Enabled := True;
  CB.Enabled := True;
  Label3.Enabled := True;
  Label4.Enabled := True;
  Label5.Enabled := True;
  Label6.Enabled := True;
  if RG.ItemIndex = -1
  then begin
          showmessage('Bitte Darlehensart auswählen! ');
       end
  else begin
          liste.LoadFromFile('darlehen.txt');
          anz := + liste.Count + 1000;
          //showmessage(inttostr(anz));
          EditID.Text := upcase(RG.Items[RG.ItemIndex][1]) + inttostr(anz);
          case RG.ItemIndex of
          0: darlehen := TAnnuitaetendarlehen.create(Editid.Text);
          1: darlehen := TEndfaelliges_Darlehen.create(Editid.Text);
          end;
          ButtonBA.Enabled := True;
       end;
end;

procedure TForm1.RGClick(Sender: TObject);
begin
ButtonND.Enabled := True;
Label2.Enabled := True;
end;

procedure TForm1.ButtonSAVEClick(Sender: TObject);
begin
  liste.Add(darlehen.speichern);
  liste.SaveToFile('darlehen.txt');
  showmessage('Daten erfolgreich gespeichert!');
  liste.Free;
  darlehen.Free;
end;

procedure TForm1.ButtonCLOSEClick(Sender: TObject);
begin
close;
end;

end.
Unit2:
Delphi-Quellcode:
unit UDarlehen;

interface

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

type
 TDarlehen = class
  protected
    Ident: string;
    Darlehensschuld: real;
    Beginn: TDateTime;
    Laufzeit: integer;
    Jahreszins: real;
    A: real;
  public
    constructor create;
    procedure set_DS (Wert: real);
    procedure set_BE (Wert: TDateTime);
    procedure set_LZ (Wert: integer);
    procedure set_JZ (Wert: real);
    function get_mon_Zinsen(): real; virtual;
    function get_mon_Raten(): real; virtual;
    function get_ges_zinsen(): real; virtual;
    function get_ges_zahlung(): real;
    function speichern(): string;
 end;

 TAnnuitaetendarlehen = class(TDarlehen)
   private
   public
    constructor create(id: string);
    function get_mon_Raten(): real; override;
    function get_ges_Zinsen(): real; override;
 end;

 TEndfaelliges_Darlehen = class(TDarlehen)
    public
      constructor create(id: string);
      function get_mon_Zinsen(): real; override;
      function get_ges_Zinsen(): real; override;
 end;

var
darlehen: TDarlehen;


implementation


//*-----*//TDarlehen//*-----*//

constructor TDarlehen.create;
begin
//
end;


procedure TDarlehen.set_DS (Wert: real);
begin
  Darlehensschuld := wert;
end;


procedure TDarlehen.set_BE (Wert: TDateTime);
begin
  Beginn := wert;
end;


procedure TDarlehen.set_LZ (Wert: integer);
begin
  Laufzeit := wert;
end;


procedure TDarlehen.set_JZ (Wert: real);
begin
  Jahreszins := wert;
end;


function TDarlehen.get_mon_Zinsen(): real;
begin
//
end;


function TDarlehen.get_mon_Raten(): real;
begin
//
end;


function TDarlehen.get_ges_zinsen(): real;
begin
//
end;


function TDarlehen.get_ges_zahlung(): real;
begin
  result := Darlehensschuld + get_ges_zinsen;
end;


function TDarlehen.speichern(): string;
begin
  result := Ident + '#' + formatfloat('0.00',darlehensschuld)
                  + '#' + datetostr(Beginn)
                  + '#' + inttostr(Laufzeit)
                  + '#' + formatfloat('0.00',jahreszins)
                  + '#' + formatfloat('0.00',get_mon_zinsen)
                  + '#' + formatfloat('0.00',get_mon_raten)
                  + '#' + formatfloat('0.00',get_ges_zinsen)
                  + '#' + formatfloat('0.00',get_ges_zahlung);
end;


//*-----*//TAnnuitaetendarlehen//*-----*//

constructor TAnnuitaetendarlehen.create(id: string);
begin
  Ident := id;
end;


function TAnnuitaetendarlehen.get_mon_Raten(): real;
begin
  result := Darlehensschuld * power(1 + Jahreszins/1200, Laufzeit)
            *(Jahreszins/1200) /(power(1 + Jahreszins/1200, Laufzeit) -1);
  //Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als
  //Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben,
  //muss Base größer als 0 sein.
end;


function TAnnuitaetendarlehen.get_ges_Zinsen(): real;
begin
  result := get_mon_Raten * laufzeit - Darlehensschuld;
end;


//*-----*//TEndfaelliges_Darlehen//*-----*//


constructor TEndfaelliges_Darlehen.create(id: string);
begin
  Ident := id;
end;


function TEndfaelliges_Darlehen.get_mon_Zinsen(): real;
begin
  result := get_ges_Zinsen
end;


function TEndfaelliges_Darlehen.get_ges_Zinsen(): real;
begin
  result := Darlehensschuld * power(1 + Jahreszins/100 {wegen Prozent},
            Laufzeit/12) - Darlehensschuld
end;


end.
  Mit Zitat antworten Zitat