Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69

Кто разбирается Прокоментируйте код с++ WinApi

28.06.2013, 14:03. Показов 1349. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот имеется такой код в Хедер файле (это часть кода из Хедер файла , вообще там около 10000 строк ) , помогите прокоментировать , я в с++ не понимаю так как программирую на с# , вообще задача у меня такая , использовать это в с# есть хедер файл , потом несколько dll , и несколько файлов с расширением lib , названия у них совпадают , вот мне нужно вызвать эти функции из с# как подключить dll я знаю , но незнаю как подобрать типы данных с++ в с# ? , в с++ весь код в одних звездочках да в & , и еще какието ~Virtual , как их вызвать предстваления не имею

Если кто понимает помогите плиз )))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifdef TD_EXPORTS
#define TD_API __declspec(dllexport)
#else
#define TD_API __declspec(dllimport)
#endif
 
 
#ifdef __cplusplus
extern "C"
{
#endif
 
 
 
class TD_API Connection : public ConnectionBase
{
public:
    Connection(const char* connectionName, 
 
        const unsigned char connectionDataType,
        unsigned int receiveBufferSize = 0xFFFFFFFF,
        unsigned int sendBufferSize = 0xFFFFFFFF,
        int reconnectSeconds = 5,
        unsigned int reconnectTries = 0,
        unsigned int maxReconnectTries = 0xFFFFFFFF,
 
        const char* loginID = "",
        const char* password = "");
 
    Connection(const ConnectionBase& connectionBase);
};
 
 
 
bool WINAPI TD_AddStreamConnection(const ConnectionBase& connectionBase);
 
 
Security* WINAPI TD_ObtainStock(const char* symbol);
Security* WINAPI TD_FindStock(const char* symbol);
void WINAPI TD_ReleaseStock(Security* stock);
unsigned int WINAPI TD_GetStockCount();
 
Index* WINAPI TD_FindIndex(const char* symbol);
Index* WINAPI TD_GetIndexByCode(unsigned short code);
unsigned int WINAPI TD_GetIndexCount();
 
Security* WINAPI TD_FindSortableEquity(const char* symbol);
Security* WINAPI TD_FindSortableEquityByNumericSymbol(unsigned __int64 symbol);
Security* WINAPI TD_GetSortableEquityByCode(unsigned short code);
unsigned int WINAPI TD_GetSortableEquityCount();
 
Account* WINAPI TD_GetDefaultAccount();
 
 
bool WINAPI TD_IsMarketDataConnected();
bool WINAPI TD_IsExecutorConnected();
bool WINAPI TD_IsMarketSorterConnected();
 
void WINAPI TD_GetPanicCommandName(std::string& panicCommandName);
bool WINAPI TD_SetPanicCommandName(const std::string& panicCommandName);
 
bool WINAPI TD_SetSymbolInCommandTool(const char* symbol, bool post, unsigned int commandToolOrdinal = 0xFFFFFFFF);//commandToolOrdinal = 0xFFFFFFFF means active command tool.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2013, 14:03
Ответы с готовыми решениями:

Кто может прокоментируйте пожалуйсто этот код..
Кто может прокоментируйте пожалуйсто этот код.. Заранее спасибо! #include <windows.h> int main(){ HWND...

кто разбирается)
Дана матрица из 3 строк и 2 столбцов. Найти в матрице максимальный элемент и число,характеризующие его встречаемость в матрице) заранее...

Кто разбирается в mysql
После входа в localhost присоздании новой библиотеки пишет "нет приоритета" что делать???

17
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
28.06.2013, 14:19
Небольшая подсказка :
тип со звездочкой - считайте ссылочным типом в с#
тип (без звездочки и без амперсанда) - считайте типом значения в с#
если тип (без звездочки и без амперсанда) в параметрах функции - то передача типа в функцию по значению
тип со звездочкой в параметрах функции - считайте передача массива типа в (из ) функцию в с#
тип с амперсандом в параметрах функции - считайте передача типа в (из) функцию через ref , out в с#

~Virtual - ну деструкторы они и в с# есть .
0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
28.06.2013, 16:12  [ТС]
Security* WINAPI TD_FindSortableEquity(const char* symbol);


void WINAPI TD_GetPanicCommandName(std::string& panicCommandName);
bool WINAPI TD_SetPanicCommandName(const std::string& panicCommandName);

bool WINAPI TD_SetSymbolInCommandTool(const char* symbol, bool post, unsigned int commandToolOrdinal = 0xFFFFFFFF);//commandToolOrdinal = 0xFFFFFFFF means active command tool.

вот можете помочь как именно вот эти функции вызвать из с# с остальными попробую уже по анологии разобраться

Добавлено через 31 секунду
пример показать

Добавлено через 1 минуту
std::string& panicCommandName

Security* WINAPI

const char* symbol, bool post, unsigned int commandToolOrdinal = 0xFFFFFFFF


вот такие выражения меня очень напрягают , даже предположить не могу ))
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
28.06.2013, 17:14
Цитата Сообщение от aae1 Посмотреть сообщение
вот можете помочь как именно вот эти функции вызвать из с# с остальными попробую уже по анологии разобраться
Очень интересна ваша тема, но не стану на себя брать ответственность и тратить ваше время .
Взаимодействие с# с неуправляемым кодом это целая наука
.Вот здесь неплохо расписано с примерами
https://www.cyberforum.ru/csha... 42135.html
1
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
28.06.2013, 18:39  [ТС]
читал ее уже )) -- моих примеров там нет , слишком много вариаций , это направление вообще достаточно сложное
0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 13:32  [ТС]
вот например возмем эту функции
Security* WINAPI TD_FindSortableEquity(const char* symbol);

попробую вызвать ее следующим способом
C#
1
2
[DllImport( "TakApi.DLL", SetLastError = true, EntryPoint = "TD_FindSortableEquity")]
static extern "Тип возвращаемого значения какой ставить ?? " Value ("DDD");
Security*-- вот этот чтоли ?? а как я потом выдерну данные из него , или нужно его описать в с# class Security так же как он описан в С++ , или тип ставить IntPtr - это будет указатель , как тогда потом из него данные вытащить ?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 14:08
Security что это ? напишите
static extern "Тип возвращаемого значения какой ставить ?? " Value ("DDD");
возвращать IntPtr потом преобразовать в Security
Попозже кодом помогу
0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 14:23  [ТС]
очень большой класс ,
вот что есть в хедер файле
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
class TU_API Security : public HTB, public Observable
{
public:
    virtual ~Security(){}
 
    virtual bool isSubscribable() const{return false;}
 
    virtual HANDLE GetThreadHandle() const{return NULL;}
    virtual unsigned int GetThreadId() const{return 0;}
    bool isInThread() const{return GetCurrentThreadId() == GetThreadId();}
 
    virtual unsigned int GetInvalidateLevel1Ordinal() const{return 0;}
    virtual unsigned int GetUpdateLevel1Ordinal() const{return 0;}
 
    virtual void GetProtectedMarketSnapshot(bool bid, std::string& snapshot) const{}
 
    virtual void NextDayStarted(){}
 
    virtual bool HasPrints() const{return m_lastPrice != 0;}
 
    const unsigned short& GetCode() const{return m_code;}
    virtual bool isLoaded() const{return m_loaded;}
    virtual SecurityType GetSecurityType() const = 0;
 
    const char* GetName() const{return m_name.c_str();}
    const std::string& GetNameStr() const{return m_name;}
    const unsigned int& GetRoundLot() const{return m_roundLot;}
    const bool& isRoundLotsOnly() const{return m_roundLotsOnly;}
 
    virtual bool isMarketDataStock() const{return true;}
    virtual const unsigned int& GetTierSize() const{return m_roundLot;}
 
    virtual const LineBufferArray* GetUnappliedMessages() const{return NULL;}
 
//Level2 should be locked before you use the TakionIterator* returned by the 2 function below
    virtual TakionIterator* GetBidIterator(){return NULL;}
    virtual TakionIterator* GetAskIterator(){return NULL;}
//
    const char& GetMarketCategory() const{return m_marketCategory;}
    const unsigned int& GetMarketCategoryFilter() const{return m_marketCategoryFilter;}
    const char& GetFinancialStatus() const{return m_financialStatus;}
    const char& GetPrimaryExchange() const{return m_primaryExchange;}
    const char* GetPrimaryExchangeName() const;
    const unsigned int& GetTradingActionReason() const{return m_tradingActionReason;}
    const char& GetTradingState() const{return m_tradingState;}
    const unsigned __int64& GetVolume() const{return m_volume;}
    const unsigned __int64& GetYesterdaysVolume() const{return m_yesterdaysVolume;}
 
    const char& GetShortSaleThresholdIndicator() const{return m_shortSaleThresholdIndicator;}//'Y', 'N'
    const char& GetRegSHOTestIndicator() const{return m_regSHOTestIndicator;}//'0', '1', '2'
    const unsigned short& GetSplitNumerator() const{return m_splitNumerator;}
    const unsigned short& GetSplitDenominator() const{return m_splitDenominator;}
    const unsigned int& GetSplit() const{return m_split;}
    const Price& GetDividend() const{return m_dividend;}
 
    const Price& GetLrpLow() const{return m_lrpLow;}
    const Price& GetLrpHigh() const{return m_lrpHigh;}
    const unsigned int& GetLrpLowTime() const{return m_lrpLowTime;}
    const unsigned int& GetLrpHighTime() const{return m_lrpHighTime;}
    const short& GetLrpLowDelay() const{return m_lrpLowDelay;}
    const short& GetLrpHighDelay() const{return m_lrpHighDelay;}
    const bool& isLrpLowHistorical() const{return m_lrpLowHistorical;}
    const bool& isLrpHighHistorical() const{return m_lrpHighHistorical;}
 
    const unsigned int& GetTradeDisseminationTime() const{return m_tradeDisseminationTime;}
    const char& GetRpiIndicator() const{return m_rpiIndicator;}
 
    unsigned int GetL2Bid() const{return m_l2Bid;}
    unsigned int GetL2Ask() const{return m_l2Ask;}
    const unsigned int& GetL2BidSize() const{return m_l2BidSize;}
    const unsigned int& GetL2AskSize() const{return m_l2AskSize;}
 
    unsigned int GetL1Bid() const{return m_l1Bid;}
    unsigned int GetL1Ask() const{return m_l1Ask;}
    unsigned int GetNysBid() const{return m_nysBid;}
    unsigned int GetNysAsk() const{return m_nysAsk;}
    const unsigned int& GetNysBidSize() const{return m_nysBidSize;}
    const unsigned int& GetNysAskSize() const{return m_nysAskSize;}
    unsigned int GetLastPrice() const{return m_lastPrice;}
    unsigned int GetClosePriceCompact() const{return m_closePriceCompact;}
    unsigned int GetTodaysClosePriceCompact() const{return m_todaysClosePriceCompact;}
    unsigned int GetOpenPriceCompact() const{return m_openPriceCompact;}
    unsigned int GetLastOrClosePrice() const{return m_lastPrice ? m_lastPrice : m_closePriceCompact;}
    unsigned int GetLastNbboPrintPrice() const{return m_lastNbboPrintPrice;}
    const Price& GetPmiBid() const{return m_pmiBid;}
    const Price& GetPmiAsk() const{return m_pmiAsk;}
    const bool& isOpen() const{return m_open;}
    const Price& GetOpenPrice() const{return m_openPrice;}
    const Price& GetClosePrice() const{return m_closePrice;}
    const SignedPrice& GetNetChange() const{return m_netChange;}
    const SignedPrice& GetNiteChange() const{return m_niteChange;}
    const SignedPrice& GetOpenChange() const{return m_openChange;}
    const Price& GetHighPrice() const{return m_highPrice;}
    const Price& GetLowPrice() const{return m_lowPrice;}
//  const SignedPrice& GetLastPriceInRange() const{return m_lastPriceInRange;}
    const Price& GetPriceRange() const{return m_priceRange;}
    const Price& GetExtendedPriceRange() const{return m_extendedPriceRange;}
 
    const SignedPrice& GetLastPriceInRangePercent() const{return m_lastPriceInRangePercent;}
 
    const unsigned int& GetFirstQualifyingPrintSourceMask() const{return m_firstQualifyingPrintPresent;}
 
    const Price& GetTodaysClosePrice() const{return m_todaysClosePrice;}
    const unsigned int& GetLevel1BidSize() const{return m_level1BidSize;}
    const unsigned int& GetLevel1AskSize() const{return m_level1AskSize;}
    const unsigned int& GetLastTradeSize() const{return m_lastTradeSize;}
    const unsigned int& GetLastTradeMillisecond() const{return m_lastTradeMillisecond;}
    const unsigned int& GetLevel1Millisecond() const{return m_level1Millisecond;}
    const unsigned int& GetPmiMillisecond() const{return m_pmiMillisecond;}
    const short& GetLevel1Delay() const{return m_level1Delay;}
    const TradeLevel1& GetLastTradeLevel1() const{return m_lastTradeLevel1;}
    const char& GetBidMarketCenter() const{return m_bidMarketCenter;}
    const char& GetAskMarketCenter() const{return m_askMarketCenter;}
    const char& GetQuoteCondition() const{return m_quoteCondition;}
    const char& GetLastMarketCenter() const{return m_lastMarketCenter;}
    unsigned int GetQuoteSeqNumber() const{return m_quoteSeqNumber;}
    unsigned int GetTradeSeqNumber() const{return m_tradeSeqNumber;}
    const unsigned char& GetTick() const{return m_tick;}
 
    virtual unsigned short GetLastNewMinuteFromMsServer() const{return 0;}
 
    virtual Book* GetBook(unsigned char bookId){return NULL;}
    virtual const Book* GetBook(unsigned char bookId) const{return NULL;}
    virtual const Imbalance* GetNasdaqImbalance() const{return NULL;}
    virtual const Imbalance* GetArcaImbalance() const{return NULL;}
    virtual const Imbalance* GetNyseImbalance() const{return NULL;}
 
    const Imbalance* GetExchImbalance() const
    {
        switch(m_primaryExchange)
        {
            case PE_NSDQ:
            return GetNasdaqImbalance();
 
            case PE_ARCA:
            return GetArcaImbalance();
 
            default://PE_AMEX;PE_NYSE
            return GetNyseImbalance();
        }
    }
 
    static const unsigned int uintZero;
    static const int intZero;
    static const char space;
 
    const Price& GetFarPriceNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetFarPrice() : TU_GetPriceZero();}
    const Price& GetNearPriceNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetNearPrice() : TU_GetPriceZero();}
    const Price& GetCurrentReferencePriceNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetCurrentReferencePrice() : TU_GetPriceZero();}
    const int& GetImbalanceSharesNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetImbalanceShares() : intZero;}
    const int& GetMarketImbalanceSharesNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetMarketImbalanceShares() : intZero;}
    const unsigned int& GetPairedSharesNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetPairedShares() : uintZero;}
    const unsigned int& GetImbalanceTimeNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetImbalanceTime() : uintZero;}
    const unsigned int& GetAuctionTimeNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetAuctionTime() : uintZero;}
    const char& GetCrossTypeNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetCrossType() : space;}
    const char& GetPriceVariationIndicatorNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetPriceVariationIndicator() : space;}
    const int& GetRegulatoryImbalanceSharesNsdq() const{const Imbalance* imb = GetNasdaqImbalance(); return imb ? imb->GetRegulatoryImbalanceShares() : intZero;}
 
    const Price& GetFarPriceArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetFarPrice() : TU_GetPriceZero();}
    const Price& GetNearPriceArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetNearPrice() : TU_GetPriceZero();}
    const Price& GetCurrentReferencePriceArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetCurrentReferencePrice() : TU_GetPriceZero();}
    const int& GetImbalanceSharesArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetImbalanceShares() : intZero;}
    const int& GetMarketImbalanceSharesArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetMarketImbalanceShares() : intZero;}
    const unsigned int& GetPairedSharesArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetPairedShares() : uintZero;}
    const unsigned int& GetImbalanceTimeArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetImbalanceTime() : uintZero;}
    const unsigned int& GetAuctionTimeArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetAuctionTime() : uintZero;}
    const char& GetCrossTypeArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetCrossType() : space;}
    const char& GetPriceVariationIndicatorArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetPriceVariationIndicator() : space;}
    const int& GetRegulatoryImbalanceSharesArca() const{const Imbalance* imb = GetArcaImbalance(); return imb ? imb->GetRegulatoryImbalanceShares() : intZero;}
 
    const Price& GetFarPriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetFarPrice() : TU_GetPriceZero();}
    const Price& GetNearPriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetNearPrice() : TU_GetPriceZero();}
    const Price& GetCurrentReferencePriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetCurrentReferencePrice() : TU_GetPriceZero();}
    const int& GetImbalanceSharesNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetImbalanceShares() : intZero;}
    const int& GetRegulatoryImbalanceSharesNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryImbalanceShares() : intZero;}
    const int& GetMarketImbalanceSharesNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetMarketImbalanceShares() : intZero;}
    const unsigned int& GetPairedSharesNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetPairedShares() : uintZero;}
    const unsigned int& GetImbalanceTimeNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetImbalanceTime() : uintZero;}
    const unsigned int& GetRegulatoryImbalanceTimeNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryImbalanceTime() : uintZero;}
    const unsigned int& GetAuctionTimeNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetAuctionTime() : uintZero;}
    const char& GetCrossTypeNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetCrossType() : space;}
    const char& GetPriceVariationIndicatorNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetPriceVariationIndicator() : space;}
 
    const Price& GetRegulatoryFarPriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryFarPrice() : TU_GetPriceZero();}
    const Price& GetRegulatoryNearPriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryNearPrice() : TU_GetPriceZero();}
    const Price& GetRegulatoryCurrentReferencePriceNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryCurrentReferencePrice() : TU_GetPriceZero();}
    const unsigned int& GetRegulatoryPairedSharesNyse() const{const Imbalance* imb = GetNyseImbalance(); return imb ? imb->GetRegulatoryPairedShares() : uintZero;}
 
    const Price& GetFarPriceExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetFarPrice() : TU_GetPriceZero();}
    const Price& GetNearPriceExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetNearPrice() : TU_GetPriceZero();}
    const Price& GetCurrentReferencePriceExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetCurrentReferencePrice() : TU_GetPriceZero();}
    const int& GetImbalanceSharesExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetImbalanceShares() : intZero;}
    const int& GetMarketImbalanceSharesExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetMarketImbalanceShares() : intZero;}
    const unsigned int& GetPairedSharesExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetPairedShares() : uintZero;}
    const unsigned int& GetImbalanceTimeExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetImbalanceTime() : uintZero;}
    const unsigned int& GetAuctionTimeExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetAuctionTime() : uintZero;}
    const char& GetCrossTypeExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetCrossType() : space;}
    const char& GetPriceVariationIndicatorExch() const{const Imbalance* imb = GetExchImbalance(); return imb ? imb->GetPriceVariationIndicator() : space;}
//Only works in Market Sorter
    const Price& GetExtendedHighPrice() const{return m_extendedHigh;}
    const Price& GetExtendedLowPrice() const{return m_extendedLow;}
    const Price& GetMarketHoursHighPrice() const{return m_marketHoursHigh;}
    const Price& GetMarketHoursLowPrice() const{return m_marketHoursLow;}
    const unsigned short& GetExtendedHighMinute() const{return m_extendedHighMinute;}
    const unsigned short& GetExtendedLowMinute() const{return m_extendedLowMinute;}
    const unsigned short& GetMarketHoursHighMinute() const{return m_marketHoursHighMinute;}
    const unsigned short& GetMarketHoursLowMinute() const{return m_marketHoursLowMinute;}
//
    virtual const Exchange* GetPrints(unsigned char id) const{return NULL;}
    virtual const Exchange* GetBookExecutions(unsigned char id) const{return NULL;}
 
    unsigned char GetTradeLevel1(const Price& price) const;
    unsigned char GetTradeLevel1FromCompactPrice(unsigned int price) const;
 
    virtual void SetUpdated(){}
    virtual bool isUpdated(unsigned int updateOrdinal) const{return false;}
 
    virtual void SetUpdatedLevel1(){}
    virtual bool isUpdatedLevel1(unsigned int updateOrdinal) const{return false;}
 
    virtual bool CanUnsubscribe() const;
    LONG isUnsubscribable() const{return m_unsubscribable;}
//  virtual void SetUnsubscribable(bool unsubscribable){m_unsubscribable = unsubscribable;}
    virtual LONG IncrementUnsubscribable(){return InterlockedIncrement(&m_unsubscribable);}
    virtual LONG DecrementUnsubscribable(){return InterlockedDecrement(&m_unsubscribable);}
 
    void AddInThreadObserver(Observer* o);//Call RemoveInThreadObserver in the destructor of the object that you pass to this function
    void RemoveInThreadObserver(Observer* o);
    void RemoveInThreadObserverWithoutLocking(Observer* o);
 
    bool LockInquiryLevel1() const{return m_lockLevel1.LockInquiry();}
    void LockInquiryWaitLevel1() const{m_lockLevel1.LockInquiryWait();}
    void UnlockInquiryLevel1() const{m_lockLevel1.UnlockInquiry();}
 
    bool LockInquiryLevel2() const{return m_lockLevel2.LockInquiry();}
    void LockInquiryWaitLevel2() const{m_lockLevel2.LockInquiryWait();}
    void UnlockInquiryLevel2() const{m_lockLevel2.UnlockInquiry();}
 
    bool LockInquiryPrints() const{return m_lockPrints.LockInquiry();}
    void LockInquiryWaitPrints() const{m_lockPrints.LockInquiryWait();}
    void UnlockInquiryPrints() const{m_lockPrints.UnlockInquiry();}
 
    bool LockInquiryChart() const{return m_lockChart.LockInquiry();}
    void LockInquiryWaitChart() const{m_lockChart.LockInquiryWait();}
    void UnlockInquiryChart() const{m_lockChart.UnlockInquiry();}
 
    typedef std::vector<ChartPoint> ChartPointVector;
 
    virtual unsigned short GetChartStartMinute() const{return 0;}//m_chartStartMinute;}
    virtual unsigned short GetChartSize() const{return 0;}
    virtual const ChartPointVector* GetChart() const{return NULL;}//m_chart;}
    virtual bool isChartLoaded() const{return false;}
    const Price& GetFirstPrice() const{return m_firstPrice;}
    const Price& GetFirstMarketOpenPrice() const{return m_firstMarketOpenPrice;}
    const unsigned __int64& GetMarketHoursVolume() const{return m_marketHoursVolume;}
    const unsigned __int64& GetPreMarketVolume() const{return m_preMarketVolume;}
    const unsigned __int64& GetPostMarketVolume() const{return m_postMarketVolume;}
    const Money& GetMoneyTraded() const{return m_moneyTraded;}
    const Money& GetMarketHoursMoneyTraded() const{return m_marketHoursMoneyTraded;}
    const Money& GetPreMarketMoneyTraded() const{return m_preMarketMoneyTraded;}
    const Money& GetPostMarketMoneyTraded() const{return m_postMarketMoneyTraded;}
 
    virtual unsigned char GetMoveCountQuoteGreenLocked() const{return 0;}
    virtual unsigned char GetMoveCountQuoteRedLocked() const{return 0;}
    virtual unsigned char GetMoveCountPrintGreenLocked() const{return 0;}
    virtual unsigned char GetMoveCountPrintRedLocked() const{return 0;}
    const bool& isTest() const{return m_test;}
    const bool& isIpo() const{return m_ipo;}
    const char& GetType() const{return m_type;}
    const bool& isBancruptcy() const{return m_bancruptcy;}
    const bool& isExDistribution() const{return m_exDistribution;}
    const bool& isExRights() const{return m_exRights;}
    const bool& isExDividend() const{return m_exDividend;}
    const bool& isSpecialDividend() const{return m_specialDividend;}
//  bool& isSplit() const{return m_split;}
    const bool& isRule19C3() const{return m_rule19C3;}
    const bool& isItsEligible() const{return m_itsEligible;}
/*
    virtual unsigned char GetMoveReportLevel() const{return 0;}
    virtual void SetMoveReportLevel(unsigned char level){}
    virtual void SetMoveReportLevelFlag(MoveReportLevel level){}
    virtual void UnsetMoveReportLevelFlag(MoveReportLevel level){}
*/
    virtual unsigned char GetPositionStatus() const{return 0;}//0 - flat, 1 long, 2 short
    virtual int GetCurrentPositionSize() const{return 0;}
    virtual unsigned int GetCurrentPositionPrice() const{return 0;}
    virtual unsigned int GetLastExecPrice() const{return 0;}
    virtual int GetLastExecSize() const{return 0;}
 
protected:
    Security(const char* symbol, unsigned short code);
    unsigned short m_code;
//  char m_name[MAX_SECURITY_NAME + 1];
    std::string m_name;
 
    unsigned int m_roundLot;
    bool m_roundLotsOnly;
    char m_marketCategory;
    char m_financialStatus;
    char m_primaryExchange;
    unsigned int m_marketCategoryFilter;
    unsigned int m_tradingActionReason;
    char m_tradingState;
 
    bool m_test;
 
    bool m_loaded;
    volatile LONG m_unsubscribable;
 
    unsigned __int64 m_volume;
    unsigned __int64 m_yesterdaysVolume;
//  Price m_level1Bid;
//  Price m_level1Ask;
//  Price m_lastTradePrice;
 
//  volatile unsigned __int64 m_level1Bid;
//  volatile unsigned __int64 m_level1Ask;
//  volatile unsigned __int64 m_lastTradePrice;
 
    volatile unsigned int m_l2Bid;
    volatile unsigned int m_l2Ask;
//  volatile unsigned int m_l2BidSize;
//  volatile unsigned int m_l2AskSize;
    unsigned int m_l2BidSize;
    unsigned int m_l2AskSize;
 
    volatile unsigned int m_l1Bid;
    volatile unsigned int m_l1Ask;
    volatile unsigned int m_nysBid;
    volatile unsigned int m_nysAsk;
    unsigned int m_nysBidSize;
    unsigned int m_nysAskSize;
    volatile unsigned int m_lastPrice;
    volatile unsigned int m_lastNbboPrintPrice;
    volatile unsigned int m_closePriceCompact;
    volatile unsigned int m_todaysClosePriceCompact;
    volatile unsigned int m_openPriceCompact;
    Price m_pmiBid;
    Price m_pmiAsk;
    Price m_openPrice;
    Price m_closePrice;
    SignedPrice m_netChange;
    SignedPrice m_openChange;
    SignedPrice m_niteChange;
//  SignedPrice m_netChangePercent;
    Price m_highPrice;
    Price m_lowPrice;
    Price m_priceRange;
    Price m_extendedPriceRange;
    SignedPrice m_lastPriceInRangePercent;
    Price m_todaysClosePrice;
 
    Price m_firstPrice;
    Price m_firstMarketOpenPrice;
    unsigned __int64 m_marketHoursVolume;
    unsigned __int64 m_preMarketVolume;
    unsigned __int64 m_postMarketVolume;
 
    Money m_moneyTraded;
    Money m_marketHoursMoneyTraded;
    Money m_preMarketMoneyTraded;
    Money m_postMarketMoneyTraded;
 
//Only works in Market Sorter
    Price m_extendedHigh;
    Price m_extendedLow;
    Price m_marketHoursHigh;
    Price m_marketHoursLow;
    unsigned short m_extendedHighMinute;
    unsigned short m_extendedLowMinute;
    unsigned short m_marketHoursHighMinute;
    unsigned short m_marketHoursLowMinute;
//
    unsigned int m_firstQualifyingPrintPresent;
 
    unsigned int m_level1BidSize;
    unsigned int m_level1AskSize;
    unsigned int m_lastTradeSize;
    unsigned int m_lastTradeMillisecond;
    unsigned int m_level1Millisecond;
    unsigned int m_pmiMillisecond;
    short m_level1Delay;
    TradeLevel1 m_lastTradeLevel1;
    char m_bidMarketCenter;
    char m_askMarketCenter;
    char m_quoteCondition;
    char m_lastMarketCenter;
    unsigned int m_quoteSeqNumber;
    unsigned int m_tradeSeqNumber;
    unsigned char m_tick;
    bool m_open;
 
    char m_shortSaleThresholdIndicator;//'Y', 'N'
    char m_regSHOTestIndicator;//'0', '1', '2'
    unsigned short m_splitNumerator;
    unsigned short m_splitDenominator;
    unsigned int m_split;
    Price m_dividend;
 
    Price m_lrpLow;
    Price m_lrpHigh;
 
    unsigned int m_lrpLowTime;
    unsigned int m_lrpHighTime;
 
    short m_lrpLowDelay;
    short m_lrpHighDelay;
    bool m_lrpLowHistorical;
    bool m_lrpHighHistorical;
 
    unsigned int m_tradeDisseminationTime;
    char m_rpiIndicator;
 
    bool m_ipo;
    char m_type;
    bool m_bancruptcy;
    bool m_exDistribution;
    bool m_exRights;
    bool m_exDividend;
    bool m_specialDividend;
//  bool m_split;
    bool m_rule19C3;
    bool m_itsEligible;
 
    TakionLock m_lockLevel1;
    TakionLock m_lockLevel2;
    TakionLock m_lockPrints;
    TakionLock m_lockChart;
 
    Observable m_inThreadObservable;
    TakionLock m_lockInThreadObservable;
};
Добавлено через 2 минуты
Не пугайтесь мне надо только несколько примерчиков )) а я потихоньку сам начну их обрабатывать , нужно только знать как правильно делать

Добавлено через 3 минуты
Цитата Сообщение от MrCold Посмотреть сообщение
Security что это ? напишите
static extern "Тип возвращаемого значения какой ставить ?? " Value ("DDD");
возвращать IntPtr потом преобразовать в Security
Попозже кодом помогу

перед функцией стоит Security*
Security* WINAPI TD_FindSortableEquity(const char* symbol);
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 14:25
Мама !!! Мне все равно страшно
Офигеть такой класс маршалить ? Это ацкий труд .

http://cboard.cprogramming.com... nvoke.html
http://blogs.msdn.com/b/vcblog... -in-c.aspx
0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 14:36  [ТС]
вообще тут API к стороннему приложению , и то что я скинул это только 5% из Хедер файла , тут понятно что я попотею и не один месяц , но мне и не нужны столько функций нужна только самая малая часть их , нужну только примерчики , для моих ситуаций
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 14:40
Примеры, в общем то, скинул
Смысл в том, что вам этот класс надо будет переписать в коде С#

Не по теме:

Жез-з-зздь !!!

0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 14:43  [ТС]
я всеравно буду это делать , вы только направьте меня в нужном направлении , и покажите примерчики ))) буду очень благодарен , ну очень не хочу щас еще и с++ изучать

Добавлено через 3 минуты
Цитата Сообщение от MrCold Посмотреть сообщение
Примеры, в общем то, скинул
Смысл в том, что вам этот класс надо будет переписать в коде С#

Не по теме:

Жез-з-зздь !!!

тоесть даже если мне надо из этого класса только пару функций то мне придется весь класс в С# описывать ??

да уж тяжеловато будет , но что делать буду если надо
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 14:59
Цитата Сообщение от aae1 Посмотреть сообщение
тоесть даже если мне надо из этого класса только пару функций то мне придется весь класс в С# описывать ??
Да aae1, ищите примеры такого вида http://stackoverflow.com/quest... ith-arrays
Вам этот класс надо будет переписать в коде С#
Тогда вы можете взаимодействовать с вашей ДЛЛ .
Передавать класс в функции и возвращать обратно

Добавлено через 5 минут
Видите как здесь вся структура С++ сново описана в коде С#
Цитата Сообщение от MrCold Посмотреть сообщение
http://stackoverflow.com/questions/1...ct-with-arrays
C++
1
2
3
4
5
6
struct SYSTEM_OUTPUT
{
    unsigned short  ReadyForConnect;        
    char            VizVersionStr[VERS_LEN];
    char            NameOfFile[SCENE_LEN];
};
C#
1
2
3
4
5
6
7
8
9
10
11
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_OUTPUT
{
    UInt16 ReadyForConnect;        
 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    String VersionStr;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
    String NameOfFile;    
    // actually more of those
}
Добавлено через 6 минут
aae1, ДЛЛ не секретная ? а вы мне не могли бы ссылку на скачивание в личку написать ?
Мне уже самому интересно стало .
1
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 15:29  [ТС]
Цитата Сообщение от MrCold Посмотреть сообщение
Да aae1, ищите примеры такого вида http://stackoverflow.com/quest... ith-arrays
Вам этот класс надо будет переписать в коде С#
Тогда вы можете взаимодействовать с вашей ДЛЛ .
Передавать класс в функции и возвращать обратно

Добавлено через 5 минут
Видите как здесь вся структура С++ сново описана в коде С#
C++
1
2
3
4
5
6
struct SYSTEM_OUTPUT
{
    unsigned short  ReadyForConnect;        
    char            VizVersionStr[VERS_LEN];
    char            NameOfFile[SCENE_LEN];
};
C#
1
2
3
4
5
6
7
8
9
10
11
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_OUTPUT
{
    UInt16 ReadyForConnect;        
 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    String VersionStr;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
    String NameOfFile;    
    // actually more of those
}
Добавлено через 6 минут
aae1, ДЛЛ не секретная ? а вы мне не могли бы ссылку на скачивание в личку написать ?
Мне уже самому интересно стало .
я могу вам все API скинуть что бы ужаснулись!!! если есть скайп напишите мне я вам перекину , может что то поможите ))) оно на с++ все написано , нет бы на шарпе то написали (((

Добавлено через 17 минут
А если класс который наследуется от другого класса в примере ниже ConnectionBase , то его тоже надо будет прописывать в с#??

class TD_API Connection : public ConnectionBase
1
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 15:46
Цитата Сообщение от aae1 Посмотреть сообщение
А если класс который наследуется от другого класса в примере ниже ConnectionBase , то его тоже надо будет прописывать в с#??
По идее да .
Но придерживаюсь варианта
Эту ДЛЛ обернуть в другую ДЛЛ , в которой делать обертку над классами
Поубирать деструкторы и т.д.
Эх ну все равно вам С++ изучать .

Добавлено через 7 минут
aae1, ну неужели на с# ничего подобного нет
ИМХО спросить надо в разделе с# .
На С# уже давно все написано-переписано
Аналог найдется
0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
01.07.2013, 15:49  [ТС]
Эту ДЛЛ обернуть в другую ДЛЛ , в которой делать обертку над классами
Поубирать деструкторы и т.д.

я тоже думал об этом , вопрос такой , в самом API длл-ок нет , там только .h и .lib с одинаковыми названиями , lib я уже прочитал что это статичная библиотека , dll с такимиже названиями присутствуют в самой программе для которой этот API , так что я вот как думаю , достаточно может только lib и h , и работать только с этими файлами тоесть делать другую обверточнуюю dll , a c dll - ками я начал работать изначаль потомучто в с# НЕ подключить было файлы lib
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.07.2013, 15:58
Цитата Сообщение от aae1 Посмотреть сообщение
я тоже думал об этом , вопрос такой , в самом API длл-ок нет , там только .h и .lib с одинаковыми названиями , lib я уже прочитал что это статичная библиотека , dll с такимиже названиями присутствуют в самой программе для которой этот API , так что я вот как думаю , достаточно может только lib и h , и работать только с этими файлами тоесть делать другую обверточнуюю dll , a c dll - ками я начал работать изначаль потомучто в с# НЕ подключить было файлы lib
Ну пока это не важно .Как будете подключаться от того и будет зависеть хватит вам одной .dll
или еще .lib и .h понадобятся

Добавлено через 1 минуту

Не по теме:

Отлучаюсь.. дела )))

0
2 / 2 / 0
Регистрация: 05.01.2013
Сообщений: 69
02.07.2013, 15:10  [ТС]
вот какая штука есть
http://ru.wikipedia.org/wiki/SWIG

Добавлено через 4 часа 57 минут
что то не получается ее даже запустить ((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2013, 15:10
Помогаю со студенческими работами здесь

Кто разбирается в JavaScript
Значит ситуация такая: У меня есть WebView и на нем я отображаю формулы с помощью jqMath(Это такой JS модуль). Код html я получаю из...

Кто разбирается в строках си++
Помогите написать метод решения этой программы? Т.е. нужно кратко объяснить последовательность действий Не могу разобраться, тем более...

Кто разбирается в HTML?
Почему в браузере Android не работает функция позиционирования position: fixed?

Кто разбирается в Memo?
на форме есть несколько компонентов Edit и один Memo. как сделать так, чтобы текст из каждого Edit записался в Мемо?

Turbo C. Кто разбирается?
Дана матрица Z, содержащая 5 строк и 6 столбцов. Её элементами являются случайные целые числа от -19 до 21. Найти в каждом столбце сумму и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru