⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9919.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 3 页
字号:
     
                               小小点歌台 

                               (重庆 张毅) 

  MP3作为一种高压缩比的音频文件,能够让你仅在一张光盘中就拥有多达
上百首的歌曲。面对如此众多的曲目,你是否希望能够快速地选择自己喜爱的
歌曲播放。现在利用Visual FoxPro 5.0强大的程序设计功能,这一设想很容
易就成为了现实。 
  首先进入VF5.0,为你的曲目创建自由表格(假设文件名为wf1.dbf),字
段必须包括歌名、顺序、专辑,你也可以增添歌词、作词、作曲等。现在开始
输入记录,也许你会觉得这是件苦差事,幸好VF向我们提供了添加数据的简单
途径。一般来说,MP3光盘的每个专辑各为一子目录,其下的*.txt文件即包
括了各曲目的名称、顺序。打开任一文本编辑器,将各个txt文件合并为wf.txt,
去掉多余部分,给每一项加上专辑名,形成如下格式: 
       顺序 歌名 专辑目录名 
          . 
          . 
        . 
  在FoxPro菜单中,选择Table->Append Record, 在type框中选择源文件
格式为Delimited,间隔符为{space},在From框输入源文件名(wf.txt),完成
选择OK。 
  打开菜单File->New->Project,选择code->program,单击Modify,输
入下面程序: 
  dimension gaMylistarray(10) 
  for gncount = 1 to 10 
  store replicate(' ',10) to gaMylistarray(gncount) 
  endfor 
  frm = createobject('frmmyform') 
  frm.visible=.t. 
  frm.cmd1.Visible =.t. 
  frm.cmd2.Visible=.t. 
  frm.cmdcmndBtn1.Visible =.t. 
  frm.cmdcmndBtn2.Visible =.t. 
  frm.cmdcmndBtn3.Visible =.t. 
  frm.caption=″点歌台″ 
  _screen.visible=.f. 
  public st6,st7 
  use wf1.dbf shared&&打开歌曲数据表格 
  frm.show 
  read events 
  define class frmmyform as form 
  width=350 
  height=190 
  maxheight=200 
  maxwidth=350 
  minheight=200 
  minwidth=350 
  maxbutton=.f. 
  autocenter=.t. 
   desktop=.t. 
  showwindow=2 
  add object cmd1 as cmd1 
  add object cmd2 as cmd2 
  add object cmdcmndBtn1 as cmdMycmndBtn1 
  add object cmdcmndBtn3 as cmdMycmndBtn3 
  add object cmdcmndBtn2 as cmdMycmndBtn2 
  add object lbl as label with; 
   backstyle=0,; 
   caption=“请输入歌名:",; 
   left=25,; 
   top=115 
  procedure unload 
  close all 
  clear events 
  endpro 
  procedure find 
   parameter st1 
   do while not eof() 
   skip+1 
   st2=歌名 
   true=this.compare(st1,st2) 
   if(true=.t.) 
   st6=专辑 
   st7=顺序 
   st3='专辑名:'+专辑名 
   st8='('+st7+' '+st6+')' 
   st4='歌名:'+歌名 
   frm.cmdcmndBtn1.enabled =.t. 
   this.cmd2.value=st3+chr(13)+st4+chr(13)+st8 
   return 
   endif 
   enddo 
   go top 
   this.cmd2.value=chr(13)+' 对不起,没有这首歌' 
   frm.cmdcmndBtn1.enabled =.F. 
  endpro 
  procedure compare 
  parameter source,tar 
  long1=len(source) 
  len1=long1/2 
  real=.f. 
  ka=0 
  for i=1 to long1 step 2 
   sub=substr(source,i,2) 
   if(sub$tar) 
   ka=ka+1 
   endif 
   if(ka>0.6*len1) 
   real=.t. 
   exit 
   endif 
  next 
  return real 
  endpro 
  enddefine 
  define class cmd1 as combobox 
   left=90 
   top=110 
   width=150 
   height=20 
   MultiSelect = .t. 
   autosize=.t. 
   RowSourcetype = 5 
   RowSource = 'gaMylistarray' 
   proce click 
   activate screen 
   clear 
   for ncnt = 1 to thisform.cmd1.listcount 
   if thisform.cmd1.Selected(ncnt) 
   text=thisform.cmd1.list(ncnt) 
   endif 
   endfor 
   endpro 
   procedure interactivechange 
   go top 
   frm.find(trim(frm.cmd1.text)) 
   endpro 
  enddefine 
  define class cmd2 as textbox 
   left=55 
   top=30 
   width=210 
   height=65 
   enabled=.F. 
   fontsize=12 
   disabledforecolor=0 
  enddefine 
  define class cmdMycmndBtn1 as commandButton 
   caption = '播放\   left = 20 
   top = 150 
   height = 25 
   enabled=.F. 
   num1=1 
   procedure click 
   if(this.num1=11) 
   this.num1=1 
   endif 
   gaMylistarray(this.num1)=歌名 
   this.num1=this.num1+1 
   *运行你的MP3播放器,包括盘符、路径。(这里采用mp2win5)。 
   *假设i盘为光驱,(track)是文件名公用部分。 
  run/n d:\maplay\mp2win5 i:\list7\track&st6..mp3 
  endpro 
  enddefine 
  define class cmdMycmndBtn2 as commandButton 
   caption = '查找\   left = 230 
   top=150 
   height = 25 
   procedure click 
   frm.find(trim(frm.cmd1.text)) 
   endpro 
  enddefine 
  define class cmdMycmndBtn3 as commandButton 
   caption='结束(《Q)' 
   cancel = .t. 
   left = 125 
   top = 150 
   height = 25 
   procedure click 
   close all 
   clear events 
   endpro 
  enddefine 
  选择program->compile,编译成功的一个‘小小点歌台’就做成了。程序
运行后,输入你所需的歌曲,计算机会进行动态查找。如果没有找到,单击查
找,继续搜索。一旦找到,单击播放按钮,所点歌曲即被播放。并且每次播放
的歌曲都会被收入列表菜单中(可多达10首),以便下次重放。怎么样,赶快
去试试吧! 
  
***********************************************************

                   FOXPRO低级文件函数读写数据及应用 

                             (江西 熊正华) 

  Foxpro是在Foxbase基础上发展起来的一个强大的关系型数据库系统,从
Foxpro2.0起系统性能更加突出,功能也有较大的扩展,并提供了一系列用于
文件读写的低级文件操作函数。 
  然而Foxpro低级文件函数处理的数据对象仅局限于字符数据,对数值数
据则无直接的读写能力。要弥补这一不足,一种可选择的方法是采用C语言编
写新的文件读写函数,但这对一般的Foxpro用户并不容易。笔者经过一番摸
索,发现只要经过适当的数据转换,完全可利用Foxpro本身所提供的语言系
统解决某些应用问题。 
  一般来说,数值数据在文件中有三种存放格式:一是十进数ASCⅡ码格
式,文件中存放的是十进制数码符(0-9)、小数点和正负号所对应的ASCⅡ
码;二是二进制整数格式,负整数用补码表示,各字节值与256进制数的各
数码值(从低位到高位)相同;三是二进制浮点数格式,数据用规格化的指数
形式表示,分单精度数和双精度数。 
  据分析,文件中的数据是按字节存放的,且每个字节的值都可理解成一
个ASCⅡ(包括扩展码),因此存放于文件中任何格式的数值数据均能转换为
Foxpro低级文件函数读写的ASCⅡ码字符串。对于十进制ASCⅡ码格式和二进
制整数格式的数值数据,具体的转换方法是: 
  1、按ASCⅡ码格式写数值数据时,可用类型转换函数str()将数值数据
转换为ASCⅡ码格式的字符串。从文件中读ASCⅡ码格式的数值数据时,应将
读出的字符串用函数VAL()或宏&代换还原成数值数据。 
  2、按二进制整数格式写无符号整数时,应根据数制转换规则求出256进
制数的各位数码值,并用函数chr()转换为字符后反位序(从低位到高位)合
并成串。从文件中读二进制格式的无符号整数时,需用256进数转换为10进
数的方法转换所读取的字符数据。 
  3、按二进制格式写有符号整数时,需将其转换为补码后再用方法2进行
转换。从文件中读二进制格式的有符号整数时,对返回的数值数据要作补码
还原运算。数据A的补码可用下式表示: 
  【A】补=2n-

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -