Работа с файлами
1. Как скопировать файл из одной директории в другую?
2. Как удалить из файла строку или вообще что-то удалить?
В доках, которые я просмотрел, в лучшем случае есть скудная косвенная инфа по второму вопросу.
Буду благодарен за конкретную помощь. Заранее спасибо.
Привет, парни. Есть два вопроса:
1. Как скопировать файл из одной директории в другую?
2. Как удалить из файла строку или вообще что-то удалить?
В доках, которые я просмотрел, в лучшем случае есть скудная косвенная инфа по второму вопросу.
Буду благодарен за конкретную помощь. Заранее спасибо.
1 - руками: Открыть тут на чтение, там на запись, и потихоньку, полегоньку...
2 - руками: открыть, скопировать в другой все что до и все что после.
За конкретную??? Тебе походу весь код нужен.
Ну тогда "отктнься на спинку кресла" и слушай:
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);
Вот и все! Я не компилел так что мог где то ошибиться... если так то пиши...
За конкретную??? Тебе походу весь код нужен.
Ну тогда "отктнься на спинку кресла" и слушай:
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);
Вот и все! Я не компилел так что мог где то ошибиться... если так то пиши...
Классный неоптимизированный алгоритм. :-) На первых порах сойдет.
Классный неоптимизированный алгоритм. :-) На первых порах сойдет.
А что я должен париться на тему оптимизации? Человек я думаю это и спрашивал более сложное ему не к чему...
Хочешь узнать больше читай книги! :)
Буду благодарен за конкретную помощь. Заранее спасибо.
Посмотри Help на процедуру BlockRead. Там, помнится, очень неплохой пример копирования был (в Borland Pascal)
uses Objects;
Этот объект может делать так(точнее это метод TStream)
SO := ....; // Output file
SO.CopyFrom(SI, SI.Size);
SO.Free;
SI.Free;
И все ))
Смотри справку если что
Есть объект TBufStream
uses Objects;
Этот объект может делать так(точнее это метод TStream)
SO := ....; // Output file
SO.CopyFrom(SI, SI.Size);
SO.Free;
SI.Free;
И все ))
Смотри справку если что
Ты привел пример по TV (Turbo Vision), а вот стандартными средствами(пример из Help-а):
{ 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-й параметр при запуске программы. Можно просто заменить на строки.
Ты привел пример по TV (Turbo Vision)
Пример - OWL
Юзает не App, а Objects
Вообще, т.к Objects не очень большой юнит, его юзать лучше чем обычно, т.к это встроеные обьъекты и там уже и buffered IO есть, и наверное оптимизация