显示如下:
Access violation at address 004D2FAB in module 'Project1.exe'.Read of address 00000008.


好像是这个语句有问题:
[color=FF0000] num:=pos('-',MainNode.Text)-1;[/color]



大家帮忙看下,谢谢



源代码如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ADODB, ComCtrls, TabNotBk, ExtCtrls, DBCtrls,
  StdCtrls, Mask;

type
  TForm1 = class(TForm)
    TabbedNotebook1: TTabbedNotebook;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    TreeView1: TTreeView;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    StatusBar1: TStatusBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    Panel3: TPanel;
    Panel4: TPanel;
    DBNavigator2: TDBNavigator;
    DBGrid2: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Panel5: TPanel;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Button4: TButton;
    procedure FormShow(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
  private
    { Private declarations }
    procedure loadtree;  //目录树的初始化
    function getlevel(levelformat,nowcode: String): integer;
    //获取节点层次
  public
    { Public declarations }
    MainNode: TTreeNode;  //当前节点
    NodeID: String;  //树节点ID
  end;
  const
 codeformat='12222';  //编码格式:x xx xx xx xx
var
  Form1: TForm1;

implementation
uses Unit2;
{$R *.dfm}
{ TForm1 }
function TForm1.getlevel(levelformat, nowcode: String): integer;
var
 level,ilen,i: integer;
begin
 level:=-1;
 ilen:=0;
 if (levelformat<>'') and (nowcode<>'') then
  for i:=1 to length(levelformat) do
  //找出当前代码层次
   begin
    ilen:=ilen+StrtoInt(levelformat[i]);
    if ilen=length(nowcode) then
     begin
      level:=i;
      break;
     end;
   end;
 Result:=level;
end;

procedure TForm1.loadtree;
var
 level: integer;
 id,name,nodetxt: String;
 Mynode: array[0..6] of TTreeNode;
begin
 TreeView1.Items.Clear;
 level:=0;
 Mynode[level]:=TreeView1.Items.Add(TreeView1.TopItem,'按工艺流程查询');
 if (not dm.Table1.Active) then
  dm.Table1.Active:=True;
 dm.Table1.First;
 while not dm.Table1.Eof do
  begin
   id:=trim(DM.Table1.fieldbyname('编号').AsString);
   name:=trim(DM.Table1.fieldbyname('名称').AsString);
   nodetxt:=id+'-'+name;
   level:=getlevel(codeformat,id);  //返回代码层次数
   if level>0 then
    Mynode[level]:=TreeView1.Items.AddChild(Mynode[level-1],nodetxt);
   DM.Table1.Next;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 loadtree;
end;

procedure TForm1.TreeView1Click(Sender: TObject);
var
 id,name,nodetxt: String;
 num: Integer;
 level: integer;
begin
 MainNode:=self.TreeView1.Selected;
[color=FF0000] num:=pos('-',MainNode.Text)-1;[/color]
 id:=Copy(MainNode.Text,1,num);

 if MainNode.Text<>'按工艺流程查询' then
  begin
   if id<>'' then
    begin
     Dm.Table1.Open;
     DM.Table1.FindNearest([id]);
    end;
   level:=getlevel(codeformat,id);
  end
 else
  level:=0;
 GroupBox1.Caption:='当前节点是第'+inttostr(level)+'层';
end;
end.