.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Ответить
 • Просмотры: 1
Аватара пользователя
LilLoco

.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение LilLoco »

Добрый день!



Ситуация такая: при вызове функции Environment.GetFolderPath() для получения пути к папке Temp или Мои документы возвращается пустая строка. Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы (папка Пользователи). Как обойти это?



Спасибо!



P.S. IDE - SharpDevelope
Аватара пользователя
lxa85

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение lxa85 »

Цитата LilLoco:



Как обойти это?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




Заключить в кавычки? (Подсунуть строку cd C:\User\ ... \Temp из командной строки)

Посмотреть, в какой кодировке идет работа?

К сожалению сейчас проверить не на чем.
Аватара пользователя
LilLoco

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение LilLoco »

Цитата lxa85:



(Подсунуть строку cd C:\User\ ... \Temp из командной строки
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




Не совсем понятно, что имеется ввиду.




Цитата lxa85:



Заключить в кавычки?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




Нечего заключать Изображение Функция - без параметров, при вызове она возвращает пустую строку.
Аватара пользователя
User001

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение User001 »

Цитата LilLoco:



Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




Если вам не критично, можете переменные окружения поменять на англоязычные папки, чтобы проверить (
пример
).
Аватара пользователя
lxa85

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение lxa85 »

LilLoco, А может она и должна отдавать пустую строку?

Ей кстати не передан никакой параметр.

Документация Environment::GetFolderPath - метод (Environment::SpecialFolder)


Получает путь к особой системной папке, указанной в заданном перечислении.


Цитата:



public static string GetFolderPath(

Environment..::..SpecialFolder folder

)



Возвращаемое значение

Тип: System.String

Путь к указанной особой системной папке, если эта папка физически существует на компьютере; в противном случае — пустая строка ("").

Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.



Пример:



Код:

Код: Выделить всё

// Sample for the Environment.GetFolderPath method
using System;
class Sample 
{
    public static void Main() 
    {
    Console.WriteLine();
    Console.WriteLine("GetFolderPath: {0}", 
                 Environment.GetFolderPath(Environment.SpecialFolder.System));
    }
}
/*
This example produces the following results:
GetFolderPath: C:\WINNT\System32
*/

Перечисление


В перечислении я не нашел папку Temp. Возможно ее надо где-то дополнительно указывать в системе. Пока не знаю.



Пусть отдельным сообщением.

Добавление своей папки как SpecialFolder.

Google : Sams Teach Yourself Visual Studio .NET 2003 in 21 Days
Ссылка на кусок кода. Что он делает я не вчитывался. Вроде похоже.

Set Environment.SpecialFolder.LocalApplicationData using C#
Предупреждение:


Цитата:



Please don't do this.



These folder paths don't belong to your application, and changing them in this manner will not work for a domain user who has a folder redirection policy.
Аватара пользователя
LilLoco

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение LilLoco »

Цитата lxa85:



Ей кстати не передан никакой параметр
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




В коде, я конечно же его указывал. В противном случае не компилировалось бы.






Цитата lxa85:



Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




Папка существует. Пытаюсь получить путь к моим документам.

К системной папке путь возвращается.

Исходя из этого я и подумал, что проблема в русских символах. Т.к. в пути к моим документам есть директория Пользователи.



Проблема, видимо, в среде SharpDevelove. Через MS Visual Studio 2010 Express все отлично работает.



Спасибо за ссылки, будет интересно изучить.
Аватара пользователя
Iska

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение Iska »

Мне только одно интересно — почему не пользуются рекомендованные
CSIDL (Windows)
или новое
Known Folders (Windows)
?
Аватара пользователя
LilLoco

Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Сообщение LilLoco »

Цитата Iska:



почему не пользуются рекомендованные CSIDL (Windows) или новое Known Folders (Windows)?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#




А вот это у меня напрочь вылетело из головы. Спасибо за напоминание.
Ответить

Вернуться в «Программирование и базы данных»