Hi all,

I'm trying to create a function (called newperson()) that creates a new
instance of a record. The following compiles with no errors or warnings
in FPC, but multiple calls to newperson() produce exactly the same
variable, so in the preceding changing person changes person2, and vice
versa:

===================================================
program test2;

const
        junkvar_size = 20000000;

type
        personrecord = record
        name: string;
        end;
var
        person: personrecord;
        person2: personrecord;
        junkvar: array[1..junkvar_size] of char;

function newperson(): personrecord;
var newp: personrecord;
begin
        newp.name := '';
        newperson := newp;
end;

function modperson(person: personrecord; name: string): personrecord;
begin
        person.name := name;
        modperson := person;
end;

procedure writeperson(person: personrecord);
begin
        writeln(person.name);
end;

begin
        person := newperson();
        fillchar(junkvar, junkvar_size, 'a');
        person2 := newperson();
        fillchar(junkvar, junkvar_size, 'b');
        person := modperson(person, 'Martin');
        person := modperson(person2, 'Maria');
        {writeln(junkvar);}
        writeperson(person);
        writeperson(person2);
end.
===================================================

What is the best way for me to construct newperson() so that every time
called it would return a new variable?

Thanks,

SteveT

Steve Litt 
Autumn 2022 featured book: Thriving in Tough Times
http://www.troubleshooters.com/bookstore/thrive.htm
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to