小弟现遇到一个问题,要把dfm文件中有imename属性值wincontrol的该项属性删除,由于工程文件中dfm很多,不可能一个一个窗体来删,希望大侠们能指点一条光明大道
我的想法是,解析工!程文件中所有dfm文件,查找有没有此属性,有则删之。。不知该怎么实现。。急用!!
分可以在加。

解决方案 »

  1.   

    var
      AFile: TStrings;
      FileText, NewFileText: String;
      PFrom, PTo: Integer;
    const
      TextFrom = 'ImeName =';
      TextTo = #13;
    begin
      AFile := TStringList.Create;
      AFile.LoadFromFile('f:\Unit1.dfm');
      FileText := AFile.Text;
      PFrom := Pos(TextFrom, FileText);
      while PFrom <> 0 do
      begin
        NewFileText := NewFileText + Copy(FileText, 1, PFrom - 1);
        Delete(FileText, 1, PFrom);
        PTo := Pos(TextTo, FileText);
        if PTo <> 0 then
          Delete(FileText, 1, PTo);
        PFrom := Pos(TextFrom, FileText);
      end;
      NewFileText := NewFileText + FileText;
      AFile.Text := NewFileText;
      AFile.SaveToFile('f:\Unit1.dfm');
      AFile.Free;
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    只要你的DFM文件是保存成TXT格式的 就可以当作TXT文件来打开 来操作 没有什么区别的
    只是用POS函数来查找你要替换或者删除的字符串的时候要仔细判断 因为pos函数查出来的不是完全匹配的
      

  3.   

    不用这么麻烦!用两个TStringList对象置换一下就可以了!procedure UpdateDFM(ADFMPath:String);
    var
      vSource,vTarget:TStringList;
      I:Integer;
    const
      FindPropertyText='ImeName';
    begin
      try
        vSource:=TStringList.Create ;
        vTarget:=TStringList.Create ;
        with vSource do
        begin
          LoadFromFile(ADFMPath);
          vTarget.Clear;
          for I:=0 to Count-1 do
            if LeftStr(Trim(Strings[I]),7)<>FindPropertyText then
              vTarget.Add(Strings[I]);
          vTarget.SaveToFile(ADFMPath);
        end;
      finally
        vSource.Free;
        vTarget.Free;
      end;  
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      UpdateDFM('C:\CustomerFrm.DFM')
    end;
      

  4.   

    恩,这个高手们都说了,可以直接把dfm作为文本读入
      

  5.   

    呵呵,感谢大家,的确没想到dfm其实存的就是文本文件。没有别的格式。。这样就好办多了
      

  6.   

    但要注意,如果这个DFM文件因为某种原因已经变成了二进制的,这时候用这种操作就会导致DFM的错误,建议最好在做操作前备份一份以备不测
      

  7.   

    To XZHHAI  由于某种特殊原因变成二进制的?是什么特殊原因,说来听听!
      

  8.   

    在窗体上点右键,确保项view as text被选中,否则按2进制格式保存————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  9.   


    怎么能看到dfm是不是以2进制的格式保存的!!??