Форум: "Начинающим";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];
ВнизОшибка при чтении компонента из потока Найти похожие ветки
← →
TStas (2011-04-18 21:28) [0]У меня есть программа, в ней используются самописные компоненты, которые, впрочем, в среду не добавлялись, поскольку они только в ней и используются. Есть настраиваемые окна, которые сохраняются в поток в виде строки, а потом из строки грузятся.
До сегодняшнего дня все было нормально. Сегодня добавил еще один компонент в настраиваемое окно. Он записывается, но не хочет читаться. Ошибка Class TStAddressBox not found
Вот как сохраняется в виде строки компонент, который вполне корректно пишется и читается:
object TRefBox
Left = 86
Top = 198
Width = 300
Height = 50
HelpContext = 2012
Caption = #1057#1089#1099#1083#1082#1072
ParentShowHint = False
ShowHint = True
TabOrder = 1
FileType = ftFirms
DesignSize = (
300
50)
end
А вот компонет, который пытался добавить сегодня. Он пишется, но не читается:
object TStAddressBox //Пишет, что этот класс не найден.
Left = 39
Top = 215
Width = 300
Height = 50
HelpContext = 2015
Caption = #1040#1076#1088#1077#1089
Constraints.MinHeight = 40
Constraints.MinWidth = 130
ParentShowHint = False
ShowHint = True
TabOrder = 1
CheckMode = [cmStreet, cmTown]
DesignSize = (
300
50)
end
Ну что может быть не так? Они даже внешне похожы, причем последний даже проще. Сколько не смотрел Фаронова "Искусство создания компонентов", там даже намека нет на подобные вещи. Дельфи седьмые.
Да, оба компонета наследники TGroupBox"а. Именно поэтому я корректные и выложил, что он тоже из TGroupBox"а сделан.
← →
Германн © (2011-04-18 23:28) [1]А RegisterClass при этом не нужен?
← →
TStas (2011-04-19 15:55) [2]Может, и нужен, но ведь это, во-первых, для добавления компонента в среду, а, во-вторых, а как же тогда корректно работает его "брат" (тоже TGroupBox)? Ведь с нимм все нормально.
← →
TStas (2011-04-19 15:56) [3]Может, и нужен, но ведь это, во-первых, для добавления компонента в среду, а, во-вторых, а как же тогда корректно работает его "брат" (тоже TGroupBox)? Ведь с нимм все нормально.
← →
TStas (2011-04-19 15:57) [4]Может, и нужен, но ведь это, во-первых, для добавления компонента в среду, а, во-вторых, а как же тогда корректно работает его "брат" (тоже TGroupBox)? Ведь с нимм все нормально.
← →
Ega23 © (2011-04-19 16:16) [5]
> но ведь это, во-первых, для добавления компонента в среду
Это не для добавления в среду, а для создания экземпляра класса по его имени.
> а как же тогда корректно работает его "брат" (тоже TGroupBox)
Он зарегистрирован.
← →
TStas (2011-04-19 18:43) [6]>Он зарегистрирован. //Нет, неужели бы я до такой простой вещи не додумался! Нет, он НЕ зарегистрирован. Меня больше всего удивляет то, что в поток он вполне корректно пишется, но не читается из потока. А с "братиком" (тоже компонетом наследником TGroupBox) ничего подобного не происходит.
Дельфи 7
← →
Игорь Шевченко © (2011-04-19 19:03) [7]
> Ошибка Class TStAddressBox not found
RegisterClass
← →
_Юрий (2011-04-19 19:06) [8]
> Он зарегистрирован.
> Нет, он НЕ зарегистрирован.
Автор, если Вы все знаете лучше всех, зачем тогда спрашиваете?
← →
TStas (2011-04-19 19:29) [9]Юрий, извините. Просто естьдва весьма похожих компонента, они оба из из TGroupBox"а сделаны. И обо представляют собой Edit и кнопки. В обоих случаях кнопки открывают диалоговые окна. Но один из них, который корректно сохраняется, хранит просто текстовую строку, ссылку на файл (имя файла), а второй хранит запись. Запись содержит строковые поля. Может, с этим связано?
Что TGroupBox зарегисрирован, я прекрасно понимаю. Как обойти это, тоже, в целом, ясно. Сделать обычное окно, и все бует работать. Но надо же понять, в чем ошибка. Значит, я чего-то важного не знаю, или знаю, но дела что-то не так.
← →
sniknik © (2011-04-19 19:45) [10]> Но надо же понять, в чем ошибка.
RegisterClass
пока не сделаешь/проверишь/покажешь все будет сводится к этому...
← →
TStas (2011-04-19 20:44) [11]Я с своему стыду, когда про RegisterClass
читал, его с RegisterComponent перепутал. А как егог написать и вызывать?
← →
TStas (2011-04-19 21:00) [12]Игорь! Когда очередное ММП? С меня пиво!!!! А надо-то было всего-то написать
Initialization
RegisterClass(TStAddressBox);
Но тогда вопрос, уже ко всем: а как-же подобный ему компонент работает? Неужели из-за того, что что у данного компонента центральное св-во, из-за котрого он и был написан - это запись, да еще и со строковыми полями?
Просто выкладывать код обоих компонентов, да ещё и с окнами редакторов, не хочется, да и вряд ли их кто-то читать будет. Но ведь надо же понять!
← →
Ega23 © (2011-04-20 14:13) [13]
> а как-же подобный ему компонент работает?
Надо смотреть код.
← →
TStas (2011-04-20 17:17) [14]RegisterClass там точно нет, поскольку о существовании этой ф-ции я только вчера узнал. Код могу выложить, но он большой и вряд ли его кто-то будет читать. Если вкратце, то оба компонента - это групбоксы, на которых размещён эдит и кнопки. Но делают они совсем разные вещи и хранят разную информацию. Первый, который и раньше работал корректно, хранит просто строчку с именем файла, а второй, из-за которого и задал вопрос, хранит запись об адресе. Оба компонента имеют окна, при помощи которых данные редактируются.
← →
Ega23 © (2011-04-20 17:28) [15]
> RegisterClass там точно нет
Ещё раз: надо смотреть код. Не только юнита с данным контролом, но и всего того, что в .dpk прописано.
← →
sniknik © (2011-04-20 19:43) [16]- ты суслика видишь?
- нет.
- и я нет. а он есть!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c