Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как засунуть Set в строку


Страницы:   1 2

salexn ©   (2006-10-03 14:29:00) 

Есть set of byte. Нужно запихнуть ег в строку. Можно конечно тупо пробежаться по всему set и если присутствует, добавить в строку. Но ведь можно как-то через MOVE это сделать. А как - не в курсе.


oxffff   (2006-10-03 15:12:00) [21]

Palladin ©   (03.10.06 15:09) [12]

Скорее исправь. Set оf byte. Занимает 32 байта


Palladin   (2006-10-03 15:09:00) [22]

var
set_as_is:Set of Byte;
set_as_integer:Integer absolute set_as_is;

...
s:=IntToStr(set_as_integer);


oxffff   (2006-10-03 15:07:00) [23]

Так может в базе поменять поле на blob? И хранить свои 32 байта


salexn   (2006-10-03 15:04:00) [24]

Хотелось бы хранить разрешенные пользователю действия. Т.е. для каждого дейсвия есть свой id от 1 до 255. Все что разрешено записывается в AllowedOperation типа set of byte. В БД хранится как строка. Соответственно нужно строку преобразовать в set of byte и обратно.


oxffff   (2006-10-03 15:01:00) [25]

>Знать бы только зачем и что на самом деле хочет автор?

Он хочет запихнуть. :)


oxffff   (2006-10-03 14:58:00) [26]


> Reindeer Moss Eater ©   (03.10.06 14:33) [4]
> set это 32 байта.
> Каждый бит отчечает за вхождение элемента в множество.
> так что никакой Move здесь не прокатит.


Set занимает до 32 байт.
Размер вычисляется как  (Max div 8) - (Min div 8) + 1


Reindeer Moss Eater   (2006-10-03 14:55:00) [27]

>Знать бы только зачем и что на самом деле хочет автор?

Для этого достаточно прочитать его вопрос.
Он хочет байты сета (в котором нет самих байтов, а только битовые флаги) замувить в строку.
Поэтому вот так категорично.


oxffff   (2006-10-03 14:55:00) [28]

Сейчас поможем засунуть/запихнуть. :)


Германн   (2006-10-03 14:52:00) [29]


> так что никакой Move здесь не прокатит.
>

Ну зачем уж так категорично.
Знать бы только зачем и что на самом деле хочет автор?


Reindeer Moss Eater   (2006-10-03 14:33:00) [30]

set это 32 байта.
Каждый бит отчечает за вхождение элемента в множество.
так что никакой Move здесь не прокатит.


salexn   (2006-10-03 14:33:00) [31]

>Palladin

т.е. только через перебор? Вот так
var
 i: byte;
begin
 S := '';
for i := 1 to 255 do
 if i in aSetOfByte then
   S := S + chr(i);
end;


Palladin   (2006-10-03 14:31:00) [32]

Set не есть набор значений и Move к нему в данном случае неприменим


Сергей М.   (2006-10-03 14:31:00) [33]


> Нужно запихнуть ег в строку


И обязательно "запихнуть" ?
Тогда подробнее, про "пихание" ..

ПРиводи исх код и содержимое результ. строки ...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо