IBDatabaseINI
IBDatabaseINI
Slm uzun zamandır arıyorum tarıyorum ama bir türlü bu işede vakıf olamadım Firebir ü ağda kullanıyorum ama bu ayarları elle yapıyorum yani Database için databasename olarak IP veya Server Makina Adı + ':' + Data Yolu şeklinde kullanıyorum bu yolu otomatik olarak delphiye kodla yaptırmak istiyorum.Bu gerçekleştiğinde aynı exe nin clint bir makinada da çalışmasını istiyorum.Konuyu inifile olarak araştırıldı ama arkadaşlar bir çok kod yazmış ama açıklama olmadığı için de anlamakta zorlanıyorum.Kısacası inifile nasıl hazırlanır hazırlanmış olan inifile den nasıl bilgi alınır ve IP veya Server Makina Adı yerine bu bilgi databasename ye nasıl getiriliyor.(Veya başka bir yolu varsa o)
Makaleler de geçen IBDatabaseINI bileşeni standart mıdır nereden bulabiliriz.Kısacası yaptığımız bir proje hangi bilgisayarlar ağına kurulursa kurulsun otomatik olarak anamakina üzerinden bağlanabilsinler tabi gerekli düzenlemeyi biz programımıza katmak sureti ile...
viewtopic.php?t=9817&highlight=ini:
şöyle tane tane açıklayacak bir arkadaş çok makbule geçer ve memnun olurum.( Bu konuda makale yazmayı düşünen bir arkadaş yok mu ? Yazıldı ise ben mi bulamıyorum)
Makaleler de geçen IBDatabaseINI bileşeni standart mıdır nereden bulabiliriz.Kısacası yaptığımız bir proje hangi bilgisayarlar ağına kurulursa kurulsun otomatik olarak anamakina üzerinden bağlanabilsinler tabi gerekli düzenlemeyi biz programımıza katmak sureti ile...
viewtopic.php?t=9817&highlight=ini:
şöyle tane tane açıklayacak bir arkadaş çok makbule geçer ve memnun olurum.( Bu konuda makale yazmayı düşünen bir arkadaş yok mu ? Yazıldı ise ben mi bulamıyorum)
tam anlayamadım hangi ağa kurulursa kurulsun ana makinaya otomatik bağlansın demişsin?bu pek mümkün değil. program nerden bilsin o ağdaki bilgilerin bulunduğu ana makinanın adını?
yapman gereken şey şu;
bir tane ini dosyası hazırla(notepad 'den) aşağıdaki gibi;
[AYAR]
SERVER =MUHASEBE
burda muhasebe programın bilgilerinin bulunduğu bilgisayarın adı.bu ini dosyasını pogramının bulunduğu klasöre kopyala.sonra programında ana formun oncreate veya onshow olayına aşağıdaki kodu yaz..
burda kullanıcıların yapması gereken programı kurduktan sonra bu ini dosyasını açıp kurdukları ağdaki ana makinenin adını yazıp kaydedip,programı tekrar çalıştırmalı.istersen progrmın açılışında server bilgisi girilmemiş ise bir pencere açıp ana makine adını giriniz diye sordur.
forma bir edit koy(kullanıcılar buraya ana makine adını girecekler) kaydet ve kapat diye iki buton.kaydet butonuna aşağıdaki kodları yaz..
böylece kullanıcı edite ana makine adını girer ve kaydete basınca ana makine adı ini dosyasında server yazan kısmın karşısına yazılır.
kolay gelsin
yapman gereken şey şu;
bir tane ini dosyası hazırla(notepad 'den) aşağıdaki gibi;
[AYAR]
SERVER =MUHASEBE
burda muhasebe programın bilgilerinin bulunduğu bilgisayarın adı.bu ini dosyasını pogramının bulunduğu klasöre kopyala.sonra programında ana formun oncreate veya onshow olayına aşağıdaki kodu yaz..
Kod: Tümünü seç
uses bölümüne inifiles eklemeyi unutma..
procedure TForm1.FormShow(Sender: TObject);
Var
SERVER_ADI : String;
INIDosya : TIniFile;
begin
INIDosya := TIniFile.Create('C:\PROGRAM\DATABASE.ini');
SERVER_ADI := INIDosya.ReadString('AYAR','SERVER','');
INIDosya.Free;
IBDATABASE.DatabaseName:=SERVER_ADI+':C:\program\data\data.GDB';
IBDATABASE.open;
end;
forma bir edit koy(kullanıcılar buraya ana makine adını girecekler) kaydet ve kapat diye iki buton.kaydet butonuna aşağıdaki kodları yaz..
Kod: Tümünü seç
procedure TForm1.cxButton1Click(Sender: TObject);
Var
INIDosya : TIniFile;
begin
INIDosya := TIniFile.Create('C:\program\database.ini');
INIDosya.WriteString('AYAR','server',e1.Text);
INIDosya.Free;
cxButton1.Enabled:=false;
end;
kolay gelsin
-
- Üye
- Mesajlar: 151
- Kayıt: 16 Eki 2006 10:43
- Konum: ERZURUM
haydarxxx aynı dertten bende muzdaribim.Ama sendende Serkandanda Allah razı olsun.Eğer olayı doğru anladıysam, günlerdir arayıpta bulamadığım bilgileri ikinizin sayesinde buldum galiba.Kafamda bir ışık yandı.Bakalım becerebilecek miyim.
Ayrıca şu kod belki işinize yarar.Ağdaki ana makinanın ismini aşağıdaki kodla bulabilirsiniz.
Ağ ortamında login olmuş kullanıcı ismini bulma
Kodlar için DelphiTurkiye.com'a teşekkürler.
Ayrıca şu kod belki işinize yarar.Ağdaki ana makinanın ismini aşağıdaki kodla bulabilirsiniz.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
Makine_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Makine_ismi);
GetComputerName(@Makine_ismi,BufferSize);
Showmessage(Makine_ismi);
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
Kullanici_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
BufferSize:=SizeOf(Kullanici_ismi);
GetUserName(@Kullanici_ismi,BufferSize);
Showmessage(Kullanici_ismi);
end;
Kodlar için DelphiTurkiye.com'a teşekkürler.
En son palandoken tarafından 11 Kas 2006 11:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
ahirette nasıl olsa aklın başına gelecek.
Serkan teşekkürler açıklaöalrın için en kısa zamanda deneyip cevap atacağım.palandoken o kod bende vardı en azında bu kodla serkanın dediği anamakina adını yakalatma ve otomatik ini dosyasına kaydetme işini yaptırtabiliriz.
Bakalım becerebilecekmiyim
Tabi bunu için önce iş yerine bir uğramak gerekir
malum şu an evdeyim 

Bakalım becerebilecekmiyim



-
- Üye
- Mesajlar: 151
- Kayıt: 16 Eki 2006 10:43
- Konum: ERZURUM
-
- Üye
- Mesajlar: 151
- Kayıt: 16 Eki 2006 10:43
- Konum: ERZURUM
erdoganturkmen bende acemiyim. Bu konuda bende çok uğraştım ama galiba anladım.Yanlışım varsa ustalar düzeltsin lütfen.
yapılması gereken şey ana makinaya exe dosyasını ve firebird'ü kurmak.Terminal makinalarada exe'yi ve gds32.dll dosyasını kopyalamak.
Benim ana makina adı ADEMBABA
program c:\Octasis dizinine kurulu
exe adı Octasis.exe
FireBird veritabanı adı OCTASIS.FDB yolu ise c:\Octasis\Data\OCTASIS.FDB
Ana makinada ayrıca şunları yapmak gerekiyor.
Not Defterini kullanarak içeriği
[AYAR]
SERVER=ADEMBABA
olan bir ini dosyası oluşturdum.Tabi bu ADEMBABA benim makinamın adı.Program başka makinalara kurulduğunda makina adı başka olacağından bu değerin ya elle yada program içinden kodla değiştirilmesi gerekiyor.Uygun olanı kodla değiştirmek.
programın ana sayfasının OnCreate olayına aşağıdaki kodu yazdım.Uses'a InıFiles eklemeyi unutma.
şimdi IBDatabase'nin ayarlarını yapalım
daha sonra IBTable , IBQuery vb.ayarları geliyor.Bunların biliyorsun varsayıyorum.
Artık bu kodlarla ben Octasis.exe'yi ve OCTASIS.FDB'yi ağdaki ana bilgisayara kurucam.ağdaki diğer bilgisayarlarada sadece Octasis.exe'yi ve Gds32.dll'yi kurucam.Ağdaki diğer bilgisayarlar IBDatabase'in Databasename'ine SERVER_ADI olarak ana bilgisayarın adını yazdığımız için OCTASIS.FDB'yi kullancak.
erdoganturkmen olaydan benim anladığım bu.Ustalarda bir baksınlar doğru anlamışmıyım.
Kolay gelsin.
yapılması gereken şey ana makinaya exe dosyasını ve firebird'ü kurmak.Terminal makinalarada exe'yi ve gds32.dll dosyasını kopyalamak.
Benim ana makina adı ADEMBABA
program c:\Octasis dizinine kurulu
exe adı Octasis.exe
FireBird veritabanı adı OCTASIS.FDB yolu ise c:\Octasis\Data\OCTASIS.FDB
Ana makinada ayrıca şunları yapmak gerekiyor.
Not Defterini kullanarak içeriği
[AYAR]
SERVER=ADEMBABA
olan bir ini dosyası oluşturdum.Tabi bu ADEMBABA benim makinamın adı.Program başka makinalara kurulduğunda makina adı başka olacağından bu değerin ya elle yada program içinden kodla değiştirilmesi gerekiyor.Uygun olanı kodla değiştirmek.
programın ana sayfasının OnCreate olayına aşağıdaki kodu yazdım.Uses'a InıFiles eklemeyi unutma.
Kod: Tümünü seç
Var
Yol : AnsiString ;
SERVER_ADI : String;
INIDosya : TIniFile;
Makine_ismi:array[0..255] of char;
BufferSize:DWORD;
begin
if FileExists(ExtractFilePath(Application.ExeName)+'Ayar.ini') then//dosya varsa ana makina adını dosyadan al
begin
Yol := ExtractFilePath(Application.ExeName)+'Ayar.ini' ;
INIDosya := TIniFile.Create( Yol );
SERVER_ADI := INIDosya.ReadString('AYAR','SERVER','');
INIDosya.Free;
ShowMessage(SERVER_ADI);
End
Else // eğer dosya yoksa oluştur.
Begin
//alttaki iki satır kod makinanın ağdaki adını bulacak
BufferSize:=SizeOf(Makine_ismi);
GetComputerName(@Makine_ismi,BufferSize);
Yol := ExtractFilePath(Application.ExeName)+'Ayar.ini' ;
INIDosya := TIniFile.Create(Yol);
INIDosya.WriteString('AYAR','SERVER',Makine_ismi);
INIDosya.Free;
//dosya yoktu ve oluşturduk.Şimdi dosya adını tekrar okutalım.
Yol := ExtractFilePath(Application.ExeName)+'Ayar.ini' ;
INIDosya := TIniFile.Create( Yol );
SERVER_ADI := INIDosya.ReadString('AYAR','SERVER','');
INIDosya.Free;
ShowMessage(SERVER_ADI); //Bu mesajları daha sonra silersin
End;
end;
şimdi IBDatabase'nin ayarlarını yapalım
Kod: Tümünü seç
IBDatabase1.DatabaseName := SERVER_ADI+':'+ExtractFilePath(Application.ExeName)+'Data\OCTASIS.FDB';
IBDatabase.DefaultTransaction := IBTransaction1 ;
IBTransaction1.DefaultDatabase := IBDatabase1 ;
IBDatabase1.LoginPrompt := False ;
IBDatabase.Connected := True ;
daha sonra IBTable , IBQuery vb.ayarları geliyor.Bunların biliyorsun varsayıyorum.
Artık bu kodlarla ben Octasis.exe'yi ve OCTASIS.FDB'yi ağdaki ana bilgisayara kurucam.ağdaki diğer bilgisayarlarada sadece Octasis.exe'yi ve Gds32.dll'yi kurucam.Ağdaki diğer bilgisayarlar IBDatabase'in Databasename'ine SERVER_ADI olarak ana bilgisayarın adını yazdığımız için OCTASIS.FDB'yi kullancak.
erdoganturkmen olaydan benim anladığım bu.Ustalarda bir baksınlar doğru anlamışmıyım.
Kolay gelsin.
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
ahirette nasıl olsa aklın başına gelecek.
Slm Arkadaşlar
ağ olayına sonunda geçebildik
Serkan teşekkür ediyorum.Firebifrd ağda çalışması için sırası ile yapılacakları aşağıya yazıyorum kendinize göre uyarlayabilirsiniz.
*Anamakinamın Ağdaki adı UMUT
*Setup yapmadan ağda çalıştırma işlemi üzerinden anlatıyorum.Projeden
*Data yolum C:\KursKayıt\Data.fdb
*Terminal makinası için exe yapmayacağım
1.Formunuzun üzerine bir edit yerleştirin.Buraya anamakinamızın yani şu an projemizin çalıştığı bilgisayarın adını yazacağız.Burada şunuda belirteyim Palandokenin verdiği kod ile bu edit e ağdaki makinanın adını alabilirsiniz ama bu seferde aynı exe yi ağda kullanacağımız için doğru bir işlem olmayacak.Kısacası kullanıcıya mutlaka bu edit e makina adını girdirmelisiniz bir kereye maksus bu yeterli
2.Forma bir buton koyuyoruz ve uses bölümüne inifiles eklemeyi unutmayın
3.Formdaki Ibdatabasenin databasename sine herhangi bir şey yazmammıza gerek yok bunu zaten ini dosyasından alacak
4.
form açılışında dabasename yolunu ini dosyasından aldırıyoruz.Ama burada şu işlemleride yapmayı unutmayın projenin data yolları kapalı olduğu için formunuzdaki tüm IBTransaction,Ibdatabase,Ibquery veya Ibtable gibi bileşenlerin activilerini açtırmanız gerekir örneğin benim
IBDatabase1.Open;
IBTransaction1.Active:=true;
QRY_OGRENCI.Active:=true;
QRY_FOTO.Active:=true;
QRY_DERSLER.Active:=true;
QRY_TAKSIT.Active:=true;
TBL_HAVUZ.Active:=true;
IBTable1.Active:=true;
IBQuery1.Active:=true;
IBQuery2.Active:=true;
IBQuery3.Active:=true
IBQuery4.Active:=true;
IBQuery5.Active:=true;
IBQuery6.Active:=true;
şeklinde bütün bileşenleri true durumuna geçiriyorum artık run demeden önce bir kere ye mahsusuz ini dosyazısını hazırlamak gerekir çünkü şu anda Ibdatabase name ini dosyası olmadığı için bulamayacak o yüzden ini dosyası hazırlalım ama bundan sonraki ini dosyasını kullanıcıya program hazırlatacak
5.İni dosyası için not defterini açıyoruz ve içine
[AYAR]
SERVER=UMUT (Siz buraya kendi makina adını yazını)
kaydet diyoruz uzantısını txt yerine ini olarak belirliyoruz.
6.Bunuda yaptık isek Artık programa run deyip çalıştıralım projenizin açılmış olması gerekir.Eğer datalrınızı görebiliyorsanız anamak daki ayarlarımız tammadır.Projeyinizi kapatın.Projenizin olduğu klosöre ağ paylaşımı verin.Burdaki exe niz ile ini doyanısı kopyalayın
Geçelim ağ olayına yani terminaldeki makinelere bunun için terminal makinaya firebird kuruyoruz
7.Ağdaki makinya bende olduğu gibi c:\KursKayıt adında bir klosör açın ve kopyaladığınız database.ini dosyasını ve exe nizi buraya yapıştırın
8.dikkat ettiyseniz datalar anamakta kaldı çünkü ağdan oraya terminal ulaşacak.Tabi bu işi çok rahatlıkla temel bilgisayar bilgisi olan bir kullanıcıya tarif ederek programınızı ağda kullandırtabilirsiniz.
9.Ağdan veri girdiğinizde diğer makinalrında okuyabilmesi için ağda refresh olayını araştırmak ta size kaldı bu aşamada ama buradan başlayabilirsiniz
viewtopic.php?t=17470&highlight=refresh
10.Eğer bir hata yapmadık ise şu anada anamakta ve teminaldeki exelerin çalışmış olması gerekir.
herkeze kolay gelsin
ağ olayına sonunda geçebildik
Serkan teşekkür ediyorum.Firebifrd ağda çalışması için sırası ile yapılacakları aşağıya yazıyorum kendinize göre uyarlayabilirsiniz.
*Anamakinamın Ağdaki adı UMUT
*Setup yapmadan ağda çalıştırma işlemi üzerinden anlatıyorum.Projeden
*Data yolum C:\KursKayıt\Data.fdb
*Terminal makinası için exe yapmayacağım
1.Formunuzun üzerine bir edit yerleştirin.Buraya anamakinamızın yani şu an projemizin çalıştığı bilgisayarın adını yazacağız.Burada şunuda belirteyim Palandokenin verdiği kod ile bu edit e ağdaki makinanın adını alabilirsiniz ama bu seferde aynı exe yi ağda kullanacağımız için doğru bir işlem olmayacak.Kısacası kullanıcıya mutlaka bu edit e makina adını girdirmelisiniz bir kereye maksus bu yeterli
2.Forma bir buton koyuyoruz ve uses bölümüne inifiles eklemeyi unutmayın
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
INIDosya : TIniFile;
begin
INIDosya := TIniFile.Create('C:\KursKayıt\database.ini');
INIDosya.WriteString('AYAR','SERVER',edit3.Text);
INIDosya.Free;
end;
4.
Kod: Tümünü seç
procedure TForm1.FormShow(Sender: TObject);
INIDosya := TIniFile.Create('C:\KursKayıt\database.ini');
SERVER_ADI := INIDosya.ReadString('AYAR','SERVER','');
INIDosya.Free;
IBDATABASE1.DatabaseName:=SERVER_ADI+':C:\KursKayıt\Data\data.fDB';
form2.IBDATABASE1.DatabaseName:=SERVER_ADI+':C:\KursKayıt\Data\data.fDB';
end;
IBDatabase1.Open;
IBTransaction1.Active:=true;
QRY_OGRENCI.Active:=true;
QRY_FOTO.Active:=true;
QRY_DERSLER.Active:=true;
QRY_TAKSIT.Active:=true;
TBL_HAVUZ.Active:=true;
IBTable1.Active:=true;
IBQuery1.Active:=true;
IBQuery2.Active:=true;
IBQuery3.Active:=true
IBQuery4.Active:=true;
IBQuery5.Active:=true;
IBQuery6.Active:=true;
şeklinde bütün bileşenleri true durumuna geçiriyorum artık run demeden önce bir kere ye mahsusuz ini dosyazısını hazırlamak gerekir çünkü şu anda Ibdatabase name ini dosyası olmadığı için bulamayacak o yüzden ini dosyası hazırlalım ama bundan sonraki ini dosyasını kullanıcıya program hazırlatacak
5.İni dosyası için not defterini açıyoruz ve içine
[AYAR]
SERVER=UMUT (Siz buraya kendi makina adını yazını)
kaydet diyoruz uzantısını txt yerine ini olarak belirliyoruz.
6.Bunuda yaptık isek Artık programa run deyip çalıştıralım projenizin açılmış olması gerekir.Eğer datalrınızı görebiliyorsanız anamak daki ayarlarımız tammadır.Projeyinizi kapatın.Projenizin olduğu klosöre ağ paylaşımı verin.Burdaki exe niz ile ini doyanısı kopyalayın
Geçelim ağ olayına yani terminaldeki makinelere bunun için terminal makinaya firebird kuruyoruz
7.Ağdaki makinya bende olduğu gibi c:\KursKayıt adında bir klosör açın ve kopyaladığınız database.ini dosyasını ve exe nizi buraya yapıştırın
8.dikkat ettiyseniz datalar anamakta kaldı çünkü ağdan oraya terminal ulaşacak.Tabi bu işi çok rahatlıkla temel bilgisayar bilgisi olan bir kullanıcıya tarif ederek programınızı ağda kullandırtabilirsiniz.
9.Ağdan veri girdiğinizde diğer makinalrında okuyabilmesi için ağda refresh olayını araştırmak ta size kaldı bu aşamada ama buradan başlayabilirsiniz
viewtopic.php?t=17470&highlight=refresh
10.Eğer bir hata yapmadık ise şu anada anamakta ve teminaldeki exelerin çalışmış olması gerekir.
herkeze kolay gelsin