トップページ > プログラム > 2015年03月01日 > T6vkDyur

書き込み順位&時間帯一覧

31 位/228 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000011000010003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【Delphi】Embarcaderoオッチャ その30【C++ビルダ】

書き込みレス一覧

【Delphi】Embarcaderoオッチャ その30【C++ビルダ】
308 :デフォルトの名無しさん[sage]:2015/03/01(日) 14:56:37.63 ID:T6vkDyur
XE7でリーク問題
class function TEncoding.GetUTF8: TEncoding;
var
LEncoding: TEncoding;
begin
if FUTF8Encoding = nil then
begin
LEncoding := TUTF8Encoding.Create;//ここでリークしてるが解決方法誰か知りませんか
if AtomicCmpExchange(Pointer(FUTF8Encoding), Pointer(LEncoding), nil) <> nil then
LEncoding.Free;
{$IFDEF AUTOREFCOUNT}
FUTF8Encoding.__ObjAddRef;
{$ENDIF AUTOREFCOUNT}
end;
Result := FUTF8Encoding;
end;
【Delphi】Embarcaderoオッチャ その30【C++ビルダ】
309 :デフォルトの名無しさん[sage]:2015/03/01(日) 15:37:52.82 ID:T6vkDyur
XE7のRegisterClassリソースリーク解決案

destructor TApplication.Destroy;

DestroyWindow(FHandle);
end;下に追加
Winapi.Windows.UnregisterClass(WindowClass.lpszClassName, HInstance);//追加

procedure TWinControl.DestroyWindowHandle;

Exclude(FControlState, csDestroyingHandle);下に追加
Winapi.Windows.UnregisterClass(Params.WinClassName, HInstance);//追加

destructor TWinControl.Destroy;で
var
Instance: TControl;下に
Params: TCreateParams;//追加

DestroyWindowHandle;

StrPCopy(Params.WinClassName, ClassName); //追加
Winapi.Windows.UnregisterClass(Params.WinClassName, HInstance);//追加

(http://qc.embarcadero.com/wc/qcmain.aspx?d=107204)に掲載あり
procedure DeallocateHWnd(Wnd: HWND);で
if Instance <> @DefWindowProc then FreeObjectInstance(Instance);この下
if (GetClassInfo(HInstance, UtilWindowClass.lpszClassName, TempClass)) then//追加
Winapi.Windows.UnregisterClass(UtilWindowClass.lpszClassName, HInstance);//追加
【Delphi】Embarcaderoオッチャ その30【C++ビルダ】
310 :デフォルトの名無しさん[sage]:2015/03/01(日) 20:01:18.09 ID:T6vkDyur
XE7のRegisterClassリソースリーク解決案

destructor TWinControl.Destroy;の改良
var
Instance: TControl;この下
Params: TCreateParams;//追加
TempClass: TWndClass;//追加
begin
・・・・・
DestroyWindowHandle;この下に追加
StrPCopy(Params.WinClassName, ClassName); //追加
if (GetClassInfo(HInstance, Params.WinClassName, TempClass)) then//追加
Winapi.Windows.UnregisterClass(Params.WinClassName, HInstance);//追加


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。