Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Un file intelhex es asi como lo estas mirando en mi comentario anterior.Estos files se usan para programar chips como los eproms y los microcontroladores.
Para entender este formato aqui el enlace.
Son dos puntos los que comienzan cada linea del mismo : uno de estos files puede ser de 5 kbytes pero la data real que entrara a un micro de estos 5 kbytes pueden ser 2 kbytes.El resto son bytes de address, intruciones, etc.
Este tipo de file no es complicado una vez que ya uno lo puede entender.Mi problema no es con este codigo, mi problema es Delphi que no lo domino.Yo mirando la penultima linea de un file intelhex en unos segundos te digo cuantos bytes de data contiene este file.
El problema radica en que quiero que una rutina en Delphi lo pueda hacer( contar los bytes de data reales que contiene un file determinado.)

Un Saludo.
Responder Con Cita
  #2  
Antiguo 02-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Entonces, a ver si lo he entendido.

Son archivos de texto. Y en este ejemplo:

Cita:
:020000000149B4
:0100030032CA
:01000B0032C2
:0100130032BA
:01001B0032B2
:0100230032AA
:1800250075880075890075D00075A800227F000FEFB4FFFB227E007DFC
:14003D00020E1132EE70FA1DED70F6221125B290113A014B63
el archivo resultante para el chip ocuparía 2+1+1+1+1+1+24+20 = 51 bytes, ¿no?
Responder Con Cita
  #3  
Antiguo 02-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por ixMike Ver Mensaje
Entonces, a ver si lo he entendido.

Son archivos de texto. Y en este ejemplo:



el archivo resultante para el chip ocuparía 2+1+1+1+1+1+24+20 = 51 bytes, ¿no?
Si eso es correcto y esos 51 bytes resultante son los que al final conformaran el file que terminara dentro del micro. Por eso la importancia de conocer su tamaño.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 02-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Vale. Entonces, suponiendo que esa última línea :00000001FF no afecta (¿siempre es :00....?) entonces creo que este código te sirve:

Código Delphi [-]
Function IntelHexFinalFileSize(const FileName: String): Integer;
var
 S: TStrings;
 n, FinalSize: Integer;
begin
 FinalSize:=0;
 S:=TStringList.Create;
 S.LoadFromFile(FileName);
 For n:=0 to S.Count-1 do Inc(FinalSize, HexToInt(Copy(S[n],2,2)));
 S.Free;
 Result:=FinalSize;
end;


Lo único que hace es recorrer todas las líneas del fichero, sumando los valores iniciales de cada línea.

¿Fácil, no? ¿Qué es lo que no sabías hacer? ¿Leer el archivo de texto? ¿Obtener los valores de cada línea? ¿Sumar valores hexadecimales?...


Salu2
Responder Con Cita
  #5  
Antiguo 02-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Hola ixMike.

Cita:
¿Qué es lo que no sabías hacer? ¿Leer el archivo de texto? ¿Obtener los valores de cada línea?
Mas bien que es lo que no se todavia. jajajajajaja en esto de Delphi estoy a gatas todavia.
Con ese codigo tengo material de estudio para un rato.

Un Saludo y un millon de gracias.
Responder Con Cita
  #6  
Antiguo 02-03-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
 function HextoInt(HexStr: String):integer;
const Hex : array['A'..'F'] of integer = (10,11,12,13,14,15);
var
    i   : integer;
begin
  Result:=0;
  for i := 1 to Length(HexStr) do
    if HexStr[i] < 'A' then Result := Result * 16 + Ord(HexStr[i]) - 48
                       else Result := Result * 16 + Hex[HexStr[i]];
end;
Function IntelHexFinalFileSize(const FileName: String): Integer;
var
 S: TStrings;
 n, FinalSize: Integer;
begin
 FinalSize:=0;
 S:=TStringList.Create;
 S.LoadFromFile(FileName);
 For n:=0 to S.Count-1 do Inc(FinalSize, HexToInt(Copy(S[n],2,2)));
 S.Free;
 Result:=FinalSize;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  begin
  Label1.Caption:=OpenDialog1.FileName;
  Memo1.Lines.LoadFromFile(Label1.Caption);
  Label2.Caption:=IntToStr(IntelHexFinalFileSize(Label1.Caption));
end;
end;
end.

Gracias al amigo ixMike asunto resuelto.
Responder Con Cita
  #7  
Antiguo 02-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
He seguido el hilo y solo puedo decir, muy interesante aunque no se para que sirve.
Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Fichero Ini nelem Varios 2 03-01-2008 16:05:40
Tamaño de los ejecutables de Lazarus JULIPO Lazarus, FreePascal, Kylix, etc. 15 07-11-2007 17:41:36
Tamaño de mi ejecutable Ricardo Alfredo Varios 13 07-02-2007 20:47:14
recorrer listbox para modificar tamaño del form DM2005 Varios 1 15-08-2006 14:11:10
Obtener un fichero adjunto a un nodo de un fichero XML muntasil Internet 0 18-07-2006 12:57:57


La franja horaria es GMT +2. Ahora son las 00:47:12.


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