Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 284

Копирование текстового файла в бестиповый файл

15.04.2017, 19:57. Показов 4002. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как произвести копирование текстового файла в бестиповый.
Есть программа и нужно скопировать файл с результатом в друг, т.е f2:text=f3:file

Моя попытка не удалась:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure KOPY(var _f2:text; var _f3: file; var _str:string);
var i,k:integer;
begin
   assign (_f3,'kopyfile.txt');
   rewrite(_f3,sizeof(string)*8);
  {$I+}
  i:=0;
   while not eof(_f3) do begin
     inc(i);
     read(_f2,_str);
       if i=100 then begin
        blockwrite(_f3,_str,1);
        i:=0;
       end;
     end;
   if i<>0 then begin
     for k:=i+1 to 100 do _str[k]:=' ';
     blockwrite(_f3,_str,1);
    end;
    close(_f2);
    close(_f3);
    end;
Вот программа, для которой нужно скопировать f2 в f3
Помогите пожалуйста

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
uses crt;
type mas = array[1..100] of string;
var f1,f2:text;
 
a:mas;
str,name,name2:string;
i,n:integer;
 
 
procedure OpenFileInput(var _f1:  text;var _n:integer; var _a:mas);
var
    n:integer;
    _name:string;
begin
_n:=0;
WriteLn('Enter the file name: ');
ReadLn(_name);
assign(_f1,_name);
  {$I-}
Reset(_f1);
  {$I+}
if ioresult<>0 then
WriteLn('File not found')
else begin
WriteLn('Found file');
end;
while not eof(_f1) do
begin
_n:=_n+1;
readln(_f1,a[_n]);
end;
end;
 
procedure OpenFileOutput(var _f2: text);
var _name2:string;
begin
WriteLn('Enter the file name rezultat: ');
ReadLn(_name2);
assign(_f2,_name2);
    {$I-}
  rewrite(_f2);
    {$I+}
if ioresult<>0 then
WriteLn('File not found')
else begin
WriteLn('Found file');
Writeln('File zapisan');
end;
end;
 
 
procedure Cifra1(var _f1,_f2:text; var _str:string; var _n: integer);
{type cifr = set of '0'..'9'; }
var i:integer;
 
begin
 
     for i:= 1 to _n do
     begin
    _str:=a[i];
    if _str[1] in ['0'..'9'] then begin
      insert('(',_str,1);
      insert(')',_str,length(_str)+1);
    end;
   writeln(_f2,_str);
    end;
end;
begin
ClrScr;
OpenFileInput(f1,n,a);
openFileOutput(f2);
Cifra1(f1,f2,str,n);
close(f2);
close(f1);
   readln
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2017, 19:57
Ответы с готовыми решениями:

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...

Копирование текстового файла - программа не видит файл-источник
есть код, но почему-то не хочет открывать файл какова может быть причина? .486 model small Data SEGMENT use16 ASSUME...

27
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 284
23.04.2017, 17:41  [ТС]
Студворк — интернет-сервис помощи студентам
bormant, В общем, если я запускаю ваши функции, они работают и все правильно. Добавляю в программу - не работает. Пробую переделать в процедуру, запускаю - работает, добавляю в программу, а дальше самое интересное. Ввожу в Турбо одну процедуру копирования - работает, добавляю остальную часть программы - пусто. Во Фри вообще не компилируется, ошибку выдает. В Лазарусе тоже ошибку выдает, но на строке с ioresult.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
23.04.2017, 17:53
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
добавляю остальную часть программы - пусто
То есть, где именно проблема, вам известно.
Пройдитесь отладчиком, сможете разобраться, что пошло не так.
Самый простой путь -- возьмите одну из полных программ в сообщении #16. Если нужно, допишите недостающее или объясните, чего же там не хватает...
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
Во Фри вообще не компилируется, ошибку выдает
Смелое заявление:
Code
1
2
3
4
5
6
7
8
9
10
> fpc a
Free Pascal Compiler version 3.0.2 [2017/02/13] for i386
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling a.pas
Linking a.exe
66 lines compiled, 0.4 sec, 29216 bytes code, 1284 bytes data
 
> a
Результат обработки "in.txt" в "out.txt", его копия в "copy.txt".
0
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 284
23.04.2017, 18:00  [ТС]
bormant, По поводу фри имела ввиду, что вся программа так же не компилируется. Где ошибка я не могу сказать, т.к каждая процедура верно работает по отдельности.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
23.04.2017, 18:08
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
имела ввиду, что вся программа так же не компилируется. Где ошибка я не могу сказать
Зато компилятор может.
Когда "не компилируется", то компилятор говорит где не компилируется и почему не компилируется.

Добавлено через 4 минуты
Повторю, сообщение #16, вторая по счету "вся программа", 65 строк, отлично компилируется и выполняется с ожидаемым результатом.
0
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 284
23.04.2017, 18:09  [ТС]
bormant, Попробуйте пожалуйста запустить у себя
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
114
115
116
117
118
119
120
121
122
uses crt;
const name='in.txt'; name2='out.txt'; name3='copy9.txt';
type mas = array[1..100] of string;
var f1,f2:text;
    f3:file;
    f4:file;
a:mas;
 
str:string;
i,n:integer;
 
procedure OpenFileInput(const _name:string; var _f1:  text;var _n:integer; var _a:mas);
var
    n:integer;
 
begin
_n:=0;
WriteLn('Enter the file name: ');
{ReadLn(_name);      }
assign(_f1,_name);
  {$I-}
Reset(_f1);
  {$I+}
if ioresult<>0 then begin
WriteLn('File not found');
halt;
end
else begin
WriteLn('Found file');
end;
while not eof(_f1) do
begin
_n:=_n+1;
readln(_f1,a[_n]);
end;
end;
 
procedure OpenFileOutput(var _f2: text; const _name2: string);
 
begin
WriteLn('Enter the file name rezultat: ');
{ReadLn(_name2); }
assign(_f2,_name2);
    {$I-}
  rewrite(_f2);
    {$I+}
if ioresult<>0 then  begin
WriteLn('File not found');
halt;
end
else begin
WriteLn('Found file');
Writeln('File zapisan');
end;
end;
 
procedure Cifra1(var _f1,_f2:text; var _str:string; var _n: integer;var _a:mas);
var i:integer;
begin
     for i:= 1 to _n do
     begin
    _str:=a[i];
     if (Length(_str)>0) and (_str[1] in ['0'..'9']) then _str:='('+_str+')';
      a[i]:=_str;
    end;
  { writeln(_f2,a[i]);   }
 
end;
 
procedure Output(var _f2:text; var _n:integer; var _a:mas);
var i:integer;
begin
 for i:= 1 to _n do
     begin
  writeln(_f2,a[i]);
end;
end;
 
procedure CopyFile(const _name2, _name3: String; var _f3,_f4:file);
var
 
b: array [0..1023] of Char;
r: Word;
begin
 
Assign(_f4,_name2);
{$I-}
Reset(_f4,1);
{$I+}
if IOResult<>0 then begin
WriteLn('Error');
halt;
end;
Assign(_f3,_name3);
{$I-}
Rewrite(_f3,1);
{$I+}
if IOResult<>0 then begin
WriteLn('Error');
halt;
end;
while not EoF(_f4) do begin
BlockRead(_f4,b,SizeOf(b),r);
BlockWrite(_f3,b,r);
end;
Close(_f4);
Close(_f3);
 
end;
 begin
ClrScr;
OpenFileInput(name,f1,n,a);
openFileOutput(f2,name2);
Cifra1(f1,f2,str,n,a);
Output(f2,n,a);
CopyFile(name2,name3,f3,f4);
close(f2);
close(f1);
   readln
 
 
end.
Добавлено через 1 минуту
bormant, Да. Вы правы. Та программа компилируется полностью. Но мне необходимо, так сказать, домучить свою.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
23.04.2017, 18:20
Pascal
116
117
118
close(f2);
close(f1);
CopyFile(name2,name3,f3,f4);
Ну или где-то до вызова CopyFile выполнить Flush(f2).

Добавлено через 1 минуту
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
Но мне необходимо, так сказать, домучить свою.
В этом совершенно никакого смысла, поверьте. Очень, нет, ОЧЕНЬ грязный код.

Если начать приводить ее в человеческий вид, в конечном итоге получите что-то вроде варианта из #16.
1
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 284
23.04.2017, 18:29  [ТС]
bormant, Я уже показала эту, отчет готов и сказали именно в эту программу вставить, по-другому не примут

Добавлено через 1 минуту
bormant, Поменяла местами строки и все заработало.. сидела над этим несколько дней. Спасибо большое)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
23.04.2017, 18:35
KatrinLuxury,
Интересно, почему?
В Text используется буферизованный вывод, записанные данные попадают на диск по заполнению буфера, принудительному сбросу буфера на диск (Flush). При закрытии (Close) также вызывается Flush.
К моменту попытки копирования данных на диске еще нет (или не все).

В отдельных случаях могла быть ошибка совместного доступа при повторной попытке открыть ранее открытый файл.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2017, 18:35

Копирование каждой третьей строки текстового файла в другой файл с помощью потоков
Нужно создать програму с использованием потоков, которая копирует каждый третью строчку текстового файла в другой текстовый файл с...

Копирование одного текстового файла в другой, используя посимвольное, построчное и поблочное копирование
Здраствуйте, у меня такая проблемма мне надо обеспечить копирование одного текстового файла в другой, используя посимвольное, построчное...

Бестиповый файл
Я сделал базу данных и узнал что надо было делать вместо типизированого файла Бестиповый файл, помогите исправить не могу понять как мне...

Бестиповый файл
Всем доброго времени суток. Хочу попросить помощи. Есть база данных в лазарусе, нужно присобачить туда сохранение в бестиповый файл и...

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru