|
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 - Epa
226
« en: Martes 9 de Enero de 2007, 00:26 »
Buenas asi como veo que lo quieres usar seria mejor usar un enum .
un enum? pero el enum almacena constantes, o me equivoco? tengo una base de datos (binaria) de 20.000 registros aprox, cada registro tiene 32 campos booleanos entre otros. Asique me parecio algo logico perder un poco de velocidad a cambio de ahorrarme 28 bytes por registro Quisas estoy equivocado, si te parece asi te agradeceria q me lo digas, soy bastante nuevo en c/c++, y cosas como esta, entre tantas otras, en vb no existen Saludos
227
« en: Martes 9 de Enero de 2007, 00:07 »
Buenas. Ni idea cual es el problema Pero puedes probar forzando a la ventana a restaurarse con la api SetWindowPlacement. Si la ventana no carga los controles, o esta colgada, fijate si le pasas algun parametro q sea correcto, tambein prueba luego de abrirla, mostrar el ultimo error q se produjo. No es un gran aporte pero ojala te ayude, saludos.
228
« en: Martes 9 de Enero de 2007, 00:00 »
Buenas.
Si te fijas en la carpeta del acrobat, hay una carpeta q se llama ActiveX, alli hay 4 dlls Y una que se llama AcroPDF.dll, crea una preferencia a esa dll, es probable q ya este en la lista el nombre es "Adobe Acrobat 7.0 Type Library". En esa dll tienes todas (o varias) de las funciones del acrobat, en la clase AcroPDDoc hay una fuincion "Save" puede q con esa puedas guardarlo como texto. Si no funciona, hay muchas funciones para pasar paginas o cuadros a texto, puedes ir pasando y guardando.
Espero te sirva. Saludos
229
« en: Lunes 8 de Enero de 2007, 23:45 »
Buenas.
Para ordenar los arhivos, si usas el nombre, puedes comparar los nombres como numeros, o sea con los operadores >, <, >=, <= esto te devolvera cual es el mas "grande" o sea, de su codigo ascii, en caso de que empiezen por la misma letra, compara la segundo y asi. Sino puedes como mencionas ponerle un identificador y oredenarlo en base a eso.
En cuanto a la comparacion, q es lo que quieres comparar, atributos o datos. Si son datos ya depende de los datos que tengan. Y necesitas ver con que criterios compararlos. No es lo mismo comparar cualesquiera dos archivos.
230
« en: Viernes 5 de Enero de 2007, 00:29 »
Muchas gracias, justo lo q necesitaba ^^
Saludos
231
« en: Viernes 5 de Enero de 2007, 00:22 »
Muchas gracias.
Me ha sido de gran utilidad ese aporte.
Ya que es un problema numerico, pase el numero a un string de 1 byte y lo comparo como cadenas y fuinciona.
Gracias nuevamente. Saludos
232
« en: Jueves 4 de Enero de 2007, 20:12 »
Buenas. Tengo una pequeña duda de los mapas de bits. Si yo hago por ejemplo un mapa de bits con 8 variables bool de 1 bit cada una struct MapaBits { bool valor1:1; bool valor2:1; bool valor3:1; bool valor4:1; bool valor5:1; bool valor6:1; bool valor7:1; bool valor8:1; }
Existe alguna forma de asignarle el valor a los 8 bits a partir de una variable de 1 byte, como un char. Por ejemplo: char a = '/126' que en binario seria "01111110" y que los boolean tomen los balores de los bits del char... valor1 = false valor2 = true ... valor8 = false Bueno, esa es mi duda. Gracias de antemano Saludos
233
« en: Jueves 4 de Enero de 2007, 19:55 »
Buenas, aqui pongo un poco mejor, el codigo. Acabo de intentarlo con variables de tipo single, pero se pierde demasaiada precision, y necesito q sea todo exacto. Y Speed es una variable, no una constante, ya que puede variar dependiendo unas cosas. Timer Private Sub tmrMove_Timer() nx = posX[CODE] ny = posY With m_Input If actMov = D_NONE Then If (.Key(Key_RControl)) Or (.Key(Key_LControl)) Then If .Key(Key_Left) Then Look = Act_Look + L_WEST ElseIf .Key(Key_Right) Then Look = Act_Look + L_EAST ElseIf .Key(Key_Down) Then Look = Act_Look + L_SOUTH ElseIf .Key(Key_Up) Then Look = Act_Look + L_NORTH End If Else If .Key(Key_Left) Then Look = Act_Look + L_WEST actMov = D_WEST Call GetTile(D_WEST) ElseIf .Key(Key_Right) Then Look = Act_Look + L_EAST actMov = D_EAST Call GetTile(D_EAST) ElseIf .Key(Key_Down) Then actMov = D_SOUTH Look = Act_Look + L_SOUTH Call GetTile(D_SOUTH) ElseIf .Key(Key_Up) Then Look = Act_Look + L_NORTH actMov = D_NORTH Call GetTile(D_NORTH) End If End If Else lastMov = actMov Call GetTile(D_LAST) End If End With End Sub
El timer llama al procedimiento GetTile() q solo hace unas comprobaciones y llama a Walk() Estas son las variables Public actMov As Integer Public lastMov As Integer Public Speed As Double Public Movement As Double Public posX As Double Public posY As Double
Public Sub Walk(Direction As Integer) Select Case Direction Case D_NORTH posY = posY - Speed Movement = Movement + Speed Case D_SOUTH posY = posY + Speed Movement = Movement + Speed Case D_EAST posX = posX + Speed Movement = Movement + Speed Case D_WEST posX = posX - Speed Movement = Movement + Speed Case D_LAST Select Case lastMov Case D_NORTH If 1 = Int(Movement) Then Movement = 0 actMov = D_NONE lastMov = D_NONE Look = Act_Look + L_NORTH ElseIf Movement = 0.3 Then Look = Act_Look + L_NORTH + 1 posY = posY - Speed Movement = Movement + Speed ElseIf Movement = 0.3 Then Look = Act_Look + L_NORTH + 2 posY = posY - Speed Movement = Movement + Speed Else posY = posY - Speed Movement = Movement + Speed End If Case D_SOUTH If 1 = Int(Movement) Then Movement = 0 actMov = D_NONE lastMov = D_NONE Look = Act_Look + L_SOUTH ElseIf Movement = 0.3 Then Look = Act_Look + L_SOUTH + 1 posY = posY + Speed Movement = Movement + Speed ElseIf Movement = 0.6 Then Look = Act_Look + L_SOUTH + 2 posY = posY + Speed Movement = Movement + Speed Else posY = posY + Speed Movement = Movement + Speed End If Case D_EAST If 1 = Int(Movement) Then Movement = 0 actMov = D_NONE lastMov = D_NONE Look = Act_Look + L_EAST ElseIf Movement = 0.3 Then Look = Act_Look + L_EAST + 1 posX = posX + Speed Movement = Movement + Speed ElseIf Movement = 0.6 Then Look = Act_Look + L_EAST + 2 posX = posX + Speed Movement = Movement + Speed Else posX = posX + Speed Movement = Movement + Speed End If Case D_WEST If 1 = Int(Movement) Then Movement = 0 actMov = D_NONE lastMov = D_NONE Look = Act_Look + L_WEST ElseIf Movement = 0.3 Then Look = Act_Look + L_WEST + 1 posX = posX - Speed Movement = Movement + Speed ElseIf Movement = 0.6 Then Look = Act_Look + L_WEST + 2 posX = posX - Speed Movement = Movement + Speed Else posX = posX - Speed Movement = Movement + Speed End If End Select End Select Debug.Print Movement End Sub
Los 0.3 y 0.6 en realidad son variables q dependen de speed, pero no hace ninguna diferencia. Bueno, espero no se haga muy engorroso. Aver si alguien tiene idea q error estoy cometiendo. En cuanto al valor de Movement lo imprimo directamente en la ventana inmediato, como tipo double y aparece "1" asique no creo q sea ese el problema Bueno, eso es todo, gracias desde ya. Saludos
234
« en: Jueves 4 de Enero de 2007, 05:15 »
Buenas. Mi aporte Private Sub Check1_Click(Index As Integer) Static suma Dim a As Byte suma = 0 For a = 1 To 4 If Check1(a - 1).Value Then suma = suma + (10 * a) Next Print Str(suma) End Sub
Saludos
235
« en: Jueves 4 de Enero de 2007, 05:03 »
me parece q no lei bien el post. El archivo BMP tiene 4 partes: 1-cabecera de archivo 2-cabecera de bitmap 3-tabla de colores 4-bytes de imagen los datos de las cabeceras son: Bytes Informacion 0-1 Letras BM 2-5 Tamaño del archivo 6-9 Reservado 10-13 Datos de imagen 14-17 Tamaño de la cabezera de bitmar 18-21 Anchura 22-25 Altura 26-27 Numero de planos 28-29 Tamaño de cada punto 30-33 Compresion 34-37 Tamaño de la imagen 38-41 Resolucion horizontal 42-45 Resolucion Vertical 46-49 Tamaño de la tabla de colores 50-53 Contador de colores importantes
para recuperar del archivo necesita recuperar datos como ancho y alto, resolucion, compresion y otras cosas, para poder interpretar bien los datos de la imagen. a menos q ya lo sepas y recuperes directamente la imagen. cuando abres el archivo te mueves a la posicion 53 + tamaño de la tabla de colores y tendras los bytes de imagen. Saludos
236
« en: Jueves 4 de Enero de 2007, 04:30 »
Buenas . Sinceramente no se de donde es la funcion GetDIBits, aunque me paso algo similar. El problema es que mucha de estas funciones copian el el color directamente del monitor ( o sea de la memoria de imagen) por lo que si el pixel esta tapado o fuera del minitor no tomara bien el color. Las dos opciones q tienes (creo, quisas hay mas) son leer directamente del fichero o de la memoria, cosa q no creo q sea sencillo en VB, investiga quisas con punteros puedas /ya q los punteros de vb son bastante limitados).
Espero te sirva, saludos.
237
« en: Jueves 4 de Enero de 2007, 04:16 »
Buenas gentem tengo un problemita con una comparacion que me comio la cabeza varias horas y no logro entender cual es el problema. Desde un timer se llama a una funcion q contiene ese codigo varias veces. el problema es que Speed tiene el valor de 0.1, por lo que logicamente luego de 10 veces Movement tomara el valor de 1. sin embargo cuando toma ese valor pasa por alto el primer if hasta q Movement toma el valor de 1.1 If 1 = Int(Movement) Then Movement = 0 actMov = D_NONE lastMov = D_NONE Look = Act_Look + L_SOUTH Else posY = posY + Speed Movement = Movement + Speed End If
ya he intentado hacer un cast con Movement a una variable de tipo integer, crear una constante de valor 1 para la comparacion, de tipo entero y de tipo con coma flotante, compararlo de ambas maneras, pero no logro entender cual es el problema. agregue al final de la funcion Debug.Print Movement y este el es resultado: 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 1,1 0
Agradeceria enormemente cualquier ayuda. Desde ya muchas gracias, saludos
238
« en: Miércoles 8 de Noviembre de 2006, 01:26 »
Buenas. Me gustaria dejar mi opinion al respecto. Para empezar, por lo menos en argentina, lo que sera tecnico de pc, no tiene relacion alguna con la programacion. Las carreras que mas apuntan a eso, creo yo, con ingenieria en sistemas de iformacion (o ingenieria de software) o analista de sistemas. Busca en internet los programas de las carreras y comparalos. En cuanto a los lenguajes. No estoy de acuerdo con Soultaker. Todo es util, por algo se invento. Hay muchos lenguajes que son similares. Siempre es bueno saber lo mayor posible. Visual Basic es un buen lenguaje para comenzar a programar. En mi opinion C/C++ es lo "mejor" aunque puede ser un poco complicado para empezar si no tienes experiencia. Como te han mencionado, en internet hay muchos manueles utiles (el de "aprenda VB como si estubiese en primero no lo recomiendo) aunque si tienes la posibilidad compra un manual de carne y hueso (o papel  ), 2 de los cuales te puedo recomendar: -Enciclopedia de Microsoft Visual Basic 6 de Francisco Javier Ceballos (realmente bueno) -La Biblia de Visual Basic 6 (no se de quien es) Bueno, espero te sirva mi aporte. Saludos y buena suerte.
239
« en: Martes 26 de Septiembre de 2006, 06:11 »
Buenas. Quisas te puedan dar una mano en el foro de VB.NET Aunque tambien podrias investigar un poco Saludos
240
« en: Martes 26 de Septiembre de 2006, 04:01 »
Buenas.
Segun mi opinion no es recomendable hacer lo que deceas, imaginate q haces una imagen de 200 megas, y la abres en un ordenador con 256 de ram y win xp, te imaginas lo q pasara. Y por mas que sea una pc con muchas memoria, trabajar con imagenes tan grandes puede ser fastidioso.
Creo que si comentas q es lo q quieres hacer se puede hacer mas facil ayudarte.
Si por ejemplo quieres solo mostrar las imagenes como una sola, desde una aplicacion, puedes hacer una matriz con los nombres de las imagenes, y en una matriz de controles o en un control ir mostrando en la pantalla la cantidad de imagenes que entran. Entonces te desplasas sobre la matriz. De este modo, solo almacenas en memoria las imagenes que estas viendo, y la matriz con los nombres, en vez de almacenar una imagen de cientos de megas.
Espero sirva, si quieres cuenta un poco q es lo q pretenes y se te pueda ayudar de otro modo.
Saludos
241
« en: Martes 26 de Septiembre de 2006, 03:46 »
Bueno, aca dejo como lo solucione, q es bastante similar a tu funcion. Espero que sea de utilidad para alguien. Private Sub mnuEdicion_Click() Dim frmTag As String On Error GoTo ErrHandler frmTag = Screen.ActiveForm.Tag If frmTag <> "Main" Then mnuDeshacer.Enabled = True ... End If Exit Sub ErrHandler: If Err.Number = 91 Then mnuDeshacer.Enabled = False ... End If End Sub
Nota: obviamente los puntitos no van, es solo q si pongo todos los menus, quedaria bastante largo.
242
« en: Martes 26 de Septiembre de 2006, 03:35 »
Buenas.
Aqui te dejo un codigo para validar entrada de datos. En caso de que quieras admitir mas caracteres, los agregas a la variable letras y le cambias el tamaño segun la cantidad de caracteres que almacena
Dim Letras As String * 11 'La variable que contendra los caracteres admitidos Dim Car As String 'La variable que recuperara el caracter ingresado
Private Sub Form_Load() Letras = "0123456789" & vbBack 'Se guardan los valores admitidos en la variable End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) Car = Chr(KeyAscii) 'Se guarda el caracter ingresado, Chr convierte un valor en su 'respectivo caracter If InStr(1, Letras, Car) = 0 Then 'Si el caracter no se encuentra dentro de los KeyAscii = 0 'admitidos End If End Sub
Siempre es bueno usar la propiedad .text para comparar, cambiar o recuperar datos porque sino haces referencia al control en si y no a su contenido, asi como usar las comillas ya que sino, estaras comparando una cadena de texto con un numero, que aveces puede traer problemas
If txtTalla.text = "0" then ...
Bueno, eso es todo, espero te sirva de algo Saludos
243
« en: Domingo 24 de Septiembre de 2006, 22:44 »
Ya encontre una solucion. Muchas gracias de todos modos.
244
« en: Domingo 24 de Septiembre de 2006, 00:43 »
Buenas.
Segun mi opinion.
Mas del 80% de los usuarios de PC, son gente que no entiende lo que es una pc. Y menos que menos de seguridad en una pc.
Hoy en dia el mercado de xDSL esta creciendo muy rapidamente, por lo que la gente esta mas timpo conectada (al no tener que pagar telefono)
Si simplemente haces un escaneo de IP's de en el rango de IPs de tu servidor, descubriras que es impresionante la cantidad de gente que tiene compartidos los discos duros, y mas sorprendente aun, los que no tienen contraseña de entre esos.
245
« en: Domingo 24 de Septiembre de 2006, 00:29 »
Buenas.
Como te mensionaron prueba resetearle el Bios.
Busca el manual de tu mother y fijate cuales son las agujas de la CMOS, y las aislas durante un par de segundos.
Si no pasa nada prueba ponerle otra fuente, es muy importante, ya que un transistor o resistencia puede estar dañado y con un colo cable que no envie el voltaje necesario puede causar mucho problemas.
La bios si se puede recargar, pero debes buscar a alguien que tenga experiencia al respecto, aunque puede salir mas barato un mother nuevo.
Saludos
246
« en: Domingo 24 de Septiembre de 2006, 00:13 »
Buenas. Gracias por el consejo, pero no sirve. Probe con IsObject, IsEmpty e IsNull Pero devuelven que si hay un abjeto y es el MDI, sin embargo sigue dando el error.
Gracias.
247
« en: Sábado 23 de Septiembre de 2006, 04:23 »
Microsoft DAO 3.51 Object Library <--- Access 97 Microsoft DAO 3.6 Object Library <--- Access 2000
248
« en: Sábado 23 de Septiembre de 2006, 04:03 »
Cuando windows se cierra, manda un mensaje a las aplicaciones abiertas para cerrarlas, lo que puedes hacer es interseptar este mensaje con subclasificacion. Cuando tu aplicacion recibe el mensaje (si no me equivoco es WM_CLOSE) guarda la hora, y se cierra. A la aplicacion la puedes hacer invisible con la API SetWindowPlacement
Saludos
249
« en: Sábado 23 de Septiembre de 2006, 03:32 »
Buenas.
No se entiende bien cual es el problema. Se corta solo tu aplicacion o todas, la barra de tareas tambien se corta? Si es asi, fijate cambiar la resolucion y la frecuencia del monitor. Si el problema es solo de tu aplicacion prueba establecer el tamaño con la API SetWindowPos. O bien con los valores de Screen.Width y Screen.Height.
Saludos
250
« en: Sábado 23 de Septiembre de 2006, 02:48 »
Buenas gente. Me surgio un problemita y me prgunte si alguien me podia dar una mano.
Tengo un editor de texto de multiples instancias. El formulario MDI tiene todos los menus y quiero que si no hay ningun formulario de texto abierto, algunos de los menus se inhabiliten, para lo que hice lo siguiente.
El formulario MDI tiene como tag "Main" Los formularios de texo tienen como tag: En caso de que sea un nuevo docuemento, "Nuevo" Caso que sea un archivo existente la ruta del archivo.
Luego en el evento click del menu (p.e.) Edicion
Dim frmTag as String
frmTag = Screen.ActiveForm.Tag
If frmTag = "Main" ... Elseif frmtag = "Nuevo" ... Else ... End if
Pero cuando no hay ningun formulario abierto y llega a la linea: frmTag = Screen.ActiveForm.Tag Genera un error 91 "La Variable de Tipo Object o la variable de bloque With no está establecida"
Sin embargo, si eligo depurar el error y pongo el cursor sobre Screen.ActiveForm.Tag me muestra que tiene el valor "Main"
Probe declarar una variable objeto como formulario, y asignarle el formulario activo para luego guardar el tag, sin embargo genera el mismo error cuando intento asignarlo.
Espero agluien tenga una idea de como solucionarlo.
Gracias de antemano. Saludos
|
|
|