Convertir un string en cardinal [Résolu]

Signaler
Messages postés
41
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
29 août 2012
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
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

8 réponses

Messages postés
194
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
10 octobre 2006
2
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...
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
ç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
Messages postés
194
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
10 octobre 2006
2
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...
Messages postés
41
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
29 août 2012

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 ?.
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
44
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
Messages postés
41
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
29 août 2012

@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
Messages postés
41
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
29 août 2012

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
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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.