AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi <> Java : static class

Ein Thema von Bomberbb · begonnen am 11. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Delphi <> Java : static class

  Alt 11. Jul 2007, 18:14
Hallo,

bei der Verwendung von Klassenvariablen und -konstanten muß beachtet werden, daß sich alle Instanzen eine Variable bzw. Konstante teilen:

Delphi-Quellcode:
type
  TTest = class (TObject)
  private class var
    FMyProp: Integer;
  public
    class property MyProp: Integer read FMyProp write FMyProp;
  end;

var
  T1, T2 : TTest;
begin
  T1.MyProp := 42;
  T2.MyProp := 0;
  ShowMessage (IntToStr(T1.MyProp)); // Ausgabe: '0'!
end;
Das von BomberBB gewünschte Verhalten läßt sich (in allen Delphi-Versionen) mit Objekttypen realisieren, die auch eine Vererbung ermöglichen:

Delphi-Quellcode:
type
  TString = object
  private
    FValue : string;
  public
    procedure ConvertFromInt (aNumber: Integer);
    property Value: string read FValue write FValue;
  end;

procedure TString.ConvertFromInt (aNumber: Integer);
begin
  Value := IntToStr(aNumber);
end;

var
  MyString : TString;
begin
  MyString.ConvertFromInt(42);
  ShowMessage (MyString.Value);
end;
Eine Warnung sei aber angebracht:

Zitat von Delphi-Hilfe:
Objekttypen werden nur aus Gründen der Abwärtskompatibilität unterstützt. Ihre Verwendung unter Win32 ist nicht zu empfehlen. Vom Delphi .NET-Compiler werden sie nicht akzeptiert.
Man sollte also nicht darauf vertrauen, daß auch zukünftige Delphi-Versionen die Objekttypen unterstützen. Das BDS bietet einen Ersatz in Form der erweiterten Record-Typen (leider ohne Vererbung).

Gruß Hawkeye
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: Delphi <> Java : static class

  Alt 11. Jul 2007, 18:35
Zitat von Hawkeye219:
Das BDS bietet einen Ersatz in Form der erweiterten Record-Typen (leider ohne Vererbung).
Also wenn ich mich recht entsinne, kann man unter Delphi.NET von Record-Typen erben. Das hat mich nämlich schon geärgert, dass das Win32 "object" nun unter Delphi.NET als "record" bezeichnet wird. Warum konnte man nicht das "alte" object benutzen statt nun für "ValueType" das Schlüsselwort "record" zu benutzen. Ich glaube ich sollte ein neues Feature in meine DLangExtensions packen, dass unter .NET jedes "typename = object" durch "typename = record" ersetzt, womit man dann das "object" in .NET benutzen kann.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#13

Re: Delphi <> Java : static class

  Alt 12. Jul 2007, 07:34
@Hawkeye219

Danke, genau das hab ich gesucht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz