我希望有以下内容:
<span title="This is a "good" title.">Catch me in the rice.</span>
Run Code Online (Sandbox Code Playgroud)
显然,浏览器无法很好地呈现这一点.请向我提供有关"我必须使用?"的转义序列或编码的信息.
在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声明没有延迟?
一旦在TWebBrowser上调用Navigate或Navigate2,它就会创建至少2个新线程,这些线程在您销毁浏览器之前不会被释放.
获取TWebBrowser实例生成的线程的线程ID以便使用TThread.NameThreadForDebugging命名它们的最佳方法(如果有的话)是什么?
我热衷于在Delphi语言中找到未记录的新条件定义和关键字.
像{$ WARN GARBAGE ON}这样的东西
http://qc.embarcadero.com/wc/qcmain.aspx?d=77686
我在Quality Central报告了这些内容,但问题已经关闭并且"升级到内部数据库".
这是什么意思?我是否应该期待这个已有一年半问题的答案?
我有一个Delphi应用程序,可以在MacOS 10.9.5 Yosemite下的PlayOnMac中顺利运行.
它具有最小化TrayBar应用程序的功能.由于Mac没有TrayBar的概念,如果应用程序在Mac上运行,我想禁用此功能.
检查Windows版本不是一个选项,因为PlayOnMac通过模拟Windows API并报告操作系统是Windows XP,很好地模糊了主机操作系统是Mac的事实.
我如何检测应用程序是否在PlayOnMac中运行?
我总是将动态数组的初始化与终结器配对,形式为
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) 我有这个代码
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不会捕获输入?
有人遇到过同样的行为吗?
我使用以下内容创建Windows计时器
FHandle := SetTimer(0, 0, 1000, TFNTimerProc(@TMyClass.MyMethod));
Run Code Online (Sandbox Code Playgroud)
该线程是否显示在Delphi"Threads"窗口中.如果是,我如何获得此线程ID?
我使用应用程序兼容性工具包中的"标准用户分析器"进行了操作,它报告我的应用程序不兼容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 XE2 的出现,类似Xml.Internal.AdomCore_4_3或 的范围单元System.StrUtils开始流行。
我喜欢使用此类描述性名称的能力,但我对命名约定和首选目录结构是什么感到困惑。
应该是
com.company.project.Security.Compression.ZLib.pas就像在Java中一样
System.Security.Compression.ZLib.pas就像在 .NET 中一样
或者是其他东西?
我应该将文件放在这样的目录结构中吗
System\Security\Compression\System.Security.Compression.ZLib.pas
或者只是System.Security.Compression.ZLib.pas在根文件夹中?
看看 Embarcadero 组织其单元的方式,我留下的印象是他们只是保留了 Delphi 5/6/7/.../XE 中的目录结构
请指教。
我使用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)
有没有更好的方法?我想念的条件定义还是全局属性?
该TWebBrowser文件中提到,
注意:TWebBrowser是一个移动组件.它不能在FireMonkey桌面应用程序中使用.
为什么这个限制?在Windows上TWebBrowser默认为Internet Explorer并且工作正常.维基是错的吗?
delphi ×11
delphi-xe ×2
delphi-xe7 ×2
twebbrowser ×2
bug-tracking ×1
comments ×1
delay ×1
delphi-2009 ×1
delphi-2010 ×1
delphi-xe2 ×1
escaping ×1
file ×1
finalization ×1
function ×1
html ×1
keyboard ×1
keydown ×1
leakcheck ×1
loading ×1
madexcept ×1
quotations ×1
scope ×1
temp ×1
timer ×1
uac ×1
uxtheme ×1
wine ×1