• Domingo 22 de Diciembre de 2024, 11:30

Autor Tema:  Caracter De Salto Dentro De String  (Leído 3005 veces)

albertoprad

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Caracter De Salto Dentro De String
« en: Viernes 9 de Mayo de 2008, 01:51 »
0
Hola buenas.
voy a intentar explicaros un problema que tengo con una funcion que tiene que devolver un string con varios saltos de linea dentro.
El caso es que tengo que mostrar los datos de un alumno en entre los que se incluye el expediente, formado por codigos de asignaturas aprobadas y su nota.
Todo ello tiene que ser devuelto en string y con formato apropiado por una function.
EJ:
Matricula: 123 Nombre: Pepe Anios: 2
Expediente:
Asig: 101 Nota: 5
Asig: 104 Nota: 8
Asig: 156 Nota: 7
Asig: 157 Nota: 8

Para ello he creado los siguientes funciones:

function obtenerDatosExpediente(estudiante:TEstudiante):string;
var
entrada:TEntradaExpediente;
calificacion:string;
calif:real;
resu:string;

begin

        if tieneDatosExpediente(estudiante^.expediente) then
        begin
                desapilarEntradaExpediente(estudiante^.expediente, entrada);
                calif:=obtenerCalificacion(entrada);
                str(calif:1:2, calificacion);
                resu:= concat ('k   Codigo: ',obtenerCodigoAsignatura(entrada),' Nota: ',calificacion) + (obtenerDatosExpediente(estudiante));
                writeln('hola');
        end;
        writeln('adios');

obtenerDatosExpediente:=resu;

end;

function obtenerDatosEstudiante (estudiante:TEstudiante):string;
var
estudi:string;
aniosstr:string;
an:0..2;
begin
an:=obtenerAnios(estudiante);
str(an, aniosstr);

estudi:= concat ('Matricula: ',obtenerMatricula(estudiante), ' Nombre: ', obtenerNombre(estudiante), ' Años: ', aniosstr, ' Expediente: ', obtenerDatosExpediente(estudiante));

obtenerDatosEstudiante:=estudi;

end;


La primera es un funcion recursiva que recorre solo el expediente, y la segunda imprime los datos basicos del alumno y llama a la primera para obetener el expediente.
El problema es que no se como hacer para poner saltos de linea entre cada asigantura del expediente y que quede mas o menos con el formato que he puesto arriba.
Si necesitais que os especifique como es algun tipo de dato decirmelo.

Espero que podais echarme una mano. Muchas gracias y perdon por el ladrillo.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Caracter De Salto Dentro De String
« Respuesta #1 en: Viernes 9 de Mayo de 2008, 15:25 »
0
Código: Text
  1.  
  2. estudi:= concat ('Matricula: ',obtenerMatricula(estudiante), ' Nombre: ', obtenerNombre(estudiante), ' Años: ', aniosstr, ' Expediente: ', obtenerDatosExpediente(estudiante));
  3.  
  4.  

Hola, el salto de linea en Windows es "0x,0D 0x0A".
En Linux, si mal no recuerdo solo se usa "0x0A" (que es la tecla ENTER, RETORNO DE CARO)

Deberias sumar a tu CONCAT una cadena que contenga esos caracteres.
Código: Text
  1.  
  2. SaltoLinea: String;
  3. begin
  4.    SaltoLinea := '**'; //espacios en blanco
  5.    SaltoLinea[1] := #13;  // o bien SaltoLinea[1] := Chr(13);
  6.    SaltoLinea[2] := #10;
  7.    estudi:= concat ('Matricula: ',obtenerMatricula(estudiante), SaltoLinea,
  8.                            ' Nombre: ',  obtenerNombre(estudiante), SaltoLinea,
  9.                            ' Años: ', aniosstr, SaltoLineaj,
  10.                            ' Expediente: ', obtenerDatosExpediente(estudiante) , SaltoLinea);
  11.  
  12.  
Supongo que con eso deberiafuncionar.

albertoprad

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Caracter De Salto Dentro De String
« Respuesta #2 en: Domingo 11 de Mayo de 2008, 19:07 »
0
Pues si, si que funciona perfecto.
Muchas gracias, el caracter era el #10 que es el salto de linea. el #13 es el fin de linea.

Muchas gracias amigo.