Bonjour,
J'avais déja évoqué mon problème dans un autre message et je croyais l'avaoir réglé en réinstallant lazarus complétement,
Mais voila ce n'est pas le cas donc j'ouvre une nouvelle discussion sue ce sujet.
Dans mes petites application j'utilise les composants natifs de gestion des base de données avec sqlite3
voici 2 commandes qui dans le premier cas me donne un message d'erreur de conversion et pas dans la deuxième forme
La déclaration de mes variables :
ML_PREMIERen String et XL_PREMIER en Double.
Je lie dans une table une valeur au format texte enregistrée par ajout d'espaces pour être à droite dans le champ de la donnée
Ensuite de transforme cette chaîne en valeur décimale avec décimale pour effectuer des calculs avant d'enregistrer le résultat sous la forme d'une chaîne
première forme avec erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ML_PREMIER:=data.Vehicule.FieldByName('L_PREMIER').AsString;
  XL_PREMIER:=StrToFloat((ML_PREMIER));
deuxième sans erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ML_PREMIER:=data.Vehicule.FieldByName('L_PREMIER').AsString;
 XL_PREMIER:=StrToFloat(Trim(ML_PREMIER));
Cherchant à comprendre j'ai créé une petite application utilisant les mêmes instructions avec une lecture de la base de données soit via un composant slite3 sur la fichez soit avec un datamodule qui est la frorme que j'utilise habituellement et là pas de problèmes
J'ai donc regardé de plus près le texte de mes unités et j'ai constaté des différences dont je ne connais pas la raison ni leur fonction
en premier le texte complet d'une unité simple de mon test sans problème
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
unit uessai;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TFessai }
 
  TFessai = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Fessai: TFessai;
 
implementation
 
{$R *.lfm}
 
{ TFessai }
 
procedure TFessai.Button1Click(Sender: TObject);
begin
  close;
end;
 
end.
et ensuite le début et la fin d'une unité à problème
Début
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
unit undepense;  // unité nouvelle dépense le 04 septembre 2014 vers 16h50
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, DBGrids, Buttons, StdCtrls, Calendar, MaskEdit, DbCtrls, ExtDlgs,
  udata, uoutils;
 
type
 
  { TFndepense }
 
  TFndepense = class(TForm)
    BCarburant: TBitBtn;
    BAnnuler: TBitBtn;
    BChoix: TBitBtn;
    BValiderDepense: TBitBtn;
    BValiderCompteur: TBitBtn;
    BValiderLitres: TBitBtn;
    BValiderMontant: TBitBtn;
    BConfirmerDepense: TBitBtn;
    BValiderDate: TBitBtn;
    BSuite: TBitBtn;
    BPeage: TBitBtn;
    BAssurance: TBitBtn;
    BEntretien: TBitBtn;
    BReparation: TBitBtn;
    BControle: TBitBtn;
    BDivers: TBitBtn;
    BTaxe: TBitBtn;
    BRetour: TBitBtn;
    Calendrier: TCalendar;
    DBCode: TDBEdit;
    EMoyennePlein: TEdit;
    EMoyenneGenerale: TEdit;
    EInformation: TEdit;
    EPrix_L: TEdit;
    GridVehicule: TDBGrid;
    EDate: TEdit;
    GridDepenses: TDBGrid;
    EGenre: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    MaskMontant: TMaskEdit;
    MaskCompteur: TMaskEdit;
    MaskLitres: TMaskEdit;
    Navigateur: TDBNavigator;
    PCarburant: TPanel;
    PCompteur: TPanel;
    PDonnees: TPanel;
    PMoyenne: TPanel;
    PVehicule: TPanel;
    PTitre: TPanel;
    PBoutons: TPanel;
    procedure BAnnulerClick(Sender: TObject);
    procedure BAssuranceClick(Sender: TObject);
    procedure BCarburantClick(Sender: TObject);
    procedure BChoixClick(Sender: TObject);
    procedure BConfirmerDepenseClick(Sender: TObject);
    procedure BControleClick(Sender: TObject);
    procedure BDiversClick(Sender: TObject);
    procedure BEntretienClick(Sender: TObject);
    procedure BPeageClick(Sender: TObject);
    procedure BReparationClick(Sender: TObject);
    procedure BRetourClick(Sender: TObject);
    procedure BSuiteClick(Sender: TObject);
    procedure BTaxeClick(Sender: TObject);
    procedure BValiderCompteurClick(Sender: TObject);
    procedure BValiderDateClick(Sender: TObject);
    procedure BValiderDepenseClick(Sender: TObject);
    procedure BValiderLitresClick(Sender: TObject);
    procedure BValiderMontantClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
    procedure DebutDepense;
    procedure LectureVehicule;
    procedure LectureTotaux;
    procedure SuiteSequence;
    procedure SequenceDate;
    procedure SequenceCompteur;
    procedure SequencePlein;
    procedure CalculMoyennePlein;
    procedure CalculPrixLitres;
    procedure SequenceMontant;
    procedure TestSuiteDepense;
    procedure EnregistrementDepense;
    procedure CreationNumero;
    procedure SuiteEnregistrement;
    procedure MajTotaux;
    procedure MajVehicule;
    procedure AjoutDepense;
    Procedure Annuler;
    procedure AfficheBoutons;
    procedure CacheBoutons;
    procedure AffichageDepenses;
  public
    { public declarations }
  end; 
 
var
  Fndepense: TFndepense;
  MQ,MQ1,MQ2,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,QA,QB,QC,QD,QE,QF,QG,QH,MANNEE_DEPENSE:String;
  MK_DEPENSE,MKM_ACHAT,MMASQUE,MANNEE,MDER_DATE,MKM_DEPENSE,MNUMERO,ML_PREMIER:String;
  MCODE,MDER_NUMERO,MMOYENNE_P,MMOYENNE_G,MCOMPTEUR,MKM_REALISE,MKM_DERNIER:String;
  MGENRE,MDATE,MMONTANT,MINFO,MLITRES,MT_CONTROLE,MT_DIVERS,MT_TAXES,MPRIX_L:String;
  MT_LITRES,MT_CARBURANT,MT_ASSURANCE,MT_ENTRETIEN,MT_PEAGE,MT_REPARATION:String;
  MZA,MZB,MPREMIER,MKM_D_PLEIN:String;
  XSUITE,XGENRE,XK_VEHICULE,XK_TOTAUX,XKM_D_PLEIN:Integer;
  XDER_NUMERO,XCOMPTEUR,XKM_PLEIN,XKM_REALISE,XKM_DERNIER,XKM_ACHAT,XLONG:Integer;
  XMONTANT,XMOYENNE_G,XMOYENNE_P,XT_CARBURANT,XLITRES,XT_LITRES,XL_PREMIER:Double;
  XT_ASSURANCE,XT_CONTROLE,XT_ENTRETIEN,XT_PEAGE,XT_REPARATION,XT_DIVERS:Double;
  XT_TAXES,XDER_DATE,XPRIX_L:Double;
  ZDATE:TDateTime;
  XJOUR,XMOIS,XANNEE:Word;
  YCOMPTEUR,YPLEIN:Boolean;
 
  const
    MVIDE='';
 
 
implementation
 
{ TFndepense }
 
procedure TFndepense.FormShow(Sender: TObject);
begin
 data.Vehicule.Close;
 MQ:='Select * from VEHICULE WHERE ACTIF = '+quotedstr('OUI');
 data.Vehicule.SQL:=MQ;
 data.Vehicule.open;
 data.Vehicule.ExecSQL;
   if data.Vehicule.RecordCount=0 then
    begin
et la fin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 data.Depense.SQL:='Select * from DEPENSE  WHERE CODE= '+quotedstr(MCODE);
  data.Depense.Open;
  data.Depense.ExecSQL;
end;
 
initialization
  {$I undepense.lrs}
 
end.
J'espère avoir été assez clair, puis-je modifier mes unités anciennes comme les nouvelles et pourquoi ces différences ou puis-je les modifier via l'EDI ?
Merci de votre aide avant que je fasse des bétises.
A+
PS : Précision je suis sous linux fedora 20 en 64bits