Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2009, 15:59
BloodFooria BloodFooria вне форума
Новичок
 
Регистрация: 30.10.2008
Адрес: Улан-Удэ
Сообщения: 81
Репутация: 10
По умолчанию Выяснение путей до системных папок

Возникла необходимость хранить файлы программы в папке ApplicationData, но худо одно, как получить путь до этой папки?

Знаю, как получить путь до папки Windows, но там что-либо хранить от программы - глупо.

Заранее, всем спасибо.

P.S. В гугле был, но опять, времени мало
__________________
Auta i Lome...
Ответить с цитированием
  #2  
Старый 04.04.2009, 16:58
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Если лучше предложений не будет, то можно воспользоваться переменными окружения системы.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  userprof: PChar;
  AppData: string;
begin
  GetMem(userprof, 256);
  ExpandEnvironmentStrings(PChar('%userprofile%'), userprof, 254);
  AppData := StrPas(userprof) + '\Application Data';
  FreeMem(userprof, 256);
  ShowMessage(AppData);
end;
Ответить с цитированием
  #3  
Старый 04.04.2009, 17:33
BloodFooria BloodFooria вне форума
Новичок
 
Регистрация: 30.10.2008
Адрес: Улан-Удэ
Сообщения: 81
Репутация: 10
По умолчанию

Спасибо! Работает, но видите, папка "ApplicationData" так называется не во всех версиях Windows, поэтому пришлось доработать код (выяснить версию Windows и дальнейшая приписка).
__________________
Auta i Lome...
Ответить с цитированием
  #4  
Старый 04.04.2009, 18:12
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

BloodFooria, вот, пожалуйста...
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  PIDL: PItemIDList;
  Path: LPSTR;
  AppDataPath: string;
begin
  Path := StrAlloc(MAX_PATH);
  try
    SHGetSpecialFolderLocation(Handle, CSIDL_APPDATA, PIDL);
    SHGetPathFromIDList(PIDL, Path);
    AppDataPath := StrPas(Path);
    ShowMessage(AppDataPath);
  finally
    StrDispose(Path);
 end;
end;
Требуется добавить модуль ShlObj.

P.S. Я использовала это! =)

Последний раз редактировалось Nyctos Kasignete, 04.04.2009 в 18:17.
Ответить с цитированием
  #5  
Старый 04.04.2009, 18:37
BloodFooria BloodFooria вне форума
Новичок
 
Регистрация: 30.10.2008
Адрес: Улан-Удэ
Сообщения: 81
Репутация: 10
По умолчанию

А зачем? Я сам уже дописал, у меня правда побольше но тоже работает Пришлось отдельный Unit делать.

Может кому интересно будет, во вложениях.

А вот это я использовал раньше, но забыл Надо в закладки добавить...
Вложения
Тип файла: zip AppData.zip (2.3 Кбайт, 4 просмотров)
__________________
Auta i Lome...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter