吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1011|回复: 13
收起左侧

[学习记录] 为了减少tokens消耗我临时又编了个小工具

[复制链接]
冥界3大法王 发表于 2026-4-19 10:31
本帖最后由 冥界3大法王 于 2026-4-19 10:32 编辑
。。。
  C:\Users\MeiMei\Documents\Embarcadero\Studio\23.0\CatalogRepository\TulipErrorInline -NBC:\Users\Public\Documents\Embarcadero\Studio\23.0\Dcp
  -NHC:\Users\Public\Documents\Embarcadero\Studio\23.0\hpp\Win32 -NO.\Win32\Release  Project1.dpr   
[dcc32 Error] Unit4.pas(67): E2029 Declaration expected but ';' found
[dcc32 Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit4.pas'
Failed
Elapsed time: 00:00:00.3

没啥技术含量,为了过滤调试信息,只复制[。。Error。。 这样的行
不然粘上一堆太耗费 tokens了,重点是思路:
既然能秒速造出新工具来,那就赶紧出来解决问题:
当然 我觉得下面的东西不如搞成AutoHotkey的脚本,这样占用少,
一个热键打上去,就转完了,而且内存还占用少。

配合专属AI提问关键字使用工具使用,可以让AI生成源码和编码时少走不少弯路,从而节约时间!

[Pascal] 纯文本查看 复制代码
unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, Vcl.Clipbrd;

type
  TForm4 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
var
  i: Integer;
  OriginalLines, FilteredLines: TStringList;
  SearchText: string;
begin
  // 创建两个 TStringList 对象
  OriginalLines := TStringList.Create;
  FilteredLines := TStringList.Create;
  try
    // 将 Memo1 的内容复制到 OriginalLines
    OriginalLines.Text := Memo1.Text;
    // 设置要搜索的文本(不区分大小写)
    SearchText := '[dcc32 error]';
    // 遍历每一行
    for i := 0 to OriginalLines.Count - 1 do
    begin
      // 如果该行包含 "[error]"(不区分大小写),则保留
      if Pos(SearchText, LowerCase(OriginalLines[i])) > 0 then
      begin
        FilteredLines.Add(OriginalLines[i]);
      end;
    end;
    // 检查是否有匹配的行
    if FilteredLines.Count = 0 then
    begin
      ShowMessage('没有找到包含 "[error]" 的行!' + #13#10 + 'Memo1 内容保持不变。');
      Exit;  // 如果没有找到,直接退出,不修改 Memo1
    end;
    // 将过滤后的内容放回 Memo1
    Memo1.Text := FilteredLines.Text;
    // 将 Memo1 的全部内容复制到剪贴板
    Clipboard.AsText := Memo1.Text;
  finally
    // 释放内存
    OriginalLines.Free;
    FilteredLines.Free;
  end;
end;
end.

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
cioceo + 1 + 1 谢谢@Thanks!
Carinx + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 冥界3大法王 发表于 2026-4-19 10:34
[Asm] 纯文本查看 复制代码
; AutoHotkey v1.1 脚本
; 功能:处理剪贴板内容,只保留包含 [error] 的行,然后复制回剪贴板

^e::  ; 快捷键 Ctrl+E 触发
    ; 保存当前剪贴板内容
    OldClipboard := ClipboardAll
    
    ; 获取当前剪贴板文本
    Clipboard := ""  ; 清空剪贴板
    Send, ^c         ; 复制选中的内容
    ClipWait, 1      ; 等待剪贴板有内容
    
    if ErrorLevel {
        MsgBox, 等待剪贴板超时,请先选中文本!
        return
    }
    
    ; 处理文本
    Text := Clipboard
    NewText := ""
    
    ; 按行分割处理
    Loop, Parse, Text, `n, `r
    {
        ; 检查当前行是否包含 [error](不区分大小写)
        if InStr(A_LoopField, "[error]", false) {
            ; 保留该行
            if (NewText = "")
                NewText := A_LoopField
            else
                NewText := NewText . "`n" . A_LoopField
        }
    }
    
    ; 检查是否有结果
    if (NewText = "") {
        MsgBox, 没有找到包含 "[error]" 的行!
        Clipboard := OldClipboard  ; 恢复原剪贴板
        return
    }
    
    ; 将处理后的文本复制到剪贴板
    Clipboard := NewText
    
    ; 可选:显示提示
    MsgBox, 已保留包含 [error] 的行,并已复制到剪贴板!
    
    ; 恢复原剪贴板(可选,如果不想恢复可以注释掉)
    ; Clipboard := OldClipboard
    
return

; 另一个版本:直接处理 Gui 中的 Memo 控件
Gui, Add, Edit, r20 w500 vMemo1, ; 创建多行文本框
Gui, Add, Button, gProcessError, 处理 [error] 行
Gui, Show, , 错误日志处理器
return

ProcessError:
    Gui, Submit, NoHide  ; 获取控件内容,但不隐藏窗口
    NewText := ""
    
    ; 按行分割处理
    Loop, Parse, Memo1, `n, `r
    {
        if InStr(A_LoopField, "[error]", false) {
            if (NewText = "")
                NewText := A_LoopField
            else
                NewText := NewText . "`n" . A_LoopField
        }
    }
    
    if (NewText = "") {
        MsgBox, 没有找到包含 "[error]" 的行!
        return
    }
    
    ; 更新 Memo 控件
    GuiControl, , Memo1, %NewText%
    
    ; 复制到剪贴板
    Clipboard := NewText
    MsgBox, 已保留 %NewText% 行`n并已复制到剪贴板!
return

GuiClose:
    ExitApp


简单版本(仅处理剪贴板):
[Asm] 纯文本查看 复制代码
; AutoHotkey v1.1 简单脚本
; 只保留包含 [error] 的行

^e::  ; Ctrl+E 快捷键
    ; 复制当前选中的内容
    Clipboard := ""
    Send, ^c
    ClipWait, 1
    
    if ErrorLevel {
        MsgBox, 请先选中文本!
        return
    }
    
    Result := ""
    
    ; 逐行处理
    for each, Line in StrSplit(Clipboard, "`n", "`r")
    {
        if InStr(Line, "[error]", false)
            Result .= (Result = "" ? "" : "`n") . Line
    }
    
    if (Result = "") {
        MsgBox, 没有找到包含 [error] 的行
        return
    }
    
    ; 复制结果到剪贴板
    Clipboard := Result
    MsgBox, 已复制处理后的内容!
return
xywsheng 发表于 2026-4-19 10:35
lbzhou10 发表于 2026-4-19 10:39
m_h 发表于 2026-4-19 10:40
https://github.com/colbymchenry/codegraph 不知道这个项目是否能减少 tokens消耗
 楼主| 冥界3大法王 发表于 2026-4-19 10:47
m_h 发表于 2026-4-19 10:40
https://github.com/colbymchenry/codegraph 不知道这个项目是否能减少 tokens消耗

大师你怎么知道的?
特种兵军品 发表于 2026-4-19 14:45
这是踏天境的修为啊
herofkk 发表于 2026-4-19 16:55
m_h 发表于 2026-4-19 10:40
https://github.com/colbymchenry/codegraph 不知道这个项目是否能减少 tokens消耗

大佬,请问有没有codex(OpenAI公司)出的tokens消耗节省方案呀?
m_h 发表于 2026-4-19 21:18
冥界3大法王 发表于 2026-4-19 10:47
大师你怎么知道的?

刷X刷到的。
m_h 发表于 2026-4-19 21:19
herofkk 发表于 2026-4-19 16:55
大佬,请问有没有codex(OpenAI公司)出的tokens消耗节省方案呀?

不知道,我都是用 chatgpt 的 codex
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-6-5 10:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表