![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
Доброго дня всем.
нужна помощь ребенку с курсовым. задание такое. есть рекорд Код:
Теперь по заданию пункта курсовика нужно скопировать Table1 в Buff1, а Table2 в Buff2. вобщем Record в массив байт. используя MemCopy; с обычными массивами он разобрался и они копируются... но воткнул с получением указателя на запись. длинну записи в байтах посчитал. делает таким кодом Код:
или может это вобще не правильный подход? Всем заранние спасибо за ответы. Последний раз редактировалось stalkernet; 01.06.2021 в 17:46. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
Вабщем после уточнения - чтоже всетаки надо. Выяснилось. Как вседа недопанимание.
Надо сделать как в старом делфи сделана работа с типизированым файлом. type TFRecTable = record FrecInfo : array[0..5] of integer; FrecData: array[0..5] of double; end; var F : file of TFRecTable; x: TFRecTable; // ну и собственно нужно реализовать write(f, x) и read(f,x) все это нужно сделать через TFileStream и для динамического массива. Пока отправил курить мануал на тему что такое record и как он организован в памяти. ну и чем димачический массив отличается от статического. насколько я помню и понимаю задачу. без заголовка в файле где что лежит и какой длинны не обойтись. А собирать буфер надо из record-а поэлементно. типа записать в буфер x.FrecInfo записать в буфер x.FrecData записать в заголовок начало и длинну x.FrecInfo записать в заголовок начало и длинну x.FrecData отправить буфер в FileStream. Я правильно помню? Или есть какаято готовая функция чтения записи record-а? |
![]() |
![]() |
![]() |
#3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,428
|
![]()
SizeOf(x) равен 72 байта, что совпадает с ожидаемым размером 6 интов + 6 даблов, так что писать можно сразу "stream.WriteBuffer(x, SizeOf(x));".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
BDA не спорю. ну а если такая тип:
type TFRecTable = record len : uint64; step : double; prefx : string; FrecInfo : array of integer; FrecData: array of double; end; тогда только поэлементно. иначе что откуда читать назад? или я неправ? |
![]() |
![]() |
![]() |
#5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,428
|
![]()
Я не знаю, как в памяти хранится дженерик-массив (который в первом сообщении темы). Элементы динамического массива хранятся в памяти подряд, так что при записи в файл можно записать количество, а затем все элементы массива разом (если рассматривать одномерный динамический массив типов статического размера). Есть библиотека для записи и чтения таких вещей - http://code.google.com/p/kblib/. Можно попробовать там подсмотреть, как это сделать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#6 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
northener ребенок не мой. родственики навязали. и нужен ему хороший ремень.... один Copy/Paste на уме. а как работает - не важно. в часном случае получилось - и ладненько. короче по натуре -кодер. хотел от меня готовое решение...
Своего научил пользоватся литературой - достаточно просто подсказать в какую сторону рыть. ну хоть понимает как пишутся алгоритмы. и каких труднестей и внимательности они требют чтобы убедится что все работает как нужно... BDA Спасибо за сцылку. сэкономит время на разработке проокола обмена. а дальше будет видно - переписовать на свое или смысла нет. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как получить указатель IntPtr на массив Int | IT-Lopata | C# (си шарп) | 12 | 01.04.2014 18:13 |
Как получить указатель на буфер с ранее выделенной памятью? | calypso | Win Api | 1 | 14.03.2013 14:20 |
delphi XE2 Передать указатель на тип record в EnumWindows. Вылет в IntOverFlow или AV | Человек_Борща | Общие вопросы Delphi | 8 | 12.02.2012 21:57 |
Не получается получить значение из функции через указатель | Casper-SC | Общие вопросы C/C++ | 5 | 12.01.2012 06:32 |
Не удается получить указатель на метод | systemmind | Общие вопросы C/C++ | 1 | 22.09.2011 22:57 |