program Project1;
{$MODE DELPHI}
type Parent = class
constructor create(const str: string);
end;
type Child = class(Parent)
end;
type ClassOfParent = class of Parent;
function pFact(ClassType: ClassOfParent; const str: string): Parent;
begin
result := ClassType.Create(str);
end;
constructor Parent.create(const str: string);
begin
end;
var inst: Parent;
begin
inst := pFact(Child, 'Sasha');
end.
cHJvZ3JhbSBQcm9qZWN0MTsKeyRNT0RFIERFTFBISX0KCnR5cGUgUGFyZW50ID0gY2xhc3MKICAgIGNvbnN0cnVjdG9yIGNyZWF0ZShjb25zdCBzdHI6IHN0cmluZyk7CmVuZDsKCnR5cGUgQ2hpbGQgPSBjbGFzcyhQYXJlbnQpCmVuZDsKCnR5cGUgQ2xhc3NPZlBhcmVudCA9IGNsYXNzIG9mIFBhcmVudDsKCmZ1bmN0aW9uIHBGYWN0KENsYXNzVHlwZTogQ2xhc3NPZlBhcmVudDsgY29uc3Qgc3RyOiBzdHJpbmcpOiBQYXJlbnQ7CmJlZ2luCglyZXN1bHQgOj0gQ2xhc3NUeXBlLkNyZWF0ZShzdHIpOwplbmQ7Cgpjb25zdHJ1Y3RvciBQYXJlbnQuY3JlYXRlKGNvbnN0IHN0cjogc3RyaW5nKTsKYmVnaW4KZW5kOwoKdmFyIGluc3Q6IFBhcmVudDsKCmJlZ2luCiAgaW5zdCA6PSBwRmFjdChDaGlsZCwgJ1Nhc2hhJyk7CmVuZC4gICA=