Difference between revisions of "ReNamer:Scripts:EAN-13"
Jump to navigation
Jump to search
(added another example) |
(note about codes of any length) |
||
Line 2: | Line 2: | ||
This script will calculate the checksum digit for the [http://en.wikipedia.org/wiki/EAN-13 EAN-13 barcode]. The checksum digit will be appended to the end of the base name. | This script will calculate the checksum digit for the [http://en.wikipedia.org/wiki/EAN-13 EAN-13 barcode]. The checksum digit will be appended to the end of the base name. | ||
+ | |||
+ | Although EAN-13 codes are 13 digits long (12 + check digit) the script will work for codes of any length. | ||
{| class="wikitable" | {| class="wikitable" |
Revision as of 18:41, 9 June 2010
This script will calculate the checksum digit for the EAN-13 barcode. The checksum digit will be appended to the end of the base name.
Although EAN-13 codes are 13 digits long (12 + check digit) the script will work for codes of any length.
Input | Output |
---|---|
002010000000.png | 0020100000007.png |
002010000001.png | 0020100000014.png |
002010000002.png | 0020100000021.png |
002010000003.png | 0020100000038.png |
007567816412.png | 0075678164125.png |
Tested
- ReNamer 5.50+ Beta
Code
Author: Denis Kozlov. Date: 9 June 2010.
function EAN13Checksum(const EAN13: String): Integer;
var
I, Digit: Integer;
Odd: Boolean;
Sum: Integer;
begin
Sum := 0;
Odd := True;
for I := Length(EAN13) downto 1 do
begin
Digit := StrToIntDef(EAN13[I], 0);
if Odd then
Sum := Sum + Digit * 3
else
Sum := Sum + Digit;
Odd := not Odd;
end;
Result := Sum mod 10;
if Result <> 0 then
Result := 10 - Result;
end;
var
BaseName, Ext: WideString;
Checksum: Integer;
begin
BaseName := WideExtractBaseName(FileName);
Ext := WideExtractFileExt(FileName);
Checksum := EAN13Checksum(BaseName);
FileName := BaseName + IntToStr(Checksum) + Ext;
end.