преобразовать любой объект в строку

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
MaxS
Сообщения: 17
Зарегистрирован: 01 мар 2004, 18:24
Откуда: Новосибирск
Контактная информация:

11 мар 2004, 11:55

Написал в Access'е вывод лога в текстовый файл...
Как преобразовать любой объект в его информативное значение в виде строки?

CStr(Объект) - ругается... не помню на что :?

ps.
Сильно не пинать, перерыв в программировании на VBA был 2 года.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

17 мар 2004, 12:34

Объект.Name или другие общие для ActiveX/COM-объектов свойства.

CStr(Объект) - НЕЛЬЗЯ, так как Объект - это суть указатель, т.е. адрес ячейки памямяти, где начинается конкретный инстанс (экземпляр) этого Объекта.
MaxS
Сообщения: 17
Зарегистрирован: 01 мар 2004, 18:24
Откуда: Новосибирск
Контактная информация:

18 мар 2004, 08:51

Наверное не у всех есть свойство .Name? Это можно как-то проверить или проще обрабатывать событие ошибки?

ps.
А вот в 1С есть функция Строка(Объект) и всегда без ошибки возвратит что-нибудь полезное ;)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

19 мар 2004, 09:19

Сомневаюсь, что Вам действительно требуется представление АБСОЛЮТНО ЛЮБЫХ объектов. Например, если речь идет о контролах (элементах управления), то у ActiveX существуют свойства, которые гарантированно имеются. Всегда можно получить ClassName ClassID для любого OLE-объекта. И т.д.
ps.
А вот в 1С есть функция Строка(Объект)
Ну что ж, :) очень рад за 1С. Попробуйте написать самостоятельно такую функцию. Обращайтесь к предполагяемым свойствам, а если не получается, то обрабатывайте ошибку внутри функции. Это, ИМХО, единственное решение.
Ответить