1、最通用的办法:
先把这个文件读到一个字符串里,然后分析这个字符串。
2、在Public中或者
var Form1: TForm1;
下面申明的变量可以在别的Unit中引用—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    //在这里定义就可以跨unit;implementation{$R *.dfm}end.
    你读出来以后作个循环就行了呀如
    读出来的是S值是'1 2 3 4 5'
    下面是个例子
    var
    i,j: integer;
    si: array of integer;
    begin
      setlength(si,length(S)div2)
      i:=0;j:=0;
      while s[i]<>#0 do
      begin
          if S[i]<>#$20 then
          begin
              s[j]:=Strtointdef(s[i]);
              j:=j+1;
          end;
          i:=i+1;
      end;
    end;end;
      

  2.   

    思路1
    如果用替换把分割符号先替换成#13
    然后用readln就可以实现你的要求把(我没有试过哟)呵呵
    思路2
    逐个字符读入判断是否是分割符号,然后处理问题2
    可以用全局变量(在工程文件里写)
    或者使用共享内存的方法(具体找找资料把)
      

  3.   

    我的意思是,不加unit1。a这样引用,而是直接调用,可以吗?
      

  4.   

    用readln读出判断是否分隔符。
      

  5.   

    你在Interface部分声明的变量就是全局变量,使用该变量只需要在Uses(Interface或implementation部分)加入该变量所在单元即可,不需要加Uint1.a这样引用。
    注意:你的全局变量不要在某个类中声明,例如:TForm1类中,否则引用时就要用这种方法:Form1.a;另外,在interface的var部分声明你的全局变量即可。
    对你读文本中数据的建议:Delphi中可以将某个类型的变量直接写入文本文件,也可以从文本文件中读出某个类型的变量,你试试这个思路!
      

  6.   

    用TMemoryStream也好啊,用他的read方法逐个字节的读取文件,每读一个时判断是否数字就行了。但这不是较好的办法,如果你的文件只是用来存储数字的话,并不一定要存成那样啊。定义一个整型变量,然后定义一个文件对象,如var f:file of integer;但读取时要注意是只能按顺序从头一个一个读取的。并且读入的也是integer型(用read(f,num);)f是文件,num是integer
      

  7.   

    给你一个函数(flag参数就是分隔标志)
    如:str="a|b|c"
        str1=getfield(str,0,"|")
        则str1的值是"a"
    function getfield(s:string;idx:integer;flag:string='|'):string;
    var
       i,curidx:integer;
    begin
         i:=0;
         curidx:=0;
         result:='';
            while i<length(s) do
              begin
                if s[i]=flag then
                  begin
                    curidx:=curidx+1;
                  end;
                    if idx=curidx then
                      begin
                        result:=result+s[i+1];
                      end;
                i:=i+1;
              end;
        if result<>'' then
          begin
            if result[length(result)]=flag then
              begin
                delete(result,length(result),1);
              end;
          end;
    end;
      

  8.   

    先把每行读到一个StringList里
    再就是字符串的操作了。
      

  9.   

    这是读取文本到数据库的代码,你看一看,自己动手改动一下!
    文本格式是:
    001  er   rtt
    003  gh   jjkkk具体思想是:先将字符串进行调整,然后把串中每个字符同分割符比较,将不是分割符的字符追加到MyStr串中,最后得到一个字段的内容。通过一个循环,就可以将一个字符串分成几个字段。  Function Regulate(aString,Sepchar:string):string 去掉多余的分割符,规范字符串
      Function GetSubStr(varsString:string;SepChar:String):String;得到字符串中一个子串,因要改变参数aString的值,所以将它用var定义。
      FunctionGetSubStrNum(aString,SepChar:String):Integer;计算一个字符串要被分割成几个字段。
      参数:aString是所需分割的一个字符串,SepChar是分割符。  Function RegulateStr(aString:String;Sepchar:String):String; 
      var
      i,Num:Integer;
      Flag:Boolean;
      MyStr,TempStr:String;
      begin
      Flag:=False;进行标志,去除多余的分割符
      Num:=Length(aString); 计算aString串的长度
      for i:=1 to Num do
      begin
      TempStr:=Copy(aString,i,1);取aString串中的一字符
      if TempStr SepChar then
      begin
      MyStr:=MyStr+TempStr;
      Flag:=True;
      end
      else
      if(Flag = True)then
      begin
      Mystr:=Mystr+TempSrt;
      Flag:=False;
      end;
      end;
      if MyStr[Length(MyStr)] SepChar then
      MyStr:=MyStr+SepChar;
      RegulateSrt:=MyStr;
      end;  Function GetSubStr(var aString:String,SepChar:Strign):String;
      var
      Mysrt:String;
      StrLen:Integer;
      SepCharPso:Integer;
      begin
      StrLen:=Length(aString);
      SepCharPos:=Pos(SepChar,aString);计算分割符在子串中的位置
      MyStr:=Copy(aString,1,SepCharPos-1); 将分割符前所有字符放到mystr串中
      Delete(aString,1,SepCharPos);除去分割符和分割符前的子串
      GetSubStr:=MyStr;返回一个字段
      end;  FunctionTforml.GetSubStrNum(aString:String;SepChar:String):Integer;
      var
      i:Integer;
      StrLen:Integer;
     Num:Integer;
      begin
      StrLen:=Length(aString);
      Num:=0;
      for i:=1 to StrLen do
      if Copy(aString,i,1) = SepCharthen
      Num:=Num+1;
      GetSubSrtNum:=Num;
      end;  有了上面三个函数,现在介绍一下具体的应用:
      1.首先建立一个窗体Forml,加入一个RichEditl(或Menol),一个按钮Buttonl和一个Tablel,设置Tablel的属性:
      Tablell.DataBase = 'c:\Archivs'
      Tablell.TableName ='Archive.dbf'  2.分别加入以下程序:
      Const Space= ''
      ProcedureTForml.FormCreate(Sender:Tobject);
      begin
      RichRditl.Lines.LoadFromFile('Archive.txt');
      end;  ProcedureTForml.Button1Click(Sender:Tobject);
      var
      i,j:Integer;
     MyLine:String;
      begin
      with Tablel do
      begin
       Open;
     for i:=0 to RichEditl.Lines.Count-1 do
     begin
      MyLine:=RegulateStr(Richeditl.Lines[i],Space);
      for j:=1 to Num do 
      begin
      Append;
      fileds[j-1].aString:=GetSubSrt(MyLine,Space));
      post;
      end;
      end;
      end;
      end;
      

  10.   

    var
    i,j: integer;
    si: array of integer;
    begin
      setlength(si,length(S)div2)
      i:=0;j:=0;
      while s[i]<>#0 do
      begin
          if S[i]<>#$20 then
          begin
              s[j]:=Strtointdef(s[i]);
              j:=j+1;
          end;
          i:=i+1;
      end;
    end;end;
      

  11.   

    先把这个文件读到一个字符串里,然后分析这个字符串。
    2。在
    var Form1: TForm1;中声明。
      

  12.   

    可以用TStringList解决;
    若1 2 3 4
      5 6 7 8在“war.LO”中用TSTRINGLIST打开后,把每行读入一STRING的变量中,再通过OPERATER [](I)
    分割每两个空格间的字符,把分割的字符放入另一STRING变量中。