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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2007, 16:24   #11
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Злость

Да чтож такое???
Зделал так прога пока не скопирует всё сама себя и комп вешает бллинн!!!

Цитата:
function DirectorySize(SourceDir: string): Integer;
var
F: File of Byte;
SR: TSearchRec;
I: Integer;
begin
Result := 0;
SourceDir := IncludeTrailingBackslash(SourceDir) ;
If DirectoryExists(SourceDir)
then
begin
I := FindFirst(SourceDir + '*', faAnyFile, SR);
Try
While I = 0 do
begin
If (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..')
then
begin
If SR.Attr = faDirectory
then
Result := Result + DirectorySize(SourceDir + SR.Name)
else
begin
AssignFile(F, SourceDir + SR.Name);
Try
Reset(F);
Result := Result + FileSize(F);
Finally
CloseFile(F);
end;
end;
end;
I := FindNext(SR);
end;
Finally
FindClose(SR);
end;
end;
end;

procedure CopyFileWithProgressBar(Source, Destination: string);
var
FromF, ToF: File of Byte;
Buffer: Array[0..4096] of Char;
NumRead: Integer;
FileLength: Longint;
begin
AssignFile(FromF, Source);
Reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
With Form1.ProgressBar2 do
begin
Try
Min := 0;
Max := FileLength;
While FileLength > 0 do
begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
Form1.ProgressBar1.Position := Form1.ProgressBar1.Position + NumRead;
end;
Finally
CloseFile(FromF);
CloseFile(ToF);
end;
Position := 0;
end;
end;

function FullDirectoryCopy(SourceDir, TargetDir: string; StopIfNotAllCopied,
OverWriteFiles: Boolean): Boolean;
var
SR: TSearchRec;
I: Integer;
begin
Result := False;
SourceDir := IncludeTrailingBackslash(SourceDir) ;
TargetDir := IncludeTrailingBackslash(TargetDir) ;
If DirectoryExists(SourceDir)
then
If ForceDirectories(TargetDir)
then
begin
I := FindFirst(SourceDir + '*', faAnyFile, SR);
Try
While I = 0 do
begin
If (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..')
then
begin
If SR.Attr = faDirectory
then
Result := FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME,
StopIfNotAllCopied, OverWriteFiles)
else
If not (not OverWriteFiles and FileExists(TargetDir + SR.Name))
then
CopyFileWithProgressBar(SourceDir + SR.Name, TargetDir + SR.Name)
else
Result := True;
If not Result and StopIfNotAllCopied
then
exit;
end;
I := FindNext(SR);
end;
Finally
FindClose(SR);
end;
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ProgressBar1.Max := DirectorySize('c:\editor');
If FullDirectoryCopy('editor\', 'c:\editor', False, False)
then
ShowMessage('Âñ¸ ñêîïèðîâàíî.');
end;

end.
Што делать????
Хелппппппппппп!!!!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 17.10.2007, 16:31   #12
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

application.ProcessMessages;
вставляй в то место где происходит наиболее ресурсоемкая операция
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 17.10.2007, 17:55   #13
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Всёровно всё глючит!!!!!!!!
Чтот нетак делаю????

Цитата:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Application.ProcessMessages;
ProgressBar1.Max := DirectorySize('c:\editor');
If FullDirectoryCopy('editor\', 'c:\editor', False, False)
then
ShowMessage('Âñ¸ ñêîïèðîâàíî.');
end;
С уважением Volkogriz!!!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 17.10.2007, 23:09   #14
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Сообщение

Цитата:
Сообщение от Volkogriz Посмотреть сообщение
AlDelta
Я поменял флаги но не выходит то что я хочу!!!
Мне надо что бы при копированьи коталога не выводилось "этот файл уже сушиствует" А просто его пирипиала!
Я пишу инстолятор к игре! .....
Какие флаги ты использовал?

Флаги к структуре типа TSHFileOpStruct
FOF_ALLOWUNDO Если возможно, сохраняет информацию для возможности UnDo.
FOF_CONFIRMMOUSE Не реализовано.
FOF_FILESONLY Если в поле pFrom установлено *.*, то операция
будет производиться только с файлами.
FOF_MULTIDESTFILES Указывает, что для каждого исходного
файла в поле pFrom указана своя директория - адресат.
FOF_NOCONFIRMATION Отвечает "yes to all" на все запросы в ходе опеации.
FOF_NOCONFIRMMKDIR Не подтверждает создание нового каталога,
если операция требует, чтобы он был создан.
FOF_RENAMEONCOLLISION В случае, если уже существует файл
с данным именем, создается файл с именем "Copy #N of..."
FOF_SILENT Не показывать диалог с индикатором прогресса.
FOF_SIMPLEPROGRESS Показывать диалог с индикатором прогресса,
но не показывать имен файлов.
FOF_WANTMAPPINGHANDLE Вносит hNameMappings элемент.
Дескриптор должен быть освобожден функцией SHFreeNameMappings.
fAnyOperationsAborted
Принимает значение TRUE если пользователь прервал любую файловую
операцию до ее завершения и FALSE в ином случае.

Может не стоит изобретать велосипед (если только не в учебных целях ), есть много готовых инсталяторов на любой вкус // лично мое мнение

Врожденная смекалка русско-украинских изобретателей не знает границ, именно поэтому их высоко ценят и хорошо оплачивают только заграницей.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 18.10.2007, 01:08   #15
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Радость

Доброе время суток!!!
С InnoSetup я довольно долго работаю!!!!
Но вот здесь мне бы хотелось чтото своё!!!
Вот это мой финал Видио, сплеш,слайд шоу,музыка и т.д!!!
Этот инстолятор я писал для игры Emperor: Battle for Dune!!!
Может кому и понадобится!!!
Забирайте скрипт каму нужно вмести с библиотеками!!!
А маня выручите пожалусто по моей теме!!!
С уважением Volkgriz!!!
Вложения
Тип файла: rar InnoSetup_скрипт.rar (221.9 Кб, 15 просмотров)
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 18.10.2007, 07:57   #16
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Может проще алгоритм работы поменять в программе. Например ищещь копируемый файл в директории, удаляешь такой же в той куда копируешь если он там есть и затем уже копируешь.
Трофимов Александр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление строки копированием... ГОСЕАН БД в Delphi 3 13.08.2008 10:32
Помогите пожалуйста с копированием файла ==Spider== Общие вопросы Delphi 2 21.05.2008 10:54
Проблема с копированием Ronni10 Операционные системы общие вопросы 1 29.04.2008 09:39
картинки из каталога Var17 PHP 2 06.03.2008 22:05
Копирование КАТАЛОГА Рустам Общие вопросы Delphi 10 13.10.2007 12:22