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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2015, 01:47   #1
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию type record и буфер

Туплю че-то.
Есть такое:
Код:
type tclient=record
id:byte;
tip:word;
parameter:array[0..5] of byte;
end;
....
var
buf:array[0..999] of byte;
clients:array[0..9] of tclient;
как байтовый буфер применить на мой массив с записями, чтоб загруженные байты в буфере разложились по моему рекорду?
mosq вне форума Ответить с цитированием
Старый 19.02.2015, 01:55   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от mosq Посмотреть сообщение
Туплю че-то.
Есть такое:
Код:
type tclient=record
id:byte;
tip:word;
parameter:array[0..5] of byte;
end;
....
var
buf:array[0..999] of byte;
clients:array[0..9] of tclient;
как байтовый буфер применить на мой массив с записями, чтоб загруженные байты в буфере разложились по моему рекорду?
Нужно скопировать загруженные данные из буфера в запись/массив записей? Или организовать непосредственный прием данных в запись/массив записей а-ля в буфер?
northener вне форума Ответить с цитированием
Старый 19.02.2015, 02:01   #3
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

я принял из ком-порта данные в буфер побайтово.
теперь хочу их для удобства сразу загрузить в структурный буфер.

все, сам разобрался. если кому понадобится на будущее:
Код:
m:=tmemorystream.create;
m.Write(buf[0],sizeof(buf));
m.Position:=0;
m.Read(clients,sizeof(clients));

Последний раз редактировалось Stilet; 19.02.2015 в 07:38.
mosq вне форума Ответить с цитированием
Старый 19.02.2015, 02:20   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от mosq Посмотреть сообщение
все, сам разобрался. если кому понадобится на будущее:
Код:
m:=tmemorystream.create;
m.Write(buf[0],sizeof(buf));
m.Position:=0;
m.Read(clients,sizeof(clients));
Ну это только если кто захочет поиметь проблемы с геморроем.
northener вне форума Ответить с цитированием
Старый 19.02.2015, 02:23   #5
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

northener, поясни?
mosq вне форума Ответить с цитированием
Старый 19.02.2015, 02:30   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от mosq Посмотреть сообщение
northener, поясни?
Ну например.
Почему ты указал в m.Write(buf[0],sizeof(buf));
индекс в буфере 0
И почему при этом не указал индекс в m.Read(clients,sizeof(clients));?
clients ведь тоже массив. Ничем не хуже массива buf.
northener вне форума Ответить с цитированием
Старый 19.02.2015, 02:32   #7
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Ну например.
Почему ты указал в m.Write(buf[0],sizeof(buf));
индекс в буфере 0
И почему при этом не указал индекс в m.Read(clients,sizeof(clients));?
clients ведь тоже массив. Ничем не хуже массива buf.
потому что дельфя ругнулась на индекс в риде
[Error] Unit1.pas(193): Constant expression violates subrange bounds
без индекса загрузила все корректно.
mosq вне форума Ответить с цитированием
Старый 19.02.2015, 02:42   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от mosq Посмотреть сообщение
потому что дельфя ругнулась на индекс в риде
[Error] Unit1.pas(193): Constant expression violates subrange bounds
без индекса загрузила все корректно.
А разобраться в причинах сей ругани не хватило ни знаний, ни желания.
Решение было найдено методом тыка.
northener вне форума Ответить с цитированием
Старый 19.02.2015, 03:39   #9
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

не вижу причины тратить время на углубление, если все корректно работает. если есть что добавить по существу, буду благодарен. если же добавить нечего, то предлагаю на этом завершить дискуссию.

Последний раз редактировалось mosq; 19.02.2015 в 03:42.
mosq вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
record type (помогите) Un1q Паскаль, Turbo Pascal, PascalABC.NET 9 04.12.2013 09:58
type time = record(тип запись) Arioh Помощь студентам 1 23.12.2010 11:02
Тип-запись(type ... record) в Delphi Pascal Legky Помощь студентам 1 13.12.2010 10:29
Тип-запись(type ... record) в Delphi Pascal Legky Помощь студентам 0 12.12.2010 21:31
Record, object or class type required @mazonk@ Помощь студентам 0 07.06.2009 13:03