T
tigerfox
Unregistered / Unconfirmed
GUEST, unregistred user!
有一段代码: 是向ListBox一行行append地添加数据。
通过调试发现,总是出现“List Index out of Bounds”错误,访问越界。
下面为这段代码:
procedure TMainFrm.AddDebugInfo( strInfo : string ) ;
var
i,len,start: integer;
strTemp : string;
bMultiRow : boolean;
begin
bMultiRow := true;
start := 0;
len := length(strInfo);
for i:=0 to lendo
begin
if ( strInfo = #10 ) then
begin
strTemp := copy(strInfo,start,i-start) ;
if ( not bMultiRow ) then
strTemp := ' ' + strTemp;
ListBox_Debug.Items.Append(strTemp);
start := i+1;
bMultiRow := false;
end
end ;
if bMultiRow then
ListBox_Debug.Items.Append(strInfo);
end;
调用的地方很多,也可能是同时的, 类似为
AddDebugInfo('LoginSuccessed -- '+#10+'param:'+param);
// param : string;
如果有两个以上的同时调用就会出现上述错误。
有没有,一个代码一段时间只处理一次调用,其它的调用等上一次处理完成再调用。就是实现一个排队功能。
通过调试发现,总是出现“List Index out of Bounds”错误,访问越界。
下面为这段代码:
procedure TMainFrm.AddDebugInfo( strInfo : string ) ;
var
i,len,start: integer;
strTemp : string;
bMultiRow : boolean;
begin
bMultiRow := true;
start := 0;
len := length(strInfo);
for i:=0 to lendo
begin
if ( strInfo = #10 ) then
begin
strTemp := copy(strInfo,start,i-start) ;
if ( not bMultiRow ) then
strTemp := ' ' + strTemp;
ListBox_Debug.Items.Append(strTemp);
start := i+1;
bMultiRow := false;
end
end ;
if bMultiRow then
ListBox_Debug.Items.Append(strInfo);
end;
调用的地方很多,也可能是同时的, 类似为
AddDebugInfo('LoginSuccessed -- '+#10+'param:'+param);
// param : string;
如果有两个以上的同时调用就会出现上述错误。
有没有,一个代码一段时间只处理一次调用,其它的调用等上一次处理完成再调用。就是实现一个排队功能。