![]() |
Object und Pointer
Delphi-Quellcode:
Ich versuche so ein GifImage Object zu
var
_GifImage : TGifImage; p : ^TGifImage; begin _GifImage := TGifImage.Create; _GifImage.LoadFromStream(Stream); ; p^ := _GifImage; SendMessage(TheHandle,MessageToGetPics,1, integer(p^)); versenden, ei und ich sehe einfach nicht, wo mein Fehler ist. |
AW: Object und Pointer
Moin Martin,
_GifImage ist schon ein Pointer. Wohin wird verschickt, und was passiert soll am Ziel passieren? |
AW: Object und Pointer
Deine Variable TGifImage ist auch schon ein Pointer.
Du legst also ein Pointer auf einen Pointer an und möchtest diesen versenden. Das geht jedoch nicht wirklich gut. (warum weiß ich auch nicht...) Also einfach mal mit
Delphi-Quellcode:
Wobei ich gerade sehe das du erste einen Pointer nutzt (p^:=bla) und dann bei dem Übertragen doch nur den Abgespeicherten Wert nutzt (integer(p^)).
SendMessage(TheHandle,MessageToGetPics,1, integer(pointer(_GifImage)));
Erwartest du am anderen Ende vl. dass der Pointer noch die Variable beinhaltet (also das empfangender_pointer^ gleich deiner Variablen _GifImage ist? |
AW: Object und Pointer
Danke das Problem liegt auch nicht
an der Übergabe
Delphi-Quellcode:
das passt schon.
SendMessage(TheHandle,MessageToGetPics,1, integer(_GifImage));
Habe ein Problem das in ein TImage zu bekommen
Delphi-Quellcode:
Das ist der Empfänger da gibt es auch kein Problem
var
p : TGifImage; begin p := pointer(Msg.LParam); BuOpenPics.Caption := IntToStr( p.Height); case Msg.WParam of 1: begin ImPic.Picture.Assign(p); end; end; end; wenn ich das aus der Applikation mache. Nur aus der DLL geht es nicht ? |
AW: Object und Pointer
Ein Objekt ist ein komplexer Typ. Den kannst du nicht einfach von einer Anwendung in eine DLL übertragen, da beide unterschiedliche Speichermanager verwenden und nicht auf die privaten Speicher der jeweils anderen beteiligten Komponenten zugreifen können. Du kannst dein Objekt also nur entweder innerhalb der EXE oder innerhalb der DLL versenden.
Bernhard |
AW: Object und Pointer
Delphi-Quellcode:
Und das funktioniert auch.
var
p : TGifImage; g : TGifImage; begin g := TGifImage.Create; p := pointer(Msg.LParam); BuOpenPics.Caption := IntToStr( p.Height); p.SaveToFile('d:\1.gif'); g.LoadFromFile('d:\1.gif'); case Msg.WParam of 1: ImPic.Picture.Assign(g); end; g.Free; end; Nur ich kann p nicht direkt assignen |
AW: Object und Pointer
Sharemem?
ansonsten MemoryStream schreiben/lesen |
AW: Object und Pointer
Hallo das Poblem war, das ich den Stream nicht auf Position := 0
gesetzt hatte.:stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz