Problème DELPHI HEXA -> Virgule Flottante [Résolu]

Messages postés
11
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
29 avril 2008
- 22 avril 2008 à 15:12 - Dernière réponse :
Messages postés
11
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
29 avril 2008
- 22 avril 2008 à 20:56
Bonjour,


Je suis étudiant en informatique et dans le cadre de mon stage je doit réaliser un Shape (.shp) Viewer.

Je suis en train de tenter de "décortiquer" l'entête du fichier .shp.

Le problème c'est que pour X min j'obtiens : 411EE334000003C2 ce qui ne me parle pas beaucoup.

Je devrais obtenir une valeur proche de 506061.


Si quelqu'un à une idée pour récupérer la valeur approchée en nombre a virgule flottante.


Merci d'avance.

D@rNaU
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
759
Date d'inscription
vendredi 21 mars 2003
Dernière intervention
1 octobre 2009
- 22 avril 2008 à 16:08
3
Merci
Salut,

Ça c'est la représentation hexa d'un réel sur 8 octets (type Double) égal à 506061.000000055996

Voir :



représentation IEEE en virgule flottante






Ken@vo




<hr size="2" width="100%" />



Code, Code, Codec !

Merci cs_Kenavo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 22 avril 2008 à 17:43
3
Merci
Position Field Value Type Order
Byte 0 File Code 9994 Integer Big

Byte 4 Unused 0 Integer Big
Byte 8 Unused 0 Integer Big
Byte 12 Unused 0 Integer Big
Byte 16 Unused 0 Integer Big
Byte 20 Unused 0 Integer Big

Byte 24 File Length File Length Integer Big
Byte 28 Version 1000 Integer Little
Byte 32 Shape Type Shape Type Integer Little

Byte 36 Bounding Box Xmin Double Little
Byte 44 Bounding Box Ymin Double Little
Byte 52 Bounding Box Xmax Double Little
Byte 60 Bounding Box Ymax Double Little
Byte 68* Bounding Box Zmin Double Little
Byte 76* Bounding Box Zmax Double Little
Byte 84* Bounding Box Mmin Double Little
Byte 92* Bounding Box Mmax Double Little








{ Declaration du type SHPFileHeader }



{ SHP File Header }
Type
  pSHPFileHeader = ^TSHPFileHeader;
  TSHPFileHeader = record
    FileCode  : integer; { = 9994 }

    __Unused0 : integer;

    __Unused1 : integer;

    __Unused2 : integer;

    __Unused3 : integer;

    __Unused4 : integer;
    FileLength: integer;
    Version   : integer; { = 1000 }
    ShapeType : integer;
   

BBXmin    : Double;
    BBYmin    : Double;
    BBXmax    : Double;
    BBYmax    : Double;
    BBZmin    : Double;
    BBZmax    : Double;
    BBMmin    : Double;
    BBMmax    : Double;

  end;

const
  SIZEOFSHPFileHeader = SizeOf(TSHPFileHeader);

{ Shape Type }
const
  ShapeTypeNull        = 0;
  ShapeTypePoint       = 1;
  ShapeTypePolyLine    = 3;
  ShapeTypePolygon     = 5;
  ShapeTypeMultiPoint  = 8;
  ShapeTypePointZ      = 11;
  ShapeTypePolyLineZ   = 13;
  ShapeTypePolygonZ    = 15;
  ShapeTypeMultiPointZ = 18;
 
ShapeType
PointM      = 21;
 
ShapeType
PolyLineM   = 23;
 
ShapeType
PolygonM    = 25;
 
ShapeType
MultiPointM = 28;
 
ShapeType
MultiPatch  = 31;

{ Exemple Lecture }

var
  FileHeader : TSHPFileHeader;
begin
  ...
  with TFileStream.Create(FileName, fmOpenRead) do
  try
    ReadBuffer(FileHeader, SIZEOFSHPFileHeader);
    ...
  finally
    Free;
  end;
  ...
end;

{ Exemple Ecriture }


var

  FileHeader : TSHPFileHeader;

begin

  ...

  with TFileStream.Create(FileName, fmCreate) do

  try
    FileHeader... := ...;
    Position := 0;

    WriteBuffer(FileHeader, SIZEOFSHPFileHeader);

    ...

  finally

    Free;

  end;

  ...

end;



Shape File specification [PDF]

<hr size="2" width="100%" />

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
Messages postés
759
Date d'inscription
vendredi 21 mars 2003
Dernière intervention
1 octobre 2009
- 22 avril 2008 à 20:28
3
Merci
Vénérable f0xy très gentil donner solution toute faite !
Mais honorable étudiant doit .... étudier !...





Peut être ceci plus clair !

Ken@vo




<hr size="2" width="100%" />



Code, Code, Codec !

Merci cs_Kenavo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
Messages postés
11
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
29 avril 2008
- 22 avril 2008 à 16:25
0
Merci
Merci beaucoup pour ta réponse même si je comprend rien du tout je vais voire avec mon responsable de stage si ca peut l'aider.

Encore Merci.

D@rNaU
Commenter la réponse de darnau
Messages postés
11
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
29 avril 2008
- 22 avril 2008 à 17:07
0
Merci
Excuse moi Kenavo pourrais-je avoir de plus amples
informations sur la technique que tu as utilisés pour effectuer la conversion
car ton site me parais vraiment écrit en Chinois... (Désolé je débute   [javascript:Insert_Emoticon('/imgs2/smile_sad.gif'); ]   )


Merci d'avance.


D@rNaU
Commenter la réponse de darnau
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 22 avril 2008 à 18:02
0
Merci
... C'était une traduction du chinois vers le japonais, par f0xy.
Commenter la réponse de Caribensila
Messages postés
11
Date d'inscription
mardi 7 novembre 2006
Dernière intervention
29 avril 2008
- 22 avril 2008 à 20:56
0
Merci
Merci ton dernier lien etais bien plus clair.
Après plus de recherche j'obtient :
code

<hr color="#ffffff" size="1" />procedure TForm1.Button6Click(Sender: TObject);

var

  i64: int64;

  r: Double absolute i64; // r a donc la même adresse que i64, et tous les 2 sont codés sur 8 octets

begin

  i64:=$411EE334000003C2; // on affecte l'un des deux

  ShowMessage(FloatToStr(r)); // et on lit l'autre...

end;

Merci encore!!

D@rNaU
Commenter la réponse de darnau

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.