Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/17/2010
					
					
			
					 
					 
					
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Foxbow 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/17/2010
					
					
			
					 
					 
					
	
			Спасибо, прошу прощения за невнимательность =)
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					a.dobryn 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/1/2010
					
					
			
					 
					 
					
	
			Тоже есть вопрос. При создании описания портфеля имеют значения названия полей? Они должны быть такими же, как и в Quik? У меня так: Описание полей на QPile: CodePARAMETER DATE; PARAMETER_TITLE Дата; PARAMETER_DESCRIPTION Дата сделки; PARAMETER_TYPE STRING(32); END      PARAMETER TIME; PARAMETER_TITLE Время; PARAMETER_DESCRIPTION Время; PARAMETER_TYPE String(32); END    
  PARAMETER PRICE; PARAMETER_TITLE Цена; PARAMETER_DESCRIPTION Цена; PARAMETER_TYPE Numeric(14,2); END
  PARAMETER seccode; PARAMETER_TITLE Код; PARAMETER_DESCRIPTION Код; PARAMETER_TYPE String(32); END      описание полей на S#: Code[DdeCustomColumn("Дата", Order = 0)] public string Data { get; set; }
  [DdeCustomColumn("Время", Order = 1)] public string Time { get; set; }
  [DdeCustomColumn("Цена", Order = 2)] public double Price { get; set; }
  [DdeCustomColumn("Код", Order = 3)] public string Code { get; set; }  В итоге после показа портфеля в программе окно есть, но пустое. Соединение происходит нормально.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/1/2010
					
					
			
					 
					 
					
	
			D_AlexВ итоге после показа портфеля в программе окно есть, но пустое. Соединение происходит нормально.  В начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					a.dobryn 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/2/2010
					
					
			
					 
					 
					
	
			Mikhail SukhovВ начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет?  ProcessCustomTables вызывается, как в примере Codethis.Trader.ProcessCustomTables += (type, objects) => {                         if (type == typeof(CustomPortfolio))         _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>()); };
   а как использовать ProcessDataError?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/2/2010
					
					
			
					 
					 
					
	
			D_AlexMikhail SukhovВ начале QuikTrader.ProcessCustomTables вызывается? QuikTrader.ProcessDataError что-нибудь пишет?  ProcessCustomTables вызывается, как в примере Codethis.Trader.ProcessCustomTables += (type, objects) => {                         if (type == typeof(CustomPortfolio))         _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>()); };
   а как использовать ProcessDataError?  Прочитайте как использовать события в C# и для чего они нужны. После этого станет значительно понятнее как используется ProcessCustomTables и что такое +=
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					a.dobryn 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/3/2010
					
					
			
					 
					 
					
	
			С событиями вроде разобралась, что такое += поняла, как подписываться на ошибки тоже. Только где именно надо использовать ProcessDataError? есть еще ConnectionError. Какие именно функции надо проверять и где?
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/3/2010
					
					
			
					 
					 
					
	
			D_AlexС событиями вроде разобралась, что такое += поняла, как подписываться на ошибки тоже. Только где именно надо использовать ProcessDataError? есть еще ConnectionError. Какие именно функции надо проверять и где?  Это не функции, а обработчики событий. Подпишитесь на событие ITrader.ProcessDataError, и, если в его обработчик что-нибудь придет, сохраните ошибку (или просто запустите под Debug и поставьте точку останова). ConnectionError - это другое событие, связанное с ошибкой соединения. Вы подключиться смогли к Квик?
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					a.dobryn 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/3/2010
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Да, обработчики, я не совсем правильно сформулировала вопрос =) нужно подписаться на это событие, но где? В какой момент? К квику подключилась. Есть функция Connect_Click, но, раз подключение успешно выполняется, но надо это делать не там? Хотя работа с портфелем вроде осуществляется там, до старта DDE Code private void Connect_Click(object sender, RoutedEventArgs e)         {             if (!_isConnected)             {                 if (this.Path.Text.IsEmpty())                     MessageBox.Show(this, "Путь к Quik не выбран");                 else                 {                     if (this.Trader == null)                     {                         // создаем шлюз                         this.Trader = new QuikTrader(this.Path.Text);
                          // возводим флаг, что соединение установлено                         _isConnected = true;
                          // подписываемся на событие ошибки соединения                         this.Trader.ConnectionError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString()));       
                          // добавляем тип CustomPortfolio для преобразования строчки из таблица в Портфель в объект CustomPortfolio                         this.Trader.AddCustomTableMapping(typeof(CustomPortfolio));
                          this.Trader.ProcessCustomTables += (type, objects) =>                          {                             // нас интересует только CustomPortfolio                             if (type == typeof(CustomPortfolio))                                 _portfolioWindow.Portfolios.AddRange(objects.Cast<CustomPortfolio>());                         };
                          this.Trader.Connected += () => this.GuiAsync(() =>                         {                             this.ShowPortfolio.IsEnabled = true;                             this.ExportDde.IsEnabled = true;
                              _isConnected = true;                             this.ConnectBtn.Content = "Отключиться";                         });
                          this.Trader.Disconnected += () => this.GuiAsync(() =>                         {                             _isConnected = false;                             this.ConnectBtn.Content = "Подключиться";                         });                     }                                 this.Trader.Connect();                 }             }             else                 this.Trader.Disconnect();         }
 
  Извиняюсь за столь глупые вопросы, пытаюсь понять все с наскока :-[
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					MCTuTeJ|19951995 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 12/3/2010
					
					
			
					 
					 
					
	
			Попробуйте там же где Вы на все остальные подписываетесь.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |