AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Was bedeudet 'as' in Delphi?

Ein Thema von Ignazo · begonnen am 4. Jun 2003 · letzter Beitrag vom 4. Jun 2003
Antwort Antwort
Benutzerbild von Ignazo
Ignazo

Registriert seit: 3. Jan 2003
Ort: Österreich - Juhuu!!
56 Beiträge
 
Delphi 7 Enterprise
 
#1

Was bedeudet 'as' in Delphi?

  Alt 4. Jun 2003, 08:10
Delphi-Quellcode:
procedure TPanelX.InitializeControl;
begin
  FDelphiControl := Control as TPanel; //<== Was passiert hier?
  FDelphiControl.OnCanResize := CanResizeEvent;
  FDelphiControl.OnClick := ClickEvent;
  FDelphiControl.OnConstrainedResize := ConstrainedResizeEvent;
  FDelphiControl.OnDblClick := DblClickEvent;
  FDelphiControl.OnResize := ResizeEvent;
end;
//mfg. Ignazo

Wenn ich groß bin will ich ein großer Delphi-programmierer sein
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2
  Alt 4. Jun 2003, 08:15
Control ist von irgeneinem Typ, eventuell TControl.
FDelphiControl ist vom Typ TPanel. Der as Operator macht eine Panele aus Control. Ist Control nicht mit TPanel verwandt, bekommst du eine Exception.

mfg Daniel
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3
  Alt 4. Jun 2003, 08:27
In der OH (Lesen bildet ) steht folgendes:
Zitat:
Wenn Klassen Schnittstellen implementieren, können sie den Operator as für die dynamische Bindung an die Schnittstelle verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von Ignazo
Ignazo

Registriert seit: 3. Jan 2003
Ort: Österreich - Juhuu!!
56 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 4. Jun 2003, 08:34
Also wenn ich das richtig verstehe ist das nur so eine Art absicherung, oder
//mfg. Ignazo

Wenn ich groß bin will ich ein großer Delphi-programmierer sein
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5
  Alt 4. Jun 2003, 08:37
Wohl eher eine Art notwendiger Typecast.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 4. Jun 2003, 09:26
Moin Sanchez,

Zitat von Sanchez0815:
Der as Operator macht eine Panele aus Control
Nein, er sorgt nur dafür, das der Compiler Control als vom Typ TPanel ansieht.

Prinzipiell ginge statt

control as TPanel auch

TPanel(Control) und eine Exception gäbe es nur, wenn, in diesem Falle FDelphiControl, Methoden/Eigenschaften eines TPanel zu nutzen versuchen würde, die es in der durch Control angegebenen Kompo nicht gibt.

Mit diesem Typecast übernimmt man sozusagen dem Compiler gegenüber die Verantwortung dafür, dass Control auch wirklich als TPanel verwendbar ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#7
  Alt 4. Jun 2003, 09:36
Mit TPanel(control) übernimmt man selbst die Verantwortung.
Mit control as TPanel allerdings nicht, weil eine Typprüfung durchgeführt wird.

Zitat:
Der Operator as führt eine Typumwandlung mit Laufzeitprüfung durch. Der Ausdruck

Objekt as Klasse

gibt eine Referenz auf dasselbe Objekt wie Objekt, aber mit dem von Klasse angegebenen Typ zurück. Zur Laufzeit muß Objekt eine Instanz von Klasse oder einem ihrer Nachkommen bzw. nil sein. Andernfalls wird eine Exception ausgelöst. Wenn der deklarierte Typ von Objekt nicht mit Klasse verwandt ist (wenn die Typen also unterschiedlich und nicht voneinander abgeleitet sind), gibt der Compiler eine Fehlermeldung aus.
Quelle: Delphi-Hilfe

mfg Daniel
Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 4. Jun 2003, 10:26
Moin Sanchez,

Stimmt, , hast Du auch wieder Recht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf