Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы [D7, Win2k]


Nata ©   (2004-08-13 16:54:00) 

Здравствуйте друзья!!!…опять у меня проблема…во общем я использую findfirst нахожу нужный файл а потом копирую его (copyfiles) все у меня гуд…в чем же вопрос спросите вы????…;) мне нужно что бы моя программа показывала сколько кб или мб она скопировала???? Как мне определить размер файла и как мне определить скока скачало???? Плз помогите….всех люблю….


Fay   (2004-08-13 22:56:00) [1]

2 Vetek_2   (13.08.04 22:18) [11]
ReadFile/WriteFile. И сразу Щастье.


GuAV   (2004-08-13 22:21:00) [2]


> - у меня 98 винда ..

У меня тоже.

> CopyFileEx не пашет ..

Удивил ;-)

> обидно ...

Нефиг. Ставь ХР.


Vetek_2   (2004-08-13 22:18:00) [3]

- у меня 98 винда .. CopyFileEx не пашет .. обидно ...


Nata   (2004-08-13 17:45:00) [4]

СПАСИБО!!!!!!!ВСЕ КРУТО!!!!ВСЕХ ЛЮБЛЮ!!!


GuAV   (2004-08-13 17:34:00) [5]


>    LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the
> callback function

@CopyProgressRoutine, где CopyProgressRoutine объявлена так:

function CopyProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: Int64; dwStreamNumber, dwCallbackReason: LongWord; hSourceFile, hDestinationFile: THandle; lpData: Pointer): LongWord; stdcall;

эта процедура будет периодически вызываться

lpData - указатель тот самый, что передается в CopyProgressRoutine.
pbCancel - указатеь на LongBool - признак отмены.
dwCopyFlags - комбинация флагов см. ниже


begin...end   (2004-08-13 17:27:00) [6]

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=2133


Nata   (2004-08-13 17:22:00) [7]


> GuAV ©   (13.08.04 17:14) [5]
> CopyFileEx - параметр lpProgressRoutine

открыла хелп

BOOL CopyFileEx(

   LPCWSTR lpExistingFileName, // pointer to name of an existing file
   LPCWSTR lpNewFileName, // pointer to filename to copy to
   LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the callback function
   LPVOID lpData, // to be passed to the callback function
   LPBOOL pbCancel, // flag that can be used to cancel the operation
   DWORD dwCopyFlags // flags that specify how the file is copied
  );

вообщем я так и не поняла я понела только первые два параметра

CopyFileEx(c:\1.rar,d:\1.rar,?,?,?,?) а для чего остальные 4 не поняла...можешь примерчик с поясненицем написать?


Nata   (2004-08-13 17:17:00) [8]


> Не совсем понятна задача .. если нужно копировать ОДИН файл
> - и показывать его размер, то :
>
> ФайловаяПеременная.Size;

да!!!! теперь я могу определить размер ФайловаяПеременная.Size но как мне определить сколько я уже перекачал????????


GuAV   (2004-08-13 17:14:00) [9]

CopyFileEx - параметр lpProgressRoutine


begin...end   (2004-08-13 17:11:00) [10]


> Nata   (13.08.04 16:54)


> Как мне определить размер файла

FileSizeByName()


Андрей Сенченко   (2004-08-13 17:06:00) [11]

Не совсем понятна задача .. если нужно копировать ОДИН файл - и показывать его размер, то :

ФайловаяПеременная.Size;

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

TFileStream.Write
TFileStream.Read


Nata   (2004-08-13 17:02:00) [12]


> ssk ©   (13.08.04 16:57) [1]

ну и как я увижу сколько скапировалось???
label1.caption:=result?


ssk   (2004-08-13 16:57:00) [13]

попробуй так:

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо