Uygulama Başlangıcında ini file üzerinden bilgi alma?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen sarp_halit »

S. A. Arkadaşlar.

yaptığım uygulamada veritabanı ayarlarını ve diğer birtakım ayarlamaları yapılandırma ( .ini file) dosyası üzerinden almak istiyorum.

birkaç deneme yaptım ve herhangi bir sorun olmadan ini dosyasını kullanabiliyorum. İlk olarak yapmak istediğim şeyi anlatayım.
program başlarken yapıladırma dosyasındaki bölümlerden Veritabani isimli alanın altındaki değerleri kontrol edecek.

Yapılandırma Dosyasının içeriği şu şekilde:

Kod: Tümünü seç

[FirmaBilgileri]
FirmaAdi=
FirmaWeb=
FirmaEposta=
FirmaTelefon=
FirmaFaks=
[Kullanici]
SonKullanici=
[Veritabani]
VARSAYILAN=
burada eğer varsayılan boş ise bir bağlantı ayar penceresi çıkaracak. Kullanıcının girdiği veritabanı bağlanı ayarlarına göre bir connection string oluşturup bu varsayılan kısmına ekleyecek.

bu bilgiler girildikten sonra da giriş formu karşımıza çıkacak. Burada kullanıcıların göremeyeceği sadece klavyeden girilen tuşlarla görünür olan bir bağlantı listesi yer alacak. Combobox'tan seçilen veritabanına bağlanmasını istiyorum. Ben şu şekilde bir sistem uyguladım. Ama burada Veritabanı bölümünde bilgi varken normal çalışıyor; ancak bilgi yok iken sorun oluşturuyor.

Kod: Tümünü seç

program randevu;

uses
  Forms,
  Windows,  inifiles, SysUtils, Classes,
  untMainform in 'untMainform.pas' {frmMainform},
  untLogin in 'untLogin.pas' {frmLogin},
  untBaglantiAyarlari_ilk in 'untBaglantiAyarlari_ilk.pas' {frmBaglantiAyarlari_ilk};

{$R *.res}
const girishakki: integer = 3;
var giris_sayisi: integer;
girisFormu:TfrmLogin;
ayarFormu:TfrmBaglantiAyarlari_ilk;
ayardosyasi:TInifile;
veritabani:String;
begin
  Application.Initialize;
  ayardosyasi:=TIniFile.Create(ExtractFilePath( Application.ExeName )+'ayarlar.ini');
  try
    veritabani:=ayardosyasi.ReadString('Veritabani','VARSAYILAN','');
  finally
    ayardosyasi.Free;
  end;
  while(veritabani='') do
  begin
    ayarFormu.ShowModal;
  end;
  girisFormu:=TfrmLogin.Create(Application);
  giris_sayisi:=0;
  girisFormu.ShowModal;
  while(giris_sayisi<girishakki) and (not girisFormu.GirisOK) do
  begin
    giris_sayisi:=giris_sayisi+1;
    girisFormu.ShowModal;
  end;
  if giris_sayisi = girishakki Then
  begin
    Application.Terminate;
    Exit;
  end;
  Application.CreateForm(TfrmMainform, frmMainform);
  Application.Run;
end.
nasıl bir yöntem izleyebilirim?
Fethiye den herkese sevgiler ...
X))@:>
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen orhancc »

Sorun Nedir?
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen conari »

Neden "while" kullanıyorsunuz?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen orhancc »

evet benim de dikkatimi çekti sürekli dönüyor :)
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen sarp_halit »

if ile de denedim olmadı. Yani ben giriş yapılıncaya kadar form gösterilsin istedim ama yine aynı hatayı verdi. Bu arada sorun Accessviolation Error read olmadı ....
Fethiye den herkese sevgiler ...
X))@:>
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen orhancc »

Hangi satırda tam olarak ne hata aldığını yazarsan daha net birşeyler görebiliriz.
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen sarp_halit »

herhangi bir satırı işaret etmiyor. direkt olarak access violation hatası veriyor.

farklı yöntemle yeniden deniyorum şimdi. çözersem bilgi veririm.
Fethiye den herkese sevgiler ...
X))@:>
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen unicorn64 »

ayarFormu'nu create etmeden showmodal yapmışsın, doğal olarak access violation alıyorsun....
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen sarp_halit »

fark eden bir şey olmadı. kopyala yapıştır yaparken eksiklik yapmışım.

bence sorun ini dosyasını okurken döndürdüğü değerde.
Fethiye den herkese sevgiler ...
X))@:>
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen unicorn64 »

bunu öğrenmenin en güzel ve kolay yolu, breakpoint koyup adım adım çalıştırarak hangi noktada av aldığını bulmaktır...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen conari »

debug da şurayı kontrol et ne değer alıyor boş iken.

Kod: Tümünü seç

veritabani:=ayardosyasi.ReadString('Veritabani','VARSAYILAN','');
ini de VARSAYILAN= karşılığında boşluk falan olmasın.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Re: Uygulama Başlangıcında ini file üzerinden bilgi alma?

Mesaj gönderen sarp_halit »

o şekilde denemedim ama şimdi uğraşırken farklı bir yaklaşım ile problemi giderdim. şimdi ise sectionlardan varsayılan bilginin olup olmadığını kontrol ediyorum. eğer varsa program çalışmaya devam edecek yoksa bağlantı ekranı çıkacak ki çıkıyor da zaten.
kodu:

Kod: Tümünü seç

program randevu;

uses
  Forms,
  Windows,  inifiles, SysUtils, Classes,
  untMainform in 'untMainform.pas' {frmMainform},
  untLogin in 'untLogin.pas' {frmLogin},
  untBaglantiAyarlari_ilk in 'untBaglantiAyarlari_ilk.pas' {frmBaglantiAyarlari_ilk};

{$R *.res}
const girishakki: integer = 3;
var giris_sayisi: integer;
girisFormu:TfrmLogin;
ayarFormu:TfrmBaglantiAyarlari_ilk;
ayardosyasi:TInifile;
varsayilanvt:TStringList;
begin
  Application.Initialize;
  ayardosyasi:=TIniFile.Create(ExtractFilePath( Application.ExeName )+'veritabanlari.ini');
  if not ayardosyasi.SectionExists('VARSAYILAN') Then
  begin
    ayarFormu:=TfrmBaglantiAyarlari_ilk.Create(Application);
    ayarFormu.ShowModal;
  end else
  begin
  girisFormu:=TfrmLogin.Create(Application);
  giris_sayisi:=0;
  girisFormu.ShowModal;
  while(giris_sayisi<girishakki) and (not girisFormu.GirisOK) do
  begin
    giris_sayisi:=giris_sayisi+1;
    girisFormu.ShowModal;
  end;
  if giris_sayisi = girishakki Then
  begin
    Application.Terminate;
    Exit;
  end;
  Application.CreateForm(TfrmMainform, frmMainform);
  Application.Run;
  end;
end.
mesajlardan dolayı teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
Cevapla