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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удалить папку, из которой запущена прога! 
:(
    Опции темы
h2o
Дата 14.11.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня встала такая проблема: Я из папки запускаю фаил, который потирает всё в этой папке, а потом и эту папку тоже. точнее он должен это делать! а не делает.

Поэтому я нашёл код, который при запуске этого файла, копирует его во временную папку и перезапускает! Всё вроде-бы круто, да вот только рабочим каталогом остаётся та папка из которой я изначально запускал файлик!!! и поэтому никаким способом не удалить эту папку пока не закроешь всё что вызвано программой!

Я где-то видел код который позволяет изменить рабочий каталог программы, тоесть я запускаю файл, копирую его куда-нибудь, и указываю ему рабочий каталог тот, куда я его скопировал и перезапускаю програмно, и получается что я могу сделать с первой папкой всё что захочу!!! Но вот никак ни где не могу этого кода найти!

Или есть другой способ удалить папку, из которой я запустил свой фаил?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Snowy
Дата 14.11.2005, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


Шустрый
*


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

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



не страдай - запусти дубль во временной папке, пусти ей sendmessage с путем папки которую удалить нужно, и закрой программу в нужной папке. Прога во временной папке ждет сообщения, потом еще 100мсек чтобы та копия смогла закрыться и удаляешь каталог, указанный в сообщении. Или я неправильно понял?
PM MAIL   Вверх
h2o
Дата 15.11.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



AKN правильно, почти. но тот фаил что во временной папке, его рабочим каталогом считается та папка, которую хочу удалить, из которой изначально я запустил первый фаил!

тоесть получается есть папка ххх, в которой есть фаил ххх.ехе, я его запускаю оттуда, он копирует себя во временную папку и перезапускает оттуда! уже этим файлом во временной папке я могу удалить все файлы в папке ххх, но вот саму папку ххх - нет! даже если я из файла во временной папке создам батник, он тоже не сможет удалить папку ххх! а всё это потому что и у первого файла ххх.ехе в папке ххх и у файла ххх.ехе во временной папке и у батника, созданного в любой папке - ОДИН РАБОЧИЙ КАТАЛОГ - ххх!!!

так что вот в чём вся фишка! я незнаю, может есть способ скоировать фаил во временную папку, и сказать ему, вот твоя рабочая папка, та куда я тебя копирую, а не та из которой я тебя копирую!!! и перезапустить.

если что то вот код из drkb.chm от исходники.ру и винград.ру, который копирует фаил во временную папку и перезапускает его!
Код

//Копирование программы во временный каталог 

program Setup; 
uses 
  Windows, 
  SysUtils; 
const 
  ReRunParameter = '/install_from_temp_directory'; 
var 
  TempPath: array [0..MAX_PATH] of Char; 
  SrcPath: String; 
begin 
  if ParamStr(1) = ReRunParameter then 
    SrcPath := ParamStr(2) 
  else 
    if GetDriveType(PChar(ParamStr(0)[1] + ':\')) = DRIVE_REMOVABLE then 
    begin 
      // Если программа была запущена без ключа и с дискеты, то 
      // копируем её во временный каталог и перезапускам 
      // Текущее приложение завершаем. 
      GetTempPath(MAX_PATH, TempPath); 
      // Добавлям к пути временного каталога символ '\', если его там нет 
      if (StrLen(TempPath) > 0) and (TempPath[StrLen(TempPath)] <> '\') then 
        StrCat(TempPath, '\'); 
      // Копируем файл через вызов функции CopyFile из WinAPI 
      CopyFile(PChar(ParamStr(0)), PChar(String(TempPath) + ExtractFileName(ParamStr(0))), False); 
      // Запускаем файл с двумя параметрами 
      WinExec(PChar(String(TempPath) + ExtractFileName(ParamStr(0)) + ' ' + 
        ReRunParameter + ' ' + ExtractFilePath(ParamStr(0))), CmdShow); 
      Exit; 
    end 
    else 
      SrcPath := ExtractFilePath(ParamStr(0)); 
  // Здесь начинается программа инсталляции 
  // Переменная SrcPath показывает нам, откуда надо копировать файлы 
end.  

ну это так, навсякий случай.

ну и как быть?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Alexeis
Дата 15.11.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Рабочую папку можно установить функцией SetCurrentDir


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

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

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


Бывалый
*


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

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



alexeis1
тоесть в такой последовательности:
1. создаём папку
2. копируем туда фаил
3. запускаем его
4. SetCurrentDir

и всё?
или как-то по друому надо?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Alexeis
Дата 15.11.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



вроде так.
SetCurrentDir установит рабочей папкой ту которая будет указана
в качестве параметра


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

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

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


Бывалый
*


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

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



точно! все работает! как все просто оказалось!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
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.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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