Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 12.01.2021, 10:38   #1
Leonid17
 
Регистрация: 12.01.2021
Сообщений: 5
По умолчанию Извлечение данных по указателю

Здравствуйте, уважаемые форумчане.

(Небольшое введение) В данный момент я собираю лабораторный стенд на базе другой установки, софт к которой написан на С++. Её дизайнеры так же написали библиотеки под эту установку для упрощения её использования в новых задачах. Так получилось, что в С++ я не понимал до этого ничего, потихоньку стал разбираться, уже написал что-то, но столкнулся с полным не пониманием того, как извлечь набор данных из указателя в аргументе функции.

(САМ ВОПРОС) Имеется функция: TDCReadToHistMT()
Код:
 KORETDC_API int WINAPI TDCReadToHistMT(unsigned *pHist, double StartTime, unsigned nPoints, int BitShift, int nExpt, int nChunk)
Описание к ней следующее:
Цитата:
pHist - A pointer to a block of memory that will receive the requested time histogram. Ensure that the memory is valid for writing and that there is enough room to hold nPoints worth of data i.e. 4*nPoints bytes

nPoints The number of points in the histogram (max 0x800000) and hence the range of memory that may be written to
Остальные опущу за ненадобностью. Вопрос заключается в следующем. Как извлечь данные? Что такое указатели и как с ними работать я примерно представляю, но как подступится к этому вопросу я не понимаю. Возможно, здесь просто недостаточно информации, что я не могу определить из-за отсутствия опыта. Есть ли какие-то гайды и как правильно гуглить. Я по меньше мере 3 серии статей по указателям, где так же упоминалась работа с памятью, но как работать с этой функцией не понимаю. Прошерстив руководство и все придатки я нашёл ещё один абзац:
Цитата:
Alternatively, the data may be reduced to a time-histogram on-the-fly. In this case the data size is fixed by pre-set choices for the time histogram bin-width and the settings for 'Start time' and 'End time'. The complete set of exact stop times are not recorded, so additional information cannot be retrospectively extracted. The data is collected into time bins, and the resulting data file only contains the number of counts in each bin. Data is only subsequently available at the resolution specified during collection, and over the time-window specified.
Но здесь скорее о формате записи, нежели о том, как считывать данные. Не уверен, что на такой расплывчатый вопрос можно ответить однозначно, но буду благодарен, если меня хотя бы тыкнут в нужную сторону.
Leonid17 вне форума Ответить с цитированием
Старый 12.01.2021, 12:14   #2
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 130
По умолчанию

Код:
const unsigned Num = 100;
Point* Hist = new Point[Num];
Вот вам и массив. Если спец. типа нет, то можно:
Код:
unsigned char* Hist = new unsigned char[4*Num];
FrosyaZZ на форуме Ответить с цитированием
Старый 12.01.2021, 12:57   #3
Leonid17
 
Регистрация: 12.01.2021
Сообщений: 5
По умолчанию

FrosyaZZ, С панталыку сбивает из слова достаточное количество памяти (4*nPoints). Почему бы просто не сказать про массив. Я правильно понимаю, что нужно тупо зарезервировать память для массива на nPoints, скормить функции, после чего в этом же месте я обнаружу нужные мне данные? Никаких лишних движений не понадобится?
Так же вопрос. А обязательно выделять динамическую память? Или статическая тоже подойдёт? Вообще говоря, задача стоит как можно быстрее это сделать. Или это не важно?
Leonid17 вне форума Ответить с цитированием
Старый 12.01.2021, 13:28   #4
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Leonid17 Посмотреть сообщение
С панталыку сбивает из слова достаточное количество памяти (4*nPoints)
Чем сбивает? Вам просто указали сколько мерять в байтах... а там можете и класс делать или байтам выделять.

Цитата:
Сообщение от Leonid17 Посмотреть сообщение
Почему бы просто не сказать про массив.
Массив какого типа?

Цитата:
Сообщение от Leonid17 Посмотреть сообщение
Я правильно понимаю, что нужно тупо зарезервировать память для массива на nPoints, скормить функции, после чего в этом же месте я обнаружу нужные мне данные?
Выделить. Ну в принципе, вам именно это и написали.

Цитата:
Сообщение от Leonid17 Посмотреть сообщение
Никаких лишних движений не понадобится?
Код возврата проверять все-таки надо.

Цитата:
Сообщение от Leonid17 Посмотреть сообщение
А обязательно выделять динамическую память? Или статическая тоже подойдёт?
Лишь бы доступ на запись был. Если у вас всегда фиксированное кол-во точек, то можно и статическую. Только стоит учитывать, что размер под статические переменные не очень большой.
FrosyaZZ на форуме Ответить с цитированием
Старый 12.01.2021, 13:34   #5
Leonid17
 
Регистрация: 12.01.2021
Сообщений: 5
По умолчанию

FrosyaZZ, спасибо большое, помогли!
Leonid17 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
извлечение данных из бд generation470 C# (си шарп) 3 03.05.2013 14:05
доступ по неверному указателю при построчном считывании данных из файла okrill Общие вопросы C/C++ 3 01.09.2012 18:07
Извлечение данных Айвенго Microsoft Office Excel 3 10.05.2011 10:06
Извлечение данных из потока bug Общие вопросы Delphi 11 05.10.2009 13:34
Передача данных в функцию по указателю Игорь007 Общие вопросы C/C++ 2 23.06.2008 19:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS