Barkod verisini tanıma ve işleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yardımcı olabildiysek ne mutlu :D
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Her nekadar uygun olur bilmiyorum ama ReadLn yerine daha kolay bir yöntem olan StringList.LoadFromFile ile işini (Text Dosyadan Okuma) halledebilirsin. Daha sonra StringList'deki satırları Parse ederek ilgili değişkenlere atabilirsin.

Bir de birşey dikkatimi çekti. Bu okudukların Hareket kayıtları mı?

Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

S.A.
Öncelikle herkese çok teşekkür ederim. Sevgili gkimirti dediğiniz gibi ikinci barkod verisinde miktar bilgisi yok ben aslında text dosyanın yapısını burada anlatmadığım için hatalıyım. Dosyanın yapısını verince sanırım sorun da çözüm de biraz daha netleşecek şöyle ki:

Kod: Tümünü seç

2810001108170
2710002100250
2810003200283
8690504123456 20
8690504123457 30
dosya bu şekilde bu dosydan yukarıdaki kod yardımıyla sabit barkodlu olan ürünlerin miktar bilgisini okuyabilirken 28 ve 27 ile başlayan barkodların 8. karakterden başlayan ve 12.karakterde biten (Örneğin birinci satır için 10817) miktar bilgisini okuyamıyorum.

Ve sevgili Kuri_TLJ evet bu okunanlar hareket kaydı gibi. Yani el terminali ile okunan kayıtlar bir text dosyaya aktarılıyor. Ve ben o text dosyadan bu verileri alıp (ürün kodu ve miktarını) bilgisayardaki veri tabanı ile birebir eşleştirip hangi üründen ne kadar çıkış olmuş? onları yapacağım programla göstermek istiyorum. Ayrıca lütfen cahilliğimi bağışlayın :oops: bahsettiğiniz "StringList.LoadFromFile" ve "Parse" komutlarıyla ilgili herahngi bir bilgim de yok :cry: bu komutların kullanımı ile ilgili bir bilgi verebilir misiniz? Ya da ben help'e bakayım bu kadar hazırcı olmamalıyım :wink:
neyse ben biraz daha kazınayım da :) ama herkese katkılarından dolayı ne kadar teşekkür etsem azdır. Özellikle de sevgili rsimsek abiye.
"İlmin anası sormaktır"
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar fazla vaktim yok inşallah birazdan Antalya'dan yola İstanbul'a doğru geleceğiz :)

Makinalar kapanmak üzere olduğu için TStringList'in Methodlarından biridir LoadFromFile. Aynı şekilde SaveToFile vardı galiba. İncelersen anlarsın.

Allaaaaah toplan komutu geldi kapatmak zorundayım byeee...

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

S.A Arkadaşlar, sonunda çok şükür hallettim tam istediğime cevap veren kodu uzun denemeler ve uğraşlar sonucu buldum. Başka birine de lazım olabilir düşüncesiyle kodu yazıyorum.Ve bu süreçte bana yardım ve desteklerini esirgemeyen herkese tekrar çok teşekkür ediyorum.
Selamlar...

Kod: Tümünü seç

procedure TfrmVeriAl.SpeedButton1Click(Sender: TObject);
var
Dosya:Textfile;
DosyaAdi,Satir:String;
miktar:integer;
begin
DosyaAdi:='c:\deneme.txt';
AssignFile(Dosya,DosyaAdi);
{$I-}
Reset(Dosya);
  if IOResult=0 then
  begin
    while not EOF (Dosya) do
    begin
    ReadLn(Dosya,Satir);//bir satır oku
    qryDeneme.First;
         if (Copy(Satir,1,2)='28') then//başlangıç flaginin 28 olup olmadığı kontrol edilir
         begin
           if qryDeneme.Locate('BARKOD',Copy(Satir,3,5),[]) then
           begin
           qryDeneme.Edit;
           miktar:=StrToInt(Copy(Satir,8,5));
           qryDenemeMIKTARI.AsInteger:=miktar;
           qryDeneme.Post;
           end;
         end;
      if (Copy(Satir,1,2)='27') then//başlangıç flaginin 27 olup olmadığı kontrol edilir
        begin
        if qryDeneme.Locate('BARKOD',Copy(Satir,3,5),[]) then
          begin
          qryDeneme.Edit;
          miktar:=StrToInt(Copy(Satir,8,5));
          qryDenemeMIKTARI.AsInteger:=miktar;
          qryDeneme.Post;
          end;
        end;
     end;
  begin  
  DosyaAdi:='c:\deneme.txt';
  AssignFile(Dosya,DosyaAdi);
  {$I-}
  Reset(Dosya);
  end;
    if IOResult=0 then
    begin
    while not EOF (Dosya) do
      begin
      ReadLn(Dosya,Satir);//bir satır oku
      qryDeneme.First;
         if (Copy(Satir,1,3)='869') then //burada da başlangıç flaginin 869 olup olmadığı kontrol edilir.
         begin
              if qryDeneme.Locate('BARKOD',Copy(Satir,1,13),[]) then
              begin
              qryDeneme.Edit;
              miktar:=StrToInt(Copy(Satir,14,20));
              qryDenemeMIKTARI.AsInteger:=miktar;
              qryDeneme.Post;
              end;
          end;
      end;
   end;
end;
end;
En son mpolat tarafından 16 Eki 2003 01:25 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
"İlmin anası sormaktır"
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

borland kodlama standartlarına uygun kodlasan ne guzel okunurdu :wink:
aslında alıskanlık haline getirmek gerek :wink:
Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

S.A. Abi cahilleğimi bağışlayın lütfen ne demek istediğinizi anlayamadım. :roll: Bu borland kodlama standartlarından kastınız "var", "begin" gibi sözcüklerin koyu harflerle yazılması mı? Sorularımdan zaten sanırım Delphi seviyem anlaşılıyor olsa gerek daha detaylı bilgi verebilirseniz hemen düzelteyim :)
Saygılarımla...

Pardon sitede konuyla ilgili bir makale varmış zaten hemen okuyayım :D
"İlmin anası sormaktır"
dcpromo
Üye
Mesajlar: 38
Kayıt: 12 May 2005 12:27

slm

Mesaj gönderen dcpromo »

ya hocam en son verdiğiniz kodlarla yapamadım.bir mssql de tablo oluşturdum barkod ve miktar diye int tanımlı veritabanı.

yardımcı olursanız sevinirim.
dcpromo
Üye
Mesajlar: 38
Kayıt: 12 May 2005 12:27

olmuyor

Mesaj gönderen dcpromo »

arkadaşlar her şey dogru aynı kodlar aynı database ve aynı text file oluşturdum ama çalışmıyor. Ne bir hata veriyor ne de olumlu bir sonuç çalıştırdıgımda nerde hata yapıyorum acaba.

yardımlarınız için teşekkürler..
Cevapla