我要用6个label的caption来分别显示六个内容,这六个内容是这样写在txt文本里面的,共三行,每行包括一个英语单词和中文意思,中间用个标志符号隔开{如love*喜欢),怎样分别用6个label的caption对应显示出来,另外,若3行为一组,怎样用一个botton就能按顺序读取下一组呢?即我的txt文本有很多行英语单词和中文的话。首先对回答我的问题的所有朋友们表示最由衷的感谢。

解决方案 »

  1.   

    先贴出你的部分TXT内容出来让我们分析下。
      

  2.   

    如果文件当中的内容是不变的,可以做一些预处理,比如使用CreateFileMapping打开文件,然后再文件当中一个字节一个字节地检查,然后把每一个的起始位置和结束位置都记录下来,这样子以后处理的时候就可以一组一组地读取.
      

  3.   


    FOPEN("文件名","R+")
      

  4.   

    建议使用ini文件如:有一个lable的名字是lable1D盘有个MyLable.ini文件内容为:[caption]
    lable1=标签一uses IniFiles;var 
    ini:TIniFile; 
    begin
      ini:=TIniFile.Create('D:\MyLable.ini'); 
      lable1.Caption:=ini.ReadString('caption','lable1',''); 
      ini.Free; 
    end;
      

  5.   


    var
      Tfs:TextFile;
      Astr:String;
    begin
        AssignFile(Tfs,TextFileName);
        ReSet(Tfs);
        While Not Eof(Tfs) do begin
            Readln(Tfs,Astr);//Astr就是读出的一行的字符
        end;
        CloseFile(tfs);
    end;
    读出Astr后,根据你得标志符号,把前后两个字符串分别取出,然后显示在label中
      

  6.   

    比如我的txt里面有以下内容:
    realistic*现实的
    abstract*抽象的
    sculpture*雕塑
    gallery*画廊
    belief*信仰
    consequent*随之发生的
    aim*目标
    symbol*象征
    value*价值
    focus*聚焦
    religion*宗教
    possession*财产
    convince*使信服
    shadow*影子
    ridiculous*可笑的
    attempt*试图
    predict*预言
    scholar*学者
    geometry*几何学
    bunch*串
    avenue*林荫道
    exhibition*展览
    civilization*文明
    contemporary*当代的 
    permanent*永久
    district*区大家看看怎么实现?谢谢
      

  7.   


    var
      Tfs:TextFile;
      lstr,rstr,Astr:String;
    begin
        AssignFile(Tfs,TextFileName);
        ReSet(Tfs);
        While Not Eof(Tfs) do begin
            Readln(Tfs,Astr);//Astr就是读出的一行的字符
             lstr := Copy(Astr,1,Pos('*',Astr)-1);//英文
            rstr := Copy(Astr,Pos('*',Astr)+1,Length(Astr)-Pos('*',Astr));//中文
        end;
        CloseFile(tfs);
    end;
      

  8.   

    你可以吧txt的内容读到一个memo或list中,那样你就可以随意控制了
      

  9.   

    memo1.Lines.LoadFromFile(你的文件名); 
    多省事,省去了打开txt的繁琐过程
      

  10.   

    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;
      str : Tstringlist;
        I : integer;
    implementation{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
    begin
      label1.Caption :=  copy(str.Strings[i],0,pos('*',str.Strings[i])-1);
      label2.Caption := copy(str.Strings[i],pos('*',str.Strings[i])+1,length(str.Strings[i]));
      if i = str.Count  then i := 0 else  
      inc(i);
    end;procedure TForm2.FormCreate(Sender: TObject);
    begin
      str := Tstringlist.Create;
      str.LoadFromFile('c:\test.txt');
      i := 0;
    end;procedure TForm2.FormDestroy(Sender: TObject);
    begin
      freeAndNil(str);
    end;end.
      

  11.   

    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;
      str : Tstringlist;
        I : integer;
    implementation{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
    begin
      label1.Caption :=  copy(str.Strings[i],0,pos('*',str.Strings[i])-1);
      label2.Caption := copy(str.Strings[i],pos('*',str.Strings[i])+1,length(str.Strings[i]));
      if i = str.Count-1  then i := 0 else  
      inc(i);         
      end;procedure TForm2.FormCreate(Sender: TObject);
    begin
      str := Tstringlist.Create;
      str.LoadFromFile('c:\test.txt');
      i := 0;
    end;procedure TForm2.FormDestroy(Sender: TObject);
    begin
      freeAndNil(str);
    end;end.
    上面那個有點BUG,這個應該可以
      

  12.   

    你的txt如果用下面的格式realistic=现实的 
    abstract=抽象的 
    sculpture=雕塑 
    gallery=画廊 就可以直接用TStringlist来读取
    比如说第一行str.Names[0] 
    str.Values[str.Names[0]]) 
      

  13.   

    谢谢大家了,我用了几种方法都可以实现了,真的非常感谢大家回答我这么低级的问题,现在要回家了,我晚上来到单位再给大家分,再次表示感谢,尤其是华仔和bdmh。Thank you very much for your impatient answers.To most of you,maybe it is a very simple question, but to a beginning learner like me,your answers are very important.I have learned so much from it.Thank you again.