• Sábado 20 de Abril de 2024, 00:54

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

Páginas: [1] 2
1
C/C++ / Re: Ayuda Con Unix Help System
« en: Miércoles 3 de Diciembre de 2003, 12:31 »
Hasta donde entiendo quieres hacer un menu de ayuda parecido al man del unix:

La primera parte es sencikka por que despliegas un menu con las opciones que deseas presentar:


potdrias manejar un archivo de texto donde colocas todos las comandos con una pequeña descripcion, ordenado alfabeticamente. y lo presentas cuando la opcion sea presentar todos los comandos.

cuando la opcion sea pedir un comando especifico, ya la cosa se complica, por que deberas encontrar un metodo de busqueda, que podria der recorrer un arreglo de estructuras en forma secuencial, donde colocas en un elemento el nombre del comando, en el segundo elemento una breve descripcion y en el tercer elemento un archivo de texto donde colocas toda la descripcion y la sintaxis del comando

por ejemplo defines

#define NUMERO_COMAND 100
struct Ayuda
 ABRES CORCHETES
    char Comando[12]; //Nombre del Comando
    char Descripcion[81]; //Breve descripcion
    char Pathname[81]; //Archivo de texto donde se describe como funciona
 CIERRAS CORCHETE; Comandos[NUMERO_COMAND];


Con Comando[0].Comando Accederias al Nombre del Comando
Con Comando[0].Descripcion Accederias a la breve descripcion
Con Comando[0].Pathname Accederias al Nombre del archivo que contiene la descripcion completa del del comando el cual podrias presentarlo en pantalla

haces un for por ejemplo para comparar el nombre del comando solicitado con el que se encuentra en la estructura, presentas su nombre con una breve descripcion y la posibilidad de presentar el archivo de texto que lo descrive en detalle

Espero te sirva la informacion
Saludos Bench

2
C/C++ / Libreria time.h en Lenguaje C
« en: Domingo 16 de Febrero de 2003, 22:17 »
La función clock retorna una veriariable tipo clock_t que permite representar la fecha y la hora como un entero largo.

Este valor de retorno representa el numero de pulsos del reloj del sistema que han ocurrido durante el tiempo que ha estado ejecutandose el programa que la llama.

Para convertir este valor en segundos se debe dividir por la macro CLOCKS_PER_SEG. que es el número de pulsos del reloj del sistema ocurridos por cada segundo transcurrido

Claudio H. Núñez Guzmán
<chng_14@BenchSQL.com>
http://www.BenchSQL.com/

3
HTML / Problema al hacer una web
« en: Lunes 20 de Enero de 2003, 06:06 »
Revize tu codigo, en la etiquete <IMG el parametro src="" No indica la URL de la Imagen que estas tratando de mostrar.

Esto debe ocurrir Por la forma como estas tranfiriendo la pagina a tu sitio WEB.

Abre la página localmente, con el visualizador y si abre correctamente copiala como pagina WEB con el nombre que vas a utilizarla en el servidor y trasfiere la pagina y su carpeta asociada al servidor web mediante una sesion ftp.

Saludos:

http://www.BenchSQL.com/


http://pics.miarroba.com/logo_miarroba_espacio.gif"

4
C/C++ / Reasignacion Dinamica HELP!!!!!
« en: Lunes 20 de Enero de 2003, 05:28 »
Tengo un array de puntero a descriptores de archivo FILE **listado[30] ,y deseo redimensionarlo sin tenerlo que copiar en una cadena auxiliar. Se que se puede hacer con realloc() pero no me sale.
Alguien podria hecharme un cable...  

Salu2

La Declaración:

FILE **Listado[30] ?.
 Seria Similar a Declarar FILE *Listado[][30] o sea estas haciendo un Arreglo Tridimencional,
 Es eso lo que estas buscando hacer ?. Es probable que por aqui tengas el problema al tratar de usar Realoc.

Acuerdate que FILE es una estructura, de Tal Forma que al asignar memoria dinamica para copiar la información, no solo debes asignar memoria al puntero sino tambien a la estructura.

Saludos

Bench
http://www.BenchSQL.com/

5
HTML / Variables en Html?
« en: Miércoles 1 de Enero de 2003, 22:19 »
Con Lenguaje HTML se pueden crear Formularios.

Etiqueta <FORM> y </FORM>
    Definición general del Formulario. Dentro de estas etiquetas definiremos los Distintos elementos necesarios para la Entrada y Salida de Datos. Mediante el uso de tres Etiquetas destinadas para tel fín: <INPUT>, <TEXTAREA> y <SELECT>.

Formato:
<FORM action="URL del programa que trata el formulario" method="post/get"  
Elementos del Formulario  
</FORM>  


Descripción de Los Parametros:
     action="URL del programa que trata el formulario"
A través de este argumento indicaremos, como ya hemos mencionado, la dirección del fichero de programa que va a tratar la información suministrada por el formulario.

method="post/get"

     A través de este argumento indicaremos el Método empleado para transferir la información generada por el formulario.

    Si indicamos post, se producirá la modificación del documento destino, como es el caso de enviar la información a una dirección de correo electrónico.


    AL utilizar el método "get" no se producirán cambios en el documento destino. Sino que se enviara la información recabada Por el formulario  mediante el protocolo http. a la URL del programa que trata el formulario, indicada en el parametro "action".

     El Programa que trata el formulario es realmente el encargado de determinar el tamaño y el contenido de las variables que se han definido en el formulario, esto sucede en el servidor web a traves de la manipulacion de las variables de ambiente mediante la interfax CGI-BIN. estos programas pueden elaborarse con PHP, Java, perl y lenguaje C.

     Una información más Completa de como se elabora un Formulario en HTML de encuentra en la Dirección WEB:

http://www.BenchSQL.com/Formularios%20en%20HTML.htm

     Para Finales del Primer Trimestre del Año 2003 esperamos tener completa toda la información básica, para la elaboración de aplicaciones CGI-BIN y el tratamiento de la variables suministradas por el formulario.

Esperando les sirva la información

Saludos:

Bench.
email: http://www.BenchSQL.com/

6
C/C++ / contadores con reloj del sistema
« en: Miércoles 1 de Enero de 2003, 20:50 »
Enga:

   No se que estas tratando de hacer Pero aqui tienes información Para el manejo de fecha y horas en forma estandar en lenguaje C.

    Las Funciones estandar para manejar la fecha y la hora del sistema estan
definidas en el archivo de cabezera TIME.H.
    En ella se definen dos tipos de variables para el manejo de las fechas y
las horas:

size_t:
    Similar a un entero sin signo.
clock_t y time_t:
    Permiten representar la fecha y la hora como un entero largo.
y el tipo de estructura "tm"
    Este tipo de estructura permite mantener la fecha y la hora separada en
sus elementos y esta definida de la siguiente manera:

struct tm
  {
    int tm_sec;     /* segundos 0-59 */
    int tm_min;    /* minutos 0-59 */
    int tm_hour;   /* horas 0-23 */
    int tm_mday; /* día del mes 1 - 31 */
    int tm_mon;   /* meses desde enero 0-11 */
    int tm_year;   /* años desde 1900, 00 (+)*/
    int tm_wday; /* dias desde el domingo, 0-6 */
    int tm_isdst;  /* indicador de horario de verano */
{; /*fin de la estructura -> cerrar llave:*/

(+) el elemento tm.tm_year contiene los años trascurridos desde el año 1900,
de tal forma que al algoritmo hay que sumarle 1900 para obtener el año en 4
digitos: por ejemplo 100+1900 = año 2000.

obtener la fecha y hora del sistema:
struct tm *Mi_Fecha;
char *Buffer_Datos_Fecha;
time_t Hora = time();
Mi_Fecha = localtime(&Hora);
/***
Se convierte el contenido de los datos de
la estructura tm en una cadena con la forma siguiente:
dia_semana mes día horas:minutos:segundos año n
****************************/
Buffer_Datos_Fecha = asctime(Mi_Fecha);

los buffer generados por asctime y por localtime son estaticos y se
modifican con cada llamada a las respectivas funciones, por lo tanto si se
quieren conservar se tienen que copiar en otro sitio.

las otras funciones ansi son :

clock_t clock(void)

      Esta función devuelve el numero de pulsos del reloj del sistema que han ocurrido desde que ha estado ejecutandose el programa que la llama.

     Para Obtener el Valor aproximado del tiempo EN SEGUNDOS, que tiene ejecutandose el programa que la llama el valor devuelto por esta función se debe dividir por la macro CLOCKS_PER_SEC


char *ctime(const time_t *Hora);
double difftime(time_t hora2, time_t hora1); /* diferencia en segundos */

    Estas son casi todas las funciones ANSI de las que dispoce el c para el
manejo de fechas y horas, el resto hay que construirlo a partir de ellas.

Como Podras observar el Tema no es sencillo. Por lo Menos si lo quieres manejarlo en forma estandar. Algunos Compiladores Ofrecen opciones más sencillas, pero al no ser estandares no son de mi interes.

Espero les sirva la información

Saludos

Bench

http://www.BenchSQL.com/

7
C/C++ / Fallo al intentar pasar como parametro un array multidimensi
« en: Miércoles 1 de Enero de 2003, 19:48 »
Saludos Ozonek:

Tengo la Impresion de que el prototipo de la funcion es incorrecto ya que buffer es un arreglo de punteros y el prototipo debe ser:

void dibujar_ahorcado(char *buffer[]);
ó
void dibujar_ahorcado(char **buffer);

Las dos declaraciones indican lo mismo que: buffer es un puntero a un arreglo de punteros.

de tal forma que:

si el programa es :

...

char buffer[4][6];
/***
Se Cargan Los 4 Elementos de la
matriz con maximo 5 caracteres c/u
***************************/
strcpy(buffer[0], "Ele_1");
strcpy(buffer[1], "Ele_2");
strcpy(buffer[2], "Ele_3");
strcpy(buffer[3], "Ele_1");
...
/***
Pasar buffer como parametro
**********************/
dibujar_ahorcado(buffer);
...
/***
Sigue la Funcion Principal...
*********************/

/**************************
Cuerpo de dibujar_ahorcado(char **B_uffer);
Parametro: Puntero al Arreglo de
Punteros. debes controlar que la
funcion no exeda los limites definidos
cuando declaraste buffer. es decir
B_uffer va a apuntar a una matrix
de 4 Elementos que apuntan a un
arreglo de 6 elementos cada uno.
**************************/
void dibujar_ahorcado(char **B_uffer)
 {
  /***
  Si Por Ejemplo quiero imprimir el
  caracter almacenado en el primer
  elemento del Primer Arreglo:
  **** *********************/
  putchar(B_uffer[0][0]); // Imprimira E
  putchar(B_uffer[0][1]); // Imprimira l
  putchar(B_uffer[0][2]); // Imprimira e
  putchar(B_uffer[0][3]); // Imprimira _
  putchar(B_uffer[0][4]); // Imprimira 1
  /***
  B_uffer[0][5]) // contendra /0 = 0
  **************************/
 /***
  y de esta manera podras accesar cada uno de los elementos de la matriz. Debes tomar en cuenta que el primer elemento de la matriz es el B_uffer[0][0] y el Ultimo
es el B_uffer[3][5] Por que esto no lo controla el C.
Si Utilizas Por ejemplo el elemento B_uffer[100][10] el programa compilara bien, pero dara un error en tiempo de ejecución que dependera del compilador y del sistema operativo que este Usando por que habra una violacion del area de memoria que destinaste al declarar el arreglo.

Esperando te sirva la información

Saludos:

Bench.

http://www.BenchSQL.com/
 Prototipo de la funcion que lo recibe

........
........

// Dentro de una funcion llamada control (que recibe un array como parametro), declaro el array que quiero pasar
y luego llamo a la funcion tres veces:

char buffer[4][6];

8
C/C++ / Tengo un progrmaa servidor y otro cliente! pero?
« en: Miércoles 1 de Enero de 2003, 18:58 »
La forma es crear un socket de escucha para recibir la peticiones de los clientes y crear nuevos procesos para atenderlas.

Esto ya depende del Sistema operativo con el que trabajes, si el servidor es bajo ambiente unix puedes utilizar la primitiva fork o vfork para crear los procesos hijos que van a atender las peticiones de los clientes (que pueden estar corriendo en cualquier sistema operativo), ya que se trata de un sistema operativo multiusuario.

En ambiente windows, existe lo que se llaman hebras (creo que es treads en ingles) para crear varias tareas y que desde cada una se atiendan las peticiones de los clientes. por tratarse de un sistema multitarea y no multiusuario (?).

Saludos:

http://www.BenchSQL.com/

9
C/C++ / Re: Duda con punteros a estructura
« en: Miércoles 1 de Enero de 2003, 18:41 »
No conosco direcX de tal forma que no se como trabaja con las estructuras.

Pero hasta donde tengo entendido en "C" cuando uno pasa una variable tipo puntero, lo unico que se carga en la pila es la información referente a la dirección relativa donde empiezan los datos a los que apunta y la información del tipo de dato al que apunta.

De tal forma, que a mi entender, cuando se pasa un puntero como parametro a una función, el espacio que ocupa en la pila no depende del tipo de dato al que apunte, sino a la calidad del compilador que se este utilizando y de como este manipule la pila. Es decir no depende del programador.

Saludos:

http://www.BenchSQL.com/

10
C/C++ / Re: enteros largos
« en: Miércoles 1 de Enero de 2003, 18:09 »
Si el Dato es muy grande Declara un double.

Algunos compiladores tienen problemas cuando se le asigna un número entero a una variable double. de tal forma que es recomendable que lo escribas con dos ceros como decimales.

Ejemplo:
double Dato = ZERO;
Dato = 123456789012.00;

La otra forma es que moldees el dato:

Por ejemplo si lo estas recibiendo en modo texto:

char Buffer[16] = "123456789012";
double Dato = (double)atoi(Buffer);

Si tienes problemas con esta instruccion
Prueba con esta:

char Buffer[16] ="123456789012";
double Dato = ZERO;
strcat(Buffer,".00");
Dato = atof(buffer);

Espero que la información te sea de utilidad.

Saludos Bench:

http://www.BenchSQL.com/

11
C/C++ / Re: variables tipo float
« en: Martes 5 de Noviembre de 2002, 16:36 »
Debes Tener Cuidado al usar variables de punto flotante, tanto tipo float como double, ya que la precisión y la presentación de la variable son dos cosas diferentes:

Puedes Presentar el valor de la variable con la cantidad de digitos que desees, pero las operaciones que realizes con ellas seguiran utilizando el total de dígitos de precision que corresponda al tipo de variable usado lo que genera errores de precision:

Por Ejemplo Si Sumas:

2.00493522 + 2.0051 sera igual a
4.01003522

Si Presentas una suma en pantalla con dos digitos te asparecera:

2.00 + 2.00 = 4.01.

Esto te hara Fallar cualquier algoritmo donde pretendas comparar u acumular el valor de las variables.

Por esto es recomendable redondearlas al numero de digitos de precision que vas a presentar en pantalla que es probablemente el que desees utilizar.

Saludos

Bench

12
GNU/Linux / utilizacion de fork() en unix
« en: Jueves 19 de Septiembre de 2002, 14:34 »
La Primitiva fork(). Retorna un Cero al Proceso Hijo y el Pid del hijo al proceso padre. Creando una Copia de los Datos con los Valores que tengan al momento de lanzar el proceso hijo, a partir de ese momento las variables son independientes  y si se modifican en un proceso, no afecta su valor en los otros.
Para comunicar los procesos se puede Utilizar pipes, memoria compartida SHM, archivos de disco y otros.

Esquema:

...
int Mi_Pipe[];
int Fid[3];
....
Fid[0] = getpid(); /* Pid del Padre */
pipe(Mi_Pipe);
/******************************
Se creo el Cauce de comunicación
Mi_Pipe[0] => Descriptor de Acceso an Lectura.
Mi_Pipe[1] => Decriptor de Acceso en Escritura.
*****************************/
....

if(!(Pid[1] = fork()))
  {
   /***
   Codigo del Proceso Hijo 1.
   ***************/
   return; /* Finalizar el Proceso */
   }
/***
Proceso Padre Tiene en Pid[1]
El pid del Primer Porceso Hijo
***********************/
if(!(Pid[2] = fork()))
  {
   /***
   Codigo del Proceso Hijo 2.
   ***************/
   return; /* Finalizar el Proceso */
   }
/***
Proceso Padre Tiene en Pid[2]
El pid del Primer Proceso Hijo
***********************/
/*******
Codigo del Padre
*************/
Para Sincronizar los Procesos se Pueden
Utilizar la Primitiva signal, kill

Espero te Sirva la Información

13
ASM (Ensamblador) / timer en ensamblador 80x86
« en: Jueves 5 de Septiembre de 2002, 14:56 »
el ANSI C define la funcion clock_t clock() de la siguiente Manera:

el tipo clock_t permite representar la fecha y la hora del sistema como un entero largo.

La Funcion clock() devuelve un valor aproximado del tiempo que ha estado ejecutandose el programa que la llama. Para transformar ese valor en segundos, se divide por la macro CLOCK_PER_SEC. La funcion retorna -1 si esta cuenta de tiempo no esta disponible.

la macro CLOCK_PER_SEC esta definida en time.h y esel numero de pulsos por segundo del reloj del SISTEMA.

DEFINICIONES TOMADAS DEL LIBRO: C Manual de Referencia, Tercera Edicion, Herbert Schildt, SERIE McGRAW_HILL de Informatica.

De lo anterior podemos deducir que la funcion clock lo que realmente esta retornando es el numero de pulsos del reloj del sistema que han ocurrido durante el lapso de tiempo que ha estado ejecutandose el programa que la llama. De tal manera que si quisieramos tener una precision del tiempo tenscurrido en segundos,Milisegundo o microsegundos. Lo Obtendriamos de la siguiente manera:

double Tiempo_Segundos = (double) clock()/CLOCK_PER_SEC;

double Tiempo_Miliseg = (double) clock()/(CLOCK_PER_SEC/1000);

double Tiempo_Microseg = (double) clock()/(CLOCK_PER_SEC/1000000);

con lo cual se lograria la maxima presicion de los tiempos transcurridos entre cada llamada a clock().

Los conceptos son una transcripcion TEXTUAL y esta es mi interpretacion y todo es ANSI C de tal forma que debe funcionar en cualquier compilador de C++.

Espero que esta informacion te sirva de ayuda.

14
C/C++ / Limites de punteros AYUDA!!
« en: Viernes 26 de Julio de 2002, 14:21 »
DELpi:

Si Creas Una Matriz de Punteros, Que No Apuntan a Nada: Lo Que Vas a Obtener al Tratar de leer su Contenido es Nada. o Lo que es peor BASURA.

Debes Inicializar Todos los Punteros de La Matriz = NULL, e ir inicializando cada uno de los puntos de la matriz con el puntero que apunta al area de memoria reservada para el NODO que contiene la informacion, en la medida que esta se vaya incluyendo.

15
C/C++ / Ayuda de alguien por favor
« en: Viernes 19 de Julio de 2002, 05:04 »
#include<stdio.h>
#define MAX 100
FILE *dat, *out;
void mostrar(char [][16]);
void marcar(char [][16],int,int,int,int);
void limpiar(char [][16]);
char datos[MAX], pantalla[16][16];
main()
{
  int i, j, x, h, x_inicio, x_fin, y_inicio, y_fin;
  if((dat=fopen("dibu.dat","r"))==NULL)
  printf("Error de apertura del archivo 'dibu.dat'");
  else
   {
     i = 0;
     while(!feof(dat))
       {
        /* i++; */
       /*******************
       Datos es Un Puntero a Un arreglo de  MAX caracteres y le estas asignando el
retorno de la función fgets que es un int o un char.
       *******************/
       datos = fget(dat); /*datos = fgetc(dat);*/
        if((datos == 32) || (datos == 10) ||   (datos == 13)) continue;
        i++;
       }
     fclose(dat);
    }
 for(j = 0; j < i; j++) printf("%c,",datos[j]);
 limpiar(pantalla);
 mostrar(pantalla);
 if(datos[0] == '1')
 {
  x_inicio = y_inicio = 1;
  x_fin = y_fin = 8;
 }
 if(datos[0] == '2')
 {
  x_inicio = 9;
  x_fin = 16;
  y_inicio = 1;
  y_fin = 8;
  }
 if(datos[0] == '3')
 {
  x_inicio = y_inicio = 9;
  x_fin=y_fin = 16;
  }
 if(datos[0] == '4')
  {
   x_inicio=1;
   x_fin=8;
   y_inicio=9;
   y_fin=16;
   }
  x = 1;
  while(x != i)
    {
     while(datos
  • != 'x')

       {
        if(datos
  • == '1')

        /*****
        Incorrecto Por Ser Variables Int
        Para Multiplicarlas Por 0.5 deben ser declaradas como float o como double
*******************************/
        x_fin = y_fin = (0.5*(x_fin+x_inicio-1));
if(datos
  • =='2'){

x_inicio=(0.5*(x_fin+x_inicio+1));
y_fin=(0.5*(y_fin+y_inicio-1));
}
/***
Desoues continuo.
*****/
if(datos
  • =='3')

x_inicio=y_fin=(0.5*(x_fin+x_inicio+1));
if(datos
  • =='4'){

x_fin=(0.5*(x_fin+x_inicio-1));
y_inicio=(0.5*(y_fin+y_inicio+1));
}
x++;
}
marcar(pantalla,x_inicio,x_fin,y_inicio,y_fin);
mostrar(pantalla);
printf("ja0ja0a");
}
printf("ja0ja0a");
mostrar(pantalla);
return 0;
}
void mostrar(char pantalla[][16]){
int i,j;
for(i=0;i<=16;i++){
printf("n");
for(j=0;j<=16;j++)
printf("%c",pantalla[j]);
}
}
void limpiar(char pantalla[][16]){
int i, j;
for(i=0;i<=16;i++)
for(j=0;j<=16;j++)
pantalla[j]='o';

}
void marcar(char pantalla[][16], int q, int w, int e, int r){
int t, y;
for(t=q;t<=w;t++)
for(y=e;y<=r;y++)
pantalla[t][y]='x';
}

16
C/C++ / Re: Quien puede decirme como trabajar con la memoria expandi
« en: Sábado 29 de Junio de 2002, 19:15 »
No Entiendo Lo Que quieres Hacer:

Pero de Todas Maneras en C Cualquier Area de Memoria Se Accede a Traves de Un Puntero:

Por Ejemplo Si Deseas Atacar La Memoria de Video:
Declaras Un PUntero Tipo Char a la Direccion de Memoria. conocida

char *Punt = (char)A00000;

has declarado un Puntero tipo char
que apunta a la direccion de memoria A00000;

17
C/C++ / Insertar un string en otro string
« en: Sábado 29 de Junio de 2002, 19:06 »
main()
 {
   char cadena1[100];
   char cadena2[100];
   char resultado[200];
   int a, b, c, d;
   printf("Inserte su texto afectado: ");
   scanf("%s",&cadena1);
   printf("Inserte su texto a introducir: ");
   scanf("%s",&cadena2);
   printf("Indique la posicion en donde se   insertar la cadena: ");
   scanf("%i",&c);
   /***
   b No Esta Inicializado
   Tratas de Copiar la Cadena 1 hasta la
   Posicion c ??
   **********************
   for(a = 0; a < c; a++, b++)
    {
     resultado[a] = cadena1<b>;
    }
  ******************************/
   /***
   Copia La Cadena 1 en el Resultado
   *****************************/
   strcpy(Resultado,Cadena1);
   /***
   Corta el Resultado en la pos c
   ************************/
   Resultado[c] = 0x00;
   /***
   Anexale La cadena 2
   ****************/
  strcat(Resultado,Cadena2);
  /***
  Anexale LO Que Queda de la Cadena1
  a Partir de la Pos c.
  ******************************/
 strcat(Resultado,&Cadena1[c]);
 printf("Resulado [%s]n",Resultado);
 }


Esperote sirva.


return 0;
}

18
C/C++ / base de datos en C
« en: Lunes 24 de Junio de 2002, 17:51 »
Para Utilizar Un Archivo Como Una Base de Datos. Tipo Texto Por Ejemplo Tipo DBF
Debes:
Desarrollar Un Menejador de Base de Datos.
El Archivo.dbf.
Compuesto Por:
La Cabezera
Estructura que Contiene la Fecha, El Usurio, La Descripcion, el Nombre y el Tamaño de Los Campos, el Nro de Registros que Contiene el Archivo y el Inicio del Primer Registro.

y el archivo.idx

La Cabezera. Contiene entre Otras Cosas
El Nombre de los Campos Clave, Su  Tamaño, El Inicio del Primer Nodo del Arbol Binario. y el Apuntador al Nodo Raiz del Arbor.
y Luego Desarrollar:
Funciones de Apertura de Base de Datos
Funciones de Busqueda,
Funciones Para Agregar o Eliminar Registros.

Todo Estos Si Deseas Manejar Los Archivos Como Base de Datos. y Los Puedes Menejar Tanto en Modo Texto o en Modo Binario. Por Va a Depender de la Forma Como Desarrolles Las Funciones. Tanto Para Grabar Como Para Leer Los Campos de las Bases de Datos.

Ahora Si Lo Que Deseas es Manejar Un Pequeño Fichero de Datos. Con Campos y Tamaño de Registro ya Conocidos Por el Programador, en el Momento de Iniciar la Aplicacion:

Puedes Crear La Estructura del Registro, Con el Nombre de Los Campos, y Como ya Coneces el Tamaño Puedes Agregar o Eliminar Registros en la Medida que le vayas entrando Informacion. Con Algoritmos Recursivos Relativamente. Simples:

Por Ejemplo Si Tienes Un Campo Numerico de 10 Caracteres con Dos Decimales:

Cunado Lo Vayas a Utilizar Lo Conviertes a un double

double Dato = atof(Campo_Numerico);

Y Cuando Lo Vas a Grabar Lo Conviertes
a Mod texto con la funcion:

sprintf(Campo_Numerico,"%10d",Dato);

19
C++ Builder / cliente servidor
« en: Domingo 2 de Junio de 2002, 20:13 »
Quieres Cumunicar 2 Maquinas, Para Que, en que sistema operativo, con que tipo de Protocolo.

Visita:

http://www.arrakis.es/~dmrq/beej/index.html

http://www.starlinux.com.ar/articulos/sockets.html

20
C/C++ / como hacer un editor de textos
« en: Lunes 13 de Mayo de 2002, 23:46 »
Pasame el  Codigo Por Correo Para Echarle Una Mirada:

chng_14@hotmail.com

De todas Formas Si Estas Tratando Con Diferentes Tipos de Fuente en la Pantalla
Es conveniente Crear un Buffer Con Una Estructura Donde se debe Guardar: La Posicion el Caracter y el Atributo. Normalmente Tratados Con Logica de bits.

21
C/C++ / sockets
« en: Lunes 13 de Mayo de 2002, 02:29 »
petcher

Lo Siento  La Informaciòn Sobre la conexiòn entre sockes Se Perdio al Tratar de enviarla Lamentablemente la Elabore en Linea y Se Perdio. cuando Tenga Tiempo Te la Envio Por correo.

Aparentemente hay Prolemas con el Foro Da un Mensaje de Error en la Base de Datos.

Un Socket es Un Punto de Conexión entre Procesos Si Se Estan ejecutando en la Misma Maquina o en la Red.

La Primitima soketpair Crea Dos sokets enlazados en el dominio UNIX (AF_INET) y a Su Retorno Obtenemos Sus Descriptores de Archivo en el Cuarto Parameto El cual Debe Ser Un Array de 2 Enteros.

PROTOTIPO:

soketpair(Dominio,Tipo,Protocolo,Fid_Socks)

int Dominio; /*AF_UNIX*/
int Tipo; /*SOCK_DGRAM ó SOCK_STREAM */
int Protocolo;  /* 0 */ /*Protocolo Subyacente al tipo */
int *Fid_Socks; /*int FID_SOCKS[2] */

Los Sokets Creados Con Esta Primitiva Solo Pueden Trabajarse Localmente en el DOMINO UNIX).

Por Otra Parte Toda conexion entre Dos Sockets del Tipo SOCK_STREAM (Protocolo Subyacente TCP) es el Resultado de una llamada con exito a la Primitiva connect. Creando un circuito Virtual entre los dos Procesos cuyos extremos son los sockets. Este Circuito Permite el Uso de las Primitivas de ENTRADA/SALIDA read y write. o las Primitivas especificas para sockets send  y recv.

PROTOTIPO:

int connect(Sock_Local.Punt_Adr,Len_Adr)
int Sock_Local; /*Descritor del Socket LocaL*/
struct sockaddr *Punt_Adr; /*Dirección del Socket Remoto */
int Len_Adr; /* Longitud de la Dirrecccion Remota */

VALOR DE RETORNO:

0  Si la conexion Pudo Establecerse.

-1 Si Hubo un Fallo en la conexion y la variable "errno" Permite conocer la Razon del Fallo.

22
C/C++ / Re: sockets
« en: Viernes 10 de Mayo de 2002, 18:17 »
petcher

El Tema es Bastante interesante, ya que es la base de la filosofia cliente servidor:
De Tal forma que la Aplicacion Tiene Dos Puntos de Vista:

El Primero desde el Punto de vista del Cliente que va a recibir el servicio

Y el Segundo desde el punto de vista del Servidor que es Quien Va a Prestar el Servicio a los Diferentes Clientes.

Me Pareceria interesante Que Plantearamos Un Nuevo Tema Para Crear Una Aplicación Cliente Servidor en el dominio internet.

23
C/C++ / Fichero > Puntero > Estructura
« en: Viernes 26 de Abril de 2002, 03:27 »
La Explicacion No esta Muy Clara:

1.- No Defines Como Es la Structura.

2.- No Defines Como Creas el Archivo.txt
     Ni Como Esta Organizado Su    Contenido.

Tampoco Entedi Muy Bien el Problema.

Por la Extencion que usas Supongo que se trata de un Archivo de texto. Si Este
es el caso debe venir organizado Por Lineas.

Por Ejemplo

  Fecha          Movimiento    Total

14/01/2001   20000,00       20000,00
15/01/2001  -10000,00       10000,00

12345678901234567890123456789

tienes 29 caracteres significativos en el texto

el primer campo lo tienes desde el caracter 1 al 9.

el segundo campo  lo tienes desde el
caracter 11 al 19

el tercero del 26 al 35.

Si el Primer de la Linea No es Un Numero
Se Descarta la Linea.

Primero Lees La Linea Byte a BYTE hasta encontrar el Caracter de Fin de Linea

Evaluas Su Contenido Hasta el Caracter de Fin de Linea.

Si Es DOS el caracter de Fin de Linea es el 10 (NL) y el (CR)
Si es Unix Solamente el NL.

Si el Primer Elemento de la Linea es Un Numero Evaluas (En el Ejemplo) Si Corresponde al 1 o al 2 (Dia) Si NO Descartas La Linea.

Espero Que la Esplicacion No Sea Mas Enrredada Que la Pregunta y te Sirva.

24
C/C++ / Re: rutinas para el teclado ¿?¿?
« en: Martes 16 de Abril de 2002, 02:15 »
Por Que NO Pruebas Con Una Rutina Similar a la Evaluacion de Una Secuencia de Escape.

Evaluando Primero La Primera Tecla y Esperar Mediante un timeout Si Se Teclea
la Segunda Tecla Esperada.

25
ASM (Ensamblador) / Re: Interfaz C - ASM
« en: Miércoles 27 de Marzo de 2002, 01:45 »
convenios de llamada del compilador - bench (26-03-02)
Una Funcion Desarrollada en Lenguaje ensamblador Puede Integrarse a Un Programa en C
si es compatible con los convenios de llamada del compilador C, que estes Utilizando:

La Mejor Forma de Saber Cuales son los Convenios de llamada de tu compilador C
es ver Como genera codigo ensamblador el compilador que estas utilizando.

Elaborar Un Programa sencillo:

char a;
char Mi_Funcion(char b);
void main(void)
{
a = Mi_Funcion(2);
}

char Mi_Funcion(b)
{
char c = 1;
return(b+c);
}

Luego Compilala Con la Opcion Para Generar Codigo Ensamblador.

Con el Compilador Microsoft La Siguiente Orden:

cl -Fa prueba.c

Generara un Archivo prueba.asm

Donde Encontraras el codigo ensamblador:

Analiza Los Convenios de llamada de la Funcion "Mi_Funcion" y Modifica si es Necesario
tus Funciones en Assembler Para que Cumplan este Convenio y Luego Pogras Llamarlas desde C
Como a Cualquier otra Funcion.

Páginas: [1] 2