Advertisement
anticlown

Файлы в делфи

Oct 19th, 2023
1,687
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.08 KB | None | 0 0
  1. /////////////////////// Проверка указанного пути ////////////////////////////////
  2. Function InputPathToFile(): String;
  3. Var
  4.     Path: String;
  5.     IsCorrect: Boolean;
  6. Begin
  7.     Write('Укажите путь к файлу: ');
  8.  
  9.     Repeat
  10.         IsCorrect := True;
  11.         Readln(Path);
  12.  
  13.         If Not FileExists(Path) Then
  14.         Begin
  15.             Write('По указанному пути файл не найден! Укажите правильный путь: ');
  16.             IsCorrect := False;
  17.         End
  18.         Else
  19.             If ExtractFileExt(Path) <> '.txt' Then
  20.             Begin
  21.                 Write('Ошибка, неправильный тип файла! Укажите правильный путь: ');
  22.                 IsCorrect := False;
  23.             End;
  24.     Until IsCorrect;
  25.  
  26.     InputPathToFile := Path;
  27. End;
  28. ///////////////////////////////////////////////////////////////////////////////
  29.  
  30. ///////////////////////////// Ввод из файла ///////////////////////////////////
  31. Function FillSequenceFromFile(Const Size: Integer; Const Path: String): TArr; //пользовательский тип
  32. Var
  33.     Sequence: TArr;
  34.     IsCorrect: Boolean;
  35.     InputFile: TextFile;
  36.     I: Integer;
  37. Begin
  38.     SetLength(Sequence, Size);
  39.     Writeln('Происходит чтение последовательности из файла...');
  40.     AssignFile(InputFile, Path);
  41.  
  42.     Repeat
  43.         IsCorrect := True;
  44.  
  45.         Try
  46.             Try
  47.                 Reset(InputFile);
  48.                 Readln(InputFile);
  49.  
  50.                 For I := Low(Sequence) To High(Sequence) Do
  51.                 Begin
  52.                     Read(InputFile, Sequence[I]);
  53.  
  54.                     If (IsCorrect And ((Sequence[I] < MIN_VALUE) Or (Sequence[I] > MAX_VALUE))) Then
  55.                     Begin
  56.                         Writeln('Ошибка при чтении последовательности! Введите последовательность с консоли!');
  57.                         IsCorrect := False;
  58.                         Sequence := FillSequenceFromConsole(Size); //в вашем случае это будет возврат на стадию
  59.                     End;                                            //ввода пути к файлу
  60.                 End;
  61.             Finally
  62.                 Close(InputFile);
  63.             End;
  64.         Except
  65.             Writeln('Ошибка при чтении последовательности! Введите последовательность с консоли!');
  66.             IsCorrect := False;
  67.             Sequence := FillSequenceFromConsole(Size); //в вашем случае это будет возврат на стадию ввода пути к файлу
  68.         End;
  69.     Until IsCorrect;
  70.  
  71.     FillSequenceFromFile := Sequence;
  72. End;
  73. //////////////////////////////////////////////////////////////////////////////
  74.  
  75. ////////////////////////////// Запись в файл //////////////////////////////////
  76. Procedure OutputSequenceInFile(Const Sequence: TArr; Path: String);
  77. Var
  78.     OutputFile: TextFile;
  79.     IsCorrect: Boolean;
  80.     I: Integer;
  81. Begin
  82.     Writeln('Вывод начальной последовательности в файл...');
  83.  
  84.     Repeat
  85.         IsCorrect := True;
  86.         AssignFile(OutputFile, Path);
  87.  
  88.         Try
  89.             Try
  90.                 Append(OutputFile);
  91.  
  92.                 For I := Low(Sequence) To High(Sequence) Do
  93.                     Write(OutputFile, Sequence[I], ' '); //можно и #32(Space по ASCII), можно и #9(Tab по ASCII)
  94.                 Write(OutputFile, #13);
  95.             Finally
  96.                 Close(OutputFile);
  97.             End;
  98.         Except
  99.             Writeln('Ошибка! Измените параметры файла или укажите новый путь!');
  100.             IsCorrect := False;
  101.             Path := InputPathToFile();
  102.         End;
  103.  
  104.     Until IsCorrect;
  105.  
  106.     Writeln('Данные успешно записаны в файл!');
  107. End;
  108. //////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement