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 @ 2022-10-04 00:15  IT情深  阅读(141)  评论(0编辑  收藏  举报