大家聊聊局域网语音聊天怎么做?
解决方案 »
- Timer组件长时间计时
- 关于edit和dblookupcombobox控件的2个小问题
- 郁闷,这样与公司合作不知亏到哪种程度???欢迎大家多多评论,多灌点水!
- 菜鸟问题
- 在一个用户在修改时,其他用户读都读不了,数据库的锁的机制到底是怎样的?
- 怎样使新增加的记录得到更新??
- 救命啊:delphi一点点问题。
- 如何将pb中调用外部dll的声明改写到delphi中,关键是数据类型问题,在线等待.....
- 为什么delphi还支持borland pascal 的单元引用声名
- 有谁知道如何取得用户的oicq头像的序号
- 怎样在COM+组件中再调试另外一个COM+组件
- 我想做个自画按钮,大家提提建议怎么做好?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ACMDialog, ACMWaveIn, ACMWaveOut, StdCtrls, NMUDP, ExtCtrls, Psock;type
TForm1 = class(TForm)
ACMDialog1: TACMDialog;
NMUDP1: TNMUDP;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Image1: TImage;
Label1: TLabel;
ACMWaveIn1: TACMWaveIn;
ACMWaveOut1: TACMWaveOut;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ACMWaveIn1Data(data: Pointer; size: Integer);
procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
PlayPackets:integer;
implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var format:pointer;
begin
NMUDP1.Remotehost:=edit1.text;
format:=ACMDialog1.OpenDialog;
if format=nil then exit;
ACMWaveOut1.Open(format);
ACMWaveIn1.Open(format);
Button1.Enabled:=false;
Button2.Enabled:=true;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ACMWaveIn1.Close;
ACMWaveOut1.Close;
Button1.Enabled:=true;
Button2.Enabled:=false;
end;procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
var
mdata:array[1..10000] of char;
k:integer;
str:string;
begin
// str:='send:';
// for k:=1 to 10 do str:=str+' '+inttostr(integer(pchar(dword(data)+k-1)^));
// str:='send:'+inttostr(size);
// memo1.lines.add(str);
for k:=1 to size do mdata[k]:=pchar(dword(data)+k-1)^;
NMUDP1.SendBuffer(mdata,size);
end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
mdata:array[1..10000] of char;
data:Pchar;
str:string;
k:integer;
begin
NMUDP1.ReadBuffer(mdata,NumberBytes);
data:=pchar(dword(@mdata));
// str:='recv:';
// for k:=1 to 10 do str:=str+' '+inttostr(integer(pchar(dword(data)+k-1)^));
// str:='recv:'+inttostr(NumberBytes);
// memo1.lines.add(str);
label1.caption:=inttostr(PlayPackets);
inc(PlayPackets);
ACMWaveOut1.PlayBack(data,NumberBytes);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ACMWaveOut1.visible:=false;
ACMWaveIn1.visible:=false;
image1.align:=alclient;
NMUDP1.ReportLevel := Status_Basic;
NMUDP1.LocalPort := 6668;
NMUDP1.RemotePort := 6668;
PlayPackets:=0;
end;end.
http://snpack.fykj.com/OtherDownload.htm
分多加一點發。。