Avatar billede z1n Nybegynder
13. december 2004 - 10:09 Der er 4 kommentarer og
2 løsninger

Globale variabler

Hey

Jeg sidder og laver et projekt program til min skole hvor jeg snakker med en sql database. Laver det i Borland C++ Builder.

Mit problem er at jeg har 4 forms, hvor en er main formen med en login ting på. Så man logger ind og kommer videre til hoved programmet. Herfra skal man så slå op på nogle poster i db og vise infoen om posten i et nyt vindue. Problemet er først og fremmest at efter jeg er logget ind skal der sættes en variable om hvad mit login id er ud fra databasen og igen sætte en anden variable om hvad ens sikkerheds status er (admin, superbruger eller bruger)

Disse info skal føres videre til hoved programmet som ud fra ens sikkerhedsstatus skal vises eller ikke vises forskellige knapper.

Selvom jeg har includeret ALLE .h filer i alle forms og erklaret variablerne deri osv så virker det ikke. Jeg forstår det ikke. Lærerene forstår det ikke.

hjælp mig plz
Avatar billede arne_v Ekspert
13. december 2004 - 10:34 #1
Vi skal nok se noget kode for at kunn ehjælpe.

Og helst kun lige de relevante linier og ikke alle 2000 linier.
Avatar billede z1n Nybegynder
13. december 2004 - 10:37 #2
Her defineres variablerne i header filen:

class TFrmAuth : public TForm
{
__published:    // IDE-managed Components
    TButton *ButLogind;
    TButton *ButAfslut;
    TEdit *EditUsername;
    TEdit *EditPassword;
    TLabel *LabUsername;
    TLabel *LabPassword;
    TADOConnection *ADOConnectionAuth;
    TADOTable *ADOTableAuth;
    TADOQuery *ADOQueryAuth;
    TImage *ImgHeader;
    TImage *ImgSplitter;
    void __fastcall ButAfslutClick(TObject *Sender);
    void __fastcall ButLogindClick(TObject *Sender);
private:    // User declarations
public:        // User declarations
    static int teknr;
    static AnsiString sec;
    __fastcall TFrmAuth(TComponent* Owner);
};

Her sættes værdien af variablerne:

if (ADOQueryAuth->FieldByName("username")->AsString != "") {
        FrmMain->Show();
        FrmAuth->Visible = false;
        teknr = ADOQueryAuth->FieldByName("teknikernr")->AsInteger;
        sec = ADOQueryAuth->FieldByName("secstatus")->AsString;
    }
    else {
        Application->MessageBoxA("Brugernavn eller password er forkert!",
                                "EasyConsult", MB_OK|MB_ICONWARNING);
    }

og her bruges den ene (sec) variable i en case

switch(sec) {
        case "admin":
            FrmMain->ButSlet->Visible = true;
            FrmMain->ButRediger->Visible = true;
            FrmMain->ButOpret->Visible = true;
            break;
        case "superbruger":
            FrmMain->ButRediger->Visible = true;
            FrmMain->ButOpret->Visible = true;
            break;
        default:
            FrmMain->ButVis->Visible = true;
            break;
    }
Avatar billede z1n Nybegynder
13. december 2004 - 11:12 #3
plz help !
Avatar billede segmose Nybegynder
13. december 2004 - 13:32 #4
Din switch er forkert til at start med der kan ikke bruges strenge til dette i C/C++, lav en oversættelse fra streng til tal (int) eller lad være med at konvertere til streng i første om gang.

switch(sec) {
  case usAdmin:
    osv.


hvor admin er noget lignende
typedef enum userStatus {
  usNormal,
  usAdmin,
  usSuper
} userStatus;
Avatar billede z1n Nybegynder
14. december 2004 - 18:40 #5
Jeg fandt selv ud af det men tak for det med casen. :D det får du 50% for ;)
Avatar billede segmose Nybegynder
15. december 2004 - 09:44 #6
Tak og fortæl nu hvad der var galt! så jeg ikke skal sidde og vente og misbruge mere tid på at stirre på det.
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
Kurser inden for grundlæggende programmering

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