Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.10.2008, 09:20   #1
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

Доброго времени суток! Уважаемые у меня к вам вопрос. Как скопировать файл? Кроме как CopyFile. В моем случае он не работает. Большое спасибо

Просто надо передать файл в другую папку

Код:
CopyFile(PChar(GetCurrentDir+'blablabla.exe'),PChar(GetCurrentDir+'Data\Item\blablabla.exe'),true);
Что тут я зделал не так?

Последний раз редактировалось Stilet; 14.09.2009 в 13:48.
Killbrum вне форума
Старый 10.10.2008, 12:15   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Из моего справочника, выложенного на форуме для свободного скачивания:
Цитата:
Копирование файла разными методами

Вот простенький пример:

procedure TForm2.Button2Click(Sender: TObject);
var s,t: TFileStream;
begin
s:=TFileStream.Create('D:\Full_DB_C onvert_Enterprise_v2.12.rar',fmOpen Read);
try
t:=TFileStream.Create('C:\Full_DB_C onvert_Enterprise_v2.12.rar',fmOpen Write or fmCreate);
try
t.CopyFrom(s,s.Size);
finally
t.Free;
end;
finally
s.Free;
end;
end;

*********************************** **********************************

А вот еще кучка методов:

Копирование методом TurboPascal

Type
TCallBack=procedure (Position,Size:Longint); {Для индикации процесса копирования}
procedure FastFileCopy(Const InfileName, OutFileName: String; CallBack: TCallBack);
Const BufSize = 3*4*4096; { 48Kbytes дает прекрасный результат }
Type
PBuffer = ^TBuffer;
TBuffer = array [1..BufSize] of Byte;
var
Size : integer;
Buffer : PBuffer;
infile, outfile : File;
SizeDone,SizeFile: Longint;
begin
if (InFileName <> OutFileName) then
begin
buffer := Nil;
AssignFile(infile, InFileName);
System.Reset(infile, 1);
try
SizeFile := FileSize(infile);
AssignFile(outfile, OutFileName);
System.Rewrite(outfile, 1);
try
SizeDone := 0; New(Buffer);
repeat
BlockRead(infile, Buffer^, BufSize, Size);
Inc(SizeDone, Size);
CallBack(SizeDone, SizeFile);
BlockWrite(outfile,Buffer^, Size)
until Size < BufSize;
FileSetDate(TFileRec(outfile).Handl e,
FileGetDate(TFileRec(infile).Handle ));
finally
if Buffer <> Nil then Dispose(Buffer);
System.close(outfile)
end;
finally
System.close(infile);
end;
end else
Raise EInOutError.Create('File cannot be copied into itself');
end;

Копирование методом потока

Procedure FileCopy(Const SourceFileName, TargetFileName: String);
Var
S,T : TFileStream;
Begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;

Копирование методом LZExpand

uses LZExpand;

procedure CopyFile(FromFileName, ToFileName : string);
var
FromFile, ToFile: File;
begin
AssignFile(FromFile, FromFileName);
AssignFile(ToFile, ToFileName);
Reset(FromFile);
try
Rewrite(ToFile);
try
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)<0 then
raise Exception.Create('Error using LZCopy')
finally
CloseFile(ToFile);
end;
finally
CloseFile(FromFile);
end;
end;

Копирование методами Windows

uses ShellApi; // !!! важно

function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var F : TShFileOpStruct;
begin
F.Wnd := 0; F.wFunc := FO_COPY;
FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result:=ShFileOperation(F) = 0;
end;

// пример копирования
procedure TForm1.Button1Click(Sender: TObject);
begin
if not WindowsCopyFile('C:\UTIL\ARJ.EXE', GetCurrentDir) then
ShowMessage('Copy Failed');
end;
mihali4 вне форума
Старый 10.10.2008, 17:04   #3
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

Большое спасибо!
Killbrum вне форума
Старый 12.10.2008, 17:07   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Killbrum Посмотреть сообщение
Что тут я зделал не так?
Результат GetCurrentDir без слеша в конце
Somebody вне форума
Старый 14.10.2008, 01:21   #5
injhdc
Заблокирован
 
Регистрация: 27.09.2008
Сообщений: 6
По умолчанию

Killbrum Если не умеешь пользоваться Debuger, создай 2 переменные и заполни их тем что ты пытаешься передать функции копирования.. и выведи каждую переменную простой функцией MessageBox так будешь видеть что у тебя делается в этих переменных
injhdc вне форума
Старый 12.08.2009, 11:10   #6
cemen13
Пользователь
 
Регистрация: 21.07.2009
Сообщений: 19
По умолчанию

Всем привет! помогите мне нужно копировать файлы из директорий но не все а последние. Заранее все сп-бо!
cemen13 вне форума
Старый 12.08.2009, 11:21   #7
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

Функция FileAge возвращает дату создания файла, выбирайте последние и копируйте.
Snoopy вне форума
Старый 12.08.2009, 11:25   #8
cemen13
Пользователь
 
Регистрация: 21.07.2009
Сообщений: 19
По умолчанию

Сп-бо попробую!

да еще забыл сказать файлы с разными именами и в разных директориях

Последний раз редактировалось Stilet; 14.09.2009 в 13:49.
cemen13 вне форума
Старый 12.08.2009, 13:21   #9
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

Код:
function p(ss:string):TStringList;
var
sr:TSearchRec;
R:word;
S:TStringList;
begin
ChDir(ss);
S:=TStringList.Create;
R := FindFirst ('*.txt',faAnyFile,sr);
  While r=0 do
          Begin
         if FileDateToDateTime(FileAge(ss+Sr.Name))<>Now then
            begin
              R:=FindNext(sr);
              S.Add(Sr.Name);
            end;
         end;
Result:=S;
end;
Snoopy вне форума
Старый 07.09.2009, 17:09   #10
cemen13
Пользователь
 
Регистрация: 21.07.2009
Сообщений: 19
По умолчанию

а куда же она все эти файлы скопировала где смотреть?
cemen13 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файла и progressbar VenMaster Компоненты Delphi 8 26.05.2008 21:44
Авто копирование файла с носителей и на носитель experts91 Общие вопросы Delphi 7 04.10.2007 17:27
Копирование имени файла greengeneral Общие вопросы Delphi 3 10.09.2007 14:11
Два XL файла, данные 1-го файла являются частью другого в формуле 2-го Кот Microsoft Office Excel 2 14.08.2007 16:56