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
壞男孩 閱讀(1269)
評論(3) 編輯 收藏 所屬分類:
DELPHI