123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- $PBExportHeader$n_xls_subroutines.sru
- forward
- global type n_xls_subroutines from nonvisualobject
- end type
- end forward
- global type n_xls_subroutines from nonvisualobject
- end type
- global n_xls_subroutines n_xls_subroutines
- type variables
- public n_cst_unicode invo_uc
- end variables
- forward prototypes
- public function blob of_pack (character ac_conv_type, unsignedlong al_val)
- public function blob of_pack_hex (string as_val)
- public function blob of_pack (character ac_conv_type, double ad_val)
- public function string of_str2xls (string as_str)
- public function string to_ansi (blob ab_value)
- public function string to_ansi (blob ab_value, unsignedinteger ai_codepage)
- public function string to_ansi (blob ab_value, unsignedinteger ai_codepage, character ac_defaultchar)
- public function blob to_unicode (string as_value)
- public function blob to_unicode (string as_value, unsignedinteger ai_codepage)
- end prototypes
- public function blob of_pack (character ac_conv_type, unsignedlong al_val);ulong ll_val
- char lc_val
- integer li_byte_count
- integer li_i
- blob{10} lblb_val
- choose case ac_conv_type
- case "v", "V", "C", "c"
- choose case ac_conv_type
- case "v"
- li_byte_count = 2
- case "V"
- li_byte_count = 4
- case "C", "c"
- li_byte_count = 1
- if al_val < 0 then
- al_val = 256 - mod(al_val, 129)
- end if
- end choose
- ll_val = al_val
-
-
-
- for li_i = 1 to li_byte_count
- blobedit(lblb_val, li_i, char(mod(ll_val, 256)))
- ll_val = ll_val / 256
- next
- case else
- messagebox("Error", "Invalid argument type in of_pack('" + ac_conv_type + "', ulong)")
- end choose
- return blobmid(lblb_val, 1, li_byte_count)
- end function
- public function blob of_pack_hex (string as_val);blob lblb_val
- blob{100} lblb_buff
- integer li_buff_size = 100
- integer li_buff_pos = 1
- integer li_i
- integer li_cnt
- string ls_str[2]
- integer li_j
- integer li_val
- setnull(lblb_val)
- li_cnt = len(as_val)
- lblb_buff=blob(space(li_buff_size))
- for li_i = 1 to li_cnt step 2
- if li_i = li_cnt then
- ls_str[1] = "0"
- ls_str[2] = mid(as_val, li_i, 1)
- else
- ls_str[1] = mid(as_val, li_i, 1)
- ls_str[2] = mid(as_val, li_i + 1, 1)
- end if
- li_val = 0
- for li_j = 1 to 2
- li_val = li_val * 16
- choose case ls_str[li_j]
- case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
- li_val += integer(ls_str[li_j])
- case "A"
- li_val = li_val + 10
- case "B"
- li_val = li_val + 11
- case "C"
- li_val = li_val + 12
- case "D"
- li_val = li_val + 13
- case "E"
- li_val = li_val + 14
- case "F"
- li_val = li_val + 15
- end choose
- next
- blobedit(lblb_buff, li_buff_pos, char(li_val))
- li_buff_pos ++
- if li_buff_pos = li_buff_size then
- if isnull(lblb_val) then
- lblb_val = lblb_buff
- else
- lblb_val = lblb_val + lblb_buff
- end if
- li_buff_pos = 1
- end if
- next
- if li_buff_pos > 1 then
-
- if isnull(lblb_val) then
- lblb_val = lblb_buff
- else
- lblb_val = lblb_val + lblb_buff
- end if
- end if
- return lblb_val
- end function
- public function blob of_pack (character ac_conv_type, double ad_val);blob{8} lb_ret
- Int li
- if ac_conv_type = "d" then
- li=blobedit(lb_ret, 1, ad_val)
- else
- messagebox("Error", "Invalid argument type in of_pack('" + ac_conv_type + "', double)")
- end if
- IF li>0 Then
- lb_ret= BlobMid(lb_ret, 1, li -1 )
- ELSE
- lb_ret=Blob("")
- END IF
- return lb_ret
- end function
- public function string of_str2xls (string as_str);long ll_pos
- ll_pos = pos(as_str, char(13)+"~n")
- do while ll_pos > 0
- as_str = replace(as_str, ll_pos, 2, "~n")
- ll_pos = pos(as_str, char(13)+"~n")
- loop
- ll_pos = pos(as_str, char(13))
- do while ll_pos > 0
- as_str = replace(as_str, ll_pos, 2, "~n")
- ll_pos = pos(as_str, char(13))
- loop
- return as_str
- end function
- public function string to_ansi (blob ab_value);return invo_uc.of_unicode2ansi(ab_value)
- end function
- public function string to_ansi (blob ab_value, unsignedinteger ai_codepage);return invo_uc.of_unicode2ansi(ab_value,ai_codepage)
- end function
- public function string to_ansi (blob ab_value, unsignedinteger ai_codepage, character ac_defaultchar);return invo_uc.of_unicode2ansi(ab_value,ai_codepage,ac_defaultchar)
- end function
- public function blob to_unicode (string as_value);RETURN invo_uc.of_ansi2unicode(as_value)
- end function
- public function blob to_unicode (string as_value, unsignedinteger ai_codepage);return invo_uc.of_ansi2unicode(as_value,ai_codepage)
- end function
- on n_xls_subroutines.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on n_xls_subroutines.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|