Category Archives: Delphi

Delphi jpg resim boyutlandırma

bmp_to_jpg_delphi

Merhaba arkadaşlar,

Aşağıda yer alan BoyutlandırJpg fonksiyonu jpeg resmi, genişlik ve yükseklik olmak üzere 3 parametre alır. Gelen jpeg resmini, genişlik ve yükseklik değerine göre boyutlandırır geriye bu yeni boyutlu jpeg resmini döndürür.

function BoyutlandirJpg(degisecekjpg:TJPEGImage;width:integer;height:integer):TJPEGImage;
var
bmp : TBitmap;
r : TRect;
begin
bmp := TBitmap.Create;
try
r := Rect(0, 0, width, height);
bmp.Width := r.Right;
bmp.Height := r.Bottom;
bmp.Canvas.StretchDraw(r, degisecekjpg);
degisecekjpg.Assign(bmp);
//save it
BoyutlandirJpg:=degisecekjpg;
finally
bmp.Free;
end;
end;



Delphi bitmap resmi jpeg formatında kaydetme

bmp_to_jpg_delphi

var
vJpg: TJpegImage;
vBmp: TBitmap;

begin
// boş bir bitmap oluştur

vBmp := TBitmap.Create;
try
// vBmp nesnesi ya dosyadan okunur ya da çizilir
CaptureScreen(vBmp); // “hasandedeoglu.com/delphi-ekran-goruntusu-alma/” adresindeki prosedür
// Jpg resim nesnesi oluşturur
vJpg := TJpegImage.Create;
try
vJpg.Assign(vBmp); //bmp nesnesi jpg’e aktarıldı
// resim sıkıştırma kalitesi orijinali 70tir
vJpg.CompressionQuality := 60;
// jpg formatında resim kaydedildi
vJpg.SaveToFile(‘hasandedeoglu.jpg’);
finally
vJpg.Free; //jpg resim nesnesi yok edildi
end;
finally
vBmp.Free; // bitmap nesnesi yok edildi
end;
end;



Delphi ekran görüntüsü alma

delphi_screen_capture

Merhaba arkadaşlar,

Aşağıda yer alan CaptureScreen prosedürü ile ekran görüntüsü alabilirsiniz. Gerekli açıklamalar açıklama satırlarında yazılmıştır

procedure CaptureScreen(ABitmap: TBitmap);
var
vDesktopDC: HDC; // Masaüstü penceresinin aygıt içerik tanıtıcısı saklamak için değişken
bmp : TBitmap;
r : TRect;

begin
// mevcut masaüstü penceresinin aygıt içerik tanıtıcısını al
vDesktopDC := GetWindowDC(GetDesktopWindow);
try
// Tbitmap parametresi ile oluşturulacak resmin piksel kalitesi ve boyutları ayarlanıyor
ABitmap.PixelFormat := pf24bit;
ABitmap.Height := Screen.Height;
ABitmap.Width := Screen.Width;
// ABitmap içine masaüstünün resmini çizer
BitBlt(ABitmap.Canvas.Handle, 0, 0, ABitmap.Width, ABitmap.Height, vDesktopDC, 0, 0,SRCCOPY);
finally
// Bunun masaüstü aygıtı ile yapılmış olduğunun işareti
ReleaseDC(GetDesktopWindow, vDesktopDC);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
vBmp: TBitmap;

begin
// boş bir bitmap oluşturduk
vBmp := TBitmap.Create;
try

CaptureScreen(vBmp);
vBmp.SaveToFile(“hasandedeoglu.bmp”); //programın exe dosyasının yanına ekran görüntüsünü kaydettik
finally
vBmp.Free; //vBmp nesnesini bellekten yok ettik
end;
end;



Delphi Sayısal mı Kontrolü

isinteger_delphi

Delphi de diğer bazı dillerde olduğu gibi (isint() – isinteger() vb.) girilen bir değerin sayısal olup olmadığını kontrol eden bir fonksiyon bulunmamaktadır. Bunun için bu kontrolün yapılacağı fonksiyonu kendimiz yazmamız gerekir. Aşağıda yer alan iki fonksiyon da kendisine verilen string ifadenin sayısal olup olmadığını kontrol eder. İkinci fonksiyon biraz daha farklı çalışır, gelen ifadeyi direkt olarak integer tip değişkene dönüştürmeyi dener eğer sistem hata verirse geriye false döndürür ve hatayı yok sayarak çalışmaya devam eder ancak sistem hata vermezse geriye true döndürür ve çalışmaya devam eder.

{1.}

function IsStrANumber(const S: string): Boolean;
var
P: PChar;
begin
P := PChar(S);
Result := False;
while P^ <> #0 do
begin
if not (P^ in [‘0’..’9′]) then Exit;
Inc(P);
end;
Result := True;
end;

{2.}

function IsStrANumber(const S: string): Boolean;
begin
Result := True;
try
StrToInt(S);
except
Result := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsStrANumber(edit1.Text) = True then
ShowMessage(‘Girilen ifade sadece sayısal ifadeler içeriyor!’);
end;



Delphi Stringi (Metni) Diziye Bölme – Split to Array

delphi_split_to_array

Aşağıdaki kod bloğu ile string ifadeyi istediğiniz karakterlerden bölerek diziye atabilirsiniz. Aşağıdaki örnek “hasan:hasandedeoglu.com:bilisim teknoloji:lerine dair sohbetler” metnini 4 elemanlı bir diziye bölecek ve elemanları “hasan”, “hasandedeoglu.com”, “bilisim teknoloji”, “lerine dair sohbetler” olacaktır.

program Project1;

{$APPTYPE CONSOLE}

uses
Classes;

var
List: TStrings;
begin
List := TStringList.Create;
try
ExtractStrings([‘:’], [], PChar(‘hasan:hasadedeoglu.com:bilisim teknoloji:lerine dair sohbetler’), List);
WriteLn(List.Text);
ReadLn;
finally
List.Free;
end;
end.

Liste elemanları istenilen diziyi ifade edecektir:

List[0] = ‘hasan’
List[1] = ‘hasandedeoglu.com’
List[2] = ‘bilisim teknoloji’
List[3] = ‘lerine dair sohbetler’




Delphi Text Dosyası İşlemleri

Delphi Text Dosyasi

Merhaba,

Kullanacağımız kütüphane FileCtrl kütüphanesidir
Uses FileCtrl ; 

Aşağıda yer alan NewTxt prosedürü C:\ek.txt yoluna içinde “hasandedeoglu.com – bilisim teknolojilerine dair sohbetler…” yazılı olan bir text dosyası kaydeder. ek.txt dosyası var ise üzerine yazar
procedure NewTxt;

var
f: Textfile;
begin
AssignFile(f, ‘c:\ek.txt’); {Dosya atandı}
ReWrite(f); {ek.txt isminde yeni bir dosya oluşturuldu}
Writeln(f, ‘hasandedeoglu.com – bilisim teknolojilerine dair sohbetler…’);
Closefile(f); {F yani ek.txt kapatıldı}
end;

Aşağıda yer alan OpenTxt prosedürü var olan bir text dosyasını açar ve üzerinde değişiklik yapar
procedure OpenTxt;
var
F: Textfile;
begin
AssignFile(f, ‘c:\ek.txt’); {Dosya atandı}
Append(f); {Dosyayı düzenleme amaçlı açtı}
Writeln(f, ‘hasandedeoglu.com – bilisim teknolojilerine dair sohbetler…’);
Closefile(f); {F dosyası kapatıldı}
end;

Aşağıda yer alan ReadTxt prosedürü var olan bir text dosyasını açar ve ilk satırını gösterir
procedure ReadTxt;
var
F: Textfile;
str: string;
begin
AssignFile(f, ‘c:\ek.txt’); {Dosya atandı}
Reset(f); {Dosyayı okuma amaçlı açtı}
Readln(f, str);
ShowMessage(‘Text dosyasının ilk satırı:’ + str);
Closefile(f); {F dosyasını kapat}
end;