Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alias für Objektname? (https://www.delphipraxis.net/13740-alias-fuer-objektname.html)

Niels 25. Dez 2003 19:37


Alias für Objektname?
 
Moin!

Ich möchte z.B. Form1.Height einfach mit Hoehe bezeichnen und hab mir das so gedacht:

Delphi-Quellcode:
var
  Hoehe: ^Integer;
begin
  Hoehe := Pointer(@(Form1.Height));
  Hoehe^ := 190;
end;
Jetzt müsste sich ja theoretisch Form1.Height auf 190 ändern. Weil x ja auf die Stelle im RAM zeigt, wo Form1.Height steht. Wenn ich jetzt den Wert dieser Stelle (x^) verändere müsste sich doch auch die Höhe von Form1 ändern oder?

Da ich mir relativ sicher war, dass es funktionieren muss hab ich das ganze nochmal mit ner Variable getestet:

Delphi-Quellcode:
var
  a: Integer;
  x: ^Integer;
begin
  a := 10;
  x := Pointer(@a);
  x^ := 190;
end;
In dem Fall ist a am Ende 190 und alles klappt.

Kann mir jemand sagen warum das bei Form1.Height nicht geht?

MfG Niels

mirage228 25. Dez 2003 19:39

Re: Alias für Objektname?
 
Delphi-Quellcode:
var
  Hoehe: ^Integer;
begin
  Hoehe := @(Form1.Height);
  Hoehe^ := 190;
end;
mfG
mirage228

sakura 25. Dez 2003 19:41

Re: Alias für Objektname?
 
Das geht generell nicht, da Form.Height eine Eigenschaft und nicht eine Variable ist ;-) Eigenschaften wirden intern durch Methoden gesteuert.

...:cat:...

mirage228 25. Dez 2003 19:43

Re: Alias für Objektname?
 
Achso das ist ne Property, sag mir das doch einer! (Ja, obwohl, hätte ich auch selber drauf kommen können)...

mfG
mirage228

Niels 25. Dez 2003 19:48

Re: Alias für Objektname?
 
@mirage228:
Ich hatte das auch schon in Klammern stehn ... hat trotzdem net geklappt

@sakura:
Das war ja auch nur ne Idee von mir, mein oben geschildertes Problem zu lösen. Gibt's denn irgend ne andere Möglichkeit sowas zu machen? Hoehe muss ja kein Pointer sein ... ein Integer wäre mir da sogar lieber.

MfG Niels

sakura 25. Dez 2003 19:50

Re: Alias für Objektname?
 
Mal eine andere Frage, warum schreibst Du nicht:
Delphi-Quellcode:
Form1.Height := 190
:?: - oder anders, warum so umständlich?

...:cat:...

Niels 25. Dez 2003 19:56

Re: Alias für Objektname?
 
Moin!

Das war jetzt nur ein Beispiel mit Form1.Height.
Ich greif aus ner Klasse einer anderen Unit auf Komponenten von Form1 zu. Man soll die Komponentennamen aber variable wählen können und dann einfach im Constructor Create das entsprechende eintragen. Da es relativ viele Zugriffe sind, wäre es umständlich das in jeder Prozedur zu ändern.
Außerdem ist es ja nicht immer Form1, auf welcher die Klasse genutzt wird.

MfG Niels

sakura 25. Dez 2003 19:58

Re: Alias für Objektname?
 
Dann übergebe die Componente als Parameter vom Typ TControl, damit hast Du die wichtigsten Eigenschaften verfügbar ;-)

...:cat:...

Niels 25. Dez 2003 20:23

Re: Alias für Objektname?
 
Ich hab anfangs auch probiert es an den Constructor zu übergeben. Dann hab ichs ja aber nur im Constructor und nicht global in der Klasse verfügbar. Das Problem ist ja auch, wenn ich z.B. in ner Prozedur der Klasse was in die PaintBox auf dem übergebenen Formular zeichne, dann soll das auch im Original zu sehen sein.

Mein Constructor sieht dann jetzt erstmal so aus:

Delphi-Quellcode:
uses
  unit1; // unit, die die Klasse TForm1 und enthält..von hier erfolgt der Aufruf
...
constructor Create(var Formular: TForm1);
Ich hab das Formular als Referenzparameter übergeben um es dann auch ändern zu können. Im Constructor nützt mir das ganze nur eben nicht viel. Ich brauchs global in der Klasse. Deshalb hab ich auch diesen Thread geöffnet :wink:

MfG Niels

mirage228 25. Dez 2003 21:07

Re: Alias für Objektname?
 
übergeb doch nen Pointer von TForm1, eben PForm1

EDIT:
In der Hauptunit (über der Formdekl.) :
Delphi-Quellcode:
type
  PForm1 = ^TForm1
  TForm1 = class(TForm)
  ...
  ...
end;
und dann speicher das als Private in deiner Klasse ab.

Delphi-Quellcode:
private
  FForm: PForm1;
...
nun können die Funktionen und Procs deiner Klasse auf das Form zugreifen ^^

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Seite 1 von 2  1 2      

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