Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#12

Re: schreibender Zugriff auf private Variablen ?

  Alt 7. Nov 2007, 08:29
Das kann eigentlich nicht gehen. Die Property ist vollkommen gekapselt durch Zugriffsmethode. Dh. es muß garkein private feld geben auf das sich die Property bezieht, sondern die Zugriffmethoden könnten auch einen String dynamsich zusammenbauen erst beim Zugriff auf diese property. Das was Elvis vorschlägt kann und darf nicht funktionieren.

Besser so:

Delphi-Quellcode:
type
  TTestCracker = class(TObject)
  private
    FValue: String;
  end;

procedure Test;
var
  T: TTest;
begin
  T := TTest.Create;
  try
    TTestCracker(T).FValue := 'Test';
  finally
    T.Free;
  end;
end;
Ansonsten gehts auch noch enfacher

Delphi-Quellcode:
procedure Test;
type
  PTestCracker = ^TTestCracker;
  TTestCracker = packed record
    ClassVMT: Pointer;
// hier alle Felder eintragen die in allen Vorgängerklassen von TTest implementiert wurde,
// oder alternativ einmalig den +Offset aus gehend von TTest.Self auf FValue per Debugger ermitteln und exakt soviele
// Bytes als Dummy[] Array hier einfügen, zb. Offset->FValue ist 32, dann hier Dummy[0..32-4-1] of Byte;

    FValue: String;
  end;
var
  T: TTest;
begin
  T := TTest.Create;
  try
    PTestCracker(T).FValue := 'Test';
  finally
    T.Free;
  end;
end;
Gruß Hagen
  Mit Zitat antworten Zitat