Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Parsen von EnvironmentPath

  Alt 14. Aug 2018, 04:19
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

Geändert von EWeiss (14. Aug 2018 um 04:30 Uhr)
  Mit Zitat antworten Zitat