var
list: TStringList;
begin
list := TStringList.Create;
try
list.LoadFromFile('a.txt');
list.Add('asdfasdf');
...
list.SaveToFile('a.txt');
finally
list.Free;
end;
list: TStringList;
begin
list := TStringList.Create;
try
list.LoadFromFile('a.txt');
list.Add('asdfasdf');
...
list.SaveToFile('a.txt');
finally
list.Free;
end;
解决方案 »
- 问一个很基础的问题
- 如何确定窗口的位置
- 求助:DELPHI中ASM转换为VC的ASM(20行代码)有关RING0的
- 各位大虾!帮忙啊,小弟毕业设计难题,急啊!,在线等!
- 各位帮忙:新装的delphi6,安装控件编译时提示:Required package 'VCL' not found,请问如何解决,谢谢!!!
- 关于Win32的消息
- 初学者的非常菜的问题,很急!!!!!!!!!
- reset,rewrite的第二个参数表示什么意思,根据什么来设定它的值
- 请问:如何将限定输入数字的EDIT做成一个控件???
- 我临时抱佛脚
- delphi送分问题,不来看是SB啊!!!
- 请问哪里有TfcOutlookBar、TfcShapeBtn、TfcShapeBtn等控件下载?
dd:filetext;
begin
assignfile(dd,'c:\dd.txt');
append(dd);
writeln(dd,'sadfsafsa');
closefile(dd);
end;
tFile: TextFile;sFile := 'c:\my.txt';
AssignFile(tFile,sFile);
if FileExists(sFile) then
Append(tFile)
else
ReWrite(tFile);
WriteLn(tFile,Edit1.Text);
CloseFile(tFile);
http://kingron.myetang.com/zsfunc04.htm(*//
标题:数据集和文本间转换
说明:不支持多行文本类型和其他二进制类型
设计:Zswang
日期:2002-01-24
支持:[email protected]
//*)///////Begin Source
function StrLeft(const mStr: string; mDelimiter: string): string;
{ 返回左分隔字符串 }
begin
Result := Copy(mStr, 1, Pos(mDelimiter, mStr) - 1);
end; { StrLeft }function ListCount(mList: string; mDelimiter: string = ','): Integer;
{ 返回列表数 }
var
I, L: Integer;
begin
Result := 0;
if mList = '' then Exit;
L := Length(mList);
I := Pos(mDelimiter, mList);
while I > 0 do begin
mList := Copy(mList, I + Length(mDelimiter), L);
I := Pos(mDelimiter, mList);
Inc(Result);
end;
Inc(Result);
end; { ListCount }function ListValue(mList: string; mIndex: Integer; mDelimiter: string = ','): string;
{ 返回列表指定位置的元素 }
var
I, L, K: Integer;
begin
L := Length(mList);
I := Pos(mDelimiter, mList);
K := 0;
Result := '';
while (I > 0) and (K <> mIndex) do begin
mList := Copy(mList, I + Length(mDelimiter), L);
I := Pos(mDelimiter, mList);
Inc(K);
end;
if K = mIndex then Result := StrLeft(mList + mDelimiter, mDelimiter);
end; { ListValue }function DataSetToText(mDataSet: TDataSet; mStrings: TStrings;
mDelimiter: string = #9): Boolean; { 返回数据集转换到文本中是否成功 }
var
vBook: string;
I: Integer;
S: string;
begin
Result := False;
if (not Assigned(mDataSet)) or (not mDataSet.Active) or
(not Assigned(mStrings)) then Exit;
mStrings.Text :=
StringReplace(Trim(mDataSet.FieldList.Text), #13#10, mDelimiter, [rfReplaceAll]);
vBook := mDataSet.Book;
mDataSet.DisableControls;
try
mDataSet.First;
while not mDataSet.Eof do begin
S := '';
for I := 0 to mDataSet.FieldList.Count - 1 do
S := S + mDelimiter + mDataSet.FieldList[I].AsString;
Delete(S, 1, Length(mDelimiter));
mStrings.Add(S);
mDataSet.Next;
end;
finally
mDataSet.Book := vBook;
mDataSet.EnableControls;
end;
Result := True;
end; { DataSetToText }function TextToDataSet(mStrings: TStrings; mDataSet: TDataSet;
mDelimiter: string = #9): Boolean; { 返回文本转换到数据集中是否成功 }
var
I, J, C: Integer;
vFieldNames: string;
begin
Result := False;
if (not Assigned(mDataSet)) or (not mDataSet.Active) or
(mStrings.Count <= 0) then Exit;
vFieldNames := mStrings[0];
C := ListCount(vFieldNames, mDelimiter);
for I := 1 to mStrings.Count - 1 do try
mDataSet.Append;
for J := 0 to C - 1 do
if mDataSet.FieldList.IndexOf(ListValue(vFieldNames, J, mDelimiter)) >= 0 then
mDataSet[ListValue(vFieldNames, J, mDelimiter)] :=
ListValue(mStrings[I], J, mDelimiter);
mDataSet.Post;
except
Exit;
end;
Result := True;
end; { TextToDataSet }
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
DataSetToText(Table1, Memo1.Lines);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
TextToDataSet(Memo1.Lines, Table1);
end;
///////End Demo