有什么工具快速删除delphi源代码的注释?有很乱的代码需要重新整理一遍,单独删除太烦。

解决方案 »

  1.   

    下面的代码注释已经被删了。
    测试时Memo1.Text放入含注释代码。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        
      public
        
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    type
      TModalStr = record
        rBegin: string;
        rEnd: string;
        rAppend: string;
        rSingle: Byte;
      end;const
      cPascalCount = 5;
      cPascalList: array[0 .. Pred(cPascalCount)] of TModalStr =
    (
    (rBegin: ''''; rEnd: '''';   rAppend: '';     rSingle: 1),
    (rBegin: '{$'; rEnd: '}';    rAppend: '';     rSingle: 2),
    (rBegin: '{';  rEnd: '}';    rAppend: '';     rSingle: 3),
    (rBegin: '(*'; rEnd: '*)';   rAppend: '';     rSingle: 4),
    (rBegin: '//'; rEnd: #13#10; rAppend: #13#10; rSingle: 5)
    );const
      cSQLCount = 4;
      cSQLList: array[0 .. Pred(cSQLCount)] of TModalStr =
    (
    (rBegin: ''''; rEnd: '''';   rAppend: '';     rSingle: 1),
    (rBegin: '"';  rEnd: '"';    rAppend: '';     rSingle: 2),
    (rBegin: '/*'; rEnd: '*/';   rAppend: '';     rSingle: 3),
    (rBegin: '--'; rEnd: #13#10; rAppend: #13#10; rSingle: 4)
    );function GetModalStr(mStr: string; mModalStrList: array of TModalStr;
      mSingles: TIntegerSet): string;
    var 
      vSingle: Integer;
      I, J: Integer;
      T, K: Integer;
      vEnd: string;
      vAppend: string;
    begin
      Result := '';
      vSingle := 0;
      T := 0;
      K := 0;
      for I := 1 to Length(mStr) do begin
        if T > 1 then begin
          Dec(T);
          Continue;
        end;
        if vSingle = 0 then begin
          vEnd := '';
          for J := Low(mModalStrList) to High(mModalStrList) do begin
            K := Length(mModalStrList[J].rBegin);
            if Copy(mStr, I, K) = mModalStrList[J].rBegin then begin
              vEnd := mModalStrList[J].rEnd;
              vAppend := mModalStrList[J].rAppend;
              vSingle := mModalStrList[J].rSingle;
              if vSingle in mSingles then
                Result := Result + mModalStrList[J].rBegin;
              T := K;
              K := Length(vEnd);
              Break;
            end;
          end;
          if (vEnd = '') and (vSingle in mSingles) then
            Result := Result + mStr[I];
        end else if Copy(mStr, I, K) = vEnd then begin
          if vSingle in mSingles then
            Result := Result + vEnd
          else Result := Result + vAppend;
          vSingle := 0;
          T := K;
        end else if vSingle in mSingles then
          Result := Result + mStr[I];
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Text := GetModalStr(Memo1.Text, cPascalList, [0, 1, 2]);end;
    end.
    自己加工一下做个工具,将代码载入到TStringList中通过Text属性处理即可。