f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
22 juil. 2006 à 00:37
fbalien
Messages postés251Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention11 novembre 2016
-
26 avril 2011 à 19:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
amiga68
Messages postés54Date d'inscriptiondimanche 23 février 2003StatutMembreDernière intervention21 décembre 2009 26 avril 2011 à 19:32
Pour Delphi7 perso :
mise en commentaires de la ligne 407
enlèvement des commentaires en ligne 406
// ****************************************************************************
// * Si caractère corespond au type de bande on l'affiche en petit *
// ****************************************************************************
ITRegister
Messages postés1Date d'inscriptionmardi 26 avril 2011StatutMembreDernière intervention26 avril 2011 26 avril 2011 à 12:38
Bonjour serait-il possible d'avoir une version compilée ?? merci
cs_vpieux
Messages postés1Date d'inscriptionvendredi 12 mai 2006StatutMembreDernière intervention21 mars 2011 21 mars 2011 à 14:47
Bonjour,
Nous utilisons votre logiciel CODEDLT pour imprimer nos étiquettes LTO-4, (cela fonctionne super bien), je souhaiterais intégrer le type de bande LTO-5 (1600Go), j'ai donc repris votre code source mais je ne développe pas en delphi.
Pouvez vous ajouter ce module ?
D'avance merci
Véronique PIEUX
vpieux@jouve.fr
cs_emmanuelt
Messages postés1Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention10 octobre 2006 10 oct. 2006 à 14:56
Bonjour,
auriez-vous la version compilée de votre soft qui m'interesse beaucoup ?
merci d'avance
Emmanuel
cs_calhoun
Messages postés1Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention16 août 2006 16 août 2006 à 14:06
Il s'agit d'imprimer des codes barre pour un ROBOT de sauvegarde ESL9595.
Merci de votre aide.
fbalien
Messages postés251Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention11 novembre 2016 25 juil. 2006 à 12:17
en effet petit souci de compatibilité avec delphi 2005 qui lui autorise
TextRect(Rect: TRect, X: Integer, Y: Integer, const Text: string); et
TextRect(var Rect: TRect, var Text: string, TextFormat: TTextFormat);
par contre en mettant extRect(recTexte ,0,0, strtemp); le texte s'affiche bien ??
car avec delphi 2005 je suis obligé de faire çà TextRect (recTexte ,recTexte.left,recTexte.Top ,strtemp);
amiga68
Messages postés54Date d'inscriptiondimanche 23 février 2003StatutMembreDernière intervention21 décembre 2009 25 juil. 2006 à 08:14
Euh... Ca plante à la compilation (Delphi 7 personal)
Ligne 406 : dessin.TextRect(recTexte ,strtemp);
[Erreur] UfrmMaitre.pas(406): Types incompatibles : 'Integer' et 'String'
Correction : procedure dessin.TextRect(recTexte ,0,0, strtemp); et ça marche !
fbalien
Messages postés251Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention11 novembre 2016 23 juil. 2006 à 18:27
Merci pour cette analyse fOxi
L'idée du tableau dans le quel chercher le code et très bien je l'avais déjà utilisé mais pour quoi pas ici là je cherche encor pour quoi je me suis compliqué le code comme çà
Dans la fonction Getcode çà pose un problème
Car tabCode va de 0 à 43 vue que index ne peut aller que de 1 à 44 cela crée un code barre erronée
Donc soit on modifie getcode result :TabCode[index-1] ou la déclaration de Tabcode ce que j'ai privilégié tabCode : array[1..44]of Tcode...
Par contre tel quel dans la fonction incvaleur çà marche pas
Il faut utiliser string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%'; en plaçant le 0 en premier
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 22 juil. 2006 à 00:37
function TfrmMaitre.getCode( digit : char ) :Tcode ;
var
index : integer;
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
index := pos(UpCase(Digit),CharCase);
if index <> 0 then
result := TabCode[index]
else
raise ERangeError.Create('"'+Digit+'" N''est pas un caractère valide');
end;
tu peu utiliser le type Single qui est bien mieux que le type réel :
TdimCode = record
Longueur, Hauteur, // longueur Hauteur de l'étiquette (width, height)
margeL, // marge gauche et droite (MarginLR)
margeH, // Espace pour le texte (TextSpacing)
LongueurCode, HauteurCode : single; // longeur,hauteur du code barre (CodeWidth,CodeHeight)
end;
procedure TfrmMaitre.strDepartKeyPress(Sender: TObject; var Key: Char);
begin
key := upcase(key);
if not(key in ['A'..'Z', '0'..'9', '-',' ','.','*','$','/','+','%',#8]) then
key := #0;
end;
ou encore, pour eviter un set trop long
procedure TfrmMaitre.strDepartKeyPress(Sender: TObject; var Key: Char);
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
key := upcase(key);
if pos(Key,CharCase) = 0 then
key := #0;
end;
ta procedure incValeur est trop lourde aussi, y'a moyen de faire plus simple.
procedure incValeur(var strvaleur : string);
var
c, index : integer;
digit : char;
retenu : boolean;
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
retenu := true;
for c := 7 downto 2 do
if retenu then begin
digit := strvaleur[c];
retenu := false;
index := pos(digit,charcase);
if index = 0 then
raise ERangeError.Create('"'+digit+'" N''est pas un caractère valide');
case index of
1..8 : digit := charcase[index+1];
9..15 : if rgIncrementation.ItemIndex = 0 then
digit := '0'
else
digit := charcase[index+1];
16..35 : if rgIncrementation.ItemIndex <= 1 then
digit := '0'
else
digit := charcase[index+1];
36 : digit := '0';
else
retenu := true;
end;
if not retenu then
retenu :(digit '0');
strvaleur[c] := digit;
end;
end;
la constante CharCase peut etre declarée globalement pour eviter de la recopier a chaque fois.
sinon, ça a l'air pas mal, code bien ecrit et commenté.
26 avril 2011 à 19:53
pour la version compiler voir sur mon site
http://www.elecinfo.fr/
A+
26 avril 2011 à 19:32
mise en commentaires de la ligne 407
enlèvement des commentaires en ligne 406
// ****************************************************************************
// * Si caractère corespond au type de bande on l'affiche en petit *
// ****************************************************************************
dessin.Font.size := 5;
dessin.TextRect (recTexte ,recTexte.left,recTexte.Top ,strtemp);
// dessin.TextRect (recTexte ,strtemp);
et ça marche !
26 avril 2011 à 12:38
21 mars 2011 à 14:47
Nous utilisons votre logiciel CODEDLT pour imprimer nos étiquettes LTO-4, (cela fonctionne super bien), je souhaiterais intégrer le type de bande LTO-5 (1600Go), j'ai donc repris votre code source mais je ne développe pas en delphi.
Pouvez vous ajouter ce module ?
D'avance merci
Véronique PIEUX
vpieux@jouve.fr
10 oct. 2006 à 14:56
auriez-vous la version compilée de votre soft qui m'interesse beaucoup ?
merci d'avance
Emmanuel
16 août 2006 à 14:06
Il s'agit d'imprimer des codes barre pour un ROBOT de sauvegarde ESL9595.
Merci de votre aide.
25 juil. 2006 à 12:17
TextRect(Rect: TRect, X: Integer, Y: Integer, const Text: string); et
TextRect(var Rect: TRect, var Text: string, TextFormat: TTextFormat);
par contre en mettant extRect(recTexte ,0,0, strtemp); le texte s'affiche bien ??
car avec delphi 2005 je suis obligé de faire çà TextRect (recTexte ,recTexte.left,recTexte.Top ,strtemp);
25 juil. 2006 à 08:14
Ligne 406 : dessin.TextRect(recTexte ,strtemp);
[Erreur] UfrmMaitre.pas(406): Types incompatibles : 'Integer' et 'String'
Dans l'aide ==> Syntaxe Delphi :
procedure TextRect(Rect: TRect; X, Y: Integer; const Text: string);
Correction : procedure dessin.TextRect(recTexte ,0,0, strtemp); et ça marche !
23 juil. 2006 à 18:27
L'idée du tableau dans le quel chercher le code et très bien je l'avais déjà utilisé mais pour quoi pas ici là je cherche encor pour quoi je me suis compliqué le code comme çà
Dans la fonction Getcode çà pose un problème
Car tabCode va de 0 à 43 vue que index ne peut aller que de 1 à 44 cela crée un code barre erronée
Donc soit on modifie getcode result :TabCode[index-1] ou la déclaration de Tabcode ce que j'ai privilégié tabCode : array[1..44]of Tcode...
Par contre tel quel dans la fonction incvaleur çà marche pas
Il faut utiliser string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%'; en plaçant le 0 en premier
22 juil. 2006 à 00:37
var
index : integer;
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
index := pos(UpCase(Digit),CharCase);
if index <> 0 then
result := TabCode[index]
else
raise ERangeError.Create('"'+Digit+'" N''est pas un caractère valide');
end;
tu peu utiliser le type Single qui est bien mieux que le type réel :
TdimCode = record
Longueur, Hauteur, // longueur Hauteur de l'étiquette (width, height)
margeL, // marge gauche et droite (MarginLR)
margeH, // Espace pour le texte (TextSpacing)
LongueurCode, HauteurCode : single; // longeur,hauteur du code barre (CodeWidth,CodeHeight)
end;
procedure TfrmMaitre.strDepartKeyPress(Sender: TObject; var Key: Char);
begin
key := upcase(key);
if not(key in ['A'..'Z', '0'..'9', '-',' ','.','*','$','/','+','%',#8]) then
key := #0;
end;
ou encore, pour eviter un set trop long
procedure TfrmMaitre.strDepartKeyPress(Sender: TObject; var Key: Char);
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
key := upcase(key);
if pos(Key,CharCase) = 0 then
key := #0;
end;
ta procedure incValeur est trop lourde aussi, y'a moyen de faire plus simple.
procedure incValeur(var strvaleur : string);
var
c, index : integer;
digit : char;
retenu : boolean;
const
CharCase : string = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%';
begin
retenu := true;
for c := 7 downto 2 do
if retenu then begin
digit := strvaleur[c];
retenu := false;
index := pos(digit,charcase);
if index = 0 then
raise ERangeError.Create('"'+digit+'" N''est pas un caractère valide');
case index of
1..8 : digit := charcase[index+1];
9..15 : if rgIncrementation.ItemIndex = 0 then
digit := '0'
else
digit := charcase[index+1];
16..35 : if rgIncrementation.ItemIndex <= 1 then
digit := '0'
else
digit := charcase[index+1];
36 : digit := '0';
else
retenu := true;
end;
if not retenu then
retenu :(digit '0');
strvaleur[c] := digit;
end;
end;
la constante CharCase peut etre declarée globalement pour eviter de la recopier a chaque fois.
sinon, ça a l'air pas mal, code bien ecrit et commenté.