Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

(САМ ВОПРОС) Имеется функция: 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
Сообщений: 243
По умолчанию

Код:
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
Сообщений: 6
По умолчанию

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

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

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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