下面为什么出错了?

TERRYZZP 2001-12-24 03:56:17
1 procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 for i:=0 to j do begin
8 s2[i]:=inttostr(15-strtoint(s1[i]));
9 end;
10 end;

总是提第8句出错
...全文
136 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwm8246 2001-12-24
  • 打赏
  • 举报
回复
各位TERRYZZP的程序根本编译不了.!!!!
1 procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 for i:=0 to j do begin
8 s2[i]:=inttostr(15-strtoint(s1[i]));
9 end;
10 end;

1)=============
// 原因是类型不兼容
//s2[i]:=inttostr(15-strtoint(s1[i]));
S2[i] 是 Char类型
intToStr返回的是字符串类型.
2)就是 shxiaoxiao(xiaoxiao)所说的 



yopeng 2001-12-24
  • 打赏
  • 举报
回复
u p
790310518 2001-12-24
  • 打赏
  • 举报
回复
同意scripting
mengbo 2001-12-24
  • 打赏
  • 举报
回复
字符串下标从1开始,运行到 s1[0] 肯定会出错!
1 procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 for i:=1 to j do begin
8 s2[i]:=inttostr(15-strtoint(s1[i]));
9 end;
10 end;


scripting 2001-12-24
  • 打赏
  • 举报
回复
----------------强烈敬请各位单步跟踪下面程序,看看你们说的想的对不对?



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string;x,y:string;
begin
s:='0123456';


y:=s[1];
x:=x+y;
y:=s[2];
x:=x+y;
y:=s[3];
x:=x+y;
y:=s[4];
x:=x+y;
y:=s[5];
end;
shxiaoxiao 2001-12-24
  • 打赏
  • 举报
回复
1 procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 SetLength(s2,255);//给s2分配内存空间
8 for i:=0 to j do begin
9 s2[i]:=inttostr(15-strtoint(s1[i]));
10end;


shxiaoxiao 2001-12-24
  • 打赏
  • 举报
回复
1 procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 SetLength(s2,255);//给s2分配内存空间
8 for i:=0 to j do begin
9 s2[i]:=inttostr(15-strtoint(s1[i]));
10 end;
10 end;

Liujc 2001-12-24
  • 打赏
  • 举报
回复
当然出错了你怎可将字符串赋给字符呢
shxiaoxiao 2001-12-24
  • 打赏
  • 举报
回复
你的s2没有初始化分配内存空间
调用s2[i]就不行
scripting 2001-12-24
  • 打赏
  • 举报
回复
字符串下标从1开始
for i:=1 to j
s2[j]....
刘志飞 2001-12-24
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
2 var i,j,k:integer;
3 s1,s2:string;
4 begin
5 s1:='31010779';
6 j:=length(s1);
7 for i:=0 to j-1 do begin
8 s2[i]:=inttostr(15-strtoint(s1[i]));
9 end;
10 end;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧