W
wind98
Unregistered / Unconfirmed
GUEST, unregistred user!
记录文件中如何正确保存string类型的"大"数据(超过256个字符)?
type
TMyRec = Record
a:string[10];
b:string;//要保存的数据比较大,所以这里用string而不用string[255];
end;
//保存成文件:
procedure SaveRec(sFN, sStr1, sStr2: string);
var
aRec : array of TMyRec;
var
FStr : TMemoryStream;
i : longint;
begin
{获得文件中的记录,如果文件不存在则为空}
GetAllRec(sFN);
{获得得文件中的记录数,如果文件不存在则为0}
i := GetRecNums(sFN);
SetLength(aRec, i + 1);
with aRec do
begin
a := sStr1;
b := sStr2;
end;
FStr := TMemoryStream.Create;
{记录数}
i := length(aRec);
{保存记录数}
FStr.Write(i, sizeof(i));
{保存数据}
for i := 0 to high(aRec) do
FStr.Write(aRec, sizeof(aRec)); //这一句有问题,无法正确保存数据,我想应该是无法确定其大小的原因
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//因为如果将b:string;改为b:string[255];则可以正确保存
FStr.SaveToFile(sFN);
FStr.Free;
end;
end;
type
TMyRec = Record
a:string[10];
b:string;//要保存的数据比较大,所以这里用string而不用string[255];
end;
//保存成文件:
procedure SaveRec(sFN, sStr1, sStr2: string);
var
aRec : array of TMyRec;
var
FStr : TMemoryStream;
i : longint;
begin
{获得文件中的记录,如果文件不存在则为空}
GetAllRec(sFN);
{获得得文件中的记录数,如果文件不存在则为0}
i := GetRecNums(sFN);
SetLength(aRec, i + 1);
with aRec do
begin
a := sStr1;
b := sStr2;
end;
FStr := TMemoryStream.Create;
{记录数}
i := length(aRec);
{保存记录数}
FStr.Write(i, sizeof(i));
{保存数据}
for i := 0 to high(aRec) do
FStr.Write(aRec, sizeof(aRec)); //这一句有问题,无法正确保存数据,我想应该是无法确定其大小的原因
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//因为如果将b:string;改为b:string[255];则可以正确保存
FStr.SaveToFile(sFN);
FStr.Free;
end;
end;