[comp.sys.mac.hypercard] XFCN for retrieving pascal strings

mandel@vax.anes.tulane.edu (Jeff E Mandel MD MS) (02/27/91)

This stack addresses the need (or rather, my perception of the
need) expressed by Peter Bako in his posting to comp.sys.mac.hypercard
of 26 Feb 91. As it seemed that others might benefit from it, and
I spent several hours hacking this together, I thought I'd
post it to the net. Briefly, if you have a file with a resource
formatted as a pascal string, this XFCN will get it for you. If
you specify a full pathname to the file as the first parameter,
the XFCN will use that string; if you pass an empty string for
the parameter, SFGetFile is called to get the filename. The
call is filtered by the fileType specified in the first field of
the rTYP resource of the stack (I include a TMPL for editting with
ResEdit). The ResType of the resource is specified in the second
field of the rTyp resource. Note that the rTYP resource is accessed
by number; don't renumber it. Given the file and resource type,
the resource may be specified (as the 2nd parameter) by ID
(any positive number), index (any negative number, i.e. -1 returns
the first resource), or name.

Note that the XFCN closes the file when done; it would not be a good
idea to point it at an open application, stack, the system file, etc.
Good will ware. Remember me when I need a favor.

Jeff E Mandel MD MS
Asst. Professor of Anesthesiology
Tulane University School of Medicine
New Orleans, LA

(This file must be converted with BinHex 4.0)
:$@GPG&*PFe0dFLjcDA3!8dP8)90*9#%!!!!!%di!!!!!ldp6593K!!%!!"01FNa
KG3'q!!!!&J!!!J)-Cf9d8Q9c8h4bD@jRG#jMF!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8e4"5eG*6%3!!+2[m1LMm$##!!!
4q`!!&Z!!!!b4!!!'0eRMrT`!!!!!!!$jM3!!"!J))!+KJ"!1"VcM6j%*)#!@3(P
d4SD3!$EbE-%"X!+)2&`JTJK!mimG!!BKj3"BJ#32R$*bU*4T!`G%$!%%Te!*XZ4
+%LC%#!V0ZE2Rck"$NbSG1JSHM%%",B!,''&IaipJL&c-Z2%Ub#P+8!&!B!EPP"F
3R1LL*`6,)c!1AL`)#3,0@""3R%"b'h)M$"3Rj5!3"XL-!EP1@JQ3!,%4"5!QlM!
!q)I2L4FARjc81I6Pba!Q6kB8#HM%5N!Njd*J31&QV"*+CLKXeCM!D`Fq!Nq#%BT
!cK`jBm5`-A1'S!F%4Y+`+82&*A-R3CS`N!"5CXkE1X#C1kF#[3P#+DApk82pB(9
V"(!%[!#!4)m!)#mBU%AJ6!Q!*qp1&Jr!,XZM&cc%P!882r!`!!LTJ0,#&rrSBiB
&96b5bLX`I)!%-1[&TpB#9Nbd@`$#[1"#JfSjB!NFm!'J&Ni245JA%Qlmidq*P1K
J)4i$U48!1Jr*Y9''mZQL!!L)kI)!$8S!JKm!'*JK"`JakS0A#e$mSdi2Z-R`McP
B!U!P1L*Zf9i!M[`)J"`"r"!!M&DZabBR*5ULa)LFR)&#K'Eq-+)S*5TK)jZQU2@
!&)!@k3!S5c)!"J4M`U#K,JESiD&!$"LUMiX,T()*$am`B-3rrlMeB)369RJKN!"
U+8$(T!#!!k0iF!5!ULi*Q1'"#q)aF!!!,54U"JUh!3!#V,)#m'J#Y1!!J(p30SM
A#i!4m!-"U$KJ`KFH-U%V!$#dJF+f1EJK3Ubc*Q#)$mXqdUb88%!,J,3(*(LYKak
mUNq*@M!EjE24fTY++0IbY8"XT&*S)BE'"TQ!-KlD)&FUNK6CJ!)[6&#L%a)M)0H
M"Z$bJ`'TD)+RX3$S+D0D$A"JBk+3!'%!McrL@)DCCSNF83391NNK44&6!'$$"-N
Y"q8EG)!`adYMT'&''Q@3!1&#3"0-8FCbBa5pY0"d[!%#'fq%38C!Cj4"aa4db%(
G(#UDPUk)BkR&!"XJI'!CcCfjF8GR4P54"QPUbfA#H4'GFGJ#EN[apcrmc&e()Tf
4`3EH80M"pfRR--RD5ArI06!%F"bQSLlrH2*34'kG3F+M$-"M!b!A5J()HQVp3mJ
*3!#JAU8Vf1kf+8Y#%&(,NeAQK@D4G&CeCcF-3EBFDEKaKK&3M$%jHj@EKcRJQhF
11qJfM,j!k5,B3!N-%l6qqZIrJ%#ll5q``(lZ!VJ04++r4aDmiTJB6`IbbTIGr20
550lbrNH3!0*3MNQC3d"%c-!jckR&(mc`AZPi8*2YqB-A+)"2TCi@*!E`!(8+@0f
T2ZF28+c[GLq!hiC#&#4rX'**)+LIC#LM1%MSMhm$G*i4f&"!YD('FUeK3!)Af%!
,-N'#&#(#SaEJL3`p,5fk@!!Ph#)#BAe!'S#`35$)Cci,HZ#%m8QKlU))RbH+-Aj
#iXH5-#$$q`f[$T1ii4F%k$mG4Sm+-CLHhl"h"L+T8"Ip3!IT+#)"%(!3!33jJmB
)"dKTZ19`LAZM$Ep!K[h0XAr-dk(NT[G$k`N4F+f"J,[8icle-2)I$!!H$GmBabr
!iA&I-))8KN$(6*i"MjbXAJ*4X)EhM9%"QPJ2P%ibbP3aJST@a+)@Z3J-eff[(aB
!)qjqLB0K9JS`k[PM!Z$aU(j)3*A#di`Q1K1'9q+`MJ#N*5B*Q%XJAQmXCe3,2k6
4[Pq'N!"ec6bI2$d"aP,'NeDqD1-U0C-*FXlKR,D8T6Tc@*bd(G"k#)!""EViZF6
eb*q-6-#6&J"1a8QL-fq!3r33qMmME0+Ke(0R4#HDcqha!`%AC9p'@9#N"("#S1'
%)dK&@S8aN!"8NhTN`183N!##)!)!#MR!cDkBX$Afk+8&20`)"&L$1-Z!!&Y2F!)
d,J'&)1MN#9SSJK5Hd*NB`)!+@"K#%l3#QL%X)DK$,HT*MTT8!#3!!%cP)4+H'P8
!6$9'NE`U&,+keCa4i3QJFF)4bRV@Y+j9#'ep+dSl195fY6##m'%NI9,`9U6LCL"
jG5SN1ZS&`4,@%k*a!K''%!3T%+%*2*Y#%'`f"-DL9DeXIB*EHrJ2FF4RU1d"J$A
BG#pGl%-$`88'QpbKPRdiB#*12!QEd+%@IIJ$ZZb*%6h8dJm-"-%Grk"(SPk!!1*
b&`R%C92-M-X$l$lU(d!)VK`H"3!rT-G0-9S[2b"ahqb'9jk%k1pbjBN(!FH)ZVV
J"aX-6+)%Ji'UhP!F)%)`K65F`3eKB)-4`N#($"G"$R*iJaaXkeLYF'd-Di#Hp!!
J!3+-!!JK+!%!UKJ'0mcK$M!"3494qY[cq-HbMr)("9,`"3!)JDU4e!`J5&$K#fH
B1R6!MK[)aZ%k(23,CVhYBdqFBLMdG(V$4%!)M#S%#62C`KKQ!j5P618SAcR,*4B
#Pk%A2Elp!aUS#3!#I2!d#3c9&e3`6+`q&&mp"-!5jY9&2M5"K'1mi!!$eS8qb)$
G-EP"[@V*KarFbd%fF526EUMdJCZ,L1rq!ahM,DpfQfX(8iXh2j95GB2hB3S'EpH
i$Q!`FidV!!BM@"rfB2"kpD%1"RpDdYjJ`"%%XL3FQ%%&`A8'Qk#K&Rb`3p5c4J+
$U5eT@26Z`F&&G)biM3pKB,Ziqr$!YUYVL0kP0dE@b,3!h"ZNIKJJZ&))-K%B('p
*@i("aG@(%MDb4XK!!"$r3)EL2Y%m-iLi$8'3!--C001'0cF@Yh*q!iT9M$BFZ"M
'-JC"'#4HKcD8`3edQ)-,4!!#BBhm$#8r14e@hR*KbD%-FDK$'QiqKjVAq-BjhV%
"UDGR2J2!!F!p"JJ18)lAd3!"D#3!#aUpp+D$J!j34`[ES%J!A9#Gk8k(ZPS)3!'
$)cbRRaK#522!d)LIJF3BRr-FkMcCF``!!dC(qRQqh[3A2"f0!`!'LVCh$a8mK1q
!Z(V@4FP)!KLK5!5`aBmAm+Kpm)%&&P)kf2dZGPd-`"&&ZSI[$0!bB2`$(SVc"(A
'm!Bl`)3*Eh#Hfq'qCBfR''efjNDHpr`d[Bq&A*qcKbTD!!6%J3!)3S#!UI8"J`-
3S2K!+&e!Y2&m!"LLSB,i!K!DbSJTE$mJTUM#pS'`KHec)![I"`!U[)pppR1!r6K
J2a&f!`"Cq+Fp!K"&+Ja!C#0r5!Vhjak#X(rp*`3I)J3"+!"F3)"&CS!#)3-*b!-
-k(m#)3)*k!!6k)!")!%"'!$UN!#"(b)!(BJ-)"J3mY#"U&##!#!1(3J)+LJ0(BJ
&+LJ-(@J#+LJ,Bf)"N9B2jP"TMJCTqD8@pX!+PDB(+qKTDP%2aS"Y#(B2i'"UU!C
Vj-8QYhB2cZ"UUCCSq'!)paFPQ@B#EV%H'@KVDR%28U"VC@J%[PD'1L"XCHJ#aPD
')V!NMZ)qCDB,!C!!H$`N"'La)KKLKcT5B1VKAm9P$rM!-Zj`F2p!$BV6#8f@CN&
6"KmfBPKfFE@hFA-3!!43"@k`"Ql`"RIJ"L"`0@8!!M$a*)!"!#N!!"m3L5"!"Qp
3(8060+b(FQ(32#$!FpH4(5%3%"AJLLG("UES"UaA"bJ(%dh6L`$`LmT4LR!`FQ&
JFR53!'1R+',+k!#Zq)P&%e)ReiX3i)ShC`B8"`*Li$@p+!'Z1!Gj-!I6f!DQ#',
@#!!Ei)Tfm!CX%(1[')XpTifQL!GT`)lAk)T*m!6[''*bd)X8i)SCGR0HN`Ipq)m
Tei[Bf)a3%SfP@)jNd)X2N!#04$1+eq%''4N3)[!&F3-+61!#J1!%FI!M#4!$`#!
!)+!C'`%'pM#5F4-+Yi))6U!29Q+6A`!+FX16i1#6S*!!!M[j$pC!P#T`P-a3'[m
!$+B'$'-f9a)!#K63!l8$!5*`(M)J&KCJ'5-j%8i3$8i*PH!PPDfK!#`@!qF"!"B
!#K@!P8F(PPr!"Bm`PR33!&Ie!qU"!+fJ$R332cbjA9D!1*394!R8!NZ!1%U`!@E
!$pE!$k"L!Gc`Q)D%1+UdA@pN#1`)("c'@ra`Q1q%!)U*1*4TQ52#$jQT1*aC0Q-
!"hR33`me9#E!"&+`#%V!!CE*!*!!X!LNT4QY+3I,d4S"m3)`Z4i+p!BR)34RN!!
+lN"HDJ%!1S!&6d!#FP-(42)ZCk!#abF#5!!"'A!'(L!"%5!"`!!"!@!'q$!*b!!
##H"p$!!)"2%2Ef!!)-!$mhP`f8N!QV'ICe")3#"9%!!'"!!"k#!38B!-$C*mqkN
C!6%39+%3#8%3G`!!9d!%9$!"'N!3(!!!@Q!l90!%8-!%"+%"!J)&"!''4M!%6N!
3-R!J3m%!3J'M"E!8$S!0!$!"0IFd"%%!*pS!ZSJGBe#+$IF'#4!fBe-fC`-!!#!
!-)9+N!!Pra,q#mJ`S)+!&X!&(0L`BX!!$T-aa!KJ`Df*"bb+E&JJ))54+!-+#!"
Q`-U@,efb(0"YRTd,&DF!!"8JP3"3$38!%!!XTG'M5*-UAFUdUG1R8+0+R8UeD30
E!4Q3!!TJ4@M9Vf$$LKe,YLaC3!`T!N!%3-6DYQX4L4#"5#jG95*8)F+VLTQU'Ah
rUR+RDYIJ`S0hlA,R6V'lIl[q2Bim@@(NIi!J#!!4!!%3!JT$rj0,QUk)##+))%+
YQKJJ"QL'#)"K)KD-!4Z`!@235"8!hm$ALUKLQMJLiP@1$lr6MERcEQJYUUSb[AU
9!B53!-"JX$+!)#)jL!J+3"i4"4&"%!8433%3S#!q%##J-%i%!8Cd4&c!"-%A)%3
)V)-!)S#8J)`-LC!!33)6NSM#54#qU*!!$!AV!!%8!!3m"!!J3)!`&!%$qBB@@fK
KjYk*J#$!J3M"!"+!!+#Gq)pm#1#6ha'2A#"#(,m!m-X[X!3*bcprq0+&+%'JT8m
p5i)#KC0Q45RPP&4@DH@9@'DTjCC80Y"##b"--BBFDF""4a&NT%'(+L"!)8FCCXb
K3a0[Z"('''q`N!!$#c6F`))-0,"3!`b"fJ!$$#`JLZLJ$3"!"JKST%&''8E)m8B
E6+6KaKS00&!R#'E8iFBBG+44ja*Pj!%#(@L8J@SH$D4KaUUY[JT#'R1!)%)--BK
!DaPZ3#STTCCLULQR`$iDkULPRTUUPf#+5DDCD+V*TTY`bNQRRAMUbDHIJ!T++!Z
')KS$$6L`F'kkM(,TlV[`aLX[98)e%84"S88&48J!8$&#3*4S")!P(`%`#bN"dB,
9[!`hl2$$%%FXF9+!-*&%35#*a*&D!'"%a&!!R$3!'"fAX*&&#Ic,dF4*$34&%%F
8%9$+&L&`J%3"f"'3!%GJM%#++i!i)BBK9!"#L4)'!%)#$"Y3J!8#N`"55`N')+)
*)Q'J%!S-)&53!!NEV8K$J3(54*1*)3KN)J%bQH!4aK"Q$%-"(KbX)BN!j556M)F
Xpqhhhi!(,[MJK"GZq1')*kliiS`hl[MMN!"(,[RNP&IZ,K"#,((%a`!S)$"5((Q
HN9J$J$*%%&*`lP&80(HZN3%!m"Z!)b"hV!d!b(5-83!K!&"-!$F%N!!#)!08Y$)
$$%&`4KPd5&('(&233DBEC`6dD4Y[e$&('9A!d3!FGG!"`[*dc#(pQh1J-)DbE$`
UJKPTX&''%f'd8BB),+`2D[ZkSZqm'@9idkMZPi*EZB%1E`#"rXc!2a'`UJc4Qpi
C40#!C)%!HpVMR[Hq&+BaPHP-D9T6Qpi8TcR9k8jjfP1IrK5S34AU8(U+33c&e5L
i&%!!*EN#!'i!!'S%B"SG%dRa%X!3j$A%"3"`#3%!%)SG!S!@!F"&l5T52#1'c(p
`#L#`aP#'LUJ!3c"bP"2[%)"A6,%K98`Hr14(2rYj%3!'#+-dGYLC!"cMM!a*SdN
H'%&09BmKEMN!$L[LK!!Xa#Y8"!!4Xp+3!(rXibe'L&mC3'!Rqi%!"89SJjP8CBB
hb!%%jJZ$'mJ3"MNS5j)Tk*3UR6H(l-Q"LlHDe!&PPBB!AK)1EjL$#bKCKcD))B!
p5!)4@%$*-TaKPflSj5rPd!0063S2a(c$!q9`"ea0%RfZK'8Pbj!!5P95S98J3&m
Gf%!((I`M(`&)!J#UX$d3X,*DiN-J#-S3`Pq&N`TCJ%)iRjI05AEbN`m%P56TN!!
(1%cb$E-+k"SR+FmhK8&Ca3+"+"m98))D&!3)h@FVkr"+KLB`JbjS`$FRL38M$-%
*qk3$4pf3!+Z!`L%-FaK$'0J!5ZRj8B&eSJ1`bSI4K))6Qab&TCTZP5YFDNUR&(e
$5"Z!*cMNJ8aR3)2iBT!!Jac%!!4+J01XLJ##*Nbd$$4Y!K'k1J9L8Q'FSTaN&Gb
3!!Bl"(!1DP+9Q0$`KMI30+00S'FDaU#T-K"cTM5&UP4cKEi!ZT8-$@M$9pN!"$Z
%!3mZ5+XZ9FU'Y,U!RR9S!!TF@-!Di!!(,DK"$Q!`JaSf*%a8%!)6XS+`P+aX*%!
`3QTA#i#VL!54$"P#T'4kKMF%C!"(!&BC("Z3!!qFC#3H)X!c*%''0q59)5!`5"+
BN!![KMc!#A8!J5)q15RacB%0i8X'hmd!!!: