
Архимед
   
Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow
Репутация: 7 Всего: 93
|
| Код | public String Code_128 (String A) { // Dim BCode(0 To 1023) As Integer int[] BCode = new int [1024]; // Dim BInd As Integer int BInd; // Dim CurMode As String String CurMode; // Dim Ch As Integer int Ch; // Dim Ch2 As Integer int Ch2; // Dim I As Integer int I; // Dim LenA As Integer int LenA; // Dim CCode As Integer int CCode; // Dim S As String String S; // Dim BarArray As Object String[] BarArray;
// 'Собираем строку кодов // BInd = 0 BInd = 0; // CurMode = "" CurMode = ""; // I = 1 I = 1; // LenA = Len(A) LenA = A.Length; // While I <= LenA while (I <= LenA) { // 'Текущий символ в строке // Ch = Asc(Mid(A, I, 1)) // I = I + 1 Ch = (int) A [I++]; // 'Разбираем только символы от 0 до 127 // If Ch <= 127 Then if (Ch <= 127) { // 'Следующий символ // If I <= LenA Then if (I <= LenA) // Ch2 = Asc(Mid(A, I, 1)) Ch2 = (int) A [I]; // Else else // Ch2 = 0 Ch2 = 0; // End If } // 'Пара цифр - режим C // If (48 <= Ch) And (Ch <= 57) And // (48 <= Ch2) And (Ch2 <= 57) Then if (48 <= Ch && Ch <= 57 && 48 <= Ch2 && Ch2 <= 57) { // I = I + 1 I++; // If BInd = 0 Then if (BInd == 0) { // 'Начало режима C // CurMode = "C" CurMode = "C"; // BCode(BInd) = 105 // BInd = BInd + 1 BCode [BInd++] = 105; // ElseIf CurMode <> "C" Then } else if (CurMode != "C") { // 'Переключиться на режим C // CurMode = "C" CurMode = "C"; // BCode(BInd) = 99 // BInd = BInd + 1 BCode [BInd++] = 99; // End If } // 'Добавить символ режима C // BCode(BInd) = CInt(Chr(Ch) & Chr(Ch2)) // BInd = BInd + 1 BCode [BInd++] = int.Parse (new String (new char[] {Convert.ToChar (Ch), Convert.ToChar (Ch2)})); } // Else else { // If BInd = 0 Then if (BInd == 0) { // If Ch < 32 Then if (Ch < 32) { // 'Начало с режима A // CurMode = "A" CurMode = "A"; // BCode(BInd) = 103 // BInd = BInd + 1 BCode [BInd++] = 103; } // Else else { // 'Начало с режима B // CurMode = "B" CurMode = "B"; // BCode(BInd) = 104 // BInd = BInd + 1 BCode [BInd++] = 104; // End If } // End If } // 'Переключение по надобности в режим A // If (Ch < 32) And (CurMode <> "A") Then if (Ch < 32 && CurMode != "A") { // CurMode = "A" CurMode = "A"; // BCode(BInd) = 101 // BInd = BInd + 1 BCode [BInd++] = 101; // 'Переключение по надобности в режим B } // ElseIf ((64 <= Ch) And (CurMode <> "B")) Or (CurMode = "C") Then else if ((64 <= Ch && CurMode != "B") || (CurMode == "C")) { // CurMode = "B" CurMode = "B"; // BCode(BInd) = 100 // BInd = BInd + 1 BCode [BInd++] = 100; // End If } // 'Служебные символы // If (Ch < 32) Then if (Ch < 32) { // BCode(BInd) = Ch + 64 // BInd = BInd + 1 BCode [BInd++] = Ch + 64; // 'Все другие символы } // Else else { // BCode(BInd) = Ch - 32 // BInd = BInd + 1 BCode [BInd] = Ch - 32; // End If } // End If } // End If // End While } // 'Подсчитываем контрольную сумму // CCode = BCode(0) Mod 103 CCode = BCode [0] % 103; // For I = 1 To BInd - 1 for (I = 1; 1 < BInd; ++I) // CCode = (CCode + BCode(I) * I) Mod 103 // Next I CCode = (CCode + BCode [I] * I) % 103; // BCode(BInd) = CCode // BInd = BInd + 1 BCode [BInd++] = CCode; // 'Завершающий символ // BCode(BInd) = 106 // BInd = BInd + 1 BCode [BInd++] = 106; // 'Собираем строку символов шрифта // 'BarArray = Array("155", "515", "551", "449", "485", "845", "458", "494", "854", // '"548", "584", "944", "056", "416", "452", "065", "425", "461", "560", "506", // '"542", "164", "524", "212", "245", "605", "641", "254", "614", "650", "119", // '"191", "911", "089", "809", "881", "098", "818", "890", "188", "908", "980", // '"01:", "092", "812", "029", "0:1", "821", "221", "182", "902", "128", "1:0", // '"122", "209", "281", ":01", "218", "290", ":10", "230", "5<0", ";00", "04=", // '"0<5", "40=", "4<1", "<05", "<41", "05<", "0=4", "41<", "4=0", "<14", "<50", // '"=40", "50<", "320", "=04", "830", "047", "407", "443", "074", "434", "470", // '"344", "704", "740", "113", "131", "311", "00;", "083", "803", "038", "0;0", // '"308", "380", "023", "032", "203", "302", "A", "B", "C", "@") BarArray = new String[] {"155", "515", "551", "449", "485", "845", "458", "494", "854", "548", "584", "944", "056", "416", "452", "065", "425", "461", "560", "506", "542", "164", "524", "212", "245", "605", "641", "254", "614", "650", "119", "191", "911", "089", "809", "881", "098", "818", "890", "188", "908", "980", "01:", "092", "812", "029", "0:1", "821", "221", "182", "902", "128", "1:0", "122", "209", "281", ":01", "218", "290", ":10", "230", "5<0", ";00", "04=", "0<5", "40=", "4<1", "<05", "<41", "05<", "0=4", "41<", "4=0", "<14", "<50", "=40", "50<", "320", "=04", "830", "047", "407", "443", "074", "434", "470", "344", "704", "740", "113", "131", "311", "00;", "083", "803", "038", "0;0", "308", "380", "023", "032", "203", "302", "A", "B", "C", "@"};
// S = "" S = ""; // For I = 0 To BInd - 1 for (I = 0; I < BInd; ++I) { // S = S & Code_Char(Code_128_ID(BCode(I))) // 'S = S & BarArray(BCode(I)) // Next I } // Code_128 = S //End Function }
|
enjoy
--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw
|