Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Вниз

Как программно определить значения переменных окружения?   Найти похожие ветки 

 
Vader   (2002-09-25 10:46) [0]

Собсно сабж...


 
Alx2   (2002-09-25 10:48) [1]

Unit

SysUtils

Category

miscellaneous routines

GetEnvironmentVariable(Name: string): string;


 
Separator   (2002-09-25 10:52) [2]

Выдрано из кулибы, вроде работает :)

--------------------------------------------------------------------------------
unit TDosEnv;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;


type
TDosEnvironment = class(TComponent)
public
{ Public объявления класса }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;


private
{ Объявления Private-полей }
FDosEnvList: TStringList;
procedure DoNothing(Const Value: TStringList);


protected
{ Объявления Protected-методов }
dummy: Word;
function GetDosEnvCount: Word;


public
{ Public interface объявления }
function GetDosEnvStr(Const Name: String): String;
{ Данная функция является измененной версией функции GetEnvVar,
присутствующей в поставляемом с Delphi модуле WinDos. Она
использует паскалевские строки вместо строк с терминирующим нулем.
}


published
{ Published design объявления }
property DosEnvCount: Word read GetDosEnvCount write dummy;
property DosEnvList: TStringList read FDosEnvList write DoNothing;
end;


procedure Register;


implementation


constructor TDosEnvironment.Create(AOwner: TComponent);
var P: PChar;
i: Integer;
begin
inherited Create(AOwner);
FDosEnvList := TStringList.Create;
P := GetDosEnvironment; { Win API }
i := 0;
while P^ <> #0 do
begin
Inc(i);
FDosEnvList.Add(StrPas(P));
Inc(P, StrLen(P)+1) { Быстрый переход к следующей переменной }
end
end {Create};


destructor TDosEnvironment.Destroy;
begin
FDosEnvList.Free;
FDosEnvList := nil;
inherited Destroy
end {Destroy};


procedure TDosEnvironment.DoNothing(Const Value: TStringList);
begin
MessageDlg("TDosEnvironment.DosEnvList только для чтения!", mtInformation,
[mbOk], 0)

end {DoNothing};



function TDosEnvironment.GetDosEnvCount: Word;
{ Возвращает количество переменных окружения.
}
begin
if Assigned(FDosEnvList) then {!!} Result := FDosEnvList.Count
else
Result := 0;
end {GetDosEnvCount};


function TDosEnvironment.GetDosEnvStr(Const Name: String): String;
{ Данная функция является измененной версией функции GetEnvVar,
присутствующей в поставляемом с Delphi модуле WinDos. Она
использует паскалевские строки вместо строк с терминирующим нулем.
}
var i: Integer;
Tmp: String;
Len: Byte absolute Name;
begin
i := 0;
Result := "";
if Assigned(FDosEnvList) then {!!} while i < FDosEnvList.Count do
begin
Tmp := FDosEnvList[i];
Inc(i);
if Pos(Name,Tmp) = 1 then
begin
Delete(Tmp,1,Len);
if Tmp[1] = "=" then
begin
Delete(Tmp,1,1);
Result := Tmp;
i := FDosEnvList.Count { конец while-цикла }
end
end
end
end {GetDosEnvStr};


procedure Register;
begin
RegisterComponents("Dr.Bob", [TDosEnvironment]);
end {Register};


end.

Успехов, Dr. Bob (drbob@pi.net) [000710]


 
Vader   (2002-09-25 10:54) [3]

Сенкс!
Не знал что тут так всё оперативно. Приятно :)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
3-82664
Leonon
2002-11-06 12:04
2002.11.25
Не отображаются изменения в гриде!?


7-83033
antonioxxx
2002-09-22 22:40
2002.11.25
Ошибка при работе с GetWindowsDirectory


4-83058
keymaster
2002-10-13 23:33
2002.11.25
Как рисовать поверх ВСЕГО


1-82720
vidiv
2002-11-14 05:10
2002.11.25
Надо срочно проверить...


8-82868
Alex_E
2002-07-20 10:31
2002.11.25
Конвертация bmp- ico





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский