procedure TForm1.Button9Click(Sender: TObject);
var s : String[3];
var d: integer;
begin
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
上面语句为求任意字符的ASCII码,当输入65时edit2显示'A',输入55004或-10532时显示'周'
这样是没错的,但是如果改成下面这样.
procedure TForm1.Button9Click(Sender: TObject);
var s : String[3];
var d: integer;
begin
if (pos(',',edit1.text)<>0) then showmessage('is is wrong');
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
就是上面增加了判断是否含有','号这一句.我想知道的问题1就是执行完showmessage('is is wrong');
后,下面的语句还是会被执行。应该怎么办才能提示showmessage 后不再执行后面的语句。Delphi中好像没有return false之类的语句.于是我又改成
procedure TForm1.Button9Click(Sender: TObject);
var s : String[3];
var d: integer;
begin
if (pos(',',edit1.text)<>0) then showmessage('is is wrong')
else
begin
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
end;
输入65是能正确显示'A' ,可是输入55004或-10532确没有显示(本来应该显示'周')
即begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
这一段好像没被执行。请问的问题2是出错在哪里,应该怎样修改。
我初学delphi不久,对语法不太熟悉,请各位帮助解决一下上面的两个疑问。谢谢!!
var s : String[3];
var d: integer;
begin
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
上面语句为求任意字符的ASCII码,当输入65时edit2显示'A',输入55004或-10532时显示'周'
这样是没错的,但是如果改成下面这样.
procedure TForm1.Button9Click(Sender: TObject);
var s : String[3];
var d: integer;
begin
if (pos(',',edit1.text)<>0) then showmessage('is is wrong');
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
就是上面增加了判断是否含有','号这一句.我想知道的问题1就是执行完showmessage('is is wrong');
后,下面的语句还是会被执行。应该怎么办才能提示showmessage 后不再执行后面的语句。Delphi中好像没有return false之类的语句.于是我又改成
procedure TForm1.Button9Click(Sender: TObject);
var s : String[3];
var d: integer;
begin
if (pos(',',edit1.text)<>0) then showmessage('is is wrong')
else
begin
d:=strtoint(edit1.text) ;
if (d<177)and(d>0) then
s:=char(d)
else
begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
Edit2.text :=s;
end;
end;
输入65是能正确显示'A' ,可是输入55004或-10532确没有显示(本来应该显示'周')
即begin
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
这一段好像没被执行。请问的问题2是出错在哪里,应该怎样修改。
我初学delphi不久,对语法不太熟悉,请各位帮助解决一下上面的两个疑问。谢谢!!
第二个正在考虑中
继续研究中。
我记得这个地方应该是用来存放s的长度。会变成0的原因不明。要想正常使用,只需要给s[0]赋一个比2大的值就可以了。根本解决方法继续研究
有没有高手可以直接指点下
s[1] := char(d shr 8);
s[2] := char(d) ;
end ;
这里改成 s:=char(d shr 8)
可以吗?
S: string; //通过SetLength()设置长度
D: Integer;
begin
if Pos(',', Edit1.text) > 0 then
begin
ShowMessage('is is wrong');
Exit; //Exit; 相当于C中 return;
end;
D := StrToIntDef(Edit1.Text, 0); //StrToIntDef()安全些
if (D < 177) and (D > 0) then
S := Char(D)
else
begin
SetLength(S, 2);
S[1] := Char(D shr 8);
S[2] := Char(D and $FF);
end;
Edit2.Text := S;
end;