Registriert seit: 29. Apr 2006
Ort: Schweiz
15 Beiträge
Delphi 12 Athens
|
AW: CreateProcess und "Environment-Block"
11. Jun 2025, 06:19
Vielen Dank für eueren Input.
Meine Lösung sieht nun so aus:
Delphi-Quellcode:
function SetEnvironmentsVars(const Vars: TStrings): Boolean;
var
i: integer;
_line:string;
_Name:string;
_Value:string;
_EqualsPos:integer;
_DoublePointPos:integer;
_prefix:string;
_ErrorMsg:string;
_ProblemCount:integer;
begin
_ProblemCount:=0;
for i := 0 to Vars.Count - 1 do begin
_line := Vars[i];
_EqualsPos := Pos('=', _line);
if _EqualsPos=-1 then begin
inc(_ProblemCount);
_ErrorMsg:=format('SetEnvironmentsVars: The environment statement <%s> does not contain the character "=". Ignore this line.',[_line]);
OutputDebugString(PChar(_ErrorMsg));
continue;
end;
if _EqualsPos=1 then begin
_DoublePointPos := Pos(':', _line);
_prefix:=Copy(_line,1,_DoublePointPos);
delete(_Line,1,_DoublePointPos);
end
else _prefix:='';
_Name := _prefix+_Line.Substring(0,_EqualsPos-1);
_Value := _Line.Substring(_EqualsPos);
if not SetEnvironmentVariable(PChar(_Name), PChar(_Value)) then begin
inc(_ProblemCount);
_ErrorMsg:=format('SetEnvironmentsVars: Could not set environment variable <%s=%s>. <%s>.',[_Name,_Value,SysErrorMessage(GetLastError)]);
end;
end;
result:=(_ProblemCount=0);
end;
|
|
Zitat
|