Avatar billede kennedk Nybegynder
02. januar 2008 - 17:12 Der er 8 kommentarer og
1 løsning

Smartphone, gemme oplysninger ligesom en session

Hej eksperter
jeg sidder og leger med program til smartphone for første gang, og jeg kom lige til at tænke på om man kan gemme en oplysning midlertidligt, lige som en session når man laver hjemmesider?
Avatar billede nielle Nybegynder
02. januar 2008 - 17:15 #1
Er det egentlig ikke bare en global variabel du snakker om?

Den skal forsvinde igen når programmet er færdig med at køre?
Avatar billede kennedk Nybegynder
02. januar 2008 - 17:18 #2
jamen nu sidder jeg og tænker lidt, altså man skal logge ind på form1 , og så skal man sendes videre til form2, hvor der også skal tjekkes om man er logget korrekt ind?
Avatar billede nielle Nybegynder
02. januar 2008 - 17:22 #3
En global variabel er netop tilgængeligt overalt. :^)

Personligt ville jeg nok lave den som en Singleton:

http://www.eksperten.dk/artikler/37
Avatar billede kennedk Nybegynder
02. januar 2008 - 17:25 #4
Jeg har sat en webservice op mod en database som retunere sand eller falsk med et brugernavn og kodeord.
Men er det smart ? eller hvordan kan det laves?

Og kan det singleton gøre det? (har ikke læst den, da jeg skal til at sætte gipsloft op )
Avatar billede nielle Nybegynder
02. januar 2008 - 17:30 #5
Hvis der alligevel skal være konstant forbindelse mellem serveren (hvor din webservice køre) og klienten (din smartphone) så er det vel ok.

Men hvis du også gerne vil kunne køre offline fra serveren, er du nødt til at have data gemt lokalt - f.eks. i en global variabel, eller i en fil.

Singleton-mønsteret er blot en standard-metode at lave en klasse sådan at man sikre sig at man kun kan have een instans af den. I dette tilfælde ville den fungere ganske udemærket som en "session".
Avatar billede kennedk Nybegynder
02. januar 2008 - 17:39 #6
Jeg vil se på det, ellers hvordan vil du kunne lave en global variabel ?
Avatar billede nielle Nybegynder
02. januar 2008 - 18:32 #7
Et forslag til en global variabel efter Singleton-mønsteret:

    public class GlobalVariables
    {
        #region Singleton-mønsteret

        // den eneste instans der eksisterer
        private static GlobalVariables instance = null;

        // private constructor - forhinder at man selv kan lave instanser.
        private GlobalVariables() { }

        // property til at hente instance
        public static GlobalVariables Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new GlobalVariables();
                }
                return instance;
            }
        }

        #endregion

        #region Normale metoder

        private const string noLoginName = "Not logged in";

        private bool isLoggedIn = false;
        public bool IsLoggedIn
        {
            get { return isLoggedIn; }
            // private set { isLoggedIn = value; } - kan man desværre ikke i CF
        }

        private string loginName = noLoginName;
        public string LoginName
        {
            get { return loginName; }
        }

        public bool LogIn(string loginName, string password)
        {
            // Bør selvfølgelig hentes far database eller noget i den stil.
            if (loginName == "kennedk" && password == "EnDybHemmelighed")
            {
                this.loginName = loginName;
                this.isLoggedIn = true;
            }
            else
                LogUd();

            return IsLoggedIn;
        }

        private void LogUd()
        {
            this.loginName = noLoginName;
            this.isLoggedIn = false;
        }

        #endregion
    }

Bruges overalt i applikationen - f.eks. i Form1 som her er en loginformular:

        private void menuItem1_Click(object sender, EventArgs e)
        {
            GlobalVariables gv = GlobalVariables.Instance;

            gv.LogIn(this.txtLoginName.Text, this.txtPassword.Text);

            Form2 form2 = new Form2();
            form2.ShowDialog();
        }

Og i Form2 - som her tjekker at brugeren er logget ind før at From2 overhvoedet kan bruges:

        private void Form2_Load(object sender, EventArgs e)
        {
            GlobalVariables gv = GlobalVariables.Instance;
            if (!gv.IsLoggedIn)
            {
                this.DialogResult = DialogResult.Abort;

                this.Close();
                return;
            }

            this.txtLoginName.Text = gv.LoginName;
        }
Avatar billede kennedk Nybegynder
02. januar 2008 - 22:13 #8
Super
Tak skal du have :) Læg svar
Avatar billede nielle Nybegynder
02. januar 2008 - 22:21 #9
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester