这个程序风格非常差,而且代码错误百出。比如数字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.
下面是代码。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.
解决方案 »
- 新增一窗体,程序启动后,同时弹出登录窗口跟新增的窗体,怎么办呀?
- 动态创建事件问题请教
- 有关插入数据的问题,请帮忙
- 关于三层连接的速度问题
- 我在打印报表时遇到一个怪问题(数据库是Access)字段小计设置为双精度2位小数可是打印出来怎么是4为小数
- 两句常用代码谁能解释一下区别
- 怎样完全断开与数据库的连接?
- 请介绍一个优秀的delphi中,支持报表格式编辑的 报表的控件 .
- 求助各们高手!十万为急!关于窗体的参数传递!在线等待
- 如何使用ADOQUERY中的setfields??
- Foxmail 是用Delphi做的:谈谈4.0各部分分别是用哪个控件实现的,希望大家畅所欲言
- 一个出错的sql语句,各位帮个忙!
我再想请教为何要 j:=1 to 10;fiels[j-1].asString 是什么意思?
至于原来代码上的 NumToken(MyLIne, Space) do 是什么来的我也搞不懂,请你联系整个程序分析这句语句正确写法(这是个文本文件转到数据库的程序),谢你了恩人!
NumToken这个函数不是Delphi的函数,而且你也没有写这个函数,为了编译通过,我写了10,希望你能理解。你需要完成一下NumToken函数。
Fields[j-1].AsString是Delphi总的东西,就是给第j-1位Field赋值。