Şimdi Ara

Delphi'de Telefon Rehberi Nasıl Yapabilirim ?

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
2.500
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Delphi'de Telefon Rehberi Nasıl Yapabilirim ? Bu aradabu konuda daha yeniyim.Form üzerinde neler oluşturacağım onları söylerseniz bide kodlarını da verirseniz çook ii olur.



  • bu konuda yeniysen telefon defterinden önce daha basit alıştırmalar yap.
    daha sonra telefon defterini yapmaya çalış.

    mantığı burada anlatabilirim. istersen . ama çok basit bir algoritması var.

    bir ipucu veriyim:
    ekrana bir menü oluşturabilirsin: (mesela deftere bak, yeni numara ekle, çıkış gibi )
  • Telefon defteri programları basit olduğu için ve kayıt sayısı fazla olmayacaksa Text dosyalarını kullanabilirsiniz. Yoksa veritabanı kullanmanız gerekir. Veritabanı motoru olarak Borland ürünü BDE veya Microsoft ürünü ADO'yu kullanabilirsiniz.

    Madem yeni başladınız size basit bir sözlük örneği vereyim. Bu örneği telefon rehberi olarak düzenleyebilirsiniz. Hazırladığım projenin formuna 2 Edit ve 2 düğme yerleştirdim. İlk Edit'e kelimenin ingilizcesi, 2. edit’ ise Türkçesi yazılacak. İlk Edit’e kelimenin ingilizcesi yazılıp “Kaydet” adını verdiğim düğme tıklanacak. Bu amaçla ilk olarak Unit’in implementation bölgesinde “sozluk_dosya” adında bir değişken tanımladım.

    Var
    sozluk_dosya : TextFile;

    Sonra formun FormCreate yordamını aşağıdaki gibi düzenledim. Bu yordama yazdıklarım sayesinde proje ilk kez çalıştırılırken text dosyası hazırlanır.

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    AssignFile(Sozluk_dosya, 'C:\sozluk.txt');
    if not FileExists('C:\Sozluk.txt') Then
    ReWrite(sozluk_dosya);
    end;

    Kullanıcı sözlükte yer almasını istediği kelimenin ingilizcesini ve Türkçesini yazıp Kaydet düğmesini tıklayacak. Kaydı yapılmak istenen kelimen sözlükte yer alıyorsa mükerrer kaydı engellemek WrileLn deyimi yazma işlemi yapmadan önce kelimiyi dosyada aradım.

    procedure TForm1.KaydetClick(Sender: TObject);
    Var
    Turkce, ingilizce : String;
    Turkce_1, ingilizce_1 : String;
    begin
    ingilizce := Edit1.Text;
    Turkce:= Edit2.Text;
    Reset(sozluk_dosya);
    While not EOF(sozluk_dosya) Do
    begin
    ReadLn(sozluk_dosya, ingilizce_1);
    ReadLn(sozluk_dosya, Turkce_1);
    If (ingilizce=ingilizce_1) or (Turkce = Turkce_1) Then
    Begin
    ShowMessage('Bu kelime kayıtlı');
    CloseFile(sozluk_dosya);
    Exit;
    end;
    End;
    CloseFile(sozluk_dosya);
    Append(sozluk_dosya);
    WriteLn(sozluk_dosya, Edit1.Text);
    WriteLn(sozluk_dosya, Edit2.Text);
    CloseFile(sozluk_dosya);
    Edit1.Text :='';
    Edit2.Text :='';
    Edit1.SetFocus;
    end;

    Bu örneğin mükerrer kayıtları eneglemek amacıyla yazılan satırlarını fonksiyon olarak düzenleyip kodu daha okunur yapabilirsiniz. Mükerrer kayıtları engellemek amacıyla yazdığım satırlarda dosyayı Reset() deyimi ile okuma modunda açıp bütün satırları sırayla okuyup Edit’e yazılan yeni kelime ile karşılaştırdım. Söz konusu kelime sözlükte yoksa dosyayı CloseFile() fonksiyonu ile kapatıp Append modunda tekrar açtım.

    Şimdi ise "Getir" adını verdiğim düğme için kod yazacağım. Kullanıcı ingilizcesini öğrenmek istediği kelimeyi Türkçe başlıklı Edit’e veya Türkçe’sini öğrenmek istediği kelimeyi ise İngilizce başlıklı Edit’e yazıp “Getir” düğmesini tıklayacak.

    procedure TForm1.GetirClick(Sender: TObject);
    Var
    ingilizce, Turkce : String;
    begin
    Reset(sozluk_dosya);
    While not EOF(sozluk_dosya) do
    Begin
    ReadLn(sozluk_dosya, ingilizce);
    ReadLn(sozluk_dosya, Turkce);
    if (Edit1.Text = ingilizce) or (Edit2.Text = Turkce) Then
    Begin
    Edit1.Text := ingilizce;
    Edit2.Text := Turkce;
    CloseFile(sozluk_dosya);
    Exit;
    End;
    end;
    ShowMessage('Bu kelime kayıtlı değil');
    CloseFile(sozluk_dosya);
    end;
  • Teşekkür ederim fakat ben yine birşey anlayamadım.Programın örneğini yayınlayabilir misiniz upload edip ?

    Programda olmasını istediğim birkaç basit özellik var ;

    1)Ad
    2)Soyad
    3)tel no (ev-cep-işyeri)
    4)Adres
    5)kişi hakkında

    böyle bölümler olmasını istiyorum.Kaydettikten sonra sadece o program içerisinden girip bilgilere bakabileceğim.

    Böyle bi programı nasıl yapabilirim ? formda şunları oluştur sora şu kodları yapıştır diye açıklarsanız memnun olurum.Unitin bilmemneresine şu değişkeni ekledim falan deyince anlamıyorum.(kötü amaçla değil , ben anlamıyorum)

    Yardımcı olursanız memnun olurum.
  • Bindalmg arkadaş merhaba; Kitaplarımda forma şunu yerleştirdim vs demek yerine yer yer resim kullandım. Kitaplarını resimle dolduruyor diye eleştiri almaya devam ediyorum... Neyse..
    Size verdiğim örnekte text dosyasına 2 bilgiyi sakladım. Siz bunları 4'e çıkarcaksınız. Size önerim önce forma 2 Edit ile Kaydet ve Getir adında 2 düğme yerleştirip verdiğim kodları projenize taşımanız. Sonra konuyu kavradığınızda forma 2 Edit daha yerleştirip koda ekleme yapabilirsiniz.
  • Sıfırdan başlayanlar için kitap tavsiyeleriniz nelerdir ?Bende Palme yayıncılığın var.Fakat açıkçası fazla işime yaramadı.Daha iyi

    anlatan bir kitap biliyorsanız , tavsiyeleriniz nelerdir ?
  • database çeşitlerinden herhangi birini kullanımıyorsan
    anahtar kelime tinifile
  • Drony abi şifreli şifreli konuşmayın yaw
  • Arkadaşlar merhaba; Bindalmg arkadaşımız Delphi ile programcılıkta yeni olduğunu zaten ifade etmişti. O nedenle basit ve kolay kavranacak örnek vermeye çalışmıştım. Burada birisi bizden bir konuda fikir veya yol göstermemizi istediğinde ister istemez herkesin önerisi farklı oluyor. Çok sayıda öneri ile karşılaşan kişi ise ne yapacağını iyice şaşırıyor. Gelelim Drony arkadaşın önerisine. Aslında Ini dosyalar ile az sayıda kayıt içeren bilgiler söz konusu olduğunda oldukça işlevseldir. Delphi'nin TIniFile sınıfı ile ini dosyalara yazma ve okuma son derece kolaydır. Kişisel görüşümü merak ederseniz, ini dosyalar yeni olan birisine önerilmemeli derim.



    < Bu mesaj bu kişi tarafından değiştirildi roadster -- 31 Ekim 2006; 20:17:53 >
  • bindalmg arkadaşım sanırım bir yıla yakıdır delphi ile uğraşıyorsun bunu gözlemliyorum.. ama gerçekten çok yavaş ilerliyorsun.. burada sormak yerine yabancı sitlerde birçok örnek var.. bunları inceleyerek kendini geliştirebilirsin. bir hata yaparsın iki hata yaparsın sonunda anlarsın.. en güzel öğrenme yolu yapboz dur.. örneklerde ufak değişiklikler yaparak sonucu gözlemle...


    tinifile bir tanımlamaya ait birden fazla değişken için karmaşık olabilir..
    en basitinden bir string içinde tüm bilgileri saklayabilirsin. mantık olarak çok basittir. hem tinifile birlşeni &4k sıırı vardır. bu sınırı geliştirmekte biraz karışıktır.

    özetle
    bir stringi içine birden fazla bilgi girerek örn. adres, isim ,soyad vs.. gibi bunalrıda birbirinden ayıracak bir seperate word olması lazım.. şuan dediklerimden birşey anlamayabilrsin.

    örnek :

    Function GetParsedItem(TheItemStr, ParseStr : String; ItemNum : Integer): String;
    Var
    I4 : Integer;
    S4 : String;
    Begin
    TheItemStr := TheItemStr + ParseStr;
    S4 := '';
    I4 := 0;
    While I4 <= ItemNum Do
    Begin
    S4 := Copy(TheItemStr, 1, Pos(ParseStr, TheItemStr) - 1);
    Delete(TheItemStr, 1, Pos(ParseStr, TheItemStr));
    Inc(I4);
    End;
    Result := S4;
    End;



    kullanımı

    var
    adres,ad,soyad:string
    begin
    bilgi:='xxx cad xx sok=mesut=arıdoru';

    adres:=GetParsedItem(bilgi,'=',0);
    ad:=GetParsedItem(bilgi,'=',1);
    soyad:=GetParsedItem(bilgi,'=',2);




    delphi kurulu olmadığı için deneme imkanım olmadı.. ama hata yoktur.. üstteki örnek çalışırsa enter kırmasını nasıl aşacağınıda anlatırım

    kısacası stringi parçalayarak istediğimiz veriyi aradan çekebiliriz.
  • Drony , yavaş ilerlediğimin farkındayım.Nedeni ise lise 3 te olmamdan kaynaklanıyor.Seneye kursuna gideceğim inş.Mesajın için teşekkürler.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.