![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как засунуть Set в строку
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]
> Нужно запихнуть ег в строку
И обязательно "запихнуть" ?
Тогда подробнее, про "пихание" ..
ПРиводи исх код и содержимое результ. строки ...