这个程序风格非常差,而且代码错误百出。比如数字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.
解决方案 »
- 枚举类型的使用
- 请问关于打开对话框多选后排序的问题
- 有关获取消息问题 进者有分(100)
- 我想问下,在UI中是通过TClientDataSet来取得中间层TDataSetProvider的数据,那就是说每个TClientDataSet都要对应每个TDataSetProvider。
- 如何由字符串得到它的每个字节信息,并对字节进行位操作,得到每个字节的高4位和低4位
- 大家帮忙。怎样控制系统声音的主音量。(我是新手)谢谢。来者有分:)
- 能不能直接把Grid中的内容和样式直接导到报表中去???
- 您好,怎样用copy返回字串? 谢谢
- ado,odbc问题。无奈,无奈。up有分
- DBGrid中的数据每次只取10条,通过翻页功能实现,高手请进!
- 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赋值。