Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Korrekten Dateinamen auslesen

  Alt 12. Jun 2006, 20:03
Hi Martin,

ich bin mir nicht sicher, was du mit dem Ignorieren von doppelten backslashes meinst, aber die folgende Funktion liefert dir die Zerlegung einer commandline in einer StringList:

Delphi-Quellcode:
uses
  Classes,
  StrUtils;

function CreateParamStrings(const CommandLine: String): TStrings;
var
  s: String;
  p, pNext: PAnsiChar;
begin
  Result := TStringList.Create;
  p := PChar(CommandLine);
  while p^ <> 'do
  begin
    if p^ <> ' then
    begin
      if p^ <> '"then
      begin
        pNext := AnsiStrScan(p, ' ');
        SetLength(s, pNext - p);
        StrLCopy(PChar(s), p, Length(s));
        p := pNext;
      end else
        s := AnsiDequotedStr(AnsiExtractQuotedStr(p, '"'), '"');
      Result.Add(s);
    end;
    while (p^ <> '') and (p^ = ' ') do
      Inc(p);
  end;
end;
Testen kannst du so:

Delphi-Quellcode:
procedure TDemoForm.TestButtonClick(Sender: TObject);
begin
  with CreateParamStrings('"c:\programme\eigene programme\test.exe" /i /n=123 "a b c"') do
  begin
    ShowMessage(Text);
    Free;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat