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

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

23.12.2018, 19:16. Показов 15074. Ответов 8
Метки file (Все метки)

Студворк — интернет-сервис помощи студентам
По заданию в курсовой необходимо написать программу шифрования двойной табличной перестановкой с использованием файлов, может конечно тут многое можно было гораздо проще сделать, но как додумался так сделал. Но вылезла ошибка с файлом. P.s. не знаю как записать строку в двумерный массив поэтому использовал файл для записи. P.p.s. вывод в файл еще не сделал но это не проблема.
Помогите решить проблему, ошибка:
Ошибка времени выполнения: System.IO.IOException: Процесс не может получить доступ к файлу "C:\Users\Павел\Desktop\КБ Информатика\Курсовая\Kurs.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)
в PABCSystem.PABCSystem.Rewrite(Text f)
в Шифратор2.Program.$Main() в C:\Users\Павел\Desktop\КБ Информатика\Курсовая\Шифратор2.pas:строк а 14
в Шифратор2.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
var a:array [,] of char;
b:array [,] of char;
c:array [,] of char;
str1:array of char;
str2:array of char;
i, j, M: integer;
F:text;
T:string;
begin
assign(F,'Kurs.txt');
reset(F);
rewrite(f);
writeln('Введите текст:');
read(T);
M:=Round(sqrt(length(T)));
setlength(a,M,M);
setlength(b,M,M);
SetLength(c,M,M);
setlength(str1,M);
setlength(str2,M);
for i:=1 to (M*M-length(T))+1 do
T:=T+' ';
write(F, T);
for i := 1 to M do
  for j := 1 to M do
    read(F, a[i,j]); 
writeln('Исходная таблица:');
for i:=1 to M do
  begin
  for j:=1 to M do
    write(a[i,j]:M);
    writeln
  end; 
writeln ('Первый этап шифровки:');
b:=a;
For i:=1 to M do
  begin
  j:=1;
  while j<=M-1 do 
    begin
    str1[i] := b[i,j];
    b[i,j] := b[i, j+1];
    b[i, j+1] := str1[i];
    j:=j+2;
    end;
  end;
for i:=1 to M do
  begin
  for j:=1 to M do
    write(b[i,j]:M);
    writeln
  end; 
writeln ('Второй этап шифровки');
c:=b;
For j:=1 to M do
  begin
  i:=1;
  while i<=M-1 do 
    begin
    str2[j] := c[i,j];
    c[i,j] := c[i+1,j];
    c[i+1,j] := str2[j];
    i:=i+2;
    end;
  end;
for i:=1 to M do
  begin
    for j:=1 to M do
    write(c[i,j]:M);
    writeln
  end; 
writeln ('Готовый шифротекст: ');
for i:=1 to M do
  begin
  for j:=1 to M do
  write(c[i,j]);
  end;
end.
Добавлено через 2 минуты
Если что ошибка в строке 12, а не 14.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2018, 19:16
Ответы с готовыми решениями:

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

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

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

8
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
23.12.2018, 19:48
Цитата Сообщение от TongueLizard Посмотреть сообщение
Процесс не может получить доступ к файлу ... так как этот файл используется другим процессом
Ну, вам так и написало - ваш файл ещё где то открыт, в другой программе. И та другая программа не даёт его перезаписать.
0
0 / 0 / 0
Регистрация: 23.12.2018
Сообщений: 37
23.12.2018, 19:56  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
ваш файл ещё где то открыт
Ну вы же понимаете, что я сразу же посмотрел, и нигде он не открыт, по-моему весьма логично.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
23.12.2018, 20:21
Лучше, через диспетчер задач посмотрите, не у всех процессов есть форма. И - попробуйте из папки удалить и пересоздать его.
0
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
23.12.2018, 20:43
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
const
  n = 20;
 
var
  s, shifr, deshifr: string;
  a: array[1..n, 1..n] of char;
  i, j, k, w, h: integer;
 
begin
  writeln('Введите ширину таблицы для шифрования:');
  readln(w);
  writeln('Введите высоту таблицы для шифрования:');
  readln(h);
  writeln('Введите сообщение для шифрования:');
  readln(s);
  
  for i:=1 to h do
    for j:=1 to w do
      a[i, j] := 'x';
      
  SetLength(shifr, h*w);
  SetLength(deshifr, h*w);
 
  //записываем фразу построчно слева направо, сверху вниз      
  k := 0;
  for i:=1 to h do
    for j:=1 to w do begin
      k := k+1;
      if k <= length(s) then
        a[i, j] := s[k];
    end;
  
  //считываем по столбцам сверху вниз, слева на право
  k := 0;
  for j:=1 to w do
    for i:=1 to h do begin
      k := k+1;
      shifr[k] := a[i, j];
    end;
 
  writeln('Зашифрованное сообщение:');
  writeln(shifr);
  
  //расшифруем обратно
  for i:=1 to h do
    for j:=1 to w do
      a[i, j] := 'x';
 
  //записываем фразу по столбцам сверху вниз, слева на право
  k := 0;
  for j:=1 to w do
    for i:=1 to h do begin
      k := k+1;
      a[i, j] := shifr[k];
    end;
 
  //считываем фразу построчно слева направо, сверху вниз      
  k := 0;
  for i:=1 to h do
    for j:=1 to w do begin
      k := k+1;
      deshifr[k] := a[i, j];
    end;
 
  writeln('Расшифрованное сообщение:');
  writeln(deshifr);
 
end.
Добавлено через 47 секунд
Готовая написанная программа )
1
0 / 0 / 0
Регистрация: 23.12.2018
Сообщений: 37
23.12.2018, 21:25  [ТС]
Цитата Сообщение от Nikita110001 Посмотреть сообщение
Готовая написанная программа )
Спасибо большое за старания конечно)
но это не та программа.
Шифрование двойной табличной перестановкой-это попарная смена местами сначала столбцов, а потом строк. А расшифровка-тоже самое в обратном порядке.
0
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
23.12.2018, 21:46
не за что но она работает правильно
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
24.12.2018, 05:00
TongueLizard, ваша ошибка вполне себе воспроизводится:
Pascal
1
2
3
4
5
6
begin
  var f : Text;
  Assign(f, '1.txt');
  Reset(f);
  Rewrite(f);
end.
1
0 / 0 / 0
Регистрация: 23.12.2018
Сообщений: 37
24.12.2018, 13:38  [ТС]
Цитата Сообщение от JuriiMW Посмотреть сообщение
TongueLizard, ваша ошибка вполне себе воспроизводится:
так в этом же случае тоже вылазиет такая ошибка, что мне с ней делать?

Добавлено через 7 минут
Я немного переделал программу, так логичнее, но тем не менее все равно вылазит та же ошибка:
Ошибка времени выполнения: System.IO.IOException: Процесс не может получить доступ к файлу "C:\Users\Павел\Desktop\КБ Информатика\Курсовая\Kurs.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)
в PABCSystem.PABCSystem.Rewrite(Text f)
в Шифратор2.Program.$Main() в C:\Users\Павел\Desktop\КБ Информатика\Курсовая\Шифратор2.pas:строк а 21
в Шифратор2.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
var a:array [,] of char;
b:array [,] of char;
c:array [,] of char;
str1:array of char;
str2:array of char;
i, j, M: integer;
F, F2:text;
T:string;
begin
assign(F,'Kurs.txt');
reset(F);
read(F, T);
M:=Round(sqrt(length(T)));
setlength(a,M,M);
setlength(b,M,M);
SetLength(c,M,M);
setlength(str1,M);
setlength(str2,M);
for i:=1 to (M*M-length(T)) do
  T:=T+' ';
rewrite(F);
write(F, T);
for i := 1 to M do
  for j := 1 to M do
    read(F, a[i,j]); // текст записывается в ячейки двумерного массива
close(F);
writeln('Исходная таблица:');
for i:=1 to M do
  begin
  for j:=1 to M do
    write(a[i,j]:M);
    writeln
  end; // текст выводится на экран в виде таблицы
writeln ('Первый этап шифровки:');
b:=a;
For i:=1 to M do
  begin
  j:=1;
  while j<=M-1 do // цикл, позволяющий попарно поменять столбцы местами
    begin
    str1[i] := b[i,j];
    b[i,j] := b[i, j+1];
    b[i, j+1] := str1[i];
    j:=j+2;
    end;
  end;
for i:=1 to M do
  begin
  for j:=1 to M do
    write(b[i,j]:M);
    writeln
  end; //вывод на экран промежуточной текстовой таблицы
writeln ('Второй этап шифровки');
c:=b;
For j:=1 to M do
  begin
  i:=1;
  while i<=M-1 do //цикл, позволяющий попарно поменять местами строки таблицы
    begin
    str2[j] := c[i,j];
    c[i,j] := c[i+1,j];
    c[i+1,j] := str2[j];
    i:=i+2;
    end;
  end;
for i:=1 to M do
  begin
    for j:=1 to M do
    write(c[i,j]:M);
    writeln
  end; //вывод на экран итоговой текстовой таблицы
assign(F2, 'Kurs2.txt');
reset(F2);
rewrite(F2);
writeln ('Готовый шифротекст: ');
for i:=1 to M do
  begin
  for j:=1 to M do begin
  write(c[i,j]); //вывод на экран готового шифротекста
  write(F2, c[i,j]);//запись шифротекстa в файл Kurs2.txt
  end;
  end;
close(F2);
end.
Добавлено через 19 минут
Проблему с файлом решил, оказалось нельзя открывать на запись и на чтение одновременно, поэтому я открыл на чтение-прочитал-закрыл, открыл на запись-записал-закрыл.
Но не бросайте камнями)))) вылезла весьма странная ошибка, что индекс вышел за пределы массива, хотя вроде количество символов в файле совпадает с размерностью таблицы. Вот полное описание:
Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива.
Стек:
в Шифратор2.Program.$Main() в C:\Users\Павел\Desktop\КБ Информатика\Курсовая\Шифратор2.pas:строк а 28
в Шифратор2.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
var a:array [,] of char;
b:array [,] of char;
c:array [,] of char;
str1:array of char;
str2:array of char;
i, j, M: integer;
F, F2:text;
T:string;
begin
assign(F,'Kurs.txt');
reset(F);
read(F, T);
close(F);
M:=Round(sqrt(length(T)));
setlength(a,M,M);
setlength(b,M,M);
SetLength(c,M,M);
setlength(str1,M);
setlength(str2,M);
for i:=1 to (M*M-length(T)) do
  T:=T+' ';
rewrite(F);
write(F, T);
close(F);
reset(F);
for i := 1 to M do
  for j := 1 to M do
    read(F, a[i,j]);// текст записывается в ячейки двумерного массива
close(F);
writeln('Исходная таблица:');
for i:=1 to M do
  begin
  for j:=1 to M do
    write(a[i,j]:M);
    writeln
  end; // текст выводится на экран в виде таблицы
writeln ('Первый этап шифровки:');
b:=a;
For i:=1 to M do
  begin
  j:=1;
  while j<=M-1 do // цикл, позволяющий попарно поменять столбцы местами
    begin
    str1[i] := b[i,j];
    b[i,j] := b[i, j+1];
    b[i, j+1] := str1[i];
    j:=j+2;
    end;
  end;
for i:=1 to M do
  begin
  for j:=1 to M do
    write(b[i,j]:M);
    writeln
  end; //вывод на экран промежуточной текстовой таблицы
writeln ('Второй этап шифровки');
c:=b;
For j:=1 to M do
  begin
  i:=1;
  while i<=M-1 do //цикл, позволяющий попарно поменять местами строки таблицы
    begin
    str2[j] := c[i,j];
    c[i,j] := c[i+1,j];
    c[i+1,j] := str2[j];
    i:=i+2;
    end;
  end;
for i:=1 to M do
  begin
    for j:=1 to M do
    write(c[i,j]:M);
    writeln
  end; //вывод на экран итоговой текстовой таблицы
assign(F2, 'Kurs2.txt');
rewrite(F2);
writeln ('Готовый шифротекст: ');
for i:=1 to M do
  begin
  for j:=1 to M do begin
  write(c[i,j]); //вывод на экран готового шифротекста
  write(F2, c[i,j]);//запись шифротекстa в файл Kurs2.txt
  end;
  end;
close(F2);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2018, 13:38
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru