![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
Дароф...
есть компонент TSimpleGraph - мне нужно сохранить все что на нем находится в Stream для последующего сохранения в файл... Как это сделать??? Сенкс |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 4 Всего: 18 |
-------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Rodman, что это за штука такая TSimpleGraph? Дело в том, что если сериализовать в лоб, то может не все сохраниться. Ведь не все нужные свойства находятся в секции published.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 4 Всего: 18 |
Ну так написать потомка и все проперты, которые нужны в нем распаблишить... Я так понимаю, что названый компонент - потомок TGraphicControl? -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
Суть в том что надо реализовать следующее: сохранение нескольких схем и потом загрузка.
т.е. есть несколько схем (допустим 3), в цыкле могу сохранить каждую схему в отдельный файл, но для себя могу взять поток (каждой схемы) который сохраняется. так вот нужно их все один файл закинуть, через какой то разделитель, чтоб потом их загрузить можно было (теже 3 схемы) на отдельную закладку каждую... какую технологию можете предложить??? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А сегодня, дети, я научу вас, как сохранять несколько компонентов в один файл, а потом прочитать их оттуда.
В качестве примера, создадим тестовую формочку. Бросим на неё 2 кнопочки и 4 едитика... Далее пропишем следующий кодик:
|
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
так вроде должно быть?!
но... он то сохраняет только компонент, а вот все что на нем не хочет (хотя текст в эдитах сохранил). http://www.delphiarea.com/products/simplegraph/ у меня есть идея объединить файлы в один, т.к. отдельно каждый объект с схемами на нем сохраняется в бинарик (см. приложение)... можно ли как нить объединить??7 чтоб потом можно было разделить на подобные файлы для загрузки??? Это сообщение отредактировал(а) Rodman - 14.8.2007, 17:19 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
а как можно открыть файл (несколько бинариков по типу прикрепленного) и сохранить в один... хотел обычным TStringList, но только часть текста берет, я так думаю что при помощи какого то Stream'a надо делать?! Как??? Добавлено через 2 минуты и 16 секунд наверно же и какой то разделитель надо!!! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Несколько стримов в файл загнать легко.
Это как передача стрима по сети. Пишешь в файл сначала длину стрима, потом сам стрим и т.д. по кругу. При чтении наоборот - сначала читаешь длину стрима, потом данное кол-во байт в стрим и т.д. в цикле, пока не дойдёшь до конца файла. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
а где можно пример глянуть?
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Блин, ты вынуждаешь меня писать код, когда я пиво пью...
![]() Держи раздельное сохранение стримов.
|
|||
|
||||
sentry |
|
|||
Code Monkey ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 29.1.2007 Где: Москва Репутация: 2 Всего: 10 |
Примите мой вклад
![]()
Конечно, здесь записывается один компонент, и для полного охвата следовало бы еще записывать какую-нибудь панель с кнопочками на ней. Это сообщение отредактировал(а) sentry - 22.8.2007, 16:40 |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
упс... ну я щас дошел до того что могу загнать данные каждого компонента в TFileStream. как вот теперь сделать чтобы в цикле я добавлял в бинарик поток каждого компонента и потом мог прочитать??? |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
т.е. программа может сохранить компонент с объектами на нем только по текущей странице на PageControl...
я переделал процедуру в функцию чтобы она мне возвращала то что сохраняется в файл (TFileStream)... вот для каждой из 4 страниц я могу получить TFileStream, но вот как его сохранить в один файл так чтобы потом можно было прочитать каждый объект отдельно??? ЗЫ: что то запутали меня эти потоки. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
почему то не возвращает значение... после Stream.Free result тоже обнуляется! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
Понял... я вышел из ситуации...
а можно как нить узнать кол-во компонентов, при чтении из файла??? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нет, они ж не фиксированного размера.
Если только ты изначально не пропишешь это число в файл. А так - только последовательным чтением, пока не доберёшься до конца файла. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
ну а например можно как нить это обозначить (в заголовке файла - не в самом имени а в самом файле)??? чтоб потом я по нему мог определить, т.к. если в файле один компонент записан - LoadStream ругается
вот модернизированная процедура
как это вылечить? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Поменяй местами! Сначала проверяй, а потом уже выделяй память, если всё нормально. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
они получаются разные, поэтому все проходит далее... если d не такое как сначала значит че то считует, но блин ругается что не может прочитать... что ему сделать? ЗЫ:местами поменял... Добавлено через 8 минут и 8 секунд может как нить Except можно выловить отсюда?! Это сообщение отредактировал(а) Rodman - 20.8.2007, 11:43 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Сампл выложи.
Чего хоть делаешь-то. Непонятно. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
надо сделать заголовок файла и туда все записывать!
|
|||
|
||||
Samurai_I |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
И имеем ошибку - CustomListBox не имеет ParentWindow. Про том что такая же конструкция с Кнопкой - работает отличнейшим образом. Гранды могут пояснить новичку - в чем проблема? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Положи его на панельку и сохраняй и читай панельку.
Контейнер сам сохранит и прочитает детей. И парента им назначит. Просто текстсодержащие контролы не могут иметь текст, пока не получат окно, т.к. работа идёт через сообщения. Текст назначается в процессе чтения, а паретн позже. Поэтому нужно назначать парента в процессе чтения. А это возможно только, если парент сохранён вместе с компонентом. |
|||
|
||||
Samurai_I |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Что-то у меня бубен не так работает. Панель-то конечно копируется, но... без листбокса. Причем тасканьем по форме специально проверил, листбокс именно в панели как в контейнере лежит. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
пытаюсь записать следующее
вот в двух последних строках трабла, как ее вылечить? Добавлено через 1 минуту и 13 секунд даже приведение к строковому типу - теже траблы... |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Rodman,
SHandle, SVersion, CountSelected какой тип переменных? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
см. коменты - это глобальные константы (SHandle - строка; SVersion - целое, но можно и строковое если надо) CountSelected - целое |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Rodman,
Это сообщение отредактировал(а) Rennigth - 21.8.2007, 10:11 -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
||||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
чет файл не присоединяется...
Добавлено через 34 секунды
Добавлено через 3 минуты и 20 секунд Метод просто нельзя использовать в качестве буффера, плю тип константы нужен иногда явный. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Samurai_I |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Snowy,
К сожалению если все эти процедуры с панелькой проделывать в design time, то возникает другая проблема. Panel, являесь parent'oм для всего содержимого самого себя, не является их хозяином. Хозяином остается форма - потому нужно либо эту панель создавать в runtime и кидать туда этот лист бокс(неуверен, что поможет), либо что-то придумывать с передачей владения Control'ом во время runtime. |
|||
|
||||
sentry |
|
|||
Code Monkey ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 29.1.2007 Где: Москва Репутация: 2 Всего: 10 |
Изменить владельца можно, вызвав у панели InsertComponent. А сериализуют компоненты действительно только то, чем владеют... Это сообщение отредактировал(а) sentry - 22.8.2007, 16:42 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |