Composant pour écrire l'arabe

cs_amina27 Messages postés 5 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 28 mars 2007 - 19 juin 2006 à 14:11
cs_amina27 Messages postés 5 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 28 mars 2007 - 5 juil. 2006 à 11:11
bonjour a tous

je voudrais pouvoir meliorer un logiciel qui a été programmer sous delphi afin de pouvoir ecrire en arabe 

ce logiciel nous permet d'editer des informations dans une zone de saisie , cette dernière fait un affichage en point des caractères taper , "comme une matrice 8X8"
j'aimerais programmer un composant qui nous permet de le faire , mais je ne sais pas trop ??
toutes aide serait la bienvenue!!

merci

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
19 juin 2006 à 17:26
heu ... logiquement tu fait des boites de saise normales, avec charset arabe ou autre et police arabe qui vas avec.

aprés tout ça marche pour les langues asiatiques donc pourquoi pas d'autres.

ah oui ok, je crois que tu veux parler d'un espece de panneaux de "led" ou les caracteres sont ecrit comme cela :

..000...0......0.......000..
.0...0..0......0......0...0.
.00000..0......0......0...0.
.0...0..0......0......0...0.
.0...0..00000..00000...000..

c'est ça ?

mmm ça risque d'etre dur car les caracteres arabes sont assé complexe dans leurs forme, enfin en meme temps je connais pas
trop...

mais sur, c'est faisable.
cs_amina27 Messages postés 5 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 28 mars 2007
22 juin 2006 à 10:05
salut!!!

c'est ça oui , c'est pour avoir un affichage en point des lettres
arabes , j'aimerais programmer un composant qui me permet de saisir les
lettres puis les afficher en point .

je sais que ce n'ai pas facile , mais j'aimerais avoir une aide pour ça :

mon idée première est d'ecrire dans un fichier la correspondance de
chaque lettre c'est a dire son code unicode avec une matrice 8*8 (un
peu comme ça ):

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 1 1 0 0 0

0 1 0 0 0 0 1 0

0 1 1 1 1 1 1 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0


puis écrire une fonction qui recupère chaque caractère tapé puis ouvrir
le fichier en question , et affichier le resultat en point sur une
matrice 8*8 .

mais je ne sais pas trop comment je peut le faire ??

alors merci pour toutes aides !!
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
23 juin 2006 à 18:31
simple...

il te suffit de créer deux type de tableaux :

Type
  TAlpha8x8 = array[0..7,0..7] of byte;
  TMatrixAlpha = array[0..128] of TAlpha8x8; //regler la profondeur au nombre de caracteres.

procedure WriteMatrix(const FileName : string; const MA : TMatrixAlpha);
var
  FS : TFileStream;
begin
  FS := nil;
  try
    FS := TFileStream.Create(FileName, fmCreate);
    FS.Write(MA, SizeOf(MA));
  finally
    FS.Free;
  end;
end;

procedure ReadMatrix(const FileName : String; var MA : TMatrixAlpha);
var
  FS : TFileStream;
begin
  FS := nil;
  if not FileExists(FileName) then exit;
  try
    FS := TFileStream.Create(FileName, fmOpenRead);
    FS.Read(MA, SizeOf(MA));
  finally
    FS.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Test : TMatrixAlpha;
    N,X,Y  : integer;
begin
  for N := 0 to 128 do
      for X := 0 to 7 do
          for Y := 0 to 7 do
              Test[N,X,Y] := random(2);
  if SaveDialog1.Execute then
     WriteMatrix(SaveDialog1.FileName,Test);
end;

aprés pour les dessiner, il te suffit de scanner en X et Y la matrice 8x8 et d'utiliser un bitmap avec ScanLine pour reporter les byte a 1 et 0.
cs_amina27 Messages postés 5 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 28 mars 2007
5 juil. 2006 à 11:11
salut !
merci pour tes informations , mais moi je veux pouvoir créer un nouveau composant , par exemple comme TMemo , mais l'affichage se fera en point.
j'ai plutot utilisé une structure pour faire correspondre a chaque caractère unicode sa matrice en point et tout cela sera declarer dans un fichiers de constantes un peut du genre :

Type
  TUnicodeMatrice = record
    Char_Unicode: char;
    Char_Matrice: array[1..8] of array [1..8] of integer;
    
end;


var


matrice1 : TUnicodeMatrice;

matrice1.Char_Unicode:= #0621;
matrice1.Char_Matrice:= (   0, 0, 0, 0, 0, 0, 0, 0
                                          0, 0, 0, 0, 0, 0, 0, 0
                                          0, 0, 0, 0, 1, 0, 0, 0
                                          0, 0, 0, 1, 0, 0, 0, 0
                                          0, 0, 0, 0, 1, 1, 0, 0
                                          0, 0, 0, 1, 0, 0, 0, 0
                                          0, 0, 0, 0, 0, 0, 0, 0
                                          0, 0, 0, 0, 0, 0, 0, 0);

mais je sais pas comment je peut implementer la fonction qui nous recupère le caracère taper et nous donne son codage en unicode , j'ai pensé utilisé getpressekey , mais je ne sais pas trop comment le faire .. et surtout comment établire l'affichage en point sous delphi ????

merci a vous pour toutes aides  
Rejoignez-nous