生成詳細文件

2021-05-25 02:42:07 字數 3906 閱讀 4271

unit unitfunc;

inte***ce

uses

windows, messages, sysutils, classes;

type

tfunc = class(tpersistent)

private

obj_name: string;

obj_desc: string;

obj_type: string;

in_list: tstrings;

out_list: tstrings;

dispose: string;

cs: tstrings;

procedure init;

procedure clear;

function getpkg(): tstrings;

procedure comment(const ct: widestring);

procedure paramater(const ct: widestring);

function gettype(const ct: widestring): boolean;

function getpc(const ct: widestring): string;

public

constructor create;

destructor destroy; override;

function getsamplepkg(mm: tstrings): tstrings;

end;

function singlefunc(): tfunc;

resourcestring

cmt = '%s

%s';

implementation

varffunc: tfunc;

function singlefunc(): tfunc;

begin

if not assigned(ffunc) then

ffunc := tfunc.create;

result := ffunc;

end;

constructor tfunc.create;

begin

init;

end;

destructor tfunc.destroy;

begin

in_list.free;

out_list.free;

cs.free;

inherited;

end;

function tfunc.getsamplepkg(mm: tstrings): tstrings;

vari: integer;

bool: boolean;

str: string;

begin

clear;

bool := false;

for i := 0 to mm.count - 1 do

begin

str := uppercase(mm[i]);

if pos(':', str) > 0 then comment(str);

if not bool then

bool := gettype(str);

if bool then paramater(str);

end;

result := getpkg;

end;

function tfunc.getpkg: tstrings;

begin

result := tstringlist.create;

result.add('');

result.add(format(cmt, ['物件名稱', obj_type + obj_name]));

result.add(format(cmt, ['物件描述', obj_desc]));

result.add(format(cmt, ['輸入', in_list.text]));

result.add(format(cmt, ['輸出', out_list.text]));

result.add(format(cmt, ['處理', self.dispose]));

result.add('');

end;

procedure tfunc.comment(const ct: widestring);

varp: integer;

ls, rs: widestring;

begin

p := pos(':', ct);

ls := uppercase(trim(copy(ct, 5, p - 5)));

rs := trim(copy(ct, p + 1, length(ct)));

if sametext(ls, 'name') then

obj_name := rs

else if sametext(ls, 'description') then

obj_desc := rs;

end;

procedure tfunc.init;

begin                      

in_list := tstringlist.create;

out_list := tstringlist.create;

cs := tstringlist.create;

cs.add('name=物件名稱');

cs.add('description=物件描述');

cs.add('dispose=處理');

end;

procedure tfunc.clear;

begin

obj_name := '';

obj_desc := '';

obj_type := '';

in_list.clear;

out_list.clear;

end;

function tfunc.gettype(const ct: widestring): boolean;

begin

result := pos('procedure', ct) > 0;

if result then

obj_type := '過程'

else if (pos('function', ct) > 0) then

begin

result := true;

obj_type := '函式';

end;

end;

procedure tfunc.paramater(const ct: widestring);

varl, p: integer;

begin

p := pos(' in ', ct);

if (p > 0) then

begin

l := pos('(', ct) + 1;

in_list.add(trim(copy(ct, l, p - l)) + getpc(ct) + '

');end

else begin

p := pos(' out ', ct);

if (p > 0) then

out_list.add(trim(copy(ct, 1, p)) + '

');end;

end;

function tfunc.getpc(const ct: widestring): string;

varp: integer;

begin

p := pos('--', ct);

if p = 0 then

result := ''

else

result := ' ' + trim(copy(ct, p + 2, length(ct)));

end;

end.

介面文件生成詳細教程

介面文件是乙個專案開發中必需的說明文件,但時介面文件編寫起來比較費事費力。本文為大家推薦一款特別好用的介面文件生成工具 apipost apipost是一款國產的介面測試和介面文件生成的工具。其中它介面文件生成的功能特別強大。開啟apipost編寫乙個登入的介面請求 它這裡有兩個功能,成功響應示例及...

詳細設計文件

如上圖,可以看到詳細設計文件是,瀑布模型 中承上啟下的乙個關鍵環節,在做好需求分析和軟體架構之後,寫好詳細設計文件就意味可以進行編碼了。由此,可以看到詳細設計文件有三個作用 1,為具體編碼環節做好鋪墊與設計,從而指導編碼工作 2,提供測試所需文件參考 3,可作為理解編碼的參考文件。詳細設計的主要任務...

詳細設計文件

如何寫詳細設計文件是乙個很頭疼的話題,簡單的說是需求文件的昇華,也可以說是開發人員開發程式的依據,當然根據詳細設計文件的粒度進行。好的詳細設計文件是需求人員和開發人員之間的橋梁,不過目前好多程式開發都是先開發後,然後為了應付審核,公司制度,文件規範,開發完成後後續補上該文件。如果這樣的方式,詳細設計...