Salut tout le monde
je me demande si c'est possible de convertir une chaîne qui contient par exemple sqrt(2) en un nombre réel, sachant que j'ai essayé val('sqrt(2)',x,e) mais ça n'a pas l'air de fonctionner.
Salut tout le monde
je me demande si c'est possible de convertir une chaîne qui contient par exemple sqrt(2) en un nombre réel, sachant que j'ai essayé val('sqrt(2)',x,e) mais ça n'a pas l'air de fonctionner.
Si tu mets le curseur sur le mot Val et tu fais : Ctrl + F1 tu auras ceci :Donc pas moyen avec les procédures et fonctions standard.DECLARATION:
Procedure Val(s: string; var v; var code: Integer);
où:
s = variable chaîne; doit être une séquence
de caractères représentant un entier.
v = variable Integer ou Real
code = variable Integer.
Ne pas oublier le tag si satisfait.
Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
Merci Mr, vous avez raison tout le monde connait deja la structure de la procedure val, c'est sur qu'on doit trouver un moyen en dehors des outils standards oki je donne le probleme en réalité je cherche un moyen pour permettre à l'utisateur d'entrer n'importe quelle expression, afin de pouvoir traiter cette derniere faut que je trouve le moyen comment convertir cette donnée en une expression mathematique qui peut etre gérer par le TPW
Bon après quelques essais, voici une esquisse qui pourrait t'aider , à toi de choisir ce qui te convient tout en l'adaptant selon ton besoin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 Uses Crt;{ou bien WinCrt;} Const Fich='C:\Save.txt'; VAR c,i,k,L:Integer; x:Extended; j:Real; S,ch,sch:String; F:Text; {=================================} Function Power10(expo:integer):Extended; Var Res:Extended; Begin Res :=1; for i:= 1 to expo Do begin Res := Res*10;end; Power10:=Res; End; {=================================} Function Expo_Nombre(Var n:Real):Integer; { Recherche de l'exposant du nombre réel généré ou entré} Var Fin, L, position,I,errCode:Integer; S,ch:String; m:integer; Begin Str(n,S); L := Length(S); Position:=Pos('E',S); Fin:=L-Position; ch:=''; For I:=Position+1 To L Do begin ch:=ch+S[i];end; Val(ch,m,errCode); Expo_Nombre:=m; End; {=================================} Function Read_And_Convert(Var FF:Text):Real; VAR St, ch, Ret :String; p,V:Integer; Begin Assign(FF,Fich); Reset(FF); ch:=''; Ret:=''; While Not EOLN(F) DO Begin Read(F,St); {Writeln(St);} End; L:= Length(St)-6; K:= Pos('.',St); For I:=1 To L Do Begin If (S[i]<>'.') And (St[I]<>' ') Then ch:=ch+St[i]; End; For p:=Pos('+',St)+1 To L+6 Do begin Ret:=Ret + St[p]; end; Val(Ret,V,c); Val(ch,x,c); x:=x/(Power10(L-K-V)); Close(FF); Read_And_Convert:=x; End; {=================================} Begin TextAttr:=Blue SHL 4 +14;ClrScr; {<== valable pour tp ou bp pour Dos} Assign(F,Fich); ReWrite(F); J:=Sqrt(34671925); Str(j,S); K:=Pos('.',S); {Attenstion ici : la position retournée prend en compte le signe du nombre +/- même si celui-ci n'est pas écrit} ch:=''; L:= Length(s)-6; {6 correspond à la puissance de 10 après les différents chiffres du nombre comme E+0003 car on utilise ici le type Extended pour éviter les erreurs de débordement} for i:=1 to L Do Begin If S[i]<>'.' Then ch:=ch+S[i]; End; {une seconde méthode de traitement(plus précise!)} Writeln(f,Sqrt(34671925)); Val(ch,x,c); Writeln('Chaine après conversion de j : ', ch); Writeln('Nombre Sqrt(j) = ',J); x:=x/(Power10(L-K-Expo_Nombre(J))); {Affichage pour comparaison des résultats} Writeln('Valeur de x avec traitement direct du nombre J : '); Writeln('x = ',x); Close(F); Writeln; Writeln('Valeur de x lue depuis le fichier C:\save.txt '); Write('x = ',Read_And_Convert(F)); Readln; End.
Ne pas oublier le tag si satisfait.
Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
Heureux pour toi d'avoir pu être satisfait.
Dans ce cas, comme écrit dans ma signature : Ne pas oublier le tag si satisfait
le bouton est juste en bas du dernier message de la page.
Bonne continuation
Ne pas oublier le tag si satisfait.
Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager