Arşiv

Archive for Nisan 2010

delphi lisans hatası

Nisan 29, 2010 2 yorum

“Borland License information was found, but it is not valid for delphi
You can not run delphi without this information. “
hatasını verirse aşağıdaki işlemleri yaparak çözebilirsiniz.

1-) “C:\documents and settings\username\ .borland \registry.slm” dosyasını siliniz
2-) “C:\program files\borland\delphi7\bin\D7Reg.exe” çalıştırınız.
3-) D7Reg.exe kurulumu bitirdikten sonra Delphi7’yi çalıştırınız.

delphi uygulamayı başlangıca atma (Windows StartUp)

uses Registry;

procedure writeStartUp;
var
  fRegistry: TRegistry;
begin
  fRegistry:=TRegistry.Create;
  try
    // Geçerli kullanıcı için HKEY_CURRENT_USER
    // Bilgisayar için HKEY_LOCAL_MACHINE 
    fRegistry.RootKey := HKEY_CURRENT_USER;
    fRegistry.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
    fRegistry.WriteString('Uygulamam','C:\Project1.exe');
    fRegistry.CloseKey;
  finally
    fRegistry.Free;
  end;
end;
Kategoriler:Delphi

delphi procedure,function bildirimleri(overload,forward)

forward:
Bazı durumlarda bir procedür veya bir fonksiyonu çağırmadan önce o procedure/function varlığını derleyiciye bildirmemiz gerekir.Tanımlandığı yerden daha önce çağrılıyorsa Undeclared Identifier hatasını verir.Basit bir örnekle açıklarsak: iki procedürümüz olsun.(procedure d1, procedure d2)
procedure d1;
begin

end;
procedure d2;
begin

end;

Böyle bir tanımlamada d2 procedüründen d1 çağrılabilir ama d1 procedüründen d2 çağrılamaz.Bu sorunu çözmek için aşağıdaki şekilde tanımlama yaparak çözeriz.

procedure d2; forward;
procedure d1;
begin
d2;
end;
procedure d2;
begin
d1;
end;

overload : Overload olayına aynı procedure/funtion ‘da farklı parametreler girmemiz veya aynı olay için farklı sayıda parametre girmemiz gibi durumlar meydana geldiğinde ihtiyaç duyulur.
örnek tanımlama ise:

procedure appmessage(metin: string; adet: integer); overload
procedure appmessage(metin: string); overload

delphi convert bmptojpg

uses Jpeg,Graphics;

procedure Convert();
var 
  Bitmap  : TBitmap;
  JpegImg : TJpegImage;
begin                   
  Bitmap := TBitmap.Create;
  try
    Bitmap.LoadFromFile('c:\a.bmp');
    JpegImg := TJpegImage.Create;
    try
      JpegImg.Assign(Bitmap);
      JpegImg.SaveToFile('c:\a.jpg');
    finally
      JpegImg.Free;
    end;
  finally
    Bitmap.Free;
  end;
end;
Kategoriler:Delphi

delphi inifile kullanımı

Örnek ini dosyamız aşağıdaki gibi olsun:

[FORMLISTE]
GENEL_BASLIK=DENEMEE
GENEL_LOGO=Logo1.png
GENEL_ACILIS=1
FormCaption=Form1
[LISTE]
Kisi1=AD-SOYAD1
Kisi2=AD-SOYAD2
Kisi3=AD-SOYAD3
Kisi4=AD-SOYAD4
[Transfer]
Transfer_Onay=1
Transfer_Kisi_ID=2

Inifile işlemleri için basit bir örnek:

uses IniFiles;

procedure IniIslemleri();
var
  IniF: TIniFile;
begin
  IniF:=TIniFile.Create('c:\deneme.ini');
  try
  
    // Yazma İşlemi
    IniF.WriteString('FORMLISTE','FormCaption',Self.Caption);
    
    // Okuma İşlemi
    ShowMessage(IniF.ReadString('FORMLISTE','FormCaption','Bos Geldi'));
    
    // "FORMLISTE" başlığı altındaki genel tanımlamaları getirir.
    // Dönecek Değerler : GENEL_BASLIK,GENEL_LOGO,GENEL_ACILIS,FormCaption
    IniF.ReadSection('FORMLISTE',Listbox2.Items);
    
    // "Deneme.ini" içindeki genel başlıkları getirir.
    // Dönecek Değerler : FORMLISTE,LISTE,Transfer
    IniF.ReadSections(ListBox1.Items);
        
    // "FORMLISTE" başlığı altındaki genel tanımlamaları ve değerlerini getirir
    // Dönecek Değerler :
    // --------------------
    // GENEL_BASLIK=DENEMEE
    // GENEL_LOGO=Logo1.png
    // GENEL_ACILIS=1
    // FormCaption=Form1
    IniF.ReadSectionValues('FORMLISTE',ListBox3.Items);
    
    // "TRANSFER" başlığı altındaki Title1 değerini siler.
    IniF.DeleteKey('TRANSFER','Title1');
    
  finally
    IniF.Free;
  end;
end;
Kategoriler:Delphi

delphi xml kullanım örneği

XML kullanabilmemiz için XMLDocument nesnesi ile işlem yapmamız gerekiyor.Elimizdeki xml örneği aşağıdaki gibi olsun:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<channels>
  <channel>
    <item>
      <title>Title1</title>
      <description>desc1</description>
      <link>link1</link>
    </item>
    <item>
      <title>Title2</title>
      <description>desc2</description>
      <link>link2</link>
    </item>
    <item>
      <title>Title3</title>
      <description>desc3</description>
      <link>link3</link>
    </item>
  </channel>
</channels>

Aşağıdaki program da başlık.link ve açıklama alanını listbox’a atan basit bir örnektir.

procedure XMLOku;
var
   StartItemNode, ANode : IXMLNode;
   sTitle, sDesc, sLink : widestring;
begin
   XMLDocument1.Active:=False;
   XMLDocument1.FileName := 'c:\read.xml';
   XMLDocument1.Active:=True;
   StartItemNode := XMLDocument1.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');
   ANode := StartItemNode;
   repeat
     sTitle := UTF8Decode(ANode.ChildNodes['title'].Text);
     sLink  := UTF8Decode(ANode.ChildNodes['link'].Text);
     sDesc  := UTF8Decode(ANode.ChildNodes['description'].Text);
     ListBox1.Items.Add(sTitle+' - '+sLink +' - '+sDesc);
     ANode  := ANode.NextSibling;
   until ANode = nil;
end;

delphi blob alanki resmi bilgisayara kaydetme

Oracle blob alandaki resmi bilgisayara kayıt edebilmemiz için LOBLocator nesnesini kullanacağız.Oracle query nesnesi ile sql scripti çalıştırıldıktan sonra lobfield özelliği ile LOBLocator nesnesini set edeceğiz.LOBLocator nesnesi set edildikten sonra SaveToFile özelliği ile bilgisayara kayıt edeceğiz.

procedure LogoyuKaydet();
var
  oraclquery : TOracleQuery;
  aLob       : TLOBLocator;
begin
  oraclquery:=TOracleQuery.Create(nil);
  try
    oraclquery.Session:=OracleSession;
    oraclquery.SQL.Text:='select sabit_logo from sabitler';
    oraclquery.Execute;  
    aLob:=oraclquery.LOBField('sabit_logo');
    aLob.SaveToFile(ExtractFilePath(Application.ExeName)+'sabitlogo.jpg');
  finally
    oraclquery.Free;
  end;   
end;
Kategoriler:Delphi

delphi grid filter root

QGrid ‘te label ‘daki isme göre yada runtime’da istenilen bir string ‘ e göre filterelemesini istiyorsak filter root özelliğini kullanabiliriz.Filter root özelliği bilgiler çekildikten sonra istenilen string’e göre tekrar filtreleme yapar.Örneğin aşağıdaki örnek’te tüm sabit bilgiler çekildikten sonra kolon1 ‘ de gözüken verilerden sadece “Turkey” olanları listelenir.

TableView1.DataController.Filter.Clear;
TableView1.DataController.Filter.Root.BoolOperatorKind:=fboOr;
TableView1.DataController.Filter.Root.AddItem(TableView1Column1,foLike,'Turkey','');
TableView1.DataController.Filter.Active:=True;
Kategoriler:Delphi