tstrcopy.pp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. uses strings;
  2. procedure test_strcopy;
  3. var
  4. p: pchar;
  5. s: array[0..256] of char;
  6. buf: array[0..512] of char;
  7. i, j, k, l: longint;
  8. begin
  9. for i := 0 to 256 do
  10. begin
  11. fillchar(s,sizeof(s),'b');
  12. s[i] := #0;
  13. for j := 0 to 3 do
  14. begin
  15. fillchar(buf,sizeof(buf),'a');
  16. p := strcopy(@buf[j+32],@s[0]);
  17. if (p <> @buf[j+32]) then
  18. begin
  19. writeln('error 0 (i=',i,')');
  20. halt(1);
  21. end;
  22. for l := 0 to j+31 do
  23. if buf[l] <> 'a' then
  24. begin
  25. writeln('error 1 (i=',i,')');
  26. halt(1);
  27. end;
  28. for l := j+32 to j+32+i-1 do
  29. if buf[l] <> 'b' then
  30. begin
  31. writeln('error 2 (i=',i,')');
  32. halt(1);
  33. end;
  34. if buf[j+i+32] <> #0 then
  35. begin
  36. writeln('error 3 (i=',i,')');
  37. halt(1);
  38. end;
  39. for l := j+i+32+1 to 512 do
  40. if buf[l] <> 'a' then
  41. begin
  42. writeln('error 4 (i=',i,')');
  43. halt(1);
  44. end;
  45. end;
  46. end;
  47. end;
  48. begin
  49. test_strcopy;
  50. end.