AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem mit Klassen / Property / Funktionen
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Klassen / Property / Funktionen

Ein Thema von S20000 · begonnen am 11. Jun 2008 · letzter Beitrag vom 11. Jun 2008
Antwort Antwort
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#1

Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:30
Hallo zusammen,

ich bin gerade dabei ein Programm zu schreiben welchen
verschiedene Klassen erhalten soll.

Ich komme zur Zeit durcheinander mit Properties und Funktionen.
Ich weiß das das unten angegebene Beispiel nicht lauffähig ist,
ich hoffe jedoch daraus wird mein Problem ersichtlich.

Ich möchte aus einem anderen Formular die Klasse TTest.Status aufrufen,
und abhängig vom übergebenen Wert "true" oder "false" erhalten.



Delphi-Quellcode:
interface
...

TTest=class(TObject)
    private
    function GetStatus(ID:pchar):boolean;
    public
    property Status:boolean read GetStatus(ID:pchar);
  end;

implementation
...


function TTest.GetStatus(ID:pchar): boolean;
begin
if ID=4711 then
result := true;
end;
Gruß
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:35
[edit] Sry, war Blödsinn [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:37
Wenn du wissen willst, wie du das mit den Parametern in Properties machen sollst:
Delphi-Quellcode:
type
  TTest = class(TObject)
  private
    // von PChar auf integer geändert
    function GetStatus(ID: integer): boolean;
  public
    // [index] eingefügt und read-Anweisung verändert
    property Status[index: integer]: boolean read GetStatus;
  end;
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#4

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:43
Das funktioniert aber nicht mehr wenn ich mehrere Parameter
übergeben möchte?!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:43
Delphi-Quellcode:
TTest=class(TObject)
    private
    function GetStatus(const ID:string):boolean;
    public
    property Status[const ID:string]:boolean read GetStatus(const ID:string);
  end;

implementation
...


function TTest.GetStatus(const ID:string): boolean;
begin
if ID='4711then
   result := true
else // bloss nicht das else vergessen
   result := False;
(*
  // eine kompakte Abfrage für mehrere Strings
  result := StrIndex(IdLand,['4711','4712', 'Test', 'Delphi']) <> -1;
*)

end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#6

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:50
Mehrere Parameter sind auch kein Problem:
Delphi-Quellcode:
type
  TTest = class(TObject)
  private
    // von PChar auf integer geändert
    function GetStatus(ID, Number, Test, Super: integer): boolean;
  public
    // [index] eingefügt und read-Anweisung verändert
    property Status[ID, Number, Test, Super: integer]: boolean read GetStatus;
  end;
Was du in den Properties aber nicht machen kannst: du kannst keine overloaded Parameter erstellen.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
S20000

Registriert seit: 22. Apr 2008
84 Beiträge
 
#7

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:56
Vielen Dank!

overloaded Parameter sagen mir jedoch noch nichts.
Overload kenne ich nur, wenn ich in einer abgeleiteten Klasse
eine Methode überschreiben will.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 10:59
Das wäre override. Overload bedeutet eine Methode mit dem selben Namen und anderer Signatur
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#9

Re: Problem mit Klassen / Property / Funktionen

  Alt 11. Jun 2008, 11:11
Ich versuchs dir anhand eines Beispiels zu erklären:
Bei procedures und functions gibt es eine Anweisung overload. Mit dieser Anweisung kannst du den selben Funktionsnamen mit unterschiedlichen Parametern mehrmals verwenden. Beispiel:
Delphi-Quellcode:
function GetItem(index: integer): TItem; overload;
function GetItem(Name: string): TItem; overload;
function GetItem(Child: TItem): TItem; overload;
Wenn du jetzt die Funktion GetItem aufrufst, entscheidet der Compiler anhand der Parameter, welche Funktion ausgeführt wird:
GetItem(1) -> die erste Funktion wird ausgeführt
GetItem('abc') -> die zweite Funktion wird ausgeführt
GetItem(aItem) -> die dritte Funktion wird ausgeführt (aItem ist vom Typ TItem)

Was jetzt aber nicht geht:
Delphi-Quellcode:
type
  TTest = class
  private
    function GetStatusI(id: integer): boolean;
    function GetStatusS(s: string): boolean;
  public
    // das funktioniert nicht!!!!!
    property GetStatus[id: integer]: boolean read GetStatusI; overload;
    property GetStatus[s: string] : boolean read GetStatusS; overload;
  end;
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  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 08:28 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