• Sábado 28 de Mayo de 2022, 16:04

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

Páginas: [1] 2
1
Dudas informáticas / Montar una red local wifi
« en: Viernes 14 de Mayo de 2010, 21:22 »
Hola, he creado este post porque me han surgido más dudas a partir de otro en el que hablan sobre como montar una red wifi. En esencia ponía esto:
   
Citar
Inicio>panel de control>conexion de red.
    En propiedades de la conexion WIFI>selecciona protocolo tcp/ip>pulsa propiedades.
    Teclea este protocolo:
    En IP
    192.168.1.33 para el segundo pc 192.168.1.34
    La mascara de sub red se te pone sola
    Puerta de enlace esta para los dos pc´s
    192.168.1.1
    ponles esta son de telefonica.
    80.58.0.33
    80.58.32.97
    Aplicas aceptas.
Mi duda es a la hora de poner las IP y puertas de enlace. Las descritas en ese post, valdrían para cualquier tipo de equipo?
Os describo como son los equipos que quiero que estén en la red:
- Portátil con W7
- Sobremesa con W XP
- Ambos se conectan a un router wifi, independientemente el uno del otro, para acceder a internet.
- Los dos también se conectan con IP obtenida automáticamente y están en el mismo grupo de trabajo.

Haber si me podeis echar un cable, es que no comprendo muy bien como montar dicha red. Había pensado en usar las del post, pero no sé si son válidas.
Puedo cambiar las locales y ponerles las que yo quiera dentro del rango, por ejemplo 192.168.110.xxx, pero y la puerta de enlace, DNS, y la IP on la que el router se conecta a internet (la que ahora se obtiene automaticamente)??

Gracias!

2
Dudas informáticas / Re: Ecuaciones en Word
« en: Sábado 8 de Mayo de 2010, 15:52 »
Inserta un objeto de tipo "Microsoft Editor de Ecuaciones 3.0" (el nombre es así o parecido) Te saldrá un pequeño menú donde prodrás ir insertando símbolos matemáticos, operadores, números elevados, matrices, integrales de todo tipo, ...
El menu es  como el de la imágen de este post: http://www.foros.solocodigo.com/viewtopic.php?f=4&t=42218#p152710
 :hola:

3
C/C++ / Re: Manejo de errores con integer
« en: Miércoles 5 de Mayo de 2010, 23:24 »
No comprendo, como es que a un entero le metes caracteres?

4
Pascal / Re: Turbo Pascal en Windows 7!
« en: Lunes 3 de Mayo de 2010, 22:06 »
También puedes probar con Eclipse, es un entorno multiplatarforma gratuito que te permite usar Pascal. Yo lo uso en W7 y me va muy bien. Puedes echar un vistazo aquí http://www.eclipse.org/ y rebuscar por san Google.   :hola:

5
C/C++ / Re: Hacer una matriz dinamica de un tipo definido en struct?
« en: Lunes 3 de Mayo de 2010, 12:52 »
Jeje, a mi en mi último programa, he tenido un montón de errores de este tipo, que le das un montón de vueltas y no sabes porqué es XD.
Me alegro de que lo hayas solucionado.  :hola:

6
C/C++ / Re: Hacer una matriz dinamica de un tipo definido en struct?
« en: Sábado 1 de Mayo de 2010, 22:08 »
Hola, es C o C++?
En C yo haría matriz[j].nombre="pancho";
No comprendo por haces el new.

7
C/C++ / C: Error en ejecución
« en: Sábado 1 de Mayo de 2010, 20:47 »
Hola, quería pediros ayuda para un programa que me he hecho en C. Lo que quiero hacer en mi programa es un pipeline (había puesto algún post con dudillas al respecto que ya fueron resueltas) La ejecución de mi programa, por ejemplo, ./pipeline ls wc tiene que ser igual a la ejecución en la shell de $ ls | wc. De momento he probado con solo dos instrucciones, aunque posteriormente lo haré con más de 2. Creo un hijo para la ejecución de cada instrucción y los comunico mediante pipes, mi problema es que el primer hijo no ejecuta correctamente con execlp, y no comprendo porqué, como consecuencia el segundo hijo no ejecuta nada (no recibe nada por el pipe) y el padre se queda esperando a que termine éste. Os pongo lo que me muestra la shell y el código haber si me podeis echar una mano y veis algún fallo.

SHELL:
SOY EL PRIMER HIJO
Voy a ejecutar: ls
SOY EL PADRE
: Ejecución incorrecta 1
SOY EL ULTIMO HIJO
Voy a ejecutar: wc
SOY EL PADRE
Aquí se queda esperando el padre

Código: C
  1.  
  2. #define READ 0
  3. #define WRITE 1
  4.  
  5. int main(int argc, char *args[]) {
  6.  
  7.    int i,j,k;
  8.    int pid;
  9.    int valor;
  10.    int child_pid;
  11.    int status;
  12.    int **arrayPipe;
  13.  
  14.  
  15.     if (argc == 2) {
  16.         execlp(args[1],args[1],NULL);   
  17.     } else {
  18.         //Crear pipes
  19.         arrayPipe = (int **) malloc((argc-2) * sizeof(int *));
  20.         for(i=0;i<argc-2;i++){
  21.             arrayPipe[i] = (int *) malloc(2 * sizeof(int));
  22.             valor=pipe(arrayPipe[i]);
  23.             if (valor==-1){
  24.                 perror("Error al crear el pipen");
  25.                     return -1;
  26.             }
  27.         }
  28.         //Crear procesos
  29.         for (i=0;i<argc-1;i++){
  30.             pid = fork();
  31.             if (pid == -1){
  32.                     perror("Error al crear el hijon");
  33.                     return -1;
  34.             } else if (pid == 0){ /* Child */
  35.                
  36.                 if(i==0){   //Si es el primer hijo
  37.                     printf("SOY EL PRIMER HIJOn");
  38.                     //Cierro todos los descriptes excepto los suyos
  39.                     for (k=0;k<argc-2;k++){
  40.                         if (k!=i){
  41.                             close(arrayPipe[k][READ]);
  42.                             close(arrayPipe[k][WRITE]);                        
  43.                         }
  44.                     }
  45.                     printf("Voy a ejecutar: %sn",args[i+1]);
  46.                     close(arrayPipe[k][READ]);          //ESTA Y LAS DOS SIGUIENTES ESTÁN MAL, EL INDICE ES i Y NO k
  47.                     dup2(arrayPipe[k][WRITE],1);
  48.                     close(arrayPipe[k][WRITE]);                
  49.                     execlp(args[i+1],args[i+1],NULL);    //Esta es la instrucción que me falla
  50.                     exit(EXIT_FAILURE);
  51.                 } else if (i==argc-2){  //Si es el último
  52.                     printf("SOY EL ULTIMO HIJOn");
  53.                     //Cierro todos los descriptes excepto los suyos
  54.                     for (k=0;k<argc-2;k++){
  55.                         if (k!=i-1){
  56.                             close(arrayPipe[k][READ]);
  57.                             close(arrayPipe[k][WRITE]);                        
  58.                         }
  59.                     }
  60.                     //printf("Voy a ejecutar: %sn",args[i+1]);
  61.                     close(arrayPipe[i-1][WRITE]);
  62.                     dup2(arrayPipe[i-1][READ],0);
  63.                     close(arrayPipe[i-1][READ]);
  64.                     printf("Voy a ejecutar: %sn",args[i+1]);
  65.                     execlp(args[i+1],args[i+1],NULL);
  66.                     exit(EXIT_FAILURE);
  67.                 } else {        //Si es intermedio
  68.                                         //Aquí iria el código en el caso de ser más de dos hijos
  69.                 }
  70.  
  71.             } else {/* Parent */
  72.                 //Cierro descriptores en el padre
  73.                 printf("SOY EL PADREn");
  74.                 if (i==0){
  75.                     for (j=0;j<argc-2;j++){
  76.                         close(arrayPipe[j][READ]);
  77.                         close(arrayPipe[j][WRITE]);
  78.                     }
  79.                 }
  80.                 child_pid = wait(&status);
  81.                 if (WIFEXITED(status) == 0){
  82.                                         printf(": Ejecución incorrecta 1n");
  83.                                 } else {
  84.                                         if (WEXITSTATUS(status)){
  85.                                                 printf(": Ejecución incorrecta 2n");
  86.                                         } else {
  87.                                                 printf(": Ejecución correctan");
  88.                                         }
  89.                                 }
  90.             }
  91.  
  92.         }
  93.        
  94.         //Liberar memoria
  95.         for(i=0;i<argc-2;i++){         
  96.             free(arrayPipe[i]);
  97.         }
  98.         free(arrayPipe);
  99.     }
  100. return 0;
  101. }
  102.  
EDIT:Un error tonto, lo he puesto en el código.

8
C/C++ / Re: C: pipeline
« en: Viernes 30 de Abril de 2010, 12:51 »
He encontrado una solución, crear un array dinámico de pipe, pero me da algún fallito, y lo he probado de estas dos formas:
Código: C
  1. arrayPipe = malloc(sizeof(int *) * N);
  2. for(i=0;i<N;i++){
  3.      arrayPipe[i] = malloc(sizeof(int) * 2); //Dos posiciones fijas
  4. }
  5.  
Este me da un error al crear el pipe():
Error al crear el pipe
: Success

Y acaba.
Código: C
  1.  
  2. arrayPipe = malloc(N * sizeof *arrayPipe);
  3. for(i=0;i<N;i++){
  4.     arrayPipe[i] = malloc(2 * sizeof *arrayPipe[i]); //Error aqui
  5. }
  6.  
Este me da un error de fallo de segmentación desde el principio, sin llegar a ejecutar la instrucción de malloc.
El pipe me lo creo así (dentro del bucle for) en ambos casos:
Código: C
  1. valor=pipe(arrayPipe[i]);
  2.  
Haber si me podéis ayudar, gracias!

9
C/C++ / C: pipeline
« en: Lunes 26 de Abril de 2010, 00:43 »
Hola, quería preguntaros haber si me podeis dar una idea de como implementar un pipeline. He visto en este foro un tema parecido: viewtopic.php?f=18&t=41996&p=151702&hilit=pipe#p151702 que es más o menos lo que quiero hacer con mi programa.
He usado fork() para crear un hijo y un pipe() para comunicarlo con el padre. De momento, he conseguido ejecutar dos instrucciones, por ejemplo, un

Código: Text
  1. ls | wc
  2.  

y me ha funcionado bien. Ahora lo que quería hacer es implementarlo de tal forma que me admita más argumentos, conectado hijos mediante tuberías. Había pensado en hacer un for() para crear varios hijos y que el último en ejecutar un comando sea el padre. Voy por buen camino? Lo he intentado con un solo pipe(), debería crearme alguno más?
Gracias!

10
C/C++ / Re: C: escribir por pantalla y en un fichero
« en: Sábado 24 de Abril de 2010, 13:25 »
Solucionado!  :good:
Al final la solución estaba en lo más sencillo, mientras escribia en el fichero en el while, lo escrbía a la vez por pantalla. Una tontería de la que no me había dado cuenta XD.
Hago otra pregunta: mi fichero, en el que escribo, tiene al final el fd=0, al ser un fichero, estaría bien hacer un close(0), no? Ya que no se trata de stdIn sino de ese fichero.

11
C/C++ / C: escribir por pantalla y en un fichero
« en: Sábado 24 de Abril de 2010, 01:54 »
Hola, como podría mostrar un texto por pantalla y a la vez ese mismo texto se copie en un fichero?
Estoy usando pipes(), pero el problema es que cuando me escribe la información por pantalla no lo hace en el fichero y viceversa.
Gracias adelantadas!

12
Windows / W XP: registro de carpetas borradas?
« en: Viernes 23 de Abril de 2010, 14:26 »
Hola! me gustaría saber si en Windows XP existe algún tipo de registro que almacene carpetas (o ficheros) borrados. No para recuperarlos, sino para saber si han sido borrados y cuando se han borrado si es posible.
Gracias adelantadas.  :hola:

13
C/C++ / Re: Lenguaje C: problemilla con dup2()
« en: Domingo 18 de Abril de 2010, 20:27 »
Me respondo, la solución está en:

Código: C
  1. fdOut=open("escritura",O_WRONLY | O_TRUNC | O_CREAT,0700);
  2.  

No da problemas  ^_^

14
C/C++ / Re: Lenguaje C: problemilla con dup2()
« en: Domingo 18 de Abril de 2010, 15:04 »
Lo he solucionado, el error me daba en el dup de alguna forma, pero lo he arreglado de esta manera:

Código: C
  1.       fdIn=open(argv.fIn,O_RDONLY);
  2.         dup2(fdIn,0);
  3.         close(fdIn);        
  4.         fdOut=open(argv.fOut,O_CREAT,0700);
  5.         close(fdOut);
  6.         fdOut=open(argv.fOut,O_RDWR);
  7.         dup2(fdOut,1);
  8.         close(fdOut);
  9.  

Sigo sin comprender porque con el primer open() no funciona y tengo que cerrar el descriptor y hacer un segundo open(), hay alguna forma más "elegante" de hacerlo, sin tener que hacer 2 open()?

15
C/C++ / Lenguaje C: problemilla con dup2()
« en: Sábado 17 de Abril de 2010, 22:09 »
Hola, de nuevo os pregunto sobre C, estoy dándole muchas vueltas y no comprendo porque puede ser el error.
Para mi programa estoy usando dup2() de esta forma, comprobando todos los errores que me puedan dar las llamadas al sistema:

Código: C
  1. fdIn=open(lectura,O_RDONLY);        //Abro el fichero de lectura
  2. valorIn=dup2(fdIn,0);                           //Cierra entrada estándar y duplica
  3. closeIn=close(fdIn);
  4. fdOut=open(escritura,O_CREAT,0700); //Abro el archivo de salida
  5. valorOut=dup2(fdOut,1);                       //Cierra salida estándar y duplica
  6. closeOut=close(fdOut);
  7. execvp(aux[0],aux);                             //esto ejecuta un comando sin argumentos, por ejemplo un wc o un head
  8. exit(EXIT_FAILURE);
  9.  

Lo que quiero hacer es abrir el fichero "lectura", que es un fichero que contiene texto y abrir, o crear en caso de que no exista, el ficero "escritura", al ejecutar el exec() quiero que "lectura" sustituya a la entrada estandar, y la salida estandar sea sustituida por "escritura", es decir, no escribo nada por teclado ni aparece nada en pantalla, por ejemplo, si el comando a ejecutar es un wc, en mi fichero "escritura" debería aparecer un número (resultado de haber contado palabras de "lectura")

Lo que me ocurre es que el segundo dup2 me da un error y no pasa de esa línea, ni siquiera devuelve un valor de error, lo que me aparece es esto al ejecutar:

Código: Text
  1. wc: error de escritura: Descriptor de archivo inválido
  2.  

No veo el error con el descriptor de fichero, duplico y cierro la salida estándar, para que me escriba en "escritura" y no por pantalla, alguien me puede ayudar? Espero haberme explicado bien.

Gracias adelantadas y por haberse leído este tochazo jeje.  :hola:

16
C/C++ / Re: Alguien me puede hacer este algoritmo
« en: Sábado 17 de Abril de 2010, 20:25 »
Hacerlo en pseudocodigo no es muy complicado, solo tienes que ponerlo, digamos, en la forma que se habla normalmente, me explico con un ejemplo:

Código: C
  1. if (entero==0){
  2.                printf("entero vale 0n");
  3.                entero=entero+1;
  4.         } else {
  5.                printf("entero vale %dn",entero);
  6.         }
  7.  
  8.  

en pseudocodigo seria algo como:

si entero vale 0 entonces
      imprimir
      entero<-entero + 1
sino
      imprimir


espero que te sirva para hacer tu código

17
C/C++ / Re: hola, necesito compilador
« en: Sábado 17 de Abril de 2010, 20:17 »
Hola, yo utilizo gcc y me va muy bien. Espero que te sirva :hola:

18
C/C++ / Re: Lenguaje C: fscanf
« en: Viernes 16 de Abril de 2010, 13:17 »
Hola, muchas gracias por las respuestas.

He probado con:
Código: C
  1. aux[0] = (char *)malloc(sizeof(char)*X);
  2.  

Y ya no aparece fallo de segmentación  :D
Me ha resultado muy extraño, pues tenía otro programa parecido y no tenia que reservar memoria con malloc.  :hola:

19
C/C++ / Lenguaje C: fscanf
« en: Jueves 15 de Abril de 2010, 12:39 »
Hola, quería preguntaros si veis algún error en la siguiente instrucción:

Código: C
  1. while (fscanf(punteroF,"%s %s %s",aux[0],argv.fIn,argv.fOut) != EOF){
  2.         //Trato de cada línea
  3. }
  4.  

Lo que quiero hacer es leer hasta final de fichero línea a línea. Este fichero tiene en cada línea 3 palabras separadas por espacios. Leo la primea cadena y la guardo en la primera variable, leo la segunda, tras el espacio y la guardo en la segunda... y así con la tercera

punteroF es de tipo FILE, y es el valor devuelto al hacer un fopen() (que hace correctamente)
argv.fIn y argv.fOut son cadenas de caracteres (char cadena[100];)
aux[0] es la primera posición de una variable declarada como char *aux[2];

Mi problema es que al hacer está instrucción mi programa me da un fallo de segmentación, alguien podría ayudarme?

Gracias por adelantado  :hola:

20
C/C++ / C: relanzar procesos hijo - wait() y fork()
« en: Viernes 9 de Abril de 2010, 10:46 »
Hola a tod@s! Me estoy haciendo un programilla en C en el que tengo varios procesos creados con fork() y cada uno de estos procesos ejecuta un programa con exec(). Al ejecutar mi programa, todos los que quiero ejecutar con exec () se lanzan a la vez. Por último, en el código de mi programa hago un wait() para esperar a que cada hijo (proceso) termine y muestro el estado con el que han salid. Hasta aquí todo me funciona bien, pero me gustaría que cuando uno de estos programas se cierre o muera se vuelva a lanzar, es decir, siempre van a estar ejecutandose.
He utilizado

Código: C
  1. Seleccionar todo
  2.     if (WIFEXITED(status)){
  3.              execvp (...);
  4.                             exit(EXIT_FAILURE);
  5.           }
  6.  


Pero con esto solo me lanza el primer programa ejecutado con exec() sea cual sea el que cierre, y lo que quiero es que si tengo tres programas A, B, C, se ejecuten simultaneamente y si cierrro el A se vuelva a lanzar el A. No sé si me explicado bien...
¿Cómo puedo saber cuando un hijo termina (sea cual sea el estado en que termino) para volver a lanzar el proceso?

Gracias adelantadas!

21
Python / Python: recorrer directorios recusirvamente
« en: Viernes 28 de Agosto de 2009, 10:25 »
Hola, alguien sabe como puedo recorrer con python un directorio y sus subdirectorios recursivamente? Hay que usar alguna función especial que me devuelva los directorios o algo asi?
He estado echando un vistazo a el post "Eliminar archivos duplicados del sistema" del forero Edo que creo que tiene bastante que ver. Pero estoy empezando y no lo entiendo muy bien jeje.

Saludos y gracias!  :hola:

22
Delphi / leer TEdit
« en: Jueves 27 de Agosto de 2009, 22:37 »
tengo un TEdit al que he llamado edit1 (que poco original XD). En el solo escribo un numero que quiero que lea. Lo he hecho de esta forma:

numero:=edit1.Text; {Para que me guarde en la variable numero lo que he puesto en edit1}

es correcto?¿?

Y una cosa mas, hay algun equivalente en delphi (o algo parecido) al writeln de Pascal?¿?

Saludetes!  :hola:

23
Delphi / Re: Empezando con Delphi
« en: Jueves 27 de Agosto de 2009, 22:35 »
Gracias!

Citar
Deberías haber creado un tema nuevo en el foro porque esta pregunta no tiene nada que ver con la original.

Mis disculpas. Pense que al ser de Delphi.. en fin pensé que más post serian molestos  ^_^  me van surgiendo dudas de diferentes tipos...

Haré los post según el tema jejeje

24
Delphi / Re: Empezando con Delphi
« en: Miércoles 26 de Agosto de 2009, 22:07 »
Bueno, tengo alguna dudilla mas con delphi, est vez de como leer un archivo binario. No se muy bien como leer un campo de un registro, me explico:

- Tengo un tipo TRegistro con diferentes campos:
Código: Text
  1. TRegistro=RECORD
  2.               campo1:string[1];
  3.               campo2:integer;
  4.          end;
  5.  
  6.  

- Y un fichero binario que contiene los registros: miFichero: FILE OF TRegistro;

Como puedo leer cada campo de cada registro y avanzar por el fichero (posicionanndome de registro en registro y de cada registro leer todos sus campos????

He probado esto (suponiendo que las variables auxiliares tienen el mismo tipo que el campo del TRegistro):
Código: Text
  1.  
  2. var
  3.    registro:TRegistro;
  4.    f:file of TRegistro;
  5. begin
  6.     AssignFile (f,'fichero.fic');
  7.     Reset (f);
  8.     while not EOF(f) do begin
  9.            Read (f,registro.campo1);
  10.            campoAuxiliar:=registro.campo1;     {Aqui, seria correcto: campoAuxiliar:=campo1; ???}
  11.            Read (f,registro.campo2);
  12.            campoAuxiliar2:=registro.campo2;
  13. end;
  14.  
  15.  

Esta correcto?¿? Es que las instrucciones read creo que no están bien. He googleado pero no he visto ejemplos con registros de forma clara.

Gracias de antemano!

25
Delphi / Dibujar lineas con el raton (Solucionado)
« en: Lunes 24 de Agosto de 2009, 22:07 »
Hola, me ha surgido un problemilla al intentar dibujar trazos con el ratón sobre un TImage. estuve buscando por internet y encontre un tuto bastante sencillo de como dibujar (de momento solo con una llinea en negro para empezar con algo fácil) pero no me funciona como debe y no se porque es.
Mi diseño es simple: mi TForm con un Timage dentro que cubre todo (align=alClient)
Mi codigo con ayuda del tuto:

Código: Delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls;
  7.  
  8. type
  9.   TForm1 = class(TForm)
  10.     Image1: TImage;
  11.   private
  12.     { Private declarations }
  13.     Pintando : Boolean;
  14.  procedure FormCreate(Sender: TObject);
  15.     procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  16.     procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
  17.     procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
  18.  
  19.   public
  20.     { Public declarations }
  21.   end;
  22.  
  23. var
  24.   Form1: TForm1;
  25. implementation
  26.  
  27. {$R *.dfm}
  28.  
  29. procedure TForm1.FormCreate(Sender: TObject);
  30. begin
  31.  Pintando := False;
  32.  Image1.Canvas.Refresh;
  33. end;
  34.  
  35. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
  36. begin
  37.  If Button = mbLeft Then
  38.  Begin
  39.    Pintando := True;
  40.    Image1.Canvas.MoveTo (X,Y);
  41.  end;
  42. end;
  43.  
  44. procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
  45. begin
  46.  If Pintando Then
  47.   Image1.Canvas.LineTo (X,Y);
  48. end;
  49.  
  50. procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
  51. begin
  52.  If Button = mbLeft Then
  53.   pintando := False;
  54. end;
  55. end.
  56.  
  57.  

Al ejecutar el programa me deberia salir la ventana como un lienzo en blanco (tal como el ejemplo del tutorial) y poder hacer trazos pulsando el boton izq del raton pero no aparaece lienzo en blanco, solo mi Tform como sino hubiese puesto Timage. Sabeis porque podria ser? Puede ser por la version de Delphi? La mia es Turbo Delphi 2006.

Un saludo y gracias adelantadas!!!

EDIT: Ya está!!!! Mi error ha sido que tengo que escoger los procedimientos en Events del Objet Inspector

Páginas: [1] 2