关于符号"和'保存时出现的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 三点
  • 开始时间 开始时间

三点

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个文本输入框Edit1,其中文本为:11'12'',为英寸的表示方法!
procedure BitButton1.Click(Self);
var
TempStr: string;
begin
TempStr := Trim(Edit1.Text);
Qry1.SQL.Clear;
Qry1.SQL.Text := 'Insert into 规格表(MStyle) values('''+TempStr+''')';
Fm_DaBa.Qry1.ExecSQL;
...
end;
保存时出现错误,"Missing right quote",经过调试发现TempStr的值为'11'12''',这时,系统会认为'号不匹配,怎么解决这个问题啊?
 
procedure BitButton1.Click(Self);
var
TempStr: string;
begin
TempStr := Trim(Edit1.Text);
Qry1.SQL.Clear;
Qry1.SQL.Text := 'Insert into 规格表(MStyle) values(:s0)';//这里用传递参数的方法
Qry1.parameters.paramByName('s0').Value :=Trim(Edit1.Text);
Fm_DaBa.Qry1.ExecSQL;
...
end;
 
使用 QuotedStr 函数轻松解决,例如
MyStr := QuotedStr('Example');
执行后 MyStr 就是 'Example' 了(带单引号)。

====================================================
以下内容引用自 Delphi Object and Component Reference

QuotedStr function
-------------------
Returns the quoted version of a string.

Unit:
SysUtils

Category:
String handling routines

Delphi syntax:
function QuotedStr(const S: string): string;

C++ syntax:
extern PACKAGE AnsiString __fastcall QuotedStr(const AnsiString S);

Description:
Use QuotedStr to convert the string S to a quoted string. A single quote character (') is inserted at the beginning and end of S, and each single quote character in the string is repeated.

Note: When working with multi-byte character systems (MBCS), use AnsiQuotedStr instead.
 
你修改这句了测试看看。
TempStr := Trim(StringReplace(edit1.Text,'''', '''''', [rfReplaceAll]));
 
多人接受答案了。
 
后退
顶部