Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Bool(ean)-Wert in PByte kopieren

  Alt 4. Apr 2014, 15:43
Zitat:
Delphi-Quellcode:
PBOOL(FieldValue):= PBOOL(LongBool(svc.OwnProcess));
PBOOL(FieldValue):= PBOOL(svc.OwnProcess);
Du sagst: FieldValue, interpretiert als PBool, soll den Wert svc.OwnProcess, interpretiert als LongBool, interpretiert als PBool, haben..

Also im Grunde machst du eine 1:1 zuweisen. Der Pointer FieldValue erhält bei diesen zwei Zeilen keine Adresse sondern einen Wert!
Bei LongBool kann das alles zwischen 0 und 2^32-1 sein!
Wenn du dann FieldValue dereferenzierst, per ^, dann greifst du auf die Adresse, welche der Inhalt von OwnProcess war, zu - was eig. knallen sollte, da da meistens 0 oder 1 drinnen steht und du keinen Zugriff auf diese Adressen haben solltest.

So ists richtig:
Delphi-Quellcode:
// Zuweisung als Pointer
FieldValue := @svc.OwnProcess));

// Änderung der originalen Referenz
FieldValue^ := false; // svc.OwnProcess = false!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat