Barkod işlemi için Txt kayıt okuma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1363
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Barkod işlemi için Txt kayıt okuma

Mesaj gönderen pro_imaj » 15 Ağu 2005 02:20

Merhaba,

Barkod sistemi için oluşturulan txt den veri okumama gerek ama şöyle bir şey var.

Kod: Tümünü seç

BArkodNo   Adet   G/Ç   FirmaNo   Durum
123123123,   3,     0,     20,     06012005154844
123123124,   10,    0,     0,      06012005154859
Yukarıda her bir alanı ayrı ayrı okutup kayıt ettirmem gerek veri tabanına
Ama pos ve lengh işlemi ile yaptığımda ilk virgül işlemine kadar okuyabiliyorum nasıl yapabilirim acaba.

Kod: Tümünü seç

var
a,b,i:integer;
kelime,atama:string;
begin
form1.Caption:='';
kelime:='';
atama:=edit1.Text+',';
for i:=1 to length (atama) do
begin
   if copy (atama,i,1)<>',' then
   kelime:=kelime+copy(atama,i,1);
   //showmessage ('ugur');
   if (copy (atama,i,1)=',')  then
   begin
   form1.Caption:=form1.Caption+'-'+kelime;
   kelime:='';
   end;
yukarıdaki kod ile harf harf okutuyorum kayıtlar fazla olursa bu işlem sorun oluyor bunun kolay bir yolu olduğuna eminim.

Yardımlarınız için tşk ederim.

Not:yukarıdaki kod ile edit1 içerisindeki veriyi formaun caption işlemine yazdırıyorum deneme amaçlı yazdım.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________

fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman » 15 Ağu 2005 02:28

CSV olarak arama yapmalısın.

t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex » 15 Ağu 2005 02:51

En basitinden bu işlem için TStringList kullanabilirsin. Bir örnek

Kod: Tümünü seç

var
 StrList : TStringList;
begin
 StrList := TStringList.Create;
 StrList.DelimitedText:='AAA,BBB,CCCC,   DDDDD';
 listbox1.Items.assign(StrList);
 StrList.Free;

Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1363
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj » 15 Ağu 2005 03:57

merhaba
@t-hex hocam yazdığınız kodu anlamadım bira açarsanız.

ayrıca arama yaptım forumda. barkod prog yapan arkadaşlar yardımcı olurlarsa sevinirim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________

aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 03:08

Mesaj gönderen aLonE CoDeR » 15 Ağu 2005 05:26

Merhaba.
Eğer bunu illa string parçalama fonksiyonlarıyla yapmak istiyorsanız şöyle bir yöntem kullanabilirsiniz sanırım;

- Bir fonksiyon yazın parse edilecek stringi parametre olarak alsın..Hatta daha da parametrik yapmak isterseniz ayraç olarak kullanılan karakteri de verebilirsiniz (sizin örneğinizdeki virgül gibi...).
- Fonksiyon içinde bir temprory string tanımlayıp gelen bilgiyi bu değişkene atayın.
- Almak istediğiniz bilgiyi copy ile pars ettikten sonra delete fonksiyonu ile aldığınız karaktere kadar silin.
- Aynı işlemi kalan string için uygulayın.
- Sonucu Resulta atayın..

Kolay gelsin..

ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere » 15 Ağu 2005 06:04

merhaba Yanlış anlamadıysam:

Kod: Tümünü seç

 satir:='123123123,   3,     0,     20,     06012005154844 ';
....
..
 barkod:=copy(satir,1,pos(',',satir));
satir:=copy(satir,pos(',',satir)+1,length(satir));
    adet:=copy(satir,1,pos(',',satir));
    satir:=copy(satir,pos(',',satir)+1,length(satir));
      gircik:=copy(satir,1,pos(',',satir));
      satir:=copy(satir,pos(',',satir)+1,length(satir));
        firmano:=copy(satir,1,pos(',',satir));
        satir:=copy(satir,pos(',',satir)+1,length(satir));
          durum:=copy(satir,1,pos(',',satir));
          satir:=copy(satir,pos(',',satir)+1,length(satir));
işini görmesi lazım .Kolay gelsin
Bilginin sınırı öğrenmenin yaşı yoktur.

ertemsoft
Üye
Mesajlar: 129
Kayıt: 19 Nis 2005 12:22
İletişim:

Mesaj gönderen ertemsoft » 16 Ağu 2005 08:00

selam

sanırım alanlar sabit size li şöyle yapabilirsin


a:=copy(satir,1,20);
b:=Copy(satir,22,10);
..
...


gibi


kolay gelsin
Bilgi Paylaştıkça Çoğalır

Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1363
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj » 16 Ağu 2005 09:09

Merhaba,
cevaplarınız için teşekür ederim.

@ertemsoft hocam sizin belirttiğiniz şekilde yapmama uygun olmuyor çünkü sabit olmama ihitimali var.

@ercere hocam sizn veriğiniz kod ile aslında çözdüm gibi ama bu seferde şöyle bir proplem var boşlukları alamıyorum. Yani boşluklu bir şekilde atıyor buda hatalara neden olabilecek bir durum boşluk alanlarını attırmayı yapabilrsem olucak.

teşekkürler
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________

Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege » 16 Ağu 2005 09:49

boşlukları atmak için trim fonksiyonunu kullanabilirsiniz
.-.-.-.-.-.-.-. ^_^

Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1363
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj » 16 Ağu 2005 02:01

Merhaba,

Cevaplarınız için teşekkür ederim.

Ben şöyle hallettim sorunu.

Kod: Tümünü seç

var
  Dosya: TextFile;
  DosyaAdi, Satiroku: string;
  aktar,satir,barkod,adet,gircik,firmano,durum:string;
  i,x,s:integer;
begin
JvMemoryData1.Close;
JvMemoryData1.Open;
MEMO1.Clear;
 if OpenDialog1.Execute then//istenilen text şeçme

  DosyaAdi := OpenDialog1.FileName;
  AssignFile(Dosya, DosyaAdi);
  {$I-}
  Reset(Dosya);
  if IOResult = 0 then // eğer hata yoksa
  while not EOF(Dosya) do // dosya sonuna kadar.
  begin
     ReadLn(Dosya, Satiroku); // bir satır oku.
     memo1.Lines.Add((Satiroku));
     // Satırların standart yapıda olduğu düşünülerek,
     // Satir değişkeninde istediğin kısmına copy(Satir, 1, 3) vs. ile ulaşabilirsin.
  end 
  else 
     ShowMessage('Dosya açma hatası!'); 

  CloseFile(Dosya);
  {$I+}






 // alınan verilerin isteğe göre alınması ve rema yazılması+++++
for  s:=0 to memo1.Lines.Count-1  do
begin
satir:=memo1.Lines[s];
    barkod:=copy(satir,1,pos(',',satir));

    x:=length(barkod);
      aktar:='';
      for i:=1 to x do
      begin
          if (copy(barkod,i,1 )<>',') and (copy(barkod,i,1 )<>' ')  then aktar:=aktar+copy(barkod,i,1 );

      end;
      barkod:=aktar;




      satir:=copy(satir,pos(',',satir)+1,length(satir));
      adet:=copy(satir,1,pos(',',satir));
      x:=length (adet);
      aktar:='';
       for i:=1  to x do
      begin
        if (copy(adet,i,1 )<>',') and (copy(adet,i,1 )<>' ')  then aktar:=aktar+copy(adet,i,1 );
      end;
      adet:=aktar;

      satir:=copy(satir,pos(',',satir)+1,length(satir));
      gircik:=copy(satir,1,pos(',',satir));
      x:=length(gircik);
      aktar:='';
      for i:=1 to x do
      begin
          if (copy(gircik,i,1 )<>',') and (copy(gircik,i,1 )<>' ')  then aktar:=aktar+copy(gircik,i,1 );

      end;
      gircik:=aktar;


      satir:=copy(satir,pos(',',satir)+1,length(satir));
      firmano:=copy(satir,1,pos(',',satir));
      x:=length(firmano);
      aktar:='';
      for i:=1 to x do
      begin
        if (copy(firmano,i,1 )<>',') and (copy(firmano,i,1 )<>' ')  then aktar:=aktar+copy(firmano,i,1 );
      end;
      firmano:=aktar;



        satir:=copy(satir,pos(',',satir)+1,length(satir));
        durum:=(satir);

        x:=length(durum);
      aktar:='';
      for i:=1 to x do
      begin
          if (copy(durum,i,1 )<>',') and (copy(durum,i,1 )<>' ')  then aktar:=aktar+copy(durum,i,1 );

      end;
      durum:=aktar;

          JvMemoryData1.Insert;

          JvMemoryData1BarkodNo.Text:=barkod;
          JvMemoryData1Adet.Text:=adet;
          JvMemoryData1GC.Text:=gircik;
          JvMemoryData1FirmaNo.Text:=firmano;
          JvMemoryData1Durum.Text:=durum;

          JvMemoryData1.Post;

          //edit1.Text:=barkod;
          //edit2.Text:=adet;
          //edit3.Text:=gircik;
          //edit4.Text:=firmano;
          //edit5.Text:=durum;




          end;
   end;//memo1in forun endi;

 // alınan verilerin isteğe göre alınması ve rema yazılması------
Not:Tüm kodu yazdım
teşekkür ederim herşey için
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________

Cevapla