CODEDLT

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 22 juil. 2006 à 00:37
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 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.

https://codes-sources.commentcamarche.net/source/38712-codedlt

fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
26 avril 2011 à 19:53
Bonjour

pour la version compiler voir sur mon site
http://www.elecinfo.fr/
A+
amiga68 Messages postés 54 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 21 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 *
// ****************************************************************************

dessin.Font.size := 5;
dessin.TextRect (recTexte ,recTexte.left,recTexte.Top ,strtemp);
// dessin.TextRect (recTexte ,strtemp);

et ça marche !
ITRegister Messages postés 1 Date d'inscription mardi 26 avril 2011 Statut Membre Dernière intervention 26 avril 2011
26 avril 2011 à 12:38
Bonjour serait-il possible d'avoir une version compilée ?? merci
cs_vpieux Messages postés 1 Date d'inscription vendredi 12 mai 2006 Statut Membre Dernière intervention 21 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és 1 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 10 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és 1 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 16 août 2006
16 août 2006 à 14:06
Je cherche un moyen d'imprimer des codes barre avec le texte en dessous et le motif du code barre de la forme suivante http://193.189.147.16/cmitlse/IMG/jpg/code_barre.jpg.

Il s'agit d'imprimer des codes barre pour un ROBOT de sauvegarde ESL9595.

Merci de votre aide.
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 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és 54 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 21 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'

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 !
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 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és 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
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é.
Rejoignez-nous