• Miércoles 14 de Mayo de 2025, 09:29

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 - m0skit0

Páginas: 1 ... 81 82 [83] 84 85 ... 100
2051
C/C++ / Re: Paso por parametos o Paso por referencia
« en: Lunes 27 de Octubre de 2008, 09:42 »
Cita de: "keroveros"
Es algo como lo que puso Moskit0, lo que pasa es que no se cuando tengo que pasar punteros

El día que te expliques alguien te ayudará. Suerte

2052
Visual Basic para principiantes / Re: DE LIST1 A TXT
« en: Domingo 26 de Octubre de 2008, 20:53 »
Cita de: "bobo"
les pido disculpa por los disturbios causados

No hace falta que te disculpes, tú sólo has formulado una pregunta. No hay ningún problema ^_^

2053
C/C++ / Re: duda al pasar un numero
« en: Domingo 26 de Octubre de 2008, 20:51 »
La verdad es que no tengo conocimiento de esa función, pero es algo que puedes hacer tú mismo. La "e" significa "10 elevado a", por tanto el ejemplo que pones es 233.280.000. Lo que no entiendo muy bien es para qué quieres pasarla a este último formato...

2054
Estaré al tanto porque me resulta interesante lo que has publicado. Espero que sea pronto, un saludo!

2055
C/C++ / Re: Diferencia entre BC y TC
« en: Domingo 26 de Octubre de 2008, 16:55 »
Cita de: "123celes"
# EXEC SQL INCLUDE SQLCA
#  
# /*Declaración de la tabla TEMPLE de los ejemplos*/
#  
# EXEC SQL DECLARE TEMPLE TABLE
#          (NUMEM INTEGER NOT NULL,
#           NUMDE INTEGER NOT NULL,
#           EXTEL SMALLINT NOT NULL,
#           FECNA DATE     NOT NULL,
#           FECIN DATE     NOT NULL,
#           SALAR DECIMAL (5,0) NOT NULL,
#           COMIS DECIMAL (5,0),
#           NUMHI SMALLINT      NOT NULL,
#           NOMEM VARCHAR(20)   NOT NULL);
Cita de: "123celes"
el programa no me reconoce ninguna sentencia

Pues claro que no, porque esto no es C, y lo que tú usas es un compilador de C, no SQL. Tienes que hacer que C sea capaz de comunicarse con una base de datos mediante SQL, no hacer de C SQL. Y revisa bien el código del libro, porque esto que has puesto dudo que esté en el libro así como lo pones...

2056
C/C++ / Re: duda al pasar un numero
« en: Domingo 26 de Octubre de 2008, 16:52 »
¿A número normal? ¿Qué es normal?

2057
C/C++ / Re: Paso por parametos o Paso por referencia
« en: Domingo 26 de Octubre de 2008, 12:01 »
Cita de: "eternity"
utilizando la semántica de los punteros de C, uno puede simular un pasaje por referencia.

Que es lo que hacen los otros lenguajes, pero implícitamente, porque son de más alto nivel que C.

2058
GNU/Linux / Re: Hola amigos
« en: Domingo 26 de Octubre de 2008, 11:59 »
Cita de: "edualient"
instalarlo en otra particion que no sea c.

Primero tienes que tener otra partición que no sea C. Con lo que o puedes optar por un programa que te reduce el espacio que ocupa la partición C (si es posible) y con el espacio sobrante crea otra, o bien formatear y crear las particiones de nuevo. Lo que hay que hacer siempre es crear varias particiones en el disco (siempre teniendo en cuenta qué posible uso futuro le podemos dar) justo cuando el disco está nuevo y ahorrarnos futuros quebraderos de cabeza. De todas formas, para Linux deberías tener mínimo 2 particiones: 1 con el sistema en sí y otra de intercambio (aconsejable el tamaño el doble de la RAM).

Cita de: "shakka"
en versiones recientes del kernel se utiliza sd*

Yo tengo 2.6.18 y nada de usar sd*. Será porque tu disco es SATA.

2059
C/C++ / Re: Paso por parametos o Paso por referencia
« en: Domingo 26 de Octubre de 2008, 11:49 »
¿Te refieres a esto?

Código: C
  1. void tu_funcion(int argc, char * argv[]);
  2. [...]
  3. int main (int argc, char * argv[])
  4. {
  5.     tu_funcion(argc, argv);
  6. }
  7.  
  8.  

O sigues sin explicarte...

2060
C/C++ / Re: Paso por parametos o Paso por referencia
« en: Domingo 26 de Octubre de 2008, 03:35 »
Cita de: "keroveros"
separando el codigo en modulos

¿Puedes aclarar a qué te refieres? ¿C o C++?

2061
ASM (Ensamblador) / Re: Assembler inline
« en: Viernes 24 de Octubre de 2008, 21:44 »
Cita de: "123celes"
¿Es por que esas instrucciones no existen en el Assembly Inline de Turbo Pascal y tiene que usar los prefijos para que el procesador lo entienda?

Efectivamente, supongo que porque no tendrá soporte para los registros extendidos de 32 bits del 386 y superiores.

Cita de: "123celes"
En las lineas 10 y 12:
mov dx, ax
mov ax, dx
No comprendo que trabajo realizan, ¿Para que sirven?

Primero tienes que entender lo que hace REP STOSD. REP, creo que ya lo comentamos en otro post, repite la instrucción tantas veces como indique CX y por cada iteración aumenta/decerementa DI y SI en tantas unidades como bytes procese la instrucción. STOSD copia EAX a ES:EDI (4 bytes por tanto). Aquí te dejo comentado el código:

Código: ASM
  1. PROCEDURE Fill64k (Where:word;Col : Byte); assembler;
  2. asm
  3.     ; Guardamos ES en la pila
  4.     push    es
  5.     ; 16000 veces
  6.     mov     cx, 16000;
  7.     ; Movemos el valor de la variable a ES
  8.     mov     es,[where]
  9.     ; Ponemos DI a cero
  10.     ; Error: esto supone que los 2 bytes más altos de EDI
  11.     ; están a cero, por tanto puede producir errores si no es así
  12.     xor     di,di
  13.     ; Movemos el valor con que queremos rellenar la zona de memoria a AL (1 byte)
  14.     mov     al,[col]
  15.     ; Copiamos ese mismo byte a AH
  16.     mov     ah,al
  17.     ; Ahora viene lo que te da el dolor de cabeza :)
  18.     ; Copia AX en DX (como una variable temporal)
  19.     mov     dx, ax
  20.     ; Mueve 16 posiciones a la izquierda EAX, es decir, rellena los 16 bits altos de EAX. AX queda a 0.
  21.     db      $66, $C1, $E0, $10   {shl eax, 16}
  22.     ; Vuelve a poner DX en AX, con lo que nos queda el byte con el que rellenar la zona de memoria
  23.     ; repetido en los 4 bytes de EAX.
  24.     mov     ax, dx
  25.     ; Copia EAX 16000 veces en ES:EDI
  26.     ; Rellena 16000 x 4 bytes = 64000 bytes = 64K con el valor de Col
  27.     db      $F3, $66, $AB          {rep stosd}
  28.     ; Recupera el ES original
  29.     pop     es
  30. End;
  31.  

EDIT: sabía que se me iba a adelantar, jejejeje... Y como alguien dijo, programar es darle a la imaginación  :lol:

2062
C/C++ / Re: Asignacion de punteros
« en: Viernes 24 de Octubre de 2008, 21:13 »
Cita de: "Eternal Idol"
cualquier otro valor seria una aberracion sin ningun sentido.

Peores cosas se han visto...  :D

2063
Seguridad y Criptografía / Protocolo HTTP desde telnet
« en: Viernes 24 de Octubre de 2008, 18:12 »
Un sencillo truco para poder echar vistazos interesantes a cierta información que mandan los servidores de páginas web sin necesidad de instalar nada nuevo... Funciona en todos los sistemas operativos a mi alcance.

Código: Text
  1. $ telnet www.#####.com 80
  2.  

Se nos queda el cursor parpadeando, como si estuviera colgado, pero no. Si escribimos HEAD / HTTP/1.1 (seguid escribiendo, en mayúsculas, aunque no aparezca por pantalla) y le damos a Enter 2 veces, podremos ver el resultado:

Código: Text
  1. HTTP/1.1 400 Bad Request
  2. Date: Fri, 24 Oct 2008 16:00:21 GMT
  3. Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7a mod_auth_passthrough/2.
  4. 1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.3
  5. Connection: close
  6. Content-Type: text/html; charset=iso-8859-1
  7.  
  8. Se ha perdido la conexión con el host.
  9.  

Interesante, ¿no?

Citar
telnet foros.#####.com 80

Hacemos una conexión al puerto 80 (el puerto por defecto del protocolo HTTP) del servidor especificado.

Citar
HEAD / HTTP/1.1

Petición HTTP de cabecera al servidor web. GET es la que usan los navegadores para obtener las páginas web. También se puede usar y generalmente devuelve la cabecera.

Ahora busquemos por ejemplo "Apache/2.2.9 exploit" en Google. Con un poco de conocimiento y suerte, podremos llegar a tener una cuenta de administrador en el servidor.

Les aconsejo a los administradores del sistema, si quieren que su servidor esté bien protegido, que cambien estos valores o que prohíban al servidor mostrar la cabecera en las respuestas (aparte de mantener el servidor y los añadidos siempre actualizados y parcheados).

2064
Visual Basic 6.0 e inferiores / Re: Como ejecuto un DTSX
« en: Viernes 24 de Octubre de 2008, 17:56 »

2065
C/C++ / Re: Asignacion de punteros
« en: Viernes 24 de Octubre de 2008, 17:54 »
Cita de: "eternity"
como tu codigo no contempla valores repetidos

A lo mejor es lo que quiere  :P

Cita de: "Rombus"
si if (!nodo) seria preguntar por si nodo == NULL

No necesariamente. Ten en cuenta que NULL está definido por el SO y puede ser cualquier valor, aunque en todos los SOs que conozco es 0. Sin embargo, si en un determinado SO no fuera así, poniendo if(!nodo) incurres en un error y habría que cambiarlo, cosa que no ocurriría si pusieses la alternativa. Es mejor ésta puesto que es más portable (de hecho, para eso se inventó una constante NULL). Un saludo y ¡acabemos ya este post!  :P

2066
C/C++ / Re: Asignacion de punteros
« en: Viernes 24 de Octubre de 2008, 15:05 »
Cita de: "Rombus"
asi con el memcpy copio el contenido y no la direccion

Pero no olvides hacer un free() de los malloc() que hayas hecho. Sigo pensando que con POO quedaría mucho más bonito, puesto que tienes destructores que se encargan de esto.

Código: C
  1. nodo_t *creaNodo(arbol_t *arbol, void *valor, nodo_t *der, nodo_t *iz)
  2.  

Además, ya no necesitas el parámetro arbol (de hecho, no lo necesitas, salvo por la llamada al puntero de función ese, que no me gusta nada :P ). En fin, encantado de guiarte, un saludo.

2067
C/C++ / Re: Programa con vectores
« en: Viernes 24 de Octubre de 2008, 14:00 »
Cita de: "keroveros"
Moskito, tus rspuestas, aunque no me ayudaron mucho, me hicieron buscar informacion sobre funciones que no conocia

Me alegro, porque ese era el objetivo  ;) .

Cita de: "keroveros"
Declaro un vector[N] ese N sera "atoi(argv[1])" porque no quiero que tenga una longitud definida

¿Qué has hecho con este problema?

Cita de: "keroveros"
matriz[fila][columna]=(*p_mat)-48;

No está mal, veo que vas aprendiendo :good: aunque un char * lo puedes recorrer como si fuera un char[], es decir matriz[fila][columna]=entrada - 48;

2068
C/C++ / Re: Programa con vectores
« en: Viernes 24 de Octubre de 2008, 12:31 »
Cita de: "EL_UNI"
Habría que tener en cuenta también lo que han dado en clase....

Perdona, pero no soy adivino. Si es el caso, que lo diga... De todas formas, si quiere hacerlo exactamente como dice, no tiene otra opción que usar memoria dinámica.

Cita de: "EL_UNI"
o puedes meterlos uno a uno

Desde luego así es más sencillo porque no hay que recorrer la entrada, sino encajarlos directamente en vector[]. Pero tanto como muchísimo más fácil... Recorrer una cadena tampoco es que sea muy difícil.

2069
C/C++ / Re: Asignacion de punteros
« en: Viernes 24 de Octubre de 2008, 12:22 »
Personalmente creo que complicas las cosas sencillas, pero bueno...

Código: C
  1. typedef struct {
  2.     int sizeTipo;           //Tamaño del dato a almacenar
  3.     nodo_t *raiz;
  4.     _funCmp_t funCmp;       //Funcion de comparacion
  5.     _funPrint_t funPrint;   //Funcion de impresion
  6. }arbol_t;
  7.  

Si vas a meter punteros a funciones en una estructura, mejor usa C++ y objetos.

Código: C
  1.  
  2.     arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i);
  3.     i =4;
  4.     arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i);
  5.     i =3;
  6.     arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i);
  7.     i = 7;
  8.     arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)&i);
  9. }
  10.  

Tienes un error de concepto en estas líneas. Tú lo que estas insertando en el árbol no son los valores de i, sino el puntero a i, por lo tanto es lógico que nodo_t *nodo y void *aIngresar sean el mismo, puesto que es &i (que siempre es el mismo, aunque cambies el valor de i). Al hacer en main() i =4; y luego i = 7; cambias el valor apuntado por &i, no &i. Por tanto, en el árbol, sólo has insertado un nodo con el puntero, al que vas cambiando el valor al que apunta, pero no creas un nuevo valor. Vas a tener que reservar memoria por cada elemento que desees insertar, porque sino simplemente lo sobreescribes. Algo como:

Código: C
  1.     int *i;
  2.  
  3.     i = (int *) malloc(sizeof(int));
  4.     *i = 5;
  5.     arbol->raiz = arbolInsert(arbol, arbol->raiz, (void *)i);
  6.  

Espero haberme explicado, un saludo.

2070
Delphi / Re: permutaciones, factoriales...etc.
« en: Viernes 24 de Octubre de 2008, 10:23 »
Creo que tu problema fundamental es que no tienes en cuenta que cuando TFormClasif1.btnCalcularFac1Click() termina, se pierden el valor de todas las variables locales (n, n2, factorial, factorial2, i, i2, acumulador, RS). Aparte, cada vez que le das al click, pones acumulador a 1, con lo que, aunque tuviera un valor previo (que no lo tiene), lo perdería. Si quieres que acumulador mantenga el valor, tienes que declararla como global, o bien (más cutre) utiliza un objeto invisible (una caja de texo) que mantenga el valor. Espero haberte aclarado el error.

2071
Visual Basic para principiantes / Re: DE LIST1 A TXT
« en: Viernes 24 de Octubre de 2008, 06:41 »
Cita de: "Nebire"
si te dan dinero sin trabajar... alguien trabajaría... ?
Aunque para mí no se trata de que me moleste su dinero o trabajo, sino de una manera de entender las cosas, de saber compartir.

2072
Visual Basic para principiantes / Re: CONECTAR COMBO CON ARCHIVO DE TEXTO
« en: Jueves 23 de Octubre de 2008, 20:37 »
:D  :good:

2073
Visual Basic 6.0 e inferiores / Re: Bloqueo de Registros
« en: Jueves 23 de Octubre de 2008, 18:59 »
Cita de: "xZerox"
que pasa si un usuario del sistema ingresa y bloquea el registro (poniendole el estado a 1), pero justo en ese momento se reinicia la PC, el registro se va a quedar bloqueado y nadie podra acceder ya que sigue estando bloqueado

Efectivamente, tienes razón, pero ese problema que mencionas en inherente a cualquier sistema concurrente. ¿Qué pasa en un SO cuando un proceso bloquea un recurso y luego se cuelga? Exactamente lo mismo. Es un problema harto complicado de solucionar, aunque se me ocurre que podrías ponerle un time-out al bloqueo, es decir, que pasado cierto tiempo el registro quede de nuevo habilitado para el acceso. Un saludo y suerte.

2074
Visual Basic para principiantes / Re: DE LIST1 A TXT
« en: Jueves 23 de Octubre de 2008, 17:18 »
Uf, te picaste  :blink: .

Cita de: "m0skit0"
Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas

Se lo decía a bobo, a ti te critico por no intentar enseñar, sino por hacer la tarea sin más... Eso es lo que está mal.

Cita de: "Jimbenit"
lo mas seguro es que las personas que preguntan saben muy poco de viasual basic

Precisamente por ello hay que enseñarle VB, no copiar-pegar... Poniéndoles el código no se van a enterar, lo van a usar tal cual y cuando tengan que hacer algo ligeramente diferente no sabrán modificarlo para esa nueva funcionalidad. No sirve de nada poner el código, hay que explicar las cosas, dar ejemplos y que piensen cómo adaptarlo a su situación concreta. Eso es programar. Lo otro es "usar el Word".

Cita de: "Jimbenit"
por que a tu pregunta sobre el archivo .INI no respondi tu pregunta, cierto??

No sé de qué hablas, refréscame la memoria podrida que tengo...

Cita de: "Jimbenit"
Hey, Moskito, me caes bien,... please, no discutamos ...

Sin ánimo de ofender, me da igual si te caigo bien o no, esa no es la cuestión. Y discutir es algo sano y natural. No pasa nada. No hay por qué enfadarse ni nada por el estilo. Para algo se inventó el lenguaje.

Un saludo y lee bien los posts para evitar molestas confusiones.

2075
Visual Basic para principiantes / Re: DE LIST1 A TXT
« en: Jueves 23 de Octubre de 2008, 16:33 »
Cita de: "Jimbenit"
Te regalare dos de mis "super funciones"

Me parece loable tu actitud, pero muy poco didáctica. Así sólo enseñas a usar copiar-pegar y no a programar. Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas. Y pon todas las declaraciones juntas, sino no hay quien lea eso.

Cita de: "Jimbenit"
Open RutaArchivo For Output As #1
No uses números fijos (#1) ¿quién sabe si ese descriptor está siendo usado? Usa FreeFile()

Cita de: "Jimbenit"
# que es capaz de leer datos de un bloc
# 'de notas que este ordenado por filas y columnas separadas por comas
# 'Comentario: NO UTILIZAR ESTE PROCEDIMIENTO CUANDO EL ARCHIVO DE LECTURA DEL BLOC DE NOTAS
# 'CONTENGAN MUCHAS FILAS O MUCHAS COLUMNAS SEPARADAS POR COMAS (mas de 10 mil filas y/o columnas)

Por cierto, las cosas no se guardan en el bloc de notas, sino en un fichero de texto, que puedes abrir con el programa que te dé la gana. No confundamos las cosas. Y puedes escribir todos los datos que se te antojen, eso sí, si son muchas líneas no uses el Bloc de Notas de Windows para ojearlo, que se cuelga. El VB no tendrá problemas en leerlo, aunque sean millones de líneas.

Saludos

Páginas: 1 ... 81 82 [83] 84 85 ... 100