Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2856 connectés 

 


Dernière réponse
Sujet : [VB] conversion de données -> integer
cerdoc yep merci tout les 2
 
enfait j'ai deja fait ça :
 

Private Function long2int(value As Long) As Integer
 
If value > 32767 Then
    long2int = 32767
    Exit Function
End If
 
If value < -32768 Then
    long2int = -32768
    Exit Function
End If
 
long2int = CInt(value)
 
End Function

 
finalement c'est peut etre le + simple ...
 
merci tous les 2

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
cerdoc yep merci tout les 2
 
enfait j'ai deja fait ça :
 

Private Function long2int(value As Long) As Integer
 
If value > 32767 Then
    long2int = 32767
    Exit Function
End If
 
If value < -32768 Then
    long2int = -32768
    Exit Function
End If
 
long2int = CInt(value)
 
End Function

 
finalement c'est peut etre le + simple ...
 
merci tous les 2
Lord II Carbon_14 tu lui as tout fait c'est pas cool pour lui  :)
Carbon_14 Faudrait écrire une fonction  
integer Cint_New(xdouble as double)
telle que  
 
if (xdouble > 32767.0)
  return 32767
endif
 
if (xdouble < -32767.0)
  return -32768
endif
 
return Cint(xdouble)
Lord II je pense qu'il faut que tu refasse une fonction qui verifierait si c'est une valeur exacte pour un int et sinon mets la valeur max dans le int.
 
je pense que c'est le plus simple et le plus rapide
cerdoc ok merci mais j'avais lu la doc aussi  ;)  
 
mon probleme en fait n'est pas de savoir pourquoi ça marche pas (on le sait tous les 2  ;) ) mais comment faire pour lorsque je fais la conversion mon integer soit "rempli" ( je crois d'ailleur que dans d'autre language (java?) la conversion de type fait ça automatiquement (avec perte d'information bien sur))
Lord II Je crois que c'est normal :
 
voici la doc ( enfin la partie qui concerne cint et le pb ici mentionné)
 
CInt(expression)
 
L'argument expression peut être n'importe quelle expression de chaîne ou expression numérique.
 
RQ : Si l'argument expression passé à la fonction excède la plage de valeurs du type de données cible, une erreur se produit.
cerdoc par exemple j'ai une variable de type Double
je voudrais remplier une variable de type integer avec cette variable et si cette valeur de départ est plus grande que la limite du type Integer alors la variable integer vaut le maximun possible pour son type
 
dim Xinteger as integer
dim Xdouble as double
 
xdouble =34562882,322
xinteger =Cint(xdouble) ça par exemple ça marche pas  (overflow)
 
alors que je voudrais avoir xinteger=32767 (le max possible) même si c'est vrai il y a perte d'information .
 
pourquoi ? parce que je veux ensuite avec cette valeur integer dessiner a l'ecran , hors les fonction GDI accepter que des valeurs integer (pour les windows 9X en tout cas) ,donc faire comme une sorte de clipping car si j'appel une fonction avec une valeur trop grande ça trace n'importe quoi
 
par exemple une ligne de (0,0) à ( 170000,170000) ça devrait tracer à l'ecran la même ligne que (0,0) à (10000,10000) (en pixels) (meme si dans le premier cas  la mojorité de la ligne ets tracée hors ecran) -> et bein non !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)