powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Help plz ...
6 сообщений из 6, страница 1 из 1
Help plz ...
    #34165702
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток.

Ребята, подскажите плз, может есть какой инструмент или у кого-то есть уже написаный парсер ...

Нужно пробежатса по библиотекам и дать отчёт о количестве (желательно имена) окон в которых больше чем одно updateable datawindow

Заранее благодарен.
...
Рейтинг: 0 / 0
Help plz ...
    #34166125
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voronkНужно пробежатса по библиотекам и дать отчёт о количестве (желательно имена) окон в которых больше чем одно updateable datawindow
А если DataObject назначается динамически/изменяются свойства обновления?
...
Рейтинг: 0 / 0
Help plz ...
    #34168741
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Их у нас не много, я их знаю в лицо.
...
Рейтинг: 0 / 0
Help plz ...
    #34169902
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, пару строк на Перле :)
...
Рейтинг: 0 / 0
Help plz ...
    #34228785
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Опять взяли за горло, пришлось накропать, вот, может кому пригодитса.
Начальство довольно.
Для себя, если кто посоветует как сделать получше, просто так, for future references с вниманием выслушаю.

// This script will go thru the all libraries, get the list of the all main type windows, all datawindows
// inside them and look if any of this datawindows updatable ...

datastore dw_1, dw_2, dw_3
long l_handle, l_row, l_first, l_last, l_fnd, l_row1, l_knt
string s_name, s_lib, s_dir, s_window, s_dir_windows
boolean b_go
ClassDefinition cd_def
WindowType ltype
int i_int
str_pass str_pass

int i_knt
long l_pos, l_pos2
datawindow dw
string s_syntax, s_table_name, s_class_name, s_data_object, s_dw_list
window w

SetNull(l_handle)

s_name = space(81)

GetModuleFileNamea(l_handle, s_name, 80)

IF UPPER(Right(s_name, 8)) <> 'PB90.EXE' THEN
MessageBox('Unauthorized Screen Access', 'You are not authorized to access this screen.', Exclamation!)
RETURN
END IF

SetPointer(hourglass!)

dw_1 = create datastore
dw_2 = create datastore
dw_3 = create datastore

dw_1.dataobject = 'dw_pbl'
dw_2.dataobject = 'dw_window_dir_pbl'
dw_3.dataobject = 'dw_pbl'

s_lib = Upper(GetLibraryList())

s_lib = f_find_and_replace(s_lib, ',', '~n')

dw_1.ImportString (s_lib)

FOR l_row = 1 TO dw_1.RowCount()
Yield()
This.SetMicroHelp ('Exporting Windows')

s_dir = Upper(dw_1.GetItemString(l_row, 'column_01'))
s_dir_windows = LibraryDirectory(s_dir, DirWindow!)

IF match(upper(s_dir), 'PCERV') = TRUE THEN
EXIT
END IF

dw_2.Reset()
dw_2.ImportString (s_dir_windows)

FOR l_row1 = 1 TO dw_2.RowCount()
Yield()
s_window = ''

l_first = 1
l_last = 0

s_window = dw_2.GetItemString(l_row1, 'column_01')

IF s_window <> '' and &
s_window <> 'w_test' THEN

cd_def = FindClassDefinition(s_window)

b_go = FALSE

FOR i_int = 1 TO UpperBound(cd_def.variablelist)
IF cd_def.variablelist[i_int].name = 'windowtype' THEN
ltype = cd_def.variablelist[i_int].initialvalue

CHOOSE CASE ltype
CASE Main!
b_go = TRUE
EXIT
END CHOOSE
END IF
NEXT

IF b_go THEN
//w = window('')
//open(w, s_window)

w = g_w_frame.fw_open_sheet (s_window, 0, 1, str_pass)

IF IsValid(w) THEN
This.SetMicroHelp ('Exporting Window - ' + s_window)

w.visible = false
w.setredraw(false)

dw_3.insertrow(0)

dw_3.SetItem(dw_3.RowCount(), 'column_01', s_window + ' - ' + w.Title)

//dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)

FOR i_knt = 1 TO upperbound(w.control[])
CHOOSE CASE w.control[i_knt].typeof()
CASE datawindow!
s_class_name = w.control[i_knt].classname() // Return dw_1, dw_2, etc ...

dw = w.control[i_knt]

s_data_object = dw.dataobject // Return data object dw_gl_account, dw_gl_entries, etc ...

IF NOT IsNull(s_data_object) and trim(s_data_object) <> '' and IsValid(dw) = TRUE THEN
s_syntax = dw.Object.DataWindow.Syntax // Get datawindow syntax ...

l_pos = pos(s_syntax, 'update="') // Look for update ...

IF l_pos > 0 THEN // If yes, get the table name ...
l_pos = l_pos + 8
l_pos2 = Pos(s_syntax, '"', l_pos) // Look for a table closing quote ...

s_table_name = Mid(s_syntax, l_pos, l_pos2 - l_pos) // Get the table name ...
END IF

IF IsNull(s_table_name) THEN
s_table_name = ''
END IF

IF Len(trim(s_table_name)) > 0 THEN
s_dw_list = dw_3.GetItemString(dw_3.RowCount(), 'column_02')

IF IsNull(s_dw_list) THEN
s_dw_list = ''
END IF

dw_3.SetItem(dw_3.RowCount(), 'column_02', s_dw_list + ' - ' + s_table_name)
//dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)
END IF
END IF
END CHOOSE
NEXT

close(w)
END IF
END IF
END IF
NEXT
NEXT

dw_3.InsertRow(0)
dw_3.InsertRow(0)

dw_3.SetItem(dw_3.RowCount(), 'column_01', 'Windows Excluded: ' + &
'w_test')

dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)


setmicrohelp('Ready')

// dw_3.SaveAs("c:\c3_Security.html", htmltable!, FALSE)

DESTROY dw_1
DESTROY dw_2
DESTROY dw_3

SetPointer(arrow!)

MessageBox('test', 'done')
...
Рейтинг: 0 / 0
Help plz ...
    #34228878
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voronkВсем спасибо.
Опять взяли за горло, пришлось накропать, вот, может кому пригодитса.
Начальство довольно.
Для себя, если кто посоветует как сделать получше, просто так, for future references с вниманием выслушаю.Можно попридираться :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SetNull(l_handle)

s_name = space( 81 )

GetModuleFileNamea(l_handle, s_name,  80 )

IF UPPER(Right(s_name,  8 )) <> 'PB90.EXE' THEN
MessageBox('Unauthorized Screen Access', 'You are not authorized to access this screen.', Exclamation!)
RETURN 
я правильно понимаю, что таким образом вы определяете, запущена ли функция из среды PB или из приложения? IMHO, следовало бы воспользоваться
Код: plaintext
Handle(GetApplication()) =  0 
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Help plz ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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