var
Torm1: TForm1;
v:integer;
SArr : Array of String ;
implementation{$R *.dfm}
Function FG(ss : String ) : String ;
var
i : Integer;
begin
i := Pos(#32,ss) ;
if I = 0 then
begin
SArr[v] := ss ;
Exit ;
end
else
begin
while (i = 1) do
begin
ss := Copy(ss,2,Length(ss)) ;
i := Pos(#32,ss) ;
end ;
SArr[v] := Copy(ss,1,(i-1)) ;
Inc(v) ;
Delete(ss,1,i) ;
FG(ss) ;
end ;
end ;
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s : String ;
k,i3,i2: Integer ;
a:array [1..100] of string; //放所有行
ReadFile:TextFile;
begin
AssignFile(readfile,'8582.txt');
reset(readfile);
i2:=0;
while not eof(readfile)do
begin
readln(readfile,s1);
i2:=i2+1;//对字符串条数计数
a[i2]:=s1;
end; //话务报告传入数组a
k:=1;//将数据放入stringgrid1
for i3:=1 to i2 do
begin
v:=0;
s:= a[i3];
SetLength(SArr,Length(s)) ;
S:= FG(s) ;
if ((SArr[0]='DESTID') and (SArr[1]='USAGE'))then
begin
v:=0;
s:= a[i3+1];
SetLength(SArr,Length(s)) ;
S := FG(s) ;
StringGrid1.Cells[0,k]:=sarr[0];
StringGrid1.Cells[1,k]:=sarr[1];
StringGrid1.Cells[2,k]:=sarr[2];
v:=0;
s:= a[i3+1];
SetLength(SArr,Length(s)) ;
S:= FG(s);
StringGrid1.Cells[3,k]:=sarr[0];
StringGrid1.Cells[4,k]:=sarr[1];
StringGrid1.Cells[5,k]:=sarr[2];//stringgrid1中一行数据输入完毕
inc(k);
end
else
continue;
end;
end;
end.
将形如
DESTID USAGE ATTMPTS SEIZE
17908 2 1 1
CSLB CSTB CONG
0 0 0 的字段读stringgrid1中,但老是报错Access violation at adress 0040447c in module 'project2.exe',write of address of address 00000000 或是根本不运行!怎么回事?是我的程序有问题吗?麻烦各位帮我看看
另外请问wjlsmail(计算机质子)兄 Function FG(ss : String ) : String ;是你写的函数,算法已懂
但调用语句仍不明白 var s : String ; S := FG(s);FG的返回值不是sarr吗?怎么能赋值给S字符串?
函数返回字符串怎么用?
Torm1: TForm1;
v:integer;
SArr : Array of String ;
implementation{$R *.dfm}
Function FG(ss : String ) : String ;
var
i : Integer;
begin
i := Pos(#32,ss) ;
if I = 0 then
begin
SArr[v] := ss ;
Exit ;
end
else
begin
while (i = 1) do
begin
ss := Copy(ss,2,Length(ss)) ;
i := Pos(#32,ss) ;
end ;
SArr[v] := Copy(ss,1,(i-1)) ;
Inc(v) ;
Delete(ss,1,i) ;
FG(ss) ;
end ;
end ;
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s : String ;
k,i3,i2: Integer ;
a:array [1..100] of string; //放所有行
ReadFile:TextFile;
begin
AssignFile(readfile,'8582.txt');
reset(readfile);
i2:=0;
while not eof(readfile)do
begin
readln(readfile,s1);
i2:=i2+1;//对字符串条数计数
a[i2]:=s1;
end; //话务报告传入数组a
k:=1;//将数据放入stringgrid1
for i3:=1 to i2 do
begin
v:=0;
s:= a[i3];
SetLength(SArr,Length(s)) ;
S:= FG(s) ;
if ((SArr[0]='DESTID') and (SArr[1]='USAGE'))then
begin
v:=0;
s:= a[i3+1];
SetLength(SArr,Length(s)) ;
S := FG(s) ;
StringGrid1.Cells[0,k]:=sarr[0];
StringGrid1.Cells[1,k]:=sarr[1];
StringGrid1.Cells[2,k]:=sarr[2];
v:=0;
s:= a[i3+1];
SetLength(SArr,Length(s)) ;
S:= FG(s);
StringGrid1.Cells[3,k]:=sarr[0];
StringGrid1.Cells[4,k]:=sarr[1];
StringGrid1.Cells[5,k]:=sarr[2];//stringgrid1中一行数据输入完毕
inc(k);
end
else
continue;
end;
end;
end.
将形如
DESTID USAGE ATTMPTS SEIZE
17908 2 1 1
CSLB CSTB CONG
0 0 0 的字段读stringgrid1中,但老是报错Access violation at adress 0040447c in module 'project2.exe',write of address of address 00000000 或是根本不运行!怎么回事?是我的程序有问题吗?麻烦各位帮我看看
另外请问wjlsmail(计算机质子)兄 Function FG(ss : String ) : String ;是你写的函数,算法已懂
但调用语句仍不明白 var s : String ; S := FG(s);FG的返回值不是sarr吗?怎么能赋值给S字符串?
函数返回字符串怎么用?
function fg(ss:tring):sarr;
begin
setlength(Result,100);
end;var
cc:sarr;
begin
cc:=fg('ssssssss');
end;
SetLength(SArr,Length(s)) ;//初始化
v := 0 ;
FG(s) ;
k := 0 ;
for j := 0 to Length(s) -1 do //得到结果同时释放SArr 中多余的空间
begin
if SArr[j] <> '' then
begin
ShowMessage(SArr[j]) ;
Inc(k) ;
end ;
SetLength(SArr,k) ;