Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1302075725
Loginov Dmitry
2011-04-06 11:42
2011.07.24
Windows Server 2008 - как избавиться от UserProfile WINDOWS


2-1303058118
prodex
2011-04-17 20:35
2011.07.24
Ошибка при вызове CreateBlobStream


15-1302086638
Jan
2011-04-06 14:43
2011.07.24
реально ли в рантайме поменять classname формы или я делаю не так


2-1303201499
harisma
2011-04-19 12:24
2011.07.24
Не может найти модули


2-1302772191
Учусь
2011-04-14 13:09
2011.07.24
Inno Setup и папки юзера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский