freeman35 yazdı:Şimdi fark ettimki "TStringList tipinde olan Fields property'sine" demişsin aman burda yanılgın büyük. TStringList çok farklı bir class. incelemeni öneririm.
hocam ismini hatırlayamadığım bir table bileşeninin kodlarını incelemiştim. gördüm ki; Fields, TStringList tipinde tanımlanmış bir property'dir. burdan yola çıkarak TStringList tipinde bir property olduğunu yazdım (düzelttiniz, sağolun).
alınan hatalar konusunda da hemfikiriz.ayrıca, fields[0].as .. gibi bir komutu tasvip ettiğim anlaşılmasın..fields[..] gibi bir komutu (ya da yapıyı) şu şekilde kullanıyorum ancak; örneğin 30 field (1 row) var ve kesinlikle sabit. bu durumda;
for i:=0 to Pred(FieldsCount) do
Fields[i].asvariant
bu alışkamlık ve düşünce şeklidir herkezin alışkanlıkları farklı. Yanlış anlaşılmasın sen yanlış biliyorsun dmek değil maksadım, yeni başlıyanlara 1-2 şey öğretip ezbere iş yapmasınlar diye çaba göstermek amacım.
Bu tip yani Fields.as şekli düznli olmayan runtime sırasında değieşen ve field isminin belli olmadığı durumlarda kullanılması daha mantıklı. ben FB kullanıyorum ve FB nin default undan çok TDataset in OnNewRecord event ini mutlaka kullanıyorum, burada fieldbyname kullanıyorum. zuzunda olsa bazen bir değer değiştirmek gerekiyor, mesela bugün default kur EUR du pound istediler, table ım benimde 20 küsür field var değeri buluk değiştirmek 2-3 saniyemi aldı avantajı bu.
gelelim asvariant işine. Sanırım Marcu amca yı tanımayan yoktur o bir kitabında demişki eğer mecbur değilseniz variant (tipi belli olmayan) değişken kullanmayın sebebi normalinden 12 kez daha yavaş çalışır. demiş. Şimdi bulamadım bu konuyu delphi 5 zamanında araştırmıştım, delphi tip bulma işini try except bloğu içinde yapıyordu, iç içe bir sürü try except. yani biri olmassa diğeri buda işlem ve zaman kaybı demek
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
hocam ben 30 fieldin (row 1) değerini almak için bu yapıyı kullanıyorum.aksi halde 30 field için de aynı komut satırını kullanmak gerekiyor (daha sağlam ve pratiği varsa öğrenmekten memnun olurum).ancak; ulaşmak istediğim bir field varsa yöntemim fieldbyname('').as..olur elbette.
asvariant'a gelince..elbette tipini bilmediğim alanlar için kullandığım bi yöntem bu.yoksa döngü içinde hepsine kontrol koymak gerekir ki bu da döngüyü anlamsız kılar.