Autor Beitrag
MitschL
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: Di 11.01.05 14:53 
Ich grüße Euch mal wieder recht enthusiastisch,

Der Titel sollte eigentlich ausreichen, aber was will ich?

Ich möchte für einen selbst erstellten Datentyp, den :=-Operator überschreiben, so daß ich nicht eine Referenz-Zählung einbinden kann. (Eigentlich will ich auch den =-Operator überschreiben, weil ich sagen möchte, was ausreicht, um zwei Datenkonstrukte als identisch zu bezeichnen, aber das Erste sollte schon reichen.)

So möchte ich als Zuweisung, je nach involvierten Variablen, mal eine Referenz zuweisen, oder aber die Inhalte kopieren, aber das sollte für die Lösung des Problems irrelevant sein.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var dingsi1, dingsi2: MyLovelyDingsies;
begin
  ...
  dingsi1 := dingsi2; // daß will ich beeinflussen.


Für Tips und so einen Dank schon mal im Voraus.

gegrüßt!
MitschL
st-matze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
BeitragVerfasst: Di 11.01.05 15:55 
das überladen von operatoren ist nur in .NET ( also ab delphi 8 ) möglich


z.B.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
TDoubleInput = record //kann auch ne class sein *logisch*
private
  FValue: Integer;
public
  class operator  Implicit(const AValue: string): TDoubleInput;
  class operator  Implicit(const AValue: TDoubleInput): Integer;
end;

class operator TDoubleInput.Implicit(const AValue: string): TDoubleInput;
begin
   Result.FValue := StrToIntDef(AValue, 0) * 2//Wert intern in privater variable ablegen
end;

class operator TDoubleInput.Implicit(const AValue: TDoubleInput): Integer;
begin
   Result  := AValue.FValue div 2;  //Wert aus internem Wert zurückgeben;
end;

//demo zugriffe auf die selbstdefinierten operatoren
var
  Double: TDoubleInput;
  I: Integer;
begin
  Double := '2'// line 1
  I := Double;   // line 2
end;


In obigem beispiel wird der wert intern einfach mit dem doppeltem wert abgelegt.



sollte funktioneieren. kann es selber nicht testen, da ich nur delphi 7 auf meinem aktuellen system habe.

st-matze
MitschL Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: Di 11.01.05 16:10 
Dank dir,

dummerweise kann ich nicht auf .NET zurückgreifen. Lediglich Delphi 5/6 Pro sind möglich. Hm. :?

gegrüßt!
MitschL