'ean' etiketli 'blog' girdileri gösteriliyor. Bu grub'daki tüm girdiler
01.09.2008 - 6:04
EkleBunu Sosyal Paylaşım Butonu0 Yorum | 417 Okuma

Tamam anladık, kontrol basamağının nasıl hesaplanacağına dair bilgileri bir yerlerden bulup kopyaladınız ve sitenize eklediniz. Ama kardeşim, insan bilgilerin doğru olduğunu kontrol etmez mi? İşlem doğru yapılmış mı bir sağlama yapmaz mı?

Konu hakkında birkaç Türkçe makale ile karşılaştım. Anlatılanlar gibi yaparsanız kodunuz sadece EAN 13'de doğru çalışacaktır. Çünkü bir çoğunda, çift hanelerin toplamının 3 katının alınması gerektiği yazıyor. Oysaki EAN 8'de çift, EAN 13'de tek hanelerin toplamının 3 katı alınmalı. Her neyse biraz uğraştırdı ama konu hakkında İngilizce birkaç site(özellikle burası) bulunca sorunu çözdüm. Belki birilerinin işine yara diye yazdığım kodu sıcağı sıcağına buraya da yapıştırıyorum.

barkodUret() - v2 (Güncellendi)

QString seriBarkodTanimlari::barkodUret(int onEk, int baslangic){
       
    QString std = ui.cBoxStandart->currentText();
    QString strOnEk = QString::number(onEk);
    QString strBaslangic = QString::number(baslangic);
    QString barkod;

    if ( (std == "EAN 8") ||  (std == "EAN 13") ){
       
        int uzunluk = strOnEk.length() + strBaslangic.length() + 1; //+1 Kontrol Bit'i için
       
        if ( (std == "EAN 8") && (uzunluk > 8) ) return QString();
        else if ( (std == "EAN 13") && (uzunluk > 13) ) return QString();
       
        if (std == "EAN 8")    barkod.fill('0',8 - uzunluk);
        else barkod.fill('0',13 - uzunluk);
       
        barkod = strOnEk + barkod + strBaslangic;
        uzunluk = barkod.length();
       
        int tek = 0;
        int cift = 0;
       
        for (int i=0; i<uzunluk; i++){
           
            if ( i%2) tek +=  barkod.mid(i,1).toInt();           
            else cift +=  barkod.mid(i,1).toInt();
           
        }
               
        int toplam;
       
        if (std == "EAN 8") toplam = (cift * 3) + tek;
        else toplam = (tek * 3) + cift;
               
        int onunKati;
       
        if (toplam%10 != 0)
            onunKati = QString(QString::number(QString::number(toplam).mid(0, QString::number(toplam).length() - 1 ).toInt() + 1) + "0").toInt();
        else
            onunKati = toplam;
       
        int checkDigit = onunKati - toplam;
       
        return barkod + QString::number(checkDigit);
    }
    else return QString();
}

Devamını Oku... | Etiketler : qticari - qt - cpp - barkod - ean
Google
 
En Son Yorumlar (Blog)
  • Nesimi ACARCA:@Murat İşte burada http://nesimia.com/docs/qt-ile-gui-programlama/bolum-merhaba-duny...
  • Nesimi ACARCA:Evet sonradan fark ettim, tarih etiketini eklemeyi unutmuşum. :( Nası...
  • bahattin vidinli:walla ben Linuxde ilk defa adam akıllı bir ide görüyorum. bide php/python v.b. dil...
  • Murat:IDE görünüm olarak güzele benziyor. akşam eve gidince Windows versiyonunu kurucam. IDE zaten ç...
  • kayhan89:harbiden süper bişi, bende duydum... herkeze lazim bole bişi.....
  • Hakan:Sorun sanırım senin beslemenden kaynaklanıyor. Gezegen dışından doğrudan RSS okuyucumda da te...
  • Gökmen Görgen:işletme 4. sınıf öğrencisiyim. Muhasebe hiç unutmayacağım bir an olmuştur artık bende =) B...
  • Nesimi ACARCA:Yazım hatası, hemen düzeltiyorum. :) Ayrıca ilginiz için teşekkürler. Mail yoluyla sizinle il...
  • Alparslan Duran:Selamlar e mail adresinizi anlamadım o aradaki (qt) @ anlamına mı gelmekte ??? Neys...
  • TEYMUR:iyi videosu olsa lap iyi ...
Sponsor Bağlantı