Код (Text): procedure Code(buf: pointer; Len: integer; key: integer); var i: Integer; begin RandSeed := key; for i := 0 to Len - 1 do Byte(pointer(integer(buf) + i)^) := (Byte(pointer(integer(buf) + i)^) + random(255)) mod 256; end;
типа так Код (Text): type char_array= array [1..MAX_INT] of byte; type p_char_array=char_array^; procedure Code (buf:p_char_array;len:integer;key:integer); var i: Integer; begin RandSeed := key; for i := 0 to Len - 1 do buf[i]:= (buf[i] + byte(random(255)) mod 256; end; а ещё лучше используй динамический массив Код (Text): procedure Code (buf:array of char;len:integer;key:integer); var i: Integer; begin RandSeed := key; for i := low(buf)to high(buf) do buf[i]:= (buf[i] + byte(random(255)) mod 256; end;
staier Что-то ты батенька невнимателен 1) array c 1, а цикл с 0 2) приводить random к byte не нужно, т.к. если включен Range Checking будет переполнение, а если выключен, то вроде как и mod 256 никчему А я на свой вкус так бы сделал Код (Text): procedure Code(buf: pointer; Len: integer; key: integer); var i: Integer; p:pChar; begin RandSeed := key; p:=Buf; for i := 0 to Len - 1 do byte(p[i]):=(Ord(p[i])+random(255)) and 255; end; Ну а лучше, конечно на асме