AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit overload

Ein Thema von idontwantaname · begonnen am 29. Sep 2005 · letzter Beitrag vom 30. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit overload

  Alt 29. Sep 2005, 19:13
Hallo !!

Ich habe ein Problem mit overload. Folgender Code:
Delphi-Quellcode:
  TMyObjectList = class
  private
    FArray: TMyObjArray;
    FOwnObj: Boolean;
    function GetObjInt(Index: Integer): TObject;
    function GetObjStr(Name: String): TObject;
  public
    property Items[Index: Integer]: TObject read GetObjInt; overload{-> hier meckert der Compiler <-};
    property Items[Name: String]: TObject read GetObjStr; overload;
    constructor Create(const AOwnObjects: Boolean);
    procedure Add(Obj: TObject; const Name: String);
  end;
Der Compiler schreibt mir das hier:
Zitat:
[Error] Unit1.pas(41): Field definition not allowed after methods or properties
Leider verstehe ich die Fehler-Meldung in diesem Zusammenhang nicht ganz so
Oliver Hanappi
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit overload

  Alt 29. Sep 2005, 19:22
Property läßt kein overload zu, es ist für Methoden gedacht.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem mit overload

  Alt 29. Sep 2005, 19:27
Oh ^^

Gibt es eine andere Möglichkeit, das zu erreichen, was ich möchte ??
Oliver Hanappi
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit overload

  Alt 29. Sep 2005, 19:42
Zitat von idontwantaname:
Oh ^^

Gibt es eine andere Möglichkeit, das zu erreichen, was ich möchte ??
Was möchtest Du denn erreichen?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit overload

  Alt 29. Sep 2005, 19:58
... dass ich Items einen String oder eine Integer übergeben kann und je nach Typ eine andere Getter-Funktion ausgeführt wird.
Oliver Hanappi
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem mit overload

  Alt 29. Sep 2005, 20:59
Zitat von idontwantaname:
... dass ich Items einen String oder eine Integer übergeben kann und je nach Typ eine andere Getter-Funktion ausgeführt wird.
Soweit ich weiss geht das nicht mit properties. Du könntest aber Variants verwenden und dann abhängig vom Typ innerhalb der Funktion verzweigen (VarIsNumeric, VarIsStr).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Problem mit overload

  Alt 29. Sep 2005, 21:02
Zitat von Union:
Soweit ich weiss geht das nicht mit properties.
schade eigentlich

Zitat:
Du könntest aber Variants verwenden und dann abhängig vom Typ innerhalb der Funktion verzweigen (VarIsNumeric, VarIsStr).
das werde ich wahrschenlich machen
Oliver Hanappi
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Problem mit overload

  Alt 29. Sep 2005, 21:41
Zitat von idontwantaname:
Du könntest aber Variants verwenden und dann abhängig vom Typ innerhalb der Funktion verzweigen (VarIsNumeric, VarIsStr).
Das würde ich aber trotzdem nicht machen, weil es vorkommt, das '123' als String interpretiert wird (wenns von einem String stammt). Wer will das sicherstellen?
Ich würde wirklich zwei Properties definieren 'FooByName' und 'FooByID' oder so. Was spricht denn dagegen? So ist es jedenfalls viel übersichtlicher als der unsichere Weg über Variants.

Trotzdem ne lustige Idee.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem mit overload

  Alt 29. Sep 2005, 21:47
Zitat von alzaimar:
Zitat von idontwantaname:
Du könntest aber Variants verwenden und dann abhängig vom Typ innerhalb der Funktion verzweigen (VarIsNumeric, VarIsStr).
Das würde ich aber trotzdem nicht machen, weil es vorkommt, das '123' als String interpretiert wird (wenns von einem String stammt). Wer will das sicherstellen?
Ich würde wirklich zwei Properties definieren 'FooByName' und 'FooByID' oder so. Was spricht denn dagegen? So ist es jedenfalls viel übersichtlicher als der unsichere Weg über Variants.

Trotzdem ne lustige Idee.
Unter welchen Umständen kann das vorkommen ? Hast Du dafür ein Beispiel ?
Delphi-Quellcode:
var
   v : variant;
begin
   v := '123';
   if VarIsStr(v) then
      ShowMessage('String')
   else if VarIsNumeric(v) then
      ShowMessage('Numeric');
Dieser Code gibt jedenfalls immer "String" aus.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Problem mit overload

  Alt 30. Sep 2005, 07:06
Hi Union... eben, sag ich doch (v := '123' ==> v ist String, v:=123 ==> v ist Numerisch). Oder meinst Du meinen Einwand, das man sich nicht sicher sein kann?

Er will doch aber über den Typen des Varianten entscheiden, ob es ein Index oder ein Identifier ist und dann den entsprechenden Getter aufrufen. Das wird eben nicht gehen.

Ich kann das Bestreben verstehen, überladene Methoden und Properties zu erstellen. Auf den ersten Blick kommt man dadurch dem Anwender der Klasse entgegen. Auf den 2.Blick ist das aber sehr fehleranfällig.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 22:01 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