Console Application

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

Console Application

Mesaj gönderen m_ekici »

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: 1413
Kayıt: 12 Eyl 2015 12:45

Re: Console Application

Mesaj gönderen ertank »

Merhaba, DovizKayit() prosedürünü de paylaşabilir misiniz?
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 559
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Console Application

Mesaj gönderen m_ekici »

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: 1413
Kayıt: 12 Eyl 2015 12:45

Re: Console Application

Mesaj gönderen ertank »

Aldığınız hata mesajı nedir?
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 559
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Console Application

Mesaj gönderen m_ekici »

Project KurAktar.exe raised exception class $C0000005 with message 'access violation at 0x00000000: read of address 0x00000000'.
ertank
Üye
Mesajlar: 1413
Kayıt: 12 Eyl 2015 12:45

Re: Console Application

Mesaj gönderen ertank »

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ı?
aegean
Üye
Mesajlar: 2
Kayıt: 24 Tem 2019 09:32

Re: Console Application

Mesaj gönderen aegean »

ben de bir projede aynı hata ile karsılastım daha sonra dongu içerisinde bir değişkeni indexi atanmadan kullanıma girdiğini yakaladım onun işlem dongusunu değiştirince hata duzeldi bilginize genel olarak değişkenlerin (özellikle dizi olanları) kullanımı ile oluşan hata olduğunu anladım bu konuyu okuyan diğer arkadaşlara yardımcı olması acısından yazdım bilginize
bibilen
Üye
Mesajlar: 8
Kayıt: 02 Ağu 2013 12:57

Re: Console Application

Mesaj gönderen bibilen »

Kod: Tümünü seç

XMLDocument1 := TXMLDocument.Create(nil);
satırının üstüne

Kod: Tümünü seç

CoInitialize(nil);
ekleyip dener misin?
bibilen
Üye
Mesajlar: 8
Kayıt: 02 Ağu 2013 12:57

Re: Console Application

Mesaj gönderen bibilen »

farketmedim bu soru çok eskiymiş, neyse
Cevapla