您好
我在Delphi 2006中有一个动态链接库,在其uses子句中有forms.pas.
如果我加载dll然后立即在for循环中卸载它,比如10000次,内存会慢慢爬上去.但是,如果我将Forms.pas从dll的uses子句中删除,那么问题就会消失.
代码很简单
这是我的dll代码:
library Project1;
uses
Forms;
begin
end.
Run Code Online (Sandbox Code Playgroud)
这是我的调用应用程序的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
t_ImportHandle: LongInt;
t_Index: Integer;
begin
for t_Index := 0 to 10000 - 1 do
begin
t_ImportHandle := LoadLibrary('Project1.dll');
FreeLibrary(t_ImportHandle);
end;
end;
Run Code Online (Sandbox Code Playgroud)
是否有其他人能够复制这个或知道原因是什么以及如何解决它?
我有以下功能在Delphi 2006中工作,但在Delphi XE2下,它在处理时会产生访问冲突错误或特权指令错误RET.
function Q_TrimChar(const S: string; Ch: Char): string;
asm
PUSH ESI
MOV ESI,ECX
TEST EAX,EAX
JE @@qt
MOV ECX,[EAX-4]
TEST ECX,ECX
JE @@qt
PUSH EBX
PUSH EDI
MOV EBX,EAX
MOV EDI,EDX
XOR EDX,EDX
MOV EAX,ESI
CALL System.@LStrFromPCharLen
MOV EDX,EDI
MOV ECX,[EBX-4]
@@lp1: CMP DL,BYTE PTR [EBX]
JNE @@ex1
INC EBX
DEC ECX
JNE @@lp1
MOV EDX,[ESI]
JMP @@wq
@@ex1: DEC ECX
@@lp2: CMP DL,BYTE PTR [EBX+ECX]
JNE @@ex2
DEC ECX
JMP @@lp2
@@ex2: MOV EDI,[ESI]
LEA …Run Code Online (Sandbox Code Playgroud) 我一直在尝试编写一个带有两个指针(输入和输出)的函数,并以相反的顺序将输入中的字节写入输出.到目前为止,我还没能使它正常工作.
procedure ReverseBytes(Source, Dest: Pointer; Size: Integer);
var
Index: Integer;
begin
Move(Pointer(LongInt(Source) + Index)^, Pointer(LongInt(Dest) + (Size - Index))^ , 1);
end;
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一个更好的方法来做到这一点.
谢谢.
我有以下需要反序列化的Json字符串.
{"123456789":
{"short_description":"Delivered",
"detail_description":"Your item has been delivered"
}
}
Run Code Online (Sandbox Code Playgroud)
第一个字段"123456789"是一个id号,所以基本上这个值可能会有所不同,具体取决于被查询的数据.
我在visual studio中使用C#.显然因为第一个字段的值可以改变,所以我不能使用预定义的类来反序列化JSON,因为该字段将用作类名,但字段值与类名不匹配.
有没有办法将其反序列化为某种动态类但仍然访问字段,就好像它是一个预定义的类?
或者有没有办法将其反序列化为预定义的类,即使类名不匹配?
提供此数据的服务是第三方服务,因此我无法控制它.
您好
我使用windows API调用CreateRoundRgn和SetWindowRgn创建了一个带有圆边的窗口,但是圆角并不像使用GDI +绘制的圆角矩形那样平滑.反正有没有平滑窗口的角落?
procedure TPBSDashboardPanel.DefineWindowRegion;
var
WindowRegion: HRGN;
begin
if Assigned(Parent) then
begin
WindowRegion := CreateRoundRectRgn(0, 0, Width, Height, 20, 20);
SetWindowRgn(Handle, WindowRegion, True);
end;
end;
Run Code Online (Sandbox Code Playgroud) 您好我的项目CFG文件中的路径列表太长,我怎么能定义像$(BDS)这样的路径快捷方式谢谢
您好
我正在使用Delphi 2007并将MainFormOnTaskBar属性设置为true.
我遇到的问题是这个.
如果从主窗体中打开子窗口,然后从刚刚打开的子窗口显示一个消息对话框.当您关闭消息对话框然后关闭子窗口时,主窗体将发送到您在屏幕上的任何其他应用程序的后面.
这种情况发生在Windows Vista和Windows 7下.有谁知道为什么会发生这种情况,我该如何解决?
我有一个应用程序和一个DLL,都是用Delphi 2006编写的.
我有一个类来自基类,并覆盖了几个虚方法.
该类通过导出方法传递给DLL,导出的方法只知道基类.我从DLL中调用类上的方法,不调用重写的方法.
为了让它发挥作用,我需要做些什么吗?这根本不可能吗?
我们有一个 WCF Web 服务返回一些包含日期时间值作为字符串的 xml。该值首先从数据库中读出,然后使用 .ToString() 附加到 xml 字符串。
我们有许多 Web 服务器正在运行,但这个特定的服务器正在将日期时间值转换为 24 小时值,我们需要它具有 12 小时值,但我不知道如何更改 IIS 默认日期格式。我尝试更改区域设置,并查看了 Web 服务的文化和 ui 文化值,它们都设置为“不变语言(不变国家/地区)”。
我认为它可能需要更改注册表。有谁知道如何更改 Web 服务的日期时间格式?
在此阶段我们无法更改代码,因此我唯一的选择是更新服务器本身。
它在 Windows Server 2008 上运行。
谢谢你
我确定已经问过这个问题,但我找不到任何帖子.
是否可以在Delphi 2006 for Win32中使用ASP.net控件?我们想要在Delphi应用程序中使用一些Dev Express ASP.Net可视化控件(确切地说是图表控件).
这是可能的,如何做到,最好不需要购买更多的第三方组件.
谢谢.
delphi ×8
dll ×2
asp.net ×1
assembly ×1
basm ×1
byte ×1
c# ×1
datetime ×1
delphi-2006 ×1
delphi-2007 ×1
delphi-xe2 ×1
iis ×1
json ×1
locale ×1
memory ×1
memory-leaks ×1
modal-dialog ×1
overriding ×1
parsing ×1
path ×1
pointers ×1
reverse ×1
shortcut ×1
virtual ×1
wcf ×1
winapi ×1
windows ×1