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;