Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2003
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Question manejo de funcion fillchar

La duda que tengo es sobre el manejo de la memoria y los tipos en delphi.
Cuando estaba haciendo un programa use la funcion fillchar asi:
relleno : string[100];

...
luego
fillchar(relleno,100,´ ´);
con lo que esperaba tener un string con 100 blancos.
Pero cuando hacia un length(relleno) me daba 32.
Me desconcerto el tema y segui mirando la ayuda ahi encontre el ejemplo que explicaba el uso de fillchar:
relleno : array[0.99] of char;
y luego
fillchar(relleno,100,´ ´);
y así si funciona como yo esperaba, el supuesto que yo tome como cierto de que un string[100] era lo mismo que un array de 100 de tipo char no es correcto, podrían explicarme cual es la diferencia ???
Gracias por la ayuda, recién empiezo en esto.
Responder Con Cita
  #2  
Antiguo 21-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.933
Poder: 27
delphi.com.ar Va por buen camino
Primero te recomiendo leer la ayuda de la función StringOfChar, creo que puede hacer lo que tu quieres.
FillChar recibe un puntero no tipado como primer dato, tu pasas un string del tipo Pascal, me da la sensación que el "32" es el valor del caracter que estas escribiendo en el marcador de longitud del string (La primer posición).

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 21-07-2003
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Wink

Muchas gracias por tu respuesta.
Responder Con Cita
  #4  
Antiguo 21-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Podes utilizar perfectamente la sentencia.

Código:
Var
  relleno : string[100];
Begin
  fillchar(relleno[1], 100, ´ ´);
end;
Eso siempre y cuando relleno sea un string de longitud entre 1 y 255, que son Strings tipo pascal. Como recordaras, estos strings almacenan en la posición 0 la longitud "dinámica" que tienen. Por eso, al hacerlo solamente con la dirección del string (que es la posición cero) la función length te devuelve 32, que es el ord(' ').

Jugando un poco, también podrias hacer algo como:

Código:
Var
  relleno : string[100];
Begin
  fillchar(relleno, 101, ´ ´);
  relleno[0] := chr(100); // le devuelve una longitud de 100 al string!
end;
Hasta luego.


__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 21-07-2003 a las 20:39:12.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:45:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi