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

Páginas: [1]
1
"t" es el numero de campos customizados, por eso los dos arrays se repiten "t" veces.

2
Muchas gracias. mi principal problema con el Crear es hacer dos vectores asi:

Vector1. Código del campo/Descripción del campo

Vector2. Cantidad de campos completos/Código del campo/Contenido del campo

tambien hacer un IF largo del contenido del vector es distinto de 0:
if arrayNameDato.length<>0

3
gracias por la respuesta. le cambie unas cosas pero me sigue tirando errores en las sig. lineas:
teclado tc = new Scanner(System.in);

if arrayNameDato.length<>0 //trato de calcular el largo del string en el array

salida.writeInt(arrayNumDato[c]);
salida.writeInt(arrayNameDato[c]);

salida.writeString(arrayNameDato);
 
Código: [Seleccionar]
package examen4;
import java.util.Scanner;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class crear {
private static Scanner teclado;
public static void main(String[] args) {

teclado tc = new Scanner(System.in);
        FileOutputStream fos = null;
        DataOutputStream salida = null;
        int n;
        short s; //serial (2bytes)
        char f;  //filename (2bytes)
        byte t;  //# campos custom (1byte)
        byte c;
        byte i;  //contador FOR
        char x;  //nombre de dato nro
        int d;  // fecha actual sistema
        byte r; //cantidad de registros
        int v[]; //VECTOR numero
        char b[]; //vector letras
        int Camp; //contador de campos completados
        int k;

        try {
            fos = new FileOutputStream("C:/Dev-Pas/EXAMEN444.dat");
            salida = new DataOutputStream(fos);

            System.out.print("Introduce número Serie:"); //serial
            s = tc.nextShort();
           
            System.out.print("Ingrese Nombre Archivo:"); //path
            f = tc.nextChar();
           
            //CALCULAR FECHA ACA //fecha
            salida.writeInt(d);
           
           
            System.out.print("Ingrese Cantidad de Campos Customizados:"); //campos custom
            t = tc.nextByte();
           
           
            Byte [] arrayNumDato = new Byte [t];
            String [] arrayNameDato = new String [t];
           
           
            for(i=1; i<t+1; i++) //codigo 1,2,3,4
            {
              arrayNumDato[i]=i;   // Campo[tal].suNumero
              salida.writeByte(i);
              System.out.print("Ingrese Nombre de dato numero"+t); //nombre,tel,dir,email
              arrayNameDato[i] = tc.nextLine();
              tc.nextString();   // escribir el vector[i] nombrecampo
               
              salida.writeString(arrayNameDato[i]);
            }
           
            System.out.print("Ingrese la cantidad de registros:"); //cantidad de registros
            r = tc.nextByte();
            salida.writeByte(r);
           
            System.out.print("Ingrese los"+r+"contactos"); //datos contactos concretos
            for(i=1; i<=r; i++)  //desde el primer contacto hasta el ultimo
            {
            for (k=1; k<=t; k++)  //desde el primer campo customizado hasta el ultimo
                {
                System.out.print("Ingrese"+arrayNameDato[k]);
                tc.nextString(arrayNameDato[k]);
                if arrayNameDato.length<>0
                {
                  Camp=(Camp+1);
                }
                }
            }
            salida.writeInt(Camp);
                                     
            for (c=1; c<t+1; c++)  //cant campos custpm
            {
            arrayNumDato[c]=c;
            if arrayNameDato.length<>0  //largo del dato distinto de cero
            {
            salida.writeInt(arrayNumDato[c]);
            salida.writeInt(arrayNameDato[c]);
            }
            }
            Camp=0;  //FIN
           

        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fos != null) {
                    fos.close();
                }
                if (salida != null) {
                    salida.close();
                }
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

4
Porque trato de que quede, por ej:

1.Nombre
2.Telefono
3.Direccion
4.Email

en vez de:

0.Nombre
1.Telefono, etc.

tengo entendido que los arrays inician de 0. lo que quiero saber es como escribirle el dato al array.

pido primero crear un vector que va a contener codigos (1,2,3,4) y su respectivo nombre de dato (nombre, tel, dir, email). en Pascal seria asi:
Rec[C].Fieldnr //vector codigo de dato (1,2,3,4)
Rec[C].Fieldname//vector nombre de dato (nomb,tel,dir,etc).
despues haria otro vector distinto que tendria el numero del dato y el texto:
Rec[C].Fieldnr
Rec[C].FieldText

5
Es que falla. Pido ayuda con los arrays.

Código: [Seleccionar]
package examen4;
import java.util.Scanner;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class crear {
private static Scanner teclado;
public static void main(String[] args) {

teclado tc = new Scanner(System.in);
        FileOutputStream fos = null;
        DataOutputStream salida = null;
        int n;
        short s; //serial (2bytes)
        char f;  //filename (2bytes)
        byte t;  //# campos custom (1byte)
        byte c;
        byte i;  //contador FOR
        char x;  //nombre de dato nro
        int d;  // fecha actual sistema
        byte r; //cantidad de registros
        int v[]; //VECTOR numero
        char b[]; //vector letras
        int Camp; //contador de campos completados
        int k;

        try {
            fos = new FileOutputStream("C:/Dev-Pas/EXAMEN444.dat");
            salida = new DataOutputStream(fos);

            System.out.print("Introduce número Serie:"); //serial
            s = tc.nextShort();
           
            System.out.print("Ingrese Nombre Archivo:"); //path
            f = tc.nextChar();
           
            //CALCULAR FECHA ACA //fecha
            salida.writeInt(d);
           
           
            System.out.print("Ingrese Cantidad de Campos Customizados:"); //campos custom
            t = tc.nextByte();
           
            v = new int[t+1]; //aca esta el vector 0,1,2,3,...,t+1
            b = new char[t+1];
           
            for(i=1; i<t+1; i++) //codigo 1,2,3,4
            {
              v[t]=i;   // Campo[tal].suNumero
              salida.writeByte(t);
              System.out.print("Ingrese Nombre de dato numero"+t); //nombre,tel,dir,email
              tc.nextChar();   // escribir el vector[i] nombrecampo
               
              salida.writeChar(b[i]);
            }
           
            System.out.print("Ingrese la cantidad de registros:"); //cantidad de registros
            r = tc.nextByte();
            salida.writeByte(r);
           
            System.out.print("Ingrese los"+r+"contactos"); //datos contactos concretos
            for(i=1; i<=r; i++)  //desde el primer contacto hasta el ultimo
            {
            for (k=1; k<=t; k++)  //desde el primer campo customizado hasta el ultimo
                {
                System.out.print("Ingrese"+b[k]);
                tc.nextChar(b[k]);
                if b.length <>0
                {
                  Camp=(Camp+1);
                }
                }
            }
            salida.writeInt(Camp);
                                     
            for (c=1; c<=t; c++)  //cant campos custpm
            {
             v[c]=c;
            if Length(b[c]) <> 0
            {
            salida.write(v[c]);
            salida.write(b[c]);       
            }
            }
            Camp=0;  //FIN
           

        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fos != null) {
                    fos.close();
                }
                if (salida != null) {
                    salida.close();
                }
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

}
uso eclipse mars ver4.5.1

6
Lo hice de esta manera, tengo mis dudas con los arrays...

Código: [Seleccionar]
package examen4;
import java.util.Scanner;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class crear {
private static Scanner teclado;
public static void main(String[] args) {

teclado tc = new Scanner(System.in);
        FileOutputStream fos = null;
        DataOutputStream salida = null;
        int n;
        short s; //serial (2bytes)
        char f;  //filename (2bytes)
        byte t;  //# campos custom (1byte)
        byte c;
        byte i;  //contador FOR
        char x;  //nombre de dato nro
        int d;  // fecha actual sistema
        byte r; //cantidad de registros
        int v[]; //VECTOR numero
        char b[]; //vector letras
        int Camp; //contador de campos completados
        int k;

        try {
            fos = new FileOutputStream("C:/Dev-Pas/EXAMEN444.dat");
            salida = new DataOutputStream(fos);

            System.out.print("Introduce número Serie:"); //serial
            s = tc.nextShort();
           
            System.out.print("Ingrese Nombre Archivo:"); //path
            f = tc.nextChar();
           
            //CALCULAR FECHA ACA //fecha
            salida.writeInt(d);
           
           
            System.out.print("Ingrese Cantidad de Campos Customizados:"); //campos custom
            t = tc.nextByte();
           
            v = new int[t+1]; //aca esta el vector 0,1,2,3,...,t+1
            b = new char[t+1];
           
            for(i=1; i<t+1; i++) //codigo 1,2,3,4
            {
              v[t]=i;   // Campo[tal].suNumero
              salida.writeByte(t);
              System.out.print("Ingrese Nombre de dato numero"+t); //nombre,tel,dir,email
              tc.nextChar();   // escribir el vector[i] nombrecampo
               
              salida.writeChar(b[i]);
            }
           
            System.out.print("Ingrese la cantidad de registros:"); //cantidad de registros
            r = tc.nextByte();
            salida.writeByte(r);
           
            System.out.print("Ingrese los"+r+"contactos"); //datos contactos concretos
            for(i=1; i<=r; i++)  //desde el primer contacto hasta el ultimo
            {
            for (k=1; k<=t; k++)  //desde el primer campo customizado hasta el ultimo
                {
                System.out.print("Ingrese"+b[k]);
                tc.nextChar(b[k]);
                if b.length <>0
                {
                  Camp=(Camp+1);
                }
                }
            }
            salida.writeInt(Camp);
                                     
            for (c=1; c<=t; c++)  //cant campos custpm
            {
             v[c]=c;
            if Length(b[c]) <> 0
            {
            salida.write(v[c]);
            salida.write(b[c]);       
            }
            }
            Camp=0;  //FIN
           

        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fos != null) {
                    fos.close();
                }
                if (salida != null) {
                    salida.close();
                }
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

}

7
Gracias por la respuesta.

Resumiéndolo mucho la cuestión es que no muestra los datos listados correctamente. los muestra todos en una sola oración como si lo estuviera viendo desde un editor hexadecimal.

Cómo hago para leer cada registro por separado? aparte donde se almacena la fecha tengo que aplicar la funcion para calcular la fecha de verdad.

8
Hola. En un trabajo anterior tuve que hacer en Pascal Mostrar.pas y Crear.pas para archivos .dat. Me adjuntaron el EXAMEN2.dat para mostrarlo y después crear un archivo similar.

El .dat tiene la siguiente estructura:

Código: [Seleccionar]
THeader = record
    Serial: Word;   //2 bytes
    Filename: String[255];  //1 byte
    Date: Word;  //2 bytes
    Fieldnrs: Word;  //2 bytes
    NrsRecords: Word;  //2 bytes
  end;
  TFields = record
    Fieldnr: Word;   //2 bytes
    Fieldname: ShortString;   //1 byte
  end;
  TRecordField = record
    Fieldnr: Word;  //2 bytes
    FieldText: String[255];  //1 byte
  end;
    TDateTime = double;


Tengo que pasarlo a Java y hasta ahora solo logré esto:

Código: [Seleccionar]
package examen2;
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class mostrar {
public static void main(String[] args) {
        FileInputStream fis = null;
        DataInputStream entrada = null;
        int n;
        try {
            fis = new FileInputStream("C:/Dev-Pas/EXAMEN2.dat");
           
           
            StringBuilder builder = new StringBuilder();
            int ch;
            while((ch = fis.read()) != -1){
                builder.append((char)ch);
            }
            System.out.println(builder.toString());
           
           
            entrada = new DataInputStream(fis);
            while (true) {   
                n = entrada.readInt(); 
                System.out.println(n); 
            }
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        } catch (EOFException e) {
            System.out.println("Fin de fichero");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fis != null) {
                    fis.close();
                }
                if (entrada != null) {
                    entrada.close();
                }
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

Compila, pero no de la forma deseada.

Adjunto:
crear.pas
mostrar.pas
archivo.dat a mostrarprimero
la clase de java
consigna
imagen de ejemplo como debe mostrarse

muchas gracias.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".