Ir para conteúdo

POWERED BY:

Arquivado

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

thiagocs

COM(dll) retornando array e objetos

Recommended Posts

Olá,

 

tenho uma dll escrita em c# que retorna um array de objetos porém não consigo acessar as propriedades dos objetos, dá um erro de Tipos incompatíveis. Alguém sabe como resolver?

 

<%

Dim Obj
Set Obj = Server.CreateObject("WS.WebMetodos")

Dim ObjMarcas
Set ObjMarcas  = Server.CreateObject("WS.Entidade")

ObjMarcas = Obj.ListaMarcas


For i=0 To Ubound(ObjMarcas)-1
	
	response.write(i+1)&" "&ObjMarcas(i).Nome&"<br />"&VbCrLf ' o erro acontece quando tento acessar a posição (i) do array, o ubound retorna a quantidade correta de registros. (0x800A000D Tipos incompatíveis nesta linha)
	
Next

Set ObjMarcas = Nothing
Set Obj = Nothing

%>

Agradeço qualquer ajuda.!!!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, obrigado pela atenção, abaixo segue o erro.

 

HTTP 500.100 - Servidor interno Erro - erro do ASP

Internet Information Services

 

Informações técnicas (para a equipe de suporte)

 

* Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: 'ListaMarcas'

/tstws/Default.asp, line 10

 

* Tipo de navegador:

Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4

 

* Página:

GET /tstws/Default.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

ObjMarcas = Obj.ListaMarcas

de onde vem esse Obj.ListaMarcas? qual é o valor dele? imprima esse Obj.ListaMarcas na tela e veja se está chegando valor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se nao esta tentando passar um valor numérico em um campo texto, ou vice versa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

o retorno sempre será um objeto da DLL ou um array deles. Por ex:

public Entidade[] ListaMarcas()
{
....
}
public class Entidade
	{

		private string mID;
		private string mNome;
		private Entidade[] mFilhos = null;

		public Entidade[] Filhos
		{
			get { return mFilhos; }
			set { mFilhos = value; }
		} 


		public string ID
		{
			get { return mID; }
			set { mID = value; }
		}


		public string Nome
		{
			get { return mNome; }
			set { mNome = value; }
		}
		public Entidade() { }
		public Entidade(string id, string nome)
		{
			mID = id;
			mNome = nome;
		}

	}
OBS: Esta dll e todos os métodos estão funcionando perfeitamente pois eu testei por uma aplicação .Net

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já vi algumas pessoas tendo o mesmo problema quando retornam arrays mesmo de tipos primitivos. Acho que o problema deve estar relacionado à falta de tipos do ASP.

 

Bem, se alguém puder ajudar eu agradeço.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas você criou um Objeto e está tentando armazenar um valor nele... isso não pode.

 

Set ObjMarcas = Server.CreateObject("WS.Entidade")

ObjMarcas = Obj.ListaMarcas

 

Faça

Dim obj2
obj2 = Obj.ListaMarcas

E poste o resultado.

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.