Konu: c# barcode
Arkadaşlar vfp da böyle bir function vardı ve barcode yazdırıyordum fakat c# a dönüştüreyim dedim malesef
olmadı nerede hata yaptım acaba ?
vfp kodları
FUNCTION _StrTo128C(tcString)
LOCAL lcStart, lcStop, lcRet, lcCheck, lcCar, ;
lnLong, lnI, lnCheckSum, lnAsc
lcStart = CHR(105 + 32)
lcStop = CHR(106 + 32)
lnCheckSum = ASC(lcStart) - 32
lcRet = ALLTRIM(tcString)
lnLong = LEN(lcRet)
*--- La longitud debe ser par
IF MOD(lnLong,2) # 0
lcRet = '0' + lcRet
lnLong = LEN(lcRet)
ENDIF
*--- Convierto los pares a caracteres
lcCar = ''
FOR lnI = 1 TO lnLong STEP 2
lcCar = lcCar + CHR(VAL(SUBS(lcRet,lnI,2)) + 32)
ENDFOR
lcRet = lcCar
lnLong = LEN(lcRet)
FOR lnI = 1 TO lnLong
lnAsc = ASC(SUBS(lcRet,lnI,1)) - 32
lnCheckSum = lnCheckSum + (lnAsc * lnI)
ENDFOR
lcCheck = CHR(MOD(lnCheckSum,103) + 32)
lcRet = lcStart + lcRet + lcCheck + lcStop
*--- Esto es para cambiar los espacios y caracteres invalidos
lcRet = STRTRAN(lcRet,CHR(32),CHR(232))
lcRet = STRTRAN(lcRet,CHR(127),CHR(192))
lcRet = STRTRAN(lcRet,CHR(128),CHR(193))
RETURN lcRet
ENDFUNC
c# a dönüştürdügüm kodlar
public static string StrTo128C(string m_gbarcode)
{
string lcStart = Encoding.Default.GetString(new byte[] { 105 + 32 });
string lcStop = Encoding.Default.GetString(new byte[] { 106 + 32 });
byte[] abData = System.Text.Encoding.Default.GetBytes(lcStart);
int lnCheckSum = abData[0]-32;
string lcRet = m_gbarcode.Trim();
int lnLong = lcRet.Length;
if (lnLong % 2 == 0)
{
lcRet = "0" + lcRet;
lnLong = lcRet.Length;
}
string lcCar = "";
for (int i = 1; i < lnLong; i +=2)
{
int deger = int.Parse(lcRet.Substring(i, 2).ToString())+32;
lcCar += ((char)deger).ToString();
}
lcRet = lcCar;
int tt;
lnLong = lcRet.Length;
for (int j = 1; j < lnLong+1 ; j++)
{
tt = j - 1;
abData = System.Text.Encoding.Default.GetBytes(lcRet.Substring(tt, 1));
int deger = (abData[0] - 32) * j;
lnCheckSum += deger;
}
int degcev = (lnCheckSum % 103) + 32;
string lcCheck (char)degcev).ToString();
lcRet = lcStart + lcRet + lcCheck + lcStop;
lcRet =lcRet.Replace( ((char)32).ToString(), ((char)232).ToString() );
lcRet = lcRet.Replace(((char)127).ToString(), ((char)192).ToString());
lcRet = lcRet.Replace(((char)128).ToString(), ((char)193).ToString());
return lcRet;
}