这是一个程序员常常忽略的东西,我也常常忽略 //这样就不可以判断了, //pos函数有问题 procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 1 to length(edit1.text) do if edit1.text[i] = chr(39) then showmessage('ok'); end;
不好意思 pos我传反了参数 if pos(#39,edit1.text) > 0 then showmessage('ok');
if key=#39 then key:=#0;
我也是有几十个窗体,把所有的信息都传到一个函数里面去处理 返回真可以通过,返回假不能通过,你们在设计的时候就该考虑到的 比如叫 function checkchar(achar): boolean; 所有的输入信息都要通过这个,不能包含特殊字符,和你们的通信协议的协议
procedure TTFrmItemType.EdtBeforeNumKeyPress(Sender: TObject; var Key: Char); var I:Integer; sSql:String; begin sSql:=(Sender as TFlatEdit).Text; if Length(Trim(EdtBeforeNum.Text))>=10 then begin key := #0; Exit end if Key=#13 then EdtBeforeRatio.SetFocus; if (not (key in ['0'..'9', '.', #8])) then begin key := #0; Exit end //---------------初始为空,添加小数点 if (Trim(EdtBeforeNum.Text)='') and (Key='.') then begin key := #0; Exit end if key=#39 then begin key := #0; Exit endend;
//这样就不可以判断了,
//pos函数有问题
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 1 to length(edit1.text) do
if edit1.text[i] = chr(39) then
showmessage('ok');
end;
pos我传反了参数
if pos(#39,edit1.text) > 0 then
showmessage('ok');
返回真可以通过,返回假不能通过,你们在设计的时候就该考虑到的
比如叫
function checkchar(achar): boolean;
所有的输入信息都要通过这个,不能包含特殊字符,和你们的通信协议的协议
var Key: Char);
var
I:Integer;
sSql:String;
begin
sSql:=(Sender as TFlatEdit).Text; if Length(Trim(EdtBeforeNum.Text))>=10 then
begin
key := #0;
Exit
end if Key=#13 then
EdtBeforeRatio.SetFocus; if (not (key in ['0'..'9', '.', #8])) then
begin
key := #0;
Exit
end //---------------初始为空,添加小数点
if (Trim(EdtBeforeNum.Text)='') and (Key='.') then
begin
key := #0;
Exit
end
if key=#39 then
begin
key := #0;
Exit
endend;
好办法呀,哈哈
如果全部依赖于这个,用户如果复制一个文本,然后到你的编辑框
中粘贴,你就死了/你还是要处理
还不如全部写成函数。
呵呵
str := 'select * from table where F1 = ' + QuotedStr(Edit1.Text)
这样就不怕用户输入'号了
不过,我平时用:function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;比较合我写SQL 语句的习惯。建议用 ahzhuqi 的写法。
sourStr:=StringReplace(sourStr,'''','',[rfReplaceAll]);
end;