2. 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
3. Delphi 7 ve üzeri sürümlerinde geliştirdiği
özellik sayesinde URL üzerinden indirme işlemi
yapabiliyor ve bu işlemin ilerlemesi izletebiliyor.
4. 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) ;
5. 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.
6. 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;
7. Bu bölümde delphi programını kullanarak dosya açma ve
dosyaya kaydetme işlemelerini gerçekleştireceğiz.
8. Aktif dizini değiştirmek için ;
Chdir(Klasör_Yolu);
Aşağıdaki ki gibi bir kod sayesinde aktif dizin C:WinNtSystem32 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:WinNtSystem32’); // Aktif dizini değiştir
end;
9. 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);
10. 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);
11. 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);
12. 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:WINDOWSMediachimes.wav', 0, SND_ASYNC or
SND_FILENAME or SND_NODEFAULT);
13. Bu işlem sayesinde delphi xe5 programı kullanılarak
bilgisayarınız üzerinde takılı olan web kameradan görüntü
alabileceksiniz.
14. 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
15. // 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;
16. 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;
17. unit MD5;
interface
type
Dizi= Array of integer;
function MD_5(str: string): string;
implementation
function rhex(num: integer): string;
var
str,hex_chr: string;
j: integer;
begin
hex_chr:='0123456789abcdef';
str:=";
for j:=0 to 3 do
str:=str+hex_chr[((num shr (j*8+4)) and $F)+1]+hex_chr[((num shr (j*8)) and
$F)+1];
Result:=str;
end;
18. function str2blks_MD5(str: string): Dizi;
var
nblk: integer;
blks: Dizi;
i: integer;
begin
nblk:=((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 do
blks[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;
var
lsw,msw: integer;
begin
lsw:=(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;
19. function rol(num,cnt: integer): integer;
begin
Result:=(num shl cnt) or (num shr (32 - cnt));
end;
function cmn(q, a, b, x, s, t: integer): integer;
begin
Result:= add(rol(add(add(a, q), add(x, t)), s), b);
end;
function ff(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= 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;
Begin
Result:= cmn((b and d) or (c and (not d)), a, b, x, s, t);
end;
20. function hh(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn(b xor c xor d, a, b, x, s, t);
end;
function ii(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn(c xor (b or (not d)), a, b, x, s, t);
end;
function MD_5(str: string): string;
var
x: dizi;
a,b,c,d,olda,oldb,oldc,oldd: integer;
i: integer;
begin
x:= str2blks_MD5(str);
a:= 1732584193;
b:= -271733879;
c:= -1732584194;
d:= 271733878;
21. 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);
22. 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