# TPS internal file structure

**URL:** <https://clarionhub.com/t/tps-internal-file-structure/3706>\
**Category:** tips\
**Created:** [December 16, 2020, 6:24pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706 "2020-12-16T18:24:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mriffey](https://clarionhub.com/letter_avatar_proxy/v4/letter/m/cab0a1/32.png) [@mriffey](https://clarionhub.com/u/mriffey)\
**Post date:** [December 16, 2020, 6:24pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/1 "2020-12-16T18:24:57Z")

</div>

There are a number of posts about this topic on the net. This one (attachment) was 404d, so Ive added it here so it doesnt get lost.

[42 Blog - Liberating data from Clarion TPS files.pdf](https://clarionhub.com/uploads/short-url/ekTqgoRmAeNQNGRFgRIfCSF9Rz.pdf) (113.5 KB)

---

<div class="post-metadata">

**Author:** ![mriffey](https://clarionhub.com/letter_avatar_proxy/v4/letter/m/cab0a1/32.png) [@mriffey](https://clarionhub.com/u/mriffey)\
**Post date:** [December 16, 2020, 6:25pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/2 "2020-12-16T18:25:42Z")

</div>

> **[GitHub - Trinitek/TpsParser: Reads and deserializes encrypted and unencrypted...](https://github.com/Trinitek/TpsParser)**
>
> Reads and deserializes encrypted and unencrypted Clarion TopSpeed (TPS) files.

---

<div class="post-metadata">

**Author:** ![mriffey](https://clarionhub.com/letter_avatar_proxy/v4/letter/m/cab0a1/32.png) [@mriffey](https://clarionhub.com/u/mriffey)\
**Post date:** [December 16, 2020, 6:26pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/3 "2020-12-16T18:26:00Z")

</div>

> **[GitHub - ctrl-alt-dev/tps-parse: Parses Clarion TPS files. Also converts to CSV.](https://github.com/ctrl-alt-dev/tps-parse)**
>
> Parses Clarion TPS files. Also converts to CSV.

---

<div class="post-metadata">

**Author:** ![mriffey](https://clarionhub.com/letter_avatar_proxy/v4/letter/m/cab0a1/32.png) [@mriffey](https://clarionhub.com/u/mriffey)\
**Post date:** [December 16, 2020, 6:27pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/4 "2020-12-16T18:27:02Z")

</div>

This one is from [eticorp.us/download/tps.pdf](http://eticorp.us/download/tps.pdf)

[tps.pdf](https://clarionhub.com/uploads/short-url/5wAVypQE6l2lJJoNKBfJ4v5hKyC.pdf) (141.9 KB)

---

<div class="post-metadata">

**Author:** ![BlakeBurgess](https://clarionhub.com/user_avatar/clarionhub.com/blakeburgess/32/6187_2.png) [@BlakeBurgess](https://clarionhub.com/u/BlakeBurgess)\
**Post date:** [December 19, 2020, 6:40pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/5 "2020-12-19T18:40:36Z")

</div>

This is my library. I forked ctrl-alt-dev’s version and added proper support for arrays and nested groups. Bad news is it’s very slow, especially for tables with a lot of columns.

It theoretically supports arrays of groups also, but I never got around to writing the code to generate a TPS file to test. I don’t think the dictionary editor supports it (for C5.5 and C6 at least), so I don’t know if that’s something that would appear in the wild. [Need an example file that contains an array of Groups · Issue #2 · Trinitek/TpsParser · GitHub](https://github.com/Trinitek/TpsParser/issues/2)

---

<div class="post-metadata">

**Author:** ![donridley](https://clarionhub.com/user_avatar/clarionhub.com/donridley/32/1459_2.png) [@donridley](https://clarionhub.com/u/donridley)\
**Post date:** [December 20, 2020, 5:11pm UTC](https://clarionhub.com/t/tps-internal-file-structure/3706/6 "2020-12-20T17:11:58Z")

</div>

Mark, thank you for creating this thread. I’m not sure how many folks will need it but it’s nice to have this resource in case someone does. I have a side project - a bulk dictionary editor - that I may integrate this functionality somehow.
