gpt4 book ai didi

Delphi - 将变量指针作为字符串传递给另一个函数

转载 作者:行者123 更新时间:2023-12-03 18:26:19 24 4
gpt4 key购买 nike

我不知道这是否可能,但我需要的是通过它的指针访问(使用和释放)TStream 变量,将字符串参数传递给另一个函数。

这是我尝试做的“不工作”的例子:

procedure TForm1.Button1Click(Sender: TObject);
var
Stm: TMemoryStream;
begin
Stm := TMemoryStream.Create;
try
Memo.Lines.SaveToStream(Stm);
Stm.Position := 0;
Memo.Clear;
Edit.Text := IntToStr(Integer(@Stm));
except
Stm.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
PStm: ^TMemoryStream;
begin
PStm := Pointer(StrToInt(Edit.Text));
try
Memo.Lines.LoadFromStream(PStm^); // <--- Access Violation
finally
PStm^.Free;
end;
end;

感谢您帮助解决这个问题!

最佳答案

TStream 是一个引用类型。您的 Stm 变量包含指向流对象实例的指针。你想传递这个指针值,而不是局部变量的地址。这是固定代码:

procedure TForm1.Button1Click(Sender: TObject);
var
Stm: TMemoryStream;
begin
Stm := TMemoryStream.Create;
try
Memo.Lines.SaveToStream(Stm);
Stm.Position := 0;
Memo.Clear;
Edit.Text := IntToStr(Integer(Stm));
except
Stm.Free;
raise;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Stm: TMemoryStream;
begin
Stm := Pointer(StrToInt(Edit.Text));
try
Memo.Lines.LoadFromStream(Stm);
finally
Stm.Free;
end;
end;

关于Delphi - 将变量指针作为字符串传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com