Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
FreePascal / Lazarus
|
AW: Variable.Create;
8. Mär 2014, 10:18
@Furtbichler: Bitte, werde kein Designer von Programmiersprachen. Soweit ich sehen kann, würdest du mehrfache Konstruktoraufrufe weiterhin zulassen? Und die fehlende Variablenzuweisung macht den Code unintuitiv.
Die Extended Syntax von New
und Dispose
funktioniert nunmal so ähnlich... wenn auch nur für object
:
Delphi-Quellcode:
program tobjectcstr;
type
TTest = object
constructor Create(a, b: Integer);
constructor Create(s: String);
destructor Destroy;
end;
PTest = ^TTest;
constructor TTest.Create(a, b: Integer);
begin
Writeln('Called constructor with ', a, ' & ', b);
end;
constructor TTest.Create(s: String);
begin
Writeln('Called constructor with ', s);
end;
destructor TTest.Destroy;
begin
Writeln('Called destructor');
end;
var
t: PTest;
begin
t := New(PTest, Create(42, 12));
Dispose(t, Destroy);
New(t, Create('Hello World'));
Dispose(t, Destroy);
end.
Code:
$ fpc tobjectcstr.pas
Free Pascal Compiler version 2.6.2 [2013/02/16] for i386
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling tobjectcstr.pas
Linking tobjectcstr
/usr/bin/ld: warning: testoutput/link.res contains output sections; did you forget -T?
33 lines compiled, 0.2 sec
$ ./tobjectcstr
Called constructor with 42 & 12
Called destructor
Called constructor with Hello World
Called destructor
(Ich habe jedoch nicht getestet, ob Delphi das auch ohne Probleme schluckt...)
Gruß,
Sven
Sven [Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
|
|
Zitat
|