dAhA kArAr vErMeDiM

Pazar, Hazirane 11, 2006 - Delphi 2006 ve ASP.NET İle Arşivbank Site Tasarımı -3-

Kategori: KOD BANKASI
    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ı enustorta, 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.

User Control

    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-

Kategori: KOD BANKASI
    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 ;IIS Alias / Virtual Path Deklarasyonu
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.aspxglobal.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.


       
           
             
             
           
           
             
             
           
             
             
           
           
             
             
           
           
             
           
       
Kullanıcı 
                 
             
Şifre 
               
             
G.Kodu 
               
             

                  0
             

               
              

                  ---
             


   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 -

Kategori: KOD BANKASI

    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.

Delphide Asp.NET Projesine Giriş

  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ı

Kategori: KOD BANKASI
    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

Kategori: KOD BANKASI
    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ı

<- :: Sonraki Sayfa ->

Hakkımda

Ah bir öğrensem şu bilgisayar işini. Bırakıp gideceğim bu yerleri bu işleri.

Bağlantılar

Ana Sayfa
Profilim
Arşiv
Arkadaşlarım
e-posta

Kategoriler

Arkadaşlarım