1、sql := 'SELECT To_char(SYSDATE,'+ QuotedStr('yyyy-MM-dd hh:mm:ss')+') as d FROM Dual';
QuotedStr : 此函数的作用保证数据库里面执行的SQL不会因为‘,等特殊字符而出错;
Dual : oracle数据库里面的函数。
2、 Application.ProcessMessages;
这个语句的作用很大啊,工控里面有专门负责数据采集的程序,时时的需要采集数据,里面要是不加上这么一句话你的前台展示,就会很难看,鼠标点击下去,老半天没有反应。
3、Delphi--Stream和Variant的转化网上广为流传的两个函数,确实好用。
procedure VariantToStream (
const v : OleVariant; Stream : TMemoryStream);
var p : pointer;
begin
Stream.Position :=
0;
Stream.Size := VarArrayHighBound (v,
1) - VarArrayLowBound (v,
1) +
1;
p := VarArrayLock (v);
Stream.Write (p^, Stream.Size);
VarArrayUnlock (v);
Stream.Position :=
0;
end;
procedure StreamToVariant (Stream : TMemoryStream; var v : OleVariant);
var
p : pointer;
begin
v := VarArrayCreate ([0, Stream.Size - 1], varByte);
p := VarArrayLock (v);
Stream.Position := 0;
Stream.Read (p^, Stream.Size);
VarArrayUnlock (v);
end;
4、这个函数也是非常镇的,
function ByteType(const S: string; Index: Integer): TMbcsByteType;
IsDBCSLeadByte
告诉你一个非常有用的函数。
bytetype 它可以判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或
后一位。
mbSingleByte 单字母
mbLeadByte 双字节第一位
mbTrailByte 双字节第二位
在copy(Str,1,12)中结果有个全角的8,,,过不去了居然quotedstr()的结果也出现了?我怎么办
function TFrmMain.procQJWT(olds: String): String;
var
tmp : string;
begin
tmp := Trim(olds);
Result := tmp;
if Length(tmp)>12 then
begin
//是单个字符
if ByteType(tmp,12)=mbLeadByte then
result := Copy(tmp,1,11)
else
result := Copy(tmp,1,12);
end;
end;
写了一个函数就解决战斗了!
posted on 2006-12-20 15:07
坏男孩 阅读(1263)
评论(3) 编辑 收藏 所属分类:
DELPHI