现在作一个基于语音卡的程序,这里碰到一个没法有效区别两条线路对应的问题:我需要随便一条外线接通后再连接一条内线 
这时我设置了一个全局变量Oid和Iid;当我得知外线接通了是Oid线,那我遍寻内线,那个空闲就接能那条假设[Oid,Iid}为[1,2]其中内线0和1是占线的;这时我在另一些事件中要判断当Oid(1)外线触发某类事件或方法时,跟着Iid(2)内线也就响应相应的方法和动作;但是这时很可能Oid和Iid值已经变了,可能变[1,0]了这里假设;那当我获取到外线或内线编号时却找不到了对应的内线或外线的对象了,这里有没有什么变量可以自关系一开始就绑定二个的关系而不变,直至当宣布的解散事件触发后,这种绑定关系数据才释放。想了二维数据,也不行;不知怎么对应,不要告诉我是枚举,把所有的组合可能都列出来,再对应,那是绝的没有办法的办法,我的线路是可以扩展到64*64=4096种;枚举理论可通。实际操作太困难,非万不得已不会用 
以上在线急等!

解决方案 »

  1.   

    感觉你的需求有点乱。
    是不是这个意思:全局变量Oid, Iid 将一对外线和内线的绑定起来?
    那么Oid, Iid不应该是全局变量
    而应该设置一个数组,例如
    var OIDLink :array [0..63] of Integer;
    OIDLink[1] = 2;
    表示第1条外线绑定到第2条内线
      

  2.   

    试了一下,还是不得,这种方法行不通,OIdLink{1]这个数据也取不出来;如我在CallIN事件中得到这个赋值,同时这个赋值我要在Answer中用,怎么取出外线是1这个值,这是一个问题,我想了一下,这里存在这样一个冲突,我设置为私有变量OID和IID那么可以取出OIdLink{1]这个里面1的值的话,可是在另一个事件中就没有办法用了也就不通了,如果这个变量设置为全局变量,OIdLink[OID]=IID;那么还是碰到取出表示数组的这个数OID的问题,但给另一个事件中变量取值是实现了;同时OIdLink[OID]=IID;同时我找到外线IID又怎样找外线OID呢也就是OIDLink[1] = 2; 当我在一个事件中判断出IID是2时怎么就知道OID是1;当然判断OID是1那是可以知道IID是2,因为已经赋值给了OIDLink[1]就是2了,只要还没有释放。
      

  3.   

    我还是看不太懂你在说什么……
    是不是说,在CallIn事件中,能够设置当前Oid,Iid,
    需要把Oid,Iid传到 Answer方法中去?
    你的Answer方法不能加一个参数吗?
    procedure Answer(Oid, Iid:Integer)