[ Foro de C# ]

tengo una variable que envia error de variable no asignada Enumerato , Enumerator2

23-Jun-2016 00:57
Invitado (jevany)
1 Respuestas

aqui les dejo el detalle del codigo, la verdad ya le busque y busque y no he podido solucionarlo y pasa que si Estan las variables asignadas, este es un programita que debe realizar el timbrado de una factura, el codigo nos lo pasa el proveedor y nosotros adecuamos de acuerdo a nuestro ERP.


using IntegraCFDIfoldi.My;
using IntegraCFDIfoldi.WSFD;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Xml;
using System.Collections.Generic;

namespace IntegraCFDIfoldi
{
	[StandardModule]
	internal sealed class Module1
	{
		[STAThread]
		public static void Main()
		{
			string[] s = Environment.GetCommandLineArgs();
			WS_FD_TFD ServicioFD = new WS_FD_TFD();
			checked
			{
				try
				{
					string Directorio = Path.GetDirectoryName(s[1]);
					string Nombre = Path.GetFileNameWithoutExtension(s[1]);
					string Seccion = s[3];
					XmlDocument Parametros = new XmlDocument();
					Parametros.Load("integracfdi.xml");
					XmlNodeList m_nodelist = Parametros.SelectNodes("/CFD");
					XmlNode root = Parametros.DocumentElement;
					string DirDestino = "";
					string DirErrores = "";
					string Usuario = "";
					string Contrasena = "";
					bool timbre = false;
					bool bDebug = false;
					string strNodo = "descendant::" + Seccion;
					XmlNodeList nodeListEmpresa = root.SelectNodes(strNodo);
					if (nodeListEmpresa.Count > 0)
					{
						try
						{
							IEnumerator enumerator = nodeListEmpresa.GetEnumerator();
							while (enumerator.MoveNext())
							{
								XmlNode DatosEmpresa = (XmlNode)enumerator.Current;
								int ii = 0;
								do
								{
									string NombreTag = DatosEmpresa.ChildNodes.Item(ii).Name;
									if (Operators.CompareString(NombreTag, "BUZON", false) == 0)
									{
										DirDestino = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "USUARIO", false) == 0)
									{
										Usuario = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "CONTRASENA", false) == 0)
									{
										Contrasena = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "PROVEEDOR", false) == 0)
									{
										string Proveedor = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "BUZONFINAL", false) == 0)
									{
										string DirFinal = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "BUZONERRORES", false) == 0)
									{
										DirErrores = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "BUZONSALIDA", false) == 0)
									{
										string DirSalida = DatosEmpresa.ChildNodes.Item(ii).InnerText;
									}
									else if (Operators.CompareString(NombreTag, "PRUEBA", false) == 0)
									{
										timbre = (Conversions.ToInteger(DatosEmpresa.ChildNodes.Item(ii).InnerText) != 0);
									}
									else if (Operators.CompareString(NombreTag, "DEBUG", false) == 0)
									{
										bDebug = (Conversions.ToInteger(DatosEmpresa.ChildNodes.Item(ii).InnerText) != 0);
									}
									ii++;
								}
								while (ii <= 9);
							}
							goto IL_481;
						}
						finally
						{
                            IEnumerator enumerator; 
                            if (enumerator is IDisposable)
							{
								(enumerator as IDisposable).Dispose();
							}
						}
					}
					try
					{
						IEnumerator enumerator2 = m_nodelist.GetEnumerator();
						while (enumerator2.MoveNext())
						{
							XmlNode m_node = (XmlNode)enumerator2.Current;
							int ii = 0;
							do
							{
								string NombreTag = m_node.ChildNodes.Item(ii).Name;
								if (Operators.CompareString(NombreTag, "BUZON", false) == 0)
								{
									DirDestino = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "USUARIO", false) == 0)
								{
									Usuario = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "CONTRASENA", false) == 0)
								{
									Contrasena = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "PROVEEDOR", false) == 0)
								{
									string Proveedor = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "BUZONFINAL", false) == 0)
								{
									string DirFinal = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "BUZONERRORES", false) == 0)
								{
									DirErrores = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "BUZONSALIDA", false) == 0)
								{
									string DirSalida = m_node.ChildNodes.Item(ii).InnerText;
								}
								else if (Operators.CompareString(NombreTag, "PRUEBA", false) == 0)
								{
									timbre = (Conversions.ToInteger(m_node.ChildNodes.Item(ii).InnerText) != 0);
								}
								else if (Operators.CompareString(NombreTag, "DEBUG", false) == 0)
								{
									bDebug = (Conversions.ToInteger(m_node.ChildNodes.Item(ii).InnerText) != 0);
								}
								ii++;
							}
							while (ii <= 9);
						}
					}
					finally
					{
						IEnumerator enumerator2;
                        if (enumerator2 is IDisposable)
						{
							(enumerator2 as IDisposable).Dispose();
						}
					}
					IL_481:
					bool bResultado = false;
					string[] Respuesta = ServicioFD.ConsultarTimbrePorReferencia(Usuario, Contrasena, s[4], s[2]);
					string strXMLRespuesta="";
					if (Operators.CompareString(Respuesta[0], "True", false) == 0)
					{
						bResultado = true;
						strXMLRespuesta = Respuesta[9];
					}
					else if (Operators.CompareString(Respuesta[0], "False", false) == 0)
					{
						XmlDocument doc = new XmlDocument();
						doc.Load(s[1]);
						string Contenido = doc.InnerXml;
						UTF8Encoding utf8Encoding = new UTF8Encoding(true);
						byte[] encodedString = utf8Encoding.GetBytes(Contenido);
						string ContenidoUTF8 = encodedString.ToString();
						if (timbre)
						{
                            Respuesta = ServicioFD.TimbrarCFD(Usuario, Contrasena, Contenido, s[2]);
						}
						else
						{
							Respuesta = ServicioFD.TimbrarCFD(Usuario, Contrasena, Contenido, s[2]);
						}
						bResultado = (Operators.CompareString(Respuesta[0], "", false) == 0);
						strXMLRespuesta = Respuesta[3];
						if (bDebug)
						{
							Interaction.MsgBox(Respuesta[0], MsgBoxStyle.OkOnly, null);
							Interaction.MsgBox(Respuesta[1], MsgBoxStyle.OkOnly, null);
							Interaction.MsgBox(Respuesta[2], MsgBoxStyle.OkOnly, null);
							Interaction.MsgBox(Respuesta[3], MsgBoxStyle.OkOnly, null);
							Interaction.MsgBox(Respuesta[4], MsgBoxStyle.OkOnly, null);
						}
					}
					XmlDocument DoctoDestino = new XmlDocument();
					string sTemp = Path.GetTempFileName();
					sTemp = Path.GetFileNameWithoutExtension(sTemp);
					string ArchivoLog = DirDestino + "\\" + Nombre + ".LOG";
					string NombreDestino = Nombre + ".XML";
					string ArchivoTemporal;
					if (bResultado)
					{
						ArchivoTemporal = DirDestino + "\\" + sTemp + ".TMP";
						string ArchivoDestino = DirDestino + "\\" + Nombre + ".XML";
					}
					else
					{
						ArchivoTemporal = DirErrores + "\\" + sTemp + ".TMP";
						string ArchivoDestino = DirErrores + "\\" + Nombre + ".XML";
					}
					if (!bResultado)
					{
						FileStream fs = new FileStream(ArchivoLog, FileMode.Create, FileAccess.Write);
						StreamWriter sw = new StreamWriter(fs);
						sw.BaseStream.Seek(0L, SeekOrigin.End);
						sw.WriteLine(Respuesta[0] + "\r");
						sw.WriteLine(Respuesta[1] + "\r");
						sw.WriteLine(Respuesta[2] + "\r");
						sw.Close();
					}
					else
					{
						string ArchivoXML = strXMLRespuesta;
						DoctoDestino.LoadXml(ArchivoXML);
						DoctoDestino.Save(ArchivoTemporal);
						MyProject.Computer.FileSystem.RenameFile(ArchivoTemporal, NombreDestino);
					}
				}
				catch (Exception expr_6B5)
				{
					ProjectData.SetProjectError(expr_6B5);
					Exception ex = expr_6B5;
					Interaction.MsgBox(ex.Message, MsgBoxStyle.OkOnly, null);
					ProjectData.ClearProjectError();
				}
			}
		}
	}
}


 


23-Jun-2016 01:49
Nacho Cabanes (+83)

Efectivamente, en los dos "finally" estás declarando variables que luego consultas sin que realmente hayan recibido ningún valor. Se llaman igual que otras variables que están en otro ámbito, pero, por estar en zonas distintas, se trata de variables distintas.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)