Delphi中批量把双引号替换为单引号的方法

Delphi调试模式中抓出来的SQL语句中变量值是双引号,不能直接执行,要替换为单引号包裹才行。

DELPHI中双引号用''''表示,单引号用''表示。但是

//下面这种写法是错误的。执行结果是全部被替换成空了。
Memo2.Text:=StringReplace(Trim(ssql), '''',  '', [rfReplaceAll]);
//正确写法如下:
Memo2.Text:=StringReplace(Trim(ssql), #39#39,  #39, [rfReplaceAll]);
//以下简易代码可以直接将调试模试ctrl+F7窗口的变量值转成正常可执行的SQL语句
procedure TForm1.Memo1Change(Sender: TObject);
var
ssql:string;
begin
ssql:=Memo1.Text;
Delete(ssql, 1, 1);
Delete(ssql, Length(ssql), 1);
Memo2.Text:=StringReplace(Trim(ssql), #39#39, #39, [rfReplaceAll]);
end;

另:经测试,DelphiXE2中调试模式中Local Variables 窗口中变量对应值最大AnsiString类型长度为3840字节,选中变量按CTRL+F7窗口中的最大长度限制了4579字节,超过这个长度会被截断丢弃。如果超长SQL语句用这种跟踪调试方法抓取的SQL语句会有丢失,建议用另存为文件的方法获取,showmessage(好像没有丢失,但是通过剪贴板复制showmessage窗口的内容会有8192字节的限制)。

posted @   IT情深  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示