var
ms: tmemorystream;
i, k: integer;
s1, s2: string;
begin
ms := tmemorystream.Create;
i := 100;
ms.Write(pinteger(i), sizeof(i));
ms.Position := 0;
ms.Read(k, sizeof(i));
text := inttostr(k); // OK
ms.Clear;
s1 := 'hello world';
ms.Write(pchar(s1)^, length(s1));
ms.position := 0;
ms.Read(s2, length(s1)); // 读不出。
text := s2; // 出错。
ms.free;
end;
ms: tmemorystream;
i, k: integer;
s1, s2: string;
begin
ms := tmemorystream.Create;
i := 100;
ms.Write(pinteger(i), sizeof(i));
ms.Position := 0;
ms.Read(k, sizeof(i));
text := inttostr(k); // OK
ms.Clear;
s1 := 'hello world';
ms.Write(pchar(s1)^, length(s1));
ms.position := 0;
ms.Read(s2, length(s1)); // 读不出。
text := s2; // 出错。
ms.free;
end;
var
ms: tmemorystream;
s1,s2:String;
begin
ms := tmemorystream.Create;
try
s1 := 'hello world';
ms.Write(s1[1], length(s1)); //s1[1]开始才是字符串数据
ms.position := 0;
setlength(s2,length(s1)); //下一句要用到s2[1],所以要先分配内存.
ms.Read(s2[1], length(s1));
label1.Caption := s2;
finally
ms.free;
end;
end;
ms: tmemorystream;
s1,s2:String;
begin
ms := tmemorystream.Create;
try
s1 := 'hello world';
ms.Write(s1[1], length(s1)); //s1[1]开始才是字符串数据
// ms.write(pchar(s1)^, length(s1));
ms.position := 0;
setlength(s2,length(s1)); //下一句要用到s2[1],所以要先分配内存.
ms.Read(s2[1], length(s1)); // ^^是啊,但为什么平时使用string的时候不用分配?现在又要手工分配?
// ms.read(pchar(s2)^, length(s1));
label1.Caption := s2;
finally
ms.free;
end;
end;