FITS-Format

Patrick Chevalley patrick.chevalley at sig-ge.cg
Fri Feb 12 04:30:38 EST 1999


This is a multi-part message in MIME format.
--------------3D85920641F73130D46E7214
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

You can find attached here two PASCAL sample of code that I use in some of
my programs to read and write two dimension FITS image files.
This is not a general FITS library, but only simples examples and you must
add
support for the keywords you want.
I cut it from my application code and some variables or routines may be
undefined.

Patrick

Stefan Kraus wrote:

> Hello Everyone!
> I want to integrate the FITS-Format in my own Astronomy-program.
> Know anyone a URL with a PASCAL or BASIC-Sample-Source-Code for reading
> and/or writing FITS-Image-Files?
>
> Many thanks in advance...
>
> Stefan
>
> Stefan_Kraus at gmx.net

--------------3D85920641F73130D46E7214
Content-Type: application/x-unknown-content-type-DelphiUnit;
 name="fits_read.pas"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="fits_read.pas"

Ly8NCi8vICBQQVNDQUwvREVMUEhJIEZpdHMgcmVhZGluZyBzYW1wbGUNCi8vDQoNCnByb2Nl
ZHVyZSBTaG93Zml0c2hlYWRlcihub20gOiBzdHJpbmc7IHZhciBvayA6IGJvb2xlYW4pOw0K
Ly8NCi8vICBEaXNwbGF5IGZpdHMgaGVhZGVyIGluIGEgbWVtbw0KLy8NCg0KcHJvY2VkdXJl
IFJlYWRmaXRzaGVhZGVyKHZhciBmIDogZmlsZTsgdmFyIGgsdyxweCA6IGludGVnZXIgO3Zh
ciBkbWluLGRtYXgsYmxhbmssYnplcm8sYnNjYWxlIDogZG91YmxlKTsNCi8vDQovLyAgIFJl
YWQgaGVhZGVyIHRvIGluaXRpYWxpemUgaW1hZ2Ugc2l6ZSBhbmQgd29ybGQgY29vcmRpbmF0
ZSANCi8vDQoNClByb2NlZHVyZSBSZWFkRml0c0ltYWdlKG5vbSA6IHN0cmluZzt2YXIgaCx3
IDppbnRlZ2VyO3ZhciBkbWluLGRtYXggOiBkb3VibGU7IHZhciBpbWEgOiBJbnRJbWFnZSk7
DQovLw0KLy8gIHJlYWQgaW1hZ2UgaW4gYSBhcnJheSANCi8vDQoNCnZhcg0KICBjdHlwZTEs
Y3R5cGUyLHJhZGVjc3lzLGZpbGVuYW1lLGZpIDogc3RyaW5nOw0KICBwcm9qZml0cyA6IGNo
YXI7DQogIGNycGl4MSxjcnBpeDIsY3J2YWwxLGNydmFsMixjZGVsdDEsY2RlbHQyLGNyb3Rh
MSxjcm90YTIgOiBkb3VibGU7DQogIGNkMV8xLGNkMV8yLGNkMl8xLGNkMl8yLGVxdWlub3gg
OiBkb3VibGU7DQogIHBjIDogYXJyYXkgWzEuLjIsMS4uMl0gb2YgZG91YmxlOw0KICBhcixk
ZSxyb3Qscm90MSxsYSA6IGRvdWJsZTsNCiAgcm90YW9rLGNkb2sscGNvayxhdXRvbG9hZCA6
IGJvb2xlYW47DQogIGN1cnJlbnRkaXIgOiBzdHJpbmcgPSAnJzsNCg0KaW1wbGVtZW50YXRp
b24NCg0KY29uc3QgbWF4bCA9IDQwMDA7DQp0eXBlIEludEltYWdlID0gYXJyYXkgb2YgYXJy
YXkgb2YgZG91YmxlOw0KDQp2YXIgbnBpeCxiaXRwaXggOiBpbnRlZ2VyOw0KICAgIGQ4ICA6
IGFycmF5WzEuLjI4ODBdIG9mIGJ5dGU7DQogICAgZDE2IDogYXJyYXlbMS4uMTQ0MF0gb2Yg
d29yZDsNCiAgICBkMzIgOiBhcnJheVsxLi43MjBdIG9mIExvbmd3b3JkOw0KICAgIGQ2NCA6
IGFycmF5WzEuLjM2MF0gb2YgSW50NjQ7DQogICAgUElDaCA6IFBpY0hlYWRlcjsNCiAgICBp
bWFpbnQgOiBJbnRJbWFnZTsNCiAgICBkbWluaSxkbWF4aSxoZG1pbixoZG1heCxkYXRtYXhp
LGRhdG1pbmksc2Nyb2xsc2NhbGUsc2Nyb2xscmFuZ2UgOiBkb3VibGU7DQogICAgaGksd2ks
eDEseDIseTEseTIsaGEsd2EgOiBpbnRlZ2VyOw0KICAgIFh6MSxYejIsWXoxLFl6MixveDEs
b3gyLG95MSxveTIgOiBpbnRlZ2VyOw0KICAgIEltYWdlT0ssbG9ja3Njcm9sbCx6b29taW5p
dCxsb2NrcGFsZXR0ZSxsb2NrY29sb3IsQk1QY29sb3IgOiBib29sZWFuOw0KICAgIGl0dCA6
IGFycmF5WzAuLjI1NV0gb2YgYnl0ZTsNCiAgICBtc2cgOiBzdHJpbmc7DQogICAgbW95ZW5u
ZSxzaWdtYSA6IGV4dGVuZGVkOw0KDQoNCnByb2NlZHVyZSBTaG93Zml0c2hlYWRlcihub20g
OiBzdHJpbmc7IHZhciBvayA6IGJvb2xlYW4pOw0KLy8NCi8vICBEaXNwbGF5IGZpdHMgaGVh
ZGVyIGluIGEgbWVtbw0KLy8NCnZhciAgIGhlYWRlciA6IGFycmF5WzEuLjM2LDEuLjgwXSBv
ZiBjaGFyOw0KICAgICAgaSxuLHAxIDogaW50ZWdlcjsNCiAgICAgIGVvaCxJdHNGaXRzIDog
Ym9vbGVhbjsNCiAgICAgIGtleXdvcmQgOiBzdHJpbmc7DQogICAgICBmIDogZmlsZTsNCmJl
Z2luDQpvazo9ZmFsc2U7DQpJdHNGaXRzOj1mYWxzZTsNCmZpbGVtb2RlOj0wOw0KYXNzaWdu
ZmlsZShmLG5vbSk7DQpyZXNldChmLDEpOw0KYmlnaW1hZm9ybS5tZW1vMS5DbGVhcjsNCmVv
aDo9ZmFsc2U7DQpyZXBlYXQNCiAgIGJsb2NrcmVhZChmLGhlYWRlcixzaXplb2YoaGVhZGVy
KSxuKTsNCiAgIGZvciBpOj0xIHRvIDM2IGRvIGJlZ2luDQogICAgICBwMTo9cG9zKCc9Jyxo
ZWFkZXJbaV0pOw0KICAgICAgaWYgcDE9MCB0aGVuIHAxOj05Ow0KICAgICAga2V5d29yZDo9
dHJpbShjb3B5KGhlYWRlcltpXSwxLHAxLTEpKTsNCiAgICAgIGlmIChrZXl3b3JkPSdTSU1Q
TEUnKSB0aGVuIGl0c0ZpdHM6PXRydWU7DQogICAgICBpZiAoa2V5d29yZD0nRU5EJykgdGhl
biBlb2g6PXRydWU7DQogICAgICBiaWdpbWFmb3JtLm1lbW8xLmxpbmVzLkFwcGVuZChoZWFk
ZXJbaV0pOw0KICAgZW5kOw0KICAgaWYgbm90IEl0c0ZpdHMgdGhlbiBiZWdpbiBtc2c6PSdL
ZXl3b3JkICJTSU1QTEUgPSBUIiBtYW5xdWFudCc7RXhpdDtlbmQ7DQp1bnRpbCBlb2g7DQpv
azo9dHJ1ZTsNCmVuZDsNCg0KDQpwcm9jZWR1cmUgUmVhZGZpdHNoZWFkZXIodmFyIGYgOiBm
aWxlOyB2YXIgaCx3LHB4IDogaW50ZWdlciA7dmFyIGRtaW4sZG1heCxibGFuayxiemVybyxi
c2NhbGUgOiBkb3VibGUpOw0KLy8NCi8vICAgUmVhZCBoZWFkZXIgdG8gaW5pdGlhbGl6ZSBp
bWFnZSBzaXplIGFuZCB3b3JsZCBjb29yZGluYXRlIA0KLy8NCnZhciAgIGhlYWRlciA6IGFy
cmF5WzEuLjM2LDEuLjgwXSBvZiBjaGFyOw0KICAgICAgaSxuLHAxLHAyIDogaW50ZWdlcjsN
CiAgICAgIGVvaCxJdHNGaXRzIDogYm9vbGVhbjsNCiAgICAgIGtleXdvcmQsYnVmIDogc3Ry
aW5nOw0KYmVnaW4NCkl0c0ZpdHM6PWZhbHNlO2VvaDo9ZmFsc2U7IGg6PTAgOyB3Oj0wIDsg
cHg6PTAgOyBkbWluOj0wIDsgZG1heCA6PSAwOyBibGFuazo9MDsNCmJ6ZXJvOj0wIDsgYnNj
YWxlOj0xOw0KY3R5cGUxOj0nJyA7Y3R5cGUyOj0nJzsNCmNycGl4MTo9MDtjcnBpeDI6PTA7
Y3J2YWwxOj0wO2NydmFsMjo9MDtjZGVsdDE6PTA7Y2RlbHQyOj0wO2Nyb3RhMTo9MDtjcm90
YTI6PTA7DQpjZDFfMTo9MDtjZDJfMjo9MDtjZDFfMjo9MDtjZDJfMTo9MDsNCnBjWzEsMV06
PTE7cGNbMSwyXTo9MDtwY1syLDFdOj0wO3BjWzIsMl06PTE7DQpyb3Rhb2s6PWZhbHNlO2Nk
b2s6PWZhbHNlO3Bjb2s6PWZhbHNlOw0KZXF1aW5veDo9MC4wOw0KcmFkZWNzeXM6PScnOw0K
cmVwZWF0DQogICBibG9ja3JlYWQoZixoZWFkZXIsc2l6ZW9mKGhlYWRlciksbik7DQogICBp
ZiBuPD5zaXplb2YoaGVhZGVyKSB0aGVuIGV4aXQ7DQogICBmb3IgaTo9MSB0byAzNiBkbyBi
ZWdpbg0KICAgICAgcDE6PXBvcygnPScsaGVhZGVyW2ldKTsNCiAgICAgIGlmIHAxPTAgdGhl
biBwMTo9OTsNCiAgICAgIHAyOj1wb3MoJy8nLGhlYWRlcltpXSk7DQogICAgICBpZiBwMj0w
IHRoZW4gcDI6PTgwOw0KICAgICAga2V5d29yZDo9dHJpbShjb3B5KGhlYWRlcltpXSwxLHAx
LTEpKTsNCiAgICAgIGJ1Zjo9dHJpbShjb3B5KGhlYWRlcltpXSxwMSsxLHAyLXAxLTEpKTsN
CiAgICAgIGlmIChrZXl3b3JkPSdTSU1QTEUnKSBhbmQgKGNvcHkoYnVmLDEsMSk8PidUJykg
dGhlbiBiZWdpbiBtc2c6PSdLZXl3b3JkICJTSU1QTEUgPSBUIiBtYW5xdWFudCc7RXhpdDtl
bmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBJdHNGaXRzOj10cnVlOw0KICAgICAgaWYgKGtleXdvcmQ9J0JJVFBJWCcpIHRo
ZW4gcHg6PXN0cnRvaW50KGJ1Zik7DQogICAgICBpZiAoa2V5d29yZD0nTkFYSVMnKSBhbmQg
KGJ1ZjwnMicpIHRoZW4gYmVnaW4gbXNnOj0nS2V5d29yZCAiTkFYSVMgPCAyIic7RXhpdDtl
bmQ7DQogICAgICBpZiAoa2V5d29yZD0nTkFYSVMxJykgdGhlbiBiZWdpbiB3Oj1zdHJ0b2lu
dChidWYpO2lmIHc9MCB0aGVuIGJlZ2luIG1zZzo9J0tleXdvcmQgIk5BWElTMSA9IDAiJztF
eGl0O2VuZDtlbmQ7DQogICAgICBpZiAoa2V5d29yZD0nTkFYSVMyJykgdGhlbiBiZWdpbiBo
Oj1zdHJ0b2ludChidWYpO2lmIGg9MCB0aGVuIGJlZ2luIG1zZzo9J0tleXdvcmQgIk5BWElT
MiA9IDAiJztFeGl0O2VuZDtlbmQ7DQogICAgICBpZiAoa2V5d29yZD0nQlpFUk8nKSB0aGVu
IGJ6ZXJvOj1zdHJ0b2Zsb2F0KGJ1Zik7DQogICAgICBpZiAoa2V5d29yZD0nQlNDQUxFJykg
dGhlbiBic2NhbGU6PXN0cnRvZmxvYXQoYnVmKTsNCiAgICAgIGlmIChrZXl3b3JkPSdEQVRB
TUFYJykgdGhlbiBkbWF4Oj1zdHJ0b2Zsb2F0KGJ1Zik7DQogICAgICBpZiAoa2V5d29yZD0n
REFUQU1JTicpIHRoZW4gZG1pbjo9c3RydG9mbG9hdChidWYpOw0KICAgICAgaWYgKGtleXdv
cmQ9J1RIUkVTSCcpIHRoZW4gZG1heDo9c3RydG9mbG9hdChidWYpOw0KICAgICAgaWYgKGtl
eXdvcmQ9J1RIUkVTTCcpIHRoZW4gZG1pbjo9c3RydG9mbG9hdChidWYpOw0KICAgICAgaWYg
KGtleXdvcmQ9J0JMQU5LJykgdGhlbiBibGFuazo9c3RydG9mbG9hdChidWYpOw0KICAgICAg
aWYgKGtleXdvcmQ9J0NUWVBFMScpIHRoZW4gY3R5cGUxOj1idWY7DQogICAgICBpZiAoa2V5
d29yZD0nQ1RZUEUyJykgdGhlbiBjdHlwZTI6PWJ1ZjsNCiAgICAgIGlmIChrZXl3b3JkPSdD
UlBJWDEnKSB0aGVuIGNycGl4MTo9c3RydG9mbG9hdChidWYpOw0KICAgICAgaWYgKGtleXdv
cmQ9J0NSUElYMicpIHRoZW4gY3JwaXgyOj1zdHJ0b2Zsb2F0KGJ1Zik7DQogICAgICBpZiAo
a2V5d29yZD0nQ1JWQUwxJykgdGhlbiBjcnZhbDE6PXN0cnRvZmxvYXQoYnVmKTsNCiAgICAg
IGlmIChrZXl3b3JkPSdDUlZBTDInKSB0aGVuIGNydmFsMjo9c3RydG9mbG9hdChidWYpOw0K
ICAgICAgaWYgKGtleXdvcmQ9J0NERUxUMScpIHRoZW4gYmVnaW4gY2RlbHQxOj1zdHJ0b2Zs
b2F0KGJ1Zik7IHJvdGFvazo9dHJ1ZTtlbmQ7DQogICAgICBpZiAoa2V5d29yZD0nQ0RFTFQy
JykgdGhlbiBiZWdpbiBjZGVsdDI6PXN0cnRvZmxvYXQoYnVmKTsgcm90YW9rOj10cnVlO2Vu
ZDsNCiAgICAgIGlmIChrZXl3b3JkPSdDUk9UQTEnKSB0aGVuIGNyb3RhMTo9c3RydG9mbG9h
dChidWYpOw0KICAgICAgaWYgKGtleXdvcmQ9J0NST1RBMicpIHRoZW4gYmVnaW4gY3JvdGEy
Oj1zdHJ0b2Zsb2F0KGJ1Zik7IHJvdGFvazo9dHJ1ZTtlbmQ7DQogICAgICBpZiAoa2V5d29y
ZD0nQ0QxXzEnKSB0aGVuIGJlZ2luIGNkMV8xOj1zdHJ0b2Zsb2F0KGJ1Zik7IGNkb2s6PXRy
dWU7IGVuZDsNCiAgICAgIGlmIChrZXl3b3JkPSdDRDFfMicpIHRoZW4gYmVnaW4gY2QxXzI6
PXN0cnRvZmxvYXQoYnVmKTsgY2Rvazo9dHJ1ZTsgZW5kOw0KICAgICAgaWYgKGtleXdvcmQ9
J0NEMl8xJykgdGhlbiBiZWdpbiBjZDJfMTo9c3RydG9mbG9hdChidWYpOyBjZG9rOj10cnVl
OyBlbmQ7DQogICAgICBpZiAoa2V5d29yZD0nQ0QyXzInKSB0aGVuIGJlZ2luIGNkMl8yOj1z
dHJ0b2Zsb2F0KGJ1Zik7IGNkb2s6PXRydWU7IGVuZDsNCiAgICAgIGlmIChrZXl3b3JkPSdQ
QzAwMTAwMScpIHRoZW4gYmVnaW4gcGNbMSwxXTo9c3RydG9mbG9hdChidWYpOyBwY29rOj10
cnVlOyBlbmQ7DQogICAgICBpZiAoa2V5d29yZD0nUEMwMDEwMDInKSB0aGVuIGJlZ2luIHBj
WzEsMl06PXN0cnRvZmxvYXQoYnVmKTsgcGNvazo9dHJ1ZTsgZW5kOw0KICAgICAgaWYgKGtl
eXdvcmQ9J1BDMDAyMDAxJykgdGhlbiBiZWdpbiBwY1syLDFdOj1zdHJ0b2Zsb2F0KGJ1Zik7
IHBjb2s6PXRydWU7IGVuZDsNCiAgICAgIGlmIChrZXl3b3JkPSdQQzAwMjAwMicpIHRoZW4g
YmVnaW4gcGNbMiwyXTo9c3RydG9mbG9hdChidWYpOyBwY29rOj10cnVlOyBlbmQ7DQogICAg
ICBpZiAoa2V5d29yZD0nRVBPQ0gnKW9yKGtleXdvcmQ9J0VRVUlOT1gnKSB0aGVuIGJlZ2lu
DQogICAgICAgICAgICAgICAgICAgaWYgY29weShidWYsMyw0KT0nMjAwMCcgdGhlbiBlcXVp
bm94Oj0yMDAwDQogICAgICAgICAgICAgICAgICAgZWxzZSBpZiBjb3B5KGJ1ZiwzLDQpPScx
OTUwJyB0aGVuIGVxdWlub3g6PTE5NTANCiAgICAgICAgICAgICAgICAgICBlbHNlIGVxdWlu
b3g6PXN0cnRvZmxvYXQoYnVmKTsNCiAgICAgICAgICAgICAgICAgICBlbmQ7DQogICAgICBp
ZiAoa2V5d29yZD0nUkFERUNTWVMnKSB0aGVuIHJhZGVjc3lzOj1idWY7DQogICAgICBpZiAo
a2V5d29yZD0nRU5EJykgdGhlbiBlb2g6PXRydWU7DQogICBlbmQ7DQogICBpZiBweD0wIHRo
ZW4gZXhpdDsNCiAgIGlmIG5vdCBJdHNGaXRzIHRoZW4gYmVnaW4gbXNnOj0nS2V5d29yZCAi
U0lNUExFID0gVCIgbWFucXVhbnQnO0V4aXQ7ZW5kOw0KdW50aWwgZW9oOw0KaWYgcmFkZWNz
eXM9JycgdGhlbiByYWRlY3N5czo9JycnRks0JycnOw0KaWYgKGVxdWlub3g9MCkgdGhlbiBp
ZiAoY29weShyYWRlY3N5cywyLDMpPSdGSzQnKSB0aGVuIGVxdWlub3g6PTE5NTANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlcXVp
bm94Oj0yMDAwOw0KZW5kOw0KDQpQcm9jZWR1cmUgUmVhZEZpdHNJbWFnZShub20gOiBzdHJp
bmc7dmFyIGgsdyA6aW50ZWdlcjt2YXIgZG1pbixkbWF4IDogZG91YmxlOyB2YXIgaW1hIDog
SW50SW1hZ2UpOw0KLy8NCi8vICByZWFkIGltYWdlIGluIGEgYXJyYXkgDQovLw0KdmFyIGks
aWksaixuLHB4IDogaW50ZWdlcjsNCiAgICB4LGJsYW5rLGJ6ZXJvLGJzY2FsZSA6IGRvdWJs
ZTsNCiAgICBmIDogZmlsZTsNCiAgICBuaSxzdW0sc3VtMiA6IGV4dGVuZGVkOw0KYmVnaW4N
CmZpbGVtb2RlOj0wOw0KYXNzaWduZmlsZShmLG5vbSk7DQpyZXNldChmLDEpOw0KcmVhZGZp
dHNoZWFkZXIoZixoLHcscHgsaGRtaW4saGRtYXgsYmxhbmssYnplcm8sYnNjYWxlKTsNCmlm
IGg9MCB0aGVuIGV4aXQ7DQpzZXRsZW5ndGgoaW1hLHRydW5jKG1pbnZhbHVlKFttYXhsLGhd
KSksdHJ1bmMobWludmFsdWUoW21heGwsd10pKSk7DQpiaXRwaXg6PXB4Ow0KZG1pbjo9MS4w
RTEwMDsNCmRtYXg6PS0xLjBFMTAwOw0KbnBpeDo9MDsNCnN1bTo9MDsgc3VtMjo9MDsgbmk6
PTA7DQpmb3IgaTo9MCB0byBoLTEgZG8gYmVnaW4NCiAgaWk6PWgtMS1pOw0KICBmb3IgaiA6
PSAwIHRvIHctMSBkbyBiZWdpbg0KICAgICBjYXNlIHB4IG9mDQogICAgLTY0OiAgYmVnaW4N
CiAgICAgICAgICAgaWYgKG5waXggbW9kIDM2MCA9IDApIHRoZW4gYmVnaW4NCiAgICAgICAg
ICAgICBCbG9ja1JlYWQoZixkNjQsc2l6ZW9mKGQ2NCksbik7DQogICAgICAgICAgICAgbnBp
eDo9MDsNCiAgICAgICAgICAgZW5kOw0KICAgICAgICAgICBpbmMobnBpeCk7DQogICAgICAg
ICAgIHg6PUludmVydEY2NChkNjRbbnBpeF0pOw0KICAgICAgICAgICBpZiB4PWJsYW5rIHRo
ZW4geDo9MDsNCiAgICAgICAgICBlbmQ7DQogICAgLTMyOiAgYmVnaW4NCiAgICAgICAgICAg
aWYgKG5waXggbW9kIDcyMCA9IDApIHRoZW4gYmVnaW4NCiAgICAgICAgICAgICBCbG9ja1Jl
YWQoZixkMzIsc2l6ZW9mKGQzMiksbik7DQogICAgICAgICAgICAgbnBpeDo9MDsNCiAgICAg
ICAgICAgZW5kOw0KICAgICAgICAgICBpbmMobnBpeCk7DQogICAgICAgICAgIHg6PUludmVy
dEYzMihkMzJbbnBpeF0pOw0KICAgICAgICAgICBpZiB4PWJsYW5rIHRoZW4geDo9MDsNCiAg
ICAgICAgICBlbmQ7DQogICAgIDggOiAgYmVnaW4NCiAgICAgICAgICAgaWYgKG5waXggbW9k
IDI4ODAgPSAwKSB0aGVuIGJlZ2luDQogICAgICAgICAgICAgQmxvY2tSZWFkKGYsZDgsc2l6
ZW9mKGQ4KSxuKTsNCiAgICAgICAgICAgICBucGl4Oj0wOw0KICAgICAgICAgICBlbmQ7DQog
ICAgICAgICAgIGluYyhucGl4KTsNCiAgICAgICAgICAgeDo9ZDhbbnBpeF07DQogICAgICAg
ICAgIGlmIHg9YmxhbmsgdGhlbiB4Oj0wOw0KICAgICAgICAgICB4Oj1iemVybytic2NhbGUq
eDsNCiAgICAgICAgICBlbmQ7DQogICAgIDE2IDogYmVnaW4NCiAgICAgICAgICAgaWYgKG5w
aXggbW9kIDE0NDAgPSAwKSB0aGVuIGJlZ2luDQogICAgICAgICAgICAgQmxvY2tSZWFkKGYs
ZDE2LHNpemVvZihkMTYpLG4pOw0KICAgICAgICAgICAgIG5waXg6PTA7DQogICAgICAgICAg
IGVuZDsNCiAgICAgICAgICAgaW5jKG5waXgpOw0KICAgICAgICAgICB4Oj1JbnZlcnRJMTYo
ZDE2W25waXhdKTsNCiAgICAgICAgICAgaWYgeD1ibGFuayB0aGVuIHg6PTA7DQogICAgICAg
ICAgIHg6PWJ6ZXJvK2JzY2FsZSp4Ow0KICAgICAgICAgIGVuZDsNCiAgICAgMzIgOiBiZWdp
bg0KICAgICAgICAgICBpZiAobnBpeCBtb2QgNzIwID0gMCkgdGhlbiBiZWdpbg0KICAgICAg
ICAgICAgIEJsb2NrUmVhZChmLGQzMixzaXplb2YoZDMyKSxuKTsNCiAgICAgICAgICAgICBu
cGl4Oj0wOw0KICAgICAgICAgICBlbmQ7DQogICAgICAgICAgIGluYyhucGl4KTsNCiAgICAg
ICAgICAgeDo9SW52ZXJ0STMyKGQzMltucGl4XSk7DQogICAgICAgICAgIGlmIHg9Ymxhbmsg
dGhlbiB4Oj0wOw0KICAgICAgICAgICB4Oj1iemVybytic2NhbGUqeDsNCiAgICAgICAgICBl
bmQ7DQogICAgIGVsc2UgeDo9MTtiZWdpbiBtc2c6PSdLZXl3b3JkICJCSVRQSVggPSAnK2lu
dHRvc3RyKHB4KSsnIic7ZW5kOw0KICAgICBlbmQ7DQogICAgIGRtaW46PW1pbnZhbHVlKFt4
LGRtaW5dKTsNCiAgICAgZG1heDo9bWF4dmFsdWUoW3gsZG1heF0pOw0KICAgICBzdW06PXN1
bSt4Ow0KICAgICBzdW0yOj1zdW0yK3gqeDsNCiAgICAgbmk6PW5pKzE7DQogICAgIGlmIChp
aTw9bWF4bC0xKSBhbmQgKGo8PW1heGwtMSkgdGhlbiBpbWFbaWksal0gOj0geCA7DQogIGVu
ZDsNCmVuZDsNCmNsb3NlZmlsZShmKTsNCmg6PXRydW5jKG1pbnZhbHVlKFttYXhsLGhdKSk7
DQp3Oj10cnVuYyhtaW52YWx1ZShbbWF4bCx3XSkpOw0KbW95ZW5uZTo9c3VtL25pOw0Kc2ln
bWE6PXNxcnQoIChzdW0yL25pKS0obW95ZW5uZSptb3llbm5lKSApOw0KZW5kOw0KDQoNCg0K
DQo=
--------------3D85920641F73130D46E7214
Content-Type: application/x-unknown-content-type-DelphiUnit;
 name="fits_write.pas"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="fits_write.pas"

Ly8NCi8vICBQQVNDQUwvREVMUEhJIEZpdHMgd3JpdGluZyBzYW1wbGUNCi8vDQoNCg0KdHlw
ZQ0KRklUU2hlYWRlciA9IGFycmF5IFsxLi4zNiwxLi44MF0gb2YgY2hhcjsNCkZJVFNyZWMx
NiA9IGFycmF5IFsxLi4xNDQwXSBvZiBzbWFsbGludCA7DQpGSVRTcmVjOCA9IGFycmF5IFsx
Li4yODgwXSBvZiBieXRlIDsNCg0KaW1wbGVtZW50YXRpb24NCg0KDQpWYXIgSW1nVyxJbWdI
LG5ibXAgOiBpbnRlZ2VyOw0KICAgIGltYWJtcCA6IFRiaXRtYXA7DQogICAgY29uZmlybXJl
cGxhY2UgOiBib29sZWFuOw0KDQpQcm9jZWR1cmUgV3JpdGVGSVRTKG5vbWJtcCxub20sZGF0
LHRpbSA6IHN0cmluZzsgdmFyIG9rIDogYm9vbGVhbik7DQp2YXIgaGVhZGVyIDogRklUU2hl
YWRlciA7DQogICAgYnVmMTYgICAgOiBGSVRTcmVjMTY7DQogICAgYnVmOCAgICA6IEZJVFNy
ZWM4Ow0KICAgIGZpdHNmaWxlIDogZmlsZSA7DQogICAgbixpLGosayA6IGludGVnZXI7DQog
ICAgcyA6IHNob3J0c3RyaW5nOw0KICAgIFAgOiBQYnl0ZUFycmF5Ow0KYmVnaW4NCm5vbTo9
bm9tKycuZml0JzsNCmlmIGZpbGVleGlzdHMobm9tKSBhbmQgKG5vdCBjb25maXJtcmVwbGFj
ZSkgdGhlbiBiZWdpbg0KICAgaSA6PSBtZXNzYWdlZGxnKCdSZW1wbGFjZXIgbGUgZmljaGll
ciAnK25vbSxtdFdhcm5pbmcsW21iWWVzLG1iQWxsLG1iTm9dLDApOw0KICAgY2FzZSBpIG9m
DQogICAgICAgIG1yQWxsIDogY29uZmlybXJlcGxhY2U6PXRydWU7DQogICAgICAgIG1yWWVz
IDogb2s6PXRydWU7DQogICAgICAgIG1yTm8gIDogYmVnaW4NCiAgICAgICAgICAgICAgICBv
azo9ZmFsc2U7DQogICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgICAgICBlbmQ7
DQogICBlbmQ7DQplbmQ7DQpGaWxsQ2hhcihoZWFkZXIsIFNpemVPZihoZWFkZXIpLCAnICcp
Ow0Kczo9J1NJTVBMRSAgPSAgICAgICAgICAgICAgICAgICAgVCc7IG1vdmUoc1sxXSxoZWFk
ZXJbMSwxXSxsZW5ndGgocykpOw0KaWYgZm9ybTEucmFkaW9idXR0b24xLmNoZWNrZWQgdGhl
biBiZWdpbg0KICAgczo9J0JJVFBJWCAgPSAgICAgICAgICAgICAgICAgICAgOCc7IG1vdmUo
c1sxXSxoZWFkZXJbMiwxXSxsZW5ndGgocykpOyBlbmQNCmVsc2UgYmVnaW4NCiAgIHM6PSdC
SVRQSVggID0gICAgICAgICAgICAgICAgICAgMTYnOyBtb3ZlKHNbMV0saGVhZGVyWzIsMV0s
bGVuZ3RoKHMpKTsgZW5kOw0Kczo9J05BWElTICAgPSAgICAgICAgICAgICAgICAgICAgMic7
IG1vdmUoc1sxXSxoZWFkZXJbMywxXSxsZW5ndGgocykpOw0Kczo9J05BWElTMSAgPSAgICAg
ICAgICAgICAgICAgICcraW50dG9zdHIoSW1nVyk7IG1vdmUoc1sxXSxoZWFkZXJbNCwxXSxs
ZW5ndGgocykpOw0Kczo9J05BWElTMiAgPSAgICAgICAgICAgICAgICAgICcraW50dG9zdHIo
SW1nSCk7IG1vdmUoc1sxXSxoZWFkZXJbNSwxXSxsZW5ndGgocykpOw0Kczo9J0RBVEFNQVgg
PSAgICAgICAgICAgICAgICAgICA2Myc7IG1vdmUoc1sxXSxoZWFkZXJbNiwxXSxsZW5ndGgo
cykpOw0Kczo9J0RBVEFNSU4gPSAgICAgICAgICAgICAgICAgICAgMCc7IG1vdmUoc1sxXSxo
ZWFkZXJbNywxXSxsZW5ndGgocykpOw0Kczo9J1RIUkVTSCAgPSAgICAgICAgICAgICAgICAg
ICA2Myc7IG1vdmUoc1sxXSxoZWFkZXJbOCwxXSxsZW5ndGgocykpOw0Kczo9J1RIUkVTTCAg
PSAgICAgICAgICAgICAgICAgICAgMCc7IG1vdmUoc1sxXSxoZWFkZXJbOSwxXSxsZW5ndGgo
cykpOw0Kczo9J0RBVEUtT0JTPSAnJycrZGF0KydUJyt0aW0rJycnJyA7IG1vdmUoc1sxXSxo
ZWFkZXJbMTAsMV0sbGVuZ3RoKHMpKTsNCnM6PSdPQkpFQ1QgID0gJycnK2Zvcm0xLmVkaXQ0
LnRleHQrJycnJyA7IG1vdmUoc1sxXSxoZWFkZXJbMTEsMV0sbGVuZ3RoKHMpKTsNCnM6PSdU
RUxFU0NPUD0gJycnK2Zvcm0xLmVkaXQ1LnRleHQrJycnJyA7IG1vdmUoc1sxXSxoZWFkZXJb
MTIsMV0sbGVuZ3RoKHMpKTsNCnM6PSdJTlNUUlVNRT0gJycnK2Zvcm0xLmVkaXQ2LnRleHQr
JycnJyA7IG1vdmUoc1sxXSxoZWFkZXJbMTMsMV0sbGVuZ3RoKHMpKTsNCnM6PSdPQlNFUlZF
Uj0gJycnK2Zvcm0xLmVkaXQ3LnRleHQrJycnJyA7IG1vdmUoc1sxXSxoZWFkZXJbMTQsMV0s
bGVuZ3RoKHMpKTsNCnM6PSdDT01NRU5UICAnKycgUXVpY2tDYW0gJytkYXQrJyAnK3RpbSA7
IG1vdmUoc1sxXSxoZWFkZXJbMTUsMV0sbGVuZ3RoKHMpKTsNCnM6PSdDT01NRU5UICAgJytm
b3JtMS5lZGl0My50ZXh0IDsgbW92ZShzWzFdLGhlYWRlclsxNiwxXSxsZW5ndGgocykpOw0K
czo9J0RBVEUgICAgPSAnJycrZGF0ZXRvc3RyKGRhdGUpKycnJycgOyBtb3ZlKHNbMV0saGVh
ZGVyWzE3LDFdLGxlbmd0aChzKSk7DQpzOj0nSElTVE9SWSAgJysnIE9yaWdpbmFsOiAnK25v
bWJtcCA7IG1vdmUoc1sxXSxoZWFkZXJbMTgsMV0sbGVuZ3RoKHMpKTsNCnM6PSdISVNUT1JZ
ICAnKycgRklUUyBDb252ZXJ0aW9uIGJ5IFFjYW1Db3B5ICAnK2RhdGV0b3N0cihkYXRlKSsn
ICcrdGltZXRvc3RyKHRpbWUpIDsgbW92ZShzWzFdLGhlYWRlclsxOSwxXSxsZW5ndGgocykp
Ow0Kczo9J0hJU1RPUlkgICcrJyBQaXhlbHMgdmFsdWVzIHJhbmdlIGZyb20gMCAoYmxhY2sp
IHRvIDYzICh3aGl0ZSkgJzsgbW92ZShzWzFdLGhlYWRlclsyMCwxXSxsZW5ndGgocykpOw0K
czo9J0VORCAgICAgICcgOyBtb3ZlKHNbMV0saGVhZGVyWzIxLDFdLGxlbmd0aChzKSk7DQph
c3NpZ25maWxlKGZpdHNmaWxlLG5vbSk7DQpyZXdyaXRlKGZpdHNmaWxlLDEpOw0KYmxvY2t3
cml0ZShmaXRzZmlsZSxoZWFkZXIsc2l6ZW9mKGhlYWRlciksbik7DQprOj0wOw0KZm9yIGo6
PTAgdG8gSW1nSC0xIGRvIGJlZ2luDQogIFA6PWltYWJtcC5TY2FuTGluZVtJbWdILTEtal07
DQogIGZvciBpOj0wIHRvIEltZ1ctMSBkbyBiZWdpbg0KICAgIGluYyhrKTsNCiAgICBpZiBm
b3JtMS5SYWRpb0J1dHRvbjEuY2hlY2tlZCB0aGVuIGJlZ2luDQogICAgICBidWY4W2tdOj02
My1QW2ldOw0KICAgICAgaWYgaz0yODgwIHRoZW4gYmVnaW4NCiAgICAgICAgIGJsb2Nrd3Jp
dGUoZml0c2ZpbGUsYnVmOCxzaXplb2YoYnVmOCksbik7DQogICAgICAgICBrOj0wOw0KICAg
ICAgZW5kOw0KICAgIGVuZCBlbHNlIGJlZ2luDQogICAgICBidWYxNltrXTo9NjMtUFtpXTsN
CiAgICAgIGJ1ZjE2W2tdOj1zd2FwKGJ1ZjE2W2tdKTsNCiAgICAgIGlmIGs9MTQ0MCB0aGVu
IGJlZ2luDQogICAgICAgICBibG9ja3dyaXRlKGZpdHNmaWxlLGJ1ZjE2LHNpemVvZihidWYx
Niksbik7DQogICAgICAgICBrOj0wOw0KICAgICAgZW5kOw0KICAgIGVuZDsNCiAgZW5kOw0K
ZW5kOw0KaWYgZm9ybTEuUmFkaW9CdXR0b24xLmNoZWNrZWQgdGhlbiBiZWdpbg0KICBpZiBr
PjAgdGhlbiBiZWdpbg0KICAgICBmb3IgaTo9aysxIHRvIDI4ODAgZG8gYnVmOFtpXTo9MDsN
CiAgICAgYmxvY2t3cml0ZShmaXRzZmlsZSxidWY4LHNpemVvZihidWY4KSxuKTsNCiAgZW5k
Ow0KZW5kIGVsc2UgYmVnaW4NCiAgaWYgaz4wIHRoZW4gYmVnaW4NCiAgICAgZm9yIGk6PWsr
MSB0byAxNDQwIGRvIGJ1ZjE2W2ldOj0wOw0KICAgICBibG9ja3dyaXRlKGZpdHNmaWxlLGJ1
ZjE2LHNpemVvZihidWYxNiksbik7DQogIGVuZDsNCmVuZDsNCmNsb3NlZmlsZShmaXRzZmls
ZSk7DQplbmQ7DQoNCg0K
--------------3D85920641F73130D46E7214--



More information about the fitsbits mailing list