powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как узнать версию объекта в библиотеке ?
25 сообщений из 30, страница 1 из 2
Как узнать версию объекта в библиотеке ?
    #34913600
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть задача: Перебрать PBL-ки в папке и вывести номер SCC-version для каждого объекта.
Ф-ции LibraryDirectory и LibraryDirectoryEx не выводят этой инфы ...

Powerbuilder 10.5

Спасибо ...
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34913740
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял, а какое отношение PBL имеет к SCC-version объекта?
Или в переводе на русский - за каким .... это нужно?
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34913791
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю поможет ли это, но если workspace подключен в SCC то в его каталоге есть файл .PBC в котором имена объектов и их локальные версии.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34913913
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Филипп
А за таким ... : Хочу вывести список объектов, котрые нужно обновить и которые залочены в SCC.

Я конечно может не так выразился, но если клацнуть правой кнопкой мыши на объекте и выбрать
"Properties ...", то в окне "Properties" в есть поле "SCC Version", которое как раз и отображает локальную версию объекта.
Эта версия сравнивается с версией на сервере из файла PRP.

2 Anatoly Moskovsky
Мне кажется, что этот номер хранится где то в заголовке PBL для каждого объекта, а
файл PBC больше похож на лог.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914006
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBМне кажется, что этот номер хранится где то в заголовке PBL для каждого объекта, а
файл PBC больше похож на лог.
Да, я посмотрел - действительно, в PBL хранится номер ревизии, а в .PBC тоже, но не всегда актуальный (но точно не лог).
Если подождете несколько дней, то я добавлю в PBLDump возможность прочитать данные SCC.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914037
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Anatoly Moskovsky
Да, это было бы очень полезно.
А может поделитесь инфой - как правильно распарсить заголовок? (если это возможно) ;)
Просто не хочется запускать для каждой библиотеки PBLDump. Библиотек много.
EMail в профиле.

Спасибо.

З.Ы.
Отдельное спасибо за PBLDump - очень выручает ;)
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914130
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB 2 Филипп
А за таким ... : Хочу вывести список объектов, котрые нужно обновить и которые залочены в SCC.

Я конечно может не так выразился, но если клацнуть правой кнопкой мыши на объекте и выбрать
"Properties ...", то в окне "Properties" в есть поле "SCC Version", которое как раз и отображает локальную версию объекта.
Эта версия сравнивается с версией на сервере из файла PRP.

Всё равно непонятно зачем.
Ко всему прочему, в общем случае (то бишь если вы используете настоящий SCC provider, а не PBNative) поле "SCC Version" не отображает ничего, а если клацнуть правой кнопкой мыши на объекте и выбрать "SCC Properties", то в окне, которое откроет настоящий SCC provider (а не РВ), и будет видна интересующая вас информация об локальном экспорте и его состоянии в репозитории настоящего SCC providerа :-)
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914186
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB 2 Anatoly Moskovsky
А может поделитесь инфой - как правильно распарсить заголовок? (если это возможно) ;)

Готового описания нету, только исходники. Но их я еще не готов открывать.
Просто не хочется запускать для каждой библиотеки PBLDump. Библиотек много.

Могу сделать DLL с ф-ей ExportSCCData(string pbl, ref blob buf)
Далее надо будет парсить полученный блоб: считать идущие парами SZ строки ("имя объекта", "ревизия")
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914368
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппКо всему прочему, в общем случае (то бишь если вы используете настоящий SCC provider, а не PBNative) поле "SCC Version" не отображает ничего
Ничего подобного. Нормальные провайдеры делятся этой инфой с Билдером :).
У меня ПБ показывает версию непосредственно в Library Painter.

PaulJBкак правильно распарсить заголовок?
http://dwox.com/PBL_File_Format.txt
но эта инфа для неюникодовых pbl/pbd
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914542
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry. ФилиппКо всему прочему, в общем случае (то бишь если вы используете настоящий SCC provider, а не PBNative) поле "SCC Version" не отображает ничего
Ничего подобного. Нормальные провайдеры делятся этой инфой с Билдером :).
У меня ПБ показывает версию непосредственно в Library Painter.
А я уже на втором месте работы пользуюсь самым нормальным, то-бишь Perforcом . Он не делится :-)
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34914676
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.http://dwox.com/PBL_File_Format.txt
но эта инфа для неюникодовых pbl/pbd
Автор говорит "valid thru PB5-11".
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34915599
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyМогу сделать DLL с ф-ей ExportSCCData(string pbl, ref blob buf)
Далее надо будет парсить полученный блоб: считать идущие парами SZ строки ("имя объекта", "ревизия")

Это pbldump с поддержкой SCC:
http://sqlbatch.com/t/dl.cgi?prod=pbl_dump&id=beta

А приложенный к этому сообщению архив содержит DLL и PB wrapper для чтения SCC data.
Cм. ф-ю of_ReadSCCData. Она возвращает блоб по имени библиотеки или null если SCC data отсутствует.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916325
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо всем откликнувшимся !
Ща буду качать и тестить ...
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916389
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под 11 билдером ф-ция readSCCData(...) вызывает ошибку:

AppName: pb110.exe
AppVer: 11.0.0.6525
ModName: pbshr110.dll
ModVer: 11.0.0.7549
Offset: 000ebdf7

Посмотрите плиззз ....

PblDump работает нормально.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916393
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, не хочу разочаровывать, но ИМХО, чтение SCC из библиотеки не поможет.
Я тут проверил под PBNative что в PBL хранится и, оказалось, что там нет ничего :)
А вот с SCC PushOK+SVN - хранится список версий.
Так что может быть с Вашей SCC не проканает данный хак.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916394
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBПод 11 билдером ф-ция readSCCData(...) вызывает ошибку:

AppName: pb110.exe
AppVer: 11.0.0.6525
ModName: pbshr110.dll
ModVer: 11.0.0.7549
Offset: 000ebdf7

Посмотрите плиззз ....

PblDump работает нормально.

Она ANSI.
Надо добавить модификатор ALIAS FOR "readSCCData;ANSI"
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916401
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyОна ANSI.
Надо добавить модификатор ALIAS FOR "readSCCData;ANSI"
А, не. Не только.
Надо еще размер буфера расчитывать по другому. Он возвращается в байтах, а выделяется в символах, которые в 11 равны 2 байтам
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916414
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНадо еще размер буфера расчитывать по другому. Он возвращается в байтах, а выделяется в символах, которые в 11 равны 2 байтам
Вместо
Код: plaintext
lbb_buf = Blob(Space(ll_size))
написать
Код: plaintext
1.
lbb_buf = Blob(Space(ll_size), EncodingANSI!) 
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916521
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Anatoly Moskovsky
>>Кстати, не хочу разочаровывать, но ИМХО, чтение SCC из библиотеки не поможет.
>>Я тут проверил под PBNative что в PBL хранится и, оказалось, что там нет ничего :)

Мы юзаем как раз PBNative - все есть :) и даже изменяется.
Только что проверил (вашей утилитой тоже - отображает). Так что вестчь для меня остаётся актуальной.

>> Надо добавить модификатор ALIAS FOR "readSCCData;ANSI"
Про это я сразу подумал. Помогло частично - перестало вываливаться.

Не могу победить следующее (комменты под строками кода - значения переменных):

ll_ret = readSCCData( as_pbl, lbb_buf, ll_size)
// ll_size = 1645

If ll_ret = 0 And ll_size > 0 Then

lbb_buf = Blob(Space(ll_size),EncodingANSI!)
// len(lbb_buf ) = 1645

ll_ret = readSCCData(as_pbl, lbb_buf, ll_size)
// len( lbb_buf ) = 1645
// string( lbb_buf ) = '[][]nvo.sct.sru'
// string( lbb_buf,EncodingANSI! ) = 'SCC*n'
// len(string( lbb_buf,EncodingANSI! )) = 5

...
Else
...
End If
...

Вот такая колбаса ...
Може я чего не так делаю ?

Вы говорили, что можете сделать DLL.
Если не сложно - сделайте пожалуйста :)
Если сделаете, то вышлите на PaulJB@ukr.net.
Буду очень благодарен :)
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916649
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB
Не могу победить следующее (комменты под строками кода - значения переменных):

Пришлите мне в почту пример PBL с Вашими SCC данными. Вечером посмотрю.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916652
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBВы говорили, что можете сделать DLL.
Если не сложно - сделайте пожалуйста :)

Гы. Так я и сделал. И у меня работает :)
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916739
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Anatoly Moskovsky
>> Гы. Так я и сделал.
Извините, барин - не признали :))

>>И у меня работает :)
Под 10 и 11 версиями работает ?
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916895
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB>>И у меня работает :)
Под 10 и 11 версиями работает ?
Не пробовал. Вечером попробую.
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34916932
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Anatoly Moskovsky
>>Не пробовал. Вечером попробую.

Спасибо большое.
Если у вас будет работать, тогда буду думать над пересылкой PBL, ибо проблематично это ....
...
Рейтинг: 0 / 0
Как узнать версию объекта в библиотеке ?
    #34917417
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложен архив с уникодной DLL и оберткой.
Юзать следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Blob lbb_data
String ls_item
Long ll_ptr, ll_curPos =  0 
lbb_data = u.of_ReadSCCData(ls_pbl)
If Not IsNull(lbb_data) Then
	ll_curPos =  0 
	Do While ll_curPos < Len(lbb_data) /  2 
		ll_ptr = u.getPtr(lbb_data, ll_curPos) // получаем указатель на след. строку
		ls_item = String(ll_ptr, "address")  // преобр.  TCHAR* в PB String
		ll_curPos +=  Len(ls_item) +  1  /* '\0'*/  
		//MessageBox("", "<" + ls_item + ">")
	Loop
End If

PS. Действительно чего-то ANSI версия мусор выдавала с уникодным PB.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как узнать версию объекта в библиотеке ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]