|
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 - patitofeo
51
« en: Lunes 5 de Diciembre de 2005, 19:03 »
Todos los compiladores de C admiten sentencias en ensamblador (o eso creo) Los compiladores de C normalmente no incluyen la posibilidad de añadir codigo de ASM entre las lineas de codigo de C. De hecho, el visual Studio de Microsoft no es un compilador de C, sino de C++ (incluso algunos diríamos que nisiquiera de C++). El Ansi C no contempla esta posibilidad. Lo que tendrias que hacer es ensamblar por separado tu codigo en ASM para conseguir el fichero Objeto. (*.o ó *.obj) y despues importar las funciones que hayas creado desde el código C. Finalmente deberás lincar todos los objetos (tanto los de c como los de Asm) para crear tu ejecutable. No sé si es por esto por lo que preguntabas, pero espero haberte servido de ayuda. Saludos
52
« en: Martes 29 de Noviembre de 2005, 19:37 »
Existen millones de algoritmos:
Burbuja, short, fast short...
mira en google
saludos
53
« en: Martes 29 de Noviembre de 2005, 19:25 »
Finalmente decidi utilizar tablas de tipo XML De todas formas si alguien conoce la forma de trabajar con el otro tipo de ficheros.... Saludos a todos
54
« en: Martes 29 de Noviembre de 2005, 09:52 »
No encuentro la manera de cargar un .xls en un objeto SpreadSheet del Office Web Component. Si alguien ha trabajado alguna vez con este objeto y me pudiese hechar un cable. yo no encuentro otra solución que cargar el fichero primero como un objeto diferente (no como un control) e ir dando valores a las celdas una a una. Sin embargo se me ocurre que tiene que existir una forma mas facil. También podria ayudarme el poder guardar el contenido del SpreadSheet en formato .csv ya que este formato si que puede ser cargado desde Office Web Component. puedo guardar en formato .xml y abrir en formato .csv pero no se abrir y guardar en el mismo formato. Alguien tiene alguna idea? Saludos y gracias por la ayuda
55
« en: Lunes 21 de Noviembre de 2005, 14:06 »
No se para el tipo moneda pero imagino que con un Single convertido a String valga. Para el tipo fecha es de fijo que NO puedes trabajar directamente con el tipo Date. Necesitas cambiar el formato. Debes pasar un String en formato "#mm/dd/yy#" Debes poner las almuadillas antes y despues. Haciendo esta conversion te valdria Dim s as String s= "#" & Format(Date, "mm/dd/yy") & "#"
Prueba así y ya nos comentas Un saludo
56
« en: Lunes 21 de Noviembre de 2005, 13:59 »
¿Y que quieres? ¿Que te lo hagan? YO no entiendo la pregunta... Un saludo
57
« en: Viernes 18 de Noviembre de 2005, 17:28 »
Solo una cuestion. Ya se que Visual Basic se lo traga todo... pero... declaras "h" como entero y le asignas valores de coma flotante. "h" deberia estar declarado como "Single" o como "Double" Aunque el programa funcione, no está bien del todo. Yo tendría más cuidado con este tipo de cosas ya que no creo que sea bueno acostumbrarse a estos bugs ya que no todos los lenguajes son tan tolerantes como el visual basic. Saludos
58
« en: Martes 15 de Noviembre de 2005, 19:29 »
No conocia esa caracteristica de Excel.
¿Las tablas de Excel pueden verse como Bases de Datos y tratarlas con ODBC?
que curioso, ¿Tienes algo de documentacion sobre esto? ¿alguna pagina o algo asi? ¿la ayuda de Excel?
Creo q mirare un poco
Saludos
59
« en: Lunes 14 de Noviembre de 2005, 18:26 »
Bueno, es posible que el problema no esté en el disco duro. Yo tube un problema parecido con una placa base. A mi no me ponia esa pantalla azul hablando de "energia" pero me daba otra hablando de posiciones de memoria. El problema era la placa que inexplicablemente no soportaba ningun SO de microsoft posterior al milenium. ¿Puedes probar tu disco duro en otro pc e intentar reinstalar todo? No recuerdo el modelo de la placa q me dio el fallo pero si recuerdo q era un modelo del año 2000. Saludos
60
« en: Lunes 14 de Noviembre de 2005, 18:17 »
Qué no se supone que estábamos hablando de forma de escribir ("codificar") en C, y no de como mostrar datos en pantalla?? ... pero bueno., estoy de acuerdo con mi buen ETERNAL IDOL pues gotoxy no es estandar (pero que bien ayuda en windows, jajaja )!! Cual windows? sera en esa ventana de DOS emulado. Pues la verdad que hacen perder tiempo inutilmente enseñando funciones no estandar para compiladores a 16bits.
P.D. y no se olviden del siempre util:
a=b?c:d;
P.D.2. Si quieres tener todos tus valores iniciados a 0 si trabajas en windows existe una funcion del sistema operativo, un malloc especial no recuerdo exactamente el nombre pero solo cambia una o dos letras. Reserva un bloque de memoria e inicializa a 0 todo el bloque (que es mas rapido que hacerlo de otras formas). Es muy recomendable hacer este tipo de reserva de memoria por que atenua en gran medida los desastres de un error de administracion de memoria, por que generalmente al intentar escribir usando un puntero no inicializado genera una excepcion por intentar escribir en una zona de memoria no permitida, que viene a ser el 0 con el que inicializamos. Si intentamos acceder a una estructura de datos este acceso sera a otras posiciones pero generalmente suficientemente "chicas" (20,30,150,) para ser salvados por la excepcion de intento de escritura o lectura de una zona de memoria que no podemos utilizar. Yo no creo que sea mas rápido que hacerlo con un ciclo FOR (o cualquier otro ciclo). Apuesto a q esta función utiliza un ciclo para hacer la inicialización. Seguramente sea más rapido a la hora de escribir el programa, lo cual no significa que el codigo sea mas eficiente. Además siendo un funcion de windos SEGURO que es más lenta. Menos código no significa más rápido. Por otro lado, como ya dijeron, la forma en que el codigo C se convierte en maquina depende del compilador. Para estar seguro de que el codigo que construyes es eficiente, empieza por leer el manual del compilador. saludos
61
« en: Lunes 14 de Noviembre de 2005, 17:56 »
hola Trabajo en una aplicacion formada por un formulario MDI que contiene una serie de hijos. Los formularios hijo son diferentes en todos los casos, y cada uno tiene un menu con las opciones especificas. Mi problema es que algunos de los items de los menus son comunes (editar, ver...), es decir son opciones generales que en principio pertenecen al MDI padre. Quisiera que los hijos heredaran estos items sin necesidad de repetir la edicion y sin necesidad de tener que añadir las funciones de atencion en cada uno de ellos. No se si es posible pero ahorraria un monton de trabajo. Es un coñazo tener que editar el mismo menu y las mismas rutinas de atencion para cada formulario de la aplicacion. ¿Alguna sugerencia? Saludos
62
« en: Lunes 14 de Noviembre de 2005, 17:33 »
¿No estarás confundiendo Excel con Access?
63
« en: Viernes 28 de Octubre de 2005, 18:36 »
Bueno, gracias por la aclaracion y perdon por haber creado confusion. De todos modos, ¿Cuales son las versiones de windows que no incorporan el Run Time Library? Yo ejecuto sin problemas programas basicos creados en visual basic sobre windows 98 SE sin necesidad de incluir ninguna DLL que no traiga ya el sistema operativo. Los programas los compilo en XP, 2000 o el propio 98 y ya digo que funciona. ¿Son versiones anteriores o posteriores? En cuanto a programar sobre la Api en asembler... Yo nunca dije que no se pudiese. Ya se que se puede y que no es dificil. Simplemente es tedioso. El ejemplo esta muy bien, pero las funciones de Win32 suelen tener mas de un paramentro y no siempre es tan facil como un entero. Realmente hace falta mucho codigo (siempre que lo compares con cualquier lenguaje de alto nivel) para hacer una llamada a una funcion que utilice 12 o 13 parametros, y aun mucho mas codigo para mover la pila y las estructuras propias del entorno grafico. Y claro, si pretendes usar algun control, la inicializacion ya es un buen tocho. Es muy facil pero yo no lo haria.... Muchas gracias por la aclaracion sobre la Run Time Library. Saludos y perdon por mi error
64
« en: Viernes 28 de Octubre de 2005, 14:44 »
Lo siento, no he entendido muy bien ni la pregunta ni las respuestas: Para utilizar el entorno gráfico de windows (es decir, las ventanitas), necesitas llamar a la API (Win32, SDK) que en si mismas son librerias. Por lo tanto es imposible programar aplicaciones de este tipo sin usar librerias. Si lo que pretendes es utilizar solamente las librerias que incluye windows en su instalacion inicial, entonces cualquier compilador y lenguaje te lo permite. Es cierto que visual basic hace llamadas a librerias dinamicas pero como ya he dicho, es necesario. Una aplicacion creada con visual basic que solamente incluya los controles mas basicos puede ser ejecutada desde cualquier windows sin necesidad de añadir ninguna libreria ya que windows ya dispone de ellas en la carpeta System. Prueba a crear un programa en visual basic del tipo hola mundo con un TextBox y un Command simplemente y crea el ejecutable. Veras como ese .exe puedes ejecutarlo en cualquier windows. Por otro lado, el uso de librerias es la base de la programacion modulada y estruturada por lo que no creo que deba evitarse...aunque seguro que tendrás algún motivo. Por supuesto esto es solo mi opinion. Espero que me corrijan si me equivoco, que es posible ¿ok? Y sin animo de molestarles ¿Han intentado alguna vez construir una aplicacion en ensamblador para una aplicacion win32? Que locos!!! yo no lo habria incluido en la lista de posibles lenguajes. Solo una llamada a una funcion de la api debe llevar horas de escribir código... jejeje
65
« en: Miércoles 19 de Octubre de 2005, 12:52 »
¿Necesitas una imagen transparente o una imagen con fondo transparente?
Para imagenes transparentes--------> TRUQUITO
Create un picturebox e inserta una imagen, determina un color transparente y aplica la mascara.
La imagen que insertes debe tener un pixel del color de la mascara intercalado entre cada uno de la imagen. No se si me entiendes.
Deberias retocar la imagen de modo que un pixel si y uno no (como en un ajedrez) sea del color de la mascara. Por supuesto pierdes bastante calidad pero es una forma facil de conseguir este efecto.
Espero que me hayan entendido.
Saludos y ya me contaran
66
« en: Viernes 14 de Octubre de 2005, 19:40 »
Bueno, es facil Windows 98 no puede utilizar el sistema NTFS pero CREO (estoy seguro para windows 2000 pero nunca lo intente en XP) que windows XP puede instalarse sobre una particion FAT32. De todos modos, yo lo que te sugiero es que mantengas tu XP en NTFS y crees una terdera particion en FAT32 para datos. De esta forma el windows XP irá de lujo (ya que fue diseñado para NTFS y sobre FAT32 [hablo desde mi esperiencia con W2000 y suponiendo que XP dé la misma posibilidad] ira mas pesado y lento) y windows 98 podra acceder a los datos necesarios. Yo siempre recomiendo mantener una particion aparte para almacenar los datos. ¿Por qué? Pues porque: -Una particion menor para programas mejora el tiempo de acceso a disco -La parte de programas estará siempre mucho menos fragmentada, no necesitaras defragmentar amenudo y el PC ira mas suelto. -En caso de virus o problemas con el sistema operativo resultara mucho mas facil reinstalar el sistema y recuperar los datos sin que se pierdan junto con el SO. -Esta particion puede ser accedida por varios SO distintos. Como en tu caso. Pero imaginate que ademas tienes instadado un linux. Podrias utilizar una particion FAT o FAT32 y que fuera comun para linux, windows... -Otras cosas Ya me diras que decides hacer y como te va. Para cualquier cosa.... Un saludo
67
« en: Viernes 14 de Octubre de 2005, 19:27 »
Hola Por fin encontre el control y le he estado dando unas cuantas vueltas. La verdad es que no esta mal y en la mayoria de los casos me sirve pero no he conseguido que me rellene los espacios para garantizar un numero fijo de digitos o caracteres. En realidad si que lo consegui... con la propiedad format, pero funciona exactamente igual que la funcion que decia en el primer post... no me sirve. Format coloca comas donde quiero puntos y viceversa ya que se sirve de la configuracion de windows. Esto es muy poco portable ya que yo necesito puntos siempre. A pesar de que no ha resuelto todos mis problemas si me ahorrara mucho trabajo Gracias Nogard. De todas formas si conoceis algun otro control, funcion... mas completo seria genial. Ah! también es posible que no haya dado con todas las posibilidades del control ya que no encontre ningun tipo de ayuda al respecto. Gracias de nuevo y saludos - yo sigo buscando tb. si encuentro algo mejor, os diré
68
« en: Viernes 14 de Octubre de 2005, 10:04 »
No entiendo muy bien que es lo que quieres hacer exactamente pero...debes saber que windows 98 no puede trabajar sobre sistemas de ficheros del tipo NTFS. Solo laas versiones de windows basadas en NT pueden (windows Nt, Windows 2000, Windows Xp...)
Si no quieres mantener el sistema operativo simplemente tienes que formatear la particion con este tipo de sistema de fichero desde otro sistema operativo.
Puedes utilizar tambien algun programa con fdisk o el mitico partition magic.
Si pretendes que windows 98 funcione sobre NTFS no te esfuerces. Es imposible
Saludos
69
« en: Viernes 14 de Octubre de 2005, 09:57 »
La pregunta es si alguien conoce algun control o alguna forma predeterminada para aplicar una mascara a un cuadro de texto de modo que el usuario solo pueda introducir datos especificos (digitos, decimales en posiciones concretas...) Hasta ahora hago esto con codigo y apoyandome en los eventos change y keypress del control test box, pero es realmente pesado cuando tienes que hacer formularios para bases de datos. Me preguntaba si conocian alguna funcion ('Format()' no me vale ya que depende de la configuracion de windows para los caracteres de separacion de decimales y millares (la coma y el punto)) o control que directamente me permita -Limitar el tipo de dato que se introduce (digitos, abecedario ascii imprimible...) -establecer posiciones fijas para los decimales en datos numericos o para los separadores de fechas -garantizar un numero fijo de digitos. Es decir que rellene con ceros a la izquierda en la parte entera y a la derecha en la parte decimal. por ejemplo: en el ultimo campo necesitaba una mascara del tipo ##.## (o algo parecido) que me garantice digitos del tipo: 12.30 05.12 00.00 18.00 02.50 introduzca el usuario los datos que intruduzca. Algo como las mascaras que se pueden aplicar a los formularios Access. Siento haberme estendido tanto. Espero que haya quedado claro. Si conoceis algo que pudiese ahorrarme trabajo... Gracias por adelantado Saludos
70
« en: Jueves 29 de Septiembre de 2005, 19:10 »
Bueno, y de paso, un cafe con leche, el periodico y las zapatillas... ¿cual es la pregunta? Tienes una jeta barbara. Francamente espero que nadie te haga la tarea. Saludos
71
« en: Martes 20 de Septiembre de 2005, 14:20 »
Como no seas un poco mas claro... Pon una pequeña descripcion de como es tu programa y en que parte del codigo tienes exactamente el problema. No hace falta que escribas todo el codigo (que seguramente nadie tenga tiempo para leerse) pero los pseudocodigos y las descripciones de procedimientos ayudan mucho. Yo personalmente, sino se lo que haces no se que es lo que haces mal y me imagino que al resto le pase lo mismo. Un saludo y espero poderte ser de ayuda
72
« en: Martes 20 de Septiembre de 2005, 14:15 »
Bueno, no se si me equivoco en algo pero... ¿esto que es? no tiene sentido, es un bucle que no hace nada y que te dejará el programa colgado si el fichero está vacio. Según veo yo el codigo, solo comprobaras el primer registro, ya que no tienes realmente creado un bucle. Cuando encuentres un caracter de separacion '|' o '\n' compararas el nombre leido. do { read(fd,&x.nombre[i],1); if(x.nombre[i] !='|'&&x.nombre[i]!='\n'&&!eof (fd)) i++; else break; } while (x.nombre[i-1]!='|'&&x.nombre[i-1]!='\n'&&!eof (fd)); } if(strcmp(x.nombre,x.buscar)==0)
si acertaste te mostrara el nombre, sino te dira q no lo encontro. Creo q lo que buscas es algo mas parecido a esto Do{ [bucle q compara caracter a caracter buscando '|' o '\n'] [comparacion de nombres] {si aciertas [imprimes el nombre y escribes en el registro] }While (se llegue al final del archivo)
Espero que lo entiendas. Mira bien como están construidos los bucles en tu codigo que no están bien. Si te queda alguna duda, ya sabes... un saludo
73
« en: Martes 20 de Septiembre de 2005, 11:18 »
¿Alguien sabe si se puede asignar en Visual los valores especiales #INF, #QNaN, #SNaN e #IND en variables de coma flotante (Single y Double)? En la ventana de inspecciones aparecen estos valores cuando inspeccionamos alguna variable q los tiene, pero no conozco la forma de asignarlos o compararlos desde el código. Si pudierais hecharme una mano. Este tema me esta volviendo un poco loco. Muchas gracias Un saludo
74
« en: Lunes 19 de Septiembre de 2005, 12:53 »
Haber, lo que intento hacer quizá no tenga mucho sentido, pero es un capricho que tengo. El caso es que llevo ya mucho rato con ello y no veo la solucion Me explico: basicamente consiste en poder comparar una variable del tipo Single a nivel de bit. Es decir, yo se que un Single son cuatro bytes que representan un número en notación exponente mas mantisa. Por ejemplo: El valor binario (Tal como se almacena en memoria) de un Single con valor -1 es &HFFFFFFFF. Pues yo lo que quisiera es conseguir algo como esto If VarSingle = &HFFFFFFFF Then .... Que en este caso si funciona ya q el compilador interpreta &HFFFFFFFF como un long que tambien tiene valor -1. Sin embargo no funciona para ningun otro. Direis: ¿Por qué este capricho? Pues es solo porque trabajo con un fichero binario en el que almaceno datos Single. Cuando un dato no es valido, en vez del Single almaceno en los cuatro bytes correspondientes una convinación de caracteres Ascii ("*", "#", "%"...). Cuando quiero comparar los datos para ver si son validos o no quisiera poder hacerlo por su codigo ascii. Es decir, usando un numero hexadecimal. Pero no se como hacerlo si el dato esta almacenado en una variable Single. Podría mirar cual es el valor correspondiente para estos datos en notacion de coma flotante pero son muchas posibilidades y sería trabajoso y un código feisimo. Yo he trabajado de esta forma en C utilizando punteros y TypeCast pero claro... En Visual no hay nada de eso. Si sabeis de algún truquillo os lo agradecería mucho Saludos
75
« en: Miércoles 14 de Septiembre de 2005, 11:43 »
Mas sencillo aun. La funcion Dir que viene ya definida en el modulo SystemObject te devuelve el nombre del fichero si este existe y un String vacio "" si no existe. base.mdb==> Base_050913.zip, si este fichero existe pasa a ser Base_050913_1.zip y así hasta que el fichero no exista. If Dir(ValDir) = "" Then El Fichero no Existe End If
Podeis buscarlo en la ayuda. Es realmente comodo Saludos
|
|
|