AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mit Funktion Wert zurückgeben und zuweisen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Funktion Wert zurückgeben und zuweisen?

Ein Thema von Legolas · begonnen am 15. Jul 2004 · letzter Beitrag vom 15. Jul 2004
Antwort Antwort
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#1

Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 12:42
Hallo alle zusammen,

ich habe das Problem das ich mit einer Procedure/Function beides machen möchte, also einen Wert zurückgeben und auch zuweisen.

Etwa so:

Code:
Label1.Caption:=Irgenwas('Test').Methode;
Irgenswas('Test').Mothode:=Label1.Caption;
Ich habe es schon so probiert:

Code:
....
public
  function Irgendwas(test: String): String; overload;
  procedure Irgendwas(test: String); overload;
...
Wenn ich es so schreibe bekomme ich aber eine Fehlermeldung.

Ich hoffe es ist verständlich was ich machen möchte.

Ich komme da nicht so recht weiter, vielleicht hat jemand eine Idee?
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 12:59
Schreibe eine Klasse mit einer Property und einem Setter und Getter. Ein Klassen Tutorial, was dies demonstriert, findets du hier: http://tutorials.luckie-online.de

Delphi-Quellcode:
type
  TFoo = class
  private
    FLbl: TLabel;
    function GetText: string;
    procedure SetText(s: String);
  public
    constructor Create(lbl: TLabel);
    property MyText: string read GetText write SetText;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TFoo.Create(Lbl: TLabel);
begin
  inherited Create;
  FLbl := Lbl;
end;

procedure TFoo.SetText(s: String);
begin
  FLbl.Caption := s;
end;

function TFoo.GetText: String;
begin
  result := FLbl.Caption;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Foo: TFoo;
begin
  Foo := TFoo.Create(Label1);
  try
    ShowMessage(Foo.MyText);
  finally
    FreeAndNIl(Foo);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Foo: TFoo;
begin
  Foo := TFoo.Create(Label1);
  try
    Foo.MyText := 'Hello';
  finally
    FreeAndNil(Foo);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:05
Hallo Luckie,

das habe ich mir fast gedacht, das es in diese Richtung gehen würde.

Da man ja gleiche Prozeduren mit verschiedenen Parametern definieren kann (mittels overload) dachte ich es wäre bei meinem Problem genauso.

Ich werde dein Tutorial mal duchschauen.

Danke
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
shmia

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

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:09
Du brauchst ein Array-Property:
Delphi-Quellcode:
public
  property Irgendwas[const Index:String]: string read GetIrgendwas write SetIrgendwas;
end;
Du brauchst nur obigen Code zu einer Klasse hinzufügen und Strg+Umschalt+C drücken.
Die Klassenvervollständigung von Delphi erzeugt dir dann die Deklarationen für die Get- und Set-Methode.
Andreas
  Mit Zitat antworten Zitat
Rackergen2

Registriert seit: 13. Jul 2004
99 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:11
Wäre es mit einem einfachen record oder object in dem Fall getan?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:12
Zitat:
Die Klassenvervollständigung von Delphi erzeugt dir dann die Deklarationen für die Get- und Set-Methode.
Nun ja. Aber nicht bei Personal Versionen - leider.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:25
Nachtrag:
Mit shmias Methode sähe das dann so aus:
Delphi-Quellcode:
type
  TFoo = class
  private
    FLbl: TLabel;
    function GetSetText(const Index: String): string;
  public
    constructor Create(lbl: TLabel);
    property MyText[const Index: String]: string read GetSetText;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TFoo.Create(Lbl: TLabel);
begin
  inherited Create;
  FLbl := Lbl;
end;


function TFoo.GetSetText(const Index: String): String;
begin
  result := FLbl.Caption;
  if Index <> 'then
    FLbl.Caption := Index;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Foo: TFoo;
begin
  Foo := TFoo.Create(Label1);
  try
    ShowMessage(Foo.MyText['']);
  finally
    FreeAndNIl(Foo);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Foo: TFoo;
begin
  Foo := TFoo.Create(Label1);
  try
    Foo.MyText['Hello'];
  finally
    FreeAndNil(Foo);
  end;
end;
Ich finde das macht das Ganze aber etwas unübersichtlich. Mit einem getrennten Getter und Setter finde ich das persönlich besser. Oder gibt es da noch einen Vorteil, den ich jetzt übersehen habe?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:34
Hi Luckie,

also dein Tutorial ist super, Danke nochmals.

Ich bin auch bei deinem ursprünglichen Vorschlag geblieben und mein Problem ist damit gelöst.
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
shmia

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

Re: Mit Funktion Wert zurückgeben und zuweisen?

  Alt 15. Jul 2004, 13:59
Zitat von Luckie:
Ich finde das macht das Ganze aber etwas unübersichtlich. Mit einem getrennten Getter und Setter finde ich das persönlich besser. Oder gibt es da noch einen Vorteil, den ich jetzt übersehen habe?
Ähhemm... die sind doch getrennt:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    function GetIrgendwas(const Index: String): string;
    procedure SetIrgendwas(const Index, Value: string);
  public
    { Public-Deklarationen }
     property Irgendwas[const Index:String]: string read GetIrgendwas write SetIrgendwas;
  end;
Bei Array-Properties kann man als Index nicht nur Zahlen, sondern auch andere Datentypen verwenden.
Ein Beispiel aus der VCL wäre TDataset.FieldValues mit folgender Deklararion:
property FieldValues[const FieldName: string]: Variant; Man kann Array-Properties sogar mehrdimensional machen:
property Spielfeld[const Feldindex:integer; gegner:Boolean]: string read GetSpielfeld write SetSpielfeld;
Andreas
  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 09:53 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