• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Хэш (аки list as) использование

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
я тут обленился (лень было класс создавать для элемента)... и на шару запустил подобный код
Код:
	Sub GetHashMap(lst List As Variant)
		Dim routineName As String
		routineName="HashMap"
		On Error GoTo ErrH
		'your code here
		Dim  entry As NotesViewEntry, cols List As String, cnt As Long
		Set entry=first
		Do While Not entry Is Nothing
			Dim idx As Integer
			idx=0
			cols(VALUE_COL)=entry.Columnvalues(columns(VALUE_COL))
			idx=idx+1
			cols(COMMENTS_COL)=entry.Columnvalues(columns(COMMENTS_COL))
			idx=idx+1
			cols(DOCORDER_COL)=entry.Columnvalues(columns(DOCORDER_COL))
			idx=idx+1
			cols(UNID_COL)=entry.Columnvalues(columns(UNID_COL))
			lst(entry.Columnvalues(columns(NAME_COL)))=(cols)
			cnt=cnt+1
			Set entry=Me.Getnext(entry)
		Loop
		Print {hash members Count:} cnt
Quit:
		Exit Sub
ErrH:
		Error Err, RaiseError
		Resume Quit
	End Sub
ожидаемый вариант - получить одно значение для всех, но - НЕТ
каким-то образом я получаю разные значение, а значит - операция присвоения (lst(entry.Columnvalues(columns(NAME_COL)))=(cols)) копирует данные, а не хранит сцылко
idx остался от массива - тоже копирует, если даже убираю получение по значению (cols) - все одно - копирует
мен такое поведение устраивает, но рвет шаблон :)
проверяю так
Код:
	Function testOut
		Dim routineName As String
		routineName="testOut"
		On Error GoTo ErrH
		'your code here
		Dim lst List As Variant
		Call Me.GetHashMap(Lst)
		me.PrintTrace({********************************************})
		ForAll cols In lst
			If me.debug Then _
			me.PrintTrace(ListTag(cols) _
			&cols(VALUE_COL) &KEY_SEP _
			&cols(COMMENTS_COL) &KEY_SEP _
			&cols(DOCORDER_COL) &KEY_SEP _
			&cols(UNID_COL))
		End ForAll
		'testOut=
Quit:
		Exit Function
ErrH:
		Error Err, RaiseError
		Resume Quit
	End Function
вызов
Код:
Sub Click(Source As Button)
On Error Goto ErrH
Dim lst List As Variant, vnav As New ViewNavFlds(curdoc.UniversalID)
vnav.IsDebug=True
Call vnav.testOut
Call vnav.ShowLog
Quit:
Exit Sub
ErrH:
Error Err, RaiseError
End Sub
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
ткну пока сюда (таблицы трансформаций вьюшки), раздел для такой мелочи создавать лень
получаем список программных имен для колонок
для нотусни (дизигнер-Tools->DXL Utils->Transformer)
XML:
<?xml version="1.0"?>
<!-- Copyright IBM Corp. 2002, 2012  All Rights Reserved.			  -->
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
	xmlns:dxl='http://www.lotus.com/dxl'>
	<xsl:output method='html'/>
	<xsl:strip-space elements='*'/>
   
	<xsl:template match='dxl:view'>
		<HTML>
			<HEAD>
				<TITLE> Extract for Domino Design Elements </TITLE>
				<LINK rel='stylesheet' type='text/css' href='drstyles.css' title='Style'/>
			</HEAD>
			<BODY>
				<xsl:apply-templates select="dxl:column"/>
			</BODY>
		</HTML>
	</xsl:template>
	<xsl:template match='dxl:column'>
		<xsl:value-of select="@itemname"/><br/>
	</xsl:template>
	<!-- Match all text that has not yet been picked up by the templates, and discard it. -->
	<xsl:template match="text()">
	</xsl:template>
   
</xsl:stylesheet>
для обработки ДХЛ
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright IBM Corp. 2002, 2012  All Rights Reserved.			  -->
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
	xmlns:dxl='http://www.lotus.com/dxl'>
	<xsl:output method='text'/>
	<xsl:strip-space elements='*'/>
	<xsl:template match='dxl:view'>
		<xsl:apply-templates select="dxl:column"/>
	</xsl:template>
	<xsl:template match='dxl:column'>
		<xsl:value-of select="@itemname"/>
		<xsl:text>
</xsl:text> <!-- newline character -->
	</xsl:template>
	<!-- Match all text that has not yet been picked up by the templates, and discard it. -->
	<xsl:template match="text()">
	</xsl:template>
   
</xsl:stylesheet>
[DOUBLEPOST=1453308567,1453308477][/DOUBLEPOST]куски со словами ИБМ - это фигня из штатной трансформации драл
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
216
@lmike, хм... вот всегда думал, что копирует. Я в список часто кладу другой список, который заполняется заново каждый раз и данные не удаляются.
Если бы были ссылки, то так делать было бы бессмысленно...
@lmike, почему рвет шаблон?
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
216
@lmike, с объектами да, но в данном случае у тебя массив передается в список.
А про объекты верно, ссылаются они.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!