![]() |
Speicheradresse um eins erhöhen
Liebe Leute,
ich suche eine Prozedur mit der ich eine Speicheradresse, z.B. 00400100 um eins erhöhen kann. :) |
Re: Speicheradresse um eins erhöhen
|
Re: Speicheradresse um eins erhöhen
Afaik erlaubt Delphi die Anwendung von
![]() ![]() |
Re: Speicheradresse um eins erhöhen
Delphi-Quellcode:
procedure IncAt(address: Cardinal);
begin PCardinal(address)^ := PCardinal(address)^ + 1; end; |
Re: Speicheradresse um eins erhöhen
@Dax: Das ist nen bissl komisches Beispiel. Bei deinem Beispiel müsste man ja address die Adresse des Pointer zuweisen. Dann doch lieber so:
Delphi-Quellcode:
function inc_address(var address: pointer);
begin Cardinal(address) := Cardinal(address) + 1; result := address; end; |
Re: Speicheradresse um eins erhöhen
@Jens, da hast Du aber was gehörig vermischt.
Delphi-Quellcode:
procedure inc_address(var address: pointer);
begin Cardinal(address) := Cardinal(address) + 1; end; |
Re: Speicheradresse um eins erhöhen
Wenns um sowas wie Schleifen und Zugriff auf einzelne Bytes geht:
Delphi-Quellcode:
function DumpMem(P: Pointer; Len: Cardinal): String;
var I: Cardinal; begin for I := 0 to Len do begin Result := Result + IntToHex(PByte(Cardinal(P) + I)^, 2); end; end; |
Re: Speicheradresse um eins erhöhen
Zwar mal davon abgesehen, dass Cardinal() der richtige Typ wäre für den Typecast, aber afaik schmeisst Delphi dann eine Warnung bei der Addition von wegen Kombination von vorzeichenlosen und vorzeichenbehafteten Datentypen. Dadurch zwingt Delphi einem (leider) bei solcher Adressarithmetik zu der vorzeichenbehafteten Rechnung.
@Zacherl: Da er bei deiner Lösung immer wieder vom Pointer neu losrechnet (um i drauf zu rechnen), wäre es performanter einfacher eine lokale Variable vom Typ PByte anzulegen und dieser vor der Schleife den übergebenen Pointer zu übergeben. In der Schleife reicht dann einfach ein ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz