Delphi 2009+ 的 System.SysUtils提供了一个类似.Net的StringBuilder,用于存储字符数组. 很多人不明白为什么要用TStringBuilder, Delphi中有string,有几乎所有TStringBuilder的功能函数, System.SysUtils中还有TStringHelper方便扩展String,更方便String的使用. 从Delphi提供的源码看,TStringBuilder与string最大的区别是,TStringBuilder是可以预…
function T_SunnySky_SDK.JoinItems(AParamDic: TDictionary<string, string>): string; var sb : TStringBuilder; key : TPair<string,string>; begin if not Assigned(AParamDic) then Result := '' else if AParamDic.Count = 0 then Result := '' else begin…
一:背景 1. 讲故事 上个月有位朋友wx找到我,说他的程序存在内存泄漏问题,寻求如何解决? 如下图所示: 从截图中可以看出,这位朋友对 windbg 的操作还是有些熟悉的,可能缺乏一定的实操经验,所以用了几个命令之后就不知道怎么排查下去了. 既然找到我,那就以我的个人经验在他的dump上继续分析寻找罪魁祸首,闲话不多说,上windbg说话. 二:Windbg 分析 1. 真的存在内存泄漏吗? 追这个系列的朋友应该知道,我无数次的用 !address -summary 和 !eeheap -gc…
一:背景 在 内存泄漏 的系列问题中,有一类问题是 内存碎片化 导致的,而且这种更容易发生在 LOH 上,因为它默认不开启 对象压缩,一般遇到这种情况,优先让朋友执行下面的代码应急. GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); 后续再研究问题根源,这篇我们就来聊一聊如何用 PerfView 神器帮助我们寻找 内存碎片化 的根源. 二:碎片…
Xe5开发web服务端和手机客户端 ------------------------------------- Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快,把VS2012远远甩在后面.下面以一个小例作为您开启新的历程: 建立一个webservices  stand-alone vcl application 作为手机访问的服务端 1.new->other->webservices 2.选择 stand-alone vcl application 3.…
现在网络的流行,使得服务器程序得到了广泛的应用,那么我们使用Delphi如何设计出强壮的服务器呢? 有人说,如果要设计服务器的话,一定要使用VC来设计,其实这个人说的有一定道理,因为如果你要使用Delphi来设计服务器的话,要想设计高效的服务器就不要使用Delphi带来的大部分的控件(最好不要使用Delphi控件),为什么呢?下面我会告诉大家.这样的话你全部使用API来设计服务器,就同VC没有太大的区别了. 使用Delphi来设计服务器程序,具体选择是使用窗体消息模式还是使用完成端口的模式,这主…
下面是公司的代码,调整成ADO控件,给你参考一下: function GetNetDate: TDateTime; begin with TADOQuery.Create(nil) do begin try Connection := ADOConnection1; // 绑定数据库连接对象 if Self.DBEService.DBType = dtMSSQL then // 这里你自己处理一下,公司代码的意思是,如果当前数据库是MSSQL Server SQL.Add('SELECT GET…
一.去掉窗口最大化,最小化.关闭 borderIcons:biSystemMenu:false borderStyle:bsSizeable 二.主子窗口 主main: //调用子窗体procedure TFrmMain.CallChildForm(FormChild: TFormClass; var Reference);var i: Integer;begin if MDIChildCount >0 then for i := 0 to MDIChildCount-1 do if MDICh…
场景 使用WCF开发的服务端在多个客户端登录后,其服务器的内存占用不断增加. 分析 使用Windbg分析得到内存碎片化严重,其中包含了非常大的空闲空间,最大的一块竟然有150M,真正使用的空间其实很小.若无限地任其扩大,之后应该会由于在大内存中查找对象的效率低而造成程序运行缓慢. 大的碎片后的对象类型主要是:System.ServiceModel.Channels.OverlappedContext和System.Byte[],并且使用对象引用跟踪大碎片后的System.Byte[]对象,发现也…
再使用iis服务器中经常会出现php-cgi.exe进程过多,导致CPU占用100%,最终造成网站运行过慢甚至卡死的情况,重启iis会好一会,过一段时间久出现这种情况,为什么会出现这种情况呢,应该怎么解决呢,开始的时候我一直手动结束php-cgi程序,虽然可以临时解决问题,但是不是长久之计,我百度了下,出现该问题一般为程序方面问题,如程序采用fastcgi方式运行PHP,而程序设置的StartProcesses又偏大,如6甚至更大.下面是我整理的对php-cgi.ext过多引起服务器cup%的解…