DELPHI常用的流水账!不断更新

DELPHI常用的流水账!不断更新
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;

写了一个函数就解决战斗了!

你可能感兴趣的:(DELPHI常用的流水账!不断更新)