Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Object Pascal Compiler (https://www.delphipraxis.net/5104-object-pascal-compiler.html)

Tommi 24. Mai 2003 12:03

Hi Duffy :)

Ja in den GNU Pascal Compiler hab ich auch schon reingeschaut und genau da befindet sich auch - meines Erachtens - eine "Syntaxerweiterung" für die Typendeklaration von ShortStrings...

Nun ja, ich werd mich noch durch einige Dokumentationen durchwühlen müssen... :?

Tommi 27. Mai 2003 15:58

Mmmkay... irgendwo im Internetz hab ich eine PDF der Delphi 4 doku gefunden und darin auch eine Eklärung für mein Mißverstädnis bezüglich Klassen und Objekte entdeckt - muß mich noch weiter durchlesen. Also Objects werden nur aufgrund Abwärtskompatibilität bewahrt mhm fein... Und Klassen haben bereits vorgefertigte Konstruktoren und Destruktoren...
Aber irgendwie hab ich das Gefühl, daß da Probleme mit meinen Linked-Lists aufkommen, für die ich schon ganz gerne sowohl Konstruktor als auch Destruktor schreiben möchte (bzw. muß), sonst geht meine Identifier Table und mein Token Stream nimmer...
Also kann ich bei Klassen auch selbst Konstruktoren und Destruktoren schreiben?

Und kann mir jemand erklären, wie TObject definiert ist? (oder wo zu finden, ein Link wär ganz hilfreich)

Danke im Voraus!
:D

jbg 27. Mai 2003 16:18

Zitat:

Zitat von Tommi
Also kann ich bei Klassen auch selbst Konstruktoren und Destruktoren schreiben?

Natürlich kann man eigene Konstruktoren und Destruktoren schreiben.
Delphi-Quellcode:
TMyClass = class(TObject)
  constructor Create(const Irgendwas: string);
  destructor Destroy; override;
end;
Zitat:

Und kann mir jemand erklären, wie TObject definiert ist?
Die FreeCLX enthält unter anderem die System-Units von Delphi/Kylix.

Garby 27. Mai 2003 16:54

Hallo,

das ist ja eine interessante Diskussion hier :mrgreen: .
Ein paar Kleinigkeiten möchte ich auch beisteuern, die mir in Delphi ein bißchen fehlen:

1.) Den Mengenopereator in[] könnte man vielleicht "aufbohren", damit er auch mit LongInteger Typen klarkommt
2.) die Case-Anweisung sollte auch mit Strings u.dgl. funktionieren
3.) Klassen sollten mehrere Vorfahren haben können

Tommi 27. Mai 2003 17:07

An jbg: Vielen Dank! Und ebenso danke für Deine Geduld - ich bin kein regelmäßiger Programmierer, es gab bislang Phasen, da hab ich bis zu zwei Jahre nicht einen Compiler angefaßt, aber mich mit anderen Dingen beschäftigt, also fehlt mir da schon die Kontinuität und in Sachen Objekte und Klassen bin ich erst vor wenigen Wochen durchgestiegen, obwohl ich sie seit gut drei Jahren in Form von JavaScript schon angewandt hab :oops:

An Garby: großartige Idee mit den Cases..., das mit Klassen muß ich echt noch irgendwie detailierter nachlesen... ohje... demnach kann ich jetzt auch nicht verstehen, daß sie nicht mehrere Vorfahren haben können.
Auf wieviele sind sie denn beschränkt?

So, nachdem ich das mit den Constuctors und Destructors erfahren hab, kann ich ja getrost die "Object"s in "Class"es umschreiben :)

jbg 27. Mai 2003 17:44

Zitat:

Zitat von Tommi
Auf wieviele sind sie denn beschränkt?

Auf einen Vorfahr.
Mir ist aber bis jetzt noch kein Klassenbaum untergekommen, in dem eine Klasse mehrere Vorfahren haben musste. Und sollte das dann doch irgendwann einmal eintreten, gibt es immer noch den Umweg über Interfaces.

Garby 27. Mai 2003 18:23

Ich hätte einen Anwendungsfall:

Bsp:
ich leite mehrere StandardVCL Komponenten ab, z.B. von TEdit, TDBEdit, TComboBox, TPanel.
Diese Komponenten erhalten dieselben neuen Properties(z.B. die laufende Nummer eines Datensatzes einer Tabelle, in der Mehrsprachigkeit oder evtl. ein Hilfesystem abgebildet ist).

Da würd sich doch folgendes anbieten:
Delphi-Quellcode:
type
  TMyControl = class(TWinControl)
  private
    FmyHelpID: Integer;
  public
    procedure ShowHelp;
  published
    property myHelpID: Integer read FmyHelpID write FmyHelpID;
  end;

  TMyEdit = class(TEdit, TMyControl)
  end;

-----------------------------

procedure TMyControl.ShowHelp;
begin
  ShowMessage(GetHelpTextFromDB(myHelpID));
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_F3) and (Shift = []) and (ActiveControl is TMyControl) then
    TMyControl(ActiveControl).ShowHelp;
end;
Oder hast du da eine andere Lösung parat?

jbg 27. Mai 2003 18:56

Delphi-Quellcode:
type
  THelpEx = class
  private
    FOwner: TComponent;
    FmyHelpID: Integer;
  public
    constructor Create(AOwner: TComponent);
    procedure ShowHelp;
  published
    property myHelpID: Integer read FmyHelpID write FmyHelpID;
  end;
TMyEdit = class(TEdit)
private
FHelpEx: THelpEx;
procedure SetHelpEx(Value: THelpEx);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property HelpEx: THelpEx read FHelpEx write SetHelpEx;
end;

constructor TMyEdit.Create(AOwner: TComponent);
begin
inherited;
FHelpEx := THelpEx.Create(Self);
end;

destructor TMyEdit.Destroy;
begin
FHelpEx.Free;
inherited;
end;[/delphi]


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr.
Seite 2 von 2     12   

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