Wie würdet ihr vorgehen um den EnvironmentPath zu parsen..?
bsp.
IExplorer setzt seinen Arbeitspfad mit %HOMEDRIVE%%HOMEPATH%..
Den Path stelle ich dann so zur Verfügung.
@%HOMEDRIVE%@%HOMEPATH%
Danach parse ich es auf diese weise.
Delphi-Quellcode:
function TShortCut.ExpandEnvironment(EnvironmentPath: PWideChar): PWideChar;
var
lpDest: array [0 .. 32768] of WideChar;
begin
result := '';
FillChar(lpDest, SizeOf(lpDest), 0);
if ExpandEnvironmentStrings(PWideChar(EnvironmentPath), lpDest, 32767) <> 0 then
result := lpDest;
end;
Delphi-Quellcode:
var
SplitID: TSplitStrArray;
sTmpWork: WideString;
begin
sWorkDir := GetExePath(Trim(ParseThis(sBF, ',', 3)), ExtractFilePath(sShellTo));
SplitID := Split(sWorkDir, '@');
if (Length(SplitID) > 1) then
begin
if (MidStr(SplitID[1], 0, 1) = '%') then
begin
sTmpWork := SplitID[1];
sWorkDir := ExpandEnvironment(PWideChar(sTmpWork));
if Length(SplitID) > 1 then
begin
sTmpWork := SplitID[2];
sWorkDir := sWorkDir + ExpandEnvironment(PWideChar(sTmpWork)) + '\';
end;
end;
end;
end;
Das scheint mir irgendwie zu unsicher..
Könnte ja theoretisch auch nur %HOMEDRIVE% bzw. 3 aneinanderhängende enthalten sein.
Um was es mir geht, suche eine bessere\sichere Lösung den EnvironmentPath zu parsen.
Vielleicht hat ja jemand eine bessere Lösung.
Eventuell über eine schleife oder TStringListe?
gruss