Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function ReadLengthOfSourceArrayFromFile(const UserFile: TextFile;var LengthOfSourceArray: Integer): Boolean;
- const
- MinLengthOfSourceArray = 2;
- MaxLengthOfSourceArray = 30;
- var
- IsCorrect: Boolean;
- begin
- try
- ReadLn(UserFile, LengthOfSourceArray);
- except
- WriteLn('Ошибка! Файл содержит неверные данные. Пожалуйста, проверьте файл и повторите попытку.');
- IsCorrect := False;
- end;
- if IsCorrect and ((LengthOfSourceArray < MinLengthOfSourceArray)
- or (LengthOfSourceArray > MaxLengthOfSourceArray)) then
- begin
- WriteLn('Ошибка! Длина массива, указанная в файле, не удовлетворяет промежутку значений от ',
- MinLengthOfSourceArray, ' до ', MaxLengthOfSourceArray, '.');
- IsCorrect := False;
- end;
- ReadLengthOfSourceArrayFromFile := IsCorrect;
- end;
- procedure ReadArrFromFile(var SourceArray: TArr);
- const
- InputMessage = 'Пожалуйста, введите имя файла, из которого будут считываться данные.' + #13#10 + 'Например, "C:\Users\lenovo\Desktop\Name.txt".';
- MinInt = - MaxInt - 1;
- var
- IsInvalidInput: Boolean;
- UserFile: TextFile;
- FileName: string;
- i, LengthOfSourceArray: Integer;
- begin
- repeat
- IsInvalidInput := True;
- WriteLn(InputMessage);
- ReadLn(FileName);
- IsInvalidInput := FileExtensionChek(FileName);
- if FileExists(FileName) and IsInvalidInput then
- begin
- try
- Assign(UserFile, FileName);
- Reset(UserFile);
- except
- WriteLn(MistakeNotOpenMessage);
- IsInvalidInput := False;
- end;
- if IsInvalidInput then
- begin
- if EoF(UserFile) then
- begin
- WriteLn('Внимание! Выбранный файл является пустым. Пожалуйста, проверьте файл и повторите попытку.');
- IsInvalidInput := False;
- end
- else
- while not EoF(UserFile) do
- begin
- IsInvalidInput := ReadLengthOfSourceArrayFromFile(UserFile, LengthOfSourceArray);
- if (IsInvalidInput) then
- begin
- SetLength(SourceArray, LengthOfSourceArray);
- i := 0;
- while (i < LengthOfSourceArray) and (not EOln(UserFile)) and (IsInvalidInput) do
- begin
- try
- Read(UserFile, SourceArray[i]);
- except
- WriteLn('Ошибка! Не все элементы массива имеют числовое значениe или принадлежат промежутку '
- + #13#10 + 'значений от ', MinInt, ' до ', MaxInt, '.');
- IsInvalidInput := False;
- end;
- Inc(i);
- end;
- if (i < LengthOfSourceArray) and (IsInvalidInput) then
- begin
- WriteLn('Ошибка! Длина массива не соответствует количеству элементов массива в файле.');
- IsInvalidInput := False;
- end;
- end;
- end;
- CloseFile(UserFile);
- end;
- end
- else
- begin
- WriteLn(MistakeNotFoundMessage);
- IsInvalidInput := False;
- end;
- until IsInvalidInput;
- for i := 0 to LengthOfSourceArray -1 do
- WriteLn('S[', i, '] = ', SourceArray[i]);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement