• Jueves 28 de Marzo de 2024, 19:22

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - cls71

Páginas: [1]
1
C# / Cómo se referencia a la colección desde un ítem?
« en: Lunes 6 de Diciembre de 2010, 12:31 »
Hola,

sabéis si en C# hay alguna manera stándar de referenciar al objeto colección desde uno de sus elementos ?

P.ej.
supongamos una clase ZcItem.
Y una clase ZcItemCollection que se declara como : List<ZcItem>.
Es decir, ZcItemCollection es una lista de objetos ZcItem.
Después añadiremos objetos ZcItem a la lista con el método Add.

Mi duda es saber cómo puedo referenciar dentro de un objeto ZcItem al objeto ZcItemCollection al que pertenece, usando un método estándar. (Se puede hacer pasando al constructor de ZcItem una variable de referencia al objeto ZcItemCollection, pero quisiera utilizar un método estándar si lo hubiera y evitarme la variable).

Muchas gracias

2
C# / Re: Llamar a un objeto usando el nombre
« en: Miércoles 27 de Octubre de 2010, 23:15 »
gracias tannke, pero sólo sirve para referenciar recursos de la aplicación (imágenes, icones, ficheros, ...).

S2

3
C# / Re: conexion SQL SERVER y C#
« en: Miércoles 27 de Octubre de 2010, 23:10 »
Pon dos barras y arreglado (la primera es la secuencia de escape para la segunda). Un ejemplo :

Código: C#
  1. string connection = "Data Source=MIPC\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=True";
  2.  

S2

4
C# / Re: Llamar a un objeto usando el nombre
« en: Martes 26 de Octubre de 2010, 18:31 »
Como comenté en el primer post lo podía resolver con arrays, en concreto con listas tipadas. Pero me vino a la cabeza la duda de si podría apuntar al objeto partiendo de su nombre.
En javascript se puede con la función eval (lo digo con la boca pequeña porque hace años que no lo toco).
Y en ABAP IV se haría así (son variables en vez de objetos pero el ejemplo funciona igual):

Código: Text
  1. WRITE:/,/,/.
  2. * ------------------------ DYNAMIC ASSIGN ---------------------------- *
  3. * En este ejemplo la asignación se hace en función del nombre del campo.
  4. * Ejemplo de bucle para mostrar todas las variables con un prefijo común
  5. * El nombre de la variable se actualiza con el paso del bucle.
  6. * -------------------------------------------------------------------- *
  7. DATA: A1(10) , A2(10) , A3(10).
  8. DATA NAME(10) TYPE C.
  9. A1 = 'aaaaaaaaaa'. A2 = 'bbbbbbbbbb'. A3 = 'cccccccccc'.
  10. NAME = 'A'.
  11. FIELD-SYMBOLS: <FS1>.
  12. DATA INDICE(1) TYPE C.
  13. DO 3 TIMES.
  14.   INDICE = SY-INDEX.
  15.   CONCATENATE 'A' INDICE INTO NAME.
  16.   WRITE:/ NAME. "Escribe el nombre de la variable
  17.   ASSIGN (NAME) TO <FS1>.
  18.   WRITE: <FS1>. "Escribe el contenido de la variable
  19. ENDDO.
  20.  
  21. WRITE:/,/,/.
  22.  

5
C# / Re: Llamar a un objeto usando el nombre
« en: Martes 26 de Octubre de 2010, 18:05 »
Gracias m0skit0, pero la pregunta no era sobre el diseño, sino sobre una funcionalidad concreta que sí tienen otros lenguajes.

sabes si puede hacerse ? y en tal caso cómo se haría ?

S2

6
C# / Llamar a un objeto usando el nombre
« en: Martes 26 de Octubre de 2010, 08:25 »
Hola,

tengo varios objetos nombrados de forma secuencial que pertenecen a una clase clObjeto.

Código: C#
  1. private clObjeto objeto1, objeto2, objeto3;
  2. objeto1 = new clObjeto();
  3. objeto2 = new clObjeto();
  4. objeto3 = new clObjeto();
  5.  

No están metidos en una colección ni array.

Me gustaría usar una variable de referencia para poder apuntar a esos objetos usando su nombre.

Al estilo de algo como:

Código: C#
  1. private clObjeto variableRef;
  2. variableRef = "nombre del objeto" + n; // donde n sería el sufijo numérico
  3.  

es decir, usaría la cadena alfanumérica del nombre del objeto para que la variable variableRef quedara apuntando al objeto.

¿Sabéis si esto es posible en C# ?
Sé que se puede hacer en otros lenguajes como ABAP IV, incluso javascript.

Podría resolverlo usando un array o una lista pero me gustaría hacerlo con variables sueltas si fuera posible.

Muchas gracias.

7
C# / DeflateStream + FileMode.Append. Problema.
« en: Jueves 12 de Agosto de 2010, 07:55 »
Hola.
Estoy trabajando con una aplicación que recibe un flujo de datos muy elevado de manera continua.
Esos datos los voy almacenando en memoria en una colección de tipo List.
Cuando la lista alcanza cierto tamaño, grabo su contenido a un fichero y la limpio para liberar memoria.
Y así sucesivamente. (Sería como una grabación por lotes de información).


Para grabar los datos estaba probando con las clases DeflateStream y GZipStream (para comprimir los datos y ahorrar espacio en disco), pero resulta que no funcionan con FileMode.Append.
Sólo puedo acceder al primer lote grabado. (Aunque todos los lotes se van añadiendo al fichero pues éste va aumentando de tamaño a medida que se va grabando).

Supongo que cuando se graba algo con estas clases se añade alguna información clave en la cabecera de los datos para poder descomprimir. Por lo tanto, los datos tendrían que comprimirse y grabarse todos juntos, no por lotes. ¿Es así?

(El proceso funciona bien si primero abro el fichero comprimido, descomprimo, añado los nuevos datos y vuelvo a comprimir + grabar. El problema es que a medida que el fichero crece la tarea es cada vez más costosa. Lo ideal sería que funcionara el Append.).

Si alguien pudiera aclararme este tema del Append con los ficheros comprimidos se lo agradecería.

Saludos

8
C# / Re: Operador ~ en un método
« en: Martes 20 de Abril de 2010, 08:57 »
Muchas gracias  :good:

9
C# / Operador ~ en un método
« en: Lunes 19 de Abril de 2010, 11:18 »
Hola,
he visto este operador ~ (Alt+126) aplicado al nombre de un método y no sé qué significa.
No sé cuál es el cometido del último bloque del código donde aparece ~MyResourceHolder().

Si me podéis ayudar os lo agradezco.


Código: C#
  1.  
  2. public class MyResourceHolder : IDisposable
  3.     {
  4.         private bool _disposed = false;
  5.  
  6.         public void Dispose()
  7.         {
  8.             Dispose(true);
  9.             GC.SuppressFinalize(this);
  10.         }
  11.  
  12.         protected virtual void Dispose(bool disposing)
  13.         {
  14.             if (!_disposed)
  15.             {
  16.                 if (disposing)
  17.                 {
  18.                     // Dispose managed resources here
  19.                 }
  20.  
  21.                 // Dispose unmanaged resources here
  22.  
  23.                 _disposed = true;
  24.             }
  25.         }
  26.  
  27.         ~MyResourceHolder()
  28.         {
  29.             Dispose(false);
  30.         }
  31.     }
  32.  
  33.  

10
C# / Delegados y eventos
« en: Jueves 29 de Enero de 2009, 11:13 »
Hola,
tengo un problema y no sé cómo resolverlo. Agradecería cualquier ayuda.

Tengo varios objetos Cubo. Cada cubo tiene una capacidad y se usan para recoger la lluvia. Son pluviómetros.
Con un random simulo la lluvia caída cada día. Hago un bucle de 1000 para simular 1000 días.
Necesito saber cuándo un cubo es rebosado y cuántos lo son cada día.

He implementado lo siguiente:
1.- Un clase Cubo con el campo capacidad que representa el agua que puede contener ese cubo. También declaro el evento OnCuboLleno y el método CheckCubo. Dentro del método CheckCubo se dispara el evento OnCuboLleno si la capacidad es superada por la lluvía caída.
2.- Una clase Manejador para informar cuando se dispara el evento.
3.- La clase principal para arrancar. Hay un bucle para simular 1000 días de lluvia (la lluvia toma valores entre 0-99).

Me gustaría saber si con delegados/eventos puedo automatizar todo el proceso para no tener que llamar al método CheckCubo con cada objeto dentro del bucle for. ¿Hay alguna forma de que los objetos ejecuten su método CheckCubo sin tener que llamarlo desde el for ?

(En este ejemplo sólo hay un Cubo, pero en realidad tendré un array con unos cuantos cientos y no quiero (a no ser que no quede más remedio) tener que recorrer todo el array y preguntar al método CheckCubo con cada objeto).

Muchas gracias por cualquier ayuda.

Saludos

Código: Text
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5.  
  6. namespace Eventos01
  7. {
  8.     public delegate void TipoCuboLLeno( int a, int b );
  9.  
  10.     class Cubo      
  11.     {
  12.         private int capacidad;
  13.  
  14.         public event TipoCuboLLeno OnCuboLleno;
  15.  
  16.         public Cubo( int _capacidad)
  17.         {
  18.             capacidad = _capacidad;
  19.             OnCuboLleno = null;
  20.         }
  21.  
  22.         public void CheckCubo( int _lluvia )
  23.         {
  24.             if (_lluvia >= this.capacidad)
  25.             {
  26.                 OnCuboLleno(this.capacidad, _lluvia);
  27.             }
  28.         }
  29.     }
  30.  
  31.     class Manejador
  32.     {
  33.         public void EventoLanzado(int _capacidad, int _lluvia)
  34.         {
  35.             Console.WriteLine("Cubo rebosado ... " + "Capacidad: " + _capacidad + " Lluvia : " + _lluvia);
  36.         }
  37.     }
  38.  
  39.     class Program
  40.     {
  41.         static void Main(string[] args)
  42.         {
  43.             Cubo myCubo = new Cubo(50);
  44.             Manejador hd = new Manejador();
  45.             myCubo.OnCuboLleno += new TipoCuboLLeno(hd.EventoLanzado);
  46.  
  47.             // Número aleatorio para simular la lluvia
  48.             Random r = new Random();
  49.             int lluviaSim;
  50.             for (int dia = 0; dia != 1000; dia++) // Se simula para 1000 días
  51.             {
  52.                 lluviaSim = (int)Math.Floor(100.00 * r.NextDouble());
  53.                 myCubo.CheckCubo(lluviaSim);
  54.             }
  55.         }
  56.     }
  57. }
  58.  
  59.  

11
MySQL / Leer campo binario
« en: Lunes 17 de Noviembre de 2008, 12:41 »
Hola saludos al foro.
Este es mi primer mensaje y lo primero saludos a todos y felicidades por un foro tan activo.

No sé si esta consulta va en el subforo correcto. Disculpas si no.

Tengo un fichero de extensión .mdb que debería abrirse con Access pero no lo consigo. Al final pude abrirlo con el MSVisualStudio 2005 creando una conexión a base de datos con origen MS Access, y accediendo al fichero. Ahora ya puedo explorar todas las tablas y consultar el contenido.

El problema es que tengo que acceder a un campo de una tabla, que es binario. Creo que el contenido es una fecha+hora o algo similar, pero el MSVisualStudio sólo dice "Datos binarios".
Quisiera saber si construyéndome un programa para leer la tabla podría extraer la información de ese campo en formato legible (ascii, numérico, ...) pero no en binario. No sé si servirá con volcarlo a una variable adecuada y que se haga el casting automáticamente, o es necesario conocer el método con el que se empaquetó el campo (sospecho que está comprimido para ahorrar espacio).

Bueno, si alguien puede orientarme un poco se lo agradezco enormemente.

Saludos

Páginas: [1]