Как скопировать текст из одного файла в другой паскаль

Обновлено: 01.07.2024

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Рассмотренные в этом разделе способы работы с файлами универсальны в том смысле, что могут использоваться в приложениях любых версий Windows, в консольных приложениях и даже в приложениях, созданных на Turbo Pascal. Но по эффективности и сервису они, конечно, несопоставимы с возможностями, рассмотренными в разд. 10.9.

Удаление файла с диска осуществляется процедурой Erase или функцией DeleteFile. Пользоваться процедурой Erase имеет смысл только в том случае, если вы работали с данным файлом с помощью файловой переменной, а затем должны удалить этот файл. Процедура объявлена следующим образом:

Например, удаление из текущего каталога файла с именем File.tmp осуществляется операторами

Обычно более удобна функция DeleteFile:

Она удаляет файл с именем FileName. Если удалить файл невозможно или указанного файла нет, функция возвращает false.

Сочетание процедуры Erase или функции DeleteFile с функциями поиска файлов (см. разд. 10.6) легко позволяет организовать удаление из заданного каталога всех файлов, удовлетворяющих некоторому шаблону:

ires: integer; begin

Например, вызов такой процедуры оператором

удалит из каталога c:\tmp\ все файлы с расширением .tmp. Подобные процедуры широко используются при завершении приложения для зачистки мусора - удаления с диска временных файлов. В разд. 10.6 приведена более сложная процедура, обеспечивающая удаление файлов, удовлетворяющих шаблону, не только из указанной папки, но и изо всех папок, вложенных в нее.

Удаление файлов рассмотренными функциями приводит к их полному удалению, а не к перемещению в корзину, из которой их потом можно восстановить. Удаление файлов с переносом их в корзину рассмотрено в разд. 10.9.

Копирование файлов средствами функций Pascal может сводиться к созданию файла-приемника, после чего содержимое файла-источника читается по частям или целиком в некоторый буфер и записывается в файл-приемник. Следующая функция в приложении VCL Win32 осуществляет подобный подход:

NiGhtWolFs

Var a,b:longint;
c:text;
begin
assign(c, 'Input.txt');
reset(c);
read(c,a,b);
close(c);
assign(c, 'Output.txt');
rewrite(c);
writeln(c,a,' ',b);
close(c);
end.

P.S. в файле Input.txt введены 2 числа через пробел, эти же числа копируются в Output.txt, для проверки программы, создавай папку и 2 файла Input.txt и Output.txt, далее копируй текст программы в паскаль и сохраняй программу в ту папку где 2 файла в формате паскаля (*.pas), и запускай программу, числа из текстового документа Input копируются в Output

Новые вопросы в Информатика

Дайте определение программе SketchUp.Коротко и ясно, пожалуйста​

что из перечисленных инструментов относится к инструментам рисования . ​

Упростите логические выражения желательно фото2-2столбик3-полностью​

Напишите функцию, принимающую от 1 до 3 параметров — целых чисел (как стандартная функция range). Единственный обязательный аргумент — последнее число … . Если поданы 2 аргумента, то первый интерпретируется как начальное число, второй — как конечное (не включительно). Если поданы 3 аргумента, то третий аргумент интерпретируется как шаг. Функция должна выдавать один из следующих списков: Логарифмов чисел; ПИТОН:: ПОМОГИТЕ ПОЖАЛУЙСТА

1) Вычисли значение логического выражения (¬A∨A)∧( 1∨0)∨(0∧ 1) 2)Докажи сочетательный закон для логического сложения ,построив таблицу истинности: (A∨ … B)∨C=A∨(B∨C) Запиши верную последовательность 0 и 1 из последнего столбца (сверху вниз) 3)Построй таблицу истинности логической функции: ¬B∨¬(A∨B) и определи какому выражению равносилен ответ 4)Вычисли значение логического выражения: (A∨0)∧(¬A∧1)∧(B∨¬B)=. выбери один верный ответ 1)не А ,2)В ,3)0 ,4)1 ПОМОГИТЕ ПОЖАЛУЙСТА 100Б

Вопрос по информатике Нужно написать програму 1)Сколько раз будет выполняться цикл for i:= 4 to 8 do. ; 2)Сколько раз исполнится цикл: i:=6; whil … e i<18 do i:=i+3; 3)Сколько раз исполнится цикл: i:=12; Repeat i:=i-2 Until i>4; 4)Чему будет равна переменная sum после выполнения фрагмента программы: sum:=0; for i:=5 to 8 do sum:=sum+i; 5)Чему будет равна переменная sum после выполнения фрагмента программы: i:=10; sum:=0; While i>5 do begin sum:=sum+i/5; i:=i-5 end; 6)Чему будет равна переменная sum после выполнения фрагмента программы: sum:=0; i:=1; Repeat Sum:=sum+3; i:=i-1 Until i>11;

Построить графики функций y1= в степени x-3 , y2=3/x на интервале [- 5 ; -0,5] с шагом 0,5

1. Для чого призначена програма Microsoft Access? 2. Що таке “реляційні бази даних”? 3. Яке поле називають ключевим? 4. Яких типів можуть бути поля … ? 5. Що таке “маска введення”? Навіщо її використовуюють? 6. Навіщо накладати умову на значення поля? Що трапляється, якщо ввести варіанти, непередбачені в умові? 7. Як вставити малюнок у таблицю бази?

Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Здравствуйте!
Такой вопрос: а как в Паскале копировать содержимое одного файла в другой ? Напишите мне пример в виде кода, пожалуйста.
И еще один вопрос: дело в том, что у меня по какой-то причине в конце моей программы компьютер требует end;, сколько я этих end; не вписывал, он все равно их требует. В чем причина ? Программа в приложении.
ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ!

Здравствуйте, BOOM!
В приложении код программы копирующей один файл в другой.
1)Сначачала получаем имена файлов.
2)Открываем копируемый файл для чтения, а тот в который надо копировать создаем или перезаписываем.
3)Проходим весь первый файл с помощью while not eof(f1), при каждом проходе этого цикла сохраняется тек. строка из первого файла в буфер, а потом содержимое буфера записывается в другой файл.
4)Очищаем буфер второго файла(Flush(f2)), чтобы сохранились все изменения
5)Закрываем все файлы.

просмотр профиля эксперта

Marked One

Посетитель
16.04.2008, 22:40

У меня еще вопросик, если не возражаете: Дело в том, что мне нужно сделать так, чтобы после выполнения процедуры программа не завершалась, а выходила в главное меню. Как это сделать ? Меню у меня написано с помощью оператора Case. Можно ли сделать так, чтобы при выборе нужного действия компьютер не ждал нажатия на Enter, а сразу выполнял нужное действие ? Например: нажимаю я "4", а компьютер сразу же выполняет нужное действие и не ждет, когда я нажму Enter. Вот программа: uses crt; const n=1; i=1; j=1; var f:text; y:integer; type mass= array [1..n] of integer; type mas= array [1..i, 1..j] of integer; var a:mass; b:mas; procedure vvodfile; var inf:string; begin clrscr; rewrite (f); writeln ('Vvedite informaciyu, kotoruyu neobhodimo vvesti v fail.'); readln (inf); writeln ('Informaciya zapisana v fail.'); writeln (f,inf); close (f); end; procedure dob; var inf1:string; begin clrscr; append (f); writeln ('Vvedite informaciyu, kotoruyu neobhodimp dobavit v fail.'); readln (inf1); writeln ('Infomaciya dobavlena.'); writeln (f,inf1); close(f); end; procedure massiv (a:mass); var n,sum,i:integer; begin clrscr; append (f); write ('Vvedite kol-vo el massiva: '); readln (n); sum:=0; for i:=1 to n do begin write ('Vvedite el massiva: '); readln (a[n]); if a[n]<0 then sum:=sum+a[n]; end; writeln ('Summa otrichatelnih el: ',sum); writeln (f,'Summa otrichatelnih el: ',sum); close (f); readln; end; procedure duo (b:mas); var sum1,k,l,i,j:integer; begin clrscr; append (f); write ('Vvedite kol-vo strok v massive: '); readln (k); write ('Vvedite kol-vo stolbcov v massive: '); readln (l); sum1:=0; for i:=1 to k do begin for j:=1 to l do begin write ('Vvedite el massiva: '); readln (b[i,j]); sum1:=sum1+b[i,j]; end; end; write ('Obchaya summa el massiva: ',sum1); writeln (f,'Obchaya summa el massiva: ',sum1); close (f); readln; end; procedure str; var res:integer; sstr:string; begin clrscr; append (f); write ('Vvedite stroku: '); readln (sstr); res:= length(sstr); write ('Kol-vo simvolov v stroke: ',res); writeln (f,'Stroka: ',sstr); writeln (f,'Kol-vo simvolov v stroke :',res); close(f); readln; end; begin clrscr; assign (f,'1.txt'); rewrite(f); writeln ('1 - Dobavit inform v file'); writeln ('2 - '); writeln ('3 - Dobavlenie v file informacii'); writeln ('4 - Rabota s el odnom massiva'); writeln ('5 - Nayti summu el dvum massiva'); writeln ('6 - Poscitat kol-vo simvolov v stroke'); readln (y); case y of 1:begin vvodfile; end; 3:begin dob; end; 4:begin massiv (a); end; 5:begin duo (b); end; 6:begin str; end; end; end. Еще раз огромное спасибо!

Если я правильно понял, то сделайте так(ввод 10-выход из программы): while true do begin readln (y); case y of 1:begin vvodfile; end; 3:begin dob; end; 4:begin massiv (a); end; 5:begin duo (b); end; 10:break; 6:begin str; end; end; end;

Спасибо, все заработало. У меня еще есть вопросы: Как сделать изменить цвет текста? Как вывести мое меню посередине экрана? Как сделать меню в виде таблицы? Как сделать так, чтобы при выборе пункта меню компьютер не ждал нажатия Enter, а сразу же после нажатия выполнял нужное действие?

TextColor(red); - после этого текст будет выводится красным цветом

А можно сделать, чтобы каждая строка имела свой цвет? Как вывести мое меню посередине экрана? Как сделать так, чтобы при выборе пункта меню компьютер не ждал нажатия Enter, а сразу же после нажатия выполнял нужное действие?

Выводятся две строки, одна красным, другая синим: Uses CRT; Begin TextColor(Red); WriteLn('Первая строка'); TextColor(Blue); writeLn('Вторя строка'); end.

Uses CRT; var c:Char; begin repeat c:=ReadKey; writeln(c); case c of 1:First; 2:Second; end; untill c='0' end.

Я немного ошибся: т. к. тип перменной c Char, то надо писать вот так: Uses CRT; var c:Char; begin repeat c:=ReadKey; writeln(c); case c of '1':First; '2':Second; end; untill c='0' end.

Для участия в олимпиаде по информатике вы должны уметь работать с текстовыми файлами (считывать и записывать информацию). На олимпиадах, начиная с областных, они используются для ввода и вывода данных. Лучше всего попробовать работать с файлами до того, как Вы пойдете на олимпиаду.

На этом уроке мы рассмотрим, как используются текстовые файлы для ввода и вывода данных в программе на языке Паскаль.

Текстовые файлы – это файлы, содержащие символы, разделенные на строки. Причем в конце каждой строки стоит символ конца строки.

Общая последовательность действий при работе с файлами в языке программирования Паскаль:

  1. описать переменную файлового типа;
  2. связать ее с конкретным физическим файлом процедурой Assign;
  3. открыть файл для чтения процедурой ReSet или для записи процедурой ReWrite;
  4. выполнить чтение или запись информации;
  5. по окончании работы с файлом закрыть файл процедурой Close.

Описание переменной файлового типа

С текстовым файлом на диске в программе должна быть связана файловая переменная, которая описывается с указанием стандартного типа Text:

Связь переменной файлового типа с конкретным внешним файлом

Для установления связи между файловой переменной и именем файла, присваиваемого операционной системой, имеется стандартная процедура Assign.

Assign (<имя файловой переменной >, <имя внешнего файла>);

Чтение из файла

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

Для чтения файла в программе необходимо выполнить следующие действия:

Открыть файл для чтения:

Reset (<имя файловой переменной >);

Прочитать данные файла в программу с помощью процедуры Read или Readln .

Процедура Read последовательно считывает все элементы строки:

Read(<имя файловой переменной >,<элемент>)

Процедура Readln – считывает элемент из текущей строки и переходит на следующую строку (независимо от того, достигнут конец строки или нет):

Readln(<имя файловой переменной >,<элемент>)

Если не указывать второй параметр, то произойдет переход в начало следующей строки без ввода данных:

Readln (<имя файловой переменной>)

Закрытие файла

После завершения работы с файлом, его нужно закрыть и «освободить» файловую переменную . Это делается с помощью процедуры Сlose.

Общий вид оператора:

Close(<имя файловой переменной >)

Общая форма чтения файла имеет вид:

Reset(<имя файловой переменной >);

Read(<имя файловой переменной >, <элемент>);

Close(<имя файловой переменной >);

Многоточием отмечено наличие других операторов в программе.

Признак конца файла

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

Общий вид функции:

Для определения конца файла используется оператор цикла, например, (пока не достигнут конец файла …):

While Not EOF (<имя файловой переменной >) Do …

Запись в файл

Под записью файла понимается вывод результатов программы из оперативной памяти на диск, т.е. создание нового файла на внешнем устройстве.

Для записи файла в программе необходимо выполнить следующие действия:

Открыть файл для записи с помощью процедуры Rewrite:

rewrite (<имя файловой переменной>);

Записать данные в файл спомощью процедур Write или Writeln.

Процедура Write производит запись поэлементно в текущую строку:

Write (<имя файловой переменной >, <элемент>) ;

Процедура WriteLn записывает элемент и переводит указатель в начало следующей строки:

Writeln (<имя файловой переменной >,<элемент>);

Если не указывать второй параметр процедуры, то в конце данной строки ставится признак конца файла и текущий указатель перемещается на начало следующей строки:

WriteLn(<имя файловой переменной >);

После завершения работы с файлом его закрытие обязательно.

Общая форма записи файла имеет вид:

ReWrite(<имя файловой переменной >);

Write(<имя файловой переменной >,<элемент>) ;

Close(<имя файловой переменной >);

Логическая функция Eoln()

Таким образом, для анализа конкретных символов строк файла можно применить вложенный цикл типа:

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

Пусть в файле содержится следующая информация:

-32 16 0 8 7
4 5 9 13 11 -5 -8
6 -8 0 12
1 2
-1 -2 -4
-1 -2 4

Этот файл можно создать в среде Паскаль следующим образом:

  1. Создать новый файл (команда Файл-Новый).
  2. Записать все числа в строке через пробелы.
  3. Сохранить его, например, как ‘primer1.dat’.
    Для этого в диалоговом окне сохранения файла в списке Тип файла выбрать Все файлы. В поле Имя файла ввести полное имя файла (имя с расширением).

Программа будет иметь следующий вид:

На этом уроке было рассмотрено, как использовать текстовые файлы для ввода и вывода данных в программе на языке Паскаль.
На следующем уроке Вы узнаете, как использовать тип данных Bulean для представления данных логического типа.
Следующий урок: Логический тип данных

Урок понравился? Отзывы и замечания можно оставить в форме для комментариев, расположенной в нижней части страницы.

Читайте также: