Affichage d'une date

Résolu
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013 - 20 juil. 2013 à 14:39
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013 - 24 juil. 2013 à 20:35
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 c'est urgent.
Merci d'avance;
*************************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.

2 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 juil. 2013 à 11:34
le système m'affiche un message d'erreurs**

normal..
tu ne peux pas faire digérer une autre langue à un système qui ne la comprends pas..
Moi, je n'utiliserai pas cette solution..

Je penserai plutôt "codification" et non procédure de conversion :

voir UTF8 et fontes adaptée à l'arabe


cantador
3
salmainf Messages postés 6 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 31 juillet 2013
24 juil. 2013 à 20:35
Bonjours ,Cantador,
Merci beaucoup pour votre aide ,vous êtes vraiment tros gentil;
Cordialement.
123
0
Rejoignez-nous