Ist er denn zu dem Zeitpunkt tatsächlich gefüllt? Füge mal ne ShowMessage(deine Daten zum lesen) ans ende der befüllung an, vielleicht greifst Du ja auch da unten mit K aufs falsche Index zu?
gaSprite[ID].fname := Item.objlabel; sollte glaube ich gaSprite[ID].filename := Item.objlabel; sein.