Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2011, 19:57   #1
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию %userprofile%

Как перевести такую строку %USERPROFILE%, в нормальный вид в DELPHI
чтоб воспринимал как путь
Painkiller_13 вне форума Ответить с цитированием
Старый 03.08.2011, 20:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот как получить все переменные среды (из DelphiWorld)
Код:
procedure GetEnvironmentStringList(ss:TStrings);
{Переменные среды}
var
  ptr: PChar;
  s: string;
  Done: boolean;
begin
  ss.Clear;
  s:='';
  Done:=FALSE;
  ptr:=windows.GetEnvironmentStrings;
  while Done=false do begin
    if ptr^=#0 then begin
      inc(ptr);
      if ptr^=#0 then Done:=TRUE
      else ss.Add(s);
      s:=ptr^;
    end else s:=s+ptr^;
    inc(ptr);
  end;
end;
дальше самостоятельно разберётесь?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.08.2011, 20:31   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Интересует именно разворот переменной окружения или нужно просто узнать путь к профилю?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 04.08.2011, 14:45   #4
Plexdeath
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 20
По умолчанию

Цитата:
uses ShlObj;

function GetSpecialPath(CSIDL: word): string;
var s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
then s := '';
result := PChar(s);
end;
Событие на кнопку передаем название пути в переменную put
Цитата:
var
put : string;
begin
put := GetSpecialPath(CSIDL_PROFILE); // в твоем случае это //CSIDL_PROFILE
end;
Событие на кнопку передаем название пути в label

Цитата:
begin
label1.caption := GetSpecialPath(CSIDL_PROFILE); // в твоем случае это //CSIDL_PROFILE
end;
Подробная статья здесь

далее обрабатываем путь по вашему желанию

Последний раз редактировалось Plexdeath; 04.08.2011 в 14:51.
Plexdeath вне форума Ответить с цитированием
Старый 04.08.2011, 21:09   #5
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Спасибо как узнавать путь я разобрался как его использовать в функии например удалении например если я хочу удалить файл 123.txt которий находиться C:\Documents and Settings\username
как мне использовать то значение которое я получил?
Painkiller_13 вне форума Ответить с цитированием
Старый 04.08.2011, 21:11   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Есть мнение, что к полученному значению надо пристыковать имя файла и результат передать в функцию удаления файла.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 05.08.2011, 11:32   #7
Plexdeath
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 20
По умолчанию

Удаление файла используя label

Код:
Цитата:
begin
label1.Caption := GetSpecialPath(CSIDL_PROFILE);
if DeleteFile(label1.caption+'\123.txt ') then
ShowMessage('Файл успешно удален!')
else
Showmessage ('Ошибка удаления файла');
Удаления файла используя переменную

Код:
Цитата:
var
put : string;
begin
put := GetSpecialPath(CSIDL_PROFILE);
if DeleteFile(put+'\123.txt') then
ShowMessage('Файл успешно удален!')
else
Showmessage ('Ошибка удаления файла');
Plexdeath вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц