Programlama yapalım ve Öğrenelim. - Delphi Eğitim96
  Ana Sayfa
  .NET Eğitim Notları
  Visual C# .NET Örnek Kodları
  VisualBasic.NET Örnek Kodları
  J# Örnekleri
  ASP.NET Örnek Kodları
  Delphi Eğitim
  => Delphi Eğitim1
  => Delphi Eğitim2
  => Delphi Eğitim3
  => Delphi Eğitim4
  => Delphi Eğitim5
  => Delphi Eğitim6
  => Delphi Eğitim7
  => Delphi Eğitim8
  => Delphi Eğitim9
  => Delphi Eğitim10
  => Delphi Eğitim11
  => Delphi Eğitim13
  => Delphi Eğitim14
  => Delphi Eğitim15
  => Delphi Eğitim16
  => Delphi Eğitim17
  => Delphi Eğitim18
  => Delphi Eğitim19
  => Delphi Eğitim20
  => Delphi Eğitim21
  => Delphi Eğitim22
  => Delphi Eğitim23
  => Delphi Eğitim24
  => Delphi Eğitim25
  => Delphi Eğitim26
  => Delphi Eğitim27
  => Delphi Eğitim28
  => Delphi Eğitim29
  => Delphi Eğitim30
  => Delphi Eğtim31
  => Delphi Eğitim32
  => Delphi Eğitim33
  => Delphi Eğitim34
  => Delphi Eğitim35
  => Delphi Eğitim36
  => Delphi Eğitim37
  => Delphi Eğitim38
  => Delphi Eğitim39
  => Delphi Eğitim40
  => Delphi Eğitim41
  => Delphi Eğitim42
  => Delphi Eğitim43
  => Delphi Eğitim44
  => Delphi Eğitim45
  => Delphi Eğitim46
  => Delphi Eğitim47
  => Delphi Eğitim48
  => Delphi Eğitim49
  => Delphi Eğitim50
  => Delphi Eğitim51
  => Delphi Eğitim52
  => Delphi Eğitim53
  => Delphi Eğitim54
  => Delphi Eğitim55
  => Delphi Eğitim56
  => Delphi Eğitim57
  => Delphi Eğitim58
  => Delphi Eğitim59
  => Delphi Eğitim60
  => Delphi Eğitim61
  => Delphi Eğitim62
  => Delphi Eğitim63
  => Delphi Eğitim64
  => Delphi Eğitim65
  => Delphi Eğitim66
  => Delphi Eğitim67
  => Delphi Eğitim68
  => Delphi Eğitim69
  => Delphi Eğitim70
  => Delphi Eğitim71
  => Delphi Eğitim72
  => Delphi Eğitim73
  => Delphi Eğitim74
  => Delphi Eğitim75
  => Delphi Eğitim76
  => Delphi Eğitim77
  => Delphi Eğitim78
  => Delphi Eğitim79
  => Delphi Eğitim80
  => Delphi Eğitim81
  => Delphi Eğitim82
  => Delphi Eğitim83
  => Delphi Eğitim84
  => Delphi Eğitim85
  => Delphi Eğitim86
  => Delphi Eğitim87
  => Delphi Eğitim88
  => Delphi Eğitim89
  => Delphi Eğitim90
  => Delphi Eğitim91
  => Delphi Eğitim92
  => Delphi Eğitim93
  => Delphi Eğitim94
  => Delphi Eğitim95
  => Delphi Eğitim96
  => Delphi Eğitim97
  => Delphi Eğitim98
  => Delphi Eğitim99
  => Delphi Eğitim100
  => Delphi Eğitim101
  => Delphi Eğitim102
  => Delphi Eğitim103
  => Delphi Eğitim104
  => Delphi Eğitim105
  => Delphi Eğitim106
  => Delphi Eğitim107
  => Delphi Eğitim108
  => Delphi Eğitim109
  => Delphi Eğitim110
  => Delphi Eğitim111
  => Delphi Eğitim112
  => Delphi Eğitim113
  => Delphi Eğitim114
  => Delphi Eğitim115
  => Delphi Eğitim116
  => Delphi Eğitim117
  => Delphi Eğitim118
  => Delphi Eğitim119
  => Delphi Eğitim120
  => Delphi Eğitim121
  => Delphi Eğitim122
  => Delphi Eğitim123
  => Delphi Eğitim124
  => Delphi Eğitim125
  => Delphi Eğitim126
  => Delphi Eğitim127
  => Delphi Eğitim128
  => Delphi Eğitim129
  => Delphi Eğitim130
  => Delphi Eğitim131
  => Delphi Eğitim132
  => Delphi Eğitim133
  => Delphi Eğitim134
  => Delphi Eğitim135
  => Delphi Eğitim136
  => Delphi Eğitim137
  => Delphi Eğitim138
  => Delphi Eğitim139
  => Delphi Eğitim140
  => Delphi Eğitim141
  => Delphi Eğitim142
  => Delphi Eğitim143
  => Delphi Eğitim144
  => Delphi Eğitim145
  => Delphi Eğitim146
  => Delphi eğitim147
  => Delphi Eğitim148
  => Delphi Eğitim149
  => Delphi Eğitim150
  => Delphi Eğitim151
  => Delphi Eğitim152
  => Delphi Eğitim153
  => Delphi Eğitim154
  => Delphi Eğitim155
  => Delphi Eğitim156
  => Delphi Eğitim157
  => Delphi Eğitim158
  => Delphi Eğitim159
  => Delphi Eğitim160
  => Delphi Eğitim161
  => Delphi Eğitim162
  => Delphi Eğitim164
  => Delphi Eğitim165
  => Delphi Eğitim166
  => Delphi Eğitim167
  => Delphi Eğitim168
  => Delphi Eğitim169
  => Delphi Eğitim170
  => Delphi Eğitim171
  => Delphi Eğitim172
  => Delphi Eğitim173
  => Delphi Eğitim174
  => Delphi Eğitim175
  => Delphi Eğitim176
  => Delphi Eğitim177
  => Delphi Eğitim178
  => Delphi Eğitim179
  => Delphi Eğitim180
  => Delphi Eğitim181
  => Delphi Eğitim182
  => Delphi Eğitim183
  => Delphi Eğitim184
  => Delphi Eğitim185
  => Delphi Eğitim186
  => Delphi Eğitim187
  => Delphi Eğitim188
  => Delphi Eğitim189
  => Delphi Eğitim190
  => Delphi Eğitim191
  => Delphi Eğitim192
  => Delphi Eğitim193
  => Delphi Eğitim194
  => Delphi Eğitim195
  => Delphi Eğitim196
  => Delphi Eğitim197
  => Delphi Eğitim198
  => Delphi Eğitim199
  => Delphi Eğitim200
  => Delphi Eğitim201
  => Delphi Eğitim202
  => Delphi Eğitim203
  => Delphi Eğitim204
  => Delphi Eğitim205
  => Delphi Eğitim206
  => Delphi Eğitim207
  => Delphi Eğitim208
  => Delphi Eğitim209
  => Delphi Eğitim210
  => Delphi Eğitim211
  => Delphi Eğitim212
  => Delphi Eğitim213
  => Delphi Eğitim214
  => Delphi Eğitim215
  => Delphi Eğitim216
  => Delphi Eğitim217
  => Delphi Eğitim218
  => Delphi Eğitim219
  => Delphi Eğitim220
  => Delphi Eğitim221
  => Delphi Eğitim222
  => Delphi Eğitim223
  => Delphi Eğitim224
  => Delphi Eğitim225
  => Delphi Eğitim226
  => Delphi Eğitim227
  => Delphi Eğitim228
  => Delphi Eğitim229
  => Delphi Eğitim230
  => Delphi Eğitim231
  => Delphi Eğitim232
  => Delphi Eğitim233
  => Delphi Eğitim234
  => Delphi Eğitim235
  => Delphi Eğitim236
  => Delphi Eğitim237
  => Delphi Eğitim238
  => Delphi Eğitim239
  => Delphi Eğitim240
  => Delphi Eğitim241
  => Delphi Eğitim242
  İletişim

registry

//bende yeni yeni delphi ogrenmeye basladim ve buldugum dokumanlari sizlerle

//paylasmak istedim.maalesef tamamen c/p ama onemli olan dokumanlarin artmasi

 

Registry Windows'un tüm ayarlarını sakladığı veri deposudur. Registry'nin önemi hafife alınmamalıdır.

Registry sistem donanım konfigürasyonu, Denetim Masası (Control Panel) ayarları gibi önemli bilgiler içerir. Sizde programlarınızla ilgili ayarları ve bazı verilerinizi Registry'de saklayabilirsiniz. Registry hakkında herhangi bir bilginiz yoksa bilgisayar dergilerine bakmanızı tavsiye ederim. Ayrıca Internet üzerinden PcWorld Dergisinin Windows 95 köşesine bakarsanız burda Registry ile ilgili bilgi bulabilirsiniz.

 

Delphi ile Registry'e bilgi yazmak ve Registry'den bilgi okumak son derece kolaydır.

Delphi'de Registry kullanımına iki yaklaşım bulunur: TRegistry ve TRegIniFile. TRegIniFile sınıfı

TRegistry sınıfının bir alt sınıfıdır ve TIniFile sınıfının yöntem ve özelliklerini kullanır,

ancak ini dosyalar yerine Registry'ye kaydeder. TRegistry sınıfını kullanmak için genellikle ilk

olarak bir anahtarı açmanız ve daha sonra değer ve alt anahtarlarıyla birlikte verilere ulaşmanız gerekir.

 

Benim yaptığım bir örnek programı (regist1.zip) esas alarak yapılan işlemleri adım adım açıkladım.

 

Registry ile ilgili komutları kullanmak için uses kısmına "Registry" ifadesini eklemelisiniz.

 

- İlk önce

var

Reg1:TRegistry;

 

ile TRegistry türünden bir değişken tanımlayın. Reg1 yerine Delphi'deki isimlendirme kuralları dahilinde

istediğiniz ismi verebilirsiniz.

 

- Daha sonra

 

    Reg1:=TRegistry.Create;

 

ile uygulama için bir Registry objesi oluşturun.

 

-Registry'de 6 tane ana anahtar bulunur. Registry objesini oluşturduğunuz zaman (bir önceki adım)

 RootKey (ana anahtar) olarak HKEY_CURRENT_USER atanır. Eğer başka bir ana anahtar'da işlem yapmak

 istiyorsanız "RootKey" özelliğini kullanmalısınız. Mesela biz işlemlerimizi HKEY_LOCAL_MACHINE'de

 yapmak istiyoruz;

 

    Reg1.RootKey:=HKEY_LOCAL_MACHINE;

 

-RootKey olarak HKEY_LOCAL_MACHINE atadık. Daha sonra işlem yapmak istediğimiz anahtarı

 "OpenKey" ile açmalıyız. OpenKey fonksiyonu iki parametre alır. Birincisi açmak istediğimiz anahtar,

 diğeri ise açmak istediğimiz anahtar yoksa bu anahtarın oluşturulup, oluşturulmayacağı. Bu özelliği

 True atarsanız açmak istediğiniz anahtar yok ise bu anahtar oluşturulur.

 

    Reg1.OpenKey('SoftwareMustafaSoftRegDeneme',True);

 

-İşlem yapacağımız anahtarı açtık. (HKEY_LOCAL_MACHINESoftwareMustafaSoftRegDeneme).

 Bu anahtarları rastgele belirlememeniz gerekir. Anahtarlarınızı nereye ekleyeceğinize dair

 bilgileri Windows 95 veya NT ile ilgili Microsoft dokümanlarından elde edebilirsiniz.

 Anahtarı açtıktan sonra çeşitli işlemler yapabilirsiniz:

 

- CreateKey('anahtar_ismi') ile yeni bir anahtar oluşturabilirsiniz.

- DeleteKey('anahtar_ismi') ile mevcut bir anahtarı silebilirsiniz.

- DeleteValue('değer_ismi') ile bir değeri silebilirsiniz.

- GetKeyNames ile geçerli anahtarın alt anahtarlarının listesini elde edebilirsiniz.

 

    Reg1.GetKeyNames(memo1.lines);

 

- GetValueNames ile geçerli anahtardaki değerlerin isimlerinin listesini elde edebilirsiniz.

 

    Reg1.GetValueNames(memo1.lines);

 

- HasSubKeys ile geçerli anahtarın alt anahtarlara sahip olup olamdığını öğrenebilirsiniz.

  Geçerli anahtar en az bir alt anahtara sahip ise bu fonksiyon True, hiç alt anahtarı yoksa

  False değerini döndürür.

- KeyExists('anahtar_ismi') ile belirttiğiniz anahtarın olup olmadığını öğrenebilirsiniz.

- ValueExists('değer_ismi') ile belirttiğiniz değerin olup olmadığını öğrenebilirsiniz.

- RenameValue(eski isim, yeni isim) ile bir değerin ismini değiştirebilirsiniz.

- WriteString('değer_ismi', 'değer') ile bir string ifadeyi yazabilirsiniz. değer String tipinde olmalıdır.

 

    Reg1.WriteString('wstring','Mustafa ŞİMŞEK');

 

- WriteInteger('değer_ismi', 'değer') ile bir integer sayıyı yazabilirsiniz. değer Integer tipinde olmalıdır.

 

    Reg1.WriteInteger('wint',1234);

 

- WriteFloat('değer_ismi', 'değer') ile bir float sayıyı yazabilirsiniz. değer Double tipinde olmalıdır.

 

    Reg1.WriteFloat('wfloat',123.45);

 

- WriteDate('değer_ismi', 'değer') ile bir tarihi yazabilirsiniz. değer TDateTime tipinde olmalıdır.

 

    Reg1.WriteDate('bugun',date);

 

- WriteTime('değer_ismi', 'değer') ile bir saati yazabilirsiniz. değer TDateTime tipinde olmalıdır.

 

    Reg1.WriteTime('wtime',time);

 

- WriteDateTime('değer_ismi', 'değer') ile tarih ve saatten oluşan ifadeyi yazabilirsiniz.

  değer TDateTime tipinde olmalıdır.

 

    Reg1.WriteDateTime('wdt',now);

 

- WriteBool('değer_ismi', 'değer') ile sadece Doğru veya Yanlış değerlerini alabilen bir

  ifadeyi yazabilirsiniz. değer sadece True veya False değerini alabilir.

- WriteCurrency('değer_ismi', 'değer') ile bir para değerini yazabilirsiniz.

  değer Currency tipinde olmalıdır.

 

    Reg1.WriteCurrency('wcurr',1000000.325);

 

 

regedit1.gif (3.402 byte)    Yazma işlemlerinden sonra registry'deki görünüm. Registry'e üç

tip veri kaydedilir. Dize değeri (string), ikili değer (binary) ve dword değeri.

Dword değerleri heksadesimal (onaltılık) veya desimal (ondalık) formdadır.

Şekilde wstring - dize değeri, wint - dword değeri geriye kalanlar ise ikili değer(binary)lerdir.

 

 

 

 

  - ReadString('değer_ismi') ile bir string ifadeyi okuyabilirsiniz.

 

    Reg1.ReadString('wstring')

 

- ReadInteger('değer_ismi') ile bir integer ifadeyi okuyabilirsiniz.

- ReadFloat('değer_ismi') ile bir float sayıyı ifadeyi okuyabilirsiniz.

- ReadDate('değer_ismi') ile bir tarihi okuyabilirsiniz.

- ReadTime('değer_ismi') ile bir saati okuyabilirsiniz.

- ReadDateTime('değer_ismi') ile bir tarih ve saatten oluşan ifadeyi okuyabilirsiniz.

- ReadBool('değer_ismi') ile bir sadece Doğru veya Yanlış değerlerini alabilen bir ifadeyi okuyabilirsiniz.

- İşlemlerimiz bittikten sonra anahtarı kapatmamız ve ayırdığımız kaynakları serbest bırakmamız lazım.

 

    Reg1.CloseKey;

    Reg1.Free;

 

Delphi - .....................................

 

network uzerinden veri iletimi

//bende yeni yeni delphi ogrenmeye basladim ve buldugum dokumanlari sizlerle

//paylasmak istedim.maalesef tamamen c/p ama onemli olan dokumanlarin artmasi

 

 

DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ

 

 

 

Delphi bizlere ağ üzerinden veri iletimini sağlayan birçok nesne sunmaktadır (Internet, intranet, local). Bu makalede 2 Delphi bileşeni üzerinde inceleme yapacağız: TserverSocket ve TclientSocket. Bu iki bileşen TCP/IP bağlantıda okuma ve yazma işlemleri için tasarlanmıştır. Bu makalede ağ üzerinde iletişim kuran basit bir uygulama yapacağız.

 

 

 

 

Winsock ve Delphi soket bileşenleri

 

 

 

Windows soketleri veya Winsock, Microsoft Windows altında network programlama için bir açık arayüzdür. Winsock, protokol yığın servislerine ulaşabilmek için bize bir takım fonksiyonlar, veri yapıları v.b. imkanlar sunar.

 

 

 

Delphi soket bileşenleri, başka sistemlerle TCP/IP üzerinden ve ilgili diğer protokoller aracılığı ile iletişim kuran uygulamalar yazmanızı sağlar. Soketleri kullanarak, bağlantı üzerinden, nasıl bir network yapısının varolduğu hakkında herhangi bir endişeye kapılmadan diğer makinalarile haberleşmek mümkündür.

 

TServerSocket ve TClientSocket bileşenleri ile TcpClient, TcpServer ve TudpSocket bileşenleri Delphi bileşen araç çubuğunun Internet paletinde yer almaktadır.

 

 

 

Belirli bir network üzerinde özel bir servise nasıl ulaşılır

 

En basit cevap; Client makine servise mesaj göndermek için izine sahiptir ve gönderimden sonra karşıdan cevap bekler. Bir network de bunu yapmanın (gönderme veya okuma) en pratik yolu soketleri kullanmaktır.

 

 

 

Porlar ve Hostlar

 

Bir soket bağlantısı için, soket bileşeni kullanılır. Host ve port belirli yapılara sahiptir. Genelde host, server sisteminin IP adresi için bir takma ad belirtir (Alias). Port ise, server soket bağlantı numarısı olan ID yi belirtir.

 

Basit bir TEK-YÖN gönderim yapan program

 

Şimdi bu uygulamayı Socket bileşenlerini kullanarak nasıl yaptığımıza bir bakalım. İki form oluşturacağız. Birisi SERVER için diğeri CLIENT bilgisayarımız için olacak. Amacımız; Client makinadan TEXT yazısını SERVER makinamıza göndermek olacak.

 

Başlamadan once, Delphiyi 2 kez çalıştırın. Bir projeyi Client uygulama için diğerinide Server uygulama için kullanacağız.

 

SERVER tarafı

 

Formumuzun üzerinde bir tane TServerSocket  bileşeni ve bir tane de Tmemo bileşeni koyunuz. Görünümümüz şu şekilde olacaktır:

 

 

 

Ve formumuzun OnCreate olayını aşağıdaki şekilde oluşturunuz:

 

procedure TForm1.FormCreate(Sender: TObject);

 

begin

 

  ServerSocket1.Port := 23; //port numaramız

 

  ServerSocket1.Active := True; //soketimizi aktif yaptık

 

end;

 

formumuzun OnClose olayınıda aşağıdaki hale çeviriniz:

 

procedure TForm1.FormClose

 

(Sender: TObject; var Action: TCloseAction);

 

begin

 

  ServerSocket1.Active := false; //Aktifliğini iptal ediyoruz.

 

end;

 

CLIENT tarafı

 

Client uygulamamız için, bir tane TClientSocket, bir tane Tedit ve bir tanede Tbutton bileşenini formumuza ekleyelim. Formumuz aşağıdaki gibi görünecektir:

 

 

 

Bu formumuzun da kodlarını aşağıdaki şekilde oluşturalım:

 

procedure TForm1.FormCreate(Sender: TObject);

 

begin

 

  ClientSocket1.Port :=  23;

 

  ClientSocket1.Host :=  10.9.5.1';  //Bölgesel TCP/IP server adresi

 

  ClientSocket1.Active :=  true; //Soketimizi aktif yaptık

 

end;

 

 

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

 

begin

 

  ClientSocket1.Active := false; //Soketimizi pasif yaptık

 

end;

 

 

 

procedure TForm1.Button1Click(Sender: TObject);

 

begin

 

  if ClientSocket1.Active then //Eğer soketimiz aktif ise

 

    ClientSocket1.Socket.SendText(Edit1.Text); //Edit ın içeriğini gönderiyoruz

 

end;

 

 

 

 

 

Zaten kod kendini çok basit bir şekilde ifade ediyor. Client tarafından butonumuza basıldığında Edit1in içeriğindeki Text ifade, belirlenmiş port ve host adresi ile Server’ımıza gönderilecektir.

 

 

 

SERVERa geri dönelim

 

Bu örnek için son uygulamamız şu olcak: Servera veri gönderen Clientları görelim. Bunun için OnClientRead olayını kullanacaz. Bu olay Server soketi Clienttan bir veri okuduğu anda gerçekleşecektir.

 

Bu kodumuzda (Server formumuzda) şu şekilde olacaktır:

 

procedure Tform1.ServerSocket1ClientRead(Sender: TObject;

 

  Socket: TCustomWinSocket);

 

begin

 

  Memo1.Lines.Add(Socket.ReceiveText);

 

end;

 

Kolaydı değil mi J Elbette! Ama programımız sağlıklı çalışmayacaktır. Çünkü birden fazla Client makina Servera veri göndermeye kalkarsa ne olcak? Bu durumda kodumuzda ufak tefek bir kaç değişiklik işimizi görecektir:

 

 

 

 

 

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

 

  Socket: TCustomWinSocket);

 

var

 

  i:integer;  //Client makina sayısı için

 

  text : string; //Gelen veriyi okumak için

 

begin

 

  for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do

 

  begin

 

    with ServerSocket1.Socket.Connections[i] do

 

    begin

 

      text := ReceiveText; //okunan veri sRec’ e atanır.

 

      if text <> '' then //eğer text boş değil ise

 

      begin

 

        Memo1.Lines.Add(RemoteAddress + ' sends :'; //Gönderenin adresi

 

        Memo1.Lines.Add(text); //ve gönderdiği Text Memo’ya eklenir.

 

      end;

 

    end;

 

  end;

 

end;

 

Hepsi bu. Server bir Client soketten bir veri okuduğunda, Client’ın adresini ve göndermiş olduğu veriyi Memo bileşenine ekler. Memomuzunda görünümü aşağıdaki gibi olacaktır.

 

 

 

 

 

NOT: Eğer ilk olarak Client formunu çalıştırırsanız, daha server ile bağlantı kurulmadığından bir hata ile karşılaşabilirsiniz. Bunun için öncelikle Server Formunu ardından da Client formunu çalıştırmanız gerekmektedir. (Bu uygulama için)

 

 

 

Yeni bir makalede görüşmek dileği ile

 

Delphi - .....................................

 

network uzerinden veri iletimi

//bende yeni yeni delphi ogrenmeye basladim ve buldugum dokumanlari sizlerle

//paylasmak istedim.maalesef tamamen c/p ama onemli olan dokumanlarin artmasi

 

 

DELPHİ İLE NETWORK ÜZERİNDEN VERİ İLETİMİ

 

 

 

Delphi bizlere ağ üzerinden veri iletimini sağlayan birçok nesne sunmaktadır (Internet, intranet, local). Bu makalede 2 Delphi bileşeni üzerinde inceleme yapacağız: TserverSocket ve TclientSocket. Bu iki bileşen TCP/IP bağlantıda okuma ve yazma işlemleri için tasarlanmıştır. Bu makalede ağ üzerinde iletişim kuran basit bir uygulama yapacağız.

 

 

 

 

Winsock ve Delphi soket bileşenleri

 

 

 

Windows soketleri veya Winsock, Microsoft Windows altında network programlama için bir açık arayüzdür. Winsock, protokol yığın servislerine ulaşabilmek için bize bir takım fonksiyonlar, veri yapıları v.b. imkanlar sunar.

 

 

 

Delphi soket bileşenleri, başka sistemlerle TCP/IP üzerinden ve ilgili diğer protokoller aracılığı ile iletişim kuran uygulamalar yazmanızı sağlar. Soketleri kullanarak, bağlantı üzerinden, nasıl bir network yapısının varolduğu hakkında herhangi bir endişeye kapılmadan diğer makinalarile haberleşmek mümkündür.

 

TServerSocket ve TClientSocket bileşenleri ile TcpClient, TcpServer ve TudpSocket bileşenleri Delphi bileşen araç çubuğunun Internet paletinde yer almaktadır.

 

 

 

Belirli bir network üzerinde özel bir servise nasıl ulaşılır

 

En basit cevap; Client makine servise mesaj göndermek için izine sahiptir ve gönderimden sonra karşıdan cevap bekler. Bir network de bunu yapmanın (gönderme veya okuma) en pratik yolu soketleri kullanmaktır.

 

 

 

Porlar ve Hostlar

 

Bir soket bağlantısı için, soket bileşeni kullanılır. Host ve port belirli yapılara sahiptir. Genelde host, server sisteminin IP adresi için bir takma ad belirtir (Alias). Port ise, server soket bağlantı numarısı olan ID yi belirtir.

 

Basit bir TEK-YÖN gönderim yapan program

 

Şimdi bu uygulamayı Socket bileşenlerini kullanarak nasıl yaptığımıza bir bakalım. İki form oluşturacağız. Birisi SERVER için diğeri CLIENT bilgisayarımız için olacak. Amacımız; Client makinadan TEXT yazısını SERVER makinamıza göndermek olacak.

 

Başlamadan once, Delphiyi 2 kez çalıştırın. Bir projeyi Client uygulama için diğerinide Server uygulama için kullanacağız.

 

SERVER tarafı

 

Formumuzun üzerinde bir tane TServerSocket  bileşeni ve bir tane de Tmemo bileşeni koyunuz. Görünümümüz şu şekilde olacaktır:

 

 

 

Ve formumuzun OnCreate olayını aşağıdaki şekilde oluşturunuz:

 

procedure TForm1.FormCreate(Sender: TObject);

 

begin

 

  ServerSocket1.Port := 23; //port numaramız

 

  ServerSocket1.Active := True; //soketimizi aktif yaptık

 

end;

 

formumuzun OnClose olayınıda aşağıdaki hale çeviriniz:

 

procedure TForm1.FormClose

 

(Sender: TObject; var Action: TCloseAction);

 

begin

 

  ServerSocket1.Active := false; //Aktifliğini iptal ediyoruz.

 

end;

 

CLIENT tarafı

 

Client uygulamamız için, bir tane TClientSocket, bir tane Tedit ve bir tanede Tbutton bileşenini formumuza ekleyelim. Formumuz aşağıdaki gibi görünecektir:

 

 

 

Bu formumuzun da kodlarını aşağıdaki şekilde oluşturalım:

 

procedure TForm1.FormCreate(Sender: TObject);

 

begin

 

  ClientSocket1.Port :=  23;

 

  ClientSocket1.Host :=  10.9.5.1';  //Bölgesel TCP/IP server adresi

 

  ClientSocket1.Active :=  true; //Soketimizi aktif yaptık

 

end;

 

 

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

 

begin

 

  ClientSocket1.Active := false; //Soketimizi pasif yaptık

 

end;

 

 

 

procedure TForm1.Button1Click(Sender: TObject);

 

begin

 

  if ClientSocket1.Active then //Eğer soketimiz aktif ise

 

    ClientSocket1.Socket.SendText(Edit1.Text); //Edit ın içeriğini gönderiyoruz

 

end;

 

 

 

 

 

Zaten kod kendini çok basit bir şekilde ifade ediyor. Client tarafından butonumuza basıldığında Edit1in içeriğindeki Text ifade, belirlenmiş port ve host adresi ile Server’ımıza gönderilecektir.

 

 

 

SERVERa geri dönelim

 

Bu örnek için son uygulamamız şu olcak: Servera veri gönderen Clientları görelim. Bunun için OnClientRead olayını kullanacaz. Bu olay Server soketi Clienttan bir veri okuduğu anda gerçekleşecektir.

 

Bu kodumuzda (Server formumuzda) şu şekilde olacaktır:

 

procedure Tform1.ServerSocket1ClientRead(Sender: TObject;

 

  Socket: TCustomWinSocket);

 

begin

 

  Memo1.Lines.Add(Socket.ReceiveText);

 

end;

 

Kolaydı değil mi J Elbette! Ama programımız sağlıklı çalışmayacaktır. Çünkü birden fazla Client makina Servera veri göndermeye kalkarsa ne olcak? Bu durumda kodumuzda ufak tefek bir kaç değişiklik işimizi görecektir:

 

 

 

 

 

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

 

  Socket: TCustomWinSocket);

 

var

 

  i:integer;  //Client makina sayısı için

 

  text : string; //Gelen veriyi okumak için

 

begin

 

  for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do

 

  begin

 

    with ServerSocket1.Socket.Connections[i] do

 

    begin

 

      text := ReceiveText; //okunan veri sRec’ e atanır.

 

      if text <> '' then //eğer text boş değil ise

 

      begin

 

        Memo1.Lines.Add(RemoteAddress + ' sends :'; //Gönderenin adresi

 

        Memo1.Lines.Add(text); //ve gönderdiği Text Memo’ya eklenir.

 

      end;

 

    end;

 

  end;

 

end;

 

Hepsi bu. Server bir Client soketten bir veri okuduğunda, Client’ın adresini ve göndermiş olduğu veriyi Memo bileşenine ekler. Memomuzunda görünümü aşağıdaki gibi olacaktır.

 

 

 

 

 

NOT: Eğer ilk olarak Client formunu çalıştırırsanız, daha server ile bağlantı kurulmadığından bir hata ile karşılaşabilirsiniz. Bunun için öncelikle Server Formunu ardından da Client formunu çalıştırmanız gerekmektedir. (Bu uygulama için)

 

 

 

Yeni bir makalede görüşmek dileği ile

 

Delphi - .....................................

 

delphi cok yarali kodlar-ipuclari____ve cok fazla sayıda

//bende yeni yeni delphi ogrenmeye basladim ve buldugum dokumanlari sizlerle

//paylasmak istedim.maalesef tamamen c/p ama onemli olan dokumanlarin artmasi

 

Açılış ekranı (Splash Form) oluşturma

 

Açılış ekranı için bir form oluşturun. Formun BorderStyle özelliğini bsNone yapın.

 Project Options kısmından formu Auto-Create değil, Avaible forms yapın. Daha sonra Project->View Source

 ile proje dosyanıza(.dpr uzantılı) aşağıdaki kodları ekleyin.

 

begin

 SplashForm := TSplashScreen.Create(Application); //bu 3 satır eklendi. Formu oluştur

 SplashForm.Show;                                 //formu göster

 SplashForm.Update;                               //formu yenile

 

 Application.Initialize;

 Application.Title := 'Application Title';

 Application.CreateForm(TForm1, Form1);

 

 SplashForm.Hide;                                 //bu 2 satır eklendi. Formu gizle

 SplashForm.Free;                                 //Formu yok et

 

 Application.Run;

end.

 

 

 

---------------------------------------------------------------------------------------------------------

 

 

 

 

3 boyutlu yazı

 

3 boyutlu yazı yazmak için piyasada bir sürü bileşen bulabilirsiniz.

Ancak bu işi kendinizde hem de tek satır kod yazmadan yapabilirsiniz. Bunun için;

 

    1. Form üzerine bir label koyun ve caption kısmına istediğiniz yazıyı yazın.

    2. Sonra bu label üzerine tıklayın ve Edit menüsünden Copy komutunu verin.

    3. Sonra form üzerinde bir yere tıklayın Edit menüsünde Paste komutunu verin ve bu label'ın Transparent

     özelliğini  True yapın. Left ve Top özelliklerini ilk label'dan ikişer eksik verin.

 

3 boyutlu yazımız hazır. Label'ların renkleriyle ve yerleriyle oynayarak çeşitli efektler verebilirsiniz.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Türkçe Mesajlar

 

Delphinin Professional ve Client/Server versiyonlarına sahipseniz, uygulamanızın verdiği mesajları

Türkçeleştirebilirsiniz. Mesela MessageDlg fonksiyonuyla gösterdiğiniz mesajların başlıklarını ve

düğmelerin başlıklarını değiştirebilirsiniz. Sonra "Invalid Date" gibi bir hata mesajı yerine

"Geçersiz tarih, lütfen girdiğiniz tarihi kontrol edin!" gibi mesaj verdirebilirsiniz.

 

Bunun için Delphi'nin Source kodunda yer alan consts.pas (...DelphiSourceVcl) ve  sysconst.pas (...DelphiSourceRtlSys) dosyalarını Delphi ile açın ve mesajları Türkçeleştirin.

 Sonra bu dosyaları derleyin. Yalnız biraz dikkatli olmalısınız ve orjinal dosyaların mutlaka yedeğini alın.

 

Derleme sonucunda oluşan consts.dcu ve sysconst.dcu dosyalarını Lib (...DelphiLib) ve Slib (...DelphiSlib) klasörlerine kopyalayın.

Yine orjinal dosyaların birer yedeğini almanız menfaatiniz icabıdır. Artık mesajlarınız değiştirdiğiniz şekilde çıkacaktır.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

Delphi'nin Süprizleri

 

Help menüsünden About kısmına girin. Alt tuşuna basarak aşağıdakileri yazın.

 

Alt+TEAM

Alt+DEVELOPERS

Alt+QUALITY (Sadece Delphi 3 ve 4'ün Client/Server versiyonlarında)

Alt+AND (SAdece Delphi 1'de)

Alt+CHUCK

Alt+VERSION (Sadece Delphi 2'de)

 

Database Desktop'tada Help menüsünden About kısmına girin ve delphi yazın.

 

Quick Report'ta preview ekranında simgeler gözükmüyor

 

Bu sisteminizde bulunan Comctl32.dll dosyasının eski olmasından kaynaklanıyor.

Eğer bu dosyayı yenilerseniz hata düzelecektir. Bu dosyayı Delphi CD'sinin "InfoUpdates" klasörü altında bulabilirsiniz.

 Ayrıca aşağıdaki linkten Microsoft'un sitesinden de dosyayı çekebilirsiniz.

 

ftp://ftp.microsoft.com/softlib/mslfiles/40comupd.exe

 

Programs (Programlar) altındaki grupların listesi

 

Form üzerine bir tane listbox, bir tane Button ve bir tane de DdeClientConv bileşeni koyun.

DdeClientConv bileşeninin DDEService ve DDETopic özelliklerini "Progman" (tırnaklar yok) olarak değiştirin ve aşağıdaki kodu yazın.

 

procedure TForm1.Button1Click(Sender: TObject);

var

  P: PChar;

begin

  ListBox1.Items.clear;

  P := DDEClientConv1.RequestData('Groups');

  ListBox1.Items.SetText(P);

  StrDispose(P);

end;

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Hint'leriniz ekranda daha uzun süre kalsın

 

Formunuzun OnCreate olayına aşağıdaki kodu yazın. Buradaki değer milisaniye cinsindendir.

1 saniye=1000 milisaniye.

 

Application.HintHidePause := 4000;

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Kayıtlarınızı Microsoft Excel dosyasına kaydedin

 

1. YOL : Zaman zaman veritabanlarınızdaki veya programınızdaki kayıtları Excel dosyasına aktarmanız

gerekebilir. Bu iş için *.csv dosyasını kullanabilirsiniz. Kayıtların arasına noktalı virgül ( ; ) koyarak

 uzantısı csv olan bir text dosyasına kaydedin. Dosyanın üstüne çift tıkladığınızda Excel'de açılacaktır.

 

Mesela No, Ad, Soyaddan oluşan bir tabloyu Excel'e aktarmak istiyorsunuz. Kayıtlar şöyle olmalıdır.

 

1;Mustafaimşek

2;Ahmet;Savaş

3;Buiş;bukadar

 

2. YOL : 3. parti grid bileşenlerinin çoğu Excel'e veri aktarma özelliğine sahiptir.

Bunlardan birini kullanarak verilerinizi Excel'e aktarabilirsiniz.

Piyasadaki en iyi grid bileşeni olan Developer Express Quantum Grid bileşeni,

bilgisayarınızda Excel olmasa dahi verilerinizi Excel dosyası olarak kaydedebilimektedir.

 

Delphi'yi tamamen kaldırıp sıfırdan kurmak

 

Delphi'yi komple silip sıfırdan kurmak için;

 

1. Önce tüm projelerinizi yedekleyin.

2. Eğer BDE'de alias kullanıyorsanız, idapi32.cfg dosyasını yedekleyin.

3. Denetim Masası Program Ekle/Kaldır'dan Delphi'yi kaldırın.

4. Geride kalan Delphi klasörünü sistemden silin.

5. Eğer Windows2000 ve Delphi 6 kullanıyorsanız, Delphi 6 CD'sindeki "D6RegClean.exe" programını çalışıtırın.

6. Delphi'yi CD'sinden yeniden kurun.

7. Eğer idapi32.cfg dosyasını yedeklemişseniz, yeni dosyanın üzerine kopyalayın.

8. Eğer 3. parti bileşen kullanıyorsanız, onları kurun.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Team Source nedir?

 

Team Source, birlikte yazılım geliştiren bir grubun günlük iş akışını yönetmelerine yardımcı olan bir araçtır.

 

Programımın simgesi (icon) yanlış gözüküyor

 

Windows Explorer ve kısayol'da programınızın simgesi yanlış gözüküyor, ama taskbar'da ve ALT+TAB ile

açılan listede düzgün gözüküyor.

Delphi'de programınızın simgesi res uzantılı bir dosyada tutulur ve resource'un ismi MAINICON'dur.

Ancak eğer bu kaynak dosyasına birden fazla simge eklerseniz, Windows kısayollarda ve Windows Explorer'da,

Exe dosyadaki ilk simgeyi kullandığında simge yanlış gözükebilir. Simgeler exe dosyaya alfabetik sırada

bağlanır. Ek simgelerin resource ismi M harfinden sonraki bir harfla başlarsa, herhangi bir sorun

çıkmayacaktır.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 CD-Rom sürücüyü açmak ve kapamak

 

uses kısmına MMSystem unitini ekleyin.

 

mciSendString('Set cdaudio door open wait', nil, 0, handle); //aç

mciSendString('Set cdaudio door closed wait', nil, 0, handle); //kapa

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 Uygulamanızın Görev Çubuğundaki butonunu gizleme

 

Uygulamanızın Görev Çubuğundaki butonunu gizlemek için; programınızın ana formunun OnCreate olayına

aşağıdaki kodu yazın;

 

SetWindowLong(Application.Handle,GWL_EXSTYLE, WS_EX_TOOLWINDOW);

 

 ico'dan bmp'ye çevirme

 

var

  Icon : TIcon;

  Bitmap : TBitmap;

begin

  Icon := TIcon.Create;

  Bitmap := TBitmap.Create;

  Icon.LoadFromFile('c:picture.ico');

  Bitmap.Width := Icon.Width;

  Bitmap.Height := Icon.Height;

  Bitmap.Canvas.Draw(0, 0, Icon );

  Bitmap.SaveToFile('c:picture.bmp');

  Icon.Free;

  Bitmap.Free;

end;

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Programım sadece bir kez çalışsın

 

Normalde kullanıcı programınızı istediği kadar çalıştırabilir veya bazı sabırsız kullanıcılar program

simgesine ard arda birkaç defa tıklayıp, aynı anda birden fazla program penceresi açabilirler.

Yani kullanıcı aynı anda 2-3 tane programı açabilir. Bazı durumlarda, programınızın sadece bir kez

çalışmasını isteyebilirsiniz :

 

Ana formunuzun Public kısmında şu tanımlamayı yapın :

 

Atom : Word;

 

Ana formun OnCreate olayına aşağıdaki kodu ekleyin:

 

if GlobalFindAtom('PROGRAM_RUNNING') = 0 then

  atom := GlobalAddAtom('PROGRAM_RUNNING')

else

begin

  MessageDlg('Program zaten çalışıyor!', mtWarning, [mbOK], 0);

  Halt;

end;

 

ve formun OnDestroy olayına da aşağıdaki kodu ekleyin. Hepsi bu kadar.

 

GlobalDeleteAtom(atom);

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Listbox'a yatay kaydırma çubuğu eklemek

 

Formunuzun OnCreate olayına aşağıdaki kodu ekleyin.

 

SendMessage(Listbox1.Handle, LB_SetHorizontalExtent, 1000, Longint(0));

 

 

 

 

 

Combobox'ın listesini kod ile açıp kapatın

 

SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 1, 0); {listeyi açar}

 

SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 0, 0); {listeyi kapatır}

 

 

-----------------------------------------------------------------------------------------------------------

 

 

Listbox'ta kaydırma çubuğunu kod ile aşağı çekme

 

Listbox'ta 11. öğeyi listenin en başına getirmek için için aşağıdaki kodu yazın.

 

SendMessage(ListBox1.Handle, lb_SetTopIndex, 10, 0);

 

Eğer 25. öğeyi liste başı yapmak istiyorsanız

 

SendMessage(ListBox1.Handle, lb_SetTopIndex, 24, 0);

 

Enter tuşuna bastığınızda bir sonraki kontrole geçme

 

Enter tuşuna bastığınızda Windows'un bir sonraki kontrole geçmesi için (Tab tuşuna basılmış gibi)

Formunuzun KeyPreview özelliğini True yapın ve formun OnKeyPress olayına aşağıdaki kodu yazın.

 

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

  if (Key = #13) then

    begin

      Key := #0;

      Perform(WM_NEXTDLGCTL, 0, 0);

    end;

end;

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Dos modunda yazı yazdırma

 

QuickReport ve benzeri raporlama araçları grafik modda baskı yaptıkları için baskı yavaş olur.

Dos modunda, hızlı yazı yazdırmak için, bu iş için özel tasarlanmış, bedava olan ZReport isimli

raporlama bileşenini kullanabilirsiniz. Bileşeni www.torry.net adresinden aratarak bulun ve indirin.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

Kurulum (install) hazırlama

 

Delphi ile birlikte InstallShield Express'in Borland kısıtlı sürümü de dağıtılıyor.

Kurulum seti hazırlamak için bunu kullanabilirsiniz, ancak bu program biraz hantal.

Bunun yerine ben inno setup + istool ikilisini kullanmanızı tavsiye ederim. inno setup çok kullanışlı,

 görsel yönden güzel, bedava, source kodu açık bir kurulum programı. Script desteği de var.

 istool ise inno setup script'lerini görsel ekranlarla hazırlayan bir inno setup eklentisi.

 Sitelerinden bu programları indirebilirsiniz.

 

inno setup : www.innosetup.com , istool : www.istool.org

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

QuickReport bıktırdıysa, alternatif raporlama araçları

 

Qr(Quick Report) Delphi içinde bundle ettiği zaman piyasadaki en iyi raporlama araçlarından biri idi.

Ancak Qr zamanla kendini geliştiremedi. Mevcut hatalar düzeltilemedi, çok istenen eksikler yapılamadı.

Özellikle destek noktasında çok büyük sıkıntı oluştu ve gelişen zaman içinde programcıların Delphi içindeki

en büyük sorunu Qr oldu.

 

Borland'da bunu dikkate alarak Delphi 7'den itibaren Rave'i raporlama aracı olarak dağıtmaya başladı.

Bu karar ne derece doğru bilemiyorum. Bunu zaman gösterecek. Ama piyasada çok tutulan ve ihtiyaç duyduğunuz

eksikleri tamamlayacak 2 raporlama aracı var. İkisi de ticari ürünler, yani para ile satılıyorlar ve

ikisinin de desteği çok iyi. Bunlar :

 

Report Builder : http://www.digital-metaphors.com/

 

Gerçekten çok iyi bir raporlama aracı. Yıllar boyu yapılan anketlerde uzak ara hep birinciliği alıyor.

Çok iyi bir teknik desteği var. Verdiğiniz paraya değecek bir ürün.

 

Fast Report : www.fastreport.ru

 

Bu raporlama aracı da çok iyi. Çok iyi bir teknik desteği var ve fiyatı biraz daha uygun.

 

Her ikisi de güzel araçlar. İkisininde deneme sürümlerini sitelerinden indirip deneyebilirsiniz.

 

 

Bedava Raporlama Araçları

 

Free Report : www.fastreport.ru

 

Bu da fast report'u üreten firmanın bedava ve source kodu ile dağıttığı bir raporlama aracı.

Fast Report kadar olmasa da gayet iyi. Qr'den bıktım diyenlere

 

ZReport : www.torry.net

 

ZReport'ta yine bedava ve source kod ile dağıtılan, Dos modunda hızlı baskı yapmak için özel bir

raporlama aracı. Yazan kişinin web sayfası yok. Ancak torry'den arattırıp indirebilirsiniz.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

Seri portlara erişim

 

Seri portlarla haberleşmek için bedava bir bileşen olan TurboPower Async Pro'yu kullanabilirsiniz.

Detaylar ve link için 3. Parti Bileşenler bölümündeki TurboPower makalesine bakınız.

 

-----------------------------------------------------------------------------------------------------------

 

 

Programı parametre ile açmak

 

Bu iş için ParamCount ve ParamStr'yi kullanabilirsiniz.

 

ParamCount : verilen parametre sayısını

ParamStr(x) : verilen parametreyi döndürür.

 

0 : exe'nin kendisini (path'i ile birlikte) döndürür.

1 : birinci parametreyi döndürür

2 : ikinci parametreyi döndürür ...

 

ana formun OnShow olayına aşağıdaki gibi bir kod yazmalısınız.

 

 

if ParamCount<> 1 then {eğer parametre verilmemişse veya birden fazla ise kapat}

  Close; {bu iki satır seçimlik, istersen yazmayabilirsin}

 

if ParamStr(1) = '0' then // parametre olarak 0 verilmişse

  {şunları şunları yap}

else

if ParamStr(1) = '1' then // parametre olarak 1 verilmişse

  {şunları şunları yap}

 

QuickReport'ta toplam sayfa sayısını hesaplama

 

Qr'nin Prepare metodunu kullanırsanız, rapor önizleme açılmadan ve yazdırılmadan oluşturulur.

Prepare ile raporu oluşturduktan sonra QrPrinter.PageCount ile sayfa sayısını alabilirsiniz. Örnek kod :

 

QuickRep1.Prepare;

QuickRep1.ReportTitle := 'Bu rapor toplam : ' + IntToStr(QuickRep1.QRPrinter.PageCount) + ' sayfadır.';

QuickRep1.QRPrinter.Free;

QuickRep1.QRPrinter := nil;

QuickRep1.Preview;

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Programınızı koruma ve demo olarak dağıtma

 

Bazen programınızı potansiyel müşterilerinizin denemesi için demo olarak dağıtmak isteyebilirsiniz.

Bunlarda genel mantık belli bir süre veya belli bir sayıda programın çalışması, bu süre sonunda çalışmayı

kesmesidir. Artık bedava dağıtılan TurboPower OnGuard paketi ile dene-satın al türü uygulamalar oluşturabilirsiniz.

Kullanıcı kısıtlı sürümü kurduktan sonra, sizden şifre alıp, aynı exe dosya ile limitsiz kullanıma ulaşabilir.

Şifre kendi bilgisayarına özgü olduğu için başkalarına programı dağıtamaz.

 

Bu paketi indirip kurun. İndirme detayları için sitedeki 3. Parti bileşenler kısmındaki TurboPower

yazısına bakabilirsiniz.

 

Outlook Express'i dosya ekleyerek (attach) açma

 

uses kısmına mapi unitini ekleyin.

 

function SendMail(const Subject, Body, FileName,

                  SenderName, SenderEMail,

                  RecipientName, RecipientEMail: string): Integer;

var

  Message: TMapiMessage;

  lpSender, lpRecipient: TMapiRecipDesc;

  FileAttach: TMapiFileDesc;

 

  SM: TFNMapiSendMail;

  MAPIModule: HModule;

begin

  FillChar(Message, SizeOf(Message), 0);

  with Message do

  begin

    if (Subject <> '') then

      lpszSubject := PChar(Subject);

 

    if (Body <> '') then

      lpszNoteText := PChar(Body);

 

    if (SenderEmail <> '') then

    begin

      lpSender.ulRecipClass := MAPI_ORIG;

      if (SenderName = '') then

        lpSender.lpszName := PChar(SenderEMail)

      else

        lpSender.lpszName := PChar(SenderName);

      lpSender.lpszAddress := PChar(SenderEmail);

      lpSender.ulReserved := 0;

      lpSender.ulEIDSize := 0;

      lpSender.lpEntryID := nil;

      lpOriginator := @lpSender;

    end;

 

    if (RecipientEmail <> '') then

    begin

      lpRecipient.ulRecipClass := MAPI_TO;

      if (RecipientName = '') then

        lpRecipient.lpszName := PChar(RecipientEMail)

      else

        lpRecipient.lpszName := PChar(RecipientName);

      lpRecipient.lpszAddress := PChar(RecipientEmail);

      lpRecipient.ulReserved := 0;

      lpRecipient.ulEIDSize := 0;

      lpRecipient.lpEntryID := nil;

      nRecipCount := 1;

      lpRecips := @lpRecipient;

    end

    else

      lpRecips := nil;

 

    if (FileName = '') then

    begin

      nFileCount := 0;

      lpFiles := nil;

    end

    else

    begin

      FillChar(FileAttach, SizeOf(FileAttach), 0);

      FileAttach.nPosition := Cardinal($FFFFFFFF);

      FileAttach.lpszPathName := PChar(FileName);

 

      nFileCount := 1;

      lpFiles := @FileAttach;

    end;

  end;

 

  MAPIModule := LoadLibrary(PChar(MAPIDLL));

  if MAPIModule = 0 then

    Result := -1

  else

    try

      @SM := GetProcAddress(MAPIModule, 'MAPISendMail');

      if @SM <> nil then

      begin

        Result := SM(0, Application.Handle, Message, MAPI_DIALOG or

MAPI_LOGON_UI, 0);

      end

      else

        Result := 1;

    finally

      FreeLibrary(MAPIModule);

    end;

 

  if Result <> 0 then

    MessageDlg('Mesaj gönderilemedi (' + IntToStr(Result) + ').',

mtError, [mbOK], 0);

end;

 

Kullanımı : SendMail ( 'Deneme', '', c:deneme.txt, '', 'aaa@bbb.com', '', 'xyz@bbb.com' );

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

QuickReport'taki verileri text dosyaya kaydetmek

 

Qr ile hazır gelen export filtreleri var. Bunları kullanarak .txt, .csv (Excel) vs. aktarım yapabilirsiniz.

ASCII (txt) olanı raporun olduğu forma koy, Ön izleme ekranında Save butonuna bastığında (*.txt) de çıkacaktır artık. Koddan yapmak istersen :

 

QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create('c:rapor.txt'));

 

Auto-run (otomatik açılan) CD'ler oluşturmak

 

Bu olayın direk olarak Delphi ile alakası yok ama lazım olabilir. Notepad ile ismi "autorun.inf" olan

ve aşağıdaki gibi bir metni içeren bir text dosya oluşturun.

 

[autorun]

OPEN=myprogram.EXE

ICON=myicon.ICO

 

Burada Open kısmına çalışacak olan programın ismini, icon kısmına da CD'yi takınca gözükecek simgeyi

yazmalısınız.

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Windows Metafile'ı (.wmf) bitmap'e (.bmp) çevirme

 

procedure ConvertWMF2BMP (const WMFFileName, BMPFileName: TFileName);

var

  MetaFile : TMetafile;

  Bitmap : TBitmap;

begin

  Metafile := TMetaFile.Create;

  Bitmap := TBitmap.Create;

  try

    MetaFile.LoadFromFile(WMFFileName);

    with Bitmap do

    begin

      Height := Metafile.Height;

      Width  := Metafile.Width;

      Canvas.Draw(0, 0, MetaFile);

      SaveToFile(BMPFileName);

    end;

  finally

    Bitmap.Free;

    MetaFile.Free;

  end;

end;

 

 

Kullanımı : ConvertWMF2BMP('c:mypic.wmf', 'c:mypic.bmp')

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Bitmap'i (.bmp) Windows Metafile'a (.wmf') çevirme

 

procedure ConvertBMP2WMF (AImage: TImage; FileName: String);

var

 Wmf      : TMetafile;

 WmfCanvas: TMetafileCanvas;

begin

 Wmf := TMetafile.Create;

 try

   //Must set width + Height before creating the canvas

   Wmf.Width := AImage.Picture.Bitmap.Width;

   Wmf.Height := AImage.Picture.Bitmap.Height;

 

   WmfCanvas := TMetafileCanvas.Create(Wmf, 0);

   try

     WmfCanvas.Draw(0,0,AImage.Picture.Bitmap);

   finally

     WmfCanvas.Free;

   end;

 

   Wmf.SaveToFile(FileName);

 finally

  Wmf.Free;

 end;

end;

 

 

Kullanımı : ConvertBMP2WMF(Image1, 'c:mypic.wmf'); // bitmap resim image1'de yüklü.

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

TColor'u HTML Color'a çevirme

 

Bir ColorDialog, bir label ve bir buton koyup aşağıdaki kodu yazın.

 

procedure TForm1.Button1Click(Sender: TObject);

 

 function ColorToHtml(DColor:TColor):string;

 var

   tmpRGB : TColorRef;

 begin

   tmpRGB := ColorToRGB(DColor);

   Result:=Format('#%.2x%.2x%.2x',

                  [GetRValue(tmpRGB),

                   GetGValue(tmpRGB),

                   GetBValue(tmpRGB)]);

 end; {function ColorToHtml}

 

begin

 if ColorDialog1.Execute then

  Label1.Caption:=ColorToHtml(ColorDialog1.Color);

end;

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

Delphi 7'de Quick Report'u nasıl yüklerim

 

Quick Report, Delphi 7 ile birlikte dağıtılıyor, ancak kurulu olarak gelmiyor. Quick Report'u Delphi 7'ye

kurmak için :

 

1. Component menüsünden Install Packages komutunu verin.

2. Add butonuna tıklatın ve Delphi7Bin klasöründeki dclqrt70.bpl isimli dosyayı seçin.

 

SMS Göndermek

 

Bu iş için bir kaç yöntem var :

 

1. Dahili modemi olan bir cep telefonunu kablo ile bağlayıp göndermek. Normal SMS ücreti ödersiniz.

   Bu iş için TurboPower Async Pro veya TOxygenSMS bileşenini (http://www.oxygensoftware.com) kullanabilirsiniz.

 

2. Dahili SMS modemler var. Bunu bilgisayarınıza takıyorsunuz ve SIM kart takıyorsunuz üstüne.

   Yine SMS ücreti ödersiniz.

 

3. Internet üzerinden bedava SMS hizmeti veren siteleri http ile kullanarak gönderebilirsiniz ancak

   bunlar Türkiye için pek kullanışlı değil. Çok sık takip etmeniz lazım. Ya servis kapanıyor ya da

   firmalar (Turkcell, Telsim vb.) bu tip servislerden gelen mesajları iletmeyebiliyor.

 

4. Yüklü miktarda SMS gönderecekseniz ve iletilmesi önemli ise Turkcell ve Telsim gibi hizmet aldığınız

   firmalarla anlaşma yapıp, http kullanarak daha uygun fiyatlı SMS gönderebilirsiniz.

   Bu durumda firma size gönderme bilgilerini verecektir.

 

Az mesaj gönderiyorsanız 1 veya 2'yi, Şirket için ve yüklü miktarda SMS gidecekse 4'ü,kişisel bir çalışma ise 3'ü seçin.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Fax Gönderme ve Alma

 

Fax gönderme ve alma işini bedava olarak dağıtılan TurboPower Async Pro ile yapabilirsiniz.Examples klasöründe örnekleri var

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Barkod Bileşenleri

 

Artık bedava olarak dağıtılan Turbopower SysTools paketi içinde barkod bileşenleri var.

Barkod işlemleriniz için bu bileşenleri kullanabilirsiniz.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

USB Porttan Bilgi Okuma

 

1. USB/Serial dönüştürücüler var. Bunları kurduğunuz zaman USB potta, serial (COM) portlarda

yapabildiğin şeyleri yapabilirsin. Mesela http://www.ftdichip.com/

 

2. Turbopower Async Pro USB serial cihazlarla haberleşebiliyor. Onu kullanabilirsiniz.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

ICQ'ya Mesaj Gönderme

 

Turbopower iPro (Internet Pro) paketi içinde pager bileşenleri vardı. Bu bileşen ile mesaj atabilirsiniz.

 

 

-----------------------------------------------------------------------------------------------------------

 

 

Office XP Tarzı Menüler Oluşturmak

 

1. Güzel bir menü bileşeni olan Toolbar 2000 ve eklentisi TBX ile de yapabilirsiniz.

İkisi de bedava. www.jrsoftware.org

2. XP menu bileşeni ile yapabilirsiniz. O da bedava. Normal menu ve formlarla tasarımı yapıp,

bu bileşeni forma koyduğunuz anda çalışma anında herşey XP tarzı oluyor.

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Show ile ShowModal Arasındaki Fark

 

Show ile açarsanız formu kapatmadan başka formlara ulaşabilirsiniz, mesela ana form.

Ama ShowModal ile açarsanız, arka planda kalan diğer formlara ulaşamazsınız.

 

Netmaster Paketinde Yer Alan NMSMTP Bileşenini Delphi 7'de Bulamıyorum?

 

Netmaster paketi artık Delphi ile dağıtılmıyor ve Delphi 7 ile de gelmiyor. Yeni kullanacaklar için,

ileriye doğru sıkıntı olmaması için Indy kullanmanızı öneririm. Yarın birgün Delphi'nizi yenilerseniz,

kodları değiştirmeniz gerekmez.

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

.mp3 Dosyalarını Çalma

 

Windows'un çalabildiği tüm ses dosyalarını System tabındaki MediaPlayer bileşeni ile çalabilirsiniz.

Ayrıca PlaySound API'si ile de çalma işlemini gerçekleştirebilirsiniz.

 

Ağ üzerinde Mesaj Gönderme (net send, winpopup gibi)

 

Windows işletim sistemlerinde ağ üzerindeki bilgisayarlar birbirlerine mesaj atabilirler.

Windows NT/2000/XP'de bunun için "net send" komutu kullanılır. Windows 9x'te ise Winpopup isimli

program kullanılır.

 

Delphi'de yazacağınız program içersiniden bu tarz mesaj atmak için, bedava olarak dağıtılan

TurboPower SysTools paketi içerisindeki stNetMessage isimli bileşeni kullanabilirsiniz.

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Farklı Ekran Çözünürlüklerinde Formların Düzgün Gözükmesi

 

Align ve Anchors özelliklerini kullanarak formlarınızın farklı ekran çözünürlüklerinde en iyi şekilde

görünmesini sağlayabilirsiniz. Form üzerine birkaç bileşen koyup, bu özellikleri değiştirerek görsel

 olarak olayı anlayabilirsiniz.

 

Align : bileşenin duracağı yeri belirler. Mesela bir panelin Align özelliğini alBottom verirseniz,

pencereyi naparsanız yapın, panel hep ekranın altında kalır.

 

Anchors : bileşenin hangi kenara göre kendini ayarlayacağını belirler. Mesela sadece [akRight] derseniz,

sağ kenara göre aradaki uzaklık sabit kalacak şekilde kendini ayarlar. Mesela sağ kenardan 100

 birim uzakta ise, formu büyütünce ve küçültünce yine sağ kenardan 100 birim uzakta kalır.

 

 

-----------------------------------------------------------------------------------------------------------

 

 

System.pas not found Hatası

 

Delphi'de programı derlemek için gerekli olan unitlerin Library Path'te tanımlı olması gerekir.

 Delphi uniti proje klasöründe bulamazsa bu klasörlere bakarak uniti bulur ve programı derler.

 

Bazen bu Library Path tanımı silinebiliyor. Buna da genellikle bozuk ayarlanmış bileşenleri kurmak

neden oluyor. Delphi'nin eski sürümlerinde eğer bu Library Path tanımı çok uzunsa yine problem çıkıyordu.

Bunu sonraki sürümlerde düzelttiler.

 

Bu hatayı düzeltmek için ilgili unitin bulunduğu klasörleri Library Path'e eklemeniz gerekir.

Örneğin system.pas not found hatası almışsanız :

 

1. Diskinizde "system.dcu" dosyasını aratın ve bulunduğu klasörü tespit edin.

2. Tools -> Environment Options komutunu verin.

3. Library sekmesine geçin.

4. Library Path'in yanındaki ... butonuna tıklatın.

5. Açılan pencerede yine ... butonuna basıp, system.dcu dosyasının bulunduğu klasörü seçin.

6. Add butonuna tıklatıp klasörü listeye ekleyin.

7. OK'leyerek pencereleri kapatın.

 

Bu hatanın önüne geçmek içinde birkaç önerimiz var :

 

1. Her önünüze gelen bileşeni yüklemeyin. Bozuk bileşenler Delphinizin düzenini ciddi manada bozabilir.

2. Yüklediğiniz ve kullanmadığınız bileşenler varsa silin ve klasörünü Library Path'ten kaldırın.

3. Bileşen kurmadan önce Library Path bilgisini copy-paste ile bir text dosyaya kaydedin.

 Problem çıkarsa, tekrar copy-paste ile yapıştırsınız, tek tek seçmek için uğraşmazsınız.

4. $Delphi alias'ını kullanabilirsiniz. Bu Library Path'te kullanabileceğiniz geçerli bir yazımdır ve

Delphi klasörünü gösterir. Yani $Delphi = C:Program FilesBorlandDelphi7'dir. Tabi bu kurduğunuz klasöre

göre değişebilir.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Banker (parasal) Yuvarlaması

 

Parasal değerlerde bazen normal yuvarlama yerine 3-4 basamak birden yuvarlama yapmanız gerekebilir.

Mesela 15.557.850 TL tutan bir ücreti 100 binlik bir hassasiyet ile yuvarlayarak 15.600.000 TL yapmak

isteyebilirsiniz. İşte bunu RoundTo fonksiyonu ile yapabilirsiniz

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

Ekranları XP Görünümlü Yapmak

 

Delphi 7 içinde XP Manifest diye bir component var. Onu ana forma koyarsanız herşey XP görünümü çıkar.

XP Manifest'in herhangi bir ayarı yok. Bileşeni ana forma koyun. Programı Windows XP'de çalıştırırsanız,

program XP arayüzü ile açılır. Eğer diğer işletim sistemlerinde çalıştırırsanız, normal arayüzle çalışır.

 

Eğer daha önceki bir Delphi sürümü kullanıyorsanız, bedava olarak dağıtılan XP Menu isimli bileşen ile bu

işi yapabilirsiniz : www.torry.net ten indirebilirsiniz.

 

Delphi'de zip Sıkıştırma Formatını Kullanma

 

Turbopower Abbrevia ile zip, Microsoft CAB, tar ve gzip formatlarını kullanabilirsiniz.

 

.exe Dosyaların Boyutunu Küçültmek

 

Eğer sık sık program güncelliyorsanız ve bunuda internet gibi bir ortamdan dağıtıyorsanız .exe

dosyanın boyutu bazen sıkıntı olabilir. .exe dosyanın boyutunu %99'lara varan oranda küçültme için

.bpl'leri kullanabilirsiniz. Bir denememde 4 MB'lık bir dosyayı 40 KB'ye düşürdü.

 

Project - Options - Packages kısmındaki Built with runtime packages seçeneğini işaretleyin ve

bu şekilde derleyin. Bir de bu seçeneğin hemen altında ismi yazan bpl'leri programı yüklediğiniz

bilgisayarın WindowsSystem32 klasörüne bir sefer kopyalamanız yeterli.

 

QuickReport'ta sayfaların altına sayfa numarasının yazdırılması

 

1. Eğer sadece sayfa numarasının gösterilmesini istiyorsanız QrSysData isimli bileşen ile yapabilirsiniz.

Bu bileşeni Qr üzerine koyun ve Data özelliğinden qrsPageNumber'ı seçin.

 

2. Eğer sayfa numaralarını sayfa/toplam sayfa sayısı şeklinde yazdırmak istiyorsanız,

sayfa numarasını yazdırmak için yine QrSysData'yı kullanın. Yanına bir QrLabel koyup,

raporu yazdırmadan önce toplam sayfa sayısını hesaplatıp, başına / işaretini de koyarak yazdırın.

Toplam sayfa sayısını hesaplatmakla ilgili kod bu sayfada yukarlarda var.

 

Delphi - .....................................

 

delphi cok yarali kodlar-ipuclari____ve cok fazla sayıda

//bende yeni yeni delphi ogrenmeye basladim ve buldugum dokumanlari sizlerle

//paylasmak istedim.maalesef tamamen c/p ama onemli olan dokumanlarin artmasi

 

Açılış ekranı (Splash Form) oluşturma

 

Açılış ekranı için bir form oluşturun. Formun BorderStyle özelliğini bsNone yapın.

 Project Options kısmından formu Auto-Create değil, Avaible forms yapın. Daha sonra Project->View Source

 ile proje dosyanıza(.dpr uzantılı) aşağıdaki kodları ekleyin.

 

begin

 SplashForm := TSplashScreen.Create(Application); //bu 3 satır eklendi. Formu oluştur

 SplashForm.Show;                                 //formu göster

 SplashForm.Update;                               //formu yenile

 

 Application.Initialize;

 Application.Title := 'Application Title';

 Application.CreateForm(TForm1, Form1);

 

 SplashForm.Hide;                                 //bu 2 satır eklendi. Formu gizle

 SplashForm.Free;                                 //Formu yok et

 

 Application.Run;

end.

 

 

 

---------------------------------------------------------------------------------------------------------

 

 

 

 

3 boyutlu yazı

 

3 boyutlu yazı yazmak için piyasada bir sürü bileşen bulabilirsiniz.

Ancak bu işi kendinizde hem de tek satır kod yazmadan yapabilirsiniz. Bunun için;

 

    1. Form üzerine bir label koyun ve caption kısmına istediğiniz yazıyı yazın.

    2. Sonra bu label üzerine tıklayın ve Edit menüsünden Copy komutunu verin.

    3. Sonra form üzerinde bir yere tıklayın Edit menüsünde Paste komutunu verin ve bu label'ın Transparent

     özelliğini  True yapın. Left ve Top özelliklerini ilk label'dan ikişer eksik verin.

 

3 boyutlu yazımız hazır. Label'ların renkleriyle ve yerleriyle oynayarak çeşitli efektler verebilirsiniz.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Türkçe Mesajlar

 

Delphinin Professional ve Client/Server versiyonlarına sahipseniz, uygulamanızın verdiği mesajları

Türkçeleştirebilirsiniz. Mesela MessageDlg fonksiyonuyla gösterdiğiniz mesajların başlıklarını ve

düğmelerin başlıklarını değiştirebilirsiniz. Sonra "Invalid Date" gibi bir hata mesajı yerine

"Geçersiz tarih, lütfen girdiğiniz tarihi kontrol edin!" gibi mesaj verdirebilirsiniz.

 

Bunun için Delphi'nin Source kodunda yer alan consts.pas (...DelphiSourceVcl) ve  sysconst.pas (...DelphiSourceRtlSys) dosyalarını Delphi ile açın ve mesajları Türkçeleştirin.

 Sonra bu dosyaları derleyin. Yalnız biraz dikkatli olmalısınız ve orjinal dosyaların mutlaka yedeğini alın.

 

Derleme sonucunda oluşan consts.dcu ve sysconst.dcu dosyalarını Lib (...DelphiLib) ve Slib (...DelphiSlib) klasörlerine kopyalayın.

Yine orjinal dosyaların birer yedeğini almanız menfaatiniz icabıdır. Artık mesajlarınız değiştirdiğiniz şekilde çıkacaktır.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

Delphi'nin Süprizleri

 

Help menüsünden About kısmına girin. Alt tuşuna basarak aşağıdakileri yazın.

 

Alt+TEAM

Alt+DEVELOPERS

Alt+QUALITY (Sadece Delphi 3 ve 4'ün Client/Server versiyonlarında)

Alt+AND (SAdece Delphi 1'de)

Alt+CHUCK

Alt+VERSION (Sadece Delphi 2'de)

 

Database Desktop'tada Help menüsünden About kısmına girin ve delphi yazın.

 

Quick Report'ta preview ekranında simgeler gözükmüyor

 

Bu sisteminizde bulunan Comctl32.dll dosyasının eski olmasından kaynaklanıyor.

Eğer bu dosyayı yenilerseniz hata düzelecektir. Bu dosyayı Delphi CD'sinin "InfoUpdates" klasörü altında bulabilirsiniz.

 Ayrıca aşağıdaki linkten Microsoft'un sitesinden de dosyayı çekebilirsiniz.

 

ftp://ftp.microsoft.com/softlib/mslfiles/40comupd.exe

 

Programs (Programlar) altındaki grupların listesi

 

Form üzerine bir tane listbox, bir tane Button ve bir tane de DdeClientConv bileşeni koyun.

DdeClientConv bileşeninin DDEService ve DDETopic özelliklerini "Progman" (tırnaklar yok) olarak değiştirin ve aşağıdaki kodu yazın.

 

procedure TForm1.Button1Click(Sender: TObject);

var

  P: PChar;

begin

  ListBox1.Items.clear;

  P := DDEClientConv1.RequestData('Groups');

  ListBox1.Items.SetText(P);

  StrDispose(P);

end;

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

Hint'leriniz ekranda daha uzun süre kalsın

 

Formunuzun OnCreate olayına aşağıdaki kodu yazın. Buradaki değer milisaniye cinsindendir.

1 saniye=1000 milisaniye.

 

Application.HintHidePause := 4000;

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Kayıtlarınızı Microsoft Excel dosyasına kaydedin

 

1. YOL : Zaman zaman veritabanlarınızdaki veya programınızdaki kayıtları Excel dosyasına aktarmanız

gerekebilir. Bu iş için *.csv dosyasını kullanabilirsiniz. Kayıtların arasına noktalı virgül ( ; ) koyarak

 uzantısı csv olan bir text dosyasına kaydedin. Dosyanın üstüne çift tıkladığınızda Excel'de açılacaktır.

 

Mesela No, Ad, Soyaddan oluşan bir tabloyu Excel'e aktarmak istiyorsunuz. Kayıtlar şöyle olmalıdır.

 

1;Mustafaimşek

2;Ahmet;Savaş

3;Buiş;bukadar

 

2. YOL : 3. parti grid bileşenlerinin çoğu Excel'e veri aktarma özelliğine sahiptir.

Bunlardan birini kullanarak verilerinizi Excel'e aktarabilirsiniz.

Piyasadaki en iyi grid bileşeni olan Developer Express Quantum Grid bileşeni,

bilgisayarınızda Excel olmasa dahi verilerinizi Excel dosyası olarak kaydedebilimektedir.

 

Delphi'yi tamamen kaldırıp sıfırdan kurmak

 

Delphi'yi komple silip sıfırdan kurmak için;

 

1. Önce tüm projelerinizi yedekleyin.

2. Eğer BDE'de alias kullanıyorsanız, idapi32.cfg dosyasını yedekleyin.

3. Denetim Masası Program Ekle/Kaldır'dan Delphi'yi kaldırın.

4. Geride kalan Delphi klasörünü sistemden silin.

5. Eğer Windows2000 ve Delphi 6 kullanıyorsanız, Delphi 6 CD'sindeki "D6RegClean.exe" programını çalışıtırın.

6. Delphi'yi CD'sinden yeniden kurun.

7. Eğer idapi32.cfg dosyasını yedeklemişseniz, yeni dosyanın üzerine kopyalayın.

8. Eğer 3. parti bileşen kullanıyorsanız, onları kurun.

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

Team Source nedir?

 

Team Source, birlikte yazılım geliştiren bir grubun günlük iş akışını yönetmelerine yardımcı olan bir araçtır.

 

Programımın simgesi (icon) yanlış gözüküyor

 

Windows Explorer ve kısayol'da programınızın simgesi yanlış gözüküyor, ama taskbar'da ve ALT+TAB ile

açılan listede düzgün gözüküyor.

Delphi'de programınızın simgesi res uzantılı bir dosyada tutulur ve resource'un ismi MAINICON'dur.

Ancak eğer bu kaynak dosyasına birden fazla simge eklerseniz, Windows kısayollarda ve Windows Explorer'da,

Exe dosyadaki ilk simgeyi kullandığında simge yanlış gözükebilir. Simgeler exe dosyaya alfabetik sırada

bağlanır. Ek simgelerin resource ismi M harfinden sonraki bir harfla başlarsa, herhangi bir sorun

çıkmayacaktır.

 

 

 

 

-----------------------------------------------------------------------------------------------------------

 

 

 

 

 

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol