AGB  ·  Datenschutz  ·  Impressum  







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

Alias für Objektname?

Ein Thema von Niels · begonnen am 25. Dez 2003 · letzter Beitrag vom 25. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#1

Alias für Objektname?

  Alt 25. Dez 2003, 19:37
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
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:39
Delphi-Quellcode:
var
  Hoehe: ^Integer;
begin
  Hoehe := @(Form1.Height);
  Hoehe^ := 190;
end;
mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:41
Das geht generell nicht, da Form.Height eine Eigenschaft und nicht eine Variable ist Eigenschaften wirden intern durch Methoden gesteuert.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:43
Achso das ist ne Property, sag mir das doch einer! (Ja, obwohl, hätte ich auch selber drauf kommen können)...

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#5

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:48
@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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:50
Mal eine andere Frage, warum schreibst Du nicht:
Form1.Height := 190 - oder anders, warum so umständlich?

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#7

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:56
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Alias für Objektname?

  Alt 25. Dez 2003, 19:58
Dann übergebe die Componente als Parameter vom Typ TControl, damit hast Du die wichtigsten Eigenschaften verfügbar

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#9

Re: Alias für Objektname?

  Alt 25. Dez 2003, 20:23
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

MfG Niels
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Alias für Objektname?

  Alt 25. Dez 2003, 21:07
ü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
David F.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:37 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