PDA

Tam Sürümünü Görmek İçin : Borland C++ Hata Yakalama


SHOPEN
18/11/2007, 21:45
Mrb,

Borland C++ 6.0 kullanıyorum.

Basit bi sınama işlemi yapmak istiyorum, ancak hatayı es geçemedim.

Kod şu;
if(ListView1->Selected->Caption>""){

Listview nesnesinde bir öğe seçilince..

try catch uygulamasındada hata alıyorum, program sonlanıyor. Debug'ı speed yapıyorum ama program sonlanmasa bile hata mesajı alıyorum.

Nasıl yapabilirim bu sınamayı ?

Tşk.


acehreli
19/11/2007, 06:17
Sinamada ne demek istiyorsun? Caption'in bos dizgiden alfabetik sirada sonra geldigini mi siniyorsun? Cunku sonundaki '>' karakterinin anlami o:

if (... Caption > "")

Bos dizgiye esit olup olmamak cok kullanilir ama...

Ali

depones
19/11/2007, 08:29
Merhaba,

Sınamada string için büyüktür operatörünü mü kullanıyorsunuz ? Eğer öyleyse,
C/C++'ta, string'lerle == ve != operatörleri haricindeki mantıksal operatörleri kullanmak sakıncalı bir durum. (Örneğin C/C++ dillerinden daha yüksek seviyeli bir dil olan C#'ta böyle kullanılması error'e neden oluyor.) Bir string'i büyüktür ya da küçüktür diye karşılaştırırken hangi kriterlere göre büyük ya da küçük olduğuna nasıl karar verilecek? Örneğin, "Bugun hava cok guzel" mi daha buyuk "depones" mi daha büyük, kararı nasıl verilecek. Bu sebeple, string'lerle mantıksal operatörleri kullanırken == ve != operatörleri haricindeki diğer operatörleri kullanmanızı önermem.

İyi çalışmalar.

SHOPEN
20/11/2007, 09:22
Merhaba,

Yapmak istediğim ListView'da bir nesne seçiliyse o satırdaki bilgileri bir form dosyasına aktarmak olacak. Bunun için ListView1'da bir nesnenin seçili olup olmadığını sınamak istiyorum.

if(ListView1->Selected->Caption!=""){
adresincele->ShowModal();
adresincele->adsoyad->Text=ListView1->Selected->Caption;
dresincele->firmaadi->Text=ListView1->Items->Item[ListView1->Selected->Index]->SubItems->Text;
};

Operatör olarak == de kullansam, != de kullansam, > de kullansam sonuç değişmiyor. Program sonlanıyor.

Tşk.

tozlu
21/11/2007, 16:48
if(ListView1->Selected->Caption!=""){



yerine

if(ListView1->Selected->Caption!=" "){


deneyebilirsin .
bazen builder "" olayını kabul etmeyip " " olayini kabul edebiliyor.
cok sacma gibi gorunuyor ama ben bununla daha once karsilastim

tirnak isateri arasına bir space koymani bekliyor yani.
ise yarar belki

CLMan
22/11/2007, 16:00
Bunu aşağıdaki şekilde yaparsanız sorunsuz çalışır:

if(ListView1->Selected){
.
.
.
}

Eğer seçim yapılmamışsa (ListView1->SelCount ==0 ise) ListView1->Selected NULL bir değer geri verir.

SHOPEN
25/11/2007, 13:23
Her iki türlüde olmadı.

if(ListView1->ItemIndex!=-1) şeklinde çalıştırdım.

Karakterlerle sınama yapılamıyor. Her halükarda hata aldım. Sanırım atanmamış bir değere sınama yaptığım içindi. ItemIndex her halükarda içi dolu bir değer. ListView seçili olmasa bile Index değeri -1 olur diye düşündüm. Doğru düşünmüşüm.

Aynı hatayla karşılaşanlar olursa yukarıdaki gibi kullanabilirler.

Tşk.