Beispiel #1
0
        public void PutDdeData(byte[] data)
        {
            DataReceived = DateTime.UtcNow;

            using (XlTable xt = new XlTable(data))
                ProcessTable(xt);
        }
    // **********************************************************************

    public override void ProcessTable(XlTable xt)
    {
      sb.Clear();

      for(int row = 0; row < xt.Rows; row++)
      {
        for(int col = 0; col < xt.Columns; col++)
        {
          xt.ReadValue();

          switch(xt.ValueType)
          {
            case XlTable.BlockType.Float:
              sb.Append(xt.FloatValue.ToString().PadLeft(vspace));
              break;

            case XlTable.BlockType.String:
              sb.Append(xt.StringValue.PadLeft(vspace));
              break;

            default:
              sb.Append(xt.ValueType.ToString().PadLeft(vspace));
              break;
          }
        }

        sb.AppendLine();
      }

      Data = sb.ToString();
      updated = true;
    }
        // --------------------------------------------------------------

        protected override PokeResult OnPoke(DdeConversation dc,
                                             string item, byte[] data, int format)
        {
            using (XlTable xt = new XlTable(data))
                ((XlDdeChannel)dc.Tag).ProcessTable(xt);

            return(PokeResult.Processed);
        }
      // Обработчик данных
      public override void ProcessTable(XlTable xt)
      {
        // Поступили новые данные из таблицы, настроенной для экспорта
        // в "Рабочую книгу" trades.

        // Все переданные данные содержатся в переменной xt, являющейся
        // экземпляром класса XlTable, который содержит методы для их
        // распаковки.

        // xt.Rows - кол-во строк, xt.Columns - кол-во столбцов в полученной
        // таблице. Для чтения одной ячейки таблицы служит метод
        // xt.ReadValue(), который после своего вызова устанавливает
        // свойства xt.ValueType - тип прочитанных данных и xt.*Value -
        // значение в ячейке. От Квика поступают данные двух типов:
        //  XlTable.BlockType.Float (double в C#)
        //  XlTable.BlockType.String (в C# тоже string)

        // Отобразим всю полученную информацию

        for(int row = 0; row < xt.Rows; row++)
        {
          for(int col = 0; col < xt.Columns; col++)
          {
            xt.ReadValue();

            switch(xt.ValueType)
            {
              case XlTable.BlockType.Float:
                Console.Write("D:{0}\t", xt.FloatValue);
                break;

              case XlTable.BlockType.String:
                Console.Write("S:{0}\t", xt.StringValue);
                break;

              default:
                Console.Write("{0}:{1}\t", xt.ValueType, xt.WValue);
                break;
            }
          }

          Console.WriteLine();
        }
      }
    // **********************************************************************

    // Обработчик данных
    public override void ProcessTable(XlTable xt)
    {
      // Учитывая, что это простой пример, в очередь будем
      // класть уже готовую для отображения строку.

      for(int row = 0; row < xt.Rows; row++)
      {
        sb.Clear();

        for(int col = 0; col < xt.Columns; col++)
        {
          xt.ReadValue();

          switch(xt.ValueType)
          {
            case XlTable.BlockType.Float:
              sb.Append(xt.FloatValue);
              break;

            case XlTable.BlockType.String:
              sb.Append(xt.StringValue);
              break;

            default:
              sb.Append(xt.ValueType);
              sb.Append(":");
              sb.Append(xt.WValue);
              break;
          }

          sb.Append("\t");
        }

        sb.AppendLine();

        Queue.Enqueue(sb.ToString());
      }
    }
Beispiel #6
0
 public abstract void ProcessTable(XlTable xt);
 public abstract void ProcessTable(XlTable xt);
Beispiel #8
0
 protected abstract void ProcessTable(XlTable xt);
      public override void ProcessTable(XlTable xt)
      {
        // Поступили новые данные из таблицы, настроенной для экспорта
        // в "Рабочую книгу" quotes.

        // Ничего не будем делать, только обозначим это событие.

        Console.Write(".");
      }
Beispiel #10
0
    // **********************************************************************

    protected override PokeResult OnPoke(DdeConversation dc,
      string item, byte[] data, int format)
    {
      //if(format != xlTableFormat)
      //  return PokeResult.NotProcessed;

      using(XlTable xt = new XlTable(data))
        ((XlDdeChannel)dc.Tag).ProcessTable(xt);

      return PokeResult.Processed;
    }