16-11-2020, Saat: 08:10
16-11-2020, Saat: 10:07
@r3n4m3 isteği üzerine bir uygulama geliştirmiştim eğer işinize yarayacaksa paylaşayım.
Not: Lütfen eğer istiyorsanız özelden yazmayınız direkt olarak belirtiniz; müsait olunca konu açarak yardımcı olayım.

Not: Lütfen eğer istiyorsanız özelden yazmayınız direkt olarak belirtiniz; müsait olunca konu açarak yardımcı olayım.

16-11-2020, Saat: 11:33
(16-11-2020, Saat: 10:07)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ]@r3n4m3 isteği üzerine bir uygulama geliştirmiştim eğer işinize yarayacaksa paylaşayım.
Not: Lütfen eğer istiyorsanız özelden yazmayınız direkt olarak belirtiniz; müsait olunca konu açarak yardımcı olayım.
@Halil Han BADEM hocam müsait olunca ben alabilirim çok teşekkür ederim.
16-11-2020, Saat: 14:39
(16-11-2020, Saat: 11:33)bydelphi Adlı Kullanıcıdan Alıntı: [ -> ](16-11-2020, Saat: 10:07)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ]@r3n4m3 isteği üzerine bir uygulama geliştirmiştim eğer işinize yarayacaksa paylaşayım.
Not: Lütfen eğer istiyorsanız özelden yazmayınız direkt olarak belirtiniz; müsait olunca konu açarak yardımcı olayım.
@Halil Han BADEM hocam müsait olunca ben alabilirim çok teşekkür ederim.
Birkaç yerini optimize etmem gerek. Excel'i yüklerken çok uzun sürüyor. Şimdi onu ms hızına indirdim. Excel'i import edince tek tek sorgulama yapıp yanına sonucu yazıyor. Sonra isterseniz excel, csv veya xml olarak çıktı alabilirsiniz. Giriş işlemi için kişisel e devlet bilgilerinizi girmeniz gerekiyor. İnternete (3. şahıs) herhangi bir veri göndermiyor. Güvenlik için sniff yapabilirsiniz. Paylaşım linkini projeyi bitirince göndereceğim. (Source kodu henüz göndermeyeceğim.)
16-11-2020, Saat: 15:01
@Halil Han BADEM bir öneri de bulunmak istiyorum.
"Eğer istenirse paylaşabilirim" demişsin. Bu şekilde genel kullanıma açacağın ve karmaşık olmayan küçük projelerde önerim Delphi ile gelen baz componentleri kullanmalısın.
Bu şekilde projeyi kullanmak isteyen veya değerlendirmek isteyen daha fazla kullanıcıya da kolaylık ve erişim sağlamış olursun. Bu durumda elinde hali hazırda DevEx kurulu olmayan kullanıcı grubu da değerlendirmiş olur.
"Eğer istenirse paylaşabilirim" demişsin. Bu şekilde genel kullanıma açacağın ve karmaşık olmayan küçük projelerde önerim Delphi ile gelen baz componentleri kullanmalısın.
Bu şekilde projeyi kullanmak isteyen veya değerlendirmek isteyen daha fazla kullanıcıya da kolaylık ve erişim sağlamış olursun. Bu durumda elinde hali hazırda DevEx kurulu olmayan kullanıcı grubu da değerlendirmiş olur.
16-11-2020, Saat: 15:04
(16-11-2020, Saat: 15:01)3ddark Adlı Kullanıcıdan Alıntı: [ -> ]@Halil Han BADEM bir öneri de bulunmak istiyorum.
"Eğer istenirse paylaşabilirim" demişsin. Bu şekilde genel kullanıma açacağın ve karmaşık olmayan küçük projelerde önerim Delphi ile gelen baz componentleri kullanmalısın.
Bu şekilde projeyi kullanmak isteyen veya değerlendirmek isteyen daha fazla kullanıcıya da kolaylık ve erişim sağlamış olursun. Bu durumda elinde hali hazırda DevEx kurulu olmayan kullanıcı grubu da değerlendirmiş olur.
Tabii ki; görünüm bakımından hoş olsun diye devex kullandım. Bunu sadece Delphi IDE ile gelen componentler ile de yapabilirim. Zaten ilk aşamada exeyi dağıtacağım. Kaynak kodda biraz karmaşık değişiklikler yapmak zorunda kalacağım. Exe ile geçici sorunlar çözülsün; source için bu hafta içi veya haftasonu paylaşırım zaten. İsteyen istediği gibi kullansın. Exe için isteyen olursa ibaresini kullandım.
16-11-2020, Saat: 17:11
(16-11-2020, Saat: 10:07)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ]@r3n4m3 isteği üzerine bir uygulama geliştirmiştim eğer işinize yarayacaksa paylaşayım.
Not: Lütfen eğer istiyorsanız özelden yazmayınız direkt olarak belirtiniz; müsait olunca konu açarak yardımcı olayım.
Evet Halil yardımcı oldu geçici lazımdı ve bu çözüm ile bizi kurtardı
. Bunu artık bıraktım çünkü api geldi ve saniyelik olarka 500 er kayit yapabiliyoruz. Fakat apiye sahip olmayanlar bu uygulama yardımcı olabilir.Kolay gelsin
16-11-2020, Saat: 23:41
@Halil Han BADEM Proje bitince gönderirmisiniz.
İyi çalışmalar.
İyi çalışmalar.
17-11-2020, Saat: 10:11
(17-11-2020, Saat: 08:50)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ]Dün işten eve geçince exeyi düzeltip atacaktım fakat halsizlik ve baş ağrısından dolayı bilgisayara geçemedim. Bu yüzden kusura bakmayın. Bugün mesai arasında veya akşamında exeyi paylaşayım sizlerle.
Tekrar merhaba,
hemen excelden hızlandırma işlemini yapıp; yükledim. Dediğim gibi sizlerde test etmiş olacaksınız bende o ara evde boş olduğum saatlerde birkaç yeri geliştirmem gerekecek sonrasında ise kaynak kodu Github hesabından paylaşacağım.
Kullanım:
- Dosyayı indirdikten sonra yanında bulunan exceldeki "HES KODU BURAYA" alanlarına hes kodlarını girebilirsiniz.
- Sonrasında uygulamayı açınız.
- Excel ile import seçeneğine tıklayıp dosyayı import edin.
- İlgili kayıtlar grid üzerinde gözükecektir.
- "Giriş Bilgileri" butonu ile E-Devlet bilgileriniz ile giriş yapınız. Boşluklu bir ekranda E-Devlet ekranı gözükecektir zaten oradan takip edebilirsiniz.
- Giriş yapıldıktan sonra "HES Modülüne Git" butonu ile ilgili modüle gidiniz.
- Sonrasında Sorgulamayı başlat demeniz yeterli olacaktır.
NOT
Griddeki alanlar @r3n4m3 hocamızın isteğinden kalmadır. Dediğim gibi düzenleme yapma imkanım olmadı bende birkaç ufak değişiklik yapıp en azından iş görmelik vaziyete getirdim. Umarım geçici anlamda işinizi görür. Kaynak kodları bir kütüphane tarzında yazmıştım orada dediğim gibi düzenlemeler ve kontroller eklemem gerekecek. Açık kaynak şeklinde Github hesabımdan paylaşacağım inşallah.
Teşekkürler ve Elinize sağlık.
17-11-2020, Saat: 14:26
@Halil Han BADEM'i paylaşımları için takdir ediyor ve desteği için teşekkürlerimi sunuyorum.
Bu paylaşımda kendisi de aslında hak verecektir, E-Devlet erişim bilgilerinin kapalı EXE içerisinde sunmak çok ama çok tehlikelidir.
E-Devlet bilgilerimiz kişiye özel olduğundan yasal olarak da bu tip paylaşımları tasvip etmiyorum. Önce bunun altını çizeyim.
Paylaşım yaptığım ve araştırdığım konu tümüyle, "Sağlık Bakanlığı HES kodu sorgulaması" üzerinden - KİŞİSEL HERHANGİ BİR VERİ GÖNDERMEKSİZİN - HES kodu sorgusu üzerine idi.
Sağlık Bakanlığı bu takibi TCKimlik no üzerinden yapabilecek iken, HES kodu gibi bir çözüme başvurmasının sebeplerinden birisi de bu olmalı diye düşünüyorum.
Bu amaç kişilerin TCKimlik bilgilerini dahi karşı tarafa vermesinin önüne geçilmesi içindir.
Çözüme ilişkin paylaşımım ise şu şekilde: Sadece kendi projelerinizde kendinizi yazacağı kod olarak değerlendirmenizi salık veririm. Üçüncü parti kullanımlar tümüyle hukuksuzdur.
Bu yapı forumda da sıkça paylaştığımız basit birer HTML parse işlemidir.
Not: Salt yapıyı veriyorum, kontroller ile donatılabilir.
Örnek kullanım :
Bu paylaşımda kendisi de aslında hak verecektir, E-Devlet erişim bilgilerinin kapalı EXE içerisinde sunmak çok ama çok tehlikelidir.
E-Devlet bilgilerimiz kişiye özel olduğundan yasal olarak da bu tip paylaşımları tasvip etmiyorum. Önce bunun altını çizeyim.
Paylaşım yaptığım ve araştırdığım konu tümüyle, "Sağlık Bakanlığı HES kodu sorgulaması" üzerinden - KİŞİSEL HERHANGİ BİR VERİ GÖNDERMEKSİZİN - HES kodu sorgusu üzerine idi.
Sağlık Bakanlığı bu takibi TCKimlik no üzerinden yapabilecek iken, HES kodu gibi bir çözüme başvurmasının sebeplerinden birisi de bu olmalı diye düşünüyorum.
Bu amaç kişilerin TCKimlik bilgilerini dahi karşı tarafa vermesinin önüne geçilmesi içindir.
Çözüme ilişkin paylaşımım ise şu şekilde: Sadece kendi projelerinizde kendinizi yazacağı kod olarak değerlendirmenizi salık veririm. Üçüncü parti kullanımlar tümüyle hukuksuzdur.
Bu yapı forumda da sıkça paylaştığımız basit birer HTML parse işlemidir.
Not: Salt yapıyı veriyorum, kontroller ile donatılabilir.
function HesKoduByEDevlet( TCKimlikNo, EDevletParola: String; HESKoduListesi: String; aWebBrowser: TWebBrowser ): String;
procedure WaitFor( aKey: String );
var
Content : String;
begin
Content := '';
while (Pos( aKey, Content ) = 0) do
begin
try Content := aWebBrowser.OleObject.Document.Body.InnerHtml; except end;
Sleep(100);
Application.ProcessMessages;
end;
end;
Const
URL_EDevletLogin = 'https://giris.turkiye.gov.tr/Giris/e-Devlet-Sifresi';
URL_HesKodu = 'https://www.turkiye.gov.tr/saglik-bakanligi-hes-kodu-sorgulama';
var
HESContent : String;
aList : TStringList;
aIdx : Integer;
begin
aList := TStringList.Create;
aList.Text := HESKoduListesi;
try
// Login İşlemi //
aWebBrowser.Navigate( URL_EDevletLogin );
while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
begin
Sleep(100);
Application.ProcessMessages;
end;
aWebBrowser.OleObject.Document.GetElementById('tridField').Value := TCKimlikNo;
aWebBrowser.OleObject.Document.GetElementById('egpField').Value := EDevletParola;
aWebBrowser.OleObject.Document.getElementsByName('submitButton').item(0).click;
WaitFor( 'Kullanıcı Menüsü' );
for aIdx := 0 to aList.Count-1 do
begin
// HES Kodu Giriş Sayfasına Geçiş İşlemi //
aWebBrowser.Navigate( URL_HesKodu );
while aWebBrowser.ReadyState <> READYSTATE_COMPLETE do
begin
Sleep(100);
Application.ProcessMessages;
end;
// HES Kodu Sorgulama İşlemi //
aWebBrowser.OleObject.Document.GetElementById('hes_kodu').Value := aList[aIdx];
aWebBrowser.OleObject.Document.forms.item(1).Submit;
WaitFor( '>Yeni Sorgu<' );
// HES Kodu Sorgu Sonucu Parse İşlemi //
HESContent := aWebBrowser.OleObject.Document.Body.InnerHtml;
System.Delete( HESContent, 1, Pos('>Yeni Sorgu<', HESContent) + Length('>Yeni Sorgu<')-1 );
if Pos('>Sağlık Bilgileri<', HESContent ) > 0 then
begin // Kod Geçerli Detay Bilgi
System.Delete( HESContent, 1, Pos('>Risk Durumu<', HESContent) + Length('>Risk Durumu<')-1 );
System.Delete( HESContent, 1, Pos('<dd>', HESContent) + Length('<dd>')-1 );
end else
begin // Kod Geçersiz mesajı döndürelim..
System.Delete( HESContent, 1, Pos('<span>', HESContent) + Length('<span>')-1 );
end;
aList[aIdx] := aList[aIdx] + '|' + Copy( HESContent, 1, Pos('<', HESContent)-1 );
end;
Result := aList.Text;
finally
aList.Free;
end;
end;
Örnek kullanım :
procedure TForm1.BitBtn1Click(Sender: TObject); var aListe : TStringList; begin aListe := TStringList.Create; try aListe.Add( 'N3X9-5127-12' ); aListe.Add( 'R7T1-7513-19' ); // aListe.Text := HesKoduByEDevlet( 'tckimlik_numaranız', 'edevlet_parolanız', aListe.Text, WebBrowser1 ); Showmessage( aListe.Text ); finally aListe.Free; end; end;

