新开辟CSDN专题:Delphi编程经验总结
http://www.csdn.net/Subject/283/index.shtm专题正在建设中,我整理了几篇以前几个网友的呕心沥血之作,值得大家收藏,是使用Delphi居家旅行之必备,主治由于初学Delphi所引起的头晕乏力、心烦气躁、四肢无力、信心溃散等综合疑难杂症,并对大家深入学习Delphi有较好的辅助效果。大家如果有新的发现、推荐其他帖子、好的建议等等欢迎给我发送短消息。欢迎大家发表意见:)
http://www.csdn.net/Subject/283/index.shtm专题正在建设中,我整理了几篇以前几个网友的呕心沥血之作,值得大家收藏,是使用Delphi居家旅行之必备,主治由于初学Delphi所引起的头晕乏力、心烦气躁、四肢无力、信心溃散等综合疑难杂症,并对大家深入学习Delphi有较好的辅助效果。大家如果有新的发现、推荐其他帖子、好的建议等等欢迎给我发送短消息。欢迎大家发表意见:)
function ClassFieldNames(t:TClass): TStrings;
var
j,k,n:integer;
begin result:=TstringList.Create ;
j:=PInteger(Integer(t) + vmtFieldTable)^;
if (j=0) then exit;
k:=PInteger(PInteger(Integer(t) + vmtFieldTable)^)^ and $00FFFF;
j:=PInteger(Integer(t) + vmtFieldTable)^ + 6;
n:=PShortInt(j + 6)^;
while k>0 do
begin
result.Add(PShortString(j + 6)^);
k:=k-1;
j:=j+ n+7;
n:=PShortInt(j + 6)^;
end;
end;
function ClassMethodNames(t:TClass): TStrings;
var
j,k:integer;
begin
k:=PInteger(PInteger(Integer(t) + vmtMethodTable)^)^ and $00FFFF;
j:=PInteger(Integer(t) + vmtMethodTable)^ + 2;
result:=TstringList.Create ;
while k>0 do
begin
result.Add(PShortString(j + 6)^);
k:=k-1;
j:= j+ Pinteger(j)^ and $00FFFF;
end;
end;
procedure form1.PubQuery(AQuery:TADOQuery;ASQL:string;AFlag:integer=0);
begin
with AQuery do
begin
// Connection:=ADOConnection1;
Close;
SQL.clear;
SQL.text:=ASQL;
try
case AFlag of
0:Open;
1:ExecSQL;
end;
except
showmessage('Query Error');
end;
end;
end;
当然可以根据实际需要更改!
偶估计等帖子的技术回复超过200的时候。大家看完贴的效果如下
1:+2 to all delphi skills
2: 30% increase coding speed
3: +1 to vcl master (新人 only)
4: +1 to windows programing master
5:+3 to database skills
6:...
好贴,up++
function TDataModule1.mtrim(s:string):string;
var
sin,sout:string;
i,k,len:word;
begin
sin:=s;
sout:=s;
len:=length(sin);
if len<>0 then
begin
k:=1;
for i:=1 to len do
if sin[i]<>' ' then
begin
sout[k]:=sin[i];
k:=k+1;
end;
result:=copy(sout,1,k-1);
end
else result:='';
end;
1:StringReplace(' ddf dgdfg dfgfg ',' ','',[rfReplaceAll]);
2:
function mtrim(const s:string):string;
var i,ct,len:integer;
begin
len:=Length(s);
if len=0 then
exit;
SetLength(result,len);
ct:=0;
for i:=1 to len do
begin
if s[i]<>' ' then
begin
inc(ct);
result[ct]:=s[i];
end;
end;
SetLength(result,ct);
end;
比如mindog(Terric Kuo),比如我。
但是这些东西很可能不是最优化的,把他们拿出来,大家一起讨论。
能够得到最优化的结果,同时对提高代码风格,概念理解,设计思路等方面都有好处。这就是我发那个原创函数帖子的原因,结果的确让我满意,通过那个帖子发现了自己的很多不足,纠正了很多错误认识,结交了好多技术朋友。