Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 04-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Voy a extractar de cierto libro titulado El gran libro de Delphi 2, de Jens Herber, Jörg Herbes y Jörg Rensmann, traducido por varios autores. No los nombro pero sin ellos, etc.

Cita:
5.2 Tipos de datos estándar y su utilización

Todos los programas de ordenador, y todos [los] datos escritos escritos por usted y que utiliza este programa, constan de una secuencia de bits en la memoria. Un bit es una posición de memoria cuyo valor puede ser 0 ó 1. Una zona cualquiera del contenido de la memoria podría presentar el aspecto siguiente:

011001110010101110110101

En principio todo parece indicar que esta secuencia de bits carece por completo de estructura. Por lo tanto se tiene que crear una normativa para poder interpretarla inequívocamente. A tal fin se realiza, en primer lugar, una división en bytes, cada uno de los cuales comprende 8 bits. A continuación, se reúnen dos bytes para formar lo que se denomina palabra, que contiene, por tanto, 16 bits.

Falta aún por conocer el tipo del valor representado en la memoria por esta secuencia de bits para que se pueda interpretar el contenido de esa memoria. El tipo del valor contiene el número de bits pertenecientes al valor representado por la secuencia y la forma en que este valor se ha codificado en unos y ceros. Sólo conociendo el tipo del valor quedará claro si esta zona de la memoria representa un número entero, un número de coma flotante, caracteres, texto o cualquiera otras estructuras de datos.

Además del tamaño y la forma en que se codifica un valor, un tipo de datos contiene otras informaciones. Dado que todo tipo de datos tiene un tamaño determinado en la memoria, no puede representar cualquier número. Como consecuencia, cada tipo de datos tiene un rango de valores definido cuyas cotas, inferior y superior, no se deben sobrepasar. Así, mediante la declaración de tipo se especifica el rango de valores que puede tomar una variable o constante de este tipo.

Si un tipo de datos tuviese una longitud de una palabra, es decir 2 bytes ó 16 bits, podrá representar, como máximo, 2 [elevado a 16] = 65.536 valores distintos, ya que cada bit sólo puede tomar dos valores distintos (0 ó 1).

Además con el tipo de datos se definen también las operaciones permitidas para tal tipo. Así, para el tipo de datos Integer, que representa números enteros, están definidas, entre otras, las operaciones de suma, resta y producto. Esto facilita al compilador de Delphi un control de su manera de proceder con los tipos de datos: tan pronto como utilize una operación que no esté definida para el tipo de datos correspondiente, el compilador mostrará un mensaje de error y no ejecutará su aplicación.
El texto continúa, pero, con una descripción de los tipos simples y la típica tabla de tipos disponibles, con su descripción, rango de valores y longitud. Como de poco más que esto he tomado la información en que me he basado para escribir mi opinión en este Hilo, ahora, al releerlo y transcribirlo, pienso que estaba equivocado yo y que roman va por el buen camino: es Delphi el que se encarga del tipo de datos, es el compilador, no sé cómo lo hará, pero el tipo de datos no está unido, como pensaba, al dato en sí, según me deja entender el texto que acabo de transcribir.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #22  
Antiguo 05-10-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 24
Mick Va por buen camino
Cita:
Empezado por kalimero
Hola a todos.
Bueno me surge una duda:Y cuando se ejecuta el programa ¿Quien decide que la secuencia de bits (01000001) que tengo que dibujar en pantalla es el 65 ó el caracter 'A'?
Saludos
Esto tiene facil respuesta, lo decide el programador, cuando mandas imprimir algo debes indicar el formato, es decir como quieres que la computadora interprete y muestre esa lista de bits.

Código:
var
 Variable:char;
begin
  Variable:= 'A'; 
  writeln(Format('%d',[Ord(Variable)]));  // imprime 65
  writeln(Format('%c',[Variable]));  // imprime el caracter 'A';
end;
Responder Con Cita
  #23  
Antiguo 05-10-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 289
Poder: 24
kalimero Va por buen camino
Hola Mick.
Eso lo tengo claro, pero yo lo que quiero decir es que como se almacena dentro del ejecutable este formateo que indicas, es decir, cuando se estan ejecutando los ceros y unos ¿donde está escrito que sea una 'A' ó un 65?

Saludos a todos
Responder Con Cita
  #24  
Antiguo 05-10-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 24
Mick Va por buen camino
Cita:
Empezado por kalimero
Hola Mick.
Eso lo tengo claro, pero yo lo que quiero decir es que como se almacena dentro del ejecutable este formateo que indicas, es decir, cuando se estan ejecutando los ceros y unos ¿donde está escrito que sea una 'A' ó un 65?
Saludos a todos
No se almacena ningun tipo de formateo con la variable, en el ejecutable no hay nada mas que el numero 01000001.
Unicamente esta escrito que se imprima como A o como 65 directamente en la funcion que utilices para ordenar la impresion, o queda implicito por el tipo de variable, es decir:

Si tenemos declarada esta variable de tipo caracter:

var
Car:Char;

Y si usamos Format:

Format('%c',65);

El %c que se pasa como parametro a la funcion Format le indica que el segundo parametro debe ser tratado como un codigo ascii.

En el caso de usar funciones normales de pascal como:

write(Car);

Al ser delphi un lenguaje fuertemente tipado y estar definidos los tipos de variables previamente, el compilador sabe que Car debe tratarse como un caracter.
Luego en realidad el compilador va a sustituir write por WriteChar,
de modo que enn la realidad se estaria llamando a la funcion:

WriteChar(Car);

Es decir se llama a una funcion WriteChar que imprime solo caracteres y que trata siempre al valor que se le pase como un caracter.

Si Car fuera de tipo string, el compilador sustiye el Write por un

WriteString(Car);

Etc, para el resto de tipos de variables.

Si hacemos

Write(caracter, string);

En realidad el compilador lo sustituira por algo como:

WriteChar(caracter);
WriteString(string);

Saludos
Miguel
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 16:39:58.


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