Título: Declaración duplicada del miembro Size y Point. Publicado por: zalazar16 en 11 Agosto 2017, 12:19 pm Este error viene generandose de una aplicación que alguien lo adujo de C# a VB.NET, con un supuesto programa en vz de traducirlo manualmente y el código C# original se perdió y quedó el revoltillo de VBNET... Sé, que ya el amigo Elektro, muy maravillosa su ayuda y excelente usuario, me ayudó con e programa anterior, he tratado de corregir ese error pero no he podido, me sigue lanzando esa misma fila de hileras de error.
Si hay alguien en el grupo que me pueda ayudar o cualquier cosa que pueda aportar, bienvenido sea, y a quien interese aqui está el link del CodeFonte que lanza los errores :) http://www.mediafire.com/file/1bl0l4c5xc2nn0t/LOTER%C3%8DA+MONTOS+ALTOS.zip (http://www.mediafire.com/file/1bl0l4c5xc2nn0t/LOTER%C3%8DA+MONTOS+ALTOS.zip) Título: Re: Declaración duplicada del miembro Size y Point. Publicado por: Serapis en 12 Agosto 2017, 07:46 am Es imposible ejecutar el proyecto para ver qué error marca, faltan ficheros y arroja un montón de errores (para en el número 103)...
Es muy probable que hayas declarado en algún método dos veces un campo del mismo nombre. Te voy algunos consejos, que deberías aplicar d eforma inmediata a tu 1 - No es buena idea llamar a un miembro con el mismo nombre que el tipo cual es, se presta a confusión, además, cualquier cambio al nombre podría aplicarse también al tipo de forma inadvertida. Código Podrías llamarlo por ejemplo en español, y quedaría así: Código
2 - Cuando creas una variable para establecerla una sola vez y aisgnarla una sola vez, te la puedes ahorrar. Esto, es una idiotez: Código Puedes hacer directamente: Código
3 - el código está lleno de referencias a "Me". cuando un objeto se llama cada vez, se lo busca en la tabla para obtener su dirección y con ella prosigue la búsqueda para el miembro interno.... entonces esto que sigue... es perder tiempo... es como si 5 personas en una mesa te piden tabaco una detrás de otra, y tú cada vez, sacas la cajetilla de tu tabaco, ofreces y la vuelves a guardar, vuelves a sacarla, ofreces y la vuelves a guardar... acaso no es mejor sacarla, ofrecer a todos y ya entonces la guardas???? Código Es mejor hacelro así: Código
4 - No conoces el bloque de condiciones "select case"?. Esto queda horrooroso y es ineficiente... Código Si la ejecución de una condición no modifica el objeto que se sigue mirando, el código anterior es ineficiente, porque solo puede ser un valor entre ellos (o ninguno), pero tú obligas a compararse en todos los casos iempre incluso cuando ya se haya encontrado. El bloque Select Case, evalúa la condición y 'SALTA' al punto del código donde corresponde y no evalúa para ninguna otra condición.... Código
5 - No hace falta que pongas una línea por cada declaración... especialmente si no le vas a asignar ningún valor de entrada.... Así este código: Código Se vería más claro así: Código
6 - Cuando tienes varias asignaciones o código repetitivo, es preferible usar un bucle. es más limpio y claro el código... esto es cansino: Código Es mucho mejor declarar un array de string, y asignarlas en un bucle, finalmente hay dos opciones para añadirlos al listbox... Código
Código
7 - Tienes bloques de código a patadas como el siguiente, que en realidad se pueden resolver en un bucle, y en cualquier caso mucho más simplificado que esta madeja de hilos dejada al gato para su entretenimiento... tiene multitud de sangre derramándose... :laugh: :laugh: :laugh: :laugh: Código
Primero como str3 es una cadena de texto, puedes directamente escribir Código en vez de Código Ya que lenght es un método del tipo String, igualmente poseee el método Trim, TrimEnd, TrimStart, y aunque no tieme Mid, es equivalente a Char. Así este código: Código Puede rescribirse mejor así: Código Si en vez de recibir un solo carácter es preciso recioger varios, entonces en vez de Char, se usaría el método Substring Así un código como este: Código Puede rescribirse mejor así: Código
Dado que cada vez estás haciendo Trim, ahorrarías código si durante la asignación de la cadena ya retiras sus espacios en blanco y así no es preciso escribirlo en cada ocasión... se hace una sola vez al comienzo y listo. Código
Mirando por encima ese bloque de código, simplemente estás tratando de ver si hay un punto, y si no lo hay en algunos caso añades más ceros, en otros dado que el punto no tiene mayúsculas ni minúsculas, también te puedes evitar la comparación de esa forma. Como te he dicho si necesitas buscar si está en alguna posición, es mejor hacer un bucle. Código: dim k as integer Ahora bien, si debes hacer cosas distintas según donde esté o debiera estar el punto, entonces lo mejor es buscar directamente si existe el punto en la cadena y obtener su posición.dim strx() as char = str3.ToChararray For k=0 to strx.Lenght -1 if strx(k) = "." then ' .... lo que tengas que hacer. ' Si ya no se requiere seguir buscando Exit for , ó Return Obj2 End if Next Código Si k es -1 implica que no aparece en la cadena, entonces no es necesario buscar una a una en cada posición. Y si debe aparecer en varias posiciones y hacer algo si no aparece en una en concreto, entonces lo metes en un bucle: Código
8 - tampoco tiene sentido que la cadena str3, no cambia de tamaño, esté continuamente poniendo código para ver su tamaño, eso se hace de una sola vez: n = Str3.Length Si (n = 1) luego.... y ya no hay que estar preguntando cada vez por el tamaño de la cadena. 9 - Los comentarios brillan por su ausencia... excelente ayuda para que te ayuden.... ...en fín podría seguir enumerando "problemas con el codigo", pero cuando son tantos, el problema no es el código, si no el programador... te falta mucha base. si ni siquiera conoces los típos básicos como el String...para que´seguir con cosas más complejas. Título: Re: Declaración duplicada del miembro Size y Point. Publicado por: zalazar16 en 12 Agosto 2017, 12:43 pm Es que el código fuente y en la forma que se programó la aplicación.... Da asco sinceramente, la aplicación no la programé yo, pero me pidieron que modificara algo, es un fastidio, en ves de Formularios, un solo formulario para todo y groupboxs como si fueran ventas, por lo menos e el otro el amigo Elektro pudo quitar el error de size y point, y pudo correr bien el programa, es que en todos lados dice dim size as new size
uno debajo del otro, al igual que en point....... No sé exactament que hizo, pero comparando le agrego una letra a cada componente y suprimío las posiciones, aunque también es raro que las declaraciones size y point den valores hexadecimales.... creo que este programa fue hcho en otro lenguaje, entorno a visual studio pero no VBNET, y tradujeron todo a las patadas..... Muchas gracias or tu ayuda. y sí es un tremendo spaguetti, demasiadas lineas de código innecesario, creo que hay más codigo basura que lo que ncesita la app :rolleyes: Título: Re: Declaración duplicada del miembro Size y Point. Publicado por: Serapis en 12 Agosto 2017, 17:43 pm Bien... pero incluso si no has hecho el código, o si fue 'traducido' desde otro lenguaje, sería conveniente que aclares lo desastroso del código a quien te hizo el encargo y que puedes optimizarlo para que sea más rápido, claro y conciso (menos tamaño en disco y en memoria), por un precio extra... y que es conveniente hacer eso antes de los cambios que reclamen hacer.
Ahora mismo cualquier cambio supone un cierto 'sufrimiento', y mucho tiempo extra, porque exige repasar la infinidad de variables y líneas cuasi equivalentes, por si hay alguna discrepancia que no salte con claridad a la vista. Sin embargo tras perder el tiempo repasando, al final se ve que la mayor parte del código es ineficiente y redundante, podría abreviarse probablemente a una vigésima parte del tamaño actual... En fin si te han encargado hacer cambios, diles que la propia ineficiencia del código requiere un cambio urgente... y de paso cóbralo... ----------------------------- En cuanto a tu dilema, ya te he conestado, aunque quizás te haya pasado inadvertido entre tantas sugerencias, me autocito y lo comento más específicamente: Donde tienes cada una de las líneas de éstas (con size y point): Código
Cámbialas por otras equivalente, es decir elimina la declaración del: size =... point = ... y lo que está al otro lado del igual se lo asignas directamente a la línea que antes recibía un: textbox...Location = point textox... Size = size Y te quedarían así: Código
Habiéndo remplazado todas las líneas que tienes con size y point, de este modo, ya no puede darte problemas con 'size' ni 'point', porque han desaparecido del código... --------------------------- ...y en cuanto a los valores hexadecimales, no tiene demasiada importancia en que sistema de numeración estén los valores, pero si te cuesta entender los valores hexadecimales cámbialos a decimales... si lo precisas usa la calculadora 'científica' (de win2). |