Копирование файлов в Винде
Модератор: Модераторы
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
Приблизительно так:
Код: Выделить всё
var
src,dst:file of byte;
b:byte;
begin
AssignFile(src,'srcfile'); // источник
AssignFile(dst,'dstfile'); // приемник
reset(src);
rewrite(dst);
while not(eof(src)) do
begin
read(src,b);
write(dst,b);
end;
CloseFile(src);
CloseFile(dst);
end;
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
-
Nikolay
Код: Выделить всё
var Source, Dest: TStream;
begin
Source:=TFileStream.Create...
Dest:=TFileStream.Create...
Dest.CopyFrom(Source, Source.Size);
...
end;
Если маленький:
var F: TMemoryStream;
begin
F:=TMemoryStream.Create;
F.LoadFromFile(SourceFileName);
F.SaveToFile(DestFileName);
end;
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
-
Джентельмен
- постоялец
- Сообщения: 162
- Зарегистрирован: 16.10.2005 10:47:26
- Откуда: Украина Донбасс Краматорск
- Контактная информация:
есть вот такой интересный код:
я им пользуюс в линуксе...
пробывал собрать его в винде...
там надо подключать библиотеку Linux или OldLinux а в винде её нет...
может кто-то подскажет как заставить эту функцию работать в винде?
и есть еще книга хорошая...
всем рекомендую: <a href='http://freepascal.ru/download/book/sysfpc.zip' target='_blank'>http://freepascal.ru/download/book/sysfpc.zip</a>
<span style='color:red'><span style='font-size:8pt;line-height:100%'>рекоменуется оформлять исходные тексты наглядно, это не очень сложно
см. <a href='http://freepascal.ru/rules/forum/' target='_blank'>правила форума</a> п.3 раздела Рекомендации</span></span>
Код: Выделить всё
Uses
OldLinux;
function copyfile(name1, name2: string):integer;
const
BUFSIZE=512;
PERM=0644;
var
infile, outfile: integer;
nread: longint;
buffer: array [0..BUFSIZE-1] of byte;
begin
infile := fdopen (name1, Open_RDONLY);
if infile=-1 then
begin
copyfile:=-1;
exit;
end;
outfile := fdopen (name2, Open_WRONLY or Open_CREAT or Open_TRUNC, octal(PERM));
if outfile=-1 then
begin
fdclose(infile);
copyfile:=-2;
exit;
end;
nread := fdread (infile, buffer, BUFSIZE);
while nread > 0 do
begin
if fdwrite (outfile, buffer, nread) < nread then
begin
fdclose (infile);
fdclose (outfile);
copyfile:=-3;
exit;
end;
nread := fdread (infile, buffer, BUFSIZE);
end;
fdclose (infile);
fdclose (outfile);
if (nread = -1) then
copyfile := -4
else
copyfile := 0;
end;
я им пользуюс в линуксе...
пробывал собрать его в винде...
там надо подключать библиотеку Linux или OldLinux а в винде её нет...
может кто-то подскажет как заставить эту функцию работать в винде?
и есть еще книга хорошая...
всем рекомендую: <a href='http://freepascal.ru/download/book/sysfpc.zip' target='_blank'>http://freepascal.ru/download/book/sysfpc.zip</a>
<span style='color:red'><span style='font-size:8pt;line-height:100%'>рекоменуется оформлять исходные тексты наглядно, это не очень сложно
см. <a href='http://freepascal.ru/rules/forum/' target='_blank'>правила форума</a> п.3 раздела Рекомендации</span></span>
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
STAKANOV спасибо работает, только медленно!!!
да, это самый медленный способ :rolleyes:
копировать надо не по-байтно, а использовать буфер, можна даже сначала весь файл в память считать, а потом записать
см. в сторону - <a href='http://freepascal.ru/wiki/index.php/BlockRead' target='_blank'>BlockRead</a> и <a href='http://freepascal.ru/wiki/index.php/BlockWrite' target='_blank'>BlockWrite</a>
о! в описании <a href='http://freepascal.ru/wiki/index.php/BlockRead' target='_blank'>BlockRead</a> как раз классический пример
я им пользуюс в линуксе... пробывал собрать его в винде...
обрати внимание, алгоритм почти такой же как я показал (вообщето это во многих учебниках встречается), только я использую фукнции которые не зависят от ОС
-
CoverStory
- новенький
- Сообщения: 95
- Зарегистрирован: 09.02.2006 17:21:42
- Откуда: Семипалатинск
STAKANOV спасибо, еще раз очень помог, буду теперь постоянно обращаться к этому мануалу.
мануал правда не доделан
Там на странице переводы - <a href='http://freepascal.ru/wiki/' target='_blank'>http://freepascal.ru/wiki/</a> есть ссылки на английские оригиналы
