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