La date

Fermé
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013 - Modifié par irongege le 20/07/2013 à 17:12
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013 - 24 juil. 2013 à 20:49
Bonjours ,à tous;
Merci bien de m'aider pour avoir une solution .
J'ai convertis la date en lettre arabe et j'ai utilise pour cela le code source ci-dessous.Le problème c'est que lors de l'exécution et quand je saisie une date quelconque dans le dbedit32 le système m'affiche un message d'erreurs** le 0 n'est une date valide**.!!!!Aider moi stp
Cordialement.
*************************Voici le code source******************
procedure TLaivraison_Actes_C13.DBEdit32KeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
Var annee,mois,jours :word;
x : Tdate;
const esp= ' ';
begin
x := StrtoDate(DBEdit32.Text);
DecodeDate(x,annee,mois,jours);
label38.Caption:=jours2Lettre(jours)+esp+mois2Lettre(mois)+esp+convertAr0(annee);

end;

*********************Unit LadateGlobal********************************
unit LaDateGlobal;
interface
uses
SysUtils ;


function convertAr0(Montant:Currency):string;
function centimAr0(Valeur:Currency):string;
function jours2Lettre(jour: word): string;
function mois2Lettre(moi: word): string;

implementation
//---------------------
function jours2Lettre(jour: word): string;
var M_L:string;
begin
case jour of
1:M_L :='ÇáÃæá' ; 7 :M_L :='ÇáÓÇÈÚ' ; 13 :M_L :='ÇáËÇáË ÚÔÑ' ;
2:M_L :='ÇáËÇÊí' ; 8 :M_L :='ÇáËÇãä' ; 14 :M_L :='ÇáÑÇÈÚ ÚÔÑ' ;
3:M_L :='ÇáËÇáË' ; 9 :M_L :='ÇáÊÇÓÚ' ; 15 :M_L :='ÇáÎÇãÓ ÚÔÑ' ;
4:M_L :='ÇáÑÇÈÚ' ; 10:M_L :='ÇáÚÇÔÑ' ; 16:M_L :='ÇáÓÇÏÓ ÚÔÑ' ;
5:M_L :='ÇáÎÇãÓ' ; 11:M_L :='ÇáÍÇÏí ÚÔÑ' ; 17:M_L :='ÇáÓÇÈÚ ÚÔÑ' ;
6:M_L :='ÇáÓÇÏÓ' ; 12:M_L :='ÇáËÇäí ÚÔÑ' ; 18:M_L :='ÇáËÇãä ÚÔÑ' ;

19 :M_L :='ÇáÊÇÓÚ ÚÔÑ' ; 25 :M_L :='ÇáÎÇãÓ æ ÇáÚÔÑæä' ;
20 :M_L :='ÇáÚÔÑæä' ; 26 :M_L :='ÇáÓÇÏÓ æ ÇáÚÔÑæä' ;
21 :M_L :='ÇáæÇÍÏ æ ÇáÚÔÑæä' ; 27 :M_L :='ÇáÓÇÈÚ æ ÇáÚÔÑæä' ;
22:M_L :='ÇáËÇäí æ ÇáÚÔÑæä' ; 28:M_L :='ÇáËÇãä æ ÇáÚÔÑæä' ;
23:M_L :='ÇáËÇáË æ ÇáÚÔÑæä' ; 29:M_L :='ÇáÊÇÓÚ æ ÇáÚÔÑæä' ;
24:M_L :='ÇáÑÇÈÚ æ ÇáÚÔÑæä' ; 30:M_L :='ÇáËáÇËæä' ;
31:M_L :='ÇáæÇÍÏ æ ÇáËáÇËæä' ;
//TALATOUNE OU TALATINE vous toujours changer
end;// case
result:= M_L ;
end;

function mois2Lettre(moi: word): string;
var M_L:string;
begin
case moi of
1:M_L :='ÌÇäÝí' ; 7 :M_L :='ÌæíáíÉ' ;
2:M_L :='ÝíÝÑí' ; 8 :M_L :='ÃæÊ' ;
3:M_L :='ãÇÑÓ' ; 9 :M_L :='ÓÈÊãÈÑ' ;
4:M_L :='ÃÈÑíá' ; 10:M_L :='ÃßÊæÈÑ' ;
5:M_L :='ãÇí' ; 11:M_L :='äæÝãÈÑ' ;
6:M_L :='ÌæÇä' ; 12:M_L :='ÏíÓãÈÑ' ;
end;// case
result:= M_L ;
end;

//--------------------
function convertAr0(Montant:Currency):string;
var some,centim, differ:string; posi:byte;i:Longint;
nombre:real;
begin
result:='';
if (montant=0) then
begin
result:='' ;exit;
end else

if(montant<0)then result:='';
str(montant:15:2,Some);
centim:=copy(some,14,2);
result:='';
montant:=Int(Montant);
//*******Milliards*******//
nombre:= Int(montant /1000000000);
if nombre > 0 then
begin
if nombre = 1 then
begin if result='' then result:= result + ' ãáíÇÑ ' else
result:= result +' æ '+ ' ãáíÇÑ ' ;
montant := montant -(nombre * 1000000000);
end else
if nombre = 2 then
begin if result='' then result:= result + ' ãáíÇÑíä ' else
result:= result +' æ '+ ' ãáíÇÑíä ' ;
montant := montant -(nombre * 1000000000);
end else
if (nombre > 2) and (nombre < 11) then
begin if result='' then result:= result +centimAr0(Nombre)+ ' ãáÇíí Ñ ' else
result:= result +' æ '+ centimAr0(Nombre)+' ãáÇíí Ñ ' ;
montant := montant -(nombre * 1000000000);
end else
if nombre > 10 then
begin if result='' then result:= result +centimAr0(Nombre)+ ' ãáíÇÑ ' else
result:= result +' æ '+centimAr0(Nombre)+ ' ãáíÇÑ ' ;
montant := montant -(nombre * 1000000000);
end else
end;
//****************Millionx************//
nombre:= Int(montant /1000000);
if nombre > 0 then
begin
if nombre = 1 then
begin if result = '' then result:= result + ' ãáíæä ' else
result:= result +' æ '+ ' ãáíæä ' ;
montant := montant -(nombre * 1000000);
end else
if nombre = 2 then
begin if result = '' then result:= result + ' ãáíæäíä ' else
result:= result +' æ '+ ' ãáíæäíä ' ;
montant := montant -(nombre * 1000000);
end else
if (nombre > 2) and (nombre < 11) then
begin if result = '' then result:= result +centimAr0(Nombre)+ ' ãáíæä ' else
result:= result +' æ '+centimAr0(Nombre)+ ' ãáÇííä ' ;
montant := montant -(nombre * 1000000);
end else
if nombre > 10 then
begin if result = '' then result:= result +centimAr0(Nombre)+ ' ãáíæä ' else
result:= result +' æ '+centimAr0(Nombre)+ ' ãáíæä ' ;
montant := montant -(nombre * 1000000);
end else
end;
//*************Milliers *********//
nombre:= Int(montant /1000);
if nombre > 0 then
begin
if nombre = 1 then
begin if result ='' then result:= result + ' ÃáÝ ' else
result:= result +' æ '+ ' ÃáÝ ' ;
montant := montant -(nombre * 1000);
end else
if nombre = 2 then
begin if result ='' then result:= result + ' ÃáÝíä ' else
result:= result +' æ '+ ' ÃáÝíä ' ;
montant := montant -(nombre * 1000);
end else
if (nombre > 2) and (nombre < 11) then
begin if result = '' then result:= result +centimAr0(Nombre)+ ' ÃáÇÝ ' else
result:= result +' æ '+centimAr0(Nombre)+ ' ÃáÇÝ ' ;
montant := montant -(nombre * 1000);
end else
if nombre > 10 then
begin if result = '' then result:= result +centimAr0(Nombre)+ ' ÃáÝ ' else
result:= result +' æ '+centimAr0(Nombre)+ ' ÃáÝ ' ;
montant := montant -(nombre * 1000);
end else
end;
//*******Centaines & down*******//
nombre:=Montant;
if (nombre>0)then begin
if result =''then result:= result+centimAr0(Nombre)else //-*-*-//
result:= result+' æ '+centimAr0(Nombre);
if (copy(result,1,4)=' æÇÍÏ ') and (Length(Result)=4)then
begin
//------------------------------------------------

//------------------------------------------------
Result:=''+centimAr0(StrTofloat(Centim))+' ' ;
end else
begin

if StrToInt(Centim)=0 then begin
Result:=Result+' '
end else
Result:=Result+' '+centimAr0(StrTofloat(Centim))+' ' ;
end; // differ:=result ;
// if copy(differ,2,1)='æ' then begin delete(differ,2,1) ;
// Result:=result+' '+ differ ;

// result:=differ ;
end

else if StrToInt(Centim)=0 then
Result:=Result+' '
else Result:=Result+' '+centimAr0(StrTofloat(Centim))+' ' ;
//--------------------------------- Formatagr du texte -----------------------

differ :=result;
//-----------------------------

if pos('ãÇÆÉ',Differ)<> 0 then
begin
posi:=pos( 'ãÇÆÉ ',Differ) ;
if ((copy(differ,posi+5 ,1) <> 'Ï' ) and (copy(differ,posi+5 ,1) <> 'æ' )) then
insert(' æ ',differ,posi+5);
posi:=pos( 'ãÇÆÉ æÇÍÏ',Differ) ;
if (copy(differ,posi+5 ,4) = 'æÇÍÏ') then insert(' æ ',differ,posi+5);
end ;

//------------------------------ **)
if pos('ãÇÆÊíä',Differ)<> 0 then
begin
posi:=pos( 'ãÇÆÊíä ',Differ) ;
if (copy(differ,posi+7 ,1) <> 'Ï' )then
insert(' æ ',differ,posi+7);
end ;

//------------------------------
posi:=pos('æ æ',differ);
if ((posi>1) and (copy(differ,pos('æ æ',differ),7)<> 'æ æÇÍÏ')) then delete(differ,posi+2,1);
result:=differ;


//--------------------------------- Fin du Formatagr du texte ----------------
end;
function centimAr0(Valeur:Currency):string;
var SUnit,SDiz,Code,mia:String;n1:Integer;
begin
SUnit:='æÇÍÏ ÅËäíä ËáÇËÉ ÃÑÈÚÉ ÎãÓÉ '+
'ÓÊÉ ÓÈÚÉ ËãÇäíÉ ÊÓÚÉ ÚÔÑÉ '+
'ÅÍÏì ÚÔÑ ÅËäì ÚÔÑ ËáÇËÉ ÚÔÑÃÑÈÚÉ ÚÔÑÎãÓÉ ÚÔÑ ÓÊÉ ÚÔÑ ÓÈÚÉ ÚÔÑ ÊãÇäíÉÚÔÑÊÓÚÉ ÚÔÑ ';
SDiz:='æÚÔÑíä æËáÇËíä æÃÑÈÚíä æÎãÓíä æÓÊíä '+
'æÓÈÚíä æËãÇäíä æÊÓÚíä ';

code:='';
mia:='';
//DDD:=False;
//N1:=0;
if Valeur>99 then begin
N1:=Trunc(valeur/100);
if (N1<>1 )and ( N1<>2 )
then mia:=mia+trim(copy(Sunit,(N1*9)-8,9));
valeur:=valeur-(N1*100);
if N1=2 then mia:=mia+' ãÇÆÊíä ' else // => et É 'æ '+
mia:=mia+' ãÇÆÉ '; // +' æ '
end;
//if valeur<>0 then begin
if valeur>19 then
begin
N1:=Trunc(Valeur/10)-1;
if code ='' then code:=code+trim(copy(SDiz,(N1*12)-11,12))+' '
else code:=code+'æ '+trim(copy(SDiz,(N1*12)-11,12));
N1:=Trunc(Valeur/10)*10;
Valeur := Valeur -N1; end ;
if (valeur> 0) then
code :=mia+trim(copy(sUnit,(trunc(valeur)*9)-8,9)) +' '+code else
code:=mia+' '+code;
//code :=mia+trim(copy(sUnit,(trunc(valeur)*9)-8,9)) +' áÇ '+code;


result:=code;
end;

end.

123

2 réponses

Comme il est difficile de donner un avis sur ton code peu lisible et mal conçu, mais une chose est certaine, la manipulation des variables de localisation et de formatage monétaire et horaire sont accessibles via des fonctions et procedures prédefinies, meme avec un traitement par programmation impérative ça ne necessite pas tant d'effort.

L'attention doit respecter les formats définies dans les options regionales et linguistiques du systeme accessibles via le panneau de conguration et ainsi necessite un traitement spécifique pour les machines hôtes si on pense deployer son programme.

A titre d'exemple pour le format date courte : JJ/MM/AAAA le programme ci-dessous affiche le nom du jour de la semaine.
-----------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender:TObject);
var Date_Fromat_Regional : TDateTime;
Nom_Du_Jour : String;

begin

Date_Fromat_Regional := StrTodate(Edit1.Text);
{ Format de date DD/MM/YYYY }

case DayOfWeek(Date_Fromat_Regional) of
1 : Nom_Du_Jour := 'ÇáÃÎÏ';         //Dimanche
2 : Nom_Du_Jour := 'ÇáÇËäíä';     //Lundi
3 : Nom_Du_Jour := 'ÇáËáÇËÇÁ';  //Mardi
4 : Nom_Du_Jour := 'ÇáÃÑÈÚÇÁ';  //Mercredi
5 : Nom_Du_Jour := 'ÇáÎãíÓ';        //Jeudi
6 : Nom_Du_Jour := 'ÇáÍãÚÉ';       //Vendredi
7 : Nom_Du_Jour := 'ÇáÓÈÊ';        //Samedi
end;

ShowMessage(Nom_Du_Jour);

end;
end.
0
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013
24 juil. 2013 à 20:49
Bonjours,
Merci beaucoup pour votre aide Monsieur c'est tros gentil,
Cordialement;
0