![]() |
OOP mit Delphi!
Hallo!
Ich wollte eine Vererbung in Delphi machen! Aus irgendwelchen Gründen klappt das aber nicht bei mir! kann mir jemand vielleicht helfen? das wäre eht super! Muss ich denn die prozeduren und funktionen usw., die ich vererben will in protected schreiben? ich habe sie nämlich in private stehen! Vielen dank Anja |
Re: OOP mit Delphi!
Zeig mal deine Klassenstruktur.
|
Re: OOP mit Delphi!
Delphi-Quellcode:
[edit=Christian Seehase] Delphi-Tags hinzugefügt. Bitte künftig selber machen. Danke Mfg, Christian Seehase[/edit]
Unit UBruch;
Interface Type TBruch = Class Protected Z, N : Integer; Procedure Kuerzen; Public Constructor Create (EZ, EN : Integer); Function Zaehler_gekuerzt : Integer; Function Nenner_gekuerzt : Integer; End; TGBruch = Class(TBruch) Private E : integer; procedure kuerzen; Public Function Z_ges : integer; end; Implementation Procedure TBruch.Kuerzen; {Euklidischer Algorithmus} Var NZ, NN : Integer; Rest : Integer; Begin NZ := Z; NN := N; Repeat Rest := NZ Mod NN; If Rest <> 0 Then Begin NZ := NN; NN := Rest End; Until Rest = 0; Z := Z Div NN; N := N Div NN; End; Procedure TGBruch.kuerzen; begin inherited kuerzen; Z := Z mod N; E := Z div N; End; Constructor TBruch.Create (EZ, EN : Integer); Begin Z := EZ; N := EN; End; Function TBruch.Zaehler_gekuerzt : Integer; Begin Kuerzen; Zaehler_gekuerzt := Z; End; Function TBruch.Nenner_gekuerzt : Integer; Begin Kuerzen; Nenner_gekuerzt := N; End; Function TGBruch.Z_ges : Integer; Begin Kuerzen; Z_ges := E; end; End. |
Re: OOP mit Delphi!
Delphi-Quellcode:
[edit=Christian Seehase] Delphi-Tags hinzugefügt. Mfg, Christian Seehase[/edit]
unit PBruchhaupt;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, UBruch; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Panel1: TPanel; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label5: TLabel; Label6: TLabel; Button2: TButton; Panel3: TPanel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Bruch: TBruch; GBruch: TGbruch; E : integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Bruch := TBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text)); Panel1.Caption := IntToStr(Bruch.Zaehler_gekuerzt); Panel2.Caption := IntToStr(Bruch.Nenner_gekuerzt); Panel3.caption := IntToStr(GBruch.Z_ges); end; procedure TForm1.Button2Click(Sender: TObject); begin Bruch.Destroy; Close; end; end. |
Re: OOP mit Delphi!
Hi,
Zitat:
Was klappt den nicht bei den Klassen? Die Syntax scheint OK! Hier:
Delphi-Quellcode:
cu
procedure TForm1.Button1Click(Sender: TObject);
begin Bruch := TBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text)); Panel1.Caption := IntToStr(Bruch.Zaehler_gekuerzt); Panel2.Caption := IntToStr(Bruch.Nenner_gekuerzt); Panel3.caption := IntToStr(GBruch.Z_ges);// hier müsste es krachen, GBruch scheint nicht createt zu sein end; waba |
Re: OOP mit Delphi!
Oh super, danke!
Wie kann man denn das createn? Geht das genauso wie bei dem UBruch? Kenn mich leider noch net so gut damit aus, hab gerade erst mit OOP angefangen (1 Stunde in der schule)... viele Dank für die Hilfe!!! |
Re: OOP mit Delphi!
na genauso:
Delphi-Quellcode:
die Klasse TGBruch hat keinen eigenen Konstructor, weswegen der Konstructor der überschriebenen Klasse (TBruch) aufgerufen wird.
var myGBruch:TGBruch;
mybruch:TBruch; begin myGBruch:=TGBruch.create(1,1);// erzeugt instanz von TGBruch myBruch:=TBruch.create(1,1);//erzeugt Instanz von TBruch myBruch.free; myGBruch.free; end; cu waba |
Re: OOP mit Delphi!
Und wo schreibe ich das hin?
ich habe das jetzt in die Unit Bruch geschrieben. Irgendwie kommt aber trotzdem die gleiche fehlermeldung wie vorher. Der erkennt die GBruch.Z_ges in der Unit PBruchhaupt nicht zu finden. Woher weißt du das eigentlich alles? Vielen Dank nochmal für deine Hilfe!!! Ist echt super nett!!! |
Re: OOP mit Delphi!
da wo du die globale Variable 'GBruch' deklariert hast, in der Form-Unit. zb. in die ButtonClick-Routine:
Delphi-Quellcode:
woher ich das weiss, hab die OH gelesen :wink:
GBruch := TGBruch.Create(StrtoInt(Edit1.Text),StrtoInt(Edit2.Text));
Panel1.Caption := IntToStr(GBruch.Zaehler_gekuerzt); Panel2.Caption := IntToStr(GBruch.Nenner_gekuerzt); Panel3.caption := IntToStr(GBruch.Z_ges); gbruch.free; cu waba |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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