home *** CD-ROM | disk | FTP | other *** search
- /*------------------------------------------------------------------*/
- /* SEEKBYTE.C */
- /*------------------------------------------------------------------*/
- /* API ▒` ªí : seek_byte() */
- /* API ¿τ╝╞└] : seekbyte.plb */
- /*------------------------------------------------------------------*/
- #include <pro_ext.h>
- #define FALSE 0
- void FAR seek_byte(ParamBlk FAR *parm)
- {
- char FAR *string,buff[2];
- int my_byte;
- MHANDLE handle,myhandle;
- unsigned int my_len;
- my_len = parm->p[0].val.ev_length; /* ªrªΩ¬║¬°½╫ */
- handle = parm->p[0].val.ev_handle; /* └≥¿·ª╣ªrªΩñº│B▓z╛╣ */
- my_byte= parm->p[1].val.ev_long; /* ├¼¿·⌐╥¡n┼╠¿·ñºª∞ñ╕▓╒¬║ª∞╕m */
- if (my_byte > my_len) /* ªp¬G⌐╥¡n┼╠¿·ñºª∞ñ╕▓╒¬║ª∞╕mñj⌐≤ªrªΩñº¬°½╫ */
- _RetLogical(FALSE);
- else
- {
- myhandle = _AllocHand(my_len);
- string = (char FAR *) _HandToPtr(myhandle);
- _MemMove(string,_HandToPtr(handle),my_len); /* ½■│╞ª╣ªrªΩ */
-
- buff[0] = takebyte(string, my_byte);
- buff[1] = '\0'; /* ¿╧Ñ╬ _RetChar() ╢╟ª^ñºªrªΩ╗▌ÑH null ╡▓º└ */
-
- _RetChar(buff); /* ▒N¡╚╢╟ª^╡╣ FoxPro */
- _FreeHand(myhandle); /* ─└⌐±▒╝ñúªA╗▌¡nñº MHANDLE */
- }
- return; /* ▓{ªb¬≡ª^ª▄ FoxPro */
- }
-
- takebyte(char FAR *str, int byte)
- {
- *str=*(str+byte-1);
- return(*str);
- }
-
- FoxInfo myFoxInfo[] = {
- {"SEEK_BYTE",seek_byte,2,"C,I"}
- };
-
- FoxTable _FoxTable = {
- (FoxTable FAR *)0,
- sizeof (myFoxInfo) / sizeof (FoxInfo),
- myFoxInfo
- };