Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: schreibender Zugriff auf private Variablen ?

  Alt 6. Nov 2007, 19:00
Eine Instanz ist eigentlich ein Pointer auf den Bereich wo die Daten für die Klasse liegen.
Wenn du also weißt an welchem Offset der String liegt brauchst du einfach nur auf die Instanzvariable den Offset addieren, die erhaltene Adresse auf einen PString casten und dann zu ändern.

bei
Delphi-Quellcode:
type
  TmyTest = class(TObject)
  private
    sTest: string;
  public
    constructor Create;
    function getTest: string;
  end;
kommst du so an "sTest":
Delphi-Quellcode:
var
  lMyTest : TmyTest;
begin
  lMyTest := TmyTest.Create();
  PString(Cardinal(lMyTest) + Cardinal(TmyTest.InstanceSize) - sizeof(string))^ := 'neuer Wert';
[Edit]
TmyTest.InstanceSize auf Cardinal gecastet um Warnung weg zu bekommen
[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat