?
So ich hab jetzt die Funktion geschrieben und gleich ausprobiert:
void __fastcall TMainForm::ExtractParams(AnsiString FullName,TStringList &Ausgabe)
{
AnsiString Suchstring = FullName;
AnsiString Pfad;
bool KeineParam = false;
if(FullName.SubString(0,1)=="\"")
{ //Erstes Zeichen ist "
if(FullName.SubString(FullName.Length(),1)=="\"")
{ //Kompletter Name in Anführungszeichen - " entfernen und Suchstring ändern
Pfad = FullName.SubString(2,FullName.Length()-2);
KeineParam = true;
}
else
{ //Pfad+Name in Anführungszeichen, danach Parameter - Pfad und Suchstring ändern
int ZwAnf = (FullName.SubString(2,FullName.Length()-1)).AnsiPos("\"");
Suchstring = FullName.SubString(ZwAnf+2,FullName.Length()-ZwAnf);
Pfad = FullName.SubString(2,ZwAnf-1);
delete &ZwAnf;
}
}
//Pfad extrahieren:
if(Pfad=="")
{
TStringList *TempListEP1 = new TStringList;
split(*TempListEP1,Suchstring," ");
Pfad = TempListEP1->Strings[0];
}
//Parameter extrahieren:
TStringList *TempListEP2 = new TStringList;
if(!KeineParam) split(*TempListEP2,Suchstring," ");
TStringList *ausgabe = &Ausgabe;
ausgabe->Add(Pfad);
for(int i=1;i<TempListEP2->Count;i++) ausgabe->Add(TempListEP2->Strings[i]);
}
Zur Erklärung: split(TStringList,String eingabe,String delimiter) teilt den String eingabe an den Zeichen delimiter in die StringList auf.
Bisher hat alles gut geklappt, bis ich auf folgendes Programm gestoßen bin:
"D:\Programme\TuneUp Utilities\MemOptimizer.exe autostart" (ohne Anführungszeichen!)
Wie soll man da wissen, was die Parameter sind
Gruß,
BCB6-User