Lectura de un Archivo

Etiquetado: 

Este debate contiene 2 respuestas, tiene 2 mensajes y lo actualizó  Laura Nicolàs hace 7 meses.

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)
  • Autor
    Publicaciones
  • #10655

    YaelSuarez27
    Participante

    Hola buen Dia, Tengo una duda Sobre mi Desarrollo en NAV 2018 sobre como hacer una adición a lo que hace mi desarrollo.

     

    Actualmente mi desarrollo busca una palabra específica dentro del documento pero la cuestión es que tengo varios valores con el mismo nombre no solamente aparece una vez ese dato en el documento y solo me trae el ultimo dato con esas características en el documento. lo que quiero hacer es de que manera puedo sacar todos los datos del documento con esa especificación previamente dicha.

    Mi codigo es el siguiente Todo se ejecuta mediante una función que es esta..

    LOCAL funGetUUID(txtNameFile : Text[250];txtDataSearchP : Text[250];VAR txtUUIDP : Text[250])
    BEGIN
    //ITA2403 INICIO
    bolEncontro := FALSE;
    intLongitud := 500;
    intIntentos := 0;
    txtUUIDP := »;

    IF txtNameFileP <> » THEN

    REPEAT
    ffile.OPEN(txtNameFileP); //this must be your file name
    ffile.CREATEINSTREAM(NVInStream);
    intIntentos += 1;
    BEGIN
    WHILE NOT(NVInStream.EOS) DO BEGIN
    NVInStream.READTEXT(txtLine,intLongitud);
    IF STRPOS(txtLine,txtDataSearchP) > 0 THEN
    BEGIN
    txtCI := COPYSTR(txtLine,STRPOS(txtLine,txtDataSearchP) + STRLEN(txtDataSearchP) + 1,50);
    IF STRPOS(txtCI,'»‘) > 0
    THEN BEGIN
    txtUUIDP := COPYSTR(txtCI,1,STRPOS(txtCI,'»‘) – 1);
    bolEncontro := TRUE;
    END; //IF STRPOS(txtCI,'»‘) > 0
    END; //IF STRPOS(txtLine,’UUID=’) > 0
    END; //WHILE NOT(NVInStream.EOS) DO BEGIN

    IF bolEncontro = FALSE THEN
    BEGIN
    intLongitud += 100;
    IF ffile.OPEN(txtNameFileP) THEN ffile.CLOSE;
    END;
    UNTIL bolEncontro OR (intIntentos = 5);
    IF bolEncontro AND (ffile.OPEN(txtNameFileP)) THEN
    ffile.CLOSE;
    END;
    //ITA2403 FIN
    END;

    BEGIN
    END

     

     

    Saludos!!!!!

     

     

     

     

    #10665

    Laura Nicolàs
    Jefe de claves

    Hola Yael,

    Me he pasado el código a vscode para que me lo indente y lo pueda leer mejor.

    Sin entrar en mucho detalle en tu código, creo que el BEGIN que hay después deintIntentos += 1; no está cerrado donde le correspondría.

    También da la sensación que estás abriendo y recorriendo el fichero 5 veces.
    No debería ser necesario. Tendrías que poder leer el fichero una única vez y anotar en un array, o en un record temporal, o en alguna otra variable, todas las ocurrencias del texto que estás buscando.

    Qué necesitas del texto que buscas? El número de linea? La linea entera? Otro texto que se encuentra en la misma linea?

    Salut!
    Laura Nicolàs

     

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #10666

    Laura Nicolàs
    Jefe de claves

    Yael,

    He creado una maqueta del código que podrías usar para leer el fichero. Le he hecho un poco de refactoring para que sea más fácil de seguir, y de mantener.

    La función principal es esta:

    1. Leemos el fichero y guardamos el contenido en FileContent.
    2. Mientras haya nuevas ocurrencias del texto a buscar, buscamos el valor que nos interesa y lo guardamos en un Record temporal al que llamamos Buffer.

    Me he montado un fichero de texto de ejemplo, con cuatro ocurrencias en el texto.

    El resultado que obtengo en la variable Buffer es este:

    La llamada al procedimiento, la hago así:

    Esta es la definición de la tabla Buffer (si una tabla se una como temporal, no gasta licencia):

    Y estos son los procedimientos auxiliares que he definido:

    El código está escrito en vscode, aunque creo que tu lo estás haciendo en c/side.
    No pasa nada,el código es compatible entre los dos entornos de desarrollo.

    Espero que te sirva de ayuda.

    Salut!
    Laura Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)

Debes estar registrado para responder a este debate.

Members Currently Active: 1
DATANET
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 1.028, Posts: 3.244, Members: 993
Welcome to our newest member, ACUSTICA
Most users ever online was 15 on 5 April, 2019 9:31 am