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 05-03-2014
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Me hago cruces!!!!!!

¿Delphi 2010 no sabe sumar?

Tengo una estructura 2 single y un smallint (4+4+2 bytes) total de la estructura 12 bytes. Tamos tontos!!!!!!!

Que alguien me lo explique. El problema esta en el smallint. Si lo quito de la estructura el total suma 10
Imágenes Adjuntas
Tipo de Archivo: jpg Captura.JPG (39,7 KB, 19 visitas)
Responder Con Cita
  #2  
Antiguo 05-03-2014
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.084
Poder: 18
juanelo Va por buen camino
Se debe a a la alineacion. (Data Alignment)
__________________
Ya tengo Firma!
Responder Con Cita
  #3  
Antiguo 05-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola atani123.

Es tál como te indica juanelo, para un acceso mas veloz, Delphi alinea las estructuras a palabra o doble palabra. Podes comprimir el almacenamiento de datos usando la palabra reservada packed sobre el registro o de manera global usando la directiva {$A-}. Pero hace mas lento el acceso y puede traer incompatibilidad en el caso de que los datos sean caracteres.

El efecto se puede comprobar facilmente:
Código Delphi [-]
type
  rec1 = record
    factor: Single;
    offset: Single;
    id    : SmallInt;
  end;
  
  rec2 = packed record
    factor: Single;
    offset: Single;
    id    : SmallInt;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  r1: rec1;
  r2: rec2;
begin
  with ListBox1.Items do
  begin
    Add('rec1 (record)');
    Add('-------------');
    Add(Format('factor: %d',[SizeOf(r1.factor)]));
    Add(Format('factor: %d',[SizeOf(r1.offset)]));
    Add(Format('factor: %d',[SizeOf(r1.id)]));
    Add(Format('Total: %d',[SizeOf(r1)]));
    Add('');
    Add('rec2 (packed record)');
    Add('-------------');
    Add(Format('factor: %d',[SizeOf(r2.factor)]));
    Add(Format('factor: %d',[SizeOf(r2.offset)]));
    Add(Format('factor: %d',[SizeOf(r2.id)]));
    Add(Format('Total: %d',[SizeOf(r2)]));
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 05-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por atani123 Ver Mensaje
...
Por favor, recuerda poner títulos descriptivos.
Cuando alguien tenga tu misma duda, podrá hacer una búsqueda, pero con ese título que has puesto, a ver quién lo encuentra (este hilo)
Responder Con Cita
  #5  
Antiguo 06-03-2014
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Perdona, tienes razon, no lo habia pensado asi. Lo tendre en cuenta para futuras preguntas, gracias.
Responder Con Cita
  #6  
Antiguo 06-03-2014
atani123 atani123 is offline
Miembro
 
Registrado: jul 2006
Posts: 63
Poder: 18
atani123 Va por buen camino
Gracias a los dos por la respuesta, entonces en mi caso no tengo mas remedio que usar packet record ya que trato de leer un fichero (FILE of TRec) que ha sido generado con otro software.

Muchisimas gracias
Responder Con Cita
  #7  
Antiguo 06-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por atani123 Ver Mensaje
Perdona, tienes razon, no lo habia pensado asi. Lo tendre en cuenta para futuras preguntas, gracias.
Gracias a ti
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que hago mal??? ZayDun Varios 3 06-06-2007 14:53:28
RegQueryValue que hago mal? Thor API de Windows 2 27-09-2006 15:55:45
que hago mal? jvalles Gráficos 2 19-07-2005 14:45:06
¿como lo hago? loenx Conexión con bases de datos 6 01-11-2003 15:26:34


La franja horaria es GMT +2. Ahora son las 20:57:11.


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