Board logo

Subject: 建议弄一个多行代码合并到一行的小功能 [Print This Page]

Author: 西方失败    Time: 2025-10-7 22:22     Subject: 建议弄一个多行代码合并到一行的小功能

有时候需要把比较短的代码合并到一行节约版面,尤其是干同一件事的几句代码合并到一起比较一目了然逻辑清楚.

比如
a:=b;
b:=c+2;
......
......
e:=a+b;
处理后变成这样
  {(*}a:=b;b:=c+2;......e:=a+b;{*)}

如果行数比较多手动一行一行的删回车就比较麻烦,自动这样就节约了版面又可以防止自动格式恢复成多行.

[ 本帖最后由 西方失败 于 2025-10-7 22:30 编辑 ]
Author: Passion    Time: 2025-10-9 23:23

如此小众的需求,写个脚本就能搞定。
Author: 西方失败    Time: 2025-10-9 23:52

好吧老大,新手还不会脚本,假如自己写脚本的话,思路应该是用剪贴板把选中的代码复制然后处理然后再粘贴新代码吗?

[ 本帖最后由 西方失败 于 2025-10-10 00:00 编辑 ]
Author: Passion    Time: 2025-10-12 09:02

可以直接处理选择区,参考安装目录下的PSDemo\CommentCode.pas
Author: 西方失败    Time: 2025-10-13 16:20

感谢老大指点,这个为啥加个trim就报错呢,跟分号有啥关系吗?

Image Attachment: 20251013-1.png (2025-10-13 16:20, 25.66 K) / Download count 45
http://bbs.cnpack.org/attachment.php?aid=1201


Author: Passion    Time: 2025-10-14 14:00

字符串没这方法,Pascal Script的语法还是很基本的Pascal。

得用Trim(Lines[I]);
Author: 西方失败    Time: 2025-10-14 22:40

确实是,感谢老大,我这样写出来比如选中的是3到8行,老是把第9行也合并进去了不知道为啥.
Author: Passion    Time: 2025-10-15 16:09

是不是选择区包括了第九行的头部?
Author: 西方失败    Time: 2025-10-15 23:17

没有选择到第9行的头部 只选择到了第8行的尾部
Author: Passion    Time: 2025-10-19 12:08

你用的D几?我这边还复现不出来这个问题。
Author: 西方失败    Time: 2025-10-19 14:59

我用的d13,fmx程序

var
  Lines: TStringList;
  i: Integer;

begin
  Lines := TStringList.Create;
  try
    if IdeGetEditorSelectedLines(Lines) then
    begin
      for i := 1 to Lines.Count - 1 do
      begin
        Lines[0] := Lines[0] + Trim(Lines);
      end;
      for i := Lines.Count - 1 downto 1 do
        lines.delete(i);
      IdeSetEditorSelectedLines(Lines);
    end;
  finally
    Lines.Free;
  end;
Author: Passion    Time: 2025-10-19 18:57

D13还真有这问题,我看看为啥新版本会出。
Author: Passion    Time: 2025-10-19 22:03

1289修复了,一个隐藏较深的Bug,似乎是高版本TStrings不兼容导致的。
Author: 西方失败    Time: 2025-10-20 00:48

哦哦,可以了,感谢老大.




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0