Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. function ReadLengthOfSourceArrayFromFile(const UserFile: TextFile;var LengthOfSourceArray: Integer): Boolean;
  2.  
  3. const
  4. MinLengthOfSourceArray = 2;
  5. MaxLengthOfSourceArray = 30;
  6.  
  7. var
  8. IsCorrect: Boolean;
  9. begin
  10. try
  11. ReadLn(UserFile, LengthOfSourceArray);
  12. except
  13. WriteLn('Ошибка! Файл содержит неверные данные. Пожалуйста, проверьте файл и повторите попытку.');
  14. IsCorrect := False;
  15. end;
  16. if IsCorrect and ((LengthOfSourceArray < MinLengthOfSourceArray)
  17. or (LengthOfSourceArray > MaxLengthOfSourceArray)) then
  18. begin
  19. WriteLn('Ошибка! Длина массива, указанная в файле, не удовлетворяет промежутку значений от ',
  20. MinLengthOfSourceArray, ' до ', MaxLengthOfSourceArray, '.');
  21. IsCorrect := False;
  22. end;
  23. ReadLengthOfSourceArrayFromFile := IsCorrect;
  24. end;
  25.  
  26. procedure ReadArrFromFile(var SourceArray: TArr);
  27.  
  28. const
  29. InputMessage = 'Пожалуйста, введите имя файла, из которого будут считываться данные.' + #13#10 + 'Например, "C:\Users\lenovo\Desktop\Name.txt".';
  30. MinInt = - MaxInt - 1;
  31.  
  32. var
  33. IsInvalidInput: Boolean;
  34. UserFile: TextFile;
  35. FileName: string;
  36. i, LengthOfSourceArray: Integer;
  37.  
  38. begin
  39. repeat
  40. IsInvalidInput := True;
  41. WriteLn(InputMessage);
  42. ReadLn(FileName);
  43. IsInvalidInput := FileExtensionChek(FileName);
  44. if FileExists(FileName) and IsInvalidInput then
  45. begin
  46. try
  47. Assign(UserFile, FileName);
  48. Reset(UserFile);
  49. except
  50. WriteLn(MistakeNotOpenMessage);
  51. IsInvalidInput := False;
  52. end;
  53. if IsInvalidInput then
  54. begin
  55. if EoF(UserFile) then
  56. begin
  57. WriteLn('Внимание! Выбранный файл является пустым. Пожалуйста, проверьте файл и повторите попытку.');
  58. IsInvalidInput := False;
  59. end
  60. else
  61. while not EoF(UserFile) do
  62. begin
  63. IsInvalidInput := ReadLengthOfSourceArrayFromFile(UserFile, LengthOfSourceArray);
  64. if (IsInvalidInput) then
  65. begin
  66. SetLength(SourceArray, LengthOfSourceArray);
  67. i := 0;
  68. while (i < LengthOfSourceArray) and (not EOln(UserFile)) and (IsInvalidInput) do
  69. begin
  70. try
  71. Read(UserFile, SourceArray[i]);
  72. except
  73. WriteLn('Ошибка! Не все элементы массива имеют числовое значениe или принадлежат промежутку '
  74. + #13#10 + 'значений от ', MinInt, ' до ', MaxInt, '.');
  75. IsInvalidInput := False;
  76. end;
  77. Inc(i);
  78. end;
  79. if (i < LengthOfSourceArray) and (IsInvalidInput) then
  80. begin
  81. WriteLn('Ошибка! Длина массива не соответствует количеству элементов массива в файле.');
  82. IsInvalidInput := False;
  83. end;
  84. end;
  85. end;
  86. CloseFile(UserFile);
  87. end;
  88. end
  89. else
  90. begin
  91. WriteLn(MistakeNotFoundMessage);
  92. IsInvalidInput := False;
  93. end;
  94. until IsInvalidInput;
  95. for i := 0 to LengthOfSourceArray -1 do
  96. WriteLn('S[', i, '] = ', SourceArray[i]);
  97. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement