delphi ileri seviye programlama bölmü 3

Post on 23-Jun-2015

411 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DELPHİ XE5 İLERİ SEVİYE PROGRAMLAMA

İÇERİK

Dosya İndirme (Http, Ftp)  Klasör ve Dosya Arşivleme İşlemleri  Ses Dosyaları Oynatma  Kameradan Görüntü Alma İşlemleri  Veri Şifreleme Örnekleri (md5, sha1) Program Ayarlarını Şifreleme 

DOSYA İNDİRME

Delphi 7 ve üzeri sürümlerinde geliştirdiği özellik sayesinde URL üzerinden indirme işlemi yapabiliyor ve bu işlemin ilerlemesi izletebiliyor.

Dosya indirme durumunu bir progressbar ile görsel olarak izlemek yada indirme aşamalarını takip etmek için bu TDownloadURL nesnesinin bir olayı olan OnDownloadProgress metodu için sunulan hazır metoduda private olarak declare etmeliyiz.

Ve private bloğuna aşağıda ki kod satırını ekliyoruz;

procedure URL_OnDownloadProgress(Sender; TDownLoadURL;Progress, ProgressMax: Cardinal;StatusCode: TURLDownloadStatus;StatusText: String; var Cancel: Boolean) ;

Ve implementation altına URL_OnDownloadProgress prosedürünü şu şekilde oluşturalım;

procedure URL_OnDownloadProgress;begin   ProgressBar1.Max:= ProgressMax;   ProgressBar1.Position:= Progress;end;

Formumuza eklediğimiz bir progressbar olduğunu ve adınında Progressbar1 olduğunu varsayararak, oluşan metodumuz hazır.

Bir buton ekleyelim ve OnClick olayına şunu yazalım , 

 with TDownloadURL.Create(self) do   try     URL:='http://wwww.metincengel.com/dosya.zip'; //Indireceğimiz dosya URL si     FileName := 'c:\dosya.zip';//Nereye ve ne isimde indireceğimizi belirtiyoruz     OnDownloadProgress :=URL_OnDownloadProgress; // az önce oluşturduğumuz metodu , OnDownloadProgress olayı tetiklendiğinde çalışması için atamasını yaptık     ExecuteTarget(nil) ; //İndirme işlemini başlattık.       finally     Free;       end;  end;

KLASÖR VE DOSYA ARŞİVLEME İŞLEMLERİ

Bu bölümde delphi programını kullanarak dosya açma ve dosyaya kaydetme işlemelerini gerçekleştireceğiz.

Aktif dizini değiştirmek için ;

Chdir(Klasör_Yolu);

Aşağıdaki ki gibi bir kod sayesinde aktif dizin C:\WinNt\System32 olmaktadır. Bu aşamadan sonra dosyanızı sadece ismini belirterek çalıştırmanız (System32 içerisindeki) mümkün olacaktır. 

Procedure TForm1.Button1Click(Sender; Object); 

begin 

Chdir(‘C:\WinNt\System32’); // Aktif dizini değiştir 

end; 

Dosyayı kapatmak için;

CloseFile(Dosya_Yolu); 

Klasör oluşturmak için kullanılan bir fonksiyondur. Şayet belirtilen yerde klasörü başarıyla oluşturulursa geriye true değerini, oluşturmazsa da false değerini döndürecektir. 

CreateDir(Klasör_Yolu); 

Parametre ile belirtilen yoldaki dosyayı silmek için kullanılan bir fonksiyondur. Şayet silme işlemi başarılı bir şekilde gerçekleştiyse true değerini, aksi takdirde de false değerini döndürecektir. 

DeleteFile(Dosya_Yolu); 

Parametre ile belirtilen yolda klasörün var olup olmadığını kontrol eden fonksiyondur. Fonksiyondan true değerinin dönmesi, belirtilen yolda o klasörün var olduğu anlamını taşımaktadır.

DirectoryExists(Klasör_Yolu): 

 Parametre ile belirtilen sürücü içerisindeki boş alanı öğrenmek için kullanabileceğiniz bir fonksiyondur. Sürücü numaraları ve değerleri aşağıda verilmiştir.

DiskFree(Sürücü_Numarası);

Dosyanın oluşturma tarihini hesaplayabilen bir fonksiyondur.

FileAge(Dosya_Yolu);

Tek dosya değilde ( tüm txt uzantılı dosyalar veya vs. vs. ) tüm dosyalar listelenecek ise yani aynı isme ve özelliğe sahip diğer dosyaların da bulunması gerekiyorsa bu durumlarda kullanacağınız fonksiyondur.

findNext(Dosya); 

Parametresiz kullanılan bu fonksiyon sayesinde aktif çalışılan klasörün yolu öğrenebilir. 

GetCurrentDir; 

Parametre ile belirtilen yoldaki klasörü silme için kullanılan bir fonksiyondur. Dikkat edeceğiniz husus silinecek olan klasörün içinin boş olması gerektiğidir.

RemoveDir(Klasör_Yolu);

SES DOSYALARINI OYNATMA

Delphi xe5 programını kullanarak bilgisayarınız üzerindeki bir ses dosyasını dinleyebilirsiniz bunun için aşağıdaki kod satırını yazmanız yeterlidir.

PlaySound('C:\WINDOWS\Media\chimes.wav', 0, SND_ASYNC or SND_FILENAME or SND_NODEFAULT);

KAMERADAN GÖRÜNTÜ ALMA İŞLEMLERİ

Bu işlem sayesinde delphi xe5 programı kullanılarak bilgisayarınız üzerinde takılı olan web kameradan görüntü alabileceksiniz.

function CapOpenDriver : Boolean;

var

Retc : LongInt;

DriverIndex : Integer;

DriverStarted : boolean;

achDeviceName : array [0..80] of Char;

achDeviceVersion : array [0..100] of Char;

achFileName : array [0..255] of Char;

begin

Result := FALSE;

if gCapVideoArea = nil then exit;

Result := TRUE;

// Create the Video Capture Window

ghCapWnd := capCreateCaptureWindow( PChar('KruwoSoft'),

WS_CHILD or WS_VISIBLE, 0, 0,

gCapVideoArea.Width, gCapVideoArea.Height,

gCapVideoArea.Handle, 0);

if ghCapWnd <> 0 then

begin

// Install Status-Callback-Function

retc := capSetCallbackOnStatus(ghCapWnd, LongInt(0));

if retc <> 0 then

begin

retc := capSetCallbackOnStatus(ghCapWnd, LongInt(@StatusCallbackProc));

if retc <> 0 then

begin

// Open Installed Video Driver

DriverIndex := 0;

repeat

DriverStarted := CapInitDriver( DriverIndex );

if NOT DriverStarted then DriverIndex := DriverIndex + 1;

until (DriverStarted = TRUE) OR (DriverIndex >= MAXVIDDRIVERS);

// Keep Name of Video Driver

if capGetDriverDescription( DriverIndex,

achDeviceName, 80,

achDeviceVersion, 100 ) then

begin

gCapVideoDriverName := string(achDeviceName);

end;

// Set Capture FileName

StrPCopy(achFileName, gCapVideoFileName);

retc := capFileSetCaptureFile(ghCapWnd, LongInt(@achFileName));

if retc = 0 then

begin

showmessage(gCapVideoDriverName+': Error in capFileSetCaptureFile');

end;

exit;

end;

VERİ ŞİFRELEME İŞLEMLERİ

Kullanıcı giriş paneli yada benzeri güvenlik gerektiren işlemler yapılırken, kullanıcı isimlerinin ve şifrelerinin bulunduğu kısım farklı bir yöntemle kendi içinde şifrelenir bu şekilde dış tehditlere karşı korunmuş olur. Bunun için kullanılan en sık yöntem ise MD5 kodlamadır.

Şimdi size örnek bir md5 kodlama göstereceğim;

unit MD5;

interface

typeDizi= Array of integer;

function MD_5(str: string): string;

implementation

function rhex(num: integer): string;varstr,hex_chr: string;j: integer;beginhex_chr:='0123456789abcdef';str:=";for j:=0 to 3 dostr:=str+hex_chr[((num shr (j*8+4)) and $F)+1]+hex_chr[((num shr (j*8)) and $F)+1];Result:=str;end;

function str2blks_MD5(str: string): Dizi;varnblk: integer;blks: Dizi;i: integer;beginnblk:=((length(str)+8) shr 6)+1;SetLength(blks,nblk*16);for i:=0 to nblk*16-1 do blks[i]:=0;for i:=0 to length(str)-1 doblks[i shr 2]:=blks[i shr 2] or ((ord(str[i+1]) shl ((i mod 4)*8)));blks[i shr 2]:=blks[i shr 2] or ($80 shl ((i mod 4)*8));blks[nblk*16-2]:=length(str)*8;Result:=blks;end;function add(x,y: integer): integer;varlsw,msw: integer;beginlsw:=(x and $FFFF)+(y and $FFFF);msw:=(x shr 16)+(y shr 16)+(lsw shr 16);Result:=(msw shl 16) or (lsw and $FFFF);end;

function rol(num,cnt: integer): integer;

beginResult:=(num shl cnt) or (num shr (32 - cnt));end;

function cmn(q, a, b, x, s, t: integer): integer;beginResult:= add(rol(add(add(a, q), add(x, t)), s), b);end;

function ff(a, b, c, d, x, s, t: integer): integer;BeginResult:= cmn((b and c) or ((not b) and d), a, b, x, s, t);end;

function gg(a, b, c, d, x, s, t: integer): integer;BeginResult:= cmn((b and d) or (c and (not d)), a, b, x, s, t);end;

function hh(a, b, c, d, x, s, t: integer): integer;BeginResult:= cmn(b xor c xor d, a, b, x, s, t);end;

function ii(a, b, c, d, x, s, t: integer): integer;BeginResult:= cmn(c xor (b or (not d)), a, b, x, s, t);end;

function MD_5(str: string): string;varx: dizi;a,b,c,d,olda,oldb,oldc,oldd: integer;i: integer;beginx:= str2blks_MD5(str);a:= 1732584193;b:= -271733879;c:= -1732584194;d:= 271733878;

a := hh(a, b, c, d, x[i+ 5], 4 , -378558);d := hh(d, a, b, c, x[i+ 8], 11, -2022574463);c := hh(c, d, a, b, x[i+11], 16, 1839030562);b := hh(b, c, d, a, x[i+14], 23, -35309556);a := hh(a, b, c, d, x[i+ 1], 4 , -1530992060);d := hh(d, a, b, c, x[i+ 4], 11, 1272893353);c := hh(c, d, a, b, x[i+ 7], 16, -155497632);b := hh(b, c, d, a, x[i+10], 23, -1094730640);a := hh(a, b, c, d, x[i+13], 4 , 681279174);d := hh(d, a, b, c, x[i+ 0], 11, -358537222);c := hh(c, d, a, b, x[i+ 3], 16, -722521979);b := hh(b, c, d, a, x[i+ 6], 23, 76029189);a := hh(a, b, c, d, x[i+ 9], 4 , -640364487);d := hh(d, a, b, c, x[i+12], 11, -421815835);c := hh(c, d, a, b, x[i+15], 16, 530742520);b := hh(b, c, d, a, x[i+ 2], 23, -995338651);

a := ii(a, b, c, d, x[i+ 4], 6 , -145523070);d := ii(d, a, b, c, x[i+11], 10, -1120210379);c := ii(c, d, a, b, x[i+ 2], 15, 718787259);b := ii(b, c, d, a, x[i+ 9], 21, -343485551);

a := add(a, olda);b := add(b, oldb);c := add(c, oldc);d := add(d, oldd);

inc(i,16);end;Result:= rhex(a) + rhex(b) + rhex(c) + rhex(d);end;

end

SON

top related