恢复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: 899    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: 923    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: 837    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: 1082    No Comments

stringgrid删除选中行

定义一个从TStringGrid类继承的新类如下:
type
TMyGrid = class(TStringgrid);

之后,删除时:你可以这样写:
TMyGrid(Grid).DeleteRow(Grid.Row); //Grid为你的StringGrid控件

说明:DeleteRow方法是TCustomGrid类申明的protected方法,可以删除表格中的一行;
而TStringGrid没有将这一方法公开出来(意味着其他类将无法访问),所以你只需要定义一个从TStringGrid类继承的新类就可以了。

Posted in 软件开发 at July 4, 2016. by 傻猫 .    Views: 2061    No Comments

StringGrid排序/隔行变色

//排序函数//////////////////////////////////////////////
procedure Quicksort(Grid:TStringGrid; var List:array of integer;
min, max,sortcol,datatype: Integer);
{List is a list of rownumbers in the grid being sorted}
var
med_value : integer;
hi, lo, i : Integer;

function compare(val1,val2:string):integer;
var
int1,int2:integer;
float1,float2:extended;
errcode:integer;
begin
case datatype of
0: result:=ANSIComparetext(val1,val2);
1: begin
int1:=strtointdef(val1,0);
int2:=strtointdef(val2,0);
if int1>int2 then result:=1
else if int1<int2 then result:=-1
else result:=0;
end;

  2: begin
       val(val1,float1,errcode);
       if errcode<>0 then float1:=0;
       val(val2,float2,errcode);
       if errcode<>0 then float2:=0;
       if float1>float2 then result:=1
       else if float1<float2 then result:=-1
       else result:=0;
     end;
   else result:=0;
end;

end;

查看更多内容...

Posted in 软件开发 at July 4, 2016. by 傻猫 .    Views: 2062    No Comments

delphi Format格式化函数

Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:

首先看它的声明:
function Format(const Format: string; const Args: array of const): string; overload;

事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,
但并不多用,所以这里只对第一个介绍:
function Format(const Format: string; const Args: array of const): string; overload;

Format参数是一个格式字符串,用于格式化Args里面的值的。Args又是什么呢,
它是一个变体数组,即它里面可以有多个参数,而且每个参数可以不同。
如以下例子:

Format('my name is %6s',['wind']);
返回后就是my name is wind

查看更多内容...

Posted in 软件开发 at February 14, 2016. by 傻猫 .    Views: 2851    No Comments

如何将Bitmap位图与base64字符串相互转换

先引用delphi自带的单元
uses EncdDecd;

然后就可以使用下面二个函数了:

///将Bitmap位图转化为base64字符串
function BitmapToString(img:TBitmap):string ;
var
ms:TMemoryStream;
ss:TStringStream;
s:string;
begin
ms := TMemoryStream.Create;
img.SaveToStream(ms);
ss := TStringStream.Create('');
ms.Position:=0;
EncodeStream(ms,ss);//将内存流编码为base64字符流
s:=ss.DataString;
ms.Free;
ss.Free;
result:=s;
end;

///将base64字符串转化为Bitmap位图
function StringToBitmap(imgStr:string):TBitmap;
var ss:TStringStream;
ms:TMemoryStream;
bitmap:TBitmap;
begin
ss := TStringStream.Create(imgStr);
ms := TMemoryStream.Create;
DecodeStream(ss,ms);//将base64字符流还原为内存流
ms.Position:=0;
bitmap := TBitmap.Create;
bitmap.LoadFromStream(ms);
ss.Free;
ms.Free;
result :=bitmap;
end;

Posted in 软件开发 at December 11, 2015. by 傻猫 .    Views: 2141    No Comments