雖然自己還沒完全懂得漢化怎麼做,但根據安仔放下來的任務做做還是蠻有想法的,畢竟針對特定文件的一次性程序和適用各種類型文件的通用程序,所需要寫的代碼很不一樣,因爲爲了以後能更好的利用原先的代碼,必須儘量避免寫死一些參數。這裏我就感慨幾種自己用到的方法。
1.宏定義法
#define HEAD_LENGTH 8 //文件頭名稱的長度 #define PAK_COUNT 31 //需打包的文件的個數 #define PAK_START_OFFSET (0x90) //第一個包開始的偏移位置
這個就是教科書上的方法,也是宏定義第一種也最通用的方法,對於常量確實很有用。不過個人總覺的這種常量應該是幾個程序共同的數值,而不是一個程序一種常量值,所以上面代碼中的各種數值個人感覺不適宜用宏定義法,除非該程序只特定解決一個包文件。(這正是我最不想寫的一次性程序)
如何在程序中自動獲得這些常量的值(其實這些常量相對於不同的包還是變量),暫時沒想到簡單的方法,因爲只做了兩個打包文件和一個拆包文件,獲取這些常量通用的規律還沒找到。就算找到了還沒想到如何用簡潔的代碼表示出來。
2.函數化法
inline void getSrcName_i (char *srcName, char *outName, ULONG i) { sprintf (srcName, "%s%d", outName, i + 1); }
這個函數體只有一句,我仍然把它作爲一個函數,爲的就是以後修改方便,因爲貌似每次各個小包的命名方式都不一樣,以後想辦法在拆包時就統一各個小包的命名規則吧。而且小包是否有壓縮,命名方式又會有不同,是否包名中間加入lz77的標識我也說不準。
o(╯□╰)o:剛看自己代碼才發覺拆包程序生成的包的文件名太複雜了,害的打包程序要這麼說明:
/*
* 打包工具
*
* 參數爲需要生成的包名文件,格式爲 *.PAK
* 需要打包的包名要求格式爲 _*.PAK_$$.PAK ($$代表小包的序號,比如84)
* 或者 _*.PAK_$$.zip.PAK ($$代表小包的序號,比如84)
*
*/
以後一定要在拆包的函數裏面寫好生成什麼格式的包名,省的打包時文件名字符串處理一大堆事情
暈乎乎的,不寫了,睡覺去了。