Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с файлами

11K
09 апреля 2005 года
Baikonur
1 / / 09.04.2005
Привет, парни. Есть два вопроса:
1. Как скопировать файл из одной директории в другую?
2. Как удалить из файла строку или вообще что-то удалить?

В доках, которые я просмотрел, в лучшем случае есть скудная косвенная инфа по второму вопросу.

Буду благодарен за конкретную помощь. Заранее спасибо.
247
10 апреля 2005 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by Baikonur
Привет, парни. Есть два вопроса:
1. Как скопировать файл из одной директории в другую?
2. Как удалить из файла строку или вообще что-то удалить?

В доках, которые я просмотрел, в лучшем случае есть скудная косвенная инфа по второму вопросу.

Буду благодарен за конкретную помощь. Заранее спасибо.


1 - руками: Открыть тут на чтение, там на запись, и потихоньку, полегоньку...
2 - руками: открыть, скопировать в другой все что до и все что после.

10K
16 апреля 2005 года
pesicot
11 / / 31.03.2005
Цитата:
Буду благодарен за конкретную помощь. Заранее спасибо.



За конкретную??? Тебе походу весь код нужен.
Ну тогда "отктнься на спинку кресла" и слушай:

var inf,outf:file of byte;
ins,outs:string; {пути к файлам}
b:byte;

begin
writeLn('Введи путь копируемого файла');
readln(ins);
writeLn('Введи путь куда надо копировать');
readln(outs);

assign(inf,ins);
reset(inf); {открыл на чтение}
assign(outf,outs);
rewrite(outf); {создал}

while not eof(inf) do begin {пока не конец исходного файла}
read(inf,b);
write(outf,b);
end;

close(inf);
close(outf);

Вот и все! Я не компилел так что мог где то ошибиться... если так то пиши...

302
18 апреля 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by pesicot
За конкретную??? Тебе походу весь код нужен.
Ну тогда "отктнься на спинку кресла" и слушай:

var inf,outf:file of byte;
ins,outs:string; {пути к файлам}
b:byte;

begin
writeLn('Введи путь копируемого файла');
readln(ins);
writeLn('Введи путь куда надо копировать');
readln(outs);

assign(inf,ins);
reset(inf); {открыл на чтение}
assign(outf,outs);
rewrite(outf); {создал}

while not eof(inf) do begin {пока не конец исходного файла}
read(inf,b);
write(outf,b);
end;

close(inf);
close(outf);

Вот и все! Я не компилел так что мог где то ошибиться... если так то пиши...


Классный неоптимизированный алгоритм. :-) На первых порах сойдет.

10K
18 апреля 2005 года
pesicot
11 / / 31.03.2005
Цитата:
Originally posted by Sagittarius
Классный неоптимизированный алгоритм. :-) На первых порах сойдет.



А что я должен париться на тему оптимизации? Человек я думаю это и спрашивал более сложное ему не к чему...

Хочешь узнать больше читай книги! :)

7.7K
22 апреля 2005 года
Elder386
38 / / 06.04.2005
Цитата:
Originally posted by Baikonur

Буду благодарен за конкретную помощь. Заранее спасибо.



Посмотри Help на процедуру BlockRead. Там, помнится, очень неплохой пример копирования был (в Borland Pascal)

253
08 мая 2005 года
Proger_XP
1.5K / / 07.08.2004
Есть объект TBufStream
uses Objects;
Этот объект может делать так(точнее это метод TStream)
 
Код:
SI := TBufStream.Create(....); // Input file
SO := ....; // Output file
 SO.CopyFrom(SI, SI.Size);
SO.Free;
SI.Free;

И все ))
Смотри справку если что
7.7K
11 мая 2005 года
Elder386
38 / / 06.04.2005
Цитата:
Originally posted by Proger_XP
Есть объект TBufStream
uses Objects;
Этот объект может делать так(точнее это метод TStream)
 
Код:
SI := TBufStream.Create(....); // Input file
SO := ....; // Output file
 SO.CopyFrom(SI, SI.Size);
SO.Free;
SI.Free;

И все ))
Смотри справку если что



Ты привел пример по TV (Turbo Vision), а вот стандартными средствами(пример из Help-а):

Код:
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.


Тут ParamStr(n) - n-й параметр при запуске программы. Можно просто заменить на строки.
253
13 мая 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by Elder386
Ты привел пример по TV (Turbo Vision)


Пример - OWL
Юзает не App, а Objects

Вообще, т.к Objects не очень большой юнит, его юзать лучше чем обычно, т.к это встроеные обьъекты и там уже и buffered IO есть, и наверное оптимизация

366
23 мая 2005 года
int
668 / / 30.03.2005
А ещё наверно можно вызвать досовскую copy =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог