Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Überprüfen, ob ein Pointer auf ein Objekt zeigt

  Alt 3. Nov 2009, 16:40
@General: ich konnte es mir auch nicht verkneifen
Delphi-Quellcode:
var x: Array[0..100] of Integer;
  P: PInteger;
begin
  X[30] := $6d696807;
  X[31] := $75737469;
  X[40] := Integer(@X[30]);
  X[51] := Integer(@X[51]);
  P := @X[51];
  if PointsToObj(P) then
    ShowMessage('Ja, ich bin eine Klasse, und mein Klassenname ist "'
      + TObject(P).ClassName + '"');
  if not IsValidObject(TObject(P)) then
    ShowMessage('Ich bin zwar zufällig kein valides Object, '
      + 'aber das kann man leicht ändern *grins*');
Gut, IsValidObject hat duch mehr Abfragen eine höhere Wahrscheinlichkeit, daß es richtig liegt,
aber dennoch kann es immernoch mal falsch liegen.

Nein, ich bin nicht so sehr selbstverliebt, aber dieser Name paßte nunmal zufällig genau rein
(und ich verrate nicht, was ich mit diesem Satz meine ... wer es gesehn hat, der weiß es)

[add]
so, der obere Code funktioniert mit D7 und wer weiß womit sonst noch,
so wie ich es will ... ansonsten funktioniert er zwar, aber der Name gefällt mir nicht ... drum hier noch 'ne etwas angepaßtere Version
der and
Delphi-Quellcode:
var x: Array[0..100] of Integer;
  P: PInteger;
  i: Integer;
begin
  i := 40 - vmtClassName shr 2;
  X[30] := $6d696807;
  X[31] := $75737469;
  X[40] := Integer(@X[30]);
  X[ i] := Integer(@X[ i]);
  P := @X[i];
  if PointsToObj(P) then
    ShowMessage('Ja, ich bin eine Klasse, und mein Klassenname ist "'
      + TObject(P).ClassName + '"');
  //if not IsValidObject(TObject(P)) then
  // ShowMessage('Ich bin zwar zufällig kein valides Object, '
  // + 'aber das kann man leicht ändern *grins*');
end;
$2B or not $2B
  Mit Zitat antworten Zitat