首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一对数组赋值就出现有关问题

2012-02-12 
一对数组赋值就出现问题!小弟刚从VB转DELPHI,在编写时出现问题,把代码贴出来,大家帮看看:unitmaininterfa

一对数组赋值就出现问题!
小弟刚从VB转DELPHI,在编写时出现问题,把代码贴出来,大家帮看看:
unit   main;

interface

uses
    Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,
    Dialogs,   Menus,   ComCtrls,StdCtrls,   XPMan,   Math;

const
    APPTITLE   =   'MyToolsBar '   ;

type
    TTool   =   record
        title       :   string[100]   ;
        apppath   :   string[255]   ;
        para         :   string[100]   ;
        setpath   :   string[255]   ;
        runpass   :   string[50]     ;
        autorun   :   boolean           ;
    end   ;

    TTools   =   record
        tools   :   array   of   TTool;
        toolscount   :   integer;
    end;

    TToolType   =   (ttLeft=1,ttRight=2);
    TMyTools   =   array[ttLeft..ttRight   ]   of   TTools;
   


    TfrmMain   =   class(TForm)
        PopupMenu1:   TPopupMenu;
        mnew:   TMenuItem;
        medit:   TMenuItem;
        mremove:   TMenuItem;
        lv1:   TListView;
        RadioButton1:   TRadioButton;
        RadioButton2:   TRadioButton;
        Button1:   TButton;
        XPManifest1:   TXPManifest;
        N1:   TMenuItem;
        mup:   TMenuItem;
        mdown:   TMenuItem;
        N2:   TMenuItem;
        procedure   FormCreate(Sender:   TObject);
        procedure   Button1Click(Sender:   TObject);
        procedure   mnewClick(Sender:   TObject);
        procedure   shownewform(const   toolsindex:   integer   =   0);
        procedure   lv1SelectItem(Sender:   TObject;   Item:   TListItem;
            Selected:   Boolean);

    private

        {   Private   declarations   }
    public
        {   Public   declarations   }

    end;

var
    frmMain:   TfrmMain;
    mytools   :   TMyTools;
    seltools:   TToolType   ;

implementation

uses   edit;

{$R   *.dfm}


procedure   TfrmMain.FormCreate(Sender:   TObject);
    begin
    seltools:=ttLeft;
    mytools[ttLeft].toolscount:=0;
    mytools[ttright].toolscount:=0;
    setlength(mytools[ttleft].tools,0);
    setlength(mytools[ttright].tools,0);


end;

procedure   TfrmMain.Button1Click(Sender:   TObject);
var   mp,np:tpoint;
begin
        np.x:=button1.Left   ;
        np.Y:=button1.Top   +   button1.Height     ;
        mp:=   ClientToScreen(np);

        popupmenu1.Popup(mp.X,mp.Y);
end;

procedure   TfrmMain.mnewClick(Sender:   TObject);
    begin
            shownewform(0)   ;
    end;

procedure   TfrmMain.shownewform(const   toolsindex:   integer   =   0);
    var
        editform:   tfrmedit;
        index:   integer;
        item:   tlistitem;
        str:   string[1];
    begin
            try
                editform:=tfrmedit.Create(self);
                editform.apptitle:=   apptitle;
                editform.saved:=   false;
                editform.Position:=   poMainFormCenter;
                if   toolsindex   =   0   then
                    begin
                        editform.Caption:= 'New   tools ';
                        editform.Edit1.Text:= ' ';
                        editform.Edit2.Text:= ' ';
                        editform.Edit3.Text:= ' ';
                        editform.Edit4.Text:= ' ';
                        editform.CheckBox1.Checked:=false;
                    end
                else
                    begin
                        editform.Caption:=   mytools[seltools].tools[toolsindex].title   ;
//一到此处,就出现问题。很奇怪,如果是 'aa '就不错,如果是 'afasdfasdf '就出错。郁!
                        editform.Edit1.Text:=mytools[seltools].tools[toolsindex].apppath     ;
                        editform.Edit2.Text:=mytools[seltools].tools[toolsindex].para     ;
                        editform.Edit3.Text:=mytools[seltools].tools[toolsindex].setpath     ;
                        editform.Edit4.Text:=mytools[seltools].tools[toolsindex].runpass     ;
                        editform.CheckBox1.Checked:=mytools[seltools].tools[toolsindex].autorun   ;
                    end;


                editform.ShowModal   ;

                if   editform.saved   then
                    begin
                        if   toolsindex   =   0   then     //当为新增时
                            begin
                                mytools[seltools].toolscount:=   mytools[seltools].toolscount+1;
                                setlength(mytools[seltools].tools   ,mytools[seltools].toolscount);
                                index:=   mytools[seltools].toolscount   ;
                            end
                        else
                            index:=   toolsindex;

                        mytools[seltools].tools[index].title:=   editform.Edit1.Text;
                        mytools[seltools].tools[index].apppath:=   editform.Edit2.Text;
                        mytools[seltools].tools[index].para:=   editform.Edit3.Text;
                        mytools[seltools].tools[index].setpath:=   editform.Edit4.Text;
                        mytools[seltools].tools[index].runpass:=   editform.Edit5.Text;
                        mytools[seltools].tools[index].autorun:=   editform.CheckBox1.Checked   ;

                        item:=lv1.Items.Add;
                        item.Caption:=mytools[seltools].tools[index].title;

                        if   mytools[seltools].tools[index].autorun   then
                            str:= 'y '
                        else
                            str:= ' ';
                        item.SubItems.Add(str)   ;

                        if   length(mytools[seltools].tools[index].runpass)> 0   then
                            str:= 'y '
                        else
                            str:= ' ';


                        item.SubItems.Add(str)       ;

                    end;     //   end   editform.saved
            finally
                editform.Free   ;
                item:=nil;
                item.Free;
            end;


    end;


procedure   TfrmMain.lv1SelectItem(Sender:   TObject;   Item:   TListItem;
    Selected:   Boolean);
var
    selitem:   integer;
begin

    selitem:=   lv1.ItemIndex+1;

    if   selitem   > 0   then
        shownewform(selitem);
end;


end.

[解决办法]
你把dfm也贴出来
还有edit的pas和dfm
我这里好搭建你的环境调试
还有调试步骤说清楚。

热点排行