Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

Re: Trennen von Pfad und Parameter

  Alt 11. Dez 2008, 15:52
Mit einem "schönerem" FileExists kannst'e eigentlich meine Variante verwenden.

Das FileExists von Delphi sucht nur an genau dem angegebenem Pfad ... aber da in diesem Fall Dateien ohne Pfadangebe auch über Suchpfade wie in %PATH% angegeben gesucht werden, muß da auch entsprechend geprüft werden.
Eventuell könnte man auch einfach satt mit FileExists zu prüfen direkt versuchen ShellExecute aufzurufen und bei einem Fehler (ERROR_FILE_NOT_FOUND) den nächsten Durchgang versuchen.


Willst du die Trennung erst, um es z.B. irgendwo anzuzeigen, oder willst du es einfach nur direkt aufrufen? (für Letzteres siehe Code)

Delphi-Quellcode:
Function Call(Const S: String): HINSTANCE;
  Var B: Boolean;
    i: Integer;
    S, Datei, Parameter: String;

  Begin
    SetLength(S, GetSystemDirectory(nil, 0) - 1);
    GetSystemDirectory(PChar(S), Length(S) + 1);
    SetCurrentDirectory(PChar(S));

    B := False;
    i := 0;
    Repeat
      Inc(i);
      While (i <= Length(S)) and (S[i] <> ' ') or B do Begin
        If S[i] = '"Then B := not B;
        Inc(i);
      End;
      Datei := StringReplace(Copy(S, 1, i - 1), '"', '', [rfReplaceAll]);
      Parameter := Trim(Copy(S, i, Length(S)));
      Result := ShellExecute(Handle, nil, PChar(Datei), PChar(Parameter), nil, SW_SHOW);
    Until not (Result in [ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND]) or (i > Length(S));
  End;
(einfach so dahingeschrieben und ungetestet)
$2B or not $2B
  Mit Zitat antworten Zitat