GetCurrentDirectory - unsupported...
От: godwizard Россия  
Дата: 05.04.04 10:41
Оценка:
У меня PocketPC WinM2003
Решил написать программу на С# в Visual Studio 2003.
Создал проект специально для мобильного устройства.
при вызове метода Directory.GetCurrentDirectory() выдает exception.
Почему?
Best regards
Re: GetCurrentDirectory - unsupported...
От: V.Petrovski Беларусь  
Дата: 05.04.04 10:45
Оценка:
А какой exception? Может выдаёт UnauthorizedAccessException?
... << RSDN@Home 1.1.3 stable Ночные Снайперы — Черное солнце>>
Re[2]: GetCurrentDirectory - unsupported...
От: godwizard Россия  
Дата: 05.04.04 11:01
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

VP>А какой exception? Может выдаёт UnauthorizedAccessException?


Нет. UnsupportedException
Best regards
Re: GetCurrentDirectory - unsupported...
От: Аноним  
Дата: 05.04.04 11:42
Оценка: +1
Здравствуйте, godwizard, Вы писали:

G>У меня PocketPC WinM2003

G>Решил написать программу на С# в Visual Studio 2003.
G>Создал проект специально для мобильного устройства.
G>при вызове метода Directory.GetCurrentDirectory() выдает exception.
G>Почему?

RTFM

Из МСДН:

.NET Compact Framework Platform Note: The .NET Compact Framework does not support GetCurrentDirectory because current directory functionality is not used in devices running Windows CE .NET.

В Windows СЕ просто нет понятия "текущая директория"
Re[2]: GetCurrentDirectory - unsupported...
От: bkat  
Дата: 05.04.04 13:34
Оценка:
Здравствуйте, Аноним, Вы писали:


А>В Windows СЕ просто нет понятия "текущая директория"


Подтверждаю...
Если писать на C++, то "текущая директория" тоже не доступна.
Т.е. это фича самой Windows СЕ.
Re[3]: GetCurrentDirectory - unsupported...
От: godwizard Россия  
Дата: 09.04.04 05:31
Оценка:
Здравствуйте, bkat, Вы писали:

B>Здравствуйте, Аноним, Вы писали:



А>>В Windows СЕ просто нет понятия "текущая директория"


B>Подтверждаю...

B>Если писать на C++, то "текущая директория" тоже не доступна.
B>Т.е. это фича самой Windows СЕ.

Я и без вас по exception догадался что эта функция не поддерживается.
Вот вы бы лучше посоветовали как это выяснить по другому (всмысле как узнать путь к приложению которое запущено.
смысле в следующем. у меня в директории, где лежит само приложение, есть директория с файлами данных. путь к приложению может быть разным, поэтому нужна какая то функция которая возвращает путь к ехе-файлу.

и еще...
эти файлы с данными в формате XML. и reader ругается на парсинг. как парсить xml с такими путями?
Best regards
Re[4]: GetCurrentDirectory - unsupported...
От: Michael Chelnokov Украина  
Дата: 09.04.04 10:36
Оценка:
Здравствуйте, godwizard, Вы писали:

G>Вот вы бы лучше посоветовали как это выяснить по другому (всмысле как узнать путь к приложению которое запущено.


GetModuleFileName(NULL,...);

G>и еще...

G>эти файлы с данными в формате XML. и reader ругается на парсинг. как парсить xml с такими путями?

Какое отношение имеют пути к парсингу XML?
Re[4]: GetCurrentDirectory - unsupported...
От: Аноним  
Дата: 09.04.04 11:13
Оценка:
Здравствуйте, godwizard, Вы писали:

G>Здравствуйте, bkat, Вы писали:


B>>Здравствуйте, Аноним, Вы писали:



А>>>В Windows СЕ просто нет понятия "текущая директория"


B>>Подтверждаю...

B>>Если писать на C++, то "текущая директория" тоже не доступна.
B>>Т.е. это фича самой Windows СЕ.

G>Я и без вас по exception догадался что эта функция не поддерживается.


Вопрос был "почему?". На него тебе и ответили.

G>и еще...

G>эти файлы с данными в формате XML. и reader ругается на парсинг. как парсить xml с такими путями?

Используй абсолюные пути.
Вот тебе статья, которая может помочь.
Re[5]: то был я
От: bkat  
Дата: 09.04.04 11:13
Оценка:
Re[5]: GetCurrentDirectory - unsupported...
От: godwizard Россия  
Дата: 09.04.04 11:24
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, godwizard, Вы писали:


G>>Вот вы бы лучше посоветовали как это выяснить по другому (всмысле как узнать путь к приложению которое запущено.


MC>GetModuleFileName(NULL,...);


G>>и еще...

G>>эти файлы с данными в формате XML. и reader ругается на парсинг. как парсить xml с такими путями?

MC>Какое отношение имеют пути к парсингу XML?


когда я жестко прописал путь к xml файлам, и мог взять список файлов, но когда я начал парсить:


XmlDocument doc = new XmlDocument();
doc.Load(file);


тут мне выдавалась ошибка типа XmlReader parsing error....
Best regards
Re[6]: GetCurrentDirectory - unsupported...
От: Michael Chelnokov Украина  
Дата: 09.04.04 11:30
Оценка:
Здравствуйте, godwizard, Вы писали:

MC>>Какое отношение имеют пути к парсингу XML?


G>когда я жестко прописал путь к xml файлам, и мог взять список файлов, но когда я начал парсить:


G>
G>XmlDocument doc = new XmlDocument();
G>doc.Load(file);
G>


G>тут мне выдавалась ошибка типа XmlReader parsing error....


У Вас всегда вопросы рассчитаны на телепатов и ясновидящих?

КАКАЯ ИМЕННО ошибка?
Правильный ли был задан путь?
Находятся ли по этому пути указанные файлы?
Не забыли ли, что '\' надо писать как "\\" или как @"\"?
Далее, в CE нет дисков, поэтому все пути идут из корня. Например, @"\Windows" или @"\My Flash Disk\My Super Application".
И, наконец, правильные ли сами XML-файлы?
Re[5]: GetCurrentDirectory - unsupported...
От: godwizard Россия  
Дата: 09.04.04 11:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, godwizard, Вы писали:


G>>Здравствуйте, bkat, Вы писали:


B>>>Здравствуйте, Аноним, Вы писали:



А>>>>В Windows СЕ просто нет понятия "текущая директория"


B>>>Подтверждаю...

B>>>Если писать на C++, то "текущая директория" тоже не доступна.
B>>>Т.е. это фича самой Windows СЕ.

G>>Я и без вас по exception догадался что эта функция не поддерживается.


А>Вопрос был "почему?". На него тебе и ответили.


G>>и еще...

G>>эти файлы с данными в формате XML. и reader ругается на парсинг. как парсить xml с такими путями?

А>Используй абсолюные пути.

А>Вот тебе статья, которая может помочь.

за ссылочку спасибо.
Best regards
Re[5]: GetCurrentDirectory - unsupported...
От: marshcor  
Дата: 27.05.06 16:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вот тебе статья, которая может помочь.


по данной статье код на С#.
для CF2.0 работает. для CF1.0 не проверял.

      [DllImport("coredll.dll", EntryPoint = "GetModuleFileName", SetLastError = true)]
        internal static extern Int32 GetModuleFileName(object hModule, Char[] lpFileName, int nBufferSize);
        const int MAX_PATH_LENGTH = 40;
        
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Char[] buffer = new Char[MAX_PATH_LENGTH];
                int result, buffer_length = MAX_PATH_LENGTH;
                while (true)
                {
                    result = GetModuleFileName(null, buffer, buffer_length);
                    if (result == 0)
                    {
                        textBox1.Text = "error occured"; //
                        break;
                    }
                    if (result + 1 == buffer_length)
                    {
                        buffer_length += buffer_length;
                        buffer = new Char[buffer_length];
                        continue;
                    }
                    textBox1.Text = new String(buffer); //полный путь к файлу (вместе с именем exe'шника
                    break;
                }   
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.Message;
            }
        }
Re[6]: GetCurrentDirectory - unsupported...
От: Awaken Украина  
Дата: 27.05.06 21:12
Оценка: +1
M>по данной статье код на С#.
M>для CF2.0 работает. для CF1.0 не проверял.

M>
M>      [DllImport("coredll.dll", EntryPoint = "GetModuleFileName", SetLastError = true)]
M>        internal static extern Int32 GetModuleFileName(object hModule, Char[] lpFileName, int nBufferSize);


Народ, зачем так сложно да еще и интероп приплетать?

[c#]
public string GetApplicationPath()
{
   path =  Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName); 
   if(path[path.Length-1] != '\\')
      path += '\\';
   return path;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.