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 := '加不加分随你';
—————————————————————————————————
先把这个文件读到一个字符串里,然后分析这个字符串。
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 := '加不加分随你';
—————————————————————————————————
解决方案 »
- 请教大家 我想把编写完的Ddelphi程序放在WinPE上运行 可以吗
- 一个关于dbgrid的问题?
- 用CopyDir复制文件夹有时提示"无法读取源文件或磁盘",有时可以正常,在大富翁没解决,在此请教
- 在DBgrid中,怎么样判断记录移动到上一行或者下一行?怎么样控制某一行在编辑的时候不能移动到其他行?
- 各位大侠:如何控制dbgrid中行的背景显示颜色问题?先谢!
- 串口通信:mscomm控件2000/98的兼容性好吗?
- 为什么listview1.Column[0].Alignment:=taCenter不生效?
- delpi如何操作SQL中的image字段,高手请进!
- 关与dbgrideh的奇怪问题
- 好奇怪的事情,用adoquery向acess中增加记录时,自动增加的字段出问题了。//瑶瑶
- 汉字,拼音,如何提取?
- 求救:输入拼音检索汉字? ( 比如输入z从数据库中检索出包含 '张' ,'赵'等字符的字段来)
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;
如果用替换把分割符号先替换成#13
然后用readln就可以实现你的要求把(我没有试过哟)呵呵
思路2
逐个字符读入判断是否是分割符号,然后处理问题2
可以用全局变量(在工程文件里写)
或者使用共享内存的方法(具体找找资料把)
注意:你的全局变量不要在某个类中声明,例如:TForm1类中,否则引用时就要用这种方法:Form1.a;另外,在interface的var部分声明你的全局变量即可。
对你读文本中数据的建议:Delphi中可以将某个类型的变量直接写入文本文件,也可以从文本文件中读出某个类型的变量,你试试这个思路!
如: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;
再就是字符串的操作了。
文本格式是:
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;
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。在
var Form1: TForm1;中声明。
若1 2 3 4
5 6 7 8在“war.LO”中用TSTRINGLIST打开后,把每行读入一STRING的变量中,再通过OPERATER [](I)
分割每两个空格间的字符,把分割的字符放入另一STRING变量中。