Online
Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
Delphi 12 Athens
|
AW: array angabe mit string
10. Aug 2010, 19:26
Wie gesagt, in diesem Fall mußt du einfach nur in deinem Setter einen Callback einführen.
Delphi-Quellcode:
procedure TMyArray.MySetter(index: string; value: integer);
begin
...
if assigned(fOnChange) then
fOnChange(self);
end;
Delphi-Quellcode:
type
TMyArray = class
private
fArr: array[0..9] of array[0..9] of array[0..9] of integer;
fOnChange: TNotifyEvent;
procedure readIndex( index: string; var x, y, z: integer);
function getString( index: string): integer;
procedure setString( index: string; value: integer);
function getIndex (x, y, z: integer): integer;
procedure setIndex (x, y, z: integer; value: integer);
public
property item[ index: string]: integer read getString write setString; default;
property item[x, y, z: integer]: integer read getIndex write setIndex; default;
property onChange: TNotifyEvent read fOnChange write fOnChange;
end;
procedure TMyArray.readIndex( index: string; var x, y, z: integer);
var
ex, ey, ez: integer;
begin
val( index, x, ex);
val(copy( index, ex + 1), y, ey);
val(copy( index, ey + 1), z, ez);
if (ex = 0) or ( index[ex] <> ' ,') or (ey <> 0)
or ( index[ey] <> ' ,') or (ez <> 0) then
raise Exception.Create(' invalid index string');
end;
{$IFOPT R+}
{$DEFINE TMYARRAY_R}
{$ENDIF}
{$R+}
function TMyArray.getString( index: string): integer;
var
x, y, z: integer;
begin
readIndex( index, x, y, z);
result := fArr[x, y, z];
end;
procedure TMyArray.setString( index: string; value: integer);
var
x, y, z: integer;
begin
readIndex( index, x, y, z);
fArr[x, y, z] := value;
if assigned(fOnChange) then
fOnChange(self);
end;
function TMyArray.getIndex(x, y, z: integer): integer;
begin
result := fArr[x, y, z];
end;
procedure TMyArray.setIndex(x, y, z: integer; value: integer);
begin
fArr[x, y, z] := value;
if assigned(fOnChange) then
fOnChange(self);
end;
{$IFNDEF TMYARRAY_R}
{$R-}
{$ENDIF}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
|