Delphi

Delphi

Embarcadero Delphi ya da kısaca Delphi bir programlama dili ve konsol, web, masaüstü ve mobil uygulamalar için tümleşik geliştirme ortamı(SDK)dır. Delphi'nin derleyicileri, kendi Pascal dialekti olan Object Pascal'ı kullanarak Windows(x86 ve x64), Mac OS X (sadece 32-bit), iOS (32 ve 64-bit) ve Android için güçlü ve hızlı bir geliştirme ortamı sunar. Wikipedia

Delphi: Canvas does not allow drawing Hatası

"Canvas does not allow drawing" hatası tuval çizime izin vermiyor gibi bir anlam taşıyor. Tuval ressamların resimlerini çizdikleri yüzeye verilen ad burada ise programdaki...

Delphi: "Invalid argument to date encode" hatasını gidermek

TIdHttp içinde aniden peydahlanan bu sorun kodun ele aldığı tarih bilgisinin, daha doğrusu tarih formatının önceden varsayıldığı gibi olmamasından kaynaklanıyor. Aslında bu sorunun çözümü...

Delphi’de access violation hatalarını gidermek

Access violation hatası belleğin işlem yapılan konumunun okunamamasından veya yazılamamasından kaynaklanır. Hata mesajında hataya neden olan kodun segment ve ofset adresleri bildirildiğinden programcının hatanın yerini tespit etmesi zordur. Benzer sorunlar sıfıra bölme (zero division) ve yığın taşması (stack overflow) gerçekleştiğinde de olur.

Delphi programlarında bu tür sorunlara neden olan kod satırlarını tespit münkündür. Bunun için Project->Options...->Linker ekranındaki Map file ayarı Detailed olarak ayarlanır. Bundan sonra her derleme işleminde uzantısı map olan bir bellek harita dosyası oluşturur.

Bu dosyada program  kod satırlarınıa karşılık gelen makina kodlarının ofset adresleri yer alır. Böylece hatanın oluştuğu bellek adresinin hangi kod satırına karşılık geldiği bulunabilir.


Hatalı kod satırını daha düzgün ve ayrıntılı olarak raporlayabilmek için uLkStackTrace class'ını kullanabiliriz. uLkStackTrace Mozilla lisansıyla dağıtılan bir SourceForge.net projesi.

uLkStackTrace sınıfınınkullanıldığı örnek proje dosyasını aşağıdaki bağlantı ile indirebilirsiniz:



UnhandledExceptions_DelphiSourceCode.rar (~241KB)<


Örnek projede de görüleceği üzere, sınıfın kullanılmasından kısaca bahsetmek  gerekirse;
  • Uses bloğuna uLkStackTrace unit ismini ekleyin.
  • İstisnaları ekrana veya bir dosyaya rapor edecek bir prosedür hazırlayın.
  • LkExceptionReporter yordamına bu prosedürü atayın.
  • Rapor prosedürünü Form.Create'in başına yazmayı unutmayın.

IE (Internet Explorer)’ın Giriş Sayfası Kilidini Açmak

Bilgisayarınıza bulaşan Malware tabir edilen ve bilgisayarınızı tabiri caizse bir "mal"a çeviren zararlılar, IE (Internet Explorer)'ın giriş sayfasına kendi adresini yazar ve burayı kilitler....

Delphi’de Mutex Kontrolü (En doğru yöntem)

Mutex multithread programlarda çokça kullanılan bir mekanizma ve ayrıca hafıza nesnesinin adıdır. Mutex nesnesi tüm işletim sistemi genelinde geçerlidir ve bu Mutex'i oluşturan program...

Delphi’de Scroolbar’ı Kod ile Kontrol Etmek

Delphi'nin bir scrollbar'a (kaydırma çubuğu) sahip TMemo, TListBox, TStringGrid ve TListView gibi birçok nesnesi bulunmakta. Nesnenin içindeki elemanlar nesnenin yüksekliğine sığmadığında otomatik olarak dikey...

Türkçe karakterleri muadilleri ile değiştirmek

Metindeki Türkçe karakterleri en yakın karşılıklarına çevirmek için bu fonksiyon kullanılabilir.

Netbios (Windows Ağı) paylaşımlarını listelemek

Örnek programın ekran görüntüsü Dört yıl kadar önce üzerinde bazı değişiklikler yaptığım ağ paylaşımlarını listeleyen bir kod. Tüm işletim sistemlerinde düzgünce çalışıyor. Bunu özellikle söyledim çünkü bu kod 98 den XP ye geçişte oldukça zamanımı aldı, o zamanlarda delphi ile daha yeni çalışmaya başlamıştım. 98 den XP ye geçişte kodda bazı değişiklikller yapmak gerekti.

Delphi: Network Traffic Monitor

Network Traffic Monitor (NTM) yerel bilgisayardaki ağ bağdaştırıcılarının trafiğini miktarını anlık olarak izlemeye yarayan bir program. Gelen ve giden trafiğin anlık ve toplam değerlerini görebiliyorsunuz.Programın kaynak kodu:...
SysConst.dcu dosyasının izinlerini ayarlamak

Delphi’den Win32.Induc.A zararlısını temizliyoruz

Daha önce burada delphi'ye bulaşan Induc isimli virüsten bahsetmiştik. Virüs, eğer Delphi IDE'si yüklü ise kendini delphi'nin lib dizinindeki sysconst.dcu dosyasına ekliyor. Bu dosya...

Delphi’de düşük boyutlu program yazmak

Derlendiğinde 3.5KB 'lık çalıştırılabilir kod üreten deneysel bir çalışma. Program delphi IDE'si veya doğrudan Delphi kod derleyicisi (dcc32) kullanılarak derleniyor. Ana program kodunu ve üniteleri derlemek için bat dosyaları kullanılıyor.

Küçük boyutları elde etmek için IDE aracılığyla derlemekten kaçınılabilir, Delphi IDE si varsayılan derleme seçenekleri ile programa fazladan kod ve kontrol blokları ekler. Bu özellik programın çevikliğini artırırken diğer yandan çalıştırılabilir kodun belli ölçüde büyümesine ve yavaşlamasına neden olur.

Çoğu zaman programa dahil edilen yerel Delphi üniteleri de programın boyutunu artırır. Bir nesnenin kullanılmayan bazı özellik ve yordamlari da ana koda dahil olur. Birbirinden türeyen bazı nesnelerin yapısı  türedikleri sınıfa bağlı olarak uzun bir zincir oluşturabilir ve bu durum doğal olarak programın boyutunun artmasına neden olur. Bunun yerine örnek programda olduğu gibi en sade sınıfları ve nesneleri kendiniz hazırlayabilirsiniz. Aslında bu yöntem kalın uygulamalar hazırlarken pek uygulanabilir değildir.

Programın bellek kullanımını da derleyici direktiflerini kullanarak sınırlandırabilirsiniz.

Sanal Klavyeler Ne Kadar Güvenli?

Artık hemen hemen tüm interaktif bankacılık şubelerinde sanal klavye seçeneği mevcut. Keylogger adı verilen programlardan haberi olanlar sanal klavyelere neden ihtiyaç duyulduğu hakkında fikir yürütebilirler. Keylogger adı verilen programlar arka planda çalışarak kullanıcının bastığı tuşları kaydederler ve sahiplerine ulaştırılar.

Bu yazıda sanal klavyelerin keylogger ve benzeri tehditlere karşı neden yeterli olamayacağını kanıtlarıyla beraber açıklamaya çalışacağım. Yazımda bu tezi kanıtlamak için hazırladığım bir programın kaynak kodlarını da bulabilirsiniz. Program ile sanal klavye gibi popüler bir güvenlik katmanının ne kadar basit bir yolla atlatılabileceğini görmenizi istedim. Umarım suistimal edilmez.



Sanal Klavyelerin Gelişim Evreleri

Sanal klavyeler kullanıcı bilgilerini çalmak için tasarlanmış turuva yazılımlarına karşı bazı mutastyon evreleri geçirmek zorunda kalmışlardır. Aslında bu evreler turuva yazılımlarınkileri ile birebir aynıdır. Şöyleki;
  • Fare kordinatlarının kaydedilmesine karşı her tuş girişinden sonra sanal klavyedeki tuşlar rasgele karıştırılarak kordinatların kaydedilememesi sağlandı.
  • Turuva yazılımları tuşların karıştırıldığı klavyeler için fare imlecinin belli bir çapındaki bölgeyi her fare tıklamasında kaydederek tuş karıştırma önlemenin üstesinde geldi.
  • Buna karşı sanal klavyeler tuş basımı esnasında tuş etiketini * gibi semboller ile gizlemeye başladılar. Böylece tuş basımı esnasında kaydedilen resimdeki tuş gizlenmiş oldu.
  • Tuş karıştırma ve tuş gizleme yöntemleri beraber kullanılarak daha güvenli klavyeler oluşturulmaya çalışıldı. Buraya tıklayarak görebileceğiniz güvenlik incelemesinde açıklandığı gibi, turuva yazılımları çözümü ekran görüntüsünü avi (hareketli görüntü) formatında kaydederek buldu.

    (Bu incelemede turuva yazılımı bankanın sayfası açıldığında farenin yakın çevresini bir dizine avi olarak kaydediyor ve sahibinin dinamik (no-ip.com) adresli FTP sunucusundaki bir dizine yüklüyor. Bu konunun ayrıntılı olarak ele alındığı "New Technique Against Virtual Keyboards" isimli makale okunmaya değer)


Delphi 2007 for PHP

Delphi for PHP (DPHP), Delphi benzeri görsel uygulama geliştirme ortamı ile PHP'de web projesi gelistirme konusunda bir devrim yaratıyor. DPHP, PHP'de sağlam web uygulamaları geliştirmek için hızlı ve kolay bir yol sunuyor. 

Web geliştiricileri arasında PHP kullananların oranı oldukça fazla. Hatta ilk sırada diyebiliriz. PHP için yazılmış açık kaynak kodlu proje ve bileşenleri de hesaba katarsak PHP'nin önemi iyice netleşecektir. Ancak yaygın kullanımına ve popülaritesine rağmen bu güne kadar aşırı gelişmiş kod editörlerinin dışında ciddi bir RAD (Rapid Application Development) aracına sahip olamamış. Delphi for PHP, Delphi arayüzüne aşina olanlara PHP'de hızlı bir geliştirme ortamı sunuyor.

ForceDirectories ile Dizin Ağacı Oluşturmak

Delphi'de dizin oluşturmak için kullanılan komut CreateDir'dir. CreateDir belirttiğiniz bir dizinde yeni bir dizin oluşturmak için kullanılır. Eğer amacınız iç içe birden fazla dizin...

Edit’in içeriğini OnChange Olayında Değiştirmek

Başlık ilk okunduğunda anlaşılabilecek türden olmadı biliyorum. Metin kutusunun içeriği değiştiğinde içeriğine müdahale etmek pek mümkün değildir (Yani OnChange yordamında  içeriği değiştirecek işlemler yapmak)....

W32/Induc virüsü Delphi’ye bulaşıyor

Delphi'nin Syscons.dcu veya sysconst.pas dosyasına bulaşan bir virüs peydah oldu. Kaspersky'da adlandırması Win32.Induc.a olarak geçiyor, kendisini sysconst.pas'a include etmek sureti ile bulaşıyor. Böylelikle her derlemede exe...

Rusya programcı yetiştirme atağında

Yazının sonunda bulabileceğiniz habere göre, Rusya'nın eğitimden sorumlu kurumu (bizdeki milli eğitim bakanlığı) CodeGear'dan 1 milyon adet yazılım geliştirme programı lisansı satın almış. Satın alınan...

Yazarlar

650 İÇERİKLER53 YORUMLAR
6 İÇERİKLER0 YORUMLAR
0 İÇERİKLER0 YORUMLAR