AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem beim kopieren von Pointerinhalten
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim kopieren von Pointerinhalten

Ein Thema von Wusel · begonnen am 21. Mai 2004 · letzter Beitrag vom 22. Mai 2004
Antwort Antwort
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#1

Problem beim kopieren von Pointerinhalten

  Alt 21. Mai 2004, 13:49
Aloha an alle
ich hab da ein kleines Problem beim kopieren von Pointerinhalten

Hier erstmal der Codeausschnitt
Delphi-Quellcode:
type
  TWSIconImage = packed record
    pbmpHeader : PBitmapInfo;
    pImg : Pointer;
  end;

procedure ...
var pHeaderDest : PBitmapInfoHeader;
    fWSIconImgXOr : TWSIconImage;
    ...;
begin
  ...
  Move(pHeaderDest, fWSIconImgXOr.pbmpHeader, SizeOf(pHeaderDest));
  ...
end;
In dem obigen Beispiel kopiert es ja nur die Zeigeradressen und somit sind Änderungen in pHeaderDest auch wirksam auf fWSIconImgXOr.pbmpHeader
Bei
Move(pHeaderDest^, fWSIconImgXOr.pbmpHeader^, SizeOf(pHeaderDest^)); bekomm ich 'ne Exception.

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


Wusel
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem beim kopieren von Pointerinhalten

  Alt 21. Mai 2004, 13:57
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!
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#3

Re: Problem beim kopieren von Pointerinhalten

  Alt 21. Mai 2004, 14:28
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:
type
  TWSIconImage = packed record
    pbmpHeader : PBitmapInfo;
    pImg : Pointer;
  end;

procedure ...
var pBmpInfo : PBitmapInfo;
    fWSIconImgXOr : TWSIconImage;
    ...;
begin
  ...
  Move(pBmpInfo, fWSIconImgXOr.pbmpHeader, SizeOf(pBmpInfo));
  ...
end;
Ich will halt, dass fWSIconImgXOr.pbmpHeader nur eine Kopie von pBmpInfo ist, ohne dass sich Änderungen in dem einen auf den anderen auswirken.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem beim kopieren von Pointerinhalten

  Alt 21. Mai 2004, 18:42
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#5

Re: Problem beim kopieren von Pointerinhalten

  Alt 22. Mai 2004, 17:43

ich sagte doch manchmal hat man eben ein Brett vorm Kopf
Move(pBmpInfo^, fWSIconImgXOr.pbmpHeader^, ...) ist schon richtig und funktioniert auch, aber nur wenn man vorher GetMem nicht vergessen hat.

also Problem gelöst
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz