|
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 - krnl64
26
« en: Miércoles 27 de Mayo de 2009, 22:43 »
Siento comunicarle Sr. m0skit0 que está usted equivocado.
La velocidad óptima de memoria para un micro con un FSB:1333 Mhz, FSB de placa: 1333 Mhz es 667 Mhz.
1333 Mhz de micro /4 (porque son QuadPumped) =333Mhz 1333 Mhz de fsb de placa /4 (el bus de la placa intel tambien es QuadPumped) =333Mhz 667Mhz /2 (porque es Double Data Rate) =333 Mhz
Poner memoria de más de 667 Mhz seria tener cuello de botella aunque no lo notes.
Para sacarle partido a unas memorias de 800 Mhz hace falta un FSB de micro y placa a 1600 Mhz.
Se puede conseguir con overclock, o comprandote un Q9770, un i7 y porsupuesto placa que soporte eso.
27
« en: Miércoles 27 de Mayo de 2009, 22:24 »
Hola a todos. Hace un tiempo les pregunte acerca de como hacer un scanf personalizado. Me dijeron como podia leer los datos correctamente con fgets y sscanf. Hasta aqui ok. Bueno, hice la función y me dio por iniciar la variable referenciada dentro de la función pero no me lo hace bien. Les enseño el codigo y les explico: void myscanf(const char *formato,...) { char bufferinterno[80]; int vars=0; /* codigo para contar los argumentos de entrada basicamente cuento los % para saber las variables que tengo que leer (almacenado en vars) */ /* Inicio el buffer interno */ memset(bufferinterno ,0,sizeof(bufferinterno )); /* intento iniciar la variable referenciada */ memset(*(&format +vars ),0,sizeof(*(&format +vars ))); }
Lo que me ocurre es que cuando hago esto char buffer[50]; myscanf("%s",buffer);
El memset de la linea 19 no inicia correctamente el buffer porque *(&format+vars) apunta al primer caracter del buffer y no hay forma de saber cuál es su tamaño para iniciarlo correctamente. Hay alguna forma de saber cuanto ocupa la variable referenciada o el unico remedio seria pasarle a la función su tamaño para iniciarla correctamente ? O inciarla antes de pasarsela a la función. Gracias
28
« en: Miércoles 27 de Mayo de 2009, 15:59 »
Ya, Propiedades del bus Principal
Ancho de bus 64 bit Ancho de banda 10664 MB/s
Propiedades del bus de memoria:
Ancho de bus 128 bit Relación DRAM:FSB 12:10 Ancho de banda 12797 MB/s
No va mi memoria más rápido que el bus ? Los anchos de banda son diferentes y el ancho del bus también.
29
« en: Miércoles 27 de Mayo de 2009, 03:48 »
Hola a todos, les comento mi duda:
Tengo una placa Asus P5KPL-VM/S y un micro Core 2 Duo E6750. Hasta ayer tenía instalados 2 modulos de 1 Gb DDR2 667 Mhz Kingston. Fenómeno hasta aqui. Ahora he comprado 2 modulos de 1 GB DDR2 a 800 Mhz Kingston y se los he puesto.
Las especificaciones de mi placa dicen:
Front Side Bus: 1333(overclock)1066,800 Mhz Memory: 4Gb 667/800Mhz Dual Channel
Ahora corro el Everest y me dice:
Propiedades del bus principal: Tipo de bus Intel AGTL+ Ancho de bus 64 bit Reloj real 333 MHz (QDR) Reloj efectivo 1333 MHz Ancho de banda 10664 MB/s
Propiedades del bus de memoria: Tipo de bus Dual DDR2 SDRAM Ancho de bus 128 bit Relación DRAM:FSB 12:10 Reloj real 400 MHz (DDR) Reloj efectivo 800 MHz Ancho de banda 12797 MB/s
No entiendo por qué me hace cuello de botella si la el manual de la placa dice que soporta la DDR2 800Mhz. Pueden decirme que hacer para que vayan a la par la memoria y el fsb ? Gracias
30
« en: Martes 26 de Mayo de 2009, 17:18 »
Vamos haber si esto se entiende. char buffer[50]; scanf("%48[1234]",buffer );
Ese code me funciona perfecto. Almacenara en buffer 48 caracteres del 1 al 4 ignorando el resto que se teclee. Pero en vez de eso, quiero leer un caracter permitiendo solo los numeros del 1 al 4 y almacenarlo en un unsigned char. unsigned char caracter=0; scanf("%1[1234]",&caracter )
Este código me corrompe la pila y quiero evitarlo.
31
« en: Martes 26 de Mayo de 2009, 16:28 »
Eso ya lo sabia y no es lo que queria. Quiero que el usuario solo pueda introducir los caracteres del 1 al 4 nada más. Como ésto: Eso solo dejara entrar en el buffer los numeros del 1 al 4. Lo mismo pero para leer un caracter.
32
« en: Lunes 25 de Mayo de 2009, 22:16 »
Hola, quiero leer un carácter de entre una serie de caracteres permitidos con scanf. Por qué me falla este code si le estoy diciendo que lea solo 1 caracter ? unsigned char caracter=0; scanf("%1[1234]",&caracter )
Gracias.
33
« en: Sábado 16 de Mayo de 2009, 00:13 »
Muchas Gracias, me sacaste de la duda. Saludos.
34
« en: Viernes 15 de Mayo de 2009, 23:55 »
O sea, la técnica es leer el buffer de entrada en un array y obtener de ese array los datos que buscamos. No entiendo la linea 6. Haciendo No borras solo el primer caracter del buffer y el resto se queda en la memoria ? No deberia ser para borrar el contenido del array y en caso que quisiera liberarlo poner *line=0?
35
« en: Viernes 15 de Mayo de 2009, 22:05 »
Claro, me gustaria no ensuciarlo. Pero entonces cómo hago que este trozo de codigo funcione ? printf("nintroduzca una cadena"); printf("nintroduzca otra cadena: ");
Ese code solo te deja introducir una cadena. El 2º scanf se lo salta. Cual es la solucion correcta ? Gracias
36
« en: Jueves 14 de Mayo de 2009, 21:50 »
Ahora arreglo eso.
Supon que limpia el buffer.
37
« en: Jueves 14 de Mayo de 2009, 21:30 »
Hola a todos. Estoy intentando hacer un wrapper para scanf. Mi intencion es limpiar el buffer de consola antes y despues ejecutar la funcion scanf original. El code es este: void myscanf(const char *format,...) { va_list args; char c; }
El caso es que a scanf no le llegan los argumentos .... y no se por qué. Puede alguien decirme que he hecho mal ? PD: tengo todos los includes. Gracias
38
« en: Martes 25 de Noviembre de 2008, 09:23 »
Hola a todos, tengo un problema que no sé solucionar con un control que me estoy creando. Verán, estoy intentando hacerme un control para hacer mapas para rpg's a base de tiles. Comencé a hacerlo como una clase que hereda de un panel y dentro otro panel que es donde dibujo una malla. No usé el diseñador, y lo hice de esta manera porque asi el scroll me lo hace solo. Bueno, pues hago el code, me pinta y todo muy bonito pero cuando la ventana pierde el foco, lo que he pintao dentro del 2º panel se pierde. He intentando hookear el WndProc del panel interior, pero no se hacerlo. Pueden decirme que puedo hacer para repintar el contenido del control ? Les dejo aqui el code: class Grid2:Panel { Panel p2; private int hcells; private int vcells; private int theigth; private int twidth; private const int WM_PAINT = 0xF; public Grid2(int sizetile, int height, int width) { this.AutoScroll=true; this.BorderStyle=BorderStyle.FixedSingle; this.Width=600; this.Height=600; // N1 de celdas this.hcells=height; this.vcells=width; this.twidth=sizetile; this.theigth=sizetile; p2=new Panel(); p2.Height=this.vcells*this.theigth; p2.Width=this.hcells*this.twidth; p2.Paint += new PaintEventHandler(p2_Paint); p2.MouseMove += new MouseEventHandler(p2_MouseMove); this.Controls.Add(p2); } void p2_MouseMove(object sender, MouseEventArgs e) { if (e.Button==MouseButtons.Left) { int x; int y; Panel p; Pen pn=new Pen(Color.Green,2); Graphics g; x=(e.X/32); // Averiguo en que casilla esta el raton y=(e.Y/32); g=((Panel)sender).CreateGraphics(); // DrawRectangle (x,y(origen),ancho, alto) g.DrawRectangle(pn,new Rectangle(x*this.twidth,y*this.theigth,this.twidth,this.theigth)); g.Dispose(); } } #region Propiedades /// <summary> /// Nº de celdas de ancho /// </summary> public int Hcells { get { return(this.hcells); } set { this.hcells=value; } } /// <summary> /// Nº de celdas de alto /// </summary> public int Vcells { get { return(this.vcells); } set { this.vcells=value; } } /// <summary> /// Alto del tile /// </summary> public int Theigth { get { return(this.theigth); } set { this.theigth=value; } } /// <summary> /// Ancho del tile /// </summary> public int Twidth { get { return(this.twidth); } set { this.twidth=value; } } #endregion void p2_Paint(object sender, PaintEventArgs e) { int x; int y; Pen mypen=new Pen(Color.Gray); // lineas verticales for (x=0;x<this.hcells*this.twidth; x+=this.twidth) e.Graphics.DrawLine(mypen,x,0,x, this.hcells*this.twidth); // lineas horizontales for (y = 0; y < this.vcells * this.theigth; y += this.theigth) e.Graphics.DrawLine(mypen, 0, y, this.hcells * this.theigth, y); e.Graphics.DrawRectangle(mypen, 1, 1, this.theigth * this.hcells - 2, this.twidth * this.vcells - 2); } } }
Gracias
39
« en: Sábado 21 de Junio de 2008, 10:21 »
Hola a todos. Hice un programa que cuando captura una excepcion finaliza la app y te crea un thread que te saca un topic de un chm (explicación del error). El codigo que ejecuta el thread es este: Private Shared Sub Ayuda() Dim hp As New HelpProvider hp.SetHelpNavigator(Me,HelpNavigator.Topic) hp.SetHelpKeyWord(Me,60) Help.ShowHelp(me,"Help.chm") end Sub
Pero el thread no espera para terminar que el usuario cierre la ventana de ayuda que se abre. No se me ocurre cómo hacer esto. Pueden ayudarme ? Gracias.
40
« en: Sábado 31 de Mayo de 2008, 04:55 »
Al final opte por usar threads creando una splash y desde ella una vez cargados todos los datos el hilo "principal" del programa pasandole los datos pertinentes.
Gracias por la ayuda.
Salu2
41
« en: Domingo 25 de Mayo de 2008, 16:03 »
Hola a todos. Verán hice un programa un poco denso que necesita cargar bastantes datos antes de mostrar el form principal, asi que me hice una clase SplashScreen.
Mi clase crea un form, barra de progreso, un par de labels y hace fades al aparecer y desparecer.
Mi problema es que cuando la inicio, tengo que poder esperar a que el fade de aparicion se complete para poder mandarle datos y que actualize la progressbar.
Es decir, que el form termine de aparecer en pantalla antes de hacer nada más.
Porque ahora mismo, tengo en el form_load del form principal una llamada a esa clase y despues todas las operaciones de carga del programa, pero cuando inicia la splashscreen inmediatamente sigue ejecutando por la instruccion siguiente sin esperar a que el timer que hace el fade de aparicion se pare.
Pueden decirme como puedo hacer eso ?
Gracias
42
« en: Miércoles 7 de Mayo de 2008, 06:27 »
Puedes añadirle una inspección a esas variables y ver su valor en la ventana Inspección aunque pauses el programa.
O Sacarlas por la ventana Resultados con la orden Debug.Print
De ahi no se van a menos que la borres tu.
Salu2
43
« en: Miércoles 7 de Mayo de 2008, 06:23 »
Intenta insertar los datos asi: Query=String.Format("insert into customers values ({0},{1}....",textbox1.tex,texbox2.text...) Mycommand.Connection= SqlConexion MyCommand.CommandText=Query MyCommand.ExecuteNonQuery
Por ejemplo supon que tienes una tabla que se compone de Id, Nombre , Descrip y se llama tmp haces esto: Query=String.Format("insert into tmp values({0},'{1}','{2}');",Txt1.Text,Txt2.Text,Txt3.Text) Mycommand.Connection= SqlConexion MyCommand.CommandText=Query MyCommand.ExecuteNonQuery
Importante el detalle de la comillas. Como yo te puse no debe de haber problemas; Estoy harto de hacer esas cosas. Si ves que te sigue petando, quiza se el driver que no sea el correcto, o una cadena de conexion erronea. No se decirte más. Salu2
44
« en: Miércoles 7 de Mayo de 2008, 06:02 »
Alguna vez quisieron ordenar el contenido de un Listview en modo Details al pinchar encima del nombre de la columna y que se ordenara segun su contenido ? Pues esta clase que les dejo les ayudará. Puede ordenar texto, enteros, dni's y fechas Ascendente y Decendente. Si usan esta clase "tal y como está" Respeten la documentacion XML por favor. El uso de esta clase se resume en esta sentencia: Listview1.ListViewItemSorter = New Comparador(e.Column,Comparador.metodo.FechaAsc)
donde: e.Column es un entero que representa la columna a ordenar metodo.FechaAsc es el tipo de dato y la forma de orden Por si las moscas, les comento que ese code se pondria en el evento Column_Click. ''' <summary> ''' Ordena los Items de un ListView segun la columna que se le pase y el tipo de dato ''' </summary> ''' <remarks>Coded by Krnl64 '08</remarks> Public Class Comparador Implements System.Collections.IComparer ''' <summary> ''' Tipo de Dato y Orden ''' </summary> Public Enum metodo ''' <summary> ''' Texto en orden Ascendente ''' </summary> TextoAsc ''' <summary> ''' Texto en orden Descendente ''' </summary> TextoDesc ''' <summary> ''' DNI's sin tener en cuenta la letra Ascencente ''' </summary> DNIAsc ''' <summary> ''' DNI's sin tener en cuenta la letra Descendente ''' </summary> DNIDesc ''' <summary> ''' Fechas en orden Ascendente ''' </summary> FechaAsc ''' <summary> ''' Fechas en orden Descendente ''' </summary> FechaDesc ''' <summary> ''' Numeros en orden Ascendente ''' </summary> ''' <remarks></remarks> NumeroAsc ''' <summary> ''' Numeros en orden Descendente ''' </summary> NumeroDesc End Enum Private ordenar As metodo Private col As Integer ''' <summary> ''' Constructor ''' </summary> ''' <param name="columna">Entero que especifica la columna del Listview a ordenar</param> ''' <param name="datasort">Tipo de dato a ordenar y la forma</param> Public Sub New(ByVal columna As Integer, ByVal datasort As metodo) ordenar = datasort col = columna End Sub ''' <summary> ''' Comparador de varios tipos de datos ''' </summary> ''' <param name="x">Cualquier tipo de dato Soportado (Object)</param> ''' <param name="y">Cualquier tipo de dato Soportado (Object)</param> ''' <returns>Resultado de la comparacion</returns> Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare Select Case ordenar Case metodo.TextoAsc Return (String.Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)) Case metodo.TextoDesc Return (String.Compare(CType(y, ListViewItem).SubItems(col).Text, CType(x, ListViewItem).SubItems(col).Text)) Case metodo.DNIAsc ' Puede parecer complicao pero lo que hace es coger el nº del dni sin letra y lo compara Return (CType(x, ListViewItem).SubItems(col).Text.Substring(0, CType(CType(x, ListViewItem).SubItems(col).Text.Length - 1, Integer)) - CType(y, ListViewItem).SubItems(col).Text.Substring(0, CType(CType(y, ListViewItem).SubItems(col).Text.Length - 1, Integer))) Case metodo.DNIDesc Return (CType(y, ListViewItem).SubItems(col).Text.Substring(0, CType(CType(y, ListViewItem).SubItems(col).Text.Length - 1, Integer)) - CType(x, ListViewItem).SubItems(col).Text.Substring(0, CType(CType(x, ListViewItem).SubItems(col).Text.Length - 1, Integer))) Case metodo.NumeroAsc Return (CInt(CType(x, ListViewItem).SubItems(col).Text) - CInt(CType(y, ListViewItem).SubItems(col).Text)) Case metodo.NumeroDesc Return (CInt(CType(y, ListViewItem).SubItems(col).Text) - CInt(CType(x, ListViewItem).SubItems(col).Text)) Case metodo.FechaAsc Return (DateTime.Compare(DateTime.Parse(CDate(CType(x, ListViewItem).SubItems(col).Text)), DateTime.Parse(CDate(CType(y, ListViewItem).SubItems(col).Text)))) Case metodo.FechaDesc Return (DateTime.Compare(DateTime.Parse(CDate(CType(y, ListViewItem).SubItems(col).Text)), DateTime.Parse(CDate(CType(x, ListViewItem).SubItems(col).Text)))) End Select End Function ''' <summary> ''' Destructor ''' </summary> Protected Overrides Sub Finalize() ordenar = 0 col = 0 MyBase.Finalize() End Sub End Class
45
« en: Martes 1 de Abril de 2008, 00:38 »
Gracias por el consejo.
Salu2
46
« en: Martes 1 de Abril de 2008, 00:32 »
No entendi tu respuesta. Que depure mi codigo o el del alguno de esos programas ?
Si es que depure mi code, no entiendo como porque es un bucle con 3 lineas
Puedes ser un poco mas preciso ?
Gracias
47
« en: Lunes 31 de Marzo de 2008, 22:24 »
Bueno, aunque consegui obtener lo que deseaba ahora me pregunto como buscan el winhex o el OllyDbg por todo el espacio de direcciones del proceso.
Son muchas direcciones, como podria hacer una busqueda lo mismo de rapida ?
Solo se me ocurre usar unos cuantos threads y que cada uno se encargue de un rango fijo de direcciones.
Pueden darme alguna otra idea o consejo ?
Gracias
48
« en: Viernes 28 de Marzo de 2008, 18:52 »
Pos en el mismo bucle que le das la vuelta, ves si es un espacio y si no lo es lo añades a la cadena.
No tiene mas chicha el asunto
Salu2
49
« en: Viernes 28 de Marzo de 2008, 18:50 »
Gracias, ya consegui la seccion.
Salu2
50
« en: Viernes 28 de Marzo de 2008, 17:52 »
Un palindromo es esa cadena que leida en sentido normal y al reves es lo mismo.
ejemplo dabale arroz a la zorra el abad.
Entonces lo que tienes que hacer es eliminar los espacios de la cadena y darle la vuelta.
Si la cadena original es igual que a la que esta al reves es palindromo.
|
|
|