C'est un petit programme qui convertit la date du jour en langue Arabe.
La fonction intégrée convertit les jours de semaine ainsi que les mois en Arabe, le numéro du jour et l'année sont gardés tels quels.
Source / Exemple :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MoisEnArabe(moi: word): string;
var MLA:string;
begin //donner les mois en Arabe de janvier à décembre dans le même ordre
case moi of
1:MLA :='ÌÇäÝí' ; 7 :MLA :='ÌæíáíÉ' ;
2:MLA :='ÝíÝÑí' ; 8 :MLA :='ÃæÊ' ;
3:MLA :='ãÇÑÓ' ; 9 :MLA :='ÓÈÊãÈÑ' ;
4:MLA :='ÃÝÑíá' ; 10:MLA :='ÃßÊæÈÑ' ;
5:MLA :='ãÇí' ; 11:MLA :='äæÝãÈÑ' ;
6:MLA :='ÌæÇä' ; 12:MLA :='ÏíÓãÈÑ' ;
end;// case
Result:= MLA ;
end;
function JourEnArabe(j: word): string;
var JLA:string;
days: array[1..7] of string;
begin // donner les jours en Arabe
days[1] := 'ÇáÃÍÏ'; //dimanche
days[2] := 'ÇáÇËäíä'; // lundi
days[3] := 'ÇáËáÇËÇÁ'; // mardi
days[4] := 'ÇáÃÑÈÚÇÁ'; // mercredi
days[5] := 'ÇáÎãíÓ'; // jeudi
days[6] := 'ÇáÌãÚÉ'; // vendredi
days[7] := 'ÇáÓÈÊ'; // samedi
JLA:=days[DayOfWeek(date)] ;
Result:= JLA ;
end;
function DateEnArabe():string;
var annee,mois,jour :word;
begin
DecodeDate(Date,annee,mois,jour);// decoder la date du jour
DateEnArabe:='íæã '+JourEnArabe(jour)+' '+inttostr(jour)+' '+MoisEnArabe(mois)+' '+inttostr(annee);
// DateEnArabe reçoit la date jour en Arabe
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=DateEnArabe;
end;
end.
Conclusion :
Pour avoir le résultat en bonne et due forme vous devez au préalable ajouter la langue Arabe.
Par exemple Arabe Algérie.
7 févr. 2009 à 09:19
pourquoi les lettre arabe sont illisible ds delphi ,
'ÇáÃÍÏ' il se voie comme ça , ou bien comme ça ?????
je n'arrive pas à ecrire en arabe ds delphi
qlq un à une idée , svp aidez moi,
Merci d'avance.
14 juil. 2008 à 12:32
je crois que le grand prob pour les date en arabe c que le premier jour c pas le samedi sous windows alors
pour le calendrier c facile
voici un code pour vous sérvir...
alors, si dimanche est le premier jour
SetLocaleInfo(LOCALE_SYSTEM_DEFAULT,LOCALE_IFIRSTDAYOFWEEK,'5');
mais .....a la prochaine
17 janv. 2008 à 09:05
merci pour ta contribution.
je me permet un conseil:
Pour MoisEnArabe met les strings de conversion dans un tableau (comme tu l'as fait pour JourEnArabe), mais met le tableau en dehors de la fonction.
comme ça, tu peux les mettre à jour si nécessaire ou les utiliser pour faire des boucles (en-tête, ...)
Cela t'évitera de RE-initialiser les tableaux à chaque appel.
bon code,
Loda
16 janv. 2008 à 21:03
En revanche, là où je ne suis pas d'accord avec lui, c'est sur le fait de fusionner les trois fonctions en une seule. En effet, on peut avoir besoin d'une, de deux ou des trois fonctions à un moment ou à un autre au cours de l'exécution.
Le code est clair et bien traduit (:)).
Suggestion : pour que le code soit encore plus facilement réutilisable, je pense que serait une bonne idée de pouvoir transmettre une date quelconque à la fonction DateEnArabe au lieu de toujours renvoyer la date courante.
16 janv. 2008 à 16:59
trés bon votre exemple, rien à dire que de vous souhaiter bonne continuation.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.