Convertir un string en cardinal [Résolu]

Messages postés
46
Date d'inscription
mercredi 25 février 2004
Dernière intervention
29 août 2012
- - Dernière réponse : f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 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 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
3
Merci
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...

Merci Emandhal 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Emandhal
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
ç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

Merci Cirec 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
199
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 octobre 2006
0
Merci
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
Messages postés
46
Date d'inscription
mercredi 25 février 2004
Dernière intervention
29 août 2012
0
Merci
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
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
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
Messages postés
46
Date d'inscription
mercredi 25 février 2004
Dernière intervention
29 août 2012
0
Merci
@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
Messages postés
46
Date d'inscription
mercredi 25 février 2004
Dernière intervention
29 août 2012
0
Merci
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
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
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.