错误主要出现在下面两段程序中:
unit untMain;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, ComCtrls, AppEvnts, ImgList, ActnList,
  StdActns, ExtActns, ToolWin;
type
  TfrmMain = class(TForm)
    ActionList1: TActionList;
    MainMenu1: TMainMenu;
    PopupMenu1: TPopupMenu;
    ImageList1: TImageList;
    ApplicationEvents1: TApplicationEvents;
    File1: TMenuItem;
    Edit1: TMenuItem;
    Search1: TMenuItem;
    Window1: TMenuItem;
    Help1: TMenuItem;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    EditPaste1: TEditPaste;
    EditSelectAll1: TEditSelectAll;
    EditUndo1: TEditUndo;
    EditDelete1: TEditDelete;
    RichEditBold1: TRichEditBold;
    RichEditItalic1: TRichEditItalic;
    RichEditUnderline1: TRichEditUnderline;
    RichEditStrikeOut1: TRichEditStrikeOut;
    RichEditBullets1: TRichEditBullets;
    RichEditAlignLeft1: TRichEditAlignLeft;
    RichEditAlignRight1: TRichEditAlignRight;
    RichEditAlignCenter1: TRichEditAlignCenter;
    WindowClose1: TWindowClose;
    WindowCascade1: TWindowCascade;
    WindowTileHorizontal1: TWindowTileHorizontal;
    WindowTileVertical1: TWindowTileVertical;
    WindowMinimizeAll1: TWindowMinimizeAll;
    WindowArrange1: TWindowArrange;
    FileOpen1: TFileOpen;
    FileSaveAs1: TFileSaveAs;
    FilePrintSetup1: TFilePrintSetup;
    FileExit1: TFileExit;
    SearchFind1: TSearchFind;
    SearchFindNext1: TSearchFindNext;
    SearchReplace1: TSearchReplace;
    SearchFindFirst1: TSearchFindFirst;
    FileNew1: TAction;
    FileSave1: TAction;
    FilePrintDlg1: TAction;
    HelpAbout1: TAction;
    Open1: TMenuItem;
    SaveAs1: TMenuItem;
    PrintSetup1: TMenuItem;
    Exit1: TMenuItem;
    New1: TMenuItem;
    Save1: TMenuItem;
    Print1: TMenuItem;
    Cut1: TMenuItem;
    Copy1: TMenuItem;
    Delete1: TMenuItem;
    SelectAll1: TMenuItem;
    Undo1: TMenuItem;
    Delete2: TMenuItem;
    Bold1: TMenuItem;
    Italic1: TMenuItem;
    Underline1: TMenuItem;
    Strikeout1: TMenuItem;
    Bullets1: TMenuItem;
    AlignLeft1: TMenuItem;
    AlignRight1: TMenuItem;
    Center1: TMenuItem;
    Find1: TMenuItem;
    FindNext1: TMenuItem;
    Replace1: TMenuItem;
    FindFirst1: TMenuItem;
    Close1: TMenuItem;
    Cascade1: TMenuItem;
    ileHorizontally1: TMenuItem;
    ileVertically1: TMenuItem;
    MinimizeAll1: TMenuItem;
    Arrange1: TMenuItem;
    Help2: TMenuItem;
    About1: TMenuItem;
    ControlBar1: TControlBar;
    ToolBar1: TToolBar;
    ToolBar2: TToolBar;
    ToolBar3: TToolBar;
    ToolBar4: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ToolButton19: TToolButton;
    ToolButton20: TToolButton;
    ToolButton21: TToolButton;
    ToolButton22: TToolButton;
    ToolButton23: TToolButton;
    ToolButton24: TToolButton;
    ToolButton25: TToolButton;
    ToolButton26: TToolButton;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure ApplicationEvents1Hint(Sender: TObject);
    procedure FileNew1Execute(Sender: TObject);
    procedure FileOpen1Accept(Sender: TObject);
    procedure FileSave1Execute(Sender: TObject);
    procedure FileSave1Update(Sender: TObject);
    procedure FileSaveAs1Accept(Sender: TObject);
    procedure FilePrintDlg1Accept(Sender: TObject);
    procedure HelpAbout1Execute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure UpdateStatusBar;
    function QueryChildByFileName(AFileName:string):Integer;
    procedure OpenFile(AFileName:string);
  end;var
  frmMain: TfrmMain;implementationuses untChild, UntAbout;procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FileSaveAs1.Dialog.InitialDir:=ExtractFilePath(Application.ExeName)+'Files\';
  FileOpen1.Dialog.InitialDir:=ExtractFilePath(Application.ExeName)+'Files\';
end;procedure TfrmMain.ApplicationEvents1Hint(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:=GetLongHint(Application.Hint);
end;
procedure TfrmMain.UpdateStatusBar;
begin
  if ActiveMDIChild<>nil then begin
    StatusBar1.Panels[1].Text:=IntToStr((ActiveMDIChild as TfrmChild).RichEdit1.CaretPos.Y+1)+':'+IntToStr((ActiveMDIChild as TfrmChild).RichEdit1.Caretpos.X+1);
    if(ActiveMDIChild as TfrmChild).IsModified then
      StatusBar1.Panels[2].Text:='Modified.'
    else
      StatusBar1.Panels[2].Text:='Not Modified.';
   end;
end;
procedure TfrmMain.FileNew1Execute(Sender: TObject);
begin
  with TfrmChild.Create(Self) do;
  Caption:='未命名';
end;function TfrmMain.QueryChildByFileName(AFileName:string):Integer;
var
  i:Integer;
begin
  for i:=0 to MDIChildCount-1 do
    with MDIChildren[i] as TfrmChild do begin
      if not IsNamed then
        continue;
      if FileName=AFileName then begin
        Result:=i;
        Exit;
      end;
    end;
   Result:=-1;
 end;
procedure TfrmMain.OpenFile(AFileName:string);
var
  AChild:Integer;
begin
  AChild:=QueryChildByFileName(AFileName);
  if AChild=-1 then begin
    frmChild:=TfrmChild.Create(Self);
    frmChild.LoadFromFile(AFileName);
    UpdateStatusBar();
  end
  else begin
    MDIChildren[AChild].BringToFront();
    UpdateStatusBar();
  end;
end;procedure TfrmMain.FileOpen1Accept(Sender: TObject);
begin
  OpenFile(FileOpen1.Dialog.FileName);
end;procedure TfrmMain.FileSave1Execute(Sender: TObject);
begin
  if ActiveMDIChild=nil then
    Exit;
  with ActiveMDIChild as TfrmChild do begin
    if not IsNamed then       //若文件从未保存,执行另存命令
      FileSaveAs1.Execute
    else if IsModified then
      SaveToFile(FileName);
  end;
end;procedure TfrmMain.FileSave1Update(Sender: TObject);
begin
  if ActiveMDIChild<>nil then
    with ActiveMDIChild as TfrmChild do begin
      if IsModified then
        FileSave1.Enabled:=True
      else
        FileSave1.Enabled:=False;
  end;
end;procedure TfrmMain.FileSaveAs1Accept(Sender: TObject);
begin
  if ActiveMDIChild=nil then
    Exit;
  with ActiveMDIChild as TfrmChild do begin
    SaveToFile(FileSaveAs1.Dialog.FileName);
    IsModified:=False;
  end;
end;
procedure TfrmMain.FilePrintDlg1Accept(Sender: TObject);
begin
  frmChild.RichEdit1.Print(frmChild.FileName);
end;procedure TfrmMain.HelpAbout1Execute(Sender: TObject);
begin
  frmAbout:=TfrmAbout.Create(Self);
  frmAbout.ShowModal;
  frmAbout.Free;
end;
end.

解决方案 »

  1.   

    接着上面的:
    unit untChild;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;type
      TfrmChild = class(TForm)
        RichEdit1: TRichEdit;
        procedure FormActivate(Sender: TObject);
        procedure RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure RichEdit1KeyUp(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
        procedure SetFileName(const Value:string);
        procedure SetIsModified(const Value:Boolean);
        procedure SetIsNamed(const Value:Boolean);
      public
        { Public declarations }
        FIsModified, FIsNamed: Boolean;
        FFileName: string;
        property IsModified:Boolean read FIsModified write SetIsModified; 
        property IsNamed:Boolean read FIsNamed write SetIsNamed; 
        property FileName:string read FFileName write SetFileName; 
        constructor Create(AOwner:TComponent);override;
        procedure LoadFromFile(AFileName:string);
        procedure SaveFile(AFileName:string);
      end;
    var
      frmChild: TfrmChild;implementationuses untMain;{$R *.dfm}procedure TfrmChild.SetFileName(const Value:string);
    begin
      FFileName:=Value;
      Caption:=Value;
    end;
    procedure TfrmChild.SetIsModified(const Value:Boolean);
    begin
      FIsModified:=Value;
    end;
    procedure TfrmChild.SetIsNamed(const Value:Boolean);
    begin
      FIsNamed:=Value;
    end;
    constructor TfrmChild.Create (AOwner:TComponent);
    begin
      inherited;
      IsModified:=False;
      IsNamed:=False;
      FileName:='';
      FileName:='未命名';
    end;
    procedure TfrmChild.LoadFromFile(AFileName:string);
    begin
      RichEdit1.Lines.loadFromFile(AFileName);
      IsNamed:=True;
      FileName:=AFileName;
      Caption:=AFileName;
      IsModified:=False;
    end;
    procedure TfrmChild.SaveFile(AFileName:string);
    begin
      IsNamed:=True;
      FileName:=AFileName;
      RichEdit1.Lines.SaveToFile(AFileName);
      IsModified:=False;
      Caption:=AFileName;
    end;
    procedure TfrmChild.FormActivate(Sender: TObject);
    begin
      frmMain.UpdateStatusBar();
    end;
    procedure TfrmChild.RichEdit1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      frmMain.UpdateStatusBar();
    end;procedure TfrmChild.RichEdit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key<=40) and (Key>=37) then
        frmMain.UpdateStatusBar();
    end;procedure TfrmChild.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    var
      r:Word;
    begin
      if IsModified then begin
        r:=MessageDlg('File'+FileName+'was modified.Save it now?',mtConfirmation,[mbYes,mbNo,mbCancel],0);
        case r of
          mrYes:begin   
            if FileName='' then
               frmMain.FileSaveAs1.Execute
            else
              RichEdit1.Lines.SaveToFile(FileName);
            CanClose:=True;
          end;
          mrNo:       
            CanClose:=True;
          mrCancel:     
            CanClose:=False;
        end;
      end
      else
        CanClose:=True;
    end;procedure TfrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
      frmMain.StatusBar1.Panels[1].Text:='';
      frmMain.StatusBar1.Panels[2].Text:='';
    end;end.错误提示如下:
    [Error] untMain.pas(216): Undeclared identifier: 'SaveToFile'
    [Error] untMain.pas(236): Undeclared identifier: 'SaveToFile'
      

  2.   

    216行: SaveToFile(FileName);
    236行: SaveToFile(FileSaveAs1.Dialog.FileName);是什么东西SaveToFile ? 比如是Memo1.Lines.SaveToFile(FileName);
    或者你的SaveToFile自己定义的方法,但在代码中又没看到,自己检查检查
      

  3.   

    根据你的情况大致的看了一下, SaveToFile改成SaveFile试试