|
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 - Amilius
Páginas: 1 ... 17 18 [19] 20 21 ... 27
451
« en: Viernes 22 de Octubre de 2004, 04:10 »
Pues se aprende programando. Es importante que pienses como el compilador: la máquina hará todo lo que le ordenes, sin "adivinar" ni "suponer" ABSOLUTAMENTE nada. El C da grandes libertades al programador y es lo más cercano a la máquina sin bajar a nivel de ensamblador. Aunque los compiladores actualmente tienen buenos optimizadores de código, realizan advertencias de todo tipo, facilitan la visualización del código, etc. NO SON varitas mágicas. Su nivel de análisis semántico es muy reducido y casi nulo: NO ENTIENDEN LO QUE QUIERES HACER y se limitarán a producir código máquina del código C o C++ que escribiste, así sea todo lo contrario de lo que querías escribir. Recuerda no hacer barbaridades si quieres codigo eficiente, por muy bueno que sea el optimizador si el codigo C o C++ de entrada no es bueno, pues los esfuerzos del optimizador serán en vano. Asi que agarra un Open Source y si entiendes el código ve modificando el programa para ver los resultados que obtienes, claro se supone que los resultados esperados deberán ser iguales a los obtenidos.
452
« en: Jueves 21 de Octubre de 2004, 23:33 »
Ve el ejemplo de ordenación con hilos. Verás lo sencillo que es siempre y cuando no se te ocurra "interactuar" mucho con los componentes visuales o utilizar algunas bibliotecas cuyos procedimiento y funciones no "corren en hilo" (detienen la ejecución del resto de los hilos hasta completar su operación).
453
« en: Jueves 21 de Octubre de 2004, 23:22 »
1.- Necesitas lograr enviar/recibir datos byte a byte por serial, paralelo, etc, el cable que tengas a mano. 2.- Verificar que lo que te llega no es basura con algún método de control de suma, paridad o lo que veas conveniente. 3.- Mantener un buffer de recepción/envio 4.- Guardar el buffer cuando se llene a un archivo o llenarlo leyendo de un archivo para luego enviarlo. Para la comunicación (1 y 2): Busca algún componente que trabaje con puertos seriales para aprender como hacerlo y luego en base al componente crear tu propio programa para lo que quieras hacer: http://www.torry.net/El conocido sourceforge... tal vez encuentres algún proyecto que te sirva aqui: (Quien sabe... tal vez encuentres uno para manejar serial, paralelo, usb, etc.) www.sourceforge.net
454
« en: Jueves 21 de Octubre de 2004, 23:16 »
Bastaría con una variable declarada fuera del método que lleve la cuenta de las veces que presionaste el boton. Para saber cual cadena desplegar.
455
« en: Jueves 21 de Octubre de 2004, 23:10 »
El problema es que en windows las "interrupciones" no son como en DOS. Las cosas se complican por que tienes corriendo varios programas a la vez, problemas de seguridad, etc. Generalmente el sistema operativo detectará los eventos generados por el hardware y enviará un "mensaje" a todas las aplicaciones que corresponda. Por lo que estas cosas en windows se hacen respondiendo a mensajes. En el siguiente ejemplo el procedimiento CMExit sólo será llamado si windows envia el mensaje "CM_MOUSELEAVE" dicho mensaje será enviado si el cursor del ratón abandona el componente notificado. type TCMExit = TWMNoParams; ... procedure CMExit(var Message: TCMExit); message CM_MOUSELEAVE; ... procedure CMExit(var Message: TCMExit); begin .... end;
Creo que buscar un OPEN SOURCE para manejo de puerto paralelo en windows te resolvería bastantes dudas y te permitiría modificarlo para suplir tus requerimientos.
456
« en: Jueves 21 de Octubre de 2004, 22:50 »
El memo no está hecho para trabajar con columnas. Pero puedes usar un truco: Utiliza una fuente de texto de ancho fijo para todos los caracteres. ( modificando las propiedades del objeto memo.) SI SOLO MOSTRARAS TEXTO Y NO SERA EDITADO: Intenta buscar algún componente que haga el trabajo por ti o haz el tuyo propio: Usa el TPaintBox y un Tbitmap y dibuja tu mismo el texto. En el Tbitmap dibujas el texto y luego en el onpaint del Tpaintbox pintas el Tbitmap. Esto evita parpadeos, además que es más rápido que copie el Tbitmap a tener que redibujar todo el texto si por ejemplo se mueve la ventana. Es decir ya tendrías la imagen preparada. Puedes tener toda la imagen preparada o preparar cada vez el pedazo del area de texto que vea el usuario. No te preocupes si gastas memoria para la imagen (el Tbitmap) para poner el texto de todas formas así trabaja windows. El tpaintbox no reserva memoria para la imagen por lo que siempre hay que redibujarlo y ahi entra el Tbitmap que es el lugar donde guardamos la imagen. ¿Complicado? La primera vez que implementes algo asi luego verás que es sencillo, además que podrás ponerle uno que otro gráfico a tu texto.
457
« en: Jueves 21 de Octubre de 2004, 22:34 »
Me temo que usan las CONSTANTES de colores basicos... El típico cyan magenta amarillo azul rojo, verde, etc.... no creo que sea editable La verdad que el conjunto de colores que tiene no va para tener el fondo oscuro sino uno claro. P.D. Para los que no usaron DOS: En vga estándar existía el naranja en lugar del amarillo oscuro y todos los colores (16 básicos del antiguo modo sólo texto) eran más claros, así que era mejor tener fondo oscuro.
458
« en: Jueves 21 de Octubre de 2004, 22:26 »
Como en Access toda la bd está empaquetada en un solo archivo.... pues copia el archivo y punto final... var FromF, ToF: file; NumRead, NumWritten: Integer; Buf: array[1..2048] of Char; begin if OpenDialog1.Execute then { Display Open dialog box } begin AssignFile(FromF, OpenDialog1.FileName); Reset(FromF, 1); { Record size = 1 } if SaveDialog1.Execute then { Display Save dialog box} begin AssignFile(ToF, SaveDialog1.FileName); { Open output file } Rewrite(ToF, 1); { Record size = 1 } Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF)) + ' bytes...'); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten <> NumRead); CloseFile(FromF); CloseFile(ToF); end; end; end;
459
« en: Jueves 21 de Octubre de 2004, 22:18 »
Primero busca si la biblioteca de clases que utilizas tiene algún método para exportar la base de datos a texto, sino... Supongo que no tienes problemas para acceder a los datos de la tabla, por tupla y luego por cada campo. Usa las funciones de archivos de texto que son las mismas de pascal con los nombres algo más específicos para guardar un archivo .txt No es cosa del otro mundo y es rápido y simple... podrías preparar cada linea de texto a guardar a partir de los campos de un tupla. Recorriendo la tabla de principio a fin. Usar archivos de texto u cadenas en delphi es extremadamente simple. Y mejor si te consigues una biblioteca de funciones extra para cadenas para hacer todo tipo de operaciones con las cadenas como en PHP. var F: TextFile; S: string; begin if OpenDialog1.Execute then { Display Open dialog box } begin AssignFile(F, OpenDialog1.FileName); { File selected in dialog box } Reset(F); Readln(F, S); { Read the first line out of the file } Edit1.Text := S; { Put string in a TEdit control } Writen(F, Edit2.Text); { Read the first line out of the file } CloseFile(F); end; end;
460
« en: Jueves 21 de Octubre de 2004, 21:56 »
MSCONFIG (XP) esta en: C:\WINDOWS\PCHealth\HelpCtr\Binaries --- Para buscar rápidamente un archivo específico... aún más rápido que con f3 (XP) basta usar los viejos comandos de dos: Ejecutar Command para el modo consola. cd \ dir /a /s /w /p nombre.ext /a todos /s subdirs. /w mostrar en horizontal /p hacer pausas Les aseguro que es más rápido. --- Para XP: Las "Herramientas Administrativas" del panel de control son bastante más completas. Administración de equipos: Ver los usuarios creados, ver carpetas compartidas, servicios, El visor de sucesos. Para su máquina de casa que se conecta a internet y no comparte ni impresora ni carpetas: Vayan a servicios: busquen servidor y deshabilitenlo. Así anularán la capacidad de una buena parte de los bichos malosos de internet. Claro que no podrán compartir prácticamente nada lo que es muy adecuado si tu máquina no está conectada a una LAN y no quieres compartirla en internet. Luego en el visor de sucesos podrás ver los intentos de invasión de los bichos frustrados por que el servicio servidor está deshabilitado.
461
« en: Jueves 21 de Octubre de 2004, 21:41 »
Defininiendo el procedimiento: interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus; type TForm1 = class(TForm) .... ... private { Private declarations } procedure CambiarEstadoBotones(NuevoEstado:boolean); ...
Implementación de un procedimiento que cambia el estado de TODOS los botones de la clase Tbutton. procedure TForm1.CambiarEstadoBotones(nuevoEstado:boolean); var i:integer; begin for i:=0 to componentCount-1 do if Components[i] is TButton then with TButton(Components[i]) do enabled:=nuevoEstado; end;
462
« en: Jueves 21 de Octubre de 2004, 18:00 »
La verdad es que el C es mucho mas ordenado, y la sintaxis es mas facil de seguir, ademas que es mas amistoso que Pascal (ese sentimiento me dio cuando me familiarize con el)... como se le dice... user friendly
463
« en: Jueves 21 de Octubre de 2004, 00:09 »
La verdad que no creia que se pudieran hacer este tipo de juegos en flash y que además sean de tamaño razonable. (El juego ocupa casi 2MB que los valen bit a bit.) Seguramente alguien ya lo vio por que ya hace 2 años que lo terminaron, pero para los que no lo vieron ahi va: [Play this game] http://www.newgrounds.com/portal/view.php?id=73449
464
« en: Martes 19 de Octubre de 2004, 16:14 »
Este mensaje llega tarde... pero para generalizar lo de "herencia de movimientos":
Si alguna vez usaron un editor 3D para animación seguramente vieron la propiedad "herencia" "link" o algo así para que el movimiento de un objeto afecte a otros.
Esto se puede hacer con una lista para cada objeto, que contiene referencias a los objetos que están enlazados al objeto padre. Con esta estructura es posible lanzar un algoritmo recursivo que desplaze o gire todos los objetos dependientes.
465
« en: Viernes 15 de Octubre de 2004, 18:37 »
Juro que nunca en mi vida vi esa versión de asm.
466
« en: Miércoles 13 de Octubre de 2004, 16:04 »
Muy bien... hmmm... espero no importunar pero falta la "ñ". Varía pero para DOS (ASCII) es: 164 ñ 165 Ñ Claro que también está la otra solución basada en "memoria" y no en "cpu": printf("abcdefgh...
467
« en: Miércoles 13 de Octubre de 2004, 14:54 »
Es que una cosa es PROGRAMAR un "ej. un simulador da redes neuronales artificiales" y otra cosa es ENTRENAR una determinada "ej. una red neuronal artificial". Lo digo por que existe una diferencia fundamental: AL programar uno especifica cada paso, instrucción, orden, operación etc que seguirá la máquina. Es como armar un Árbol navideño de plástico. Al entrenar cuidas de hacer saber a la entidad que estás entrenando cuando está equivocándose y cuando lo está haciendo bien, de forma que eventualmente vaya perfeccionándose. Es como cultivar un árbol ornamental, podarlo y colocar puntos de apoyo para que el árbol vaya tomando la forma que quieres. P.D. "Amaestrar" implica una relación amo-esclavo que no me gusta para nada.
468
« en: Martes 12 de Octubre de 2004, 22:55 »
Esta ves si que se pasaron... Con sólo abrir una página web maliciosa o ver un email con un jpeg "preparado" pueden ejecutar código en tu máquina XP. Más información en: (Incluye una enorme lista de parches que habrá que instalar...) http://www.securiteam.com/windowsntfocus/5VP0H1FE0W.html ---------------- OTRA FALLA DE SEGURIDAD: Encontré esta página cuando buscaba parches para otra vulnerabilidad con los .gif "bomba". Al parecer el XP al tratar de obtener información del encabezado abre el .gif basta solo señalar el archivo, ni es necesario abrirlo y boom: ERROR EN EL EXPLORER, se cierra el explorer y espero que eso sea todo lo que pasa.
469
« en: Martes 12 de Octubre de 2004, 15:40 »
Creo que el problema es este: (ushort) public Int32 ConvertirA16Bit(Int32 color) { return (Int32) ( ((color >> 8) & 0xF800) | ((color >> 5) & 0x07E0) | ((color >> 3) & 0x001F) ); }
Una cosa más... esto depende de la forma de especificar el color en 24 o 32 bits... pero ¿No se intercambian el color rojo por el azul? Editado: Faltaba la última máscara.
470
« en: Lunes 11 de Octubre de 2004, 16:51 »
471
« en: Lunes 11 de Octubre de 2004, 16:11 »
"Entrenar" diría que es una mejor palabra que "programar" para este caso. Por ejemplo para preparar gimnastas para las olimpiadas: Su entrenamiento debe comenzar a temprana edad, existe un tiempo adecuado. Pasado este tiempo no digo que no sea imposible pero sin duda será necesario muchísima mayor cantidad de trabajo y esfuerzo comparándo al caso anterior y los resultados no serán tan buenos.
472
« en: Lunes 11 de Octubre de 2004, 06:21 »
Hmmm... - Puede faltarte una "\" al final. - Puede que los nombres de carpetas tengan que estar 8 caracteres con la "~". ... Tu borland C++ es para DOS o para windows?
473
« en: Lunes 11 de Octubre de 2004, 06:11 »
Saludos al foro!!
Y que tal provando con el color Magenta directamente como su valor entero y no como triada RGB:
$3E0F (15 bits.)
$F81F (16 bits.)
$FF00FF (24 bits)
$00FF00FF (32 bits)
El color negro siempre funciona por que obviamente el R:0,G:0,B:0 que es el negro siempre es 0 en 15,16,24,32 bits.
474
« en: Viernes 8 de Octubre de 2004, 17:58 »
Buen trabajo!! Aunque ocupa un buen espacio, 6 megas comprimido... Tengo algunas preguntas... - Por que un instalador?... ... se ve más "comercial" pero... - La musica es .MP3? (supongo que si) - Que tal la IA del juego? Lo que me gusta: -La introducción... de documental histórico o algo parecido. -Los menus son bastante animados. -Las opciones de juego para evitar la parte morosa de los ataques. -Tiene varias opciones para configurar el juego. Lo que no me gusta: - Va en modo pantalla completa, el tipo de juego es adecuado para jugarse en ventana normal, mientras navegas por ejemplo. - Pesa mucho... 6 megas... creo que se puede reducir algo el peso del juego. - Los colores en los menús de opciones y manual de juego estan algo carnavalescos (usas todos los colores principales rojo, verde, azul, amarillo, magenta), lo que no va con el juego de guerra y no es recomendable poner textos en colores tan fuertes. - Esto es muy personal: El juego viene como un ejecutable de 6 megas con instalador... como no es comercial podría ser distribuido como un zip con los dos archivos para bajarlo y jugarlo directamente. Un detalle: En el mapa groenlandia se ve demasiado grande siendo que es mucho más chico que australia. Con el photoshop se puede deformar la imagen para corregir esto.
475
« en: Viernes 8 de Octubre de 2004, 16:38 »
De esa forma es muy lento (pixel por pixel). Lo mejor es enviar toda la imagen lista a la memoria de video que refresca la pantalla o por lo menos una buena parte de la imagen. Lo siguiente es una vista a "vuelo de pájaro" de como hacerlo con el GDI pero ahí va: Para realizar esto de forma rápida puedes valerte del DirectX (con el lock/unlock) o del GDI de windows mediante el BitBlt. (Es decir que lo no haces "personalmente", sino mediante una biblioteca de funciones que al final usará los drivers del fabricante de la tarjeta de video para asegurarte velocidad en la transferencia de memoria.) El BitBlt permite copiar la imagen de un "HDC" a otro realizando conversión de profundidad de color, poniendo tu superficie de 15 bits en memoria a otra de 8,15,16,24 o 32 bits. HDC : handle of device context, un puntero a una estructura que define un conjunto de objetos gráficos del GDI. BOOL BitBlt( HDC hdcDest, // handle of destination device context int nXDest, // x-coordinate of destination rectangle's upper-left corner int nYDest, // x-coordinate of destination rectangle's upper-left corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle of source device context int nXSrc, // x-coordinate of source rectangle's upper-left corner int nYSrc, // y-coordinate of source rectangle's upper-left corner DWORD dwRop // raster operation code );
En Delphi existe un objeto llamado TBitmap que encapsula el GDI de windows, haciendo las cosas más fáciles (recuperar, escribir archivos .BMP, acceso a la misma imagen para edición, etc). Así que en la versión de compilador C++ que estas usando existirá algún objeto que encapsule el GDI. Utilizando los objetos que encapsulan el GDI podrás obtener el HDC del bitmap que quieres poner en pantalla utilizando el bitblt o también acceder al área de memoria de la imagen que es mucho mejor que sea un DIB "Device Independet Bitmap" para como su nombre dice evitar que el bitmap sea dependiente de la profundidad de color de la resolución actual de la pantalla.
Páginas: 1 ... 17 18 [19] 20 21 ... 27
|
|
|