Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 16.09.2017
Сообщений: 14

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом

16.09.2017, 16:23. Показов 5992. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все работает, кроме записи результатов в файл. В разделе описания с файла все норм считывается, а вот когда запускаю игру выводится такое сообщение:

Unhandled Exception: System.IO.IOException: Процесс не может получить доступ к файлу "C:\Kursach\out.txt", так как этот файл используется другим процессом.
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.StreamWriter.CreateFile(String path, Boolean append, Boolean checkHost)
в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost)
в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
в PABCSystem.PABCSystem.Rewrite(Text f, Encoding en) в C:\Program Files (x86)\PascalABC.NET\LibSource\PABCSystem .pas:строка 5679
в PABCSystem.PABCSystem.Rewrite(Text f) в C:\Program Files (x86)\PascalABC.NET\LibSource\PABCSystem .pas:строка 5670
в _kursach._kursach.Files() в C:\Kursach\KursachABC.pas:строка 53
в _kursach._kursach.$Main() в C:\Kursach\KursachABC.pas:строка 86
в KursachABC.Program.Main()Программа завершена, нажмите любую клавишу . . .

Код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
program _kursach;
uses crt;
 
var number, yourNumber, i , j, a: integer; out: text;
    choose,vib: char; check, vihod: boolean;
 
procedure Igra;
var s: string; i: integer; 
begin
 randomize;
 j:=1; 
 for i:=1 to 5 do begin
  number:=random(100)+1;
  writeln;
 
  writeln (out, 'Игра номер ', i, ':'); 
  while (j<=6) do begin
   clrscr;
   writeln ('Игра номер ', i);
   writeln;
   write ('Введите число: '); 
   read(yourNumber); 
   writeln (j, ' попытка'); 
   if (number = yourNumber) then begin 
    writeln('Верно!!!'); 
    writeln (out, 'Число угадано ', j, ' попытки'); 
    j:=8; 
   end;
   if (yourNumber < number) then writeln ('Загаданное число больше!'); 
   if (yourNumber > number) then writeln ('Загаданное число меньше!'); 
   j:=j+1; 
   if (j = 7) then begin 
    writeln ('Вы не угадали число :-('); 
    writeln (out, 'Число не было угадано.'); 
   end;
  readln; readln; 
  end;
  j:=1;
  clrscr;
  write ('Было загадано число: '); 
  writeln (number);
  readln;
 end;
 writeln ('Нажмите Enter чтобы закрыть игру...');
end;
 
procedure Files; 
var S: string;
begin
 clrscr;
 assign (out, 'C:\Kursach\out.txt'); 
 reset (out); 
 rewrite (out);
 writeln (out, 'Статистика: '); 
 Igra;
 close (out); 
 reset (out); 
end;
 
procedure Reg;
var pravila: text; S: char; b: integer;
begin
 clrscr;
 assign (pravila, 'C:\Kursach\pravila.txt');
 reset (pravila);
 while not Eof(pravila) do begin
  read (pravila, S);
  write (S);
 end;
 close (pravila); 
 writeln; writeln;
 write ('Нажмите Enter чтобы вернуться в главное меню...');
end;
 
 
Begin
repeat
 clrscr;
 writeln ('Игра* "Угадайка"');
 writeln ('1. Начать игру');
 writeln ('2. Правила игры');
 writeln ('3. Выйти из игры');
 repeat
  readln (choose);
  case choose of 
   '1' : Files;
   '2' : Reg;
   '3' : halt;
   else writeln ('Повторите ввод!');
  end;
 until ((choose = '1') or (choose = '2') or (choose = '3'));
 readln();
 
 
 clrscr; //вернулись в меню
 writeln ('1. Вернуться в меню');
 writeln ('2. Выйти');
 repeat
  readln (vib);
  if (vib = '2') then halt;
  if (vib = '1') then break
   else writeln ('Сделайте правильный выбор!');
 until ((vib = '1') or (vib = '2'));
until (vihod); 
end.
Может у кого-нибудь еще будут идеи, как улучшить код?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2017, 16:23
Ответы с готовыми решениями:

Процесс не может получить доступ к файлу, так как этот файл используется другом процессом
По заданию в курсовой необходимо написать программу шифрования двойной табличной перестановкой с использованием файлов, может конечно тут...

Процесс не может получить доступ к файлу так как этот файл используется другим процессом
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using...

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Здравствуйте. У меня есть 2 таймера. 1 таймер каждые 5 секунд скачивает файл с сервера по фтп. А 2 таймер каждые 8 секунд проверяет что...

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
18.09.2017, 09:53
Осмелюсь спросить: чем вызвано использование полного пути к указанным файлам?
Не проще ли подразумевать, что файлы должны лежать в каталоге с программой?
Ну и вот это по вашему нормально:
Pascal
47
48
49
50
51
52
53
54
55
56
57
58
procedure Files; 
var S: string;
begin
 clrscr;
 assign (out, 'C:\Kursach\out.txt'); 
 reset (out); 
 rewrite (out);
 writeln (out, 'Статистика: '); 
 Igra;
 close (out); 
 reset (out); 
end;
Сначала открываете файл на чтение, потом (не закрывая) — на запись… А после закрытия, снова на чтение!

По поводу улучшений:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
uses CRT;
 
const
  pravilaFile = 'pravila.txt';
  resultFile  = 'result.txt';
  GamesCount  = 3;
  MaxSteps    = 8;
 
function GetKey(vars : array of Char) : Char;
begin
  repeat
    Result := ReadKey;
  until vars.IndexOf(Result) >= 0;
end;
 
procedure PressAnyKey;
begin
  Write(NewLine, NewLine, 'Для продолжения нажмите любую клавишу...');
  var Key := ReadKey;
end;
 
function declination(v1, v2, v3 : String; n : Integer) : String;
begin
  case n of
    1 : Result := v1;
    2..4 : Result := v2;
  else
    Result := v3;
  end;
end;
 
procedure Game;
begin
  var s := String.Format('Начало игры {0:dd.MM.yyyy HH:mm}', System.DateTime.Now);
  var guess := 0;
  for var GameNumber := 1 to GamesCount do 
    begin
      var number := Random(1, 100);
      var v := number.ToString + ' :';
      WriteLn(NewLine*3 + GameNumber + ' игра:');
      WriteLn('Загадано число от 1 до 100.');
      WriteLn('Угадайте это число:');
      var player : Integer;
      var step := 0;
      repeat
        step += 1;
        player := ReadLnInteger(NewLine + step + ' попытка. Введите число:');
        v += ' ' + player;
        case sign(number - player) of
          -1 : WriteLn('  Загаданное число меньше.');
           0 : WriteLn('  Вы угадали! Было загадано число ' + number + '.');
          +1 : WriteLn('  Загаданное число больше.');
        end;
      until (number = player) or (step = MaxSteps);
      if number <> player then // значит не угадали
        begin
          WriteLn('Вы не угадали. Было загадано число ' + number + '.');
          s += NewLine + 'Загаданное число не было угадано за ' + MaxSteps + ' ходов.' + NewLine + v;
        end
      else
        begin
          s += NewLine + 'Загаданное число было угадано за ' + step +
          declination(' ход.', ' хода.', ' ходов.', step) + NewLine + v;
          guess += 1;
        end;
    end;
  var g := NewLine + 'Из ' + GamesCount + declination(' загаданного числа ',
  ' загаданных чисел ', ' загаданных чисел ', GamesCount) + (guess = 0 ?
  'не угадано ни одного числа.' : 'угадано ' + guess + declination(' число.',
  ' числа.', 'чисел.', guess));
 
  WriteLn(NewLine + '~'*25 + NewLine + 'Игра окончена.' + g + NewLine + '~'*25 + NewLine);
  
  s += NewLine + String.Format('Окончание игры {0:dd.MM.yyyy HH:mm}', System.DateTime.Now);
  s += NewLine + g;
  s += NewLine + '~'*100;
  var f : Text; Append(f, resultFile); WriteLn(f, s); Close(f);
  PressAnyKey;
end;
 
procedure Pravila;
begin
  ClrScr;
  try
    WriteLn(ReadAllText(pravilaFile));
  except
    WriteLn('Файл с правилами игры не найден!');
  end;
  PressAnyKey;
end;
 
begin
  Randomize;
  var theEnd := False;
  repeat
    ClrScr;
    WriteLn('  Игра "Угадайка"');
    WriteLn('~'*25);
    WriteLn('  1. Начать игру');
    WriteLn('  2. Правила игры');
    WriteLn('  3. Выйти из игры');
    WriteLn('~'*25);
    Write('Введите номер действия: ');
    var Select := GetKey(arr('1', '2', '3'));
    case Select of 
      '1' : Game;
      '2' : Pravila;
      '3' : theEnd := True;
    end;
  until theEnd;
  ClrScr;
  WriteLn('До новых встреч!');
end.
0
0 / 0 / 1
Регистрация: 16.09.2017
Сообщений: 14
18.09.2017, 18:31  [ТС]
JuriiMW, Благодарю, все понял. И за улучшения спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2017, 18:31
Помогаю со студенческими работами здесь

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Вот такой код using (FileStream sw = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) ...

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Программа отправляет на сервер сообщение из файла(должна), но выдаёт исключение &quot;Процесс не может получить доступ к файлу, так как...

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Моя программа сначала открывает картинку, а потом её удаляет(должна). Вылезает &quot;Процесс не может получить доступ к файлу, так как этот...

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Моя программа должна добавлять на форму картинку, уменьшив ее до размеров 70х70, и скопировать ее в отдельную папку (этому я уже ее...

Процесс не может получить доступ к файлу, так как этот файл используется другим процессом
Возникла такая проблема ,что после отправки файла на почту он не может удалиться.В результате чего возникает данная ошибка Dim mail As...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru