在DELPHI7中使用INIDY网络控件和ACM第三方音频控件时奇怪的三种情况:
1、当ACMIN的VISABLE属性设为FALSE,并且在TIdTCPServer的ONCONNECT中ACMIN.open(format)时,ACMIN.ONDATA无法正常响应.
2、当ACMIN的VISABLE属性设为TRUE,并且在TIdTCPServer的ONCONNECT中ACMIN.open(format)时,ACMIN.ONDATA可以正常响应.
3、奇怪的是,当在ACMIN.VISABLE:=FALSE并且TIdTCPClient的ONCONNECT事件中ACMIN.open(format)时,也可以正常响应ACMIN.ONDATA事件!!!
那请问产生这个情况的原因?并且如何让ACMIN.VISABLE:=FALSE时ACMIN.ONDATA事件一定可以触发?
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ACMWaveIn, StdCtrls, ExtCtrls, IdTCPConnection, IdTCPClient,
  IdBaseComponent, IdComponent, IdTCPServer;type
  TForm1 = class(TForm)
    acmin: TACMWaveIn;
    Button2: TButton;
    server: TIdTCPServer;
    client: TIdTCPClient;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure acminData(data: Pointer; size: Integer);
    procedure serverConnect(AThread: TIdPeerThread);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
//自定义音频文件头
TGSM610=packed record
    wFormatTag: Word;
    nChannels: Word;
    nSamplesPerSec: DWORD;
    nAvgBytesPerSec: DWORD;
    nBlockAlign: Word;
    wBitsPerSample: Word;
    cbSize: Word;
    wSamplesPerBlock:word;
end;
var
  Form1: TForm1;
  format:pointer;
  gsm610:TGSM610;
  f:TFIlestream;
  i:integer;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  ACMIN.Visible:=FALSE;  //注意这里,问题就出在这,法正确响应ACMINDATA事件。 with gsm610 do
 begin
   wFormatTag:=$31;
   nChannels:=1;
   wBitsPerSample:=0;
   nSamplesPerSec:=8000;
   nBlockAlign:=65;
   nAvgBytesPerSec:=1625;
   cbSize:=2;
   wSamplesPerBlock:=$140;
 end;
 format:=@gsm610;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
client.Connect(5000);end;procedure TForm1.acminData(data: Pointer; size: Integer);
begin
inc(i);    无法正确响应ACMINDATA事件。
f.WriteBuffer(data^,size);
FORM1.Canvas.TextOut(0,0,INTTOSTR(i));
end;procedure TForm1.serverConnect(AThread: TIdPeerThread);  //备注:TIdTCPServer采用的是阻塞、多线程式。
begin
acmin.Open(format);
end;end.