Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
8-82869
Карлсон
2002-08-03 00:52
2002.11.25
Цветной текст.


8-82867
mk2002
2002-07-15 21:58
2002.11.25
TPicture


1-82789
AndrewVolkov
2002-11-12 18:57
2002.11.25
DblClick Toolbar


14-82946
Dmitriy Polskoy
2002-11-04 18:59
2002.11.25
Win 2000 Advanced Server


1-82701
DN
2002-11-14 09:53
2002.11.25
Работа с Paradox