cs_amina27
Messages postés5Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention28 mars 2007
-
19 juin 2006 à 14:11
cs_amina27
Messages postés5Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention28 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!!
cs_amina27
Messages postés5Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention28 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 ??
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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és5Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention28 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;
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 ????