AGB  ·  Datenschutz  ·  Impressum  







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

Überladene, generische Methode aufrufen

Ein Thema von s.h.a.r.k · begonnen am 2. Dez 2010 · letzter Beitrag vom 4. Dez 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#1

AW: Überladene, generische Methode aufrufen

  Alt 2. Dez 2010, 23:44
Man darf allgemein innnerhalb von öffentlichen Generics nix verwenden, welches nicht öffentlich (lokal) ist.

Alles was du innerhalb des Generics nutzt, das muß auch öffentlich im Interface-Abschnitt deklariert sein.
Also du darfst nix verwenden, welches erst im Implementation-Abschnitt zur Verfügung steht.

Der Grund: Diese generische Methode wird erst da fertig eingebaut, wo sie verwendet wird.

Wenn also in einer anderen Unit nun Animator.Add<irgendwas>(...); aufgerufen wird, dann wird an dieser Stelle diese Funktion, mit diesem Typ erzeugt und von da aus muß nun auf alles genutzte Zugriff bestehn, welches bei lokalen/privaten Dingen nicht der Fall wäre.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Überladene, generische Methode aufrufen

  Alt 2. Dez 2010, 23:46
Das heißt quasi, ich darf das nicht machen?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#3

AW: Überladene, generische Methode aufrufen

  Alt 3. Dez 2010, 00:02
theoretisch dürftest du es machen ... wenn Emba es mal hinbekommt den "eigentlich" externen Typen T an dieser Stelle auch als extern anzusehn
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Überladene, generische Methode aufrufen

  Alt 3. Dez 2010, 00:05
Ach ja... die liebe Theorie Naja, dann muss ich halt mal doch ein wenig doppelten Code schreiben... Danke für die Info!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
USchuster

Registriert seit: 12. Sep 2010
Ort: L.E.
120 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Überladene, generische Methode aufrufen

  Alt 3. Dez 2010, 20:41
Schon mal mit XE getestet?

Mit folgendem Code bekomme ich mit XE keinen Fehler, aber mit 2010 schon.
([DCC Error] Unit20.pas(15): E2506 Method of parameterized type declared in interface section must not use local symbol ':3')

Delphi-Quellcode:
unit Unit20;

interface

type
  TFoo = class
    procedure Add<T>(ATarget: TObject; APropertyName: String; AToValue: T); overload;
    procedure Add<T>(ATarget: TObject; APropertyName: array of String; AToValue: array of T); overload;
  end;

implementation

procedure TFoo.Add<T>(ATarget: TObject; APropertyName: String; AToValue: T);
begin
  Add<T>(ATarget, [APropertyName], [AToValue]); // Das hier ist Zeile 184
end;

procedure TFoo.Add<T>(ATarget: TObject; APropertyName: array of String; AToValue: array of T);
begin
  // Do something...
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#6

AW: Überladene, generische Methode aufrufen

  Alt 3. Dez 2010, 21:18
Schade daß ich mir dieses XE genannte Update nicht leisten kann.
Vorallem die vielen "Internal Error" kenn ich schon zu Genüge.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Dez 2010 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Überladene, generische Methode aufrufen

  Alt 3. Dez 2010, 23:48
Jo, das "Update"... XE und ich sind jedenfalls keine guten Freunde. Viele zu viele (neue) Fehler für zu wenig Neues. Aber herzlichen Dank für den Hinweis! Wenigstens da wurde was gemacht.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:52 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