Sorry das ich fragte, das war Neuland für mich, also ganz lieben Dank für mehr Input zum Thema!!!
Ausgehend von Deinem Beispiel (wo mich der Constructor part zu sehr an Klassen erinnert) wurde gebastelt das es auch ohne klappt.
Delphi-Quellcode:
type
TRec = record
s: string;
i: integer;
end;
function MakeRec(ss: string; ii:integer): TRec; inline;
begin
with Result do
begin
s := ss;
i := ii;
end;
end;
procedure DoJob(a: array of TRec);
begin
end;
begin
DoJob([MakeRec('Hi', 1), MakeRec('Bye', 2)]);
end.
und noch mehr gespielt in der schönen Delphi Welt
Delphi-Quellcode:
type
test = ^TRec;
TRec = record
s: string;
i: integer;
end;
function create_test(const ss: string; const ii: integer): test;
var
temp : test;
begin
// speicherleck durch new(temp) möglich/wahrscheinlich!
new(temp);
temp^.s := ss;
temp^.i := ii;
exit(temp);
end;
procedure doJob(a : array of test);
//var
// j : test;
begin
// for j in a do
// begin
// writeln(j^.s,' ',j^.i);
// end;
end;
begin
doJob([create_test('hello',10), create_test('bye',20)]);
end.
Ohne Deine Erklärungen wäre das nie passiert :-]