Delphi Çalışma Soru ve Cevapları

1,796 views
Skip to first unread message
Message has been deleted

EmrE TURAN

unread,
Jun 10, 2008, 5:11:02 PM6/10/08
to IUBilgisayarProgramciligi2006-2007
Arkadaşlar herkes kendi numarasına denk gelen soruları cevaplayıp
burada paylaşırsa herkes için daha kolay olur.
Benim numarama (10) denk gelen sorular ve cevapları aşağıdaki gibidir.

SORU:
Bir forma bir panel yerleştirdiniz. Daha sonra bu panelin üzerine bir
düğme koydunuz. Bu düğmenin sahibi (owner) olan nesne hangisidir?
CEVAP:
Düğmenin sahibi paneldir. Panelle beraber düğmede hareket edecektir.

SORU:
Bir Delphi programı yazarak bir veritabanına bir DBGrid nesnesi
kullanarak erişmek istiyorsunuz. Neler yapmalısınız ? Örnek(ler)
vererek açıklayınız.
CEVAP:
Öncelikle Component Panel üzerindeki BDE sayfasından Table bileşeni
forma eklenir. Object Inspector penceresinden Database özelliğinin
karşısına, kullanılacak olan veritabanının bulunduğu klasör yazılır
(örn. c:/delphi), TableName özelliği karşısına kullanılacak olan
veritabanının adı yazılır.Active özelliği True yapılır. Sonra,
Component Panel üzerinde Data Access sayfasından DataSource bileşeni
forma eklenir. Object Inspector penceresinden DataSet özelliği Table1
(az önce koyduğumuz table bileşeninin adı) olarak seçilir. En son
olarak Component panelde Data Controls sayfasında bulunan DBGrid
bileşeni forma eklenir ve Datasource özelliğinde DataSource1 seçilir.
Program çalıştırıldığında veritabanı ile bağlantılı kurulacak ve
tablodaki veriler formumuzda DbGrid in içinde gözükecektir.

crazy_du...@hotmail.com

unread,
Jun 12, 2008, 3:02:23 PM6/12/08
to IUBilgisayarProgramciligi2006-2007
Benim numaram 105 oldugu için sorulardan 2. bölüm 11. soruya denk
geliyor.. =)

SORU 11
Bir Delphi uygulamasında kullanılan *.pas, *.dll, *.dpr, *.dfm gibi
belli başlı dosya türlerini açıklayınız. Örnek(ler) veriniz.

CEVAP 11
.pas = Pascal dosyası..
Bir formla ilgili veya bağımsız bir pascal biriminin kaynak kodu..
( Örnegin hazırlamış oldugumuz sözlük programında bulunan ekle.pas ,
giris.pas , kapat.pas , menu.pas )

.dll = Dynamic Link Library - Dinamik Link Kütüphanesi
Dll uzantılı dosyalar yalnızca program icerisinden cagrılabilirler.
bir dll belirli komutları belirlenmis bir Procedure gibidir.
Dll; icerisine tanımlanmıs degerler kümesi yüklemis bir fonksiyon ,
Procedure veya sabit olabilir. dll programa dinamik olarak baglanmaz ,
sonucta bir dosya oldugu icin Exe den bagımsız olarak calısır ve
programın exe koduna yalnız calısırken yüklenir.. Dll bir dosya tipi
oldugu ve programınızdan bagımsız derlendigi icin icerisinde
degisiklik yapılabilir..

.dpr = Delphi Project - Delphi Proje Dosyası
Proje geliştirme sırasında oluşturulan bu dosya gerçek Pascal kaynak
kodu içerir. ( Örnegin hazırlamış oldugumuz sözlük programında
bulunan sozluk.dpr )

.dfm = Delphi Form File - Delphi Form Dosyası
Bir formun veya veri modülünün ve içerdiği bileşenlerin özelliklerinin
tanımlarını içeren ikilik dosya. Geliştirme sırasında oluşturulur.
( Örnegin hazırlamış oldugumuz sözlük programında bulunan ekle.dfm ,
giris.dfm , kapat.dfm , menu.dfm )

nurett...@gmail.com

unread,
Jun 12, 2008, 4:39:21 PM6/12/08
to IUBilgisayarProgramciligi2006-2007
SORU 56
Bir uygulama sıklıkla sunucu üzerinde tekrarlı ve veritabanına
ilişkin işler yapmaktadır. Bu durum, ağ trafiğinin artmasına ve
uygulama verimliliğinin düşmesine neden olmaktadır. Bu sorunu çözmek
üzere TStoredProc elemanından nasıl yararlanabilirsiniz?

CEVAP

TStoredProc: Bu bileşen SQL tabanlı veritabanları üzerinde yazdığınız
prosedürleri veya fonksiyonları kullanmanızı sağlayan bir bileşendir.
Eğer Oracle, Sysbase, SQL Server gibi veritabanı kullanmıyorsanız bu
bileşene ihtiyacınız yok demektir. Fakat adı anılanlardan herhangi
biri veya bunlara benzer bir veritabanı sistemi kullanıyorsanız bu
bileşen çok işinize yarayacaktır. Avantajları temel olarak şunlardır:
Bu çalıştıracağınız prosedürler veritabanı üzerindedir. Normal
kullandığınız query'lere göre çok daha hızlı çalışırlar. Network
trafiğini asgari seviyeye indirirler. Yazacağınız prosedürle ilgili
kullandığınız veritabanının dökümatasyonuna bakmalısınız.

Örn: Oracle'da prosedür şöyle olsun.

PROSEDURE TEST (ISIM OUT VARHAR2, NUMARA NUMBER) IS
BEGIN
SELECT ADI INTO :ISIM FROM ABONE WHERE ABONE_NO=:NUMARA;
END;

Bunu Delphi'de aşağıdaki gibi kullanabilirsiniz;

StoredProc1.ParamByName('Numara&#8217.Value:='1000 ';
StoredProc1.GetResults;
Abone_Ismi:= StoredProc1.ParamByName('Isim&#8217.AsString;


*Strored Procedure Nedir?, Ne amaçla kullanılır

Depolanmış Yordamlar(Stored Procedure) : Interbase veritabanı üzerine
yazılan rutinlerdir. Kullandığınız dille veya SQL ile bir ilgisi
olmayıp; İnterbase veritabanına özgü bir kod yapısıdır. Stored
Procedur'ların kodu platformdan bağımsızdır. Eğer verilerinizi hem
UNIX'te hem de Windows'ta kullanacaksanız veritabanı işlemlerinizin
çoğunu Stored Procedur'lar aracılığla yapmanızı öneririm. Böylece
Stored Procedure'ların gerekli işleri yapmasını sağlayan çok küçük
istemci uygulamalar yaratabilirsiniz.

En önemlisi istemci/sunucu uygulamalarda Stored Procedure'lar
sunucu(server) yakasında çalışacağından (yani veritabanı'nın olduğu
yerde) ilgili işlemler çok hızlı gerçekleşecek ve network trafiğini
rahtlatacaktır.

hacer

unread,
Jun 13, 2008, 5:59:16 AM6/13/08
to IUBilgisayarProgramciligi2006-2007
SORU 85
Delphi'nin hata bulma (debugger) özelliklerinden yararlanmak üzere
işletilebilir kodun (executable) içine hata arama cve bulma (debug)
bilgilerinin nasıl yerleştirilebileceğini açıklayın.

CEVAP:
Hata Yakalama:2 tip hata yakalama vardır:Lokal ve Genel hata yakalama
(biz lokal hata yakalamayı baz alacağız)
Lokal hata yakalama tek bir prosedür içerisinde oluşabilecek hataları
programa
bildirme amaçlı kullanılan bir yöntemdir. Aşağıda seçenekleri
incelenmektedir.
* Try-except-End :
Try
//Hata oluşturabilecek kod bloğu
exept
begin
//Hata oluştuğu anda işleyecek olan kod satırları
end;
end; //try -end ile kapatılmalı

Yukarıdaki kodu yazdıktan sonra hata verecek bir şey yaptığınız
diyelim. Delphi, size hata yakalama kodlarını eklemenize rağmen, ilk
başta verdiği hata mesajı yine verecektir. Peki o zaman bu kodları
neden yazdık. Çünkü, buradaki Delphi'ye ait mesaj "exe"
uygulamanızı çalıştırdığınız zaman kaybolacaktır. Yani uygulamanızın
"exe"
versiyonunu (Kayıtlı olduğu aktif klasörde oluşmuştur)
çalıştırırsanız, sadece
kendinizin eklemiş olduğu mesaj iletisiyle karşılaşacaksınız .
Delphi içerisinden bu sonucu görmeniz için, hata mesajını verdikten
sonra tekrar
"Run" düğmesine tıklamanız gerekir.
"Try-except-end" bloğunun işleme mantığı, hata oluşturabilecek
kodların "tryexcept"
arasına yazılması gerektiğidir. Şayet bu blok içerisine yazılan
kodlarda
hata oluşacak olursa, Delphi size "except" ten sonraki "begin-end"
bloğu
içerisinde bulunan kodları işletecek, aksi takdirde, yani hata oluşmaz
ise
"except" ten sonraki "begin - end" bloğu içerisindeki kodlar asla
işlemeyecektir.

ali....@gmail.com

unread,
Jun 13, 2008, 8:14:07 AM6/13/08
to IUBilgisayarProgramciligi2006-2007
SORU 79
Delphi, yarattığınız özgün bir ihlal sınıfını (custom exception
class) dikkate alır mı?

CEVAP 79
Dikkate alır.Exception Class; Programın hiçbir şekilde durmaması için
kullanmak zorunda olduğumuz yapıdır.CLR (Common Language Runtime)
otomatik olarak bir hata oluştuğunda bu classlardan birinin
instance'ını cevap olarak döndürebilir yada programcı Exception
classlar sayesinde geriye geniş açıklamalar içeren hatalar
döndürebilir.

Serkan Kaya

unread,
Jun 14, 2008, 7:57:10 AM6/14/08
to IUBilgisayarProgramciligi2006-2007
1. Bölüm Soru 25 :
Delphi'de kullanılan DPR kütüğü nedir? Bir Delphi projesinde
kullanılan (*.dpr, *.pas, *.dfm, *.dll, *.exe gibi) belli başlı kütük
tiplerini sıralayıp açıklayın.

1. Bölüm Cevap 25 :

DPR: Kaynak Kod dosyasıdır (Delphi project)
PAS: Kaynak kod dosyasıdır(Pascal)
DFM: Form dosyasıdır (Delphi form)
DLL: Programların çalışmaları için gerekli olan birinci
derecedeki dosyalar , yürütülür dosya ya da program
dosyası adı verilen dosyalardır
( Dynamic library )
EXE: Çalıştırılabilir Dosyalardır ( Executable File )
DCU: Derlenmiş Modül Dosyasıdır . ( Delphi Compiled unit )
DPK: Paket Kaynak Kod Dosyasıdır
DOF: Proje ayarları dosyasıdır ( Delphi Option File )
DSK: Masaüstü ayar dosyası ( Desktop )
RES: Kaynak Dosyası ( Resource )

Fean...@gmail.com

unread,
Jun 14, 2008, 9:05:01 AM6/14/08
to IUBilgisayarProgramciligi2006-2007
Soru 31: Bir dizi (array) nasıl tanımlanır?

Cevap: Dizi tanımı "Var" bloğu altında aşağıdaki şekilde yapılır;

Var
Diziadi : array[altsınır..üstsınır] of tip

murat demir

unread,
Jun 16, 2008, 9:11:27 AM6/16/08
to IUBilgisayarProgr...@googlegroups.com
SORU 50
Bir uygulama, iki TQuery arasında ana-detay ilişkisinin (master-detail relationship) kurulmasını gerektirmektedir. Bu konuda TQuery
elemanının DataSource özelliği (property) nasıl yardımcı olabilir?


Cevap ;


Aktif alan değerlerini veri tabanından alarak SQL ifadesinde kullanmayı sağlayan DataSource öğesini belirler.
Property DataSource: TDataSource;

Datasource başka bir dataseti işaret etmelidir. Bir query öğesini göstermemelidir. Datasource' ta belirtilen dataset oluşturulmalı,çalıştırılmalı ve parametre bağlanmadan önce açılmalıdır. Parametreler Query' nin Prepare metoduyla çalıştırılırlar.

İpucu : DataSource' u özellikle linklerde master-detail ilişkisinde kullanın. Aynı zamanda Params setinde olmayan parametreleri bağlamayı garantilemek için veya Parambyname metodunu çağırmak için kullanılır.

Eğer SQL cümlesi parametre içermezse veya parametreler Params özelliğini veya ParambyName olayını kullanıyorsalar bunu kullanmanıza gerek yok.

s u

unread,
Jun 16, 2008, 2:38:49 PM6/16/08
to IUBilgisayarProgr...@googlegroups.com

     SORU 8

     Nesne havuzu (Object Repository) nasıl kullanılır ve paylaşılır?

 
Delphi'de çeşitli tipte uygulamalar ve formlar oluşturabilirsiniz. Mesela normal exe dosya, ActiveX uygulaması, dll, Denetim masası uygulaması (.cpl) vs. Bunlar için daha önceden hazırlanmış şablonlar veya bunları oluşturan sihirbazlar vardır. Bunları kullanarak formları veya bazı kodları kısa sürede oluşturabilirsiniz.
Nesne deposunu açmak için File menüsünden New'i gösterip, Other... komutunu verin.





Daha sonra istediğiniz şablonu seçip kullanabilirsiniz. Kullanma sırasında 3 seçenek vardır.
  1. Copy : Seçtiğiniz formun veya data modulün birebir kopyası projenize eklenir. Yaptığınız değişiklikten nesne deposundaki form/data module etkilenmez.
  2. Inherit : Bu en kullanışlı metottur. Projenize eklenen form/data module nesne deposundaki nesneden inherit edilir (miras alınır). Projenizdeki değişiklikler, nesne deposunu etkilemez ancak nesne deposundaki form/data module'de yaptığınız değişiklikler otomatikmen bundan miras aldığınız tüm formlara/data modullere yansır.
  3. Use : Nesne deposundaki formu/data modülü direk olarak kullanır. Dolayısıyla yaptığınız değişiklik direk nesne deposuna da yansır. Pek tavsiye edilen bir yöntem değildir.

¿?§µLT@Ñ¿?

unread,
Jun 18, 2008, 2:05:28 PM6/18/08
to IUBilgisayarProgramciligi2006-2007
SORU 1
Bir form (form) üzerinde iki veya daha fazla eleman (component)
varken, bunlara ait ortak bir özelliği (property) aynı anda nasıl
değiştirirsiniz?

Bu elemanların hepsini Shift tuşu ile değiştiririz. Property
penceresinde bu elemanların ortak özellikleri bulunur. Buradan
özelliği değiştirdiğimizde hepsinde etkili olur.


SORU 13 (107)
Form1 isimli bir form üzerinde ComboBox1 ve ComboBox2 isimli iki
açmalı liste kutusu ve Button1 isimli bir komut düğmesi bulunmaktadır.
Her iki açmalı liste kutusunda da en az 500'er tane eleman (satır)
bulunmaktadır. Button1 isimli düğmenin fare aracılığı ile
tıklanmasıyla iki kutu içindeki elemanları yer değiştiren Delphi
kodunu yazınız.

Bu işlemi yapmakiçin yedek bir combobox a ihtiyacımız var
( Combobox3 ) . Bu combobox ın enabled özelliğini false yaparak
görünmesini engelleyebiliriz. Butona tıklandığında yazılacak kod;

procedure TForm1.Button1Click(Sender: TObject);
begin
combobox3.Items:=combobox2.Items;
combobox2.Items:=combobox1.Items;
combobox1.Items:=combobox3.Items;
end;



hacer

unread,
Jun 19, 2008, 3:43:02 AM6/19/08
to IUBilgisayarProgramciligi2006-2007


ASİYE'NİN sorusu 2.KISIM 12.SORU:
Delphi'de takmaad (alias) nedir ? Neden ihtiyaç duyulur ? Nasıl
kullanılır ? Ayrıntılarıyla açıklayınız. Okuldaki öğretim üyelerine
ilişkin bazı bilgileri depolayan bir veritabanını göz önüne alarak
örnek(ler) veriniz.

Delphi'de takmaad (alias) nedir ?
(1)Alias'lar tablo (veritabanı) dosyalarının yolunu tutan takma
adlardır. (2)Uzun ve hatırlaması zor isimler yerine kısa ve
hatırlaması kolay isimler tanımlamak.(3) Bir veritabanı dizini yolunu
BDE tarafından kısaca takma ad ile adlandırılmasıdır.veri tabanına
uzun uzun ulaşmak yerine BDE yardımı ile alians' kullanırız

Neden ihtiyaç duyulur ?
Çünkü Alias'lar sayesinde her defasında tablonun adresini(yolunu-path)
girmek zorunda kalmazsınız. Uygulamaya başlamadan tablolarınızı
kaydedeceğiniz klasöre takma ad (Alias) belirlersiniz.Yapacağınız
bağlantılarda tablonun yolunu değilde belirlemiş olduğunuz Alias 'ı
kullanırsınız.Takma adlar veritabanına kolayca bağlanmamızı
sağlar.Farklı bilgisayar veya klasöre taşınan verilere erişim için
sadece takma adı ilgili klasörü ayarlamak yeterli olur. Bu da size
kolaylık
sağlar.

Nasıl kullanılır?

1-İlk olarak c diski üzerinde c:\bilgisayar bir klasör oluşturunuz.
(eğer daha önceden varsa mevcut bir klasör silerek yeniden oluşturun.)

2-Başlat-Programlar-Borland Delphi-BDE Administratör çalıştırılır.

3-Database isimli sayfada bilgisayarda var olan veri tabanı
listelenir.

4-BDE Administratör programının Database sayfasında iken menü
çubuğundan objet-New yada "DataBase" üzerine mousun sağ tuşuna
tıklayarakmenü penceresini açın ve "New" seçeneğine tıklayın ve bu
pencereyi OK butonuna tıklayarak geçin.

5- Yeni Alias ınız pencerenize "STANDART" ismi ile eklenecektir.
İsmini değiştirip (bilgi) "PATH" kısmına da tablonuzu kaydedeceğiniz
klasörü girin (veya seçin).

6- Pencereyi kapatıp, gelen uyarı penceresine de olumlu cevap verin.
Yukarıda anlattığım gibi tablonun kaydedileceği klasörü "c:
\bilgisayar" olarak
belirledik. Alias ismi olarak ta "bilgi" seçimini kullandık.

7-Bu tanımları yaptıktan sonra database desktop programında tablo
hazırlanır. .(Database Desktop 'a ulaşmak için Başlat-Programlar-
Borland Delphi-Database Desktop çalıştırılır)

Alan adı (field name) bilgi tipi(Type)
size key
No N
Ad A
13 gibi

Daha sonra hazırlanan tabloyu save as ile kaydedilmek istediğinde
Alians kısmında bilgi seçildiğinde konum bilgisayar olacaktır.dosya
adı:delphi olarak kaydediniz.
Hazırlana tabloya bilgi girişi yapmak için Database Desktop
programından Open Table komutu verilir.O pencereden alians bilgi
seçildiğinde konum bilgisayar olur ve oradan delphi seçilir ve tablo
düzenlenir.(yani bilgiler girilir).
Bu hazırladığımız veritabanını delphi programında açarak form1
düzenleriz.
Formun üzerine BDE kısmından Table,Data Access kısmından Datasource,
Data Control kısmından DBNavigator ve DBGrid1 eklenir.

Form1 üzerinden Table1 bileşeni seçilerek Database Name kısmı bilgi
olarak seçilir.diğeğr özellikler aşağıdaki gibidir.

Table1 :TableName:delphi Active:True
Datasource1 :Dataset:Table1
DBNavigator :Datasource:Datasource1
DBGrid :Datasource:Datasource1
Proje çalıştırılır.

Böylece alians yardımıyla delphide veri tabanı oluşturduk.

esra esra

unread,
Jun 19, 2008, 5:11:36 PM6/19/08
to iubilgisayarprogr...@googlegroups.com

 

soru 33

 

Bir form üzerinde on tane DBEditBox ve beş tane EditBox bulunsun. DBEditBox’ların rengini maviye değiştirmek ve EditBox’ların rengini olduğu gibi bırakmak istediğimizi düşünelim. Formun controls ve components özelliklerini kullanarak çalışma zamanında (runtime) bu işlemi nasıl yapabileceğimizi belirtin

 

cevap:

 

formun load'ına yazııyoruz

 

DBEdit1.font.color:=blue;

DBEdit2.font.color:=blue;

DBEdit3.font.color:=blue;

DBEdit4.font.color:=blue;

DBEdit5.font.color:=blue;

 
 
 
 
 
 
 


> Date: Thu, 19 Jun 2008 00:43:02 -0700
> Subject: Re: Delphi Çalışma Soru ve Cevapları
> From: hacer_...@hotmail.com
> To: IUBilgisayarProgr...@googlegroups.com

murat...@gmail.com

unread,
Jun 20, 2008, 2:27:38 AM6/20/08
to IUBilgisayarProgramciligi2006-2007
SORU 17: Veriye hassas (data sensitive) bir form yarattınız. Değişik
tablolardan (table) veri görüntülüyorsunuz. Bu durum, formunuzu çok
karışık bir hale getirdi. Bu durumda bir DataModule nesnesinden nasıl
yararlanırsınız?



CEVAP 17: DataModule ye ekleyeceğiniz bileşenlere tüm formlardan
ulaşabilirsiniz. öreğin Datamodule e 1 table ve birde datasource
bileşeni eklediniz. iki formunuz var. bir formda kayıtlar gridle
listeleniyor. diğer bir formda ise dbeditler ile tabloya kayıt
ekleme,silme vb. işlemleri yapıyorsunuz. bu iki form için ayrı ayrı
datasource query bileşenini her iki forma eklememiz gerekmiyor.
datamodule e eklediğiniz datasource ve table a her iki formdanda
erişebiliriz.

Kullanımı:

projeye datamodule eklemek için File >New >Datamodule menü seçeneği
ile proye datamodule ekliyoruz. datamodule e
listimage,datasource,query vb. istediğiniz bileşenleri ekleyin.
datamodule ü diğer formlarda kullanabilmek için formun unitine
uses datamoduleuniti; şeklinde datamodule ün unit adını yazıyorsunuz.
aynı şekilde bir formdaki herhangi bir nesne,değişken vb.ne datamodule
den ulaşmak isterseniz formun unitini datamodule unitinde
belirtmelisiniz.
bunları yaptıysanız dbgrid in datasource özelliğini object
inspectordan görebilirsiniz.

Reply all
Reply to author
Forward
0 new messages