![]() |
Re: UserData (Zeiger) geht verloren
Nein, das macht schon die Compilermagic.
|
Re: UserData (Zeiger) geht verloren
Hi,
Werden lokale Objekte nicht beim verlassen einer Prozedur automatisch freigegeben? Wenn ich das richtig sehe weist du hier die lokale Pointeraddresse ObjUserData[-1] zu.
Delphi-Quellcode:
Was aber passiert beim Verlassen der Prozedur wird UserObjData nicht freigegeben und somit auch ObjUserData[-1]?!
ObjUserData[-1] := UserObjData;
|
Re: UserData (Zeiger) geht verloren
Nein. Die Variable UseroOjData wird ungültig, da der Speicher aber nicht freigegen wird, ist der Speicherbereich für die Eigenschaft ObjUserData des Objektes noch gültig.
|
Re: UserData (Zeiger) geht verloren
hallo nochmal, letzter Versuch... versprochen....
hast Du die Länge des Puffers definiert auf den der Pointer verweist ( Zitat:
|
Re: UserData (Zeiger) geht verloren
Das habe ich mir kurz vor Feierabend auch über legt und ObjUserDataLength sizeof(TUserObjData) zugewiesen. Das hat aber auch nicht funktioniert. :wall:
|
Re: UserData (Zeiger) geht verloren
:kotz: ich geh ins Bett
|
Re: UserData (Zeiger) geht verloren
Na, das istaber kein Grund hier meinen Arbeitsplatz voll zu kotzen. ;)
Das dumme ist nur, ich habe sonst keine andere Möglichkeit diese Textobjekte zu markieren damit ich sie von anderen unterscheiden kann. Eine Eigenschaft wie Tag gibt es nicht. |
Re: UserData (Zeiger) geht verloren
Ich habs, ich habs, ich habs. :firejump:
Man muss das Objekt zu erst erstellen:
Delphi-Quellcode:
Das hätten sie aber ruhig mal in der Hilfe schreiben können. :roll:
procedure TFBImageEn.AddPageNumber(Number: Integer);
var UserObjData : PUserObjData; hObj: Integer; begin with ImageEnVect do begin hObj := AddNewObject; New(UserObjData); UserObjData.FIsPageNumberObj := True; ObjUserDataLength[hObj] := sizeof(TUserObjData); ObjUserData[hObj] := UserObjData; // Test UserObjData := ObjUserData[hObj]; Writeln('AddPageNumber'); Writeln(ObjUserDataLength[hObj]); Writeln(BoolToStr(UserObjData.FIsPageNumberObj, True)); // Test OK - output is "True" // End test ObjFontName[hObj] := 'Tahoma'; ObjFontHeight[hObj] := -12; ObjFontStyles[hObj] := []; ObjPenColor[hObj] := clBlack; ObjBrushStyle[hObj] := bsClear; ObjMemoCharsBrushStyle[hObj] := bsClear; ObjMemoBorderStyle[hObj] := psClear; ObjTextEditable[hObj] := False; ObjText[hObj] := IntToStr(Number); ObjTop[hObj] := Height - 25; ObjWidth[hObj] := 20; ObjTextAlign[hObj] := iejCenter; ObjLeft[hObj] := (Width div 2) - (ObjWidth[hObj] div 2); //AddNewObject; Update; end; end; |
Re: UserData (Zeiger) geht verloren
... Glückwunsch !!!
konnte erst jetzt antworten da ich die Sauerrei noch beseitigen musste. :lol: |
Re: UserData (Zeiger) geht verloren
Nun ja, der Gag ist ja, dass man es auch anders rum machen kann, wenn man diese Eigenschaft nicht braucht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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