K predani parametru jako PChar jej nepotrebujes prohanet bufferem, staci pouzit pretypovani:
ShellExecute(Application.MainForm.Handle, 'Open', PChar(FileName), PChar(Params), PChar(DefaultDir), SW_SHOWNORMAL);
Pokud nejaky parametr nevyplnujes, predej jej jako nil.
Co se tyka StringGridu, tak jeho radky a sloupce jsou typu TStrings, takze bud v cyklu projdes radky nebo sloupce a pouzijes Rows[index].Clear