Tôi giải quyết vấn đề này theo cách khác. Tôi đã viết một tiện ích nhỏ mà tải một tập tin DFM, và tìm kiếm các thuộc tính mà không nên có mặt. Bao gồm cơ sở dữ liệu.kết nối = giá trị đúng.
Điều này có thể được sửa đổi để làm việc với bất kỳ thuộc tính thích hợp nào. Tôi đã đặt cốt lõi của mã ở đây.
Để làm điều này thực sự hữu ích, bạn nên sử dụng tiện ích này trong tập lệnh xây dựng của mình (tôi sử dụng FinalBuilder). Kịch bản của tôi bắt đầu bằng cách lặp lại các tệp .dfm, loại bỏ bất kỳ thuộc tính nào trong số này, sau đó nó biên dịch và chạy các kiểm tra đơn vị. Nếu họ vượt qua, sau đó nó tiếp tục xây dựng ứng dụng chính. Đối với tôi, đây là một cách tốt hơn so với việc thử nghiệm đơn vị không thành công, vì bạn có thể bắt đầu từ một điểm tốt được bảo đảm.
nState := 0;
bFound := False;
for nFileLoop := 0 to memoFile.Lines.Count - 1 do
begin
szLine := memoFile.Lines[nFileLoop];
case nState of //
0:
begin
if(0 <> Pos('TADOConnection', szLine)) then
begin
szSeeking := 'Connected';
nState := 1;
end
else if(0 <> Pos('TADOTable', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TADOQuery', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMTable', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMDatabase', szLine)) then
begin
szSeeking := 'Connected';
nState := 1;
end
else if(0 <> Pos('TDBISAMSession', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end
else if(0 <> Pos('TDBISAMQuery', szLine)) then
begin
szSeeking := 'Active';
nState := 1;
end;
end;
1 :
begin
bFound := True;
if(0 <> Pos('end', szLine)) then
begin
nState := 0;
end
else if(0 <> Pos(szSeeking, szLine)) then
begin
nPos := Pos('=', szLine);
if nPos > 0 then
begin
memoFile.Lines[nFileLoop] := Copy(szLine, 1, nPos) + ' False';
end;
end;
end;
end; // case
end;
ngọt ngào, không bao giờ biết rằng đã tồn tại. cảm ơn. – TrevorD