Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jader Rubini

Verificar se objeto existe

Recommended Posts

Eu não sei quase nada de ASP, e nem gosto muito dele, mas estou tendo que desenvolver um site em ASP então estou tendo que me virar. :)

 

O lance é o seguinte, eu criei algumas funções simples pra facilitar na manutenção do site, coisa simples, não muito bonita, mas que economiza tempo e paciência na hora de atualizar, já que o site será estático.

Fiz uma função que gera um breadcrumb a partir de um dicionário que é passado no início da página, tipo:

<%
	 Set dict = server.CreateObject("Scripting.Dictionary")
	 dic.Add "Nome da seção", "url"
	 dic.Add "Nome da categoria", "url"
%>
A função faz o seguinte:

1. Coloca o link pra página principal

2. Monta o breadcrumb usando os itens do dicionários e seus respectivos valores

3. Coloca o nome página atual (sem link)

 

Acontece que, mesmo em páginas simples, onde não é necessário nada no breadcrumb além de "Principal >> Nome da Página", eu preciso deixar o "Set dict ...". Isso é feio, muito feio. Tem como contornar isso? O código da função é o seguinte:

function Breadcrumb()
	 response.Write("<ul id='breadcrumb'><li><a href='./'>Principal</a> »</li>")

	 if dict.count > 0 then
		 Dim k, v, i, a
		 k = dict.Keys
		 v = dict.Items

		 for i = 0 to dict.count -1
			 a = "<li><a href='" & v(i) & "'>" & k(i) & "</a> »</li>"
			 response.Write(a)
		 next
	 end if

	 response.Write("<li class='title'>" & title & "</li></ul>")
end function
Já tentei colocar apenas "if dict then ..." no início da função, mas não funcionou. Como eu devo fazer?

Além disso, há alguma forma mais elegante de criar itens de dicionários do que adicioná-los um a um com dict.Add, como estou fazendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q pra verificar se o objeto existe no asp tem q usar o Is....

 

nao sei faz um tempo q nao mexo mas deve ser

 

If Not(obj Is Nothing) Then

 

ou entao

 

If Not(obj = Nothing) Then

 

 

acho q nao eh necessario criar todas as vezes... mas nao garanto nada, nao tive tempo de testar este codigo.

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, agora a situação é revesa: quando não há caminhos no breadcrumb ("Principal >> Nome da página") funciona, mas quando há caminho ("Principal >> Categoria >> Nome da página"), dá o erro Objeto necessário: "dict"

 

Eu já tentei colocar o "Set dict ..." dentro da função Breadcrumb() (tendo, portanto, escopo local), já tentei colocar fora da função (tendo, portanto, escopo global (?)). De forma nenhuma funcionou... :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça dessa forma:

 

CODE

<%

 

Set oDic = Server.CreateObject("Scripting.Dictionary")

oDic.Add "Nome da seção", "url"

oDic.Add "Nome da categoria", "url"

 

 

 

 

'-- Funcao BreadCrump --'

function Breadcrumb(byRef meuDicionario)

 

response.Write("<ul id='breadcrumb'><li><a href='./'>Principal</a> »</li>")

 

If IsObject(meuDicionario) Then

 

if meuDicionario.count > 0 then

Dim k, v, i, a

k = meuDicionario.Keys

v = meuDicionario.Items

 

for i = 0 to meuDicionario.count -1

a = "<li><a href='" & v(i) & "'>" & k(i) & "</a> »</li>"

response.Write(a)

next

 

'response.Write("<li class='title'>" & title & "</li></ul>")

end if

 

End If

 

End Function

 

 

'-- Executa a função --'

Call Breadcrumb(oDic)

 

%>

 

O detalhe aqui é que estou criando o Dictionary fora da função e passando pra ela via referencia ByRef e o outro detalhe é que verifico antes de manipular o dictionary ...se ele é um objeto(ISOBJECT).

 

Espero ter ajudado.....testei esse script e funciona normalmente. você poderá testa-lo nao criando as entradas.... ".add" que ele ira funcionar exibindo apenas a migalha "página".

 

Qualquer dúvida fico a disposição.

 

Att.,

 

Jorge Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.