tcno sorgulamadaki ilginç bir hata...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

tcno sorgulamadaki ilginç bir hata...

Mesaj gönderen Biltes »

Arkdaşlar merhaba;

Siteden tcno sorgulama örneğini aldım. Allah razı olsun arkdaşlar hazırlamış biz faydalanalım diye de bir yere geldim takıldım...

Burada il ve ilçe bilgileri listbox'a ekleniyor ama bunları combox'a eklemek istiyorum. Kodları aşağıdaki şekilde düzenliyorum combobox'a göre İl bilgileri combobox'a dolduruluyor. Ama il seçtiğim zaman diğer combobox'a ilçeler gelmesi gerekirken tuhaf bir hata veriyor neden olabilir sizce arkadaşlar...

Kod: Tümünü seç

unit tcnoform;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, kpsPublic, Gpshape, cxDropDownEdit,
  cxContainer, cxEdit, cxControls, cxTextEdit, InvokeRegistry, Rio,
  SOAPHTTPClient, cxMaskEdit ;

type
  Ttcnofrm = class(TForm)
    ManyShape1: TManyShape;
    Label1: TLabel;
    SpeedButton12: TSpeedButton;
    ManyShape2: TManyShape;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    cxTextEdit1: TcxTextEdit;
    cxTextEdit2: TcxTextEdit;
    cxTextEdit3: TcxTextEdit;
    cxTextEdit4: TcxTextEdit;
    cxEditStyleController1: TcxEditStyleController;
    cxComboBox1: TcxComboBox;
    cxTextEdit5: TcxTextEdit;
    cxTextEdit6: TcxTextEdit;
    Label10: TLabel;
    HTTPRIO1: THTTPRIO;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    procedure SpeedButton12Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    Kps: KPSPublicWebServiceSoap;
    function KimlikNoDogrula(const KimlikNo: Int64): TCKimlikNoDogrulamaSonucu;
    procedure PrepareIlListesi;    
  end;

var
  tcnofrm: Ttcnofrm;

implementation

{$R *.dfm}

procedure Ttcnofrm.SpeedButton12Click(Sender: TObject);
begin
  Close;
end;

procedure Ttcnofrm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_Escape Then Close;
end;

procedure Ttcnofrm.FormCreate(Sender: TObject);
begin
  KPS:= GetKPSPublicWebServiceSoap(False, '', HTTPRIO1);
  PrepareIlListesi;
end;

function Ttcnofrm.KimlikNoDogrula(
  const KimlikNo: Int64): TCKimlikNoDogrulamaSonucu;
begin
  Result:= KPS.TCKimlikNoDogrula(KimlikNo);
end;

procedure Ttcnofrm.FormDestroy(Sender: TObject);
begin
  KPS:= nil;
end;

procedure Ttcnofrm.PrepareIlListesi;
var
  IlListesi: ArrayOfIlBilgisi;
  I: Integer;
begin
  IlListesi:= KPS.IlListesiGetir;
  for I:= 0 to Length(IlListesi) - 1 do
    ComboBox1.Items.Append(IntToStr(IlListesi[I].Kod) +
      '=' + IlListesi[I].Ad);
end;

procedure Ttcnofrm.ComboBox1Change(Sender: TObject);
var
  IlceListesi: ArrayOfIlceBilgisi;
  I: Integer;
  comboboxIl, comboboxIlce: TComboBox;
begin
  if TComboBox(Sender).Name = 'Combobox1' then
  begin
    comboboxIl:= ComboBox1;
    comboboxIlce:= ComboBox2;
  end;

  IlceListesi:=
    KPS.IleBagliIlceListesiGetir(
      StrToInt(comboboxIl.Items.Names[comboboxIl.ItemIndex]));

  comboboxIlce.Clear;
  for I:= 0 to Length(IlceListesi) - 1 do
    comboboxIlce.Items.Append(IntToStr(IlceListesi[I].Kod) +
    '-' + IlceListesi[I].Ad);
end;

end.

Ilcelistesi := denen yerde geliyor hata veriyor. Hata ise aşağıdaki gibidir...


Resim

Şimdiden yardımlarınız için tşk ediyorum...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

comboboxIl := ComboBox1;
comboboxIlce := ComboBox2;
değişkenlerini tanımlamışsın ama create etmemişsin.

Kod: Tümünü seç

comboboxIl := TComboBox.Create(ComboBox1);
şeklinde tanımlayabilirsin. Ancak TComboBox bir WinControl olduğu için parent da vermelisin. Bu durumda da ekranda görünecektir.

Madem ComboBox1, ComboBox2 gibi bileşenlerin var formda neden bunlar için tekrar değişken tanımlıyorsun onuda anlayamadım..
DeveloperToolKit

..::|YeşilMavi|::..
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Bence gördüğüm kadarıyla Array'de hata veriyor.

Belki de boş bir array'e ya da geçerli olmayan bir array elemanına gönderme yapıyorsunuzdur.

Hata öyle gibi geldi bana.

Başarılar ve Saygılar.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Arkdaşlar cevaplar için tşk ediyorum;

Lazio hocam dediğiniz gibi de yaptım ama sonuç halen daha aynı sorun devam ediyor... :(
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım ilaclistesini create etmemişsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

aslangeri yazdı:sanırım ilaclistesini create etmemişsin.
:shock:

Hocam tam olarak anlayamadım. Biraz daha açık olarak yazabilirmisiniz acaba?

Tşk Ederim...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Biltes yazdı:
aslangeri yazdı:sanırım ilaclistesini create etmemişsin.
:shock:

Hocam tam olarak anlayamadım. Biraz daha açık olarak yazabilirmisiniz acaba?

Tşk Ederim...
Öncelikle ilaclistesi'nin türü nedir? Array mi TStringList veya TList mi? Eğer TStringList ya da TList ise create etmemişsiniz. Array ise atıyorum Arrayin 4 elemanı varsa ve siz beşinci elemanı okumaya çalışırsanız erişim ihlali verir.

Erişim İhlalleri yani "AccessViolation" genellikle olmayan bir nesneye ulaşmaya çalıştığınızda meydana gelir.

Saygılar ve Başarılar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ilaclistesi değil arkadaşlar IlceListesi :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

:duvar: :duvar: :duvar:
ilçelistesi tabiki...
ilaçlarla uğraşınca.... :oops:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Arkdaşlar hepiniz yardımı için tşk ediyorum. Sorunu buldum çok ufak bir ayrıntı ama işte bulana kadar biraz uğraştırdı.

Sorun;

bu satırda

Kod: Tümünü seç

TComboBox(Sender).Name = 'Combobox1'
:duvar: :duvar: :duvar:

yerine

Kod: Tümünü seç

TComboBox(Sender).Name = 'ComboBox1'
:duvar: :duvar: :duvar:

olması gerekiyormuş. Nesneye ulaşamadığı için hata veriyordu. Uzun bir uğraştan sonra farkettim olayı ve hallettim.

Yardımlar için çok saolun...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Burada büyük/küçük harf ayrımı devam etmekte bu işi garantiye almak lazım. Ayrıca ilgili IF ... durumunda şart sağlanmıyorsa (ELSE durumunu da) düşünmek lazım :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla