Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ любимые задачи на файлы.

Автор: Haba 29.05.2004 19:44

:o Граждане паскальщики, откликнитесь! Помогите решить детскую задачку по файлам, плизз, а то - мне писец... Я, как говорится, не волшебник, а только учусь, так что, если поможете, буду очень благодарен.

Итак:
__________________________________________________________________
Скопировать содержимое одного файла к другому, при условии, что файл не типизированный.
__________________________________________________________________

Автор: trminator 29.05.2004 19:58

Посмотри в справке по Паскалю слово BlockRead, там есть пример копирования файла.

Автор: Werwolf86 29.05.2004 19:59

:D там ведь элементарно....

Автор: trminator 29.05.2004 20:06

Так вроде и тут не просят чудес творить...

Haba, ты бы название темы изменил, что ли...

Автор: Haba 29.05.2004 20:07

Это где это ваши справки?

Автор: trminator 29.05.2004 20:30

Пишешь BlockRead и жмешь Ctrl-F1.

Код

{Blockrd.PAS}

{Sample code for the BlockRead and BlockWrite procedures.}

uses WinCrt; // вот это в принципе-то не нужно

program CopyFile;
{ Simple, fast file copy program with NO error-checking }
var
 FromF, ToF: file;
 NumRead, NumWritten: Word;
 Buf: array[1..2048] of Char;
begin
 Assign(FromF, ParamStr(1)); { Open input file }
 Reset(FromF, 1);  { Record size = 1 }
 Assign(ToF, ParamStr(2)); { Open output file }
 Rewrite(ToF, 1);  { Record size = 1 }
 Writeln('Copying ', FileSize(FromF), ' bytes...');
 repeat
   BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
   BlockWrite(ToF, Buf, NumRead, NumWritten);
 until (NumRead = 0) or (NumWritten <> NumRead);
 Close(FromF);
 Close(ToF);
end.
[s]

Автор: HelpAusHeaven 29.05.2004 22:39

Кстати, читать выгоднее блоками по 512 байт, а не по 2048, т.к. файлы хранятся на винте блоками именно по 512.....

Автор: HelpAusHeaven 29.05.2004 22:43

Цитата(Werwolf86 @ 29.05.04 15:59)
:D там ведь элементарно....

Через функцию copy, да? :D

Автор: HelpAusHeaven 29.05.2004 22:44

Кстати, тема этого треда не удволетворяет правилам форума, помимо ещё носит в себе и ругательный характер.... где админы "ходют")))))))))))

Автор: APAL 30.05.2004 14:07

Цитата(HelpAusHeaven @ 29.05.04 19:39)
Кстати, читать выгоднее блоками по 512 байт, а не по 2048, т.к. файлы хранятся на винте блоками именно по 512.....

Насколько я знаю размер кластера зависит от размера диска!

Автор: Haba 30.05.2004 21:44

И ещё: а как данные, содержащиеся в файле, перекопировать в массив?

Автор: Haba 30.05.2004 21:45

Маленькое уточнение: "...в одномерный массив."

Автор: Catty 30.05.2004 21:56

считываешь по одной компоненте из файла и передаешь в масив

Автор: Altair 30.05.2004 22:43

Файлы - ВКУСНЯТИНА!!!!
ТЕМА ПЕРЕИМЕНОВАННА :P :D