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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать что файл уже скопирован??? 
:(
    Опции темы
WaReZMEN
Дата 20.11.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дело в том что CopyFile возвращает результат, до того, как файл фактически будет скопирован. Поэтому, мне нужно быть уверенным что процесс копирования успеет завершиться. Сеичас я в программе делаю так

Код

  CopyFile(Pchar(extractFilePath(application.ExeName)+
              '111.exe'), Pchar(SaveDialog1.FileName), false);
Sleep(100);


Тоесть ставлю Sleep(100); Возможно есть другой способ???  smile 
PM MAIL ICQ   Вверх
orthrus
Дата 20.11.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Можно реализовать процедуру CopyFile самому, т.е. написать новую процедуру которая будет копировать файлы. Таким образом можно будет проконтролировать процесс копирования файла.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
MetalFan
Дата 20.11.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



WaReZMEN, эээ. а разве CopyFile асинхронная функция?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
dumb
Дата 20.11.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



FlushFileBuffers
или
CreateFile+FILE_FLAG_NO_BUFFERING+копировать "руками"

а кстати, что ты такое делаешь, что у тебя "фактически не скопирован" получается? - флэшку выдергиваешь?.. для обычных потребителей(типа открыть,прочитать,итд) файл готов к пользованию сразу после выхода из CopyFile.
PM MAIL   Вверх
Alexeis
Дата 20.11.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



CopyFileEx - позволяет показать прогресс.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
WaReZMEN
Дата 21.11.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Alexeis, как????
PM MAIL ICQ   Вверх
Alexeis
Дата 21.11.2007, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(WaReZMEN @  21.11.2007,  01:19 Найти цитируемый пост)
Alexeis, как???? 

  А дока неа что?
Цитата(ms-help://borland.bds5/FileIO/fs/copyfileex.htm)

Copies an existing file to a new file, notifying the application of its progress through a callback function



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
WaReZMEN
Дата 21.11.2007, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо! А примерчика нету???  smile 

Это сообщение отредактировал(а) WaReZMEN - 21.11.2007, 01:43
PM MAIL ICQ   Вверх
ama_kid
Дата 21.11.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



WaReZMEN, в принципе, MSDN разжевывает данную тему достаточно подробно. Есть только одна тонкость: в CopyFileEx передается параметр pbCancel, который должен быть указателем на переменную Boolean  и эта переменная не должна быть локальной...
Вот кусок выдранного откуда-то кода:
Код
function CopyProgressRoutine(
  TotalFileSize,
  TotalBytesTransferred,
  StreamSize,
  StreamBytesTransferred: LARGE_INTEGER;
  dwStreamNumber,
  dwCallbackReason: DWORD;
  hSourceFile,
  hDestinationFile: THandle;
  lpData: Pointer): DWORD; stdcall; // Соглашение о передаче параметров
begin
 // lpData содержит указатель, переданный в CopyFileEx, здесь это
 // указатель на ProgressBar1

 // Если началось копирование нового файла, изменим максимальный
 // порог для указателя прогресса
 if dwCallbackReason = CALLBACK_STREAM_SWITCH then
   TProgressBar(lpData).Max := TotalFileSize.QuadPart;

 // Установим новую позицию
 TProgressBar(lpData).Position := TotalBytesTransferred.QuadPart;

 // Обновимся и копируем дальше
 Application.ProcessMessages;
 Result := PROGRESS_CONTINUE;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Ch1, Ch2   : PChar;
  ErrCode    : Integer;
begin
 FCancelled := False;
 Ch1 := PChar(Edit1.Text);
 Ch2 := PChar(Edit2.Text);
 if CopyFileEx(Ch1, Ch2,
               @CopyProgressRoutine, // Указатель на call-back функцию
               ProgressBar1, @FCancelled, COPY_FILE_RESTARTABLE) then
     MessageDlg('Процесс копирования успешно завершен!', mtInformation, [mbOk], -1)
       else
         begin
           ErrCode := GetLastError;
           MessageDlg('В процессе копирования возникли ошибки!'#13#13'Код ошибки: '+
             IntToStr(ErrCode)+#13'Описание: '+SysErrorMessage(ErrCode)+'.', mtError, [mbOk], -1);
         end;
 ProgressBar1.Position := 0;
end;



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


Опытный
**


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

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



ama_kid, спасибо!!! MSDN у меня нету.... Инсталяшка касячная...
PM MAIL ICQ   Вверх
Akella
Дата 21.11.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(WaReZMEN @  20.11.2007,  14:06 Найти цитируемый пост)
Дело в том что CopyFile возвращает результат, до того, как файл фактически будет скопирован.

не можеть такого быть

Добавлено через 15 секунд
зачем тогда вообще результат возвращять?

Добавлено через 1 минуту и 14 секунд
ведь ещё не известно, скопирован он или нет, а результат уже функция отдаёт? она и сама-то не знает, что за результата будет, что она отдаст?
PM MAIL   Вверх
ama_kid
Дата 21.11.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(WaReZMEN @  21.11.2007,  09:57 Найти цитируемый пост)
MSDN у меня нету....
Раз у тебя есть интернет (как-то ведь ты выходишь на форум smile) - значит у тебя есть и MSDN



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
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.0624 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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