Şehir: İstanbul
Gümrükleme, Dış Ticaret ve Lojistik sektörünün öncü kuruluşu SOLMAZ,
büyüyen iş hacmine paralel olarak ve yeni sektörlerdeki yapılanmalarını
desteklemek amacıyla, Yazılım Geliştirme Departmanı`nda görevlendirmek üzere;
* Bilgisayar Mühendisliği ya da Bilgisayar Programcılığı bölümlerinden mezun
* Nesne Yönelimli (object oriented) programlama mantığına hakim
(Delphi, C# ya da Java dillerinden birini iyi kullanan, tercihen Delphi)
* İlişkisel veritabanları, SQL kullanımı bilgisine sahip
* Tercihen 3 yıl ve üzeri tecrübeye sahip
* Tercihen ERP, gümrükleme, depolama, taşımacılık, dış ticaret, muhasebe/finansman uygulamalarından herhangi biri hakkında tecrübeli
* En az teknik dokümanları okuyabilecek düzeyde İngilizce bilen
* Araştırmacı, kendini geliştirebilen, program yazmayı seven ve takım çalışmasına yatkın
Yazılım Uzmanları arıyor.
Erkek adayların askerliğini yapmış olması ya da en az 2 sene askerlikle ilişkisi olmaması tercih nedenidir.
*** ÇALIŞMA YERİ İSTANBUL ZİNCİRLİKUYU'daki YENİ OFİSİMİZ OLACAKTIR***
İŞ TANIMI
* desktop uygulamaları
* mobil uygulamalar
* web / internet uygulamaları
* web servisleri
* yapay zeka, machine learning, big data uygulamaları
* uygulamalar arası veri aktarımı, sistem entegrasyonları, eBusiness, B2B, B2C işlemleri
* otomatik raporlama ve bilgilendirmeler
* gümrükleme, depolama, taşımacılık, kargo, lojistik, serbest bölge, sigorta, back office, vb. sektörel uygulamalar
* yönetim raporları, BI raporlamaları
* SQL sorguları, stored procedure, trigger, view, tablo vb. veritabanı tasarımı
İlan Kaynağı: https://www.kariyer.net/is-ilani/solmaz-gumruk-musavirligi-a-s-yazilim-uzmani-1899070
Kişisel web adresimdeki bloğuma gelen saldırılar sebebi ile kapatmış bulunmaktayım. Oradaki bütün paylaşımlarımı bu bloğuma tek tek ekledim ve paylaşımlarıma kendi çapımda buradan devam ediyorum.. Takip edenlere teşekkürler bilgi paylaştıkça çoğalır..
Delphi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Delphi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
24 Nisan 2018 Salı
25 Mayıs 2015 Pazartesi
İzmir'de Delphi yazılımcısı aranıyor [BULUNDU]
İzmirde ikametgah etmekte olan veya gelebilecek,
Delphi konusunda tecrübeli,
Tercihen Javascript'de tecrübeli takım arkadaşları aranmaktadır.
İletişim: sinav.ahmet@gmail.com
Delphi konusunda tecrübeli,
Tercihen Javascript'de tecrübeli takım arkadaşları aranmaktadır.
İletişim: sinav.ahmet@gmail.com
17 Nisan 2015 Cuma
Senior (Uzman) ile Junior+ Delphi Yazılımcısı arıyoruz..
Yazılım konusunda kariyer hedefleyen ve ekip çalışmasına yatkın olan,
Sürekli yenilenen teknolojilere, iş süreçlerine ve trendlere hızlı bir şekilde ayak uydurabilen,
Yurtiçi ve Yurtdışı seyahat engeli bulunmayan,
Antalya'da ikamet eden veya Antalya'da ikamet etmeye engeli bulunmayan,
Erkek adayların askerliğini yapmış veya minimum 2 yıl tecilli olmaları gerekmektedir.
Mesleki Nitelikler
En az 2 yıl, Delphi ve SQL tecrübesine sahip olmak (proje bitirmiş, ya da proje ekibinde yer almış),
MSSQL Server üzerinde Database yönetimi yapabilmek,
Tercihen mobil yazılım geliştirme alanında yazılım tecrübesi olan.
Senior (Uzman) ile Junior+ Delphi Yazılımcısı arıyoruz..
Tercihen
Tercihen Turizm Bilişim alanında çalışmış olan,
Delphi XE5 ve üzeri modellerde Mobil Uygulama geliştiren,
İyi derecede İnglizce bilen,
Adaylarımızın iş görüşmesi esnasında önceki geliştirmiş oldukları uygulama örneklerini sunmaları tercih sebebidir.
Bilişim sektöründe faaliyet gösteren firmamızda görevlendirilmek üzere DELPHI YAZILIM UZMANI arayışımız bulunmaktadır.
İlgilenen arkadaşlar b.atalay07@hotmail.com adresine özgeçmişlerini bana atarlarsa en kısa sürede görüşebiliriz.
SAN - Tourism Software Group
Websitesi: http://www.sanbilgisayar.com/
Sürekli yenilenen teknolojilere, iş süreçlerine ve trendlere hızlı bir şekilde ayak uydurabilen,
Yurtiçi ve Yurtdışı seyahat engeli bulunmayan,
Antalya'da ikamet eden veya Antalya'da ikamet etmeye engeli bulunmayan,
Erkek adayların askerliğini yapmış veya minimum 2 yıl tecilli olmaları gerekmektedir.
Mesleki Nitelikler
En az 2 yıl, Delphi ve SQL tecrübesine sahip olmak (proje bitirmiş, ya da proje ekibinde yer almış),
MSSQL Server üzerinde Database yönetimi yapabilmek,
Tercihen mobil yazılım geliştirme alanında yazılım tecrübesi olan.
Senior (Uzman) ile Junior+ Delphi Yazılımcısı arıyoruz..
Tercihen
Tercihen Turizm Bilişim alanında çalışmış olan,
Delphi XE5 ve üzeri modellerde Mobil Uygulama geliştiren,
İyi derecede İnglizce bilen,
Adaylarımızın iş görüşmesi esnasında önceki geliştirmiş oldukları uygulama örneklerini sunmaları tercih sebebidir.
Bilişim sektöründe faaliyet gösteren firmamızda görevlendirilmek üzere DELPHI YAZILIM UZMANI arayışımız bulunmaktadır.
İlgilenen arkadaşlar b.atalay07@hotmail.com adresine özgeçmişlerini bana atarlarsa en kısa sürede görüşebiliriz.
SAN - Tourism Software Group
Websitesi: http://www.sanbilgisayar.com/
3 Nisan 2015 Cuma
Delphi Yazılım Uzmanı Arıyoruz.
Yazılım konusunda kariyer hedefleyen ve ekip çalışmasına yatkın olan,
Sürekli yenilenen teknolojilere, iş süreçlerine ve trendlere hızlı bir şekilde ayak uydurabilen,
Yurtiçi ve Yurtdışı seyahat engeli bulunmayan,
Antalya'da ikamet eden veya Antalya'da ikamet etmeye engeli bulunmayan,
Erkek adayların askerliğini yapmış veya minimum 2 yıl tecilli olmaları gerekmektedir.
Mesleki Nitelikler
En az 2 yıl, Delphi ve SQL tecrübesine sahip olmak (proje bitirmiş, ya da proje ekibinde yer almış),
MSSQL Server üzerinde Database yönetimi yapabilmek,
Mobil yazılım geliştirme alanında yazılım tecrübesi olan
Tercihen
Turizm Bilişim alanında çalışmış olan,
Delphi XE5 ve üzeri modellerde Mobil Uygulama geliştiren,
İyi derecede İnglizce bilen,
Adaylarımızın iş görüşmesi esnasında önceki geliştirmiş oldukları uygulama örneklerini sunmaları tercih sebebidir.
Bilişim sektöründe faaliyet gösteren firmamızda görevlendirilmek üzere DELPHI YAZILIM UZMANI arayışımız bulunmaktadır.
İlgilenen arkadaşlar b.atalay07@hotmail.com adresine özgeçmişlerini bana atarlarsa en kısa sürede görüşebiliriz.
SAN - Tourism Software Group
Websitesi: http://www.sanbilgisayar.com/
Sürekli yenilenen teknolojilere, iş süreçlerine ve trendlere hızlı bir şekilde ayak uydurabilen,
Yurtiçi ve Yurtdışı seyahat engeli bulunmayan,
Antalya'da ikamet eden veya Antalya'da ikamet etmeye engeli bulunmayan,
Erkek adayların askerliğini yapmış veya minimum 2 yıl tecilli olmaları gerekmektedir.
Mesleki Nitelikler
En az 2 yıl, Delphi ve SQL tecrübesine sahip olmak (proje bitirmiş, ya da proje ekibinde yer almış),
MSSQL Server üzerinde Database yönetimi yapabilmek,
Mobil yazılım geliştirme alanında yazılım tecrübesi olan
Tercihen
Turizm Bilişim alanında çalışmış olan,
Delphi XE5 ve üzeri modellerde Mobil Uygulama geliştiren,
İyi derecede İnglizce bilen,
Adaylarımızın iş görüşmesi esnasında önceki geliştirmiş oldukları uygulama örneklerini sunmaları tercih sebebidir.
Bilişim sektöründe faaliyet gösteren firmamızda görevlendirilmek üzere DELPHI YAZILIM UZMANI arayışımız bulunmaktadır.
İlgilenen arkadaşlar b.atalay07@hotmail.com adresine özgeçmişlerini bana atarlarsa en kısa sürede görüşebiliriz.
SAN - Tourism Software Group
Websitesi: http://www.sanbilgisayar.com/
17 Ocak 2015 Cumartesi
Delphi XE7 DbGrid hakkında
Merhabalar sessizce okuyan sonra giden arkadaşlar sözüm size :)
XE7 veya XE6 android üzerinde DBGrid nesnesini test etme şansınız oldumu performansı nasıldır bilgi verebilir misiniz veya varmıdır DBGrid nesnesi ?
XE7 veya XE6 android üzerinde DBGrid nesnesini test etme şansınız oldumu performansı nasıldır bilgi verebilir misiniz veya varmıdır DBGrid nesnesi ?
13 Ocak 2015 Salı
MSBuildToolsPath is not specified for the ToolsVersion 12.0 hatası
Merhabalar,
Aşağıdaki hatayı almaya başladığınızda Visual Studio 2013 CD içerisindeki "BuildTools_MSBuild_amd64" klasörü altındaki dosyaları kurmanı yeterlidir.
Checking project dependencies...
Compiling Project2.dproj (Debug, Win32)
MSBuildToolsPath is not specified for the ToolsVersion "12.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0", or the value specified evaluates to the empty string.
[Fatal Error] MSBuildToolsPath is not specified for the ToolsVersion "12.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0", or the value specified evaluates to the empty string.
Aşağıdaki hatayı almaya başladığınızda Visual Studio 2013 CD içerisindeki "BuildTools_MSBuild_amd64" klasörü altındaki dosyaları kurmanı yeterlidir.
Checking project dependencies...
Compiling Project2.dproj (Debug, Win32)
MSBuildToolsPath is not specified for the ToolsVersion "12.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0", or the value specified evaluates to the empty string.
[Fatal Error] MSBuildToolsPath is not specified for the ToolsVersion "12.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0", or the value specified evaluates to the empty string.
12 Ocak 2015 Pazartesi
Delphi Mobile Listview Filter
Merhabalar,
Embarcadero sitesinde gezinirken bulduğum birşeyden bahsetmek istiyorum.
Bazılarınız fark etmiştir ki XE6 versiyonlarda TListview üzerinden search box olayları biraz sorunlu bunu kısmen XE7 sürümünde gidermişlerdi. Sitelerinde sanırım bu search box nesnesine bağımlı kalmamamız için ayarladıkları bir özelliği buldum.
Embarcadero sitesinde gezinirken bulduğum birşeyden bahsetmek istiyorum.
Bazılarınız fark etmiştir ki XE6 versiyonlarda TListview üzerinden search box olayları biraz sorunlu bunu kısmen XE7 sürümünde gidermişlerdi. Sitelerinde sanırım bu search box nesnesine bağımlı kalmamamız için ayarladıkları bir özelliği buldum.
ListView1.Items.Filter := function (S: string): Boolean
var I : Integer;
begin
I := PosEx('Sales',S);
Result := I <> 0;
end;
Şahsen daha kullanma şansı bulamadım kullananlar yorum olarak bildirebilirler.
26 Aralık 2014 Cuma
Delphi android her cihaza destek çözümü
Merhabalar,
Embarcaderonun sitesinde bulduğum birşeyi paylaşmak istiyorum ama ne kadar çalışabilirliği var test etmeden anlamak bi hayli zor. Elimde embarcaderonun desteklemediği cihaz olmadığından test edemedim demek daha doğru olacaktır.
Olay şu deployment kısmından aşağıdaki ayaların kliğini kaldırınca her cihazın uygulamayı açacağını belirtmekteler.
Local Name: libnative-activity.so
Remote Path: library\lib\armeabi\
Bu olayı deneyip sonucunu bu başlık altına yorum olarak yazarsanız çok müteşekkir olurum.
Orjinal konu: http://docwiki.embarcadero.com/RADStudio/XE7/en/Running_Your_Android_Application_on_an_Android_Device
Embarcaderonun sitesinde bulduğum birşeyi paylaşmak istiyorum ama ne kadar çalışabilirliği var test etmeden anlamak bi hayli zor. Elimde embarcaderonun desteklemediği cihaz olmadığından test edemedim demek daha doğru olacaktır.
Olay şu deployment kısmından aşağıdaki ayaların kliğini kaldırınca her cihazın uygulamayı açacağını belirtmekteler.
Local Name: libnative-activity.so
Remote Path: library\lib\armeabi\
Bu olayı deneyip sonucunu bu başlık altına yorum olarak yazarsanız çok müteşekkir olurum.
Orjinal konu: http://docwiki.embarcadero.com/RADStudio/XE7/en/Running_Your_Android_Application_on_an_Android_Device
3 Aralık 2014 Çarşamba
Asus Zenfone 5
Merhabalar,
Biraz önceki bir testimde şans eseri "Asus Zenfone 5" (intel x86 işemci) isimli cihazda deneme yaptık ve delphi android uygulamamız sorunsuz çalıştı.
Cihazın özellikleride bana gayet başarılı geldi aşağıdaki linkten cihazın özelliklerini inceleyebilirsiniz.
http://www.gsmarena.com/asus_zenfone_5-5952.php
Biraz önceki bir testimde şans eseri "Asus Zenfone 5" (intel x86 işemci) isimli cihazda deneme yaptık ve delphi android uygulamamız sorunsuz çalıştı.
Cihazın özellikleride bana gayet başarılı geldi aşağıdaki linkten cihazın özelliklerini inceleyebilirsiniz.
http://www.gsmarena.com/asus_zenfone_5-5952.php
27 Kasım 2014 Perşembe
Delphi Android AdBuddiz reklam ağı kullanımı
Merhabalar,
Uzun bir aradan sonra çoğu kişinin bilmediği bir reklam ağının delphi android için uyarlamasını yapmıştım onu paylaşmak istiyorum. Aktif projem olmadığı için deneme fırsatı bulamadım, fakat AdBuddiz.com yetkilileri ile yaptığımız görüşmelerde eğer yanlış hatırlamıyorsam indirme başına bile para verdiklerini belirtmişlerdi.
Uzun lafı keselim uygulamaya geçelim.
Sizlerin uğraşmaması için Java2OP ile çevirdiğim sdknın pas dosyasını aşağıda link olarak paylaşacağım. Asıl gerekli olan "AdBuddiz-2.3.4.jar" dosyası bunun için;
https://publishers.adbuddiz.com/pub_portal/login?path=/pub_portal/apps
linkine üyelik açın ve giriş yapın. Giriş yapınca istediğiniz gibi dolaşabilirsiniz fakat ben işi kısa kesip asıl görmeniz gereken yerin linkini veriyorum açınız.
https://publishers.adbuddiz.com/pub_portal/support/java
"Download" butonondan gerekli .jar dosyasını indirin. İndirmiş olduğunuz resmi aşağıdaki resimde gördüğünüz "Libraries" bölümüne sağ tıklayarak ekleyiniz.
Artık kodlarımıza geçebiliriz. Formun var bloğuna 2 adet değişken tanımlayınız.
Bunlar:
Formun craete eventinden reklam ağımızın bilgilerini ayarlamalıyız.
Tanımlarımız bittiğine göre artık yapmamız gerek tek şey butondan reklam clasımızı çağırmak:
Button içerisine:
Artık formumuzla ilgili herşeyi bitirdiğimize göre son ayarlar olarak "AndroidManifest.template.xml" dosyasının izinlerini ve activity eklemelerini yapabiliriz.
AndroidManifest.template.xml açınız:
"<%uses-permission%>" olarak gördüğünüz yerin hemen altına aşağıdaki 3 izini ekleyin.
Not: Yukarıdaki "Publisher Key"i nasıl alacağınızı öğrenmek istiyorsanız https://publishers.adbuddiz.com/pub_portal/login?path=/pub_portal/apps adresini açın ve ekrandaki "Add app" butonuna basarak yeni bir apk için Publisher keyinizi alınız.
Aşağıdaki resimde butona basıldığında çıkan AdBuddiz'in test reklamıdır.
Uzun bir aradan sonra çoğu kişinin bilmediği bir reklam ağının delphi android için uyarlamasını yapmıştım onu paylaşmak istiyorum. Aktif projem olmadığı için deneme fırsatı bulamadım, fakat AdBuddiz.com yetkilileri ile yaptığımız görüşmelerde eğer yanlış hatırlamıyorsam indirme başına bile para verdiklerini belirtmişlerdi.
Uzun lafı keselim uygulamaya geçelim.
Sizlerin uğraşmaması için Java2OP ile çevirdiğim sdknın pas dosyasını aşağıda link olarak paylaşacağım. Asıl gerekli olan "AdBuddiz-2.3.4.jar" dosyası bunun için;
https://publishers.adbuddiz.com/pub_portal/login?path=/pub_portal/apps
linkine üyelik açın ve giriş yapın. Giriş yapınca istediğiniz gibi dolaşabilirsiniz fakat ben işi kısa kesip asıl görmeniz gereken yerin linkini veriyorum açınız.
https://publishers.adbuddiz.com/pub_portal/support/java
"Download" butonondan gerekli .jar dosyasını indirin. İndirmiş olduğunuz resmi aşağıdaki resimde gördüğünüz "Libraries" bölümüne sağ tıklayarak ekleyiniz.
Sıradaki işlem "AdBuddiz-2.3.4.jar" dosyasının .pas dosyasına çevrilmiş halini indirmek ve projeye eklemek.
AdBuddizApi.pas : https://www.mediafire.com/?emd568wz8asrtvg
Bunlar:
var AdBuddiz: TJAdBuddiz; AdBuddizLogLevel: TJAdBuddizLogLevel;
Formun craete eventinden reklam ağımızın bilgilerini ayarlamalıyız.
begin
AdBuddiz.JavaClass.setLogLevel(AdBuddizLogLevel.JavaClass.Info);
AdBuddiz.JavaClass.setPublisherKey(StringToJString('Buraya Publisher Key'));
AdBuddiz.JavaClass.setTestModeActive;
AdBuddiz.JavaClass.cacheAds(SharedActivity);
end;
Tanımlarımız bittiğine göre artık yapmamız gerek tek şey butondan reklam clasımızı çağırmak:
Button içerisine:
AdBuddiz.JavaClass.showAd(SharedActivity);
Artık formumuzla ilgili herşeyi bitirdiğimize göre son ayarlar olarak "AndroidManifest.template.xml" dosyasının izinlerini ve activity eklemelerini yapabiliriz.
AndroidManifest.template.xml açınız:
"<%uses-permission%>" olarak gördüğünüz yerin hemen altına aşağıdaki 3 izini ekleyin.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />bunları ekledikten sonra aşağıda "</activity>" olan yerin hemen altına aşağıdaki activity'i ekleyin.
<activity android:name="com.purplebrain.adbuddiz.sdk.AdBuddizActivity" android:theme="@android:style/Theme.Translucent" />İşlemlerimiz bu kadardır.
Not: Yukarıdaki "Publisher Key"i nasıl alacağınızı öğrenmek istiyorsanız https://publishers.adbuddiz.com/pub_portal/login?path=/pub_portal/apps adresini açın ve ekrandaki "Add app" butonuna basarak yeni bir apk için Publisher keyinizi alınız.
Aşağıdaki resimde butona basıldığında çıkan AdBuddiz'in test reklamıdır.
Etiketler:
AdBuddiz delphi,
Adbuddiz sdk,
Barış atalay,
Delphi,
delphi android,
delphi IOS,
FireMonkey,
kodbank,
Mobil Uygulama,
XE7,
XE7 Admob,
XE7 Google Admob,
XE7 Google Reklam
22 Ekim 2014 Çarşamba
Delphi Android Broadcast Receiver ile Bluetooth Kontrol
Merhabalar,
Bu yazımda daha önceden paylaşmış olduğum Broadcast Receiver Componenti ile birlikte Bluetooth kontrolünü nasıl yapabileceğinizden bahsedicem.
Şimdi projenize bahsetmiş olduğum Broadcast Receiver Componenti ekleyin kullanımını kendi başlığında öğrenebilirsiniz ek olarak dinlenmesini istediğimiz yayını ekleyeceğiz.
Bu sayede bluetooth yayınında bir değişiklik olursa projemize bunu yakalaması için talimat verdik fakat eksik birşey kaldı oda uygulamada "Bluetooth" iznini true yapmak.
Son olarak "OnReceive" eventine aşağıdaki kodları ekleyiniz.
Bu yazımda daha önceden paylaşmış olduğum Broadcast Receiver Componenti ile birlikte Bluetooth kontrolünü nasıl yapabileceğinizden bahsedicem.
Şimdi projenize bahsetmiş olduğum Broadcast Receiver Componenti ekleyin kullanımını kendi başlığında öğrenebilirsiniz ek olarak dinlenmesini istediğimiz yayını ekleyeceğiz.
BroadcastReceiver1.Add('android.bluetooth.adapter.action.STATE_CHANGED');
Bu sayede bluetooth yayınında bir değişiklik olursa projemize bunu yakalaması için talimat verdik fakat eksik birşey kaldı oda uygulamada "Bluetooth" iznini true yapmak.
Son olarak "OnReceive" eventine aşağıdaki kodları ekleyiniz.
case Intent.getIntExtra(StringToJString('android.bluetooth.adapter.extra.STATE'),-1) of
10://STATE_OFF
begin
ShowMessage('Bluetooth kapalı.',TToastLength.ShortToast);
end;
11://STATE_TURNING_ON
begin
ShowMessage('Bluetooth açılıyor.',TToastLength.ShortToast);
end;
12://STATE_ON
begin
ShowMessage('Bluetooth açık.',TToastLength.ShortToast);
end;
13://STATE_TURNING_OFF
begin
ShowMessage('Bluetooth kapanıyor.',TToastLength.ShortToast);
end;
end;
Etiketler:
android internet,
android internet bağlantısı,
Barış atalay,
Bluetooth Kontrol,
Delphi,
delphi android,
delphi broadcast receiver,
Delphi XE5 - XE6 - XE7,
internet connection,
RAD Studio XE7,
XE7
Delphi Android Broadcast Receiver ile internet Kontrol
Merhabalar,
Bu yazımda daha önceden paylaşmış olduğum Broadcast Receiver Componenti ile birlikte internet kontrolünü nasıl yapabileceğinizden bahsedicem.
Neden böyle birşeye ihtiyacımız olabilir diye soran olursa, İnternet üzerinden işlem yapan bir uygulama yaptığınızı düşünün tam servere istek gönderilmeden önce internet gitme ihtimali olma şansı çok büyük
böyle bir durumda uygulama içerisinde önlem almak isteyebilirsiniz.
Başka bir ihtimal düşünelim dosya indirme hakkında bir uygulama yaptınız fakat sadece wifi aktifken indirme özelliği eklemek istiyorsunuz bunun gibi network olaylarını dinlemeniz gerekebilir.
Lafı fazla uzatmadan gerekli pas dosyasını en alta linkini ve direk kod olarak veriyorum onu indirin ve projenize dahil edin.
Şimdi projenize bahsetmiş olduğum Broadcast Receiver Componenti ekleyin kullanımını kendi başlığında öğrenebilirsiniz ek olarak dinlenmesini istediğimiz yayını ekleyeceğiz.
bu sayede network yayınında bir değişiklik olursa projemize bunu yakalaması için talimat verdik fakat eksik birşey kaldı oda uygulamada "Access network state" iznini true yapmak.
Uses bloğuna "NetworkState.Android" pas dosyamızı tanımlıyoruz.
Son olarak "OnReceive" eventine aşağıdaki kodları ekleyiniz.
NetworkState.Android.pas indirme Linki: https://www.mediafire.com/?3gxl3zdvmtquflu
Bu yazımda daha önceden paylaşmış olduğum Broadcast Receiver Componenti ile birlikte internet kontrolünü nasıl yapabileceğinizden bahsedicem.
Neden böyle birşeye ihtiyacımız olabilir diye soran olursa, İnternet üzerinden işlem yapan bir uygulama yaptığınızı düşünün tam servere istek gönderilmeden önce internet gitme ihtimali olma şansı çok büyük
böyle bir durumda uygulama içerisinde önlem almak isteyebilirsiniz.
Başka bir ihtimal düşünelim dosya indirme hakkında bir uygulama yaptınız fakat sadece wifi aktifken indirme özelliği eklemek istiyorsunuz bunun gibi network olaylarını dinlemeniz gerekebilir.
Lafı fazla uzatmadan gerekli pas dosyasını en alta linkini ve direk kod olarak veriyorum onu indirin ve projenize dahil edin.
Şimdi projenize bahsetmiş olduğum Broadcast Receiver Componenti ekleyin kullanımını kendi başlığında öğrenebilirsiniz ek olarak dinlenmesini istediğimiz yayını ekleyeceğiz.
BroadcastReceiver1.Add('android.net.conn.CONNECTIVITY_CHANGE');
bu sayede network yayınında bir değişiklik olursa projemize bunu yakalaması için talimat verdik fakat eksik birşey kaldı oda uygulamada "Access network state" iznini true yapmak.
Uses bloğuna "NetworkState.Android" pas dosyamızı tanımlıyoruz.
Son olarak "OnReceive" eventine aşağıdaki kodları ekleyiniz.
var
NetworkInfo: TNetworkState;
begin
if NetworkInfo.GetState = TState.Wifi then
ShowMessage('Wifi aktif')
else if NetworkInfo.GetState = TState.Mobile then
ShowMessage('3G aktif')
else if NetworkInfo.GetState = TState.NotConnect then
ShowMessage('İnternet Yok')
NetworkState.Android.pas indirme Linki: https://www.mediafire.com/?3gxl3zdvmtquflu
unit NetworkState.Android;
interface
{$IFDEF ANDROID}
type
TState = (Wifi,Mobile,NotConnect);
TNetworkState = class
private
function IsConnected: Boolean;
function IsWifiConnected: Boolean;
function IsMobileConnected: Boolean;
public
function GetState: TState;
end;
{$ENDIF}
implementation
{$IFDEF ANDROID}
uses
System.SysUtils,
Androidapi.JNIBridge,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
FMX.Helpers.Android,
AndroidApi.Helpers;
type
JConnectivityManager = interface;
JNetworkInfo = interface;
JNetworkInfoClass = interface(JObjectClass)
['{E92E86E8-0BDE-4D5F-B44E-3148BD63A14C}']
end;
[JavaSignature('android/net/NetworkInfo')]
JNetworkInfo = interface(JObject)
['{6DF61A40-8D17-4E51-8EF2-32CDC81AC372}']
{Methods}
function isAvailable: Boolean; cdecl;
function isConnected: Boolean; cdecl;
function isConnectedOrConnecting: Boolean; cdecl;
end;
TJNetworkInfo = class(TJavaGenericImport) end;
JConnectivityManagerClass = interface(JObjectClass)
['{E03A261F-59A4-4236-8CDF-0068FC6C5FA1}']
{Property methods}
function _GetTYPE_WIFI: Integer; cdecl;
function _GetTYPE_WIMAX: Integer; cdecl;
function _GetTYPE_MOBILE: Integer; cdecl;
{Properties}
property TYPE_WIFI: Integer read _GetTYPE_WIFI;
property TYPE_WIMAX: Integer read _GetTYPE_WIMAX;
property TYPE_MOBILE: Integer read _GetTYPE_MOBILE;
end;
[JavaSignature('android/net/ConnectivityManager')]
JConnectivityManager = interface(JObject)
['{1C4C1873-65AE-4722-8EEF-36BBF423C9C5}']
{Methods}
function getActiveNetworkInfo: JNetworkInfo; cdecl;
function getNetworkInfo(networkType: Integer): JNetworkInfo; cdecl;
end;
TJConnectivityManager = class(TJavaGenericImport) end;
JWifiManager = interface;
JWifiInfo = interface;
JWifiManagerClass = interface(JObjectClass)
['{69F35EA7-3EB9-48AA-B7FC-4FFD0E7D712F}']
function _GetACTION_PICK_WIFI_NETWORK: JString;
function _GetEXTRA_WIFI_INFO: JString;
function _GetWIFI_STATE_CHANGED_ACTION: JString;
property ACTION_PICK_WIFI_NETWORK: JString read _GetACTION_PICK_WIFI_NETWORK;
property EXTRA_WIFI_INFO: JString read _GetEXTRA_WIFI_INFO;
property WIFI_STATE_CHANGED_ACTION: JString read _GetWIFI_STATE_CHANGED_ACTION;
end;
[JavaSignature('android/net/wifi/WifiManager')]
JWifiManager = interface(JObject)
['{DA7107B9-1FAD-4A9E-AA09-8D5B84614E60}']
function isWifiEnabled: Boolean; cdecl;
function setWifiEnabled(enabled: Boolean):Boolean; cdecl;
//function getConfiguredNetworks : JList;cdecl;
function getConnectionInfo: JWifiInfo; cdecl;
end;
TJWifiManager = class(TJavaGenericImport) end;
JWifiInfoClass = interface(JObjectClass)
['{2B1CE79F-DE4A-40D9-BB2E-7F9F118D8C08}']
function _GetLINK_SPEED_UNITS:JString;
property LINK_SPEED_UNITS: JString read _GetLINK_SPEED_UNITS;
end;
[JavaSignature('android/net/wifi/WifiInfo')]
JWifiInfo = interface(JObject)
['{4F09E865-DB04-4E64-8C81-AEFB36DABC45}']
function getBSSID: JString; cdecl;
function getHiddenSSID: Boolean; cdecl;
function getIpAddress: integer; cdecl;
function getLinkSpeed: integer; cdecl;
function getMacAddress: JString; cdecl;
function getNetworkId: integer; cdecl;
function getRssi: integer; cdecl;
function getSSID: JString; cdecl;
end;
TJWifiInfo= class(TJavaGenericImport) end;
function GetWifiManager: JWifiManager;
var
WifiManagerNative: JObject;
begin
WifiManagerNative := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
if not Assigned(WifiManagerNative) then
raise Exception.Create('Could not locate Wifi Service');
Result := TJWifiManager.Wrap((WifiManagerNative as ILocalObject).GetObjectID);
if not Assigned(Result) then
raise Exception.Create('Could not access Wifi Manager');
end;
function GetConnectivityManager: JConnectivityManager;
var
ConnectivityServiceNative: JObject;
begin
ConnectivityServiceNative := SharedActivityContext.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE);
if not Assigned(ConnectivityServiceNative) then
raise Exception.Create('Could not locate Connectivity Service');
Result := TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID);
if not Assigned(Result) then
raise Exception.Create('Could not access Connectivity Manager');
end;
{ TPlatformNetworkState }
function TNetworkState.IsConnected: Boolean;
var
ConnectivityManager: JConnectivityManager;
ActiveNetwork: JNetworkInfo;
begin
ConnectivityManager := GetConnectivityManager;
ActiveNetwork := ConnectivityManager.getActiveNetworkInfo;
Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected;
end;
function TNetworkState.IsMobileConnected: Boolean;
var
ConnectivityManager: JConnectivityManager;
MobileNetwork: JNetworkInfo;
begin
ConnectivityManager := GetConnectivityManager;
MobileNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_MOBILE);
Result := MobileNetwork.isConnected;
end;
function TNetworkState.IsWifiConnected: Boolean;
var
ConnectivityManager: JConnectivityManager;
WiFiNetwork: JNetworkInfo;
begin
ConnectivityManager := GetConnectivityManager;
WiFiNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_WIFI);
Result := WiFiNetwork.isConnected;
end;
function TNetworkState.GetState: TState;
begin
if not IsConnected then
Result := NotConnect
else if IsMobileConnected then
Result := Mobile
else if IsWifiConnected then
Result := Wifi
end;
{$ENDIF}
end.
Etiketler:
android internet,
android internet bağlantısı,
Barış atalay,
Delphi,
delphi android,
delphi broadcast receiver,
Delphi XE5 - XE6 - XE7,
internet connection,
RAD Studio XE7,
XE7
20 Ekim 2014 Pazartesi
Delphi Android Broadcast Receiver Component
Merhabalar,
Bu component yardımı ile telefonunuzdaki yayınları yakalayabileceksiniz.
Not: Classes.dex ile ilgili hiçbir ayar yapmanıza gerek yoktur, standart bir component kurulumu ile aynı işlemleri yapmanız yeterlidir.
Proje XE6 ve XE7 üzerinde test edilmiştir.
Proje dosyaların içerisinde sizler için bir örnek hazırladım bu örnek sayesinde gelen çağıyı yapan numarayı yakalayabiliyorsunuz.
Nedir bu yayın türü sorular için: http://developer.android.com/reference/android/content/BroadcastReceiver.html
Kullanımı:
1-) BroadcastReceiver1.RegisterReceive : Yayın alıcıları açar ve dinleme işlemini başlatır.
2-) BroadcastReceiver1.Add(''): Dinlenmesini istediğiniz intentleri bu şekilde ekleyiniz.
3-) BroadcastReceiver1.SendBroadcast(''): Manuel olarak bir yayın göndermek isterseniz buraya yazınız.
4-) "OnReceive" Event.Yayın dinlediğiniz yayınlarda herhangi bir hareketlenme olursa bu event tetiklenir ve içerisindeki kodları çalıştırır.
Not: On KitKat only system services are allowed to send broadcast
Sorularınız ve önerileriniz çerçevesinde geliştirilmesi yapılabilecek güzel bir componenttir.
Bu component yardımı ile telefonunuzdaki yayınları yakalayabileceksiniz.
Not: Classes.dex ile ilgili hiçbir ayar yapmanıza gerek yoktur, standart bir component kurulumu ile aynı işlemleri yapmanız yeterlidir.
Proje XE6 ve XE7 üzerinde test edilmiştir.
Proje dosyaların içerisinde sizler için bir örnek hazırladım bu örnek sayesinde gelen çağıyı yapan numarayı yakalayabiliyorsunuz.
Nedir bu yayın türü sorular için: http://developer.android.com/reference/android/content/BroadcastReceiver.html
Kullanımı:
1-) BroadcastReceiver1.RegisterReceive : Yayın alıcıları açar ve dinleme işlemini başlatır.
2-) BroadcastReceiver1.Add(''): Dinlenmesini istediğiniz intentleri bu şekilde ekleyiniz.
3-) BroadcastReceiver1.SendBroadcast(''): Manuel olarak bir yayın göndermek isterseniz buraya yazınız.
4-) "OnReceive" Event.Yayın dinlediğiniz yayınlarda herhangi bir hareketlenme olursa bu event tetiklenir ve içerisindeki kodları çalıştırır.
Not: On KitKat only system services are allowed to send broadcast
Sorularınız ve önerileriniz çerçevesinde geliştirilmesi yapılabilecek güzel bir componenttir.
Etiketler:
Barış atalay,
Delphi,
delphi android,
delphi background service,
delphi broadcast receiver,
delphi dynamic broadcast receiver,
Delphi XE5 - XE6 - XE7,
RAD Studio XE7,
XE7
8 Ekim 2014 Çarşamba
Delphi Android Dinamik Broadcast Receiver Oluşturma Kaynak Kodları
Merhabalar,
Component hali için aşağıdaki linki ziyaret edin.
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-broadcast-receiver.html
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-dinamik-broadcast.html
Linkinde hazırladığım yazının kaynak kodlarını bu başlık altında paylaşıyorum.
Kaynak kodları paylaşmayı pek sevmesemde, bu konudaki kodların paylaşılması taraftarıyım.
İndirme Linki[08/10/2014]: http://s3.dosya.tc/server28/AvCpPt/DinamicBradcastReceiver.rar.html
Component hali için aşağıdaki linki ziyaret edin.
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-broadcast-receiver.html
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-dinamik-broadcast.html
Linkinde hazırladığım yazının kaynak kodlarını bu başlık altında paylaşıyorum.
Kaynak kodları paylaşmayı pek sevmesemde, bu konudaki kodların paylaşılması taraftarıyım.
İndirme Linki[08/10/2014]: http://s3.dosya.tc/server28/AvCpPt/DinamicBradcastReceiver.rar.html
3 Ekim 2014 Cuma
Delphi Android Dinamik Broadcast Receiver oluşturma ve Servis kullanımı
Merhabalar,
Component hali için aşağıdaki linki ziyaret edin.
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-broadcast-receiver.html
Öncelikle şimdiden iyi bayramlar dilerim herkese :)
Bu yazımda android dünyasından yine bişiler kurcalarken, benim pek işime yarıyacak yer bulamadım ama bir dostun işine yarayabileceği birşeyi paylaşmak isterim.
Nedir bu Broadcast Receiver Buraya Tıklayınız!
İnsan bu konunun devamını okuyorsa ve kullanmak istiyorsa yeteri kadar bilgisi ve fikrinin olduğunu varsayarak devam ediyorum.
Bu örnek projede kendimiz uygulama içerisinden bir yayın yapacağız ve bu yaptığımız yayını aynı uygulama içerisinde yakalayacağız.
Projeyi XE6 üzerinde yapmış bulunmaktayım.
Hali hazırda http://brsatalay.blogspot.com.tr/2014/08/delphi-android-foreground.html linkindeki anlattığım olayları yapmışsanız classes.dex dosyası aynı dosyadır.
Aşağıdaki linklerden eksik olan dosyalarını tedarik edebilirsiniz
Toast.pas ve ActivityReceiverU.pas : http://s3.dosya.tc/server28/JRMhZO/Units.rar.html
Gerekli java dosyaları :http://s3.dosya.tc/server28/cBusGJ/java.rar.html
Projemize java dosyası içerisindeki output klasöründeki classes.dex dosyasını deploy ediyoruz.
Deploy işlemi hakkında bilgisi olmayanlar linki incelesinler: http://brsatalay.blogspot.com.tr/2014/08/delphi-classesdex-deploy.html
Sabit değişken olarak yayınlayacağımız bazı Yayın kodlarını ekleyelim
Eksik kütüphaneleri uses bloğuna ekleyin.
Formun OnKeyUp eventine aşağıdaki kodu yazarak geri tusuna basıldığında uygulamamızı arka planda calısması için ayarlayalım
Formun var bloğuna aşağıdaki değişkenleri ekleyiniz.
Formumuzun private tanım alanına aşağıdaki değişkenleri ekleyin.
"ApplicationEventHandler" proceduresinin içerisi aynı aşağıdaki gibi olmalıdır.
Formun onCreate eventine aşağıdaki kodları yazınız.
Şimdid gelelim "ApplicationEventHandler" proceduresinin içerisindeki 2 olaya. BecameActive devreye girdiğinde yani uygulamamız Active olduğu anda ReceiverAta proceduresi calısacak ki buda yayın alıcıları aktif yaparak cihazdaki o an yayınlanan şeyleri dinlemek için.
WillTerminate ise tersi durumda yayın dinleyicileri kaldırmak için.
Formun onDestroy eventine program sonlandırıldıgında yaratılan nesneyi serbest bırakmak için gerekli kodu yazalım. Android ortamda otomatik serbest bırakıldıgını varsayıyorum ama ne olur ne olmaz işi şansa bırakmamak gerek.
Ve şimdi sıra geldi son işlemimize bunun için Forma 1 tane buton yerleştirin ve içerisine aşağıdaki kodları ekleyiniz. Aşağıdaki kodlarda göreceğiniz üzere Const olarak tanımladığımız PERMISSION değişkenini yayına gönderdik ve butona bastığımızda en üsteki gibi yakalanan yayın toast olarak gösterilecektir.
Component hali için aşağıdaki linki ziyaret edin.
http://brsatalay.blogspot.com.tr/2014/10/delphi-android-broadcast-receiver.html
Öncelikle şimdiden iyi bayramlar dilerim herkese :)
Bu yazımda android dünyasından yine bişiler kurcalarken, benim pek işime yarıyacak yer bulamadım ama bir dostun işine yarayabileceği birşeyi paylaşmak isterim.
Nedir bu Broadcast Receiver Buraya Tıklayınız!
İnsan bu konunun devamını okuyorsa ve kullanmak istiyorsa yeteri kadar bilgisi ve fikrinin olduğunu varsayarak devam ediyorum.
Bu örnek projede kendimiz uygulama içerisinden bir yayın yapacağız ve bu yaptığımız yayını aynı uygulama içerisinde yakalayacağız.
Projeyi XE6 üzerinde yapmış bulunmaktayım.
Hali hazırda http://brsatalay.blogspot.com.tr/2014/08/delphi-android-foreground.html linkindeki anlattığım olayları yapmışsanız classes.dex dosyası aynı dosyadır.
Aşağıdaki linklerden eksik olan dosyalarını tedarik edebilirsiniz
Toast.pas ve ActivityReceiverU.pas : http://s3.dosya.tc/server28/JRMhZO/Units.rar.html
Gerekli java dosyaları :http://s3.dosya.tc/server28/cBusGJ/java.rar.html
Projemize java dosyası içerisindeki output klasöründeki classes.dex dosyasını deploy ediyoruz.
Deploy işlemi hakkında bilgisi olmayanlar linki incelesinler: http://brsatalay.blogspot.com.tr/2014/08/delphi-classesdex-deploy.html
Sabit değişken olarak yayınlayacağımız bazı Yayın kodlarını ekleyelim
Const (* EXAMPLES *) PERMISSION = 'com.DynamicBroadcastReceiver.intent.action.deneme'; //Manuel BATTERY = 'android.intent.action.BATTERY_CHANGED'; INTERNET = 'WIFI_STATE_CHANGED_ACTION'; CALL = 'android.intent.action.PHONE_STATE'; //Gelen aramalar için
Eksik kütüphaneleri uses bloğuna ekleyin.
Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android ,AndroidApi.Helpers ,FMX.Platform.Android ,FMX.Platform
,ToastAndroid
,ActivityReceiverU
Formun OnKeyUp eventine aşağıdaki kodu yazarak geri tusuna basıldığında uygulamamızı arka planda calısması için ayarlayalım
if Key = vkHardwareBack then
begin
Key := 0;
MainActivity.moveTaskToBack(True);
Toast('Arka plan',TToastLength.ShortToast);
end;
Formun var bloğuna aşağıdaki değişkenleri ekleyiniz.
ServiceReceiver: TJBroadcastReceiver; FReceiver: JBroadcastReceiver;
Formumuzun private tanım alanına aşağıdaki değişkenleri ekleyin.
AppEvents: IFMXApplicationEventService;
function ApplicationEventHandler(AAppEvent: TApplicationEvent;AContext: TObject): Boolean;
"ApplicationEventHandler" proceduresinin içerisi aynı aşağıdaki gibi olmalıdır.
case AAppEvent of
TApplicationEvent.BecameActive:
begin
ReceiverAta;
end;
TApplicationEvent.WillTerminate:
begin
ReceiverKaldir;
end;
TApplicationEvent.EnteredBackground:
MainActivity.moveTaskToBack(True);
end;
Result := True;
Formun onCreate eventine aşağıdaki kodları yazınız.
if TPlatformServices.Current.SupportsPlatformService
(IFMXApplicationEventService, IInterface(AppEvents)) then
AppEvents.SetApplicationEventHandler(ApplicationEventHandler);
Şimdid gelelim "ApplicationEventHandler" proceduresinin içerisindeki 2 olaya. BecameActive devreye girdiğinde yani uygulamamız Active olduğu anda ReceiverAta proceduresi calısacak ki buda yayın alıcıları aktif yaparak cihazdaki o an yayınlanan şeyleri dinlemek için.
WillTerminate ise tersi durumda yayın dinleyicileri kaldırmak için.
//ReceiverKaldir içerisi
if FReceiver <> nil then
SharedActivity.UnregisterReceiver(FReceiver);
//ReceiverAta içerisi
var
Filter: JIntentFilter;
begin
FReceiver := TJActivityReceiver.Create;
Filter := TJIntentFilter.Create;
Filter.addAction(StringToJString(PERMISSION));
Filter.addAction(StringToJString(CALL));//YAKALAMAK İSTEDİĞİNİZ YAYINLAR BURAYA EKLENİR.
SharedActivity.RegisterReceiver(FReceiver, Filter);
Formun onDestroy eventine program sonlandırıldıgında yaratılan nesneyi serbest bırakmak için gerekli kodu yazalım. Android ortamda otomatik serbest bırakıldıgını varsayıyorum ama ne olur ne olmaz işi şansa bırakmamak gerek.
ServiceReceiver.Free;
Ve şimdi sıra geldi son işlemimize bunun için Forma 1 tane buton yerleştirin ve içerisine aşağıdaki kodları ekleyiniz. Aşağıdaki kodlarda göreceğiniz üzere Const olarak tanımladığımız PERMISSION değişkenini yayına gönderdik ve butona bastığımızda en üsteki gibi yakalanan yayın toast olarak gösterilecektir.
var Inx: JIntent; begin Inx := TJIntent.Create; Inx.setAction(StringToJString(PERMISSION)); SharedActivityContext.sendBroadcast(Inx);
2 Ekim 2014 Perşembe
Delphi Türkiye Merkez Bankası Döviz Kurlarını Okuma
Merhabalar,
Geçtiğimiz günlerde merkez bankası döviz kurları için kullanılan Html sayfasını kapatmış bulunmakta. Bunu bazı eski firmalar .xml servisleri açılmadan önce kullandığı için bu yenilik sayesinde artık xml yapısına geçmelidirler.
Bu durum için bir procedure hazırladım. Bu procedure için forma 1 tane "XMLDocument" nesnesi yerleştirmelisiniz.
Aşağıda dönen verileri almanız için gerekli notları bıraktım onları istediğiniz gibi txt dosyası içerisine kaydedebilirsiniz artık.
Geçtiğimiz günlerde merkez bankası döviz kurları için kullanılan Html sayfasını kapatmış bulunmakta. Bunu bazı eski firmalar .xml servisleri açılmadan önce kullandığı için bu yenilik sayesinde artık xml yapısına geçmelidirler.
Bu durum için bir procedure hazırladım. Bu procedure için forma 1 tane "XMLDocument" nesnesi yerleştirmelisiniz.
Aşağıda dönen verileri almanız için gerekli notları bıraktım onları istediğiniz gibi txt dosyası içerisine kaydedebilirsiniz artık.
//Kullanımı:
DovizIslemleri(XMLDocument1);
Uses Vcl.ExtActns;
procedure DovizIslemleri(XMLComp: TXMLDocument);
var
I: Integer;
S,
LocalFile,
tmpUrl: String;
HeaderNode,
CurrNode: IXMLNode;
{$REGION 'Gerekli Fonksiyonlar'}
function DownloadURLFile(const UrlFile, LocalFile : TFileName) : boolean;
begin
Result:=True;
with TDownLoadURL.Create(nil) do
try
URL:=UrlFile;
Filename:=LocalFile;
try
ExecuteTarget(nil);
except
Result:=False;
end;
finally
Free;
end;
end;
function Kontrol(xDate:String;Url: String): String;
var
D1,
D2,
Tmp: String;
begin
Tmp := FormatDateTime('t',Now);
if (Trim(xDate) = '') or (StrToTime(Tmp) < StrToTime('15:30')) then //2. koşulun sebebi saat 15:30 dan önce her zaman bir önceki günün değeri gelir
Url := Format(Url,['today'])
else
begin
D1 := FormatDateTime('yyyymm', StrToDate(xDate));
D2 := FormatDateTime('ddmmyyyy', StrToDate(xDate));
Tmp := D1 + '/' + D2 ;
Url := Format(Url,[Tmp]);
end;
Result := Url;
end;
{$ENDREGION}
begin
try
LocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.TMB.xml';
tmpUrl := Kontrol(DateToStr(Date),'http://www.tcmb.gov.tr/kurlar/%s.xml');
Screen.Cursor:=crHourglass;
try
if not DownloadURLFile(tmpUrl, LocalFile) then
begin
Screen.Cursor:=crDefault;
Raise Exception.CreateFmt('İnternet ile ilgili bir problem ile karşılaşıldı lütfen tekrar deneyiniz..',[]);
Exit;
end;
if not FileExists(LocalFile) then
begin
Screen.Cursor:=crDefault;
raise exception.Create('Xml İndirilemedi!');
Exit;
end;
XMLComp.Active := False;
XMLComp.FileName := LocalFile;
XMLComp.Active:=True;
HeaderNode := XMLComp.DocumentElement;
S := HeaderNode.Attributes['Tarih'];// Tarih
for i := 0 to HeaderNode.ChildNodes.Count - 1 do
begin
CurrNode := HeaderNode.ChildNodes.Get(I);
{$REGION 'Dönenler'}
(* //PARA KODU
CurrNode.Attributes['Kod']
//<Unit>
CurrNode.ChildNodes.Get(0).NodeValue;
//<Isim>
CurrNode.ChildNodes.Get(1).NodeValue;
//<CurrencyName>
CurrNode.ChildNodes.Get(2).NodeValue;
//<ForexBuying>
CurrNode.ChildNodes.Get(3).NodeValue;
//<ForexSelling>
CurrNode.ChildNodes.Get(4).NodeValue;
//<BanknoteBuying>
CurrNode.ChildNodes.Get(5).NodeValue;
//<BanknoteSelling>
CurrNode.ChildNodes.Get(6).NodeValue;
//<CrossRateUSD>
CurrNode.ChildNodes.Get(7).NodeValue;
//<CrossRateUSD>
CurrNode.ChildNodes.Get(8).NodeValue;
*)
{$ENDREGION}
end;
finally
DeleteFile(LocalFile);
Screen.Cursor:=crDefault;
end;
except
on E: Exception do ShowMessage(E.Message);
end;//try
end;
1 Ekim 2014 Çarşamba
Barış ATALAY - Linkedin
Merhabalar,
Linkedin üzerinden benimle bağlantı kurmak isteyenler olursa bana aşağıdaki linkten ulaşabilirler.
Bunu yeni öğrendim ki çevre demek herşeymiş tek başına ağzınla kuş tutsan boş.
Saygılar :)
tr.linkedin.com/pub/barış-atalay/88/347/546/
Linkedin üzerinden benimle bağlantı kurmak isteyenler olursa bana aşağıdaki linkten ulaşabilirler.
Bunu yeni öğrendim ki çevre demek herşeymiş tek başına ağzınla kuş tutsan boş.
Saygılar :)
tr.linkedin.com/pub/barış-atalay/88/347/546/
29 Eylül 2014 Pazartesi
Delphi Android Run-time nesne hareketi
Merhabalar,
Örneğimiz için form ekranına 1 adet TImage nesnesi yerleştirmeniz ve içerisine resim yüklemeniz yeterlidir.
Test amaçlı rastgele bir nesne daha eklemeniz de gerek. Çünkü yerini değiştireceğimiz TImage nesnesi, o eklediğimiz resmin üzerine geldiğinde donuyormu onu test etmek için.
İlk olarak Uses kısmına gerekli kütüphaneyi ekleyelim:
Sıradaki işlem "private" bölümüne aşağıdaki değişkenleri tanımlayınız. Tercih sebebi olarak genel var bloğunada tanımlayabilirsiniz.
Bu TImage nesnemizin uyladığımız işlemleri kullanabilmesi için "AutoCapture" özelliğinin daima true olması gerekmektedir. Formun OnCreate bölümüne aşağıdaki kodu ekleyiniz.
DraggableImage.AutoCapture := True;
Sıradaki işlemimiz parmağımızın resmin üzerine geldiğini algılaması ve bu durumda tanımladığımız FPressed değişkenini true yapmak. Bunun için resmin OnMouseDown eventine aşağıdaki kodu ekleyiniz.
Şimdi parmağımızın resimde olmadığı durumu değişkenimize aktarmaya geldi onun için resmin OnMouseUp eventine aşağıdaki kodu ekleyiniz.
Ve son olarak resmin OnMouseMove eventine hareket işlemleri için gerekli kod bloğumuzu ekliyoruz.
Örneğimiz için form ekranına 1 adet TImage nesnesi yerleştirmeniz ve içerisine resim yüklemeniz yeterlidir.
Test amaçlı rastgele bir nesne daha eklemeniz de gerek. Çünkü yerini değiştireceğimiz TImage nesnesi, o eklediğimiz resmin üzerine geldiğinde donuyormu onu test etmek için.
İlk olarak Uses kısmına gerekli kütüphaneyi ekleyelim:
System.Math.Vectors
Sıradaki işlem "private" bölümüne aşağıdaki değişkenleri tanımlayınız. Tercih sebebi olarak genel var bloğunada tanımlayabilirsiniz.
FStartPos: TPointF; FPressed: Boolean;
Bu TImage nesnemizin uyladığımız işlemleri kullanabilmesi için "AutoCapture" özelliğinin daima true olması gerekmektedir. Formun OnCreate bölümüne aşağıdaki kodu ekleyiniz.
DraggableImage.AutoCapture := True;
Sıradaki işlemimiz parmağımızın resmin üzerine geldiğini algılaması ve bu durumda tanımladığımız FPressed değişkenini true yapmak. Bunun için resmin OnMouseDown eventine aşağıdaki kodu ekleyiniz.
FPressed := True; FStartPos := TPointF.Create(X, Y);
Şimdi parmağımızın resimde olmadığı durumu değişkenimize aktarmaya geldi onun için resmin OnMouseUp eventine aşağıdaki kodu ekleyiniz.
FPressed := False;
Ve son olarak resmin OnMouseMove eventine hareket işlemleri için gerekli kod bloğumuzu ekliyoruz.
var
MoveVector: TVector;
begin
if FPressed then
begin
MoveVector := TVector.Create(X - FStartPos.X, Y - FStartPos.Y, 0);
MoveVector := DraggableImage.LocalToAbsoluteVector(MoveVector);
if DraggableImage.ParentControl <> nil then
MoveVector := DraggableImage.ParentControl.AbsoluteToLocalVector(MoveVector);
DraggableImage.Position.Point := DraggableImage.Position.Point + MoveVector.ToPointF;
end;
Not: www.fire-monkey.ru formundaki bir yazıdan anladığım kadarı ile uyguladığım bir uygulamadır.
19 Eylül 2014 Cuma
Delphi Android Cihaz Dil öğrenme
Merhabalar,
Embarcaderonun formunda gezinirken bir soruya verilen cevaptan aldığım kodları sizlerle paylaşıyorum.
Sadece Android platformda denedim MACOS olanlar kendileri deneyip yoruma bilgilendirmeyi yapabilirler.
Embarcaderonun formunda gezinirken bir soruya verilen cevaptan aldığım kodları sizlerle paylaşıyorum.
Sadece Android platformda denedim MACOS olanlar kendileri deneyip yoruma bilgilendirmeyi yapabilirler.
function GetOSLangID: String;
{$IFDEF MACOS}
var
Languages: NSArray;
begin
Languages := TNSLocale.OCClass.preferredLanguages;
Result := TNSString.Wrap(Languages.objectAtIndex(0)).UTF8String;
{$ENDIF}
{$IFDEF ANDROID}
var
LocServ: IFMXLocaleService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocServ)) then
Result := LocServ.GetCurrentLangID;
{$ENDIF}
end;
5 Eylül 2014 Cuma
Delphi Android Sqlite ve Listview kullanımı
Merhabalar,
Bir arkadaşımız istediği için küçük bir proje hazırladım.
Projede:
~SQLite Ekleme,Silme ve Sorgulama işlemleri,
~Listview kullanımı.
bu iki konuyu görebileceksiniz.
İndirme Linki: http://s3.dosya.tc/server27/EPe5dy/SQL_Proje.rar.html
Edit : 21.02.2017
Linkleri yenileme imkanım yoktur. Aşağıdaki linkten daha detaylı bilgi alabilirsiniz.
http://brsatalay.blogspot.com.tr/2014/07/mobile-sifre-takip-uygulamas-kaynak.html
Bir arkadaşımız istediği için küçük bir proje hazırladım.
Projede:
~SQLite Ekleme,Silme ve Sorgulama işlemleri,
~Listview kullanımı.
bu iki konuyu görebileceksiniz.
İndirme Linki: http://s3.dosya.tc/server27/EPe5dy/SQL_Proje.rar.html
Edit : 21.02.2017
Linkleri yenileme imkanım yoktur. Aşağıdaki linkten daha detaylı bilgi alabilirsiniz.
http://brsatalay.blogspot.com.tr/2014/07/mobile-sifre-takip-uygulamas-kaynak.html
EKRAN GÖRÜNTÜLERİ
Kaydol:
Kayıtlar (Atom)












