Ну так и делай.
Идем по строке, как по массиву.
Если встречаем пробел, то говорим, что один параметр отловлен.
Если встречаем кавычку, то несмотря ни на что топаем до второй кавычки - еще один параметр. Так и считаем.
Код:
function CalcParams(AStr : String) : Integer;
var
I : Integer;
begin
Result := 0;
I := 1;
While I <= Length(AStr)Do
Begin
If AStr[i] = ' '
Then
Begin
Inc(Result);
End
Else
If AStr[i] = '"' Then
Begin
Inc(I);
While (AStr[i] <> '"') And (I <= Length(AStr)) Do Inc(I);
End;
Inc(I);
End;
If AStr <> '' Then Inc(Result); // 1 param.
end;
Вроде так.