![]() |
Speicherbereich in Bytearray schreiben
Hallo,
ich habe versucht über die DP-Suche eine Antwort auf meine Frage zu finde, hatte aber leider keinen Erfolg. Vor allem wusste ich nicht so recht, wonach ich genau suchen muss :? Zu meiner Frage: Ich habe den Pointer, der die Adresse eines "Packed Record"s angibt. Hinter dem Record stehen noch weitere Informationen, die ich nun auslesen möchte. Geplant war es so, dass ich die Daten in ein Byte Array schreibe, das ich dann weiter analysieren kann. Ich habe, da ich bisher nicht viel mit direkten Speicherzugriffen gearbeitet habe, keine Ahnung, wie das funktioniert. Kann mir da eventuell jemand auf die Sprünge helfen? Ist bestimmt nicht schwer ;) |
Re: Speicherbereich in Bytearray schreiben
Zitat:
Du musst also Deine Inhalte in Variablen kopieren und dann untersuchen. Wenn Du den packed record kennst, sollte das eingentlich kein Problem sein... Grüße, Messie |
Re: Speicherbereich in Bytearray schreiben
eventuell ist das was du suchst ja ein typisierter Pointer.
Wenn du Beispielsweise folgenden packed Record hast:
Delphi-Quellcode:
so kannst du folgendermaßen einen typisierten Pointer erstellen und damit arbeiten:
type
TYourRecord = packed record Daten1: XYZ; Daten2: YYZ; end;
Delphi-Quellcode:
var
MyRecord: ^TYourRecord; //Einen Pointer der auf einen TYourRecord zeigt begin MyRecord := DerPointerWelcherAufDenRecordZeigt; MyRecord^.Daten1 := irgendwas; MyRecord^.Daten2 := irgendwas; |
Re: Speicherbereich in Bytearray schreiben
Zitat:
Zitat:
Vielleicht hab ich mich auch etwas unglücklich ausgedrückt. Ich habe den Pointer und die Länge des Records und die Länge des Anhangs. Ich müsste also lediglich den Speicherbereich ab dem Pointer bis zum Ende des Anhangs auslesen. Nur weiß ich nicht, wie das geht :( |
Re: Speicherbereich in Bytearray schreiben
Hi,
wenn du auf den Bereich hinter den Record zugreifen möchtest wäre dies eine Möglichkeit:
Delphi-Quellcode:
type
TMyRecord = packed record Daten1: integer; Daten2: byte; ... end; procedure TForm1.Button1Click(Sender: TObject); var MyR: TMyRecord; pB: PByteArray; begin pB:= Pointer(Cardinal(@MyR)+ SizeOf(TMyRecord)); caption:= inttostr(pB^[0]);//DEMO end; |
Re: Speicherbereich in Bytearray schreiben
Ahh, vielen Dank. Das ist genau das, was ich gesucht habe :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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