Edit
Ok ich habs. Habe Fi: Integer in Private vergessen.
Ich denke ich werde Class verwenden und dann doch hier und da ein wenig umschreiben.
Ich mache es lieber einmal richtig, als dass ich später 100 Fehler drin habe.
Das hier funktioniert jedenfalls nicht
Delphi-Quellcode:
unit classTest_;
interface
uses System.SysUtils;
type
TTest_ =
class
private
Fi: Integer;
// VERGESSEN!
Test: TMultiReadExclusiveWriteSynchronizer;
function Geti: Integer;
procedure Seti(
const Value: Integer);
public
constructor Create;
overload;
destructor Destroy;
override;
property i: Integer
read Geti
write Seti;
end;
implementation
constructor TTest_.Create;
begin
Test := TMultiReadExclusiveWriteSynchronizer.Create;
end;
destructor TTest_.Destroy;
begin
Test.Free;
inherited;
end;
function TTest_.Geti: Integer;
begin
Test.BeginRead;
Result := Fi;
// Fi, nicht i
Test.EndRead;
end;
procedure TTest_.Seti(
const Value: Integer);
begin
Test.BeginWrite;
Fi := Value;
// Fi, nicht i
Test.EndWrite;
end;
end.
Delphi-Quellcode:
var
TestInstance: TTest_;
begin
TestInstance := TTest_.Create;
TestInstance.i := 123;
ShowMessage(TestInstance.i.ToString);
TestInstance.Free;