Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.146.255.127] |
|
Сообщ.
#1
,
|
|
|
Как узнать путь к ехе-файлу из которого было запущено приложение?? И еще как объясните как работать с файлами заголовками *.h.
|
Сообщ.
#2
,
|
|
|
ну первое - это юзай argv[0] - это путь с именем файла, который запустился. Простенький пример:
Цитата #include <stdio.h> void main( int argc, /* Number of strings in array argv */ char *argv[], /* Array of command-line argument strings */ char **envp ) /* Array of environment variable strings */ { int count; /* Display each command-line argument. */ printf( "\nCommand-line arguments:\n" ); for( count = 0; count < argc; count++ ) printf( " argv[\%d] \%s\n", count, argv[count] ); /* Display each environment variable. */ printf( "\nEnvironment variables:\n" ); while( *envp != NULL ) printf( " \%s\n", *(envp++) ); return; } А насчет хеадеров... Может в книжку заглянуть, а? Если писал на паскале, то хеадеры - это типа как юниты, только вместо uses пишешь #include. |
Сообщ.
#3
,
|
|
|
Можно и так:
AnsiString Name,Path,Ext,NameTmp,TmpPath,TmpPath2; char buf[MAX_PATH]; if(GetModuleFileName(NULL,buf,1024)==NULL) { Application->MessageBox(buf,"Error",MB_OK+MB_ICONERROR); return 0; } Name=ExtractFileName(buf); Path=ExtractFilePath(buf); Ext=ExtractFileExt(Name); |
Сообщ.
#4
,
|
|
|
Хыч! А под ДОСом-то так не будет работать
|
Сообщ.
#5
,
|
|
|
А это пускай он сам определит (под чем) !
|
Сообщ.
#6
,
|
|
|
Цитата klep, 19.02.02, 20:42:12 А это пускай он сам определит (под чем) ! Да без проблем. Первый примет под DOS или консольное приложение вин, второй тока Builder. |
Сообщ.
#7
,
|
|
|
ЧТО-ТО ВЫ не то говорите, товарищи кодеры. Всю жизнь юзал __argc и __argv в VC++ (из stdlib.h) и в GUI всё пахало!
|
Сообщ.
#8
,
|
|
|
Цитата Codemaster, 20.02.02, 05:33:24 ЧТО-ТО ВЫ не то говорите, товарищи кодеры. Всю жизнь юзал __argc и __argv в VC++ (из stdlib.h) и в GUI всё пахало! Сомневаюсь я что в Builder это будет "пахать". |
Сообщ.
#9
,
|
|
|
А зря, зря, товарищи! Ведь использование функций C runtime означает по меньшей мере переносимость.
Всё работает и в VC++, и в Builder. Вот тест для второго: Цитата #include <vcl.h> #include <stdlib.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = __argv[0]; } //--------------------------------------------------------------------------- Выводит путь к EXE, как и должно быть. __argc, как обычно, количество параметров командной строки + 1 для пути, __argv[n] - путь и параметры. |