两个不同的TStrings能否保存到同一个txt文件,需要的时候分别读取?(50)

  • 主题发起人 主题发起人 rgn
  • 开始时间 开始时间
R

rgn

Unregistered / Unconfirmed
GUEST, unregistred user!
两个不同的TStrings能否保存到同一个txt文件,需要的时候分别读取?
 
只有ini可以,但是ini的字符长度有限制!
 
可以阿,你不用LOADFROMFILE,而是一行一行的读取,你的TXT文件做个标记。
 
具体怎么做啊
 
可以的, 我是把text,保存到同意个txt文件, 我现在用的保存代码// 保存交货地点和交货方式 if cbJHDD.Text<>'' then if FileExists(ExtractFilePath(Application.ExeName)+ 'jhdd.txt ') then begin j:=0; //比较是否有相同字符串 str:= cbJHDD.text+';'+cbJHFS.Text; txtlist:=TStringList.create; try txtlist.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'jhdd.txt '); for i:=0 to txtlist.Count-1 do begin if str= txtlist.Strings then begin j:=j+1; Break; end; end; finally txtlist.Free; end; if j=0 then begin AssignFile(tfile,ExtractFilePath(Application.ExeName)+ 'jhdd.txt '); Append(tfile); Writeln(tfile,cbJHDD.text+';'+cbJHFS.Text); Closefile(tfile); end; end else begin AssignFile(tfile,ExtractFilePath(Application.ExeName)+ 'jhdd.txt '); ReWrite(tfile); Writeln(tfile,cbJHDD.text+';'+cbJHFS.Text); Closefile(tfile); end;
 
取出代码:procedure TBuyOrder.cbJHDDDblClick(Sender: TObject);var txtlist:TStringList; i,m:integer;begin cbJHFS.Items.Clear; cbJHDD.Items.Clear; if FileExists(ExtractFilePath(Application.ExeName)+ 'jhdd.txt ') then begin txtlist:=TStringList.create; try txtlist.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'jhdd.txt '); for i:=0 to txtlist.Count-1 do begin m:=pos(';',txtlist.Strings); cbJHDD.Items.Add(copy(txtlist.Strings,0,m-1)); cbJHFS.Items.Add(copy(txtlist.Strings,m+1,length(txtlist.Strings))); end; finally txtlist.Free; end; end else begin cbJHFS.Text:=''; cbJHDD.Text:=''; end;end;
 
xhj12077021,怎样读取呢
 
保存 和 读取出来的代码都给你了,你可以看着修改
 
cbJHFS,cbJHDD请问这两个是什么变量
 
两个 ComboBox
 
两个TStrings的高度不同的
 
不明白你说什么
 
用流就可以 LoadFromStream
 
用 xml 会比较方便点``
 
用xml会比较胖点。
 
用流比较方便格式: [大小1][数据1][大小2][数据2][大小3][数据3]...[大小n][数据n][大小]用integer类型就可以,占4字节读取第n个文件,只要正确计算出位置就可以取出来了.保存第n个文件,只要把下面这三个流合并: 流(1..n-1): 第1到第n-1个的总流 流n: 第n个流(重新生成) 流n+1..至结束:第n+1到结尾的总流
 
多人接受答案了。
 
后退
顶部