小编Jas*_*son的帖子

如何为Interface对象注册预期的内存泄漏

是否可以使用该RegisterExpectedMemoryLeak过程注册接口?

我有一个私有字段声明为:

FDragDropTarget: IDropTarget;
Run Code Online (Sandbox Code Playgroud)

然后我创建一个这样的实例并尝试为此对象注册已知的内存泄漏:

  FDragDropTarget := TDropTarget.Create(lcMain.Handle, FDragDrop);
  RegisterExpectedMemoryLeak(FDragDropTarget);
Run Code Online (Sandbox Code Playgroud)

但是我得到一个编译错误,指出存在不兼容的类型:'Pointer'和'IDropTarget'.对我来说,我的界面实例无论如何都是一个指针?

我可以这样做吗?它是通过我的.dpr文件中的ReportMemoryLeaksOnShutdown:= True语句报告的.

begin
  ReportMemoryLeaksOnShutdown := True;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

TDropTarget是我对IDropTarget接口的实现:

  TDropTarget = class(TInterfacedObject, IDropTarget)
  ...
  end;
Run Code Online (Sandbox Code Playgroud)

谢谢

delphi memory-leaks delphi-xe2

3
推荐指数
1
解决办法
530
查看次数

即使使用TFile标记为Share Read,也无法再次打开文件

鉴于此代码:

  FN := 'c:\temp\test_file.log';
  AFile := TFile.Open(FN, TFileMode.fmOpenOrCreate, TFileAccess.faReadWrite, TFileShare.fsRead);
  try
    with TFile.OpenRead(FN) do
    try

    finally
      Free;
    end;

  finally
    AFile.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

尝试在TFile.OpenRead(FN)行打开时出错:
在此输入图像描述

使用:

with TFile.Open('c:\temp\test_file.log', TFileMode.fmOpen, TFileAccess.faRead, TFileShare.fsRead) do
try

finally
  Free;
end;
Run Code Online (Sandbox Code Playgroud)

也导致相同的错误.同样如下:

  FS := TFileStream.Create('c:\temp\test_file.log', fmOpenRead or fmShareDenyWrite);
  try

  finally
    FS.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

但是,我可以愉快地在记事本中打开文件说(作为Readonly),或者如果我将初始TFileShare.fsRead更改为TFileShare.fsNone,我无法按预期打开它(在记事本中).

但是,如果我运行这个虚拟应用程序的两个实例,首先使用TFileShare.fsRead打开一个实例,我可以打开它.所以我无法在同一个应用程序中重新打开文件两次?似乎不对.

如果我最初打开文件:

  FS := TFileStream.Create('c:\temp\test_file.log', fmOpenReadWrite or fmShareDenyWrite);
  try

  finally
    FS.Free;
  end;
Run Code Online (Sandbox Code Playgroud)

我可以使用上述方法(使用fsRead)第二次打开它.令人困惑的是逐步执行TFile.Open代码,它最终执行与上述TFileStream.Create完全相同的代码.

最后注意.如果我使用top(first)方式打开但是将其分配给"global"变量,则删除内部TFile.OpenRead(FN)调用,然后尝试通过另一个按钮单击打开文件说,错误仍然存​​在.这证明它与嵌套调用无关.

delphi delphi-xe3

3
推荐指数
1
解决办法
6081
查看次数

找不到MVC PartialView

我试图在主视图中呈现局部视图.但是,我收到错误:

未找到部分视图"CompletedJobParts"或视图引擎不支持搜索的位置.〜/ Views/Jobs/CompletedJobParts.aspx~/Views/Jobs/CompletedJobParts.ascx~/Views/Shared/CompletedJobParts.aspx~/Views/Shared/CompletedJobParts.ascx~/Views/Jobs/CompletedJobParts.cshtml~/Views/Jobs /CompletedJobParts.vbhtml~/Views/Shared/CompletedJobParts.cshtml~/Views/Shared/CompletedJobParts.vbhtml

(抱歉格式化)...

我的观点的物理布局(位置)是查看/ MDT /工作/ CompletedJobParts.cshtml,我试图从在同一位置的观点把它(即查看/ MDT /职位/ Index.cshtml).我认为这可能是一个路由问题所以我输入:

   routes.MapRoute(
        "MDT",
        "MDT/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

进入我的Global.asax.cs文件,但它似乎也没有在那里搜索(即,它正在搜索的位置没有MDT部分出现).

我在index.cshtml中使用它来渲染:

    <div id="parts_div">
      @{Html.RenderPartial("CompletedJobParts", Model);}
    </div>
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让我的View找到我的PartialView?

TIA

razor c#-4.0 asp.net-mvc-3

2
推荐指数
1
解决办法
1万
查看次数

MVC 3:模型的AJAX post list属性

我在我的模型中发布一个带有列表的ajax调用时遇到了麻烦.

我的模型是:

public class MyListItem
{
    public int Id { get; set; }
    public string Value { get; set; }
}

public class MyModel
{
    public int Integer { get; set; }
    public string Str { get; set; }
    public List<MyListItem> MyList { get; set; }        

    public MyModel()
    {
        Str = "Initial";
        Integer = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我正在尝试将MyList的列表项显示为:

    <div>
    @{
            if (Model.MyList != null)
            { 
                int i = 0;
                foreach (var item in Model.MyList)
                {                       
                    <label>@item.Value</label>
                    @Html.Hidden("MyList[" + i + …
Run Code Online (Sandbox Code Playgroud)

c# razor asp.net-mvc-3

0
推荐指数
1
解决办法
3946
查看次数