Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с копированием файла... CopyFile 
V
    Опции темы
pomogite
  Дата 8.1.2007, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Есть программа которая должна копировать сама себя на рабочий стол, но я незнаю откуда её запустят...как написать можно чтобы она копировала сама себя из того места откуда её запустили...?
Код

CopyFile(??????? =(   , 'c:\брбрбр , False);


PM MAIL   Вверх
Sunvas
Дата 8.1.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Выбирай, что больше по душе:
application.ExeName
paramstr(0)



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
pomogite
Дата 8.1.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



пишу так 
Код

CopyFile(paramstr(0), 'c:\брбрбр', False);

Ошибка, я вообще мало что понимаю в программировании...  smile 
Но иногда пытаюсь что либо написать  smile  хотя редко получается дописать до конца...


Это сообщение отредактировал(а) pomogite - 8.1.2007, 00:38
PM MAIL   Вверх
Sunvas
Дата 8.1.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(pomogite @  8.1.2007,  00:37 Найти цитируемый пост)
Ошибка, я вообще мало что понимаю в программировании... 

Какая ошибка?
Вероятно такой директории не существует.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
pomogite
Дата 8.1.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Вот так пишу пишет что несовпадение типов 
Код

CopyFile(paramstr(0), 'D:\Documents and Settings\ann\Рабочий стол', False);

Директория существует!

Это сообщение отредактировал(а) pomogite - 8.1.2007, 01:23
PM MAIL   Вверх
Sunvas
Дата 8.1.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



CopyFile(pchar(paramstr(0)), 'D:\Documents and Settings\ann\Ðàáî÷èé ñòîë', False);


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
pomogite
Дата 8.1.2007, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



написала так как у ты посоветовал всё равно не копируется  smile 
В чём может быть проблема вроде-бы всё должно работать...
может я в Uses что нибудь не указала?
PM MAIL   Вверх
Sunvas
Дата 8.1.2007, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

Код

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).Handle, 
         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; 



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
pomogite
Дата 8.1.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



ну ты дал  smile 
Я с CopyFile то немогу скопировать а ты такие сложности приводишь...

PM MAIL   Вверх
Данкинг
Дата 8.1.2007, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Код

copyfile(pchar(application.ExeName),pchar('c:\'+application.ExeName),false);

 smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sunvas
Дата 8.1.2007, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(pomogite @  8.1.2007,  01:57 Найти цитируемый пост)
Я с CopyFile то немогу скопировать а ты такие сложности приводишь...

Это для разнообразия.
Цитата(Данкинг @  8.1.2007,  02:02 Найти цитируемый пост)
copyfile(pchar(application.ExeName),pchar('c:\'+application.ExeName),false);

Блин. Все. Иду спать.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
pomogite
Дата 8.1.2007, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Вот я дура  smile  всего то нужно было указать имя файла  smile 
Код

CopyFile(pchar(paramstr(0)), 'D:\Documents and Settings\ann\1.exe, False); 

Спасибо всем!!!  smile 
И всех с рождеством!!!  smile 

Это сообщение отредактировал(а) pomogite - 8.1.2007, 02:14
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.