小编Ive*_*aev的帖子

我怎么能把"放在HTML属性值中

我希望有以下内容:

<span title="This is a "good" title.">Catch me in the rice.</span>
Run Code Online (Sandbox Code Playgroud)

显然,浏览器无法很好地呈现这一点.请向我提供有关"我必须使用?"的转义序列或编码的信息.

html escaping quotations html-entities

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

如何在UxTheme中修复延迟声明

在Delphi XE UxTheme单元中有以下声明

function DrawThemeTextEx(hTheme: HTHEME; hdc: HDC; iPartId: Integer;  iStateId: Integer;
  pszText: LPCWSTR; cchText: Integer; dwTextFlags: DWORD; pRect: PRect;
  var pOptions: TDTTOpts): HResult; stdcall; 
  external themelib name 'DrawThemeTextEx' delayed;
Run Code Online (Sandbox Code Playgroud)

我的带有SP3的Windows XP Professional在uxtheme.dll中没有这样的功能(使用http://www.nirsoft.net/utils/dll_export_viewer.html中的 dllexp.exe进行检查)

看起来我的应用程序延迟加载过程并因运行失败而出现以下错误:

Project mtgstudio.exe raised exception class EExternalException 
with message 'External exception C0FB007F'.
Run Code Online (Sandbox Code Playgroud)

JVCL也遇到了这个问题,但根据http://andy.jgknet.de/blog/2009/09/once-upon-a-delayed-jvcl-time/解决了这个问题.

我需要修复UxTheme,因为它们也被DevExpress组件使用.

有没有办法修补/修复UxTheme.pas DrawThemeTextEx声明没有延迟?

delphi function loading delay uxtheme

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

如何命名TWebBrowser线程

一旦在TWebBrowser上调用Navigate或Navigate2,它就会创建至少2个新线程,这些线程在您销毁浏览器之前不会被释放.

获取TWebBrowser实例生成的线程的线程ID以便使用TThread.NameThreadForDebugging命名它们的最佳方法(如果有的话)是什么?

delphi multithreading twebbrowser delphi-xe

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

这个Delphi定义的内容{$ WARN GARBAGE ON}意味着什么?

我热衷于在Delphi语言中找到未记录的新条件定义和关键字.

像{$ WARN GARBAGE ON}这样的东西

http://qc.embarcadero.com/wc/qcmain.aspx?d=77686

我在Quality Central报告了这些内容,但问题已经关闭并且"升级到内部数据库".

这是什么意思?我是否应该期待这个已有一年半问题的答案?

delphi bug-tracking comments delphi-xe

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

如何检测Delphi程序是否在PlayOnMac中运行

我有一个Delphi应用程序,可以在MacOS 10.9.5 Yosemite下的PlayOnMac中顺利运行.

它具有最小化TrayBar应用程序的功能.由于Mac没有TrayBar的概念,如果应用程序在Mac上运行,我想禁用此功能.

检查Windows版本不是一个选项,因为PlayOnMac通过模拟Windows API并报告操作系统是Windows XP,很好地模糊了主机操作系统是Mac的事实.

我如何检测应用程序是否在PlayOnMac中运行?

delphi wine delphi-xe7

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

正在手动调用 SetLength(array, 0); 有缺点吗?

我总是将动态数组的初始化与终结器配对,形式为

finally 
  SetLength(Array, 0); 
end;
Run Code Online (Sandbox Code Playgroud)

确切地知道数组何时被“销毁”感觉更自然,并且如果需要的话,可以通过已经拥有“最终”可用的方式更平滑地从数组过渡到 TList。

然而这种方法使源代码更加缩进。这种方法有什么缺点吗——可读性、可维护性、可扩展性、性能、易出错性?

我写的示例代码:

var
  A1: array of Integer;
  A2: array on Boolean;
  A3: array of string;
begin
  SetLength(A1, 10);
  try
    ...
    SetLength(A2, 20);
    try
      ...
      SetLength(A3, 30);
      try
        ...
      finally
        SetLength(A3, 0);
      end;
    finally
      SetLength(A2, 0);
    end;
  finnally
    SetLength(A1, 0);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi finalization dynamic-arrays delphi-xe7

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

Delphi 2009 OnKeyDown不像Delphi 2007那样陷阱

我有这个代码

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
begin
  if not (Key in [Ord('0')..Ord('9')]) then
    Key := 0;
end;
Run Code Online (Sandbox Code Playgroud)

并且它与Delphi 2007一起工作正常.当我升级到Delphi 2009并且我尝试按任何字母时它被接受并且Key:= 0不会捕获输入?

有人遇到过同样的行为吗?

delphi keyboard delphi-2009 keydown

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

设置使用SetTimer()API创建的线程的名称

我使用以下内容创建Windows计时器

FHandle := SetTimer(0, 0, 1000, TFNTimerProc(@TMyClass.MyMethod));
Run Code Online (Sandbox Code Playgroud)

该线程是否显示在Delphi"Threads"窗口中.如果是,我如何获得此线程ID?

delphi multithreading timer delphi-2010

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

如何解决madExcept在User\LocalSettings\Temp中创建临时文件

我使用应用程序兼容性工具包中的"标准用户分析器"进行了操作,它报告我的应用程序不兼容UAC,因为:

"DeleteFileA:文件(\ Device\HarddiskVolume1\Documents and Settings\Administrator\Local Settings\Temp\mtgstudio.madExcept)被拒绝'DELETE'访问,错误为0x5."

"DeleteFileA:File(\ Device\HarddiskVolume1\Documents and Settings\Administrator\Local Settings\Temp)被拒绝'DELETE'访问,错误为0x5."

检查madExcept.pas文件我发现:

function GetTempPath : AnsiString;
var arrCh : array [0..MAX_PATH] of AnsiChar;
begin
  if windows.GetTempPathA(MAX_PATH, arrCh) > 0 then begin
    result := arrCh;
    if result <> '' then begin
      CreateDirectoryA(PAnsiChar(result), nil);
      if result[Length(result)] <> '\' then
        result := result + '\';
      result := result + KillExt(ExtractFileName(ModuleName(0))) + '.madExcept';
      CreateDirectoryA(PAnsiChar(result), nil);
      result := result + '\';
    end;
  end else
    result := '';
end;
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法可以覆盖madExcept行为并将临时文件存储在UAC允许的位置?

delphi uac file temp madexcept

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

Delphi XE2 及以上版本中作用域单元的建议命名是什么?

随着 Delphi XE2 的出现,类似Xml.Internal.AdomCore_4_3或 的范围单元System.StrUtils开始流行。

我喜欢使用此类描述性名称的能力,但我对命名约定和首选目录结构是什么感到困惑。

  1. 应该是

    • com.company.project.Security.Compression.ZLib.pas就像在Java中一样

    • System.Security.Compression.ZLib.pas就像在 .NET 中一样

    • 或者是其他东西?

  2. 我应该将文件放在这样的目录结构中吗

    • System\Security\Compression\System.Security.Compression.ZLib.pas

    • 或者只是System.Security.Compression.ZLib.pas在根文件夹中?

看看 Embarcadero 组织其单元的方式,我留下的印象是他们只是保留了 Delphi 5/6/7/.../XE 中的目录结构

请指教。

delphi scope naming-conventions delphi-xe2

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

如何强制LeakCheck Delphi库不收集数据?

我使用Delphi的LeakCheck库https://bitbucket.org/shadow_cs/delphi-leakcheck.

我知道我可以使用这样的结构禁用泄漏报告:

{$IFDEF DEBUG}
System.ReportMemoryLeaksOnShutdown := true; // this will enable LeakCheck to display a message on Windows
{$ELSE}
System.ReportMemoryLeaksOnShutdown := false;
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

但是我还需要库在RELEASE模式下编译时不收集任何数据.

我可以像这样轻松"破解"LeakCheck.pas初始化/完成部分:

...
{$IFDEF DEBUG} // <--- Code added by me
initialization
  TLeakCheck.Initialize;
finalization
  TLeakCheck.Finalize;
{$ENDIF} // <--- Code added by me
end.
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?我想念的条件定义还是全局属性?

delphi leakcheck

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

为什么FMX.TWebBrowser不能在DelphiDocs的桌面应用程序中使用?

TWebBrowser文件中提到,

注意:TWebBrowser是一个移动组件.它不能在FireMonkey桌面应用程序中使用.

为什么这个限制?在Windows上TWebBrowser默认为Internet Explorer并且工作正常.维基是错的吗?

delphi twebbrowser delphi-10.1-berlin

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