Как получить surce dir? Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Как получить surce dir?

Post by midisa »

Как получить в строке имя текущей директории из которой запускается программа?
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как получить surce dir?

Post by Mojo »

midisa wrote:Как получить в строке имя текущей директории из которой запускается программа?

http://docs.wxwidgets.org/2.8.11/wx_wxdir.html
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

Вот что мне ответил на тот же вопрос t_Rex ссылу что-то не найду

Code: Select all

class MyApp : public wxApp
{
};
...
DECLARE_APP(MyApp); // Декларирование функции wxGetApp()
...

wxString app_filename = wxGetApp().argv[0];
wxString app_path = wxPathOnly(wxGetApp().argv[0]);
ага вот http://forums.wxwidgets.org/viewtopic.p ... etapp+argv
Last edited by borr_1 on Sat Jul 31, 2010 9:16 am, edited 1 time in total.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo »

borr_1 wrote:Вот что мне ответил на тот же вопрос t_Rex ссылу что-то не найду

Code: Select all

class MyApp : public wxApp
{
};
...
DECLARE_APP(MyApp); // Декларирование функции wxGetApp()
...

wxString app_filename = wxGetApp().argv[0];
wxString app_path = wxPathOnly(wxGetApp().argv[0]);
Есть стандартная функция

wxDir::GetName

wxString GetName() const

Returns the name of the directory itself. The returned string does not have the trailing path separator (slash or backslash).

http://docs.wxwidgets.org/2.8.11/wx_wxd ... dirgetname
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

И что она вернет директорию где лежит командный файл приложения?
тогда уже wxStandardPaths::GetDataDir надо пробовать.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo »

borr_1 wrote:И что она вернет директорию где лежит командный файл приложения?
тогда уже wxStandardPaths::GetDataDir надо пробовать.
Ну судя по документам - да, но я сделал так:

Code: Select all

 wxString name = wxGetCwd(); 
и получил тот же результат.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo »

С GetName код больше.... а результат тот же....

Code: Select all

void MainFrame::OnButnOKClick( wxCommandEvent& event )
{
	wxDir dir;
	wxString name;

	if ( dir.Open(wxGetCwd()) )
	{
		name = dir.GetName();
		m_staticText->SetLabel(name);
	}
	else
		m_staticText->SetLabel(wxT("Не могу открыть директорию"));

}
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo »

borr_1 wrote: тогда уже wxStandardPaths::GetDataDir надо пробовать.
Не, она вернет, глобальную директорию стандартных каталогов программ. т.е. usr/local/share В винде повидимому Program Files

А для того, что бы вернуть фактическую директорию (например, из рабочего каталога с проектами) можно использовать wxStandardPaths::GetExecutablePath()

Code: Select all


wxStandardPaths dir;	
m_staticText->SetLabel(dir.GetExecutablePath());

Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
User avatar
T-Rex
Moderator
Moderator
Posts: 1249
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex »

Вроде то ли Джулиан то ли кто-то еще раньше выпускал утилитку wxCRP (сейчас есть на сорсфорже), так вот там в репозитории была классная функция получения пути исполняемого файла, учитывающая все варианты. Думаю есть смысл там поковыряться.
midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa »

wxStandardPaths dir;
m_staticText->SetLabel(dir.GetExecutablePath());

Это самое правильное решение т.к. это доступно в любой части программы, а инициализация происходит в момент старта программы.
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

midisa я конечно не модератор и это не мое дело... но как говорится пешеход тоже участник. Ты ветку помечать как решенную будешь или нет и не только эту. И не промахнись с accepted answer он наверно у Mojo за 31-е число.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa »

borr_1 wrote:midisa я конечно не модератор и это не мое дело... но как говорится пешеход тоже участник. Ты ветку помечать как решенную будешь или нет и не только эту. И не промахнись с accepted answer он наверно у Mojo за 31-е число.
1. Так решенных вопросов НЕТ. Есть вопросы, а ответы в воздухе висят. Из всех вопросов только один был закрыт. + этот еще
2. Как помечать что тему закрываем? После закрытия они куда деваются? Мне лично мои темы нужны как справочные материалы. Я их неоднократно просматриваю т.к. в голове ничего не держу.
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 »

там где quote accept кнопочку видишь (в правом верхнем углу каждого поста) чей больше понравился в том по accepted answer и жми
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse
Post Reply