![]() |
Problem beim kopieren von Pointerinhalten
Aloha an alle :hi:
ich hab da ein kleines Problem beim kopieren von Pointerinhalten :| Hier erstmal der Codeausschnitt
Delphi-Quellcode:
In dem obigen Beispiel kopiert es ja nur die Zeigeradressen und somit sind Änderungen in pHeaderDest auch wirksam auf fWSIconImgXOr.pbmpHeader
type
TWSIconImage = packed record pbmpHeader : PBitmapInfo; pImg : Pointer; end; procedure ... var pHeaderDest : PBitmapInfoHeader; fWSIconImgXOr : TWSIconImage; ...; begin ... Move(pHeaderDest, fWSIconImgXOr.pbmpHeader, SizeOf(pHeaderDest)); ... end; Bei
Delphi-Quellcode:
bekomm ich 'ne Exception.
Move(pHeaderDest^, fWSIconImgXOr.pbmpHeader^, SizeOf(pHeaderDest^));
Gibt es eine Möglichkeit, dass ich wirklich nur den Inhalt des Pointers übergebe und nicht die Adresse? Wäre wirklich sehr dankbar für eure Hilfe, aber manchmal hat man irgendwie ein Brett vorm Kopf :wall: Wusel |
Re: Problem beim kopieren von Pointerinhalten
Was hast du denn vor? Move verlangt ja einen Zeiger auf den speicherbereich, der verschoben werden soll. Durch das derefenzieren lieferst du den Inhalt an der Stelle, auf die deine Zeigervariable zeigt. Die Funktion Move interpretiert dies aber als Adresse!
|
Re: Problem beim kopieren von Pointerinhalten
Achso, das habe ich nicht gewusst denn in der Hilfe steht nicht dass es nur Zeiger sein dürfen.
Ich hab jetzt erstmal den kleinen Fehler behoben, dass ich auch PBitmapInfo an PBitmapInfo übergebe und nicht PBitmapInfoHeader an PBitmapInfo
Delphi-Quellcode:
Ich will halt, dass fWSIconImgXOr.pbmpHeader nur eine Kopie von pBmpInfo ist, ohne dass sich Änderungen in dem einen auf den anderen auswirken.
type
TWSIconImage = packed record pbmpHeader : PBitmapInfo; pImg : Pointer; end; procedure ... var pBmpInfo : PBitmapInfo; fWSIconImgXOr : TWSIconImage; ...; begin ... Move(pBmpInfo, fWSIconImgXOr.pbmpHeader, SizeOf(pBmpInfo)); ... end; |
Re: Problem beim kopieren von Pointerinhalten
Dann wird das aber mit move nix. Damit kopierst du ja Speicherinhalte. Für deine Zwecke dürfte eine einfache Zuweisung von pBmpInfo an fWSIconImgXOr.pbmpHeader reichen.
|
Re: Problem beim kopieren von Pointerinhalten
:wall: :wall: :wall: :wall: :wall:
ich sagte doch manchmal hat man eben ein Brett vorm Kopf
Delphi-Quellcode:
ist schon richtig und funktioniert auch, aber nur wenn man vorher GetMem nicht vergessen hat.
Move(pBmpInfo^, fWSIconImgXOr.pbmpHeader^, ...)
also :arrow: Problem gelöst :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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