【发布时间】:2014-08-12 07:39:26
【问题描述】:
我正在创建项目以通过 Indy 组件和 Wave 音频组件进行多音频聊天,但我一直遇到错误。这是简单的代码,但我不知道如何修复它。
sendtocl 是我使用的客户端
procedure TForm1.recorderData(Sender: TObject; const Buffer: Pointer;
BufferSize: Cardinal; var FreeIt: Boolean);
begin
Freeit :=True;
sendtocl.SendBuffer(Buffer^, Buffersize);
end;
我在编译时遇到了这个错误
没有可以使用这些参数调用的“SendBuffer”的重载版本
任何建议的修复?
“sentocl”是我的indyudpclient
procedure TForm1.recorderData(Sender: TObject; const Buffer: Pointer; BufferSize: Cardinal; var FreeIt: Boolean);
begin
Freeit := True;
sendtocl.SendBuffer(RawToBytes(Buffer^, Buffersize));
end;
这个来自 Remy lebeau 的固定代码解决了编译错误,但是当我尝试发送音频时,文本得到了巨大的数据,而网络上的其他客户端听不到声音,我认为它在 onread 上使用 indy 服务器我使用的组件是:
Wave音频,indy udp服务器和客户端,,,,使用delphi xe5
Remy 我可以通过 indyudp 客户端发送音频流吗? Wave音频中的样本是针对winsock的,但我真的迷失了如何用indy来做,你能给我参考一下吗?
【问题讨论】:
-
我假设您从某个地方获得了代码,并且该代码来自与您使用的不同版本的 Indy。
-
是的,我有一个建议。查看源代码(随 Delphi 一起分发的所有 Indy 版本都附带)并找出
SendBuffer的正确参数类型,然后修复代码以使其使用正确的类型。由于您没有指明您使用的是哪个 Delphi 和 Indy 版本,甚至没有指明sentocl是什么类,所以不可能更具体。 (“sendtocl 是我使用的客户端”并不表示该“客户端”的类类型。)