Pazar, Hazirane 11, 2006 - Delphi 2006 ve ASP.NET İle Arşivbank Site Tasarımı -3-
Gözüme artık bir Türk dizi film klasiği gibi görünmeye başlayan yazı dizimizin 3 ncüsüne hoş geldiniz.
Bu yazımızda Arşivbank sitesinin tasarımında gerekli malzemeler arasında saydığımız CSS dosyaları ile bir önceki yazıda kısaca değindiğimiz ASPX - ASCX sayfaları üzerinde duracağız.
Yeni bir ASP.NET projesiyle birlikte BDS 2006'nın bizim için oluşturduğu dosyaları sıralarken bunlardan birininde WebForm1.ASPX olduğunu belirtmiştik. Ayrıca hatırlamak bakımından ASPX ve ASCX sayfalarının (dosyalarının) tasarımla kodlamayı birbirinden ayırmak için kullanıldığından söz etmiş ve buna ilişkin sayfa içeriklerini göstermiştik.
Diğer web betik dilleriylede kullanılan sayfa içeriğinin belli şartlara göre belli yerlerinin değiştirilmesi, kalan kısımların standardizasyonun sağlanması bakımından aynı kalması için sayfayı enust, orta, sol, sag ve enalt olmak üzere 5 temel parçaya bölmeye karar verdim. Bu sayfaların yerlerine bağlı olarak ilgili CSS dosya şablonlarını yerleştirdim.
En üstte bir banner ve ana gezinti bağlantıları, solda gezinti bağlantıları, sağda yönetim panelleri ve kısa duyuru başlıkları, en altta telif hakkı, tasarım bilgileri vb., ve ortada haberler ve kullanıcı seçimine göre ilgili sayfalar çıkacak biçimde yapılan tasarımda şimdilik bir tane ASPX sayfası ve oldukça fazla ASCX sayfası bulunmaktadır.
ASCX sayfaları .NET dilinde User Control (Kullanıcı Kontrolü) Page olarakta anılmaktadır. Daha öncede belirttiğimiz gibi tek başlarına published (yayımlanma) edilmeleri mümkün olmayan bu sayfalar ancak bir ASPX sayfasına tutturularak kullanılabilmektedir. Bizim tasarımımızda mevcut tek ASPX sayfasının üzerinde aşağıdaki resimde görülen user control (ASCX)(Kullanıcı kontrol) sayfaları bulunmaktadır.

Tabi biraz hızlı gidiyoruz. Yürümeyi bilmeyen birinden koşmasını beklemek olmaz. Delphi IDE'yi kullanmayı bildiğinizi varsayıyorum. Eğer buraya yabancıysanız biraz mıncıklayın çabuk öğrenirsiniz.
Yeni bir ASP.NET projesi oluştururken BDS'NİN otomatik oluşturduğu WebForm.ASPX sayfasının adını default.aspx ile değiştirdim. Ve her yeni user control sayfasını File > New > Other > ASP.NET User Control seçenekleriyle tek tek oluşturdum.

Oluşturduğum User Control sayfalarını aspx sayfalasına statik olarak bağlamak için BDS desing sekmesine geçip ilgili UserControl sayfasını project manager'dan default.aspx sayfasının üzerine sürükleyip bıraktım. Project manager'i görüntülemek için CTRL+ALT+F11 yapın. BDS içinde sayfanın adıyla, koduyla, tasarımıyla ve geçmişiyle ilgilenmek içinde aşağıdaki resimde görülen sekmelere tıklayın.
 Bu basit sürükle bırak işleminin arkasından BDS bizi bir sürü dertten kurtarıp User Control sayfasıyla ilgili bilgileri aspx sayfamızda page direktifinden sonra ilgili yerlere yerleştiriyor.
<%@ Page language="c#" Debug="true" Codebehind="default.pas" AutoEventWireup="false" Inherits="Default.TWebForm_Default" Trace="false"%>
Her bir usercontrol tanımı aspx sayfamıza kod olarak bu bildirimlerle ekleniyor. <%@ Register TagPrefix="uc1" TagName="enust" Src="enust.ascx" _fcksavedurl=""enust.ascx"" %> <%@ Register TagPrefix="uc1" TagName="sol_sidebar" Src="sol_sidebar.ascx" %> <%@ Register TagPrefix="uc1" TagName="default_orta" Src="default_orta.ascx" %> <%@ Register TagPrefix="uc1" TagName="sag_menubar" Src="sag_menubar.ascx" %> <%@ Register TagPrefix="uc1" TagName="enalt" Src="enalt.ascx" %> <%@ Register TagPrefix="uc1" TagName="orta_yazi_sablonu" Src="orta_yazi_sablonu.ascx" %>
Dikkat ettiyseniz daha tek satır kod yazmadık. Bütün işi BDS bizim için yapıyor. Yukarıdaki user control sayfa deklarasyonunu incelemenizi öneririm. Tüm .NET platformunda geçerli olan bu söz dizimiyle ilgili bir imdat merkezine uğrayın. Ben dilim döndüğü kadarıyla tercüme edeyim.
<%@ Page language="c#"
Üzerinde çalıştığımız sayfa tanımını deklare etmek için kullandığımız ayan beyan ortada. language="c#" bildirimi sayfanın konuştuğu dili anlatıyor. Biz BDS ile yazıyoruz ne alaka dediğinizi duyar gibiyim. Bencede ama anladığım kadarıyla BDS derleme aşamasında sayfaları C# ile uyumlu derliyor olmalı. Dil olarak VB, JS gibi dilleride seçebiliyoruz. Her bir ASPX sayfasında sayfa direktifinden yanlızca bir adet bulunabilir.
Debug="true"
Değerini işimiz bitip yayına vereceğimizde false yapıp kapatıyoruz ki .NET tasarım yapmadığımızı bilsin.
Codebehind ="default.pas"
ile bu aspx sayfasının ilişkili olduğu kodlama unit dosyasını gösteriyoruz. Bu biraz dfm-pas ilişkisine benziyor. Ancak tam olarak böyle değil. Çünki aspx uzantılı sayfa içeriği kendi içinde barındırılıyor.
Inherits="Default.TWebForm_Default" Sayfa oluşturulurken kullanılacak sınıf tanımı. TWebForm_Default = class(System.Web.UI.Page) Trace="false" Sayfa oluşumu ve yayımı esnasında tüm ayrıntılarıyla değişen durumlarını, istemci-sunucu arasındaki diyalogları izlemek için "true" kapatmak için "false". Çok kullanışlı bir icat olmuş. <%@ Register TagPrefix="uc1" TagName="enust" Src="enust.ascx" %> Sayfaya statik bir user control tutturmak için kullanılan söz dizimi. Dinamik tutturmayı ileride göreceğiz. Sık sık kullanacağımız işlemlerde örneğin aynı tasarımı birden fazla yerde kullanmamız gerektiğinde User Control sayfalarından faydalanmalıyız. Arşivbank tasarımında orta sayfa hariç diğer bölümler sitenin tüm bölümlerinde aynı olacağından ana sayfayı (default.aspx)'i 5'e bölüp her bir bölüme bir UserControl ekledim. Orta bölümdeki usercontrol sayfasını ise talebe göre değişecek şekilde tasarladım. Şimdilik bir kullanıcı kontrolü sayfasının dinamik olarak bir sayfaya dahil edilmesine ilişkin BDS pas kodunu vererek bu yazıyıda bitiriyorum. procedure TWebUserControl1.Page_Load(sender: System.Object; e: System.EventArgs); Var osyf : Integer; begin osyf := 0; if (Assigned(Page.Request.Params['t'])) AND (Page.Request.Params['t'] <> '') then osyf := Int32.Parse(Page.Request.Params['t'].ToString) else osyf := 0; case osyf of 0 : begin Label1.Text :='Arşivbank Hakkında'; Label2.Text :='Arşivbank Konsepti'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('default_orta.ascx')); end; 1 : begin Label1.Text :='Arşivbank Projesi Hakkında'; Label2.Text :='Arşivbank Tasarlama ve Gelişim Süreci'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('orta_about.ascx')); end; 2 : begin Label1.Text :=''; Label2.Text :='Arşivbank Proje Ekibi'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('proje_ekibi.ascx')); end; 3 : // Geliştiriciler için yönetim paneli begin Label1.Text :=''; Label2.Text :='Geliştirici Girişi'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('gelistirici_login.ascx')); end; else begin Label1.Text :='Arşivbank Hakkında'; Label2.Text :='Arşivbank Konsepti'; PlaceHolder_Yazi.Controls.Add(Page.LoadControl('default_orta.ascx')); end; end; end; Devamında görüşmek dileğiyle, esen kalın.
|
|
Yorum (yok) :: Yorum yaz! :: Bağlantı
|
Perşembe, Hazirane 8, 2006 - Delphi 2006 ve ASP.NET İle Arşivbank Site Tasarımı -2-
Reklam arasının kısa olanı makbüldür. Delphice ASP.NET ile arşivbank sitesi tasarımı konusundaki 2 nolu yazımıza hoş geldiniz.
Eğer sizde benim gibi tüm uygulamalarda en son çare yardım sistemlerine bakıyorsanız .NET uygulamaları geliştirirken zaman zaman buna ara vermenizi, bir örnek üzerinde çalışırken sık sık imdat düğmesine basmanızı öneririm.
BDS 2006'da yeni bir proje oluşturduğumuzda ekrana gelenNew ASP.Net Application
1. Önce IIS'de sanal bir web yolu (Alias) oluşturuluyor. (Resim-1) penceresinde boş yerleri doldurup OK. dediğimizde ; Resim - 1
2. IIS'in kurulu olduğu sürücüdewwwroot altında proje adıylaeş isimli bir klasör oluşturuluyor. 3. Proje adıyla oluşturulan klasörün altınada bin ismiyle derleme sonucu ASP.NET dll dosyası ve kullanacağınız diğer paketlerin yer alacağı bir başka klasör oluşturuluyor. 4. Yine proje klasörünün altına Webform.aspx, global.asax,web.config,Webform1.pas dosyaları oluşturuluyor. Klasör ve dosya yapısı : . .. bin Global.asax Global.pas Web.config WebForm1.aspx WebForm1.pas
gibi bir hal alıyor. Burada aynı isme fakat farklı uzantıya sahipWebForm1.* dosyaları üzerinde çalıştığımız projede kullanacağımız temel dosyalar,global.asax veweb.config dosyalarıda uygulamanın global ayar ve değişken tanımlarının saklandığı dosyalar. Şimdilik bu son iki dosyayı atlıyoruz.
WebForm.* Dosyaları
Eğer Asp, php gibi bir web betik diline el ve göz alışkanlığınız varsa tasarım için kullanılan sayfalarla, dinamik eleman öğeleri, procedure, fonksiyon ve değişken tanımlamalarının iç içe geçtiğini, bu yüzdende bazen tasarımın okunurluğunun azaldığını hatırlayacaksınız. Php gibi dillerde bu tip durumlar için template sınıfları, şablon dosyaları kulanılabiliyormuş. Asp'deki durumu bilmiyorum. Şahsen okuma yazma bildiğimden web tasarım etiketleriyle, betik dil kodlarının bir birine geçmesi konusunda hiç şikayetçi olmadım. Ancak tasarımla kodlamanın ASP.NET'teki gibi ayrılabilmeside gerçekten okunurluğu artırıyor.
ASPX ve birazdan değineceğimiz ASCX uzantılı sayfalar kodlamayla tasarımın ayrıştırılmasında kullanılıyor. BDS 2006 bir ASPX/ASCX sayfası üzerinde tıpkı frontpage, dreamwaver vs uygulamalarındaki gibi tasarımı anında gösterebilme yeteneğine sahip. Bu sayfaların üzerine .NET Web ve Dataset bileşenleri, HTML etiketleri ve form elemanlarını koyuyoruz. Koyduğumuz her bir elemana karşılık BDS aşağıdaki örnekte görüleceği üzere ilgili tasarım dosyasına bizim için gidip gereken ifadeleri çiziktiriyor. (Resim - 2)
 Resim -2
Buda bu sayfanın içindekiler :
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="gelistirici_login.pas" Inherits="gelistirici_login.TWebUserControl1"%> Lütfen Kullanıcı adınız ve şifrenizle giriş yapınız.
Herhalde pas uzantılı dosyanın ne işe yaradığını söylemeye gerek yok. Buda bu sayfanın pas dosyası.
unit gelistirici_login;
interface
uses System.Data, System.Drawing, System.Web, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls, System.ComponentModel, Borland.Data.Provider,System.Web.SessionState, System.Configuration, MySql.Data.MySqlClient,Borland.Vcl.SysUtils;
type /// /// Summary description for WebUserControl1. /// TWebUserControl1 = class(System.Web.UI.UserControl) {$REGION 'Designer Managed Code'} strict private components: System.ComponentModel.IContainer; procedure InitializeComponent; procedure Button1_Click(sender: System.Object; e: System.EventArgs); {$ENDREGION} strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected Button1: System.Web.UI.WebControls.Button; MySqlBaglantisi: MySql.Data.MySqlClient.MySqlConnection; MySqlCommand1: MySql.Data.MySqlClient.MySqlCommand; Label_GuvenlikKodu: System.Web.UI.WebControls.Label; Label_Hata: System.Web.UI.WebControls.Label; procedure OnInit(e: System.EventArgs); override; private FHataKodu : String; procedure SetGuvenlikKodu; function GecerliGelistiriciGirisimi: Boolean; { Public Declarations } end;
implementation
function RandomString(PWLen: integer): string; const StrTable: string = 'ABCDEFGHIJKLM' + '0123456789' + 'NOPQRSTUVWXYZ'; var N, K, X, Y: integer; begin Randomize; if (PWlen > Length(StrTable)) then K := Length(StrTable)-1 else K := PWLen; SetLength(result, K); Y := Length(StrTable); N := 0;
while N < K do begin X := Random(Y) + 1; if (pos(StrTable[X], result) = 0) then begin inc(N); Result[N] := StrTable[X]; end; end; end;
function TWebUserControl1.GecerliGelistiriciGirisimi:Boolean; Var _MySqlDataReader : MySqlDataReader ; begin try
------------
Editörün session time out'una yakalanmadan ASCX ve ASPX hakkında bir kaç giriş bilgisi daha ekleyip bu yazıyıda reklam arası için burada kesiyorum.
ASPX ve ASCX arasındaki Fark
İkiside tasarımla ilgili bilgileri tutmasına rağmen bir aspx uzantılı dosya web sunucusundan doğrudan doğruya çağrılabilirken ascx uzantılı dosyalar bir aspx dosyasına tutturularak görüntülenebilmektedir. Tutturma ile ilgili işlemlere ileride değineceğiz. Ancak bu tutturma işleminin php' ve asp dekine benzediğini ama onlardan daha öte bir şey olduğunu aklınızda tutmanız yeterli. Tabii ki ASP.NET ile kullanılan başka dosya tipleride vardır. Ama okuyup yazabildiğimiz kadarı şimdilik bu kadar.
Bana verilen sürenin ve bir yazının daha sonuna geldik. Devamında buluşmak üzere, hoşçakalın.
|
|
Yorum (yok) :: Yorum yaz! :: Bağlantı
|
Salı, Hazirane 6, 2006 - Delphi 2006 ve ASP.NET ile Arşivbank Sitesi - 1 -
Başlığa bakıpta hemen heyecanlanmayın. Tek bir konuda tüm mevzuyu
anlatabilecek bilgiye henüz sahip değilim. Malümunuz
bizim bankanın sitesini
ömer hocanın
ve
IQBilisim katkılarıyla ASP.NET üzerine inşaa ediyoruz. Bazılarınız neden
PHP, ASP, PERL değilde ASP.NET diyecektir. Öncelikle bu benim kişisel tercihim
değil.
Arşivbank Projesi her ne kadar henüz fiili olarak çalışan organize olmuş bir
ekibe sahip değilsede ileriye dönük bir ekip sisteminin temelleri oluşturulmuş
bir projedir. Bu nedenle gerek halen bir şekilde proje içinde yer alan ekip
arkadaşlarım gerekse ileride ekibe girecek adaylar için ASP.NET teknolojisini ve
bu teknolojinin Delphi ile kullanımınıda pekiştirmeyi amaçlıyorum.
PHP, ASP gibi dillere nazaran evveliyatımda çok azda olsa ASP.NET ile
tanışmışlığım var. ASP.NET ile www üzerinde hem Türkçe hem diğer dillerde kaynak
sıkıntısı çekeceğinizi sanmıyorum. Ancak Delphi 2006 gibi bir dille ASP.NET
uygulamaları konusunda henüz yeteri kadar Türkçe kaynak yok.
Hatta öyleki delphi'nin yerleşik imdat (Help) sisteminde bile .NET FRAME
WORK class yardımı ağırlıklı geliyor. .NET FRAME WORK'e yönelik VB., C#, J# gibi
diller için örnekler yardımın içinde mevcut. Ancak yardımın içinde delphi 2006
için daha .NET ile ilgili tek bir örnek satır göremedim. Ya ben bakmayı
bilmiyorum, yada Delphi'yi geliştiren ekip unutmuş.
Başlıktan da anlayacağınız üzere dilim döndüğü, vaktim yettiği kadar bizim
bankanın site tasarımını yaparken yaptığım işleri, kodları, rastladığım
ipuçlarını burdan paylaşacağım. Olaki daha iyisini bilen arkadaşlarımız bize
extra bilgiler sağlayarak katkıda bulunur, yol gösterirler. UMut ediyorum ki bu
yazı dizisi sonunda paylaşacağımız tüm bu bilgiler sadece delphi 2006 için
değil, .NET FRAME WORK uygulamalarının tamamını kapsayan güzel bir kütüphane
olacaktır.
Cevizde zaten ASP.NET için bir forum mevcut olduğundan, muhtemelen
eksiklerimizin, yanlışlarımızın çoğunu bu bölümdeki arkadaşlarımızın desteği ile
gidereceğiz. Biz onlara Visual Studio sürümlerine alternatif olarak Delphi 2006
masalını okuyacağız, onlarda bize ASP.NET ile ilgili konuları anlatacak, yol
gösterecekledir.
Dilimin dönmediği, vaktimin yetmediği yerlerde yardım ve desteğinizi
esirgemeyeceğinizi umaraktan ufak ufak başlayalım.
Gerekli Takım Taklavat Listesi :
Biraz yemek tarifi gibi oldu ama espriyi bozmamak adına burada
anlatacaklarımızı uygulayabilmek için aşağıda listelenen uygulamalara
ihtiyacımız olacak.
- Çok pişmiş tüm güncellemeleri yapılmış bir OS. Tercihen Windowz 2003
Server veya Windowz XP Profesyonel. Sakın ola emektar windowz95/98/me ile bu
işi kıvırabileceğimizi düşünmeyin, yanılmış olursunuz.
- Servis istasyonuna uğranıp 1 nci vitese takılarak havası alınmış IE 6.0
+ SP 1. Burada bir anti parantez açayım, bu şartın gerekçesini tam olarak
anlamış değilim. Yani neden ff, opera değilde ie. Ben derlenmiş ASP.NET
sayfalarımı ff ve operadada görebiliyorum ki. Belki bir yerlerde ayar
düğmesi vardırda biz daha görmemişizdir. Ama her nedense Borland ekibi MS
ile ortakmış gibi illede ie illede ie demişler. Üstelik birde yamalı
olacak.
- .NET FRAME WORK 1.1. Kambersiz düğün olmaz değil mi?
- Tam kıvamında delphi 2006. Namı diğer Borland Developer Studio 2006 .
Sossuz. Sadece hot fixleri yüklesenizde yeter. Bu arada bundan sonra delphi
2006 demeyip sadece BDS veya BDS 2006 demek istiyorum. Umarım hatırlayıp
karıştırmazsınız.
- Mümkünse www'de bir adet web sitesi. Değilse boş verin lokal takılalım.
- Bir adette veri tabanı hizmet birimine ihtiyacımız var. Ben MySQL'i tercih
ettim. Üstelik taa jüpiter'e konuşlu. Lokal bile değil. Ama tercih sizin. En
azından Access bari olsun. En azından lafına sakın kimse alınmasın severim
Access'i. Bu konuyu başka bir yerlerde zaten tartışıyoruz.
- Tatlı olarak biraz CSS, resim vs.
Hepsi bu kadar. Eğer elinizin altnda BDS 2006 'nın benim adını böyle
söylemeyi sevdiğim Arşiment sürümü varsa bütün bunlar sizin için otomatik
kurulacaktır. Ama isterseniz de ellede tek tek elleyip kurabilirsiniz.
Varsayılan modunuzda tüm bu uygulamaların kurulması pişirilip servis edilmesi
gibi konularda deneyim sahibi olduğunuzu düşünüyorum. Değilse önce bunlar
hakkında biraz malümat alıp tekrar buraya dönün. Ben sizi beklerim.
BDS 2006'yı Nasıl Başlatsak ?
Ben delph 6 ya kadar olan sürümlerin hepsiyle iyi kötü çalıştım. Arada
Delphi7' ve 2005'i atladım. Ama biraz delphi 8 aşnalığımda yok değil. Nerdeyse
delphi işini bırakıp C# ve Visual studio işine dalacaktım ki, Borland'cı
kardeşlerimiz Delphi 2006'yı tasarlamışlar. İyide yapmışlar kalbimi tekrar
kazandılar.
Saydım BDS 2006'da tam 4 çeşit başlangıç şekli var. Şimdi şekillerle
ilgilenmediğimizden yeri gelirse deşeriz. Bize ASP.NET için lazım olanlar ;
- "C:Program FilesBorlandBDS4.0Binbds.exe"
- "C:Program FilesBorlandBDS4.0Binbds.exe" -pDelphiDotNet
İkisinden biriyle bir uygulama başlatınca işimizi görecek yerleşik alet
edavat yüklenip karşımıza dikiliyor. File menüsünden new ordanda ASP.NET Web
Application - Delphi for Net deyince aşağıdaki pencere açılıyor.

Yazıyı daha fazla uzatmamak ve ceviz'in reklam gelirlerini artırmak için tamda
bu noktada bir reklam arası veriyoruz. Arayı fazla uzatmadan devam etmeye
çalışacağız. Reklam arasında yazıya ilişkin eleştirilerden çok, ASP.NET ile
ilgili bilgilere ağırlık vereceğinizi umuyorum. Baştada söylediğim gibi bende
yazarken sizinle birlikte öğreniyorum. Her ne kadar burada herkes acemiyim diye
bağırsada biz kimin acemi kimin usta olduğunu biliyor ve bu ustaları zevkle
takip ediyoruz değil mi? Hepinize selamlar, çalışmalarınızda başarılar..
|
|
Yorum (yok) :: Yorum yaz! :: Bağlantı
|
Perşembe, Mayıs 25, 2006 - Veri Ekleme Modülü Satır Başları
Muz cumhuriyetinde hava çok sıcak. Adeta farem elime yapışıyor.
Veri yükleme modülünde aşağıdaki mantık dizisi kullanılıyor. - Kullanıcı arşivlemek istediği veriyi gözüne kestiriyor ve bankaya gidiyor.
- Veri Ekleme Modülüne Giriş Yapıyor
- Burada görünen veri ekleme modülü ekranı açılıyor
- Ekleyeceği veriyi seçiyor
- Veri veri tabanına gömülecekse
- Seçildiğinde otomatik olarak editöre akıtılması istenmişse dosya tipine göre editöre yükleniyor
- İster manuel ister otomatik yüklensin Editörün söz dizimi, tanımlıysa verinin uzantısına bakarak varsayılan söz dizimi ayarlanıyor
- Kullanıcı isterse verinin varsayılan söz dizimini değiştiriyor
- Kullanıcı isterse mevcut veri üzerinde değişiklik yapıyor
- Veri veri tabanına gömülmeyecekse - Sadece fiziksel bilgiler saklanacak
- Veri bilgileri varsayılan değerleri ayarlanıyor
- Kullanıcı isterse bu bilgiler üzerinde değişiklikler yapıyor
- Ekleyeceği veriyi dahil edeceği sınıflandırmayı ve kategorileri ayarlıyor
- Veriyle ilgili detay alan bilgilerini giriyor/seçiyor
- Veri veri tabanına ekleniyor
İşte bana yardımcı olabileceğiniz bir konu size. Veri gömülecekse editör için bir varsayılan söz dizimi seçimi yapılması gerekiyor. Biliyorsunuz ki Windows işletim sisteminde dosya türleri dosya Header bilgilerinde saklanıyor ve genel olarakda dosya uzantılarıyla ilgili dosyayı açacak/kullanacak program ilişkilendiriliyor. Benim aşağıdaki listede verdiğim söz dizimleri için dosya uzantıları ve yapabilen çıkarsa Header bilgilerine ihtiyacım var. Tüm bu yapıyı tek başıma ele almam uzun süreceğinden başta övünç hoca ve saz ekibi olmak üzere bizim bankayla ilgilenen tüm yazılımcılardan destek bekliyorum.
İşte bahse konu söz dizimi yapısı
HP48 CA-Clipper C++ Java Perl MS-DOS Batch Language Delphi/C++ Builder Form Definitions AWK Script HTML Document MS VBScript Galaxy General ObjectPascal x86 Assembly Language Python Tcl/Tk SQL Gembase INI files Standard ML Visual Basic ADSP21xx PHP Sybase SQL General Multi-Highlighter Cache object script Cascading Stylesheets Javascript KIX32 Baan 4GL Foxpro Fortran 68HC11 Assembler
Bizim bankaya yatırım yapmak zaman içinde çok karlı olacaktır. Bu nedenle ilgili arkadaşların desteklerini gecikmeksizin vereceklerinden eminim.
|
|
Yorum (yok) :: Yorum yaz! :: Bağlantı
|
Çarşamba, Mayıs 24, 2006 - Web ve Windowsu Çorba Yapalım
Bundan bir kaç yıl önce henüz piyasada .NET FRAME WORK diye bir kavram yokken, yada kaba inşaatının temelleri daha yeni atılırken el oğlu windows gibi ileri zekalı bir işletim sistemi uygulamasıyla web sayfalarını konuşturuyordu. Hepimiz Windows'un ne kadar ileri zekalı olduğunu biliyoruz değil mi ?
İşte o dönemlerde tamda şu sitede bana hilkat garibesi gibi görünen bir bileşen geçti elime. Ben ki delphi ile ISAPI/CGI uygulamaları konusunda tecrübe sahibiyken, kendimi web ve ileri zekalı windows grusu olarak görürken birden bire sönüverdim. İlk defa bu dünyada benden daha iyi yazılımcılar olduğunu kabul etmek zorunda kaldım. (Marco Cantu, Dr.Bob, ve Charlie Calvert gibi muhteremlere bile onların kitapları üstüne ders verebilirim sanıyordum. Gençlik işte. İnsan gençken fazla uçup enginlere açılabiliyor. )
Neyse işte bu mevzuya konu olan bileşenden önce çarli ve marko amcaların bir kaç yöntemi üzerine kurulu standart notasyona sahip kodcuklarım vardı. Bu satırları yazarken arada birde bu bileşenin bir yerlerini mıncıklamış mıyım diye bakındım ama nafile. Elimi bile sürmemişim.
Hani vardır ya şu başlayıpta bitiremediğimiz, bitirmediğimiz, bitirtilmeyen projeler. İşte o projelerden birinde almışım bir şeyler karalamışım bu bahse konu bileşene dayalı. Sanki köşe yazarıyımda. Bu yarım kalmış projenin adı "Borç Takma Bana Yakalarsam Bende Takarım Sana".
"Borç Takma Bana Yakalarsam Bende Takarım Sana" Üzerine Bir Kaç Satır
Bir dönem malüm memleketin durumu vahim. Batık ve hortumlanmış bankalar, develi üsyon, dolarım aldı gitti başını gelmedi geri, mark in aşağı ne işin var orda krizinin bini bir para. Borç takan takana. Esnaf kan ağlıyor. Benim gibi devletinin bekası için çalışan biride en çulsuz zamanlarında. (Hoş hala çulsuzum ya neyse ) Biz kendi halinde bir kaç arkadaş iş yapacak proje arıyoruz kendimize eli boşluktan. Biri dediki :
- "Benim kafamda bir iş var, daha doğrusu bu iş geçen yıl kağıt kürekle yapılmaya kalkıldıda sonra vazcayılan işler sepetine kondu". Tabii hepimiz merakla dinliyoruz. Muhterem devam etti.
- "Bu esnaf var ya. Bugünlerde kime güvenip mal satacağını bilemiyor. kendi aralarında faxla, telefonla müşteri hakkında İSTİHBARAT yapıyor. Tabii buda hem zaman alıcı hem masraflı ve katmerli. Bu işi web'e taşısak çookkk para toplarız". Biz ancak nal toplarız ya neyse uyduk bir kere şeytana. Ekip koptu, ekipte en deneyimli ve en çulsuz ben olduğumdan ben projeyi çaktırmadan gerçekleştirmeye karar verdim. İşte o projeden satır başları.
ENTRECARD İSTİHBARAT HİZMETLERİ:
Proje iki ayaklı çalışacaktı. Hep öyle olmaz mı? Bir ucu www'de bir ucu kullanıcıda. Kullanıcı www'ye bağlı olsada olmasada müşteriyle ilgili varsa veriye erişecekti.Birde www'si veya bilgiyi satan aleti olmayan esnafada kağıt posta ve aylık dergiyle verilecekti. Ne bilgisi mi? Kim kime ne zaman nasıl borç takmış bilgisi. Her neyse uzun süre gözümü para hırsı bürümüş vaziyette gömüldüm kodların arasına. Sizi bilmem ama ben güzel ve iyi yazılmış bir kod görürsem bir ressamın şaheserini seyreder gibi, bir müzisyenin eşsiz melodisini dinler gibi uzun uzun seyreylerim ve bunu yapan ustanın o anki şuursal halini hayal ederim. Kötü kod gördümü yada yazdımı, işin içinden çıkamayıncada basarım yaygarayı. Godumun godu.
İşte yazının sonunda açıklayacağım sebeplerden dolayı yarım kalan bu projede adı geçen kodcuklarımdan alıntılar.
Procedure wb_PostDataSubmit(Webbrowser : TWebBrowser;Url,EncodedDataString: string); Var PostData: OleVariant; Headers: OleVariant; I: Integer; PriorityClass, Priority: Integer; Begin try PriorityClass := GetPriorityClass(GetCurrentProcess); Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); Sleep(10);
PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte); for I := 1 to Length(EncodedDataString) do PostData[I-1] := Ord(EncodedDataString[I]); Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13; WebBrowser.Navigate(Url,EmptyParam,EmptyParam,PostData,Headers); finally SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); end; End;{* wb_PostDataSubmit *}
Procedure TMainForm.SubmitPostData(Const DataSet : TDataSet); var PostDataString: String; Begin PostDataString := wb_TablodanHtmlPostTagYarat(DataSet); //Yeni kayıt ekleme işlemiyse if DataSet.FieldByName('SONISLEM').AsInteger = 0 then wb_PostDataSubmit(Form_Web.WebBrowser1, _InsertIstihbarat_Url,PostDataString) else //kayıtta değişiklik yapılmışsa... wb_PostDataSubmit(Form_Web.WebBrowser1, _UpdateIstihbarat_Url,PostDataString); End;//* SubmitPostData *//
procedure TForm_TumunuAl.HTTPGet1DoneString(Sender: TObject;Result: String); begin { Züper bir bileşen verilen url adresinden dönen karakter dizisini okuyor... } //Başlangıç satır işareti yoksa sorun var demektir... if Copy(Result,1,1) <> '<' then begin Label1.Caption := Result; Application.MessageBox(Pchar(Result),'Güncelle',mb_iconinformation); end else begin Label1.Caption := 'Veriler Alındı...'; VeriFormatla(Result); Application.MessageBox(Pchar('Toplam '+IntToStr(KayitSayisi)+' Kayıt Kontrol Edildi!...'+InttoStr(AlinanKayit)+' Kayıt Alındı...'),'Güncelle',mb_iconinformation); dm.qry_Istihbarat.Active := False; dm.qry_Istihbarat.Active := True; end; Close; end;
procedure TForm_TumunuAl.btnGuncelleClick(Sender: TObject); begin cxProgressBar1.Position := 0; Label1.Caption := 'Bağlanıyor...'; HttpGet1.URL := _IstihbaratTumunuAl_Url+'?tcno='+dm.TCno; HttpGet1.GetString; end;
Neyse ilginizi çekmesi için koydum bunları. Tamamı için buraya tıkalayıp indirin sizin olsun, benim .NET'im ve Bankam var. Her ne kadar batık olsada daha taptaze daha hiç el sürülmemiş. 
Kodları satır satır yorumlamak ve anlatmak isterdim ama buna zamanım ve sabrım yok. bu nedenle takıldığınız yer olursa sorun oraları deşelim.
Proje neden devam etmedi. Bir sürü sebebi var. Ama bunların içinde en önemlisi sanırım kimsenin ahını almak istemedim. Buna birde tembellik eklenince vazgeçtim. Tüm bunları sizinle paylaştım, Çünki yazılımcıları çok seviyorum. Akıllı insanlar. Kendinize iyi davranın, bolca hoşça vakit geçirin.
|
|
Yorum (yok) :: Yorum yaz! :: Bağlantı
|
|
Hakkımda
Ah bir öğrensem şu bilgisayar işini. Bırakıp gideceğim bu yerleri bu işleri.
Kategoriler
Arkadaşlarım
|