Путь к системной папке пользователя

  • Автор темы Elvis
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

Elvis

#1
Люди подскажите плиз как в Делфи выдрать путь к системной папке пользователя то есть чтобы в переменную типа стринг мне загонялось например:
C:\Documents and Settings\Elvis Presley

Заранее благодарен!
 
S

Spoiler

#2
Если я првильно поныл то ..
используй переменную окружения

для её создания
SetEnvironmentVariable

и
для её прочтения
GetEnvironmentVariable

для просмотра всех системных переменных SET в CMD
 
E

Elvis

#3
Не сочтите за наглость но можно простенький примерчик. :)
Заранее благодарен!
 
S

SPoiler

#4
Первое
SetEnvironmentVariable( 'MY_VAL', 'c:\my_dir' );

регистрирует в системе переменную окружения MY_VAL

после регистрации пожете сделать её вызов пример ниже ( выводит значение в дилоговом окошке )

ShowMessage(
GetEnvironmentVariable( 'MY_VAL' )
);

по ходу программы используешь GetEnvironmentVariable( 'MY_VAL' ) для извлечения её значение

по ЦМД

пуск - рун - вводишь CMD
set - выдает все зарегистрированные переменные окруженя
set MY_VAL=c:\my_dir

и т.п. посмотри доку по переменным окружения если что непонятно
 
G

Guest

#5
Я вижу что у меня в окружении есть переменная USERPROFILE.
Мне надо считать в строковую переменную значение которое в ней хранится.
если я пишу :

str1:=GetEnvironmentVariable( 'USERPROFILE' );

то компилятор матерится что не хвататет параметров функции GetEnviron...
(я пишу под Дельфи 5)
 
K

Konst_64

#6
Я вижу что у меня в окружении есть переменная USERPROFILE.
Мне надо считать в строковую переменную значение которое в ней хранится.
если я пишу :

str1:=GetEnvironmentVariable( 'USERPROFILE' );

то компилятор матерится что не хвататет параметров функции GetEnviron...
(я пишу под Дельфи 5)
Я пишу под Д7.
 
G

Guest

#7
<!--QuoteBegin-Konst_64+22:08:2005, 10:32 -->
<span class="vbquote">(Konst_64 @ 22:08:2005, 10:32 )</span><!--QuoteEBegin-->Я пишу под Д7.
[snapback]23836" rel="nofollow" target="_blank[/snapback]​
[/quote]
Меня это радует конечно но чем мне это помогает?
 
B

Barmutik

#8
Вообще-то существует ещё и API функция и набор ещё параметров можно легко посмотреть в хелпе как в принципе и для дельфийской реализации.
 
E

Elvis

#9
<!--QuoteBegin-Barmutik+22:08:2005, 11:22 -->
<span class="vbquote">(Barmutik @ 22:08:2005, 11:22 )</span><!--QuoteEBegin-->Вообще-то существует ещё и API функция и набор ещё параметров можно легко посмотреть в хелпе как в принципе и для дельфийской реализации.
[snapback]23842" rel="nofollow" target="_blank[/snapback]​
[/quote]
Набор параметров посмотрел что с ними делать дальше помогите пожалйуста, ну возвращает он мне указатель на буфер с значением переменной что мне делать дальше напишите плиз простой пример как мне выдрать значение переменной USERPROFILE
 
E

Elvis

#10
<!--QuoteBegin-Barmutik+22:08:2005, 11:22 -->
<span class="vbquote">(Barmutik @ 22:08:2005, 11:22 )</span><!--QuoteEBegin-->Вообще-то существует ещё и API функция и набор ещё параметров можно легко посмотреть в хелпе как в принципе и для дельфийской реализации.
[snapback]23842" rel="nofollow" target="_blank[/snapback]​
[/quote]
А можно немножко конкретнее что за функция?
 
B

Barmutik

#11
С точном таким же именем но из Windows API.

Под рукой только Дельфи 7... 5-ой нет..
 
P

Poseidon

#12
Ну блин, 11 постов а примера человеку так и не дали!

Elvis? тебе конкретно эта папка зачем? Именно ее никто не использует. Используют обячно папки, находящиеся в этой. Вот и дерзай:

Код:
uses ShlObj;
...

function GetPathStartUpFolder(Folder:integer):string;
var
s: PChar;
p: PItemIDList;
begin
s := StrAlloc(128);
 p := nil;
 SHGetSpecialFolderLocation(Form1.Handle,Folder, p);
 SHGetPathFromIDList(p, s);
 Result:= s;
end;
Использовать можно так (возвращает папку рабочего стола:
Код:
ShowMessage(GetPathStartUpFolder(CSIDL_DESKTOP));
 
B

Barmutik

#13
Я бы не сказал что Ваш пример удачный ... особенно учитывая то что человек спрашивал не про это...
 
E

Elvis

#14
<!--QuoteBegin-Poseidon+22:08:2005, 20:12 -->
<span class="vbquote">(Poseidon @ 22:08:2005, 20:12 )</span><!--QuoteEBegin-->Ну блин, 11 постов а примера человеку так и не дали!

Elvis? тебе конкретно эта папка зачем? Именно ее никто не использует. Используют обячно папки, находящиеся в этой. Вот и дерзай:[/quote]

Спасибо, мне в принципе пофигу надо знать путь к какойнить папке которая стабильно будет на компе (её удалить нельзя) и узер будет иметь к ней доступ.
Спасибо за пример.
 
P

Poseidon

#16
<!--QuoteBegin-Barmutik+23:08:2005, 09:25 -->
<span class="vbquote">(Barmutik @ 23:08:2005, 09:25 )</span><!--QuoteEBegin-->Я бы не сказал что Ваш пример удачный ...
[snapback]23922" rel="nofollow" target="_blank[/snapback]​
[/quote]
<!--QuoteBegin-Elvis+23:08:2005, 09:27 -->
<span class="vbquote">(Elvis @ 23:08:2005, 09:27 )</span><!--QuoteEBegin-->Спасибо за пример.
[snapback]23923" rel="nofollow" target="_blank[/snapback]​
[/quote] Поспешный вывод зачастую ошибочный. Barmutik, не торопитесь с выводом. Я хоть какой-то пример дал, в отличии от вас :)
 
B

Barmutik

#17
Примеры вызыва функции были указаны много выше ... если не понятно как вызвать обычную функцию ... то это не к советам .. а просто нужно книжки почитать...
 
P

Poseidon

#18
Все мы с чего-то начинали. Не стоит ждать того, что суда станут заходить полупрофи и выше. Новичков тоже хватает.

PS. Это уже оффтоп начинается.
 
E

Elvis

#19
<!--QuoteBegin-Barmutik+23:08:2005, 09:59 -->
<span class="vbquote">(Barmutik @ 23:08:2005, 09:59 )</span><!--QuoteEBegin-->Уже тогда лучше дирректирия Виндовс :D
[snapback]23937" rel="nofollow" target="_blank[/snapback]​
[/quote]

Не подходит, папка нужна для записи, парсинга темы и удаления ексель файла, я не думаю что везде такие тупые Админы которые дадут полный доступ к директории уиндоус всем юзерам.
Полюбому благодарен за советы.
 
Статус
Закрыто для дальнейших ответов.