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 это сделать. А как - не в курсе.


Игорь Шевченко   (2006-10-04 11:27:00) [1]

oxffff ©   (04.10.06 10:38) [32]

Меня уже поправили, char(64) надо. Проблем при преобразовании не будет, так как в базе хранится строковое значение, а с ним вроде никаких проблем с обрезанием нету.


oxffff   (2006-10-04 10:38:00) [2]

Игорь Шевченко ©   (03.10.06 15:57) [29]
А нафига BLOB ?

А вы уверены, что с char(32) не будет проблем при преобразовании.

Возможно СУБД и средства доступа к данным могут обрезать часть до
char(0)?


Игорь Шевченко   (2006-10-04 10:01:00) [3]

evvcom ©   (04.10.06 08:42) [30]

Точно :) Это вода кипит при ста градусах.


evvcom   (2006-10-04 08:42:00) [4]

> [29] Игорь Шевченко ©   (03.10.06 15:57)

Это шестнадцатиричный формат? Тогда char(64).


Игорь Шевченко   (2006-10-03 15:57:00) [5]

А нафига BLOB ?
Достаточно char(32) и хранить строки вида
'00000000000AE1200000000000000000',
'00000000000AE0100000000000000000'....


oxffff   (2006-10-03 15:38:00) [6]

Храни свои 32 байта в базе в RAW виде.
И загружай их также.


salexn   (2006-10-03 15:34:00) [7]

>oxffff
>Сделай поле BLOB
Чем мне поможет поле БЛОБ?


oxffff   (2006-10-03 15:31:00) [8]

Сделай поле BLOB.


Сергей М.   (2006-10-03 15:27:00) [9]


> salexn   (03.10.06 15:26) [24]


Сначала определись с конкретной СУБД и конкретным типом поля, которое должно хранить сабж ..


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

>Сергей М.
Ок. Ваш вариант??


Palladin   (2006-10-03 15:26:00) [11]

оно не 1 целое... а целых 8... я тебя обманул...

var
set_as_is:Set of Byte;
set_as_ints:Array [0..7] of Integer absolute set_as_is;

s:='';
for i:=0 to 7 do s:=s+IntToStr(set_as_ints[i])+',';
SetLength(s,Length(s)-1);


saxon   (2006-10-03 15:23:00) [12]


> salexn   (03.10.06 15:19) [18]

А не проще ли хранть как целое, а потом - операции с битами, и далее к перечислениям и если хотите к "Set of ..."?


Сергей М.   (2006-10-03 15:23:00) [13]


> salexn   (03.10.06 15:19) [18]



> Palldin и 0xxffff любезно предоставили альтернативный вариант


угу .. который так и называется - "запихать")


Palladin   (2006-10-03 15:23:00) [14]

а... как всегда... перепутал... звиняюсь...


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


> Palladin ©   (03.10.06 15:16) [17]
>
> > oxffff ©   (03.10.06 15:15) [14]
>
> ShowMessage(IntToStr(SizeOf(Integer)))


ShowMessage(IntToStr(SizeOf(Integer))). Равен 4 байта

ShowMessage(IntToStr(SizeOf(set of byte))). Равен 32 байта. А не бита.

Понятно? :)


salexn   (2006-10-03 15:19:00) [16]

а я и не говорил, что есть проблемы. Я описал алгоритм, который знаю, но предположил, что есть более красивый способ. Уважаемый Palldin и 0xxffff любезно предоставили альтернативный вариант


Palladin   (2006-10-03 15:16:00) [17]


> oxffff ©   (03.10.06 15:15) [14]

ShowMessage(IntToStr(SizeOf(Integer)))


Сергей М.   (2006-10-03 15:15:00) [18]


> salexn   (03.10.06 15:04) [10]


Ты так и не сказал, с какими конкретно проблемами ты столкнулся, когда что-то там куда-то там "засовывал") ...


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

и?


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

Palladin ©   (03.10.06 15:09) [12]

var set_as_is:Set of Byte;
   set_as_bytes:array[0..31] of byte absolute set_as_is;


Страницы:   1 2

Наверх

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