以下の例では、.dfmファイルの行数をカウントしており、.dfmが保存されているためカウントが間違っていますバイナリ形式。すべてのdfmファイルでテキストdfm値をチェックする方法/ .dfmバイナリファイルの行数をカウントする
もし私が.dfmファイルを開いて、右クリックしてテキストdfmをチェックすると、カウントが正しく来ていれば。以下のコード
function TForm1.FindNumberOfLinesInFile(FileName: String): Integer;
var
contents : TStringList;
filestream : TFileStream;
outStream : TMemoryStream;
begin
try
try
Result := 0;
contents := TStringList.Create;
if edtFileToSearch.Text = '.dfm' then
begin
contents.LoadFromFile(FileName);
//i am binary
if pos('OBJECT', Uppercase(contents[0])) = 0 then // Count is coming wrong with this
begin
contents.Clear;
fileStream := TFileStream.Create(FileName, fmShareDenyNone);
outStream := TMemoryStream.Create;
try
ObjectResourceToText(filestream,outStream);
outStream.Position := 0;
Contents.LoadFromStream(outStream);
finally
FreeAndNil(outStream);
end;
end
else
begin
fileStream := TFileStream.Create(FileName, fmShareDenyNone);
Contents.LoadFromStream(fileStream);
end;
end
else
begin
fileStream := TFileStream.Create(FileName, fmShareDenyNone);
Contents.LoadFromStream(filestream);
end;
Result := contents.Count;
finally
FreeAndNil(fileStream);
FreeAndNil(contents);
end;
except
on e: Exception do Result := -1;
end;
end;
は、私は2つの質問
1)すべてのDFMファイル(私は約1000のDFMファイルを持っている)で確認する方法をテキストDFM値を設定することがありますか?
2)バイナリファイルを正しく読み込んで行数をカウントするには?
'Tools - > Environment Options - > Designer'の下にある 'New forms as text'チェックボックスがあります。デフォルトでは新しいフォームがテキスト形式になるようにチェックします。 – ain