Einzelnen Beitrag anzeigen

mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#1

Einfaches MVC Modell funktioniert nicht!

  Alt 10. Jun 2007, 16:18
Hallo,

habe einen BMI Rechner auf MVC Basis programmiert und auch beim zweiten unabhängigen Programmieren trat der gleiche Fehler auf ...das Programm kann compiliert werden, jedoch wenn Werte eingegeben wurden und das Programm den BMI berechnen soll, erscheint ein Fehler!

Vielleicht kann sich jemand das mal ansehen...wäre super nett!!

Delphi-Quellcode:
unit uView_Control;

interface

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

type
  TForm1 = class(TForm)
    GroesseLblEdt: TLabeledEdit;
    GewichtLblEdt: TLabeledEdit;
    BMILblEdt: TLabeledEdit;
    BerechneBtn: TButton;
    procedure BerechneBtnClick(Sender: TObject);
    procedure Datenaktualisieren;
    procedure Maskeaktualisieren;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Modell: TModell;

implementation

{$R *.dfm}

procedure TForm1.BerechneBtnClick(Sender: TObject);
begin
  Datenaktualisieren;
  Maskeaktualisieren;
end;

procedure TForm1.Datenaktualisieren;
begin
  Modell.setGroesse(strtoint(GroesseLblEdt.Text));
  Modell.setGewicht(strtoint(GewichtLblEdt.Text));
end;

procedure TForm1.Maskeaktualisieren;
begin
  BMILblEdt.Text := floattostr(Modell.getBMI);
end;

end.
Delphi-Quellcode:
unit uModell;

interface

type
  TModell = class(TObject)
  private
    Groesse : Integer;
    Gewicht : Integer;
    BMI : Real;
  public
    procedure setGroesse (a:Integer);
    procedure setGewicht (a:Integer);
    function getBMI : Real;

end;

implementation

procedure TModell.setGroesse(a: Integer);
begin
  Groesse := a; // hier soll laut Delphi der Fehler liegen!
end;

procedure TModell.setGewicht(a: Integer);
begin
  Gewicht := a;
end;

function TModell.getBMI : Real;
begin
  BMI := Gewicht/((Groesse/100)*(Groesse/100));
  result := BMI;
end;
end.

Folgende Fehlermeldung erscheint:
Im Projekt BMI.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0045055C in Modul 'BMI.exe'. Schreiben von Adresse 00000004'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.


Vielen Dank!!
  Mit Zitat antworten Zitat