这个程序风格非常差,而且代码错误百出。比如数字1和字母l不分,语句缺少分号,end和begin没有匹配等等。我用D6给你编译了一下,改掉了上述错误。只有一处得你自己改了。
下面是代码。interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DB, DBTables;type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Table1: TTable;
    function Regulate(aString, Sepchar: string): string;    function GetSubStr(var aString: string; SepChar: string): string;
    function GetSubStrNum(aString, SepChar: string): Integer;
    procedure Button1Click(Sender: Tobject);
    procedure formCreate(Sender: Tobject);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation$R *.dfm}
function RegulateStr(aString: string; Sepchar: string): string;var
  i, Num: Integer;
  Flag: Boolean;
  MyStr, TempStr: string;
begin  Flag := False;
  Num := Length(aString);
  for i := 1 to Num do  begin    TempStr := Copy(aString, i, 1);
    if TempStr <> SepChar then    begin      MyStr := MyStr + TempStr;      Flag := True;    end    else if (Flag = True) then    begin      Mystr := Mystr + TempStr;      Flag := False;    end;  end;  if MyStr[Length(MyStr)] <> SepChar then    MyStr := MyStr + SepChar;  RegulateStr := MyStr;end;function TForm1.GetSubStr(var aString: string; SepChar: string): string;var  Mystr: string;  StrLen: Integer;  SepCharPos: Integer;begin  StrLen := Length(aString);  SepCharPos := Pos(SepChar, aString);
  MyStr := Copy(aString, 1, SepCharPos - 1);  Delete(aString, 1, SepCharPos);  GetSubStr := MyStr;
end;function TForm1.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) = SepChar then      Num := Num + 1;  GetSubStrNum := Num;end;const
  Space = '';procedure TForm1.formCreate(Sender: Tobject);begin  RichEdit1.Lines.LoadFromFile('mytext.txt');end;procedure TForm1.Button1Click(Sender: Tobject);var  i, j: Integer;  MyLine: string;begin  with Table1 do  begin    Open;    for i := 0 to RichEdit1.Lines.Count - 1 do    begin      MyLine := RegulateStr(RichEdit1.Lines[i], Space);      for j := 1 to 10 do // NumToken(MyLIne, Space) do NumToken函数在哪里?      begin        Append;        fields[j - 1].asString := GetSubStr(MyLine, Space);        Post;      end;    end;  end;end;
function TForm1.Regulate(aString, Sepchar: string): string;
beginend;end.

解决方案 »

  1.   

    感激chechy(chechy)的帮忙,因为这些代码是书上的教程,所以很多错。
    我再想请教为何要 j:=1 to 10;fiels[j-1].asString 是什么意思?
    至于原来代码上的 NumToken(MyLIne, Space) do 是什么来的我也搞不懂,请你联系整个程序分析这句语句正确写法(这是个文本文件转到数据库的程序),谢你了恩人!
      

  2.   

    因为我没有看你的程序,我只是就事论事将编译的错误解决。
    NumToken这个函数不是Delphi的函数,而且你也没有写这个函数,为了编译通过,我写了10,希望你能理解。你需要完成一下NumToken函数。
    Fields[j-1].AsString是Delphi总的东西,就是给第j-1位Field赋值。