![]() |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Mir ging es um das TFont-Feld des Records, und warum man
Delphi-Quellcode:
schreiben kann, ohne ein AV zu bekommen.
MsgRecord.Font := FontDialog1.Font;
Thx to jim_raynor und die anderen ... Ach ja, Zitat:
In meinem Delphi steht folgendes: TFont = class(TGraphicsObject) private {...} |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Oh verdammt, da habe ich mich wohkl vertan. :oops: :duck:
Aber du kannst dich auch mal kalrer ausdrücken um was es dir eigentlich geht. |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Zitat:
|
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Hallo,
Wenn das hier
Delphi-Quellcode:
eine AV liefern würde, dann müsste das hier
MsgRecord.Font := FontDialog1.Font;
Delphi-Quellcode:
genauso eine AV liefern. In beiden Fällen weisst du einer Variable, die vorher ins Nirvana zeigte einen gültigen Wert zu.
var EinFont : TFont;
begin EinFont := TFont.Create; end; Warums sollte das einen Fehler liefern? grüße, daniel |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Zitat:
War aber auch nur ein Blick in die trübe Kristallkugel. :gruebel: |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Zitat:
P.S.: Jaaaaaa, ich habe es geschafft, ich habe wenigstens einen verwirrt! :mrgreen: |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Zitat:
|
Re: Kein Fehler obwohl Objekt nicht erstellt !?
-> :warn:
|
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Um das Problem nochmals aufzugreifen (ich stehe nämlich vor selbigen):
Delphi-Quellcode:
Ich habe eine globale Variable vom Typ TFont die ich beim Aufrufen dieser Funktion übergebe und auch wieder zuweise, also in der Form
function Font_GetFontFromUser(_Font: TFont): TFont;
var FD: TMyFontDialog; begin Result := NIL; FD := TMyFontDialog.Create(NIL); try FD.Font := _Font; if FD.Execute then begin Result := FD.Font; end; finally FreeAndNil(FD); end; end;
Delphi-Quellcode:
Aber kurze Zeit (nicht direkt!) nachdem ich diese Funktion aufgerufen habe, sind die Werte von FfntBla.Name, FfntBla.Size etc. in der "Liste überwachter Ausdrücke" ungültig. Vermutete Ursache ist -wie hier schon angesprochen-, dass mit FreeAndNil auch meine globale Schrift freigegeben wird.
FfntBla := Font_GetFontFromUser(FfntBla);
Als Abhilfe hatte ich folgendes angedacht:
Delphi-Quellcode:
Leider besteht dummerweise das Problem und die globale Variable wird freigegeben, obwohl das afaik nicht sein durfte!function Font_GetFontFromUser(_Font: TFont): TFont; var FD: TMyFontDialog; DummyFont: TFont; begin Result := NIL; FD := TMyFontDialog.Create(NIL); try DummyFont := FD.Font FD.Font := _Font; if FD.Execute then begin Result := FD.Font; end; FD.Font := DummyFont; finally FreeAndNil(FD); end; end; Vielen Dank für schnelle Antworten! |
Re: Kein Fehler obwohl Objekt nicht erstellt !?
Das Problem ist, dass du nur den Pointer setzt und somit ist auch klar, dass FfntBla auf nichts zeigt, wenn du das Ziel frei gibst.
Du musst also Assign verwenden!
Delphi-Quellcode:
FfntBla.Assign(Font_GetFontFromUser(FfntBla));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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