| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > бока с tmemorystream |
| Автор: sono 21.5.2008, 23:06 | ||
| Что-то не пойму никак или действительно бока или меня глючит? Значит есть два tmemorystream и динамический масив, надо записать масив в первый стрим из этого стрима в другой а потом из друго-го выгрузить и посмотреть что мы имеем. Нет не думайте со мной всё впорядке -- просто хочу таким макаром хранить масивы в БД (tblobstream). Значит делаю всё так:
..... выводится только первый элемент массива(остальные нули)? P.S.: но со статическим масивом при точ таком раскладе всё нормально? |
| Автор: Snowy 21.5.2008, 23:16 |
| 1. Что такое "а"? 2. s.Write(a[0], Length(a) * SizeOf(a[0])); 3. t:=s; - это что? |
| Автор: sono 21.5.2008, 23:46 |
| 1) a - исходный масив который я загонял в стрим 3)t:=s ; ( в результате это будет: t- memorystream, a s- tblobstream) 2) а вот этого мне и не хватало -- теперь всё работает, блин как это у вас просто получается ... тут понимаешься паришся из-за этой мелочи кучу времени, Snowy только посмотрел - и в результате всё просто,- так наверно пора сделать перерыв . Да кстати спасибо! |
| Автор: Snowy 22.5.2008, 00:21 |
| Нет, в результате t станет s, а исходный t потеряется и приведёт к утечке памяти. Хотя ты всё равно не освобождаешь ни тот, ни другой стрим. Так что память теряется в любом случае. Так я и спрашивал - что за массив? Массив чего? Если примитивных типов, то ответ дан. Если строк или других сложных типов, то принцип работы будет другим. Ну так ты получал размер массива, а не выделенной памяти... Дык... Профессия наша такая Всегда пожалуйста. |
| Автор: sono 22.5.2008, 14:32 | ||||
| snowy с этим вроди как разобрался, теперь двигаюсь далее т.к. главной целью было хранение массива при помощи стрима в бд... Значит на основании выше изложеного двигаюсь далее : - исходные данные: есть масив A загруженный в memorystream T - беру adotable подключаю таблицу .mdb с полем 'dat' (тип Memo) -при помощи LoadFromStream заганяю стрим в БД
-готово, теперь для проверки делаю обратное
- сверяем - алё? а где мой массив? |
| Автор: Snowy 22.5.2008, 15:58 |
| А зачем ты засовываешь бинарные данные в Memo? Твой массив погиб на первом же некорректном знаке. Например 0. |
| Автор: sono 22.5.2008, 16:37 |
| а тогда как надо? |