C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Сложный метод копирования программы..., Сложный метод копирования программы...
Poof-poof
  Отправлено: 14.11.2003, 00:10


Не зарегистрирован







Допустим, я написал программу...
Скомпилил...
Запустил...
Во время её запуска нужно сделать следующее:
Низная названия этого *.exe файла,
Низная его размера...
Скопировать его в файл c:\file.exe (например)
Как это сделать? (если это вообще возможно)
exp
Отправлено: 14.11.2003, 01:48


Мастер участка

Группа: Участник
Сообщений: 304



Ориентировочный путь решения:
1) найти папку, в которой лежит сама программа
2) скопировать ее, куда нужно.

Да и почему не зная имени *.ехе-шника?
Application->ExeName;

Для пункта 1 где-то тут у меня было..., по-моему FAQ откуда-то... ага! вот.


CODE

void __fastcall TForm1::Button4Click(TObject *Sender)
{
Label1->Caption = Application->ExeName;
Label2->Caption = ParamStr(0);
Label3->Caption = GetCurrentDir();// текущая папка (может измениться!)
char ExeName[MAX_PATH];
GetModuleFileName(HInstance, ExeName, sizeof(ExeName));
Label4->Caption=ExeName;
}

В этих лабелах имя экзешника и папка его залегания

а для пункта 2
CopyFile(). У нее вроде 2 параметра: Путь к исходному файлу, который получен в пункте 1, и путь к файлу-копии.

Poof-poof
Отправлено: 14.11.2003, 02:31


Не зарегистрирован







Спасибо за подробный ответ!
Poof-poof
Отправлено: 14.11.2003, 03:55


Не зарегистрирован







Чёто не пашет...
Пишу: CopyFile(Application->ExeName,"c:\file.exe");
И ошибки с этим char-ом... Чё делать?
Roman
Отправлено: 14.11.2003, 09:05


Дежурный стрелочник

Группа: Участник
Сообщений: 78



Попробуй преобразовать в char...

Примерно так:

char file_r[34]; //Преобразование типов AnsiString->char
strcpy(file_r,file_Name.c_str());

В твоем случае:

char file_r[34]; //Преобразование типов AnsiString->char
strcpy(file_r, Application->ExeName.c_str());

CopyFile(file_r, "c:\\file.exe");

Должно работать... wink.gif
Poof-poof
Отправлено: 15.11.2003, 03:08


Не зарегистрирован







Спасибо! smile.gif
Всё работает!
Umka
  Отправлено: 15.11.2003, 15:11


Дежурный стрелочник

Группа: Участник
Сообщений: 32



Текущую папку правельнее узнавать так:
CODE

Labael1->Caption = ExtractFilePath(Application->ExeName);
cool.gif

Вернуться в Вопросы программирования в C++Builder