Console Application

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 553
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Console Application

Mesaj gönderen m_ekici » 28 Kas 2017 03:17

Merhaba arkadaşlar

Console application oluşturdum. XML dosyasından rakamları alıp DB ye kaydediyorum. XML i okumada bir problem yoktu. DB ye kayıt esnasında bunu farklı bir procedurede yapayım dedim. ama bu proceduru kullandığımda XML in 2. nodunu okurken Access violation veriyor. Bunun sebebi ne olabilir? Proceduru u çağırdığım satırı kapattığımda hata vermiyor?

Kod: Tümünü seç

      XMLDocument1 := TXMLDocument.Create(nil);
      XMLDocument1.Active:=false;
      XMLDocument1.FileName:='Doviz.xml';
      XMLDocument1.Active:=true;
      baslangic:=XMLDocument1.DocumentElement.ChildNodes.FindNode('Currency');
      i:=1;
      repeat
         try
         Doviz  := baslangic.Attributes['Kod'];

[color=#FF0000]         [b]alis  := baslangic.ChildNodes.Nodes['ForexBuying'].Text;[/b] // 2. Dövizde burada hata veriyor [/color]
         satis := baslangic.ChildNodes.Nodes['ForexSelling'].Text;
         balis := baslangic.ChildNodes.Nodes['BanknoteBuying'].Text;
         bsatis:= baslangic.ChildNodes.Nodes['BanknoteSelling'].Text;
         if LogVar then Writeln('Döviz : '+Doviz );
         Dvz1  := '0'; Dvz2 := '0'; Dvz3 := '0'; Dvz4 := '0';
         case DTur of
         0 : begin // Dolar
             if Doviz='USD' then
                begin
                if (length(Fir1)=3) and (length(Don1)=2) then DovizKayit(Fir1,Don1, Doviz, Dvz1, Dvz2, Dvz3, Dvz4); // bu satırları 
                if (length(Fir2)=3) and (length(Don2)=2) then DovizKayit(Fir2,Don2, Doviz, Dvz1, Dvz2, Dvz3, Dvz4); // kapatırsam 
                if (length(Fir3)=3) and (length(Don3)=2) then DovizKayit(Fir3,Don3, Doviz, Dvz1, Dvz2, Dvz3, Dvz4); // hata vermiyor 
                end;
             end;

         end;

         i:=i+1;
         baslangic  := baslangic.NextSibling;
         except
            on E: Exception do
               begin
               if LogVar then Writeln('Bağlantı Hatası ['+U1+','+U2+','+U3+'] ['+E.Message+']' );
              end;
         end;
        until baslangic = nil;
      end else
      begin
      Writeln('Parametre dosyası bulnamadı.');
      end;


ertank
Üye
Mesajlar: 1138
Kayıt: 11 Eyl 2015 11:45

Re: Console Application

Mesaj gönderen ertank » 28 Kas 2017 05:55

Merhaba, DovizKayit() prosedürünü de paylaşabilir misiniz?

Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 553
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: Console Application

Mesaj gönderen m_ekici » 29 Kas 2017 09:39

bu arada İlk dövizi de değiştiriyor.

Kod: Tümünü seç

procedure DovizKayit(LFir,LDon,DvzAdi, D1, D2, D3, D4 :String);
var
KAY_ : TADOQuery;
begin
KAY_ := TADOQuery.Create(nil);
KAY_.Connection := Connection;
KAY_.Close;
KAY_.SQL.Clear;
KAY_.SQL.Add('.....');
// HATA *****
KAY_.Open;
if KAY_.RecordCount>0 then
   begin
   KAY_.Close;
   KAY_.SQL.Clear;
   KAY_.SQL.Add('UPDATE ...');
   KAY_.ExecSQL;
   end else
   begin
   KAY_.Close;
   KAY_.SQL.Clear;
   KAY_.SQL.Add('INSERT ....');
   KAY_.ExecSQL;
   if LogVar then Writeln('Kaydedildi..');
   end;
end;

ertank
Üye
Mesajlar: 1138
Kayıt: 11 Eyl 2015 11:45

Re: Console Application

Mesaj gönderen ertank » 29 Kas 2017 10:25

Aldığınız hata mesajı nedir?

Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 553
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: Console Application

Mesaj gönderen m_ekici » 29 Kas 2017 12:30

Project KurAktar.exe raised exception class $C0000005 with message 'access violation at 0x00000000: read of address 0x00000000'.

ertank
Üye
Mesajlar: 1138
Kayıt: 11 Eyl 2015 11:45

Re: Console Application

Mesaj gönderen ertank » 29 Kas 2017 02:00

1- Doviz, alis, satis, DTur, Dvz1, Dvz2, Dvz3, Dvz4, Fir1, Fir2, Fir3, Don1, Don2, Don3 gibi değişken türlerinden emin olmak adına mümkün ise ilk kod ile ilgili değişken tanım kısımını da paylaşabilir misiniz? Hatta mümkün ise test edebilmek için tüm projeyi.

2- Sorun yaşadığınız örnek TCMB XML dosyasını. Ya da hepsinde sorun yaşıyor musunuz? Bildirebilir misiniz?

3- Debug ile uygulamayı çalıştırdığınız zaman KAY_.SQL.Add() satırında mı hata oluşuyor yoksa KAY_.Open() satırında mı?

Cevapla