Witam.
Mam problem z polimorficznym wywołaniem funkcji:
function TForm1.Sprawdz(Rownanie:TRownanie;Index:Integer):Boolean;
begin
if StrToInt(Form1.EWynik.Text)=Rownanie.ObliczWynik(Index) then
begin
Form1.PanelInfo.Font.Color:=clGreen;
Form1.PanelInfo.Caption:='DOBRZE';
result:=True;
end else
begin
Form1.PanelInfo.Font.Color:=clRed;
Form1.PanelInfo.Caption:='ŹLE - SPRÓBUJ JESZCZE RAZ';
result:=False;
end;
end;
Klasy bazowa i dziedzicząca wyglądają tak:
TRownanie = class
private
IloscDzialan:Integer;
MaxWynik:Integer;
Liczba1: array of Integer;
Liczba2: array of Integer;
Liczba3: array of Integer;
Operator:String;
protected
public
constructor Create(IloscDzialan_:Integer); virtual;
destructor Destroy;
procedure GenerujLiczby(Min:Integer;Max:Integer);virtual;abstract;
function PokazRownanie(Index:Integer):String;virtual;abstract;
function ObliczWynik(Index:Integer):Integer;virtual;abstract;
published
end;
TDodawanie = class(TRownanie)
private
protected
public
constructor Create(IloscDzialan_:Integer;MaxWynik_:Integer); virtual;
destructor Destroy;
procedure GenerujLiczby(Min:Integer;Max:Integer);virtual;
function PokazRownanie(Index:Integer):String;virtual;
function ObliczWynik(Index:Integer):Integer;virtual;
end;
//funkcja
function TDodawanie.ObliczWynik(Index:Integer):Integer;
begin
ShowMessage('function TDodawanie.ObliczWynik(Index:Integer):Integer;');
result:=Liczba1[Index]+Liczba2[Index]+Liczba3[Index];
end;
Samo wywołanie realizowane jest jak niżej:
procedure TForm1.BtSprawdzClick(Sender: TObject);
var
Dodawanie:TDodawanie;
...............................
Form1.Sprawdz(Dodawanie,IndexDzialania-1); //-->> polimorficzne wywolanie funkcji - definicja na samym początku posata
Jest to czysto edukacyjny poglądowy projekt dla opanowania zagadnienia polimorfizmu w Delphi ........ wywala błąd dostępu do pamięci, przekroczenie zakresu
access violation samej funkcji na pewno nie zakresu zmiennych bo to sprawdzałem....... jest chyba jakiś problem z dostępem do samej funkcji, orientacją z którego obiektu ma być wywołana czyli samym polimorfizmem
HELP.