Delphinette Global değişkeni nasıl tanımlarız.?

Delphi .net ve .net ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Delphinette Global değişkeni nasıl tanımlarız.?

Mesaj gönderen NewMember »

Arkadaşlar delphide aspnet için web sitesi hazırlıyorum.Ancak değişken tanımlarken bir sorunla karşılaştım.Şimdi herhangi bir sayfadan kişi kullanıcı adı ile login olur ise kullanıcı adını Kullaniciadi adında bir değişkene atayacam.Ve bundan sonra hangi sayfaya giderse gitsin kullaniciadi değişkeni hep aynı değeri alacak.Ve bende aşağıdaki kodda olduğu gibi tanımladım.Ve diğer tüm sayfaların pas dosyalarında da usese index unitini ekledim.

1.Public Declarationa tanımlarsam değişkenleri kullannamıyorum ve yanımlanmamış değişken hatası veriyor.
2.Privbate de zaten olmuyor.
3.Aşağıdaki gibi genel bir var bloğundan sonra tanımlayınca sorun olmuyor tanıyor ancak.Sorun şu ki.o zamanda mesela evden bu siteyi ziyaret ettim.Kullanıcı adımla login oldum.Ertesigün işyerinde bile hiç bir işlem yapmadan bu değişken hep o benim evden login olurken kullandığım kullanıcı adına taklılıp kalıyor.Yani NewMember kullanıcı adı ile login oldum diyelim.Ertesi gün işyerinde bile sitede HoşGeldiniz Newmember yazıyor.

Kodlarda bir yerlerde hata yapmışsınızdır da diyebilrisiniz ama didik didik ettim yok.Yani bir yerde takılma da yok.Acaba değişken tanımlıyorken yanlış yöntemmi kullanıyoruz.

Yardımcı olursanız sevinirim.






unit index;

interface

uses
System.Collections, System.ComponentModel,
System.Data, System.Drawing, System.Web, System.Web.SessionState,
System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls, system.Data.OleDb;

type
TWebForm2 = class(System.Web.UI.Page)
{$REGION 'Designer Managed Code'}
strict private
procedure InitializeComponent;
procedure BTntamam_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;

itemgundemorta: System.Web.UI.WebControls.Label;
itemgundemsol: System.Web.UI.WebControls.Label;
Label1: System.Web.UI.WebControls.Label;
LblKullaniciAdi: System.Web.UI.WebControls.Label;
LblGirisUyarisi: System.Web.UI.WebControls.Label;
LblAdSoyad: System.Web.UI.WebControls.Label;
LblPArola: System.Web.UI.WebControls.Label;
GirisAdSoyad: System.Web.UI.WebControls.TextBox;
GirisParola: System.Web.UI.WebControls.TextBox;
BTntamam: System.Web.UI.WebControls.Button;
procedure OnInit(e: EventArgs); override;
private
DataBaglantisi: OleDbConnection;
DataCeker: OleDbDataReader;
procedure SolGundemiGoster;
procedure OrtaGundemiGoster;
procedure LoginBilesenleriniGizle;
{ Private Declarations }
public

{ Public Declarations }
end;


{******************************************************** }

var


{Buradaki değişkenler tüm sayfalarda hafızaya alınacak. }
kullaniciadi: string;
GirisYaptimi: Boolean = False;
YetkiSeviyesi: string;
{Buradaki değişkenler tüm sayfalarda hafızaya alınacak. }
{********************************************************}
[/b]
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Bu tarz şeyler için Session kullanmanı tavsiye ederim, eğer bilginin belli bir süre kayıtlı kalmasını istiyorsan cookie de kullanabilirsin.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

@Lazio cevabın için çok teşekkür ederim.Ancak web programlama konusunda bilgim çok az.Bunu da sadece delphi kodları kullanarak yapabileceğimi sandım ama olmayacak galiba. Session ve cookieler konusunda da bilgim yok.Acaba bunu başka nasıl yapabilirim.

Birde benim yukarıda izah ettiğim şekilde yapınca sanırım server resetlenmeden bu değişken sıfırlanmayacak heralde.Burada bvir mantık hatası yapıyorum anlaşılan.Mesala database girip kullanıcı adımı değiştirip "Yeni Üye " yazdım.Ama hala siteye girince Hoşgeldin NewMember yazıyor.Buda bilginin databaseden gelmediğini söylüyor heralde.

Hocam sizden ricam kısa vadede delphi koduyla bunu nasıl yapabilirim?Eğer yapamazsınız mutlaka session veya cookie kullanmanız gerekiyor derseniz araştırıp öğreneyim.
İlginize teşekkkürler.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Hocam açıkçası ben c# kullanıyorum ve c# ta bunu yapmak mümkün değil. örnek, webform1 den webform2 deki bi değişkene ulaşabiliriz ama içindeki değer e ulaşamayız. mantık olarak bir web sayfası çağrıldığında create edilir yükleme işlemi tamamlandıktan sonra free edilir..

session lar da delphi kodu sayılır..
örn,
Session.Add('ad', 'ali veli'); şeklinde oluşturabilirsin..[/url]
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

@lazio nun dediği gibi session kullanman gerekir,

ama tüm kullanıcılar için bir şey istiyorsan yani uygulamamnın geneli içinse application'u kullanman gerekiyor..

mesela ASP ve ASP.NET'te GLOBAL.ASA, GLOBAL.ASAX var.

Burada startsession, startapplication diye şeyler var.

startapplication olduğunda Application['WhoOn'] := 0;
sessionstart olduğunda ise Application['WhoOn'] := Application['WhoOn'] +1 gibilerinden bişi yaparsan

(yazım hatası yapmış olabilirim)

sitede kaç kişi online olduğunu görebilirsin. oturumlar kapansa bile Application silinmeyeceğinden bir sonra oturum açacak olan kişide bu değeri görebilecektir.

Global dğeişken için : session ya da application kullanman yeterlidir.

Hatta bu session ve application içine bir view'ide koyaiblirsin.

mesela her sayfa için bir menü ürettiğini düşün, bunu DB'den okuyor. yani aynı işi binlerce ken yapacağından

applicationstart'ta bunu yaparsan. DB'yi de iktisatlı kullanmış olursun..

Saygılar...
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Hepinize Teşekkürler.Benim session ve cookie olayını araştırmam gerekecek.
Herkese kolay gelsin.
Cevapla