bonjour
je suis débutante en Delphi, et je suis en train de développe une petite application pour la gestion des missions, mais j'ai des difficultés, et j’aimerais bien de trouver un aide
merci
bonjour
je suis débutante en Delphi, et je suis en train de développe une petite application pour la gestion des missions, mais j'ai des difficultés, et j’aimerais bien de trouver un aide
merci
Bonjour,
Impossible de trouver de l'aide si tu ne dis même pas de quelles difficultés il s'agit.... , mais j'ai des difficultés, et j’aimerais bien de trouver un aide
A+.
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Bonjour,
si il s'agit de difficultés pour la prise en main de Delphi, vous pouvez consulter les npmbreux tutoriels dont les liens sont donnés sur ce site, ainsi que la FAQ. ensuite si vous rencontrez des difficultés sur un point précis nous serons heureux de vous aider.
@++
Dany
Mon Tutoriel sur le développement Intraweb
N'oubliez pas de consulter les FAQ Delphi ainsi que les Cours et tutoriels sur la programmation Delphi
bonjour
merci pour votre réponse
j'ai ce message d’erreur : ("5" n'est pas une valeur entière correcte ),et je vous informe que mon objectif est de sommer des valeur de type monétaire dans un table ,et j'utilise des dbedit .
merci
Ok mais le plus simple serait que tu mettes ton code qui pose problème, ce serait plus facile pour voir exactement ou est le problème... sur quelles variables fais tu une addition ?
de quel type sont ces variables ?
Apparement tu fais une addition sur des valeurs qui ne sont pas des entiers.
il faut surement passer par les conversions de type...
oui,exactement, sont de type monétaire,et j'ai aucune idée sur la conversation ,ci-dessous le code
et je vous informe que j'utilise une table
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 var Form5: TForm5; implementation USES UnitMD; {$R *.DFM} procedure TForm5.BitBtn1Click(Sender: TObject); var t,v:integer; tot:real; begin t:=StrToInt(DBEdit6.Text); v:=StrToInt(DBEdit7.Text) ; tot:=t+v; dbedit13.Text:=FloatToStr(tot); end; end.
tu peux me donner le type de champ dans lequel tu vas sauvegarder ta valeur totale ?
Bonjour,
Que de confusions rien que sur ce bout de code !
si les valeurs dont de type monétaires (donc currency ou au pire real) pourquoi transformer les valeurs en entiers par StrToInt ? donc en perdant les chiffres après la virgule ou en obtenant un erreur de conversion à cause du point décimal (point ou virgule selon les settings du poste) , utilisez StrToFloat
De même pourquoi passer par les DBEditn.Text au lieu d'utiliser les valeurs des champs :
par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Table.FieldByName('Total').AsCurrency:=Table.FieldBYName('M1').asCurrency+Table.FieldBYName('M2').asCurrency
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
C'est vrai que c'est "caca" , mais bon, on a tous débuté un jour.
Maintenant, si le champ cible pour le total est dans la même table, il n'a aucun intérêt.
Pour l'affichage, un champ calculé dans la définition du composant serait bien suffisante.
Bonjour B-ZINA
Concernant votre code :
Pour commencer, vous déclarez deux variables (Integer) utilisées pour stocker des chiffres ronds.
Ensuite pour le résultat dans DBEdit13 vous utiliser (FloatTostr) utilisé pour les chiffres à virgule flottante.
Quelques conseils :// votre code
procedure TForm5.BitBtn1Click(Sender: TObject);
var t,v:integer;
tot:real;
begin
t:=StrToInt(DBEdit6.Text);
v:=StrToInt(DBEdit7.Text) ;
tot:=t+v;
dbedit13.Text:=FloatToStr(tot);
end;
- Vous devez protéger les opérations de calcul. La valeur de T et V doivent être vérifiées avant le calcul du total. Si les valeurs de DBedit6 et DBEdit7 sont en permanence soit (Integer ou Double), le mieux est d’attribuer à l’avance lors de la conception de votre base de données le format adéquat à vos champs, ça vous évitera les conversions inutiles et les erreurs.
- Si pour X raisons vous souhaitez garder des champs (String) pour faire vos calculs, cela ne pose aucun problème à partir du moment où vous protégez votre procédure et vérifier à l’avance les valeurs saisies dans vos (DBEdit).
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 Correction : unit UnitTest; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TFormTest = class(TForm) DBEdit6: TEdit; DBEdit7: TEdit; DBEdit13: TEdit; BtnCalculer: TButton; Edit1: TEdit; procedure DBEdit6KeyPress(Sender: TObject; var Key: Char); procedure DBEdit7KeyPress(Sender: TObject; var Key: Char); procedure BtnCalculerClick(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var FormTest: TFormTest; implementation {$R *.dfm} //cette function vérifie le caractère saisi si c'est un numérique // pour l'utiliser il faut faire (if IsNum(DBEdit7.text) then faire quelque chose function IsNum(Num: String): Boolean; var X : Integer; begin Result := True; for X := 1 to Length(Num) do begin if Pos(copy(Num,X,1),'0123456789') = 0 then begin Result := False; Exit; end; end; end; // Cette ligne est encore mieux, puisque elle interdit à la base la saisie de caractères autres que des chiffres procedure TForm3.DBEdit6KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #13, Chr(VK_BACK), Chr(VK_DELETE)]) then Key := #00 end; procedure TForm3.DBEdit7KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #13, Chr(VK_BACK), Chr(VK_DELETE)]) then Key := #00 end; // procédure de calcul procedure TForm3.BtnCalculerClick(Sender: TObject); Var t,v, Tot:Double; Begin // Vérifier si les DBEdit.text ne sont pas vides if (DBEdit6.Text <>'') and (DBEdit7.Text <> '')then Begin t:=StrtoFloat(DBEdit6.Text); v:=StrtoFloat(DBEdit7.Text) ; tot:=t+v; dbedit13.Text:=FloatToStr(tot); //ou Edit1.Text:=FormatFloat('0.00',tot); End; end; end.
D’autres méthodes de calcul plus élégant existent, mais il faut un DataModule et savoir utiliser les champs calculés.
Amicalement
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