首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

看看上边如何解决

2013-03-01 
各位高手看看下边怎么解决function LogInDeviceVar(DeviceVarName: PChar DeviceVar: PChar) : Integerv

各位高手看看下边怎么解决
function LogInDeviceVar(DeviceVarName: PChar; DeviceVar: PChar) : Integer;
  var
    Str : String;
    I : Integer;
    p : PChar;
  begin
    Str := '';
    For I := 0 to 199999 do
    begin
      Str := Str + '1';
    end;
    Move(Str[1], DeviceVar^, Length(Str) + 1);
    result := 0;
  end;

为什么Str长度比较短的时候可以,长度大了就不行了呢?
[解决办法]
integer的大小是(-32768~32768);

不要误导.! 

Integer-2147483648..2147483647signed 32-bit
远比199999大得多多多...


什么溢出??


199999 个1,才多点大呀?有什么极限可言?

楼主,你要一个Str加'1'重复 199999+1次,这个计算时间是很大的,如果你所谓的不行是很慢的话,就是因为这个,如果是出错的话,那就是DeviceVar的长度不够.


可以考虑把
  Str := '';
   For I := 0 to 199999 do
   begin
   Str := Str + '1';
   end;
 改成
SetLength(Str , 199999+1);
FillChar(Pointer(S)^ , 199999+1 , '1');
这样既完成了你的循环相加,那速度是非常快的了

热点排行