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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2013, 11:42   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию Проблема с определением пути bat-ником

Есть код:

Код:
procedure TForm1.FormDestroy(Sender: TObject);
var f: textFile;
  FileName: string;
begin
  FileName := changefileext(paramstr(0), '.bat');
  assignFile(f, FileName);
  rewrite(f);
  writeln(f, ':1');
  writeln(f, format('Erase "%s"', [paramstr(0)]));
  writeln(f, format('If exist "%s" Goto 1', [paramstr(0)]));
  writeln(f, format('Erase "%s"', [FileName]));
  closefile(f);
  ShellExecute(Handle, 'Open', PChar(FileName), nil, nil, sw_hide);
end;
Задача кода - при закрытии программы удалять её exeшник.

Проблема: задача кода выполняется наполовину. ЕХЕ файл удаляется, только если он расположен по адресу, не содержащему русские названия.

Например если ехе будет по адресу C:\homewrk\unit1.exe - то при закрытии ехе удалится.

А если ехе будет по адресу C:\homewrk\Вася\unit1.exe - то ехе файл не удалится.

Как решить эту проблему? (как исправить код вверху, чтобы создваемый батник удалял ехе независимо от его пути)
Fakov вне форума Ответить с цитированием
Старый 05.02.2013, 11:55   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Проще всего не использовать полный путь.
Somebody вне форума Ответить с цитированием
Старый 05.02.2013, 11:56   #3
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

возможно. но как?)))
Fakov вне форума Ответить с цитированием
Старый 05.02.2013, 11:59   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
%~d0
cd %~p0
1:
del unit1.exe
if exist unit1.exe goto 1
del %0
Somebody вне форума Ответить с цитированием
Старый 05.02.2013, 12:22   #5
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

эм. но если Unit1.exe переименуют например в 1Unit.exe???

Плучается батник не найдет его и не сможет удалить. Как этого избежать?
Fakov вне форума Ответить с цитированием
Старый 05.02.2013, 13:13   #6
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

все, проблема полностью решена, возможность переименования тоже исключена.
Fakov вне форума Ответить с цитированием
Старый 05.02.2013, 14:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в BAT-никах русские буквы в кодировке DOS (она же 866. она же OEM), Delphi (как Win32 программа работает с кодировкой, установленной в локали - для русской локали это кодировка Win -1251, она же - ANSI).
нужно было всего навсего перекодировать ANSI -> OEM и всех делов!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена bat-ником Cardsharp Помощь студентам 0 05.06.2012 22:43
Проблема с определением кодировки ZePr Общие вопросы Delphi 8 08.01.2012 15:03
Проблема с определением процента загрузки процессора Jogik_86 Помощь студентам 0 17.12.2009 03:28
Проблема с определением строки в макросе Евгений(mE) Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.11.2008 11:40
проблема с определением внешнего ключа! veter_s_morya SQL, базы данных 1 26.06.2008 18:37