Delphi ListView排序

var
m_bSort:Boolean; //控制正反排序的变量

implementation

{$R *.dfm}
//ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
var txt1,txt2:string;
begin
if ParamSort <> 0 then
begin
try
txt1:=Item1.SubItems.Strings[ParamSort-1];
txt2:=Item2.SubItems.Strings[ParamSort-1];
if m_bSort then begin
Result:=CompareText(txt1,txt2);
end else begin
Result:=-CompareText(txt1,txt2);
end;
except
end;

  end
  else
  begin
          if   m_bSort   then
          begin
                Result:=CompareText(Item1.Caption,Item2.Caption);
          end
          else
          begin
                Result:=-CompareText(Item1.Caption,Item2.Caption);
          end;
  end;

end;

procedure TFrm_CommunityModify.lv_SelectedHDTCColumnClick(Sender: TObject;
Column: TListColumn);
begin
lv_SelectedHDTC.CustomSort(@CustomSortProc,Column.Index);
m_bSort:=not m_bSort;
end;

Posted in 软件开发 at November 14, 2017. by 傻猫 .    Views: 158    No Comments

【解决】由于没有远程桌面授权服务器可以提供许可证,远程回话被中断

由于windows server 2008 R2 安装了 远程桌面角色,但是这个角色是120天免费的,需要购买授权的【可恶的微软,多用户登录,都要收钱。对于unix来说,多用户是很普通的系统功能】

解决方法是取消这个角色,就可以恢复正常的远程了。

现在无法远程,提示这个错误,怎么才能登陆,取消角色呢?

mstsc /v:IP /admin

这样就可以登陆了。然后再把远程桌面 角色删除,重启计算机,OK done!

资料:百度

http://hi.baidu.com/yuanyang203/item/269f0b5ff95bba4c4eff20c4

Posted in 软件开发 at October 3, 2017. by 傻猫 .    Views: 854    No Comments

Delphi中获取Unix时间戳及注意事项

uses DateUtils;
DateTimeToUnix(Now)

可以转换到unix时间,但是注意的是,它得到的时间比C语言中time()得到的时间大了86060,这是因为Now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时,DateTimeToUnix(Now)-86060 就和c语言中time()得到的一样了。

但我进一步研究DateTimeToUnix函数时发现,Delphi中的时间没有经过任何的转换,是直接读取系统时间

我试着改变当前计算机时区,发现Delphi返回值没有任何改变。

而在C++中,改变计算机时区,则time()返回值也随着改变,这就说明C++中标准时间是通过本地时间和当前时区进行计算得来的。

因此,在Delphi开发时,需要注意Delphi获取的时间戳是当前计算机所在时区时间,并非标准UTC时间。

UnixToDateTime()函数并没有对时区进行转换,仅仅是对时间进行了转换。

文章来源:http://blog.csdn.net/missmecn/article/details/5870639

Posted in 软件开发 at August 23, 2017. by 傻猫 .    Views: 1136    No Comments

CnPack 组件包所有源代码

CnPack 2009-09-14 SVN 包,包括以下内容:

  1. CnPack 组件包所有源代码。
  2. CnPack 开发组所有文档和模板,其中帮助文档目前包括多语帮助文档、CnDebugger 接口帮助文档、CnCalendar 历法说明文档、平滑字体组件帮助文档、停靠组件帮助文档等。
  3. 开发组其它工作成果。

以下是 cnpack\Source 目录内容说明:

\Common -公共库目录

CnBase64.pas
Base64 编码解码算法单元

CnCalClass.pas
历法计算类库

查看更多内容...

Posted in 软件开发 at August 23, 2017. by 傻猫 .    Views: 1137    No Comments

恢复delphi7 文件关联

我的机器上先装了Delphi6,之后又装了Delphi2006,昨日将Delphi2006卸载后,Delphi相关的.dpr、.pas等文件都既不见了图标又失去了关联,Delphi6没有自动恢复文件关联的功能。

Windows命令assoc[.ext[=[fileType]]],
.ext:指定跟文件类型关联的文件扩展名,
fileType 指定跟文件扩展名关联的文件类型。

在命令行执行以下命令即可。

assoc.bpg=BorlandProjectGroup
assoc.dpr=DelphiProject
assoc.pas=DelphiUnit
assoc.dfm=DelphiForm
assoc.xfm=DelphiCLXForm
assoc.dpk=DelphiPackage

Posted in 软件开发 at June 10, 2017. by 傻猫 .    Views: 1438    No Comments

解决错误提示unable to invoke code completion due to errors in source cord.

出现这个错误,一般都是直接复制代码产生的,可能delphi编译器有点问题,把复制过来的代码粘贴到delphi中的时候,默认每行后面会产生很多不可见得空格,主要的原因还是字符串的格式有问题,所以就会出现代码明明能编译通过,程序也能正常运行的,可是自己写代码的时候,在delphi默认提示跳出的时候,不能提示,跳出编译错误unable to invoke code completion due to errors in source cord.

解决办法,把delphi的代码全部选择,复制,再打开ultraedit,ctrl+v粘贴到ultraedit中,再全部选择代码----格式--删除行尾空格,这样把一些不规则的

filehelper_1488336620419_73.png

看不到的空格去掉,然后再复制回到delphi中,重新编译写,就没有这个提示了,这样错误,有时候是很难看出来的,代码没错,语法没错。。。

Posted in 软件开发 at March 1, 2017. by 傻猫 .    Views: 1286    No Comments

Windows下RSA密钥生成工具openssl

  1. 生成原始 RSA私钥文件 private_key.pem
    openssl genrsa -out private_key.pem 1024

  2. 将原始 RSA私钥转换为 pkcs8格式
    openssl pkcs8 -topk8 -inform PEM -in private_key.pem -outform PEM -nocrypt -out rsa_private_key.pem

  3. 生成 RSA公钥 rsa_public_key.pem
    openssl rsa -in private_key.pem -pubout -out rsa_public_key.crt

  4. 从公钥 rsa_public_key.pem 获取十六进制的公钥(第一段16进制字符串)
    openssl asn1parse -out temp.ans -i -inform PEM<private_key.pem

最终获取文件列表:
rsa_private_key.pem
rsa_public_key.crt

16进制公钥字符串用于js端加密

下载Openssl工具
openssl.zip

Posted in 软件开发 at December 7, 2016. by 傻猫 .    Views: 1044    No Comments

关于SMExportToXLS导出数据窜行的问题

前段时间买了一套SMExport suite for Delphi/CBuilder (with sources) 组件,默认导出的XLS表格数据,发现有窜行的问题,很是郁闷,后来发现是因为Options选项中 soFieldMask 没有选中,只需要选中即可解决,也是醉了,先MARK一下。

微信截图_20161118095017.png

另外导出表格里,有大量空白字符,可以在导出组件OnGetCellParams事件中添加以下代码即可。

procedure TFrm_KduserManage.smxprtxlsx1GetCellParams(Sender: TObject;
Field: TField; var Text: WideString; AFont: TFont;
var Alignment: TAlignment; var Background: TColor;
var CellType: TCellType);
begin
if Assigned(Field) then
begin
Text:=Trim(Text);
end;
end;

Posted in 软件开发 at November 18, 2016. by 傻猫 .    Views: 1300    No Comments