新开辟CSDN专题:Delphi编程经验总结
http://www.csdn.net/Subject/283/index.shtm专题正在建设中,我整理了几篇以前几个网友的呕心沥血之作,值得大家收藏,是使用Delphi居家旅行之必备,主治由于初学Delphi所引起的头晕乏力、心烦气躁、四肢无力、信心溃散等综合疑难杂症,并对大家深入学习Delphi有较好的辅助效果。大家如果有新的发现、推荐其他帖子、好的建议等等欢迎给我发送短消息。欢迎大家发表意见:)

解决方案 »

  1.   

    //得到publish的field,用一个form试试:)
    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;
      

  2.   

    //得到类的publish方法列表,这两个是为了支持支持帖子,刚刚写的,比较乱,不过大家可以玩玩
    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;
      

  3.   

    支持一下,针对ADOQuery贴个过程
    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;
    当然可以根据实际需要更改!
      

  4.   

    HongYang(轰阳) 的意见不错啊,可以考虑;)
      

  5.   

    啊?我弄得那个也选上了??????不会吧,当时就是临时放一下……还有一些大头我知道根本放不下……http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20683497.html一个很有意思的讨论,衬一下这里。
      

  6.   

    风焱大哥。这一段没咋来。您升版主了。恭喜下先
    偶估计等帖子的技术回复超过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++
      

  7.   

    同意reallike(此人已删除) 啊,大家不要只顾着up呀,还没有呼吁大家向上面的热心网友一样把自己的经验和大家分享,只是想麻烦大家帮忙给专题撰文,就这么难?
      

  8.   

    我也来一个:去掉字符串中所有空格Function
    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;
      

  9.   

    要这样麻烦吗
    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;
      

  10.   

    mindog(Terric Kuo)的做法我支持。 zjqyb() 的函数我喜欢。
      

  11.   

    说点个人观点。相信大家都会在开发过程中积累一些自己的函数,过程或者类。
    比如mindog(Terric Kuo),比如我。
    但是这些东西很可能不是最优化的,把他们拿出来,大家一起讨论。
    能够得到最优化的结果,同时对提高代码风格,概念理解,设计思路等方面都有好处。这就是我发那个原创函数帖子的原因,结果的确让我满意,通过那个帖子发现了自己的很多不足,纠正了很多错误认识,结交了好多技术朋友。
      

  12.   

    最近学习Cpp中,等我回来……