看到一段代码,不明白其中的3个'''和4个''''是什么意思,请高手指教

时间:2022-07-27 02:48:02
user:=edit1.Text;
 pass:=Edit2.Text;
//使用ADOQuery1组件时要养成好的习惯,先将其关闭,
//将原来的SQL语句清除后再添加新的SQL语句
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='''+user+'''and 密码='''+pass+'''';

9 个解决方案

#1


你自己试试不就知道了
...
var
  s: string;
begin
  s := '''sss''';
  self.caption := s;
...

#2


在delphi的字符串中''相当于C语言中的转义符\',用来在字符串中表示一个'号

由于delphi中的字符串是用两个'号括起来表示,如s:='abcd';表示字符串 abcd
那么,如果字符串如果是 ab'cd ,就应该这样写s:='ab''cd';其中''表示一个'号

理解了这个,再看你那句代码,就应该明白了。

#3


这么写的话代码的可读性更高一些 

ADOQuery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='+QuotedStr(user)+'and 密码='+QuotedStr(pass);

#4


D中符串单引号都要成对出现,4个'中最后一个'是和:='对应的; 
比如SQL语句最终要像这样:
select * ftom t where f='A'

放在SQL.Text,是字符串,所以2边要加上单引号,就变成这样:
SQL.Text:='select * ftom t where f='A'';

但在D中,单引号是2个变成一个,所以A的2边要再加上引号,正确结果就是这样了:
SQL.Text:='select * ftom t where f=''A''';

如果A是变量,变量和字符串连接是这样:'字符串'+A+'字符串',把中间的A替换成'+A+'
所以上面的语句就变成这样:
SQL.Text:='select * ftom t where f='''+A+'''';

但如果变量A中也有引号,那还会出错的,所以最好Quotedstr()这个函数,它会帮你处理单引号,即写成这样:
SQL.Text:='select * ftom t where f='+Quotedstr(A);

好好理解吧

#5


代表SQL中的字符Field='A'

#6


最简单的方法,ShowMessage一下

#7


引用楼主  的回复:
user:=edit1.Text;
 pass:=Edit2.Text;
//使用ADOQuery1组件时要养成好的习惯,先将其关闭,
//将原来的SQL语句清除后再添加新的SQL语句
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='''+user……

楼主是刚入门学习DELPHI编程的吧
你还是用这个 QuotedStr() 来处理“引号”的问题吧

这位仁兄 liuhengwinner 说的很详细的
看到一段代码,不明白其中的3个'''和4个''''是什么意思,请高手指教

#8


三个是和前面或者后面的'匹配的
四个就是代表一个'

#1


你自己试试不就知道了
...
var
  s: string;
begin
  s := '''sss''';
  self.caption := s;
...

#2


在delphi的字符串中''相当于C语言中的转义符\',用来在字符串中表示一个'号

由于delphi中的字符串是用两个'号括起来表示,如s:='abcd';表示字符串 abcd
那么,如果字符串如果是 ab'cd ,就应该这样写s:='ab''cd';其中''表示一个'号

理解了这个,再看你那句代码,就应该明白了。

#3


这么写的话代码的可读性更高一些 

ADOQuery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='+QuotedStr(user)+'and 密码='+QuotedStr(pass);

#4


D中符串单引号都要成对出现,4个'中最后一个'是和:='对应的; 
比如SQL语句最终要像这样:
select * ftom t where f='A'

放在SQL.Text,是字符串,所以2边要加上单引号,就变成这样:
SQL.Text:='select * ftom t where f='A'';

但在D中,单引号是2个变成一个,所以A的2边要再加上引号,正确结果就是这样了:
SQL.Text:='select * ftom t where f=''A''';

如果A是变量,变量和字符串连接是这样:'字符串'+A+'字符串',把中间的A替换成'+A+'
所以上面的语句就变成这样:
SQL.Text:='select * ftom t where f='''+A+'''';

但如果变量A中也有引号,那还会出错的,所以最好Quotedstr()这个函数,它会帮你处理单引号,即写成这样:
SQL.Text:='select * ftom t where f='+Quotedstr(A);

好好理解吧

#5


代表SQL中的字符Field='A'

#6


最简单的方法,ShowMessage一下

#7


引用楼主  的回复:
user:=edit1.Text;
 pass:=Edit2.Text;
//使用ADOQuery1组件时要养成好的习惯,先将其关闭,
//将原来的SQL语句清除后再添加新的SQL语句
 ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='''+user……

楼主是刚入门学习DELPHI编程的吧
你还是用这个 QuotedStr() 来处理“引号”的问题吧

这位仁兄 liuhengwinner 说的很详细的
看到一段代码,不明白其中的3个'''和4个''''是什么意思,请高手指教

#8


三个是和前面或者后面的'匹配的
四个就是代表一个'