Du darfst das so nicht übergeben. Du musst die einen Array-Typen deklarieren, z.B. TVarRecArray=array of TVarRec (falls es den nicht eh schon gibt).
So, wie du das momentan schreibst, ist das nämlich ein offener Array-Typ, und die haben eine feste Größe. Wenn du allerdings den Komfort behalten willst, das ganze mit ShowErrorMsg('bla', [
wuppdi, narf]); aufzurufen, musst du es so behalten, wie es ist, und dann innerhalb der Prozedur das offene Array Args in ein anderes, "normales" Array kopieren.