@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;