Search code examples
pascallazarusfreepascal

Why throw an exception when multiplying?


I want square ,but i dont remember how to do it becauseI multiplying is a variable, but throw exeption and i don't know why. please help i don't know what else to do enter image description here

  program Project1;
uses crt;
type TSquare=class
             len:integer;
             place:integer;
      function Perimetr:integer;
      function Area:integer;
      function Verify():boolean;
      procedure Show(P,S:real);
constructor Create(P,l:integer);
end;
 function TSquare.Perimetr:integer;
 var P:integer;
begin
       P:=len*4;
  end;
function TSquare.Area:integer;
var S:integer;
begin
       S:=len*len;
  end;
function TSquare.Verify:boolean;
begin

  end;
  procedure TSquare.Show(P,S:real);
  begin
         write('Площидь=',S,'Перимитр=',P);
    end;
constructor TSquare.Create(p,l:integer);
begin
       len:=l;
       place:=p;
end;
var r: TSquare;
    a,b:integer;
  begin
    r.Create(1,5);
    r.Show(r.Perimetr(),r.Area());
  end.

Solution

  • SIGSEGV means access of invalid memory. Here you do not create the TSquare object correctly.

    r := TSquare.Create(1,5); is the correct way to create an instance of an object.