Télécharger le zip
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 longprocedure 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é.
Merci pour cette analyse fOxiL’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èmeCar tabCode va de 0 à 43 vue que index ne peut aller que de 1 à 44 cela crée un code barre erronéeDonc 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 pasIl faut utiliser string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%'; en plaçant le 0 en premier
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 !
en effet petit souci de compatibilité avec delphi 2005 qui lui autoriseTextRect(Rect: TRect, X: Integer, Y: Integer, const Text: string); etTextRect(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);
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.
Bonjour,auriez-vous la version compilée de votre soft qui m'interesse beaucoup ?merci d'avanceEmmanuel
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte