![]() |
Problem mit Fehlermeldung
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo
Ich habe ein Problem. Wenn ich mein Programm starte dann kommt diese Fehlermeldung: Zugriffsverletzung bei Adresse 00403441 in Modul 'MATHE4.exe'. Lesen von Adresse 00000000. Hier der komplette Quelltext:
Delphi-Quellcode:
Kann mir jemand helfen?
unit ZINS1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TZins = class (TObject) Kapital, Prozent, Zinsen: Single; constructor Create; procedure SetKapital (Txt: String); procedure SetProzent (Txt: String); procedure SetZinsen (Txt: String); function GetKapital: String; function GetProzent: String; function GetZinsen:String; end; TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } procedure SetZero; public { Public-Deklarationen } end; var Form1: TForm1; Zins : TZins; Modus: Integer; implementation {$R *.dfm} constructor TZins.Create; begin inherited Create; end; procedure TZins.SetKapital(Txt: String); begin Kapital := StrToFloat (Txt); end; procedure TZins.SetProzent(Txt: String); begin Prozent := StrToFloat (Txt); end; procedure TZins.SetZinsen(Txt: String); begin Zinsen := StrToFloat (Txt); end; function TZins.GetKapital: String; begin Kapital := Zinsen * 100 / Prozent; GetKapital := FloatToStrF(Kapital,ffNumber,8,2); end; function TZins.GetProzent: String; begin Prozent := Zinsen *100 / Kapital; GetProzent := FloatToStrF(Prozent,ffNumber,8,2); end; function TZins.GetZinsen: String; begin Zinsen := Kapital * Prozent / 100; GetZinsen := FloatToStrF(Zinsen,ffNumber,8,2); end; procedure TForm1.SetZero; begin Zins.Kapital := 0; Zins.Prozent := 0; Zins.Zinsen := 0; Edit1.Text := '0'; Edit2.Text := '0'; Edit3.Text := '0'; Modus := 0; end; procedure TForm1.FormCreate(Sender: TObject); begin Zins := Zins.Create; SetZero; end; procedure TForm1.Button1Click(Sender: TObject); begin SetZero; Label1.Caption := 'Setz nur die gesuchte Größe auf Null!'; end; procedure TForm1.Button2Click(Sender: TObject); begin Label1.Caption := 'Das ist das Ergebnis'; Zins.SetKapital(Edit1.Text); if Edit1.Text = '0' then inc (Modus); Zins.SetProzent(Edit2.Text); if Edit2.Text = '0' then inc (Modus,10); Zins.SetZinsen(Edit3.Text); if Edit3.Text ='0' then inc (Modus,100); case Modus of 1 : Edit1.Text := Zins.GetKapital; 10 : Edit2.Text := Zins.GetProzent; 100: Edit3.Text := Zins.GetZinsen; else Label1.Caption := 'Keine oder zu viele Nullen!'; end; Modus := 0; end; end. Hier auch nochmal die Dateien: |
Re: Problem mit Fehlermeldung
Fehler:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Zins := Zins.Create; SetZero; end; Korrigiert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Zins := TZins.Create; SetZero; end; |
Re: Problem mit Fehlermeldung
Danke
Es leuft :spin2: . War einfach nur ein dummer Schusselfehler :wall: . |
Re: Problem mit Fehlermeldung
GuenterS hat dir ja den Fehler bereits korrigiert... Dennoch ein paar Anmerkungen zu deiner Struktur, die, wie ich finde, nicht wirklich schön aufgestellt ist:
Delphi-Quellcode:
interface
type TZins = class (TObject) private function GetKapital: single; procedure SetKapital(const Value: single); public property Kapital : single read GetKapital write SetKapital ; end; implementation { TZins } function TZins.GetKapital: single; begin return ... end; procedure TZins.SetKapital(const Value: single); begin FKapital := value ; end; end. |
Re: Problem mit Fehlermeldung
Trotzdem wäre eine genauere Beschreibung im Titel sinnvoll gewesen, z.B.
Zitat:
So globale Titel wie "programm geht nich" werden ebenso wie Dein Titel von einigen Leuten nicht gerne gesehen. Und ein Anfängerforum wo das nicht so auffiele, gibt es hier nicht. Grüße, Messie |
Re: Problem mit Fehlermeldung
Naja, der Fehler war ja bei der Frage eben noch nicht bekannt... Ausserdem liefert ja ein
Zins := Zins.Create ; beim Kompilieren keinen Fehler. Und beim Ausführen kommt eben nur diese Schutzverletzung, ohne grössere Angabe, was denn da nun fehlgeschlagen ist... Gerade für Anfänger eben nicht besonders hilfreich, und man tappt erstmal ne Zeit lang im Dunkeln. |
Re: Problem mit Fehlermeldung
Zitat:
|
Re: Problem mit Fehlermeldung
Wenn man weiß, wie man damit umgeht, ja.
Gerade als Anfänger weiß man das, denke ich, nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz