Kod: Tümünü seç
public
{ Public declarations }
end;
var
Form1: TForm1;
PATH, DATA_PATH: string;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
{$I-}
GetLastError;
PATH:= ExtractFilePath(ParamStr(0)); //İşletim Sistemi ve programınız sizin kesin olarak
//belirlediğiniz sürücüye(genelde C sabit diski) kurulmamış olabilir.
//İçeriğinde File geçen fonksiyon kullanımlarından önce {$I+ veya -} ifadesini yazmanızda
//yarar var. {$IOCHECKS ON} -> InputOutputCheck ON(Giriş-ÇıkışKontrol Açık) anlamına
//gelir. {$I-} olması durumunda IOResult fonksiyonu ile kontrol etmelisiniz.
//Örnek --> ChDir(PATH); if IOResult <> 0 then MkDir(PATH); satırlarında olduğu gibi.
//Ayrıca, GetLastError; son işlenen hatayı döndürür ve ExtractFilePath(ParamStr(0));
//programınızın çalıştığı sürücü ve dizinin kesin yolunu belirler.
** Örnek;
Programınızda siz C:\Ticari Modül\Data şeklinde bir Alias tanımladınız ve bütün
*.db,*.px,*.x0 ... data dosyalarınız bu dizinde olması gerekiyor. Kendi kendinize
diyorsunuz ki; bu dizinde olması şart aksi taktirde program çalışmasın, kopyalama
olmasın ve herşeyi ben kontrol etmeliyim. İşte bu, ilk hataya düştüğünüzün açık bir
delili. Ya kullanıcının C: isimli sabit diski yoksa ve işletim sistemini F: sürücünden
çalıştırıyorsa NE YAPACAKSIN..? F: = C: şeklinde bir kodlama yapabilir misin?
Diyeceksin ki, C: her bilgisayarda olmazsa olmaz. Ama, senin olmazsa olmazın
müşterinin OLURSA OLUR'udur.
** Bu nedenle, programlarınızda Alias tanımlamayınız. Unutmayınız ki, kullanıcının
hertürlü program kırıcı hareketini önce siz bilmelisiniz. Kullanıcıya bu konuda
yetki tanımayın, onu cesaretlendirmeyin. Programınızın mutlak hakimi siz olun. Hata
ayıklamayı mutlaka yapın
//
if PATH[Length(PATH)] = '\' then PATH:= Copy(PATH,1,Length(PATH)-1);
ChDir(PATH);
if IOResult <> 0 then MkDir(PATH);
DATA_PATH:= PATH+'\Data';
ChDir(DATA_PATH);
if IOResult <> 0 then MkDir(DATA_PATH);
if FileExists(DATA_PATH+'\Deneme.db') then
begin
with Table1 do
begin
Active:= False;
DatabaseName:= DATA_PATH+'\';
TableName:= 'Deneme.db';
TableType:= ttParadox;
Active:= True;
end;
end
else begin
with Table1 do
begin
Active:= False;
DatabaseName:= DATA_PATH+'\';
TableName:= 'Deneme.db';
TableType:= ttParadox;
with FieldDefs do
begin
Clear;
Add('SiraNo', ftInteger, 0, False);
Add('MusAd', ftString, 30, False);
Add('MusSoyad', ftString, 30, False);
Add('Adres', ftString, 30, False);
Add('Tarih', ftString, 8, False);
end;
with IndexDefs do
begin
Clear;
Add('AnaKey', 'SiraNo', [ixPrimary, ixUnique]);
Add('Key_1', 'MusAd', [ixCaseInsensitive]);
Add('Key_2', 'MusSoyad', [ixCaseInsensitive]);
Add('Key_3', 'Tarih', [ixCaseInsensitive]);
end;
CreateTable;
Active:= True;
end;
end;
end;
engellemiş olursunuz. Alias tanımlamak herzaman başarılı sonuç vermiyor.
Unutmayınız ki, programlamayla uğraşan ve bunun üzerinden geçimini sağlayan kişi
olarak, kullanıcının hertürlü hareketindeki olasılıkları önceden düşünerek programınızı
bu kriterler dahilinde geliştirmelisiniz.
Yukarıdaki kodlama sadece bir örnek. Sonuçta, programınızı kodlayan sizsiniz.
En kestirme yol, en iyi bildiğiniz yoldur.
İşinizi görmesi dileğimle,
Çalışmalarınızda başarılar dilerim.
NeverFear - kaheri579@hotmail.com