麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Visual FoxPro3.0經驗14條

2019-11-17 05:51:03
字體:
來源:轉載
供稿:網友
 1.怎樣解決不可視類庫操作中庫容量的“惡性膨漲”

  程序員用面向對象編程都會涉及到類庫,但當對象的繼續關系達到兩層以上時(這是很平常的現象),只要一修改兩層以上某個對象中的內容,就會驚異地發現:盡管修改量極小(有時只是簡單的刪除),但每一次的存盤操作都會使類庫的容量(即用DIR看到的字節數)增加很多,有時一次存盤操作可使其“容量”增加幾十K!筆者有一個實際內容只有50K的類庫,當調試完成后,發現該類庫的“容量”是800多K。筆者曾在多臺機器的多個版本上做過試驗,問題依舊。在排除了病毒騷擾的因素后,可以肯定:這是Visual FoXPRo自身固有的缺陷。
  顯然,這個問題給程序開發帶來了不小的麻煩。怎樣解決呢?筆者查過不少資料,做過多次試驗,都不得要領。后來在一次偶然的操作中,卻發現了一個簡單而有效的“類庫消腫”方法:
  ①.打開這個待處理的類庫,進入其中的一個繼續關系最復雜且最高層的對象(即最上層的父類);
  ②.修改一下該對象中的任一個方法或屬性(即增加一個字符,然后再刪除該字符);
  ③.保存并退出;
  ④.用Close all和Clear all徹底關閉類庫。
  此時再觀察該類庫的字節數,可以發現該類庫的“容量”已恢復正常。

  2.怎樣為備注型字段建索引

  Visual FoxPro3.0不支持長度變化的要害字,但筆者在實驗后發現,假如所建索引的備注型字段的長度在建完索引后不再變化,那么建立備注型字段的索引還是可行的。但在建索引時必須注重:索引的表達式不能直接用備注型的字段名,還要略加變通,如用TRIM()函數把備注型字段括起來,就能順利地為備注型字段建索引。

  3.建立索引的字符型字段答應的最大寬度

  資料中對此沒做說明,經試驗發現,此時索引答應的最大寬度為240個字符。

  4.當某個對象(中的)方法的形參過多時,最好用屬性數組來代替形參

  這種手段可以使主要處理過程的邏輯性更加清楚可讀。
  為了保證實質上的封閉性,屬性數組應該定義在主控方法所在的對象中;為了保證“視覺”上的封閉性(即增強程序代碼的可性),可以讓屬性數組與主控方法同名。
  為了進一步加強主控方法的可讀性,可為其專門增加一個附加方法只用于給做形參的屬性數組賦值。

  5.怎樣在對象中定義屬性數組

  在定義屬性時,直接用方括號給出行列值即可。如:A[5,9],即定義了一個5行9列的屬性數組。

  6.怎樣快速地建立Grid表格

  在程序中使用過Grid表格的程序員都覺得這種表格的建立方法有些麻煩,非凡是當表格的個數及表格項很多的時候,甚至會產生“懼怕感”。其實,只要能靈活地利用VFP的“表單生成器”,就能大大提高Grid表格的制作效率。
  這里假設需要以TTT.DBF為處理對象建立一個Grid表格,因為字段很多,Grid表格的表格項數也相應的多,所以只能采用“變通”的方法,步驟如下:
  ①.建立一個只有兩個字段的自由表aa.dbf,并使其中的一個字段能與TTT.DBF中的某個字段相關;
  ②.啟動“表單生成器”,選擇“向導方式”中的“一對多表單向導”;
  ③.在“一對多表單向導”的操作引導下,以aa.dbf為父表、TTT.DBF為子表的基本模式制作表單。在選擇子表字段時,以未來Grid表格的需要來進行TTT.DBF字段的選取。
  ④.打開由第③步制作的表單,剪切表單上的Grid表格,然后再退出該表單;
  ⑤.打開您程序中需要使用Grid表格的表單,把在第④步上剪切的Grid表格復制到當前表單上。
  至此,一個符合程序要求的Grid表格即制作完畢。無論Grid表格多么大,用本方法都能在兩分鐘內做出一個符合要求的Grid表格。而用“手工”制作一個僅50個字段的Grid表格一般需要半個小時(而且還可能出錯)。顯然,Grid表格越大,本方法的效率就越高。

  7.用“避開”的手段使對象中的方法“浮”起來

  所謂讓對象的方法“浮”起來,是指讓該方法運行時,能不受工作區、變量、已打開的數據表等的限制(即不受“現場”的限制),而且不干擾其它方法運行的一種手段。過去在教科書上學到的原則是:先保存“現場”,待處理工作完成后,再恢復“現場”。對VFP等數據庫系統來說,所謂“現場”多是指已經被占用的工作區、當前的磁盤目錄、已打開的數據表以及可能使用或正在使用的數據變量或對象的屬性等。
  因此,我們完全可以用“避開”的方式來達到目的,以下是“避開”法的基本步驟:
  ①.在本方法的起點先聲明變量私有化,記錄好本方法啟動前的工作區及磁盤目錄;
  ②.尋找并返回一個還未被使用的工作區,在該工作打開一個需要的數據表;
  ③.做本方法的“本職工作”(包括調用其它方法);
  ④.恢復本方法啟動前的工作區及工磁盤目錄;
  ⑤.退出本方法。
  由以上步驟可以看出,“避開”方式的基本要點是“單進單出”,以數據表為例:同一方法打開的數據表必須在該方法退出時關閉。對于工作區、磁盤目錄亦有同樣思路。顯然,這種手段占用的內存要多一些,在DOS時代是不合適的,對于WINDOWS就不是什么問題了。

  8.必須“自造”的幾個通用的對象方法

  以下是幾個用得最多,但在VFP中卻沒有現成可用的方法:

  ①.在盤上查找指定的數據庫
  LPARAMETERS file_dbc
  Private fff
  fff=trim(file_dbc)
  if len(fff)< 0.8
  &&假如沒指定數據庫,就說明后面要用的那些數據表都是自由表,所以不用打開數據庫

  return .t.
  endif
  IF .not.file('&fff')
  wait windows '在這個目錄下沒找到您指定的數據庫!'

  fff=.F.
  ELSE
  OPEN DATABASE &fff EXCLUSIVE
  fff=.T.
  ENDIF
  return fff

  ②.在指定的(子)目錄中查找指定的文件

  LPARAMETERS file,Text &&即:文件名,提示信息
  Private All
  ****** Like f*
  fff=trim(file)
  fff1=.t.
  IF .not.file('&fff')
  IF Len(Trim(Text)) >0.5
  &&若提示信息的內容為空則不做暫停顯示
  wait windows Text
  ENDIF
  fff1=.f.
  ENDIF
  return fff1

  ③.尋找并返回一個還未被使用的工作區

  Private ALL
  for I=1 to 10
  aaa_m=alias(I)
  if len(trim(aaa_m))< 0.5
  return I
  endif
  endfor
  return 0

  ④.建立一個指定的目錄

  LPARAMETERS dire &&待建的目錄名
  Private All Like f*
  fff='set Library to '+trim(This.path_FTS)
  +'/Foxtools.FLL Additive'
  &fff
  *set Library to Foxtools.FLL Additive
  fff1=.f.
  fff=trim(dire)
  if mkdir(fff)=0
  fff1=.t. &&建立成功
  endif
  set Library to
  return fff1

  9.快速查詢備注字段

  在對備往字段進行全文查找時,用ATC()函數比用AT-CLIEN()函數快數倍。

  10.最近匹配檢索

  在使用索引查找命令之前先設置“SET NEAR ON”有時極有用處,該設置的含義為:當查找失敗時,記錄號定位于最接近匹配的位置上,而不是在數據庫的末尾。比如對一個已打開日期字段索引的庫,想瀏覽3月5日之后的記錄,但事先只知道庫中有許多不連續的日期記錄,并不知道庫中是否確有3月5日的記錄。假如設置了“SET NEAR ON”,當庫中不存在3月5日的記錄時,就會定位在離3月5日最接近的3月6日或7日記錄處,從而達到查詢瀏覽目的。

  11.檢測某類文件

  函數FIEL()只能檢測某特定文件是否存在,不能檢測某類文件是否存在,而系統函數SYS(2000,<文件名>)則可搜尋某類文件,只要參數“文件名”中含有通配符“*?”即可。用這個方法還可以判定某子目錄是否為空,只要“文件名”用“路徑名”和“*.*”組成即可。

  12.保護屏幕畫面

  當在數據庫環境下調用DOS命令時,命令執行后輸出的信息往往會破壞數據庫環境已有的屏幕畫面。當然用保存屏幕再恢復的方法可以解決,但不如使用Dos的輸出重定向功能為好,這樣輸出的信息就不會向屏幕顯示。比如命令“RUN COPY ABC.* A:”可以改為:

  RUN COPY ABC.* A: >ttt.txt
  此時可將本來要輸出到屏幕的信息改道輸入到臨時文件ttt.Txt中去,保持屏幕不變。

  13.調用大尺寸外部程序

  在FoxPro環境下可以用RUN()命令直接調用外部Dos命令,但有時剩下的內存已不多,而外部程序又很大時就可能調用失敗。在FoxPro中有個內存治理程序FoxSWAP可以解決這個問題。調用WP5的命令可以寫為:

  RUN/120 wps

  14.用覆差法更新數據

  假如一個很大的數據庫需要經常進行數據更新,是好不要用刪除舊記錄再增加新記錄的方法,因為大數據庫的物理刪除PACK命令執行起來需要很長時間。此時最好用覆蓋的方法,即把新記錄的內容一一裝人舊記錄中。而這個過程最好用SCATTER命令和GATHER命令配合起來完成,前者的作用是把一條記錄的所有字段內容存人一個數組變量中,后者的作用則是把數組變量的內容存入一條記錄中。也就是說借用內存變量把新記錄的內容傳遞到舊記錄中,內存操作顯然比磁盤操作要快得多。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区欧美在线观看 | 91成人免费网站 | av在线播放电影 | 亚洲第一成人在线 | 一区二区三区在线观看免费视频 | 久久久久久亚洲国产精品 | 老师你怎么会在这第2季出现 | 亚洲午夜天堂吃瓜在线 | 欧美日本综合 | 久久精品国产99国产精品澳门 | 九九视屏| 一本色道久久综合亚洲精品图片 | 一级做受毛片免费大片 | av成人免费| 免费观看国产精品视频 | xfplay噜噜av | 久久成人亚洲 | 欧美a级在线免费观看 | 欧美一级鲁丝片免费看 | 国产午夜精品视频免费不卡69堂 | 日本精品二区 | 亚洲成人福利电影 | 91av日韩| 性爱视频免费 | 羞羞的小视频 | 国产一区二区免费在线观看视频 | 亚洲午夜免费 | 免费高清一级欧美片在线观看 | 成人短视频在线观看 | 欧洲成人在线视频 | 精品一区久久久 | 黄色的视频免费观看 | 免费a级黄色片 | 日本免费一区二区三区四区 | 国产亚洲精品久久 | 深夜福利视频绿巨人视频在线观看 | 久久久久成人免费 | 精品久久久久久久久久久久久 | 午夜影视一区二区 | 天天鲁在线视频免费观看 | 看免费黄色大片 |