Puedes hacer otra cosa, generar la sentencias sin parámetros y visualizara antes de insertar, al menos para ver qué está generando:
Por cierto, ahora que veo tienes 4 campos y 5 parámetros en la SQL.
Código Delphi
[-]
for i := 1 to StringGrid1.RowCount do
Query.SQL.Clear;
Str := 'insert into cobro( cantidad, codigo, descripcion, unitario) values(%s, %s, %s %s) ';
Str := Format (Str, [stringGrid1.Cells[1, i],
stringGrid1.Cells[2, i].
QuotedStr(stringGrid1.Cells[3, i]),
stringGrid1.Cells[4, i] ]);
MessageDlg(Format('SQL: %s ',[Str]), mtInformation, [mbOK], 0);
Query.SQL.Text := Str;
Query.ExecSQL;
end;