Convertir un string en cardinal [Résolu]

cs_systmd 46 Messages postés mercredi 25 février 2004Date d'inscription 29 août 2012 Dernière intervention - 1 sept. 2006 à 02:02 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 1 sept. 2006 à 16:50
Bonjour,
J'aimerais savoir si quelqu'un sait comment résoudre ce probléme:
Ne fonctionne pas : SendMessage(Edit2.Handle,StrToInt64Def(Trim(Edit1.Caption),0),1, 0);
       Fonctionne : SendMessage(Edit2.Handle,EM_SETREADONLY,1, 0);

si je fait label1.caption:=IntToStr(EM_SETREADONLY); celà me donne 207
si je remplace EM_SETREADONLY pas le texte de mon edit
en faisant label1.caption:=StrToInt64Def(Trim(Edit1.Caption); ça donne 0
Afficher la suite 

8 réponses

Répondre au sujet
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 1 sept. 2006 à 08:19
+3
Utile
Petite correction...

Function TryStrToCardinal(Const S: String; out Value: Cardinal): Boolean;
Var
  tmpInt: Int64;
Begin
  Result := False;
  If TryStrToInt64(S, tmpInt) Then
    If not ((tmpInt<Low(Cardinal)) or (tmpInt>High(Cardinal))) Then
    begin
      Value := tmpInt;
      Result := True;
      Exit;
    end;
End;

Chez moi ca fonctionne nickel, si ca ne fonctionne pas chez toi c'est peut-etre parce que ta chaine n'est pas totalement un suite de chiffres...

Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Emandhal
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 1 sept. 2006 à 13:44
+3
Utile
ça ne m'explique toujours pas pourquoi tu veux utilisé les messages ...


Et si tu sais que : " SendMessage(Edit1.Handle,EM_SETREADONLY,1, 0); "
C'est pour mettre Edit1 en lecture seul ...

Tu devrais savoir que le deuxième paramètre de SendMessage est le message à envoyé
et donc que forcément ceci " SendMessage(Edit2.Handle,StrToInt64Def(Trim(Edit1.Caption),0),1, 0); " ne pourra jamais fonctionner  

Ensuite tu dis :
Edit2.Text := IntToStr (StrToInt64Def(Edit1.Text, 0)); -->donne 0 et non pas 207

Mais quel est la valeur de Edit1.Text      ...   
si Edit1.Text : = S207  le résultat sera 0
si Edit1.Text := 207  le résultat sera 207
si Edit1.Text := 207W  le résultat sera 0
si Edit1.Text := 20P7  le résultat sera 0

Et quand tu dis pas la peine de me parler de Edit1.ReadOnly := True;
Je suppose donc que l'édit en question ne se trouve pas dans la même application

Et pour finir je pense qu'une petite visite sur la page du règlement de CodeS SourceS ne peut pas te faire de mal.

on ne sais toujours pas ce que tu veux faire (ce qui est très important pour tout ceux qui voudront te répondre) et entre nous les membres ne sont pas encore des voyants.

Mais si tu es si avare de détails essaye google














@+
Cirec
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Cirec
Emandhal 199 Messages postés dimanche 2 mars 2003Date d'inscription 10 octobre 2006 Dernière intervention - 1 sept. 2006 à 08:10
0
Utile
Function StrToCardinal(Const S: String): Cardinal;
Begin
  If not TryStrToCardinal(S, Result) Then
    Raise EConvertError.Create(Format('''%s'' n''est pas une valeur entière correcte', [S]));
End;


Function StrToCardinalDef(Const S: String; Default: Cardinal): Cardinal;
Begin
  If not TryStrToCardinal(S, Result) Then Result := Default;
End;


Function TryStrToCardinal(Const S: String; out Value: Cardinal): Boolean;
Var
  tmpInt: Int64;
Begin
  Result := False;
  If TryStrToInt64(S, tmpInt) Then
    If (tmpInt<Low(Cardinal)) or (tmpInt>High(Cardinal)) Then Exit
    else begin
      Value := tmpInt;
      Result := True;
    end;
End;


Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...
Commenter la réponse de Emandhal
cs_systmd 46 Messages postés mercredi 25 février 2004Date d'inscription 29 août 2012 Dernière intervention - 1 sept. 2006 à 11:42
0
Utile
Bonjour,
merci pour ta réponse.

Si je fais SendMessage(Edit1.Handle,StrToCardinal(ComboBox1.Text),1, 0);

avecEM_SETREADONLY comme texte de ComboBox1, 
 
celà me donne : 'EM_SETREADONLY '  n'est pas une valeur correcte.

J'utilise peut-être pas ta fonction comme il le faut ?.
Commenter la réponse de cs_systmd
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 1 sept. 2006 à 12:05
0
Utile
Salut,

1°) pourquoi veux-tu absolument utiliser les Messages ?

2°)StrToInt64Def: Converti un String en Entier

Et si tu veux affecté un entier à un String il faut utiliser IntToStr :

Donc pour faire ce que tu demandes il faudrait faire :

Edit2.Text := IntToStr (StrToInt64Def(Edit1.Text, 0));

ce qui revient pratiquement à faire : Edit2.Text : = Edit1.Text; // tout simplement

@+
Cirec
Commenter la réponse de Cirec
cs_systmd 46 Messages postés mercredi 25 février 2004Date d'inscription 29 août 2012 Dernière intervention - 1 sept. 2006 à 12:28
0
Utile
@CIREC

Cette ligne SendMessage(Edit1.Handle,EM_SETREADONLY,1, 0);
c'est pour rendre Edit1 en lecture seul .
Pas la peine de me parler de Edit1.readonly:=true, c'est pas ce que je cherche.

Edit2.Text := IntToStr(StrToInt64Def(Edit1.Text, 0)); -->donne 0 et non pas 207
Commenter la réponse de cs_systmd
cs_systmd 46 Messages postés mercredi 25 février 2004Date d'inscription 29 août 2012 Dernière intervention - 1 sept. 2006 à 14:00
0
Utile
SendMessage(Edit2.Handle,StrToInt64Def(Trim(Edit1.Caption),0),1, 0);
 " ne pourra jamais fonctionner

Bin voilà , je cherche pas plus loin

Et pour finir je pense qu'une petite visite sur la page du règlement de CodeS SourceS ne peut pas te faire de mal.

Je ne vois pas pourquoi, mes bon si ça vous fais plaisir
Commenter la réponse de cs_systmd
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 1 sept. 2006 à 16:50
0
Utile
Bonjour,

Stublupul(Blabi,Kapoue,0,0,KIKOO_LOL);

ça marche pas !!!! pourquoi ?

Parce que .... Lavabo transatlantique.





si tu nous dis pas ce que tu cherche a faire, a quoi sa sert, dans quel but on ne peu pas t'aider.
faut pas avoir fait Bac+15 pour comprendre ça.

try again.

Commenter la réponse de f0xi

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.