AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit Uses-Klausel

Ein Thema von philharmony · begonnen am 16. Jan 2013 · letzter Beitrag vom 17. Jan 2013
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 12:12
Nein, nur wenn Du auf aAuto.Lenkrad.Durchmesser zugreifen willst.
In dem Fall musst Du wissen, was ein Lenkrad ist und welche Eigenschaften das hat.

Alternativ kannst Du dem Auto aber auch eine Schnittstelle hinzufügen:
aAuto.Lenkraddurchmesser. Das könnte z.B. eine Funktion sein, die dann (intern) auf das Objekt TLenkrad zugreift.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
philharmony

Registriert seit: 17. Dez 2012
37 Beiträge
 
#2

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 12:28
Aaaah, ok jetzt fällt die Rupie. Dh wenn ich zur Klasse 'Auto' ne Funktion 'GetLenkradDurchmesser' einfüge, dann kann ich das "Tunneln". Danke
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 13:14
Also so ganz ist das ja nicht

Delphi-Quellcode:
unit AutoTeile;

interface

type
  TLenkrad = class
    property Durchmesser : integer;
  end;
Delphi-Quellcode:
unit Auto;

interface

uses
  AutoTeile;

type
  TAuto = class
    property Lenkrad : TLenkrad;
  end;
Delphi-Quellcode:
unit MyMainUnit;

interface

uses
  Auto; // kennt nur Auto

var
  MeinAuto : TAuto;

// und doch geht der Zugriff auf

MeinAuto.Lenkrad.Durchmesser
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 13:27
Das ja, was aber nicht ginge ist:
Delphi-Quellcode:
unit MyMainUnit;

interface

uses
   Auto; // kennt nur Auto

var
   MeinAuto : TAuto;

MeinAuto.Lenkrad := TLenkrad.Create;
Da die Deklaration von TLenkrad fehlt. Memberzugriff geht immer, auch ohne das der Typ des Objekt-Feldes im Scope liegt. Nur die unmittelbare Verwendung dessen geht nicht. Ebenso geht auch z.B. das nicht:
Delphi-Quellcode:
uses
   Auto; // kennt nur Auto

var
   MeinAuto : TAuto;

MeinAuto := TMercedes.Create;
Um das zu realisieren gibt es mehrere Wege: Eine Factory, die eine Enummeration als Parameter erhält und anhand dessen ein Objekt des richtigen Typs liefert; das gleiche nur anders: In der Unit Auto müssten dann noch Dinge wie "TMercedesClass = class of TMercedes;" usw. deklariert werden, welche statt der Enummeration übergeben würden; eine String-Basierte Factory die einen Text-Parameter nimmt und anhand diesem unterscheidet, ... letztlich würde hier, wenn es um das Erzeugen eines spezifischen Autos geht, am ehesten aufs Factory-Pattern hinauslaufen. Fühlt sich für mich zumindest am "natürlichsten" an. Wie man dieser nun konkret sagt, was sie erzeugen soll, wäre dann wie o.g. sehr variabel. Da käme es dann auf den genauen Einsatz an, und wohl auch persönlichen Geschmack.


@Roter-Kasten-Rufo: Dass die VCL nicht der Gold-Standard der Best-Practices ist, weiss ich auch ;P
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 13:29
@Medium
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 14:39
Irgendwas kam mir doch schon beim Abschicken merkwürdig vor.
Hätte auf meine Signatur hören sollen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
philharmony

Registriert seit: 17. Dez 2012
37 Beiträge
 
#7

AW: Problem mit Uses-Klausel

  Alt 16. Jan 2013, 15:21
Hmm nächstes Problem: meine 'TParkhaus' enthält eine 'Autos : TList', die nur die Pointer auf die verwendeten 'TAuto' enthält. Ich habe zwar eine procedure Parthaus.AddAuto(Name : String), und eine function Parkhaus.GetAuto : TAuto, allerdings kennt UnitMain ja nur 'Parkhaus' und kann dann zwar ein Auto hinzufügen, aber nichts mit dem ReturnValue von GetAuto vom Typ TAuto anfangen, richtig?
  Mit Zitat antworten Zitat
Antwort Antwort

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 13:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz