Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#25

AW: Variable.Create;

  Alt 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
  Mit Zitat antworten Zitat