Witam,
Mam do napisania program z klasą statyczną do obliczeń na wektorach. Mam problem, bo wywala mi program gdy się odwołuje do elementu z tablicy w obiekcie. Pisze "Cannot access memory"
Problem może być trywialny, ale muszę to napisać na jutro. Proszę o szybką pomoc ;)
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
type
TWektor = class(TObject)
protected
const ROZMIAR = 2;
private
_w3:TWektor;
wektor:array of Integer;
procedure wpisz(_x,_y:Integer);
function dodaj(_w2:TWektor):TWektor;
function odejmij(_w2:TWektor):TWektor;
function iloczSk(_w2:TWektor):Integer;
function iloczWek(_w2:TWektor):Integer;
public
constructor Create; overload;
procedure wyswietl;
end;
constructor TWektor.Create;
begin inherited Create;
SetLength(wektor, 2);
end;
procedure TWektor.wyswietl;
// var
// i:Integer;
begin
//writeln('Skladowe tego wektora to: ');
// for i:= 0 to TWektor.ROZMIAR do
// begin
// write(wektor[i]);
// write(' ,');
// end;
write(wektor[0], ',', wektor[1]);
end;
procedure TWektor.wpisz(_x,_y:Integer);
begin
wektor[0]:= _x;
wektor[1]:= _y;
end;
function TWektor.dodaj(_w2:TWektor):TWektor;
begin
_w3:= TWektor.Create;
_w3.wpisz(wektor[0]+_w2.wektor[0],wektor[1]+_w2.wektor[1]);
Result:=_w3;
end;
function TWektor.odejmij(_w2:TWektor):TWektor;
begin
_w3:= TWektor.Create;
_w3.wpisz(wektor[0]-_w2.wektor[0],wektor[1]-_w2.wektor[1]);
Result:=_w3;
end;
function TWektor.iloczSk(_w2:TWektor):Integer;
begin
Result:= wektor[0]*_w2.wektor[0] + wektor[1]*_w2.wektor[1];
end;
function TWektor.iloczWek(_w2:TWektor):Integer;
begin
Result:= abs(wektor[0]*_w2.wektor[1] + wektor[1]*_w2.wektor[0]);
end;
var
w1,w2,_w3:TWektor;
begin
w1:= w1.Create;
w2:= w2.Create;
w1.wpisz(1, 3);
// w2.wpisz(3, 4);
// writeln('Wektor A: ');
// w1.wyswietl;
// writeln('Wektor B: ');
// w2.wyswietl;
// writeln('Suma wektorow A i B: ');
// _w3:=w1.dodaj(w2);
// _w3.wyswietl;
//w1.wektor[0]:=1;
w1.Free;
w2.Free;
// _w3.Free;
readln();
end.