Login...mitnahme von Benutzername und Passwort!



  • @Black: nein das mit dem 100011 hab ich schon verstanden!

    @fragg: langsam leuchtet mir auch dein Beispiel...aber wo kann ich denn spezielle Buttons bestimmen!

    Zum beispiel hat der mit wenigsten rechte also 1000000000000, das heißt bei ihm ist Button1 enabled!
    der mit der nächsten stufe der Rechte hat zusätzlich Button 7 enabled:

    Wäre das 100000100000?, und woher weiß deine konstruktion, das Button 7 gemeind ist?



  • dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48;
    

    Aktiviert oder deaktiviert den entsprechenden Button.
    Auf Array Index zugreifen: ur[++co]
    die -48 ziehe 48 von dem ergebnis ab. 😉



  • for(int i=0;i<Form2->ComponentCount&&co<ur.Length();i++)
       {
          if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button1")
          {
             dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48;
          }
       }
    


  • Würde das bedeuten wenn mein String so aussieht: 110011100000, das er durch das ur automatisch Button 1,2,5,6,7 enabled?

    Und was würde passieren wenn ich zB keinen Button 7 habe (durch löschen oder so?), nimmt er dann anstelle der 7 den 8 Button? das wäre ja schlecht!



  • Würde das bedeuten wenn mein String so aussieht: 110011100000, das er durch das ur automatisch Button 1,2,5,6,7 enabled?

    Ja.
    110011100000

    Button1->Enabled=ursprünglicher Zustand.
    Button2->Enabled=true;
    Button3->Enabled=true;
    Button4->Enabled=false;
    Button5->Enabled=false;
    Button6->Enabled=true;
    Button7->Enabled=true;
    Button8->Enabled=true;
    Button9->Enabled=false;
    Button10->Enabled=false;
    Button11->Enabled=false;
    Button12->Enabled=false;

    Und was würde passieren wenn ich zB keinen Button 7 habe (durch löschen oder so?), nimmt er dann anstelle der 7 den 8 Button? das wäre ja schlecht!

    Ja.
    Die Ausnahmen müsstest du zwangsläufig mit if bzw switch abfangen.



  • Button1->Enabled=ursprünglicher Zustand.
    Button2->Enabled=true;
    Button3->Enabled=true;
    Button4->Enabled=false;
    Button5->Enabled=false;
    Button6->Enabled=true;
    Button7->Enabled=true;
    Button8->Enabled=true;
    Button9->Enabled=false;
    Button10->Enabled=false;
    Button11->Enabled=false;
    Button12->Enabled=false;

    bezogen auf

    for(int i=0;i<Form2->ComponentCount&&co<ur.Length();i++)
       {
          if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button1")
          {
             dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48;
          }
       }
    

    😉



  • Den Button Nr. 7 auslassen.

    if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button7")
    


  • Ok das abfangen wäre sicher kein problem!

    Ich hab nun mal das hier probiert:

    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Form3->Query1->Close();
    Form3->Query1->SQL->Clear();
    Form3->Query1->SQL->Add("select * from Login where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';");
    Form3->Query1->Open();
    
    if (!Form3->Query1->Eof)
    {
    if (Form3->Query1->FieldByName("Rechte")->AsBoolean==true)
    {
    //ShowMessage ("Gut");
    Form4->Show();
     String str = Form3->Query1->FieldByName("MARechte")->AsString;
     Form4->Button1->Enabled = (str[0]  == "1") ? true : false;
     Form4->Button2->Enabled = (str[1]  == "1") ? true : false;
     Form4->Button3->Enabled = (str[2]  == "1") ? true : false;
     Form4->Button4->Enabled = (str[3]  == "1") ? true : false;
     Form4->Button5->Enabled = (str[4]  == "1") ? true : false;
     Form4->Button6->Enabled = (str[5]  == "1") ? true : false;
     Form4->Button7->Enabled = (str[6]  == "1") ? true : false;
     Form4->Button8->Enabled = (str[7]  == "1") ? true : false;
     Form4->Button9->Enabled = (str[8]  == "1") ? true : false;
     Form4->Button10->Enabled = (str[9]  == "1") ? true : false;
     Form4->Button11->Enabled = (str[10]  == "1") ? true : false;
     Form4->Button12->Enabled = (str[11]  == "1") ? true : false;
    
    Form1->DestroyWnd();
    //Form3->Table2->Open();
    }
    
    }
    else
    {
    ShowMessage ("Falscher Benutzername oder falsches Passwort");
    Edit1->SetFocus();
    }
    }
    

    Und da kommt Fehler: Konvertierung von Char nach Char nicht möglich?!

    Hab ich was übersehen?



  • Form4->Button1->Enabled = (str[0]  == '1') ? true : false; 
    etc.
    


  • ich zitiere mich mal selbst... 😉

    Linnea schrieb:

    DJ BlackEagle schrieb:

    PS: li... ein Array fängt immer mit 0 an, nicht mit 1.

    Strings sind 1 basiert ...

    also lieber bei

    Form4->Button1->Enabled = (str[1]  == '1') ? true : false;
    

    beginnen



  • Für AnsiString

    str[1]
    

    für std::string

    str[0]
    

    😉



  • Danke ihr beiden....das funktioniert jetzt!

    Werde dann mal das andere Beispiel von Fragg testen...weil das für weitere Komponenten anscheinend eleganter ist!



  • Und da hab ich gleich noch eine Frage:

    Da ich ja als Admin im Prog auch rechte anlegen will und ändern...also wie kann ich zB an bestimmte positionen in den string schreiben?

    Beispiel:

    Ich hab für jeden Button eine Checkbox...und ich möchte Button7 aktivieren..wie müsste also das OnCklick Ereigniss der Checkbox aussehen, das er mir eben an die siebte stelle eine 1 schreibt...bzw von 0 auf 1 ändert?



  • Eins verstehe ich nicht ganz. Wieso macht ihr das hier

    Form4->Button1->Enabled = (str[1]  == '1') ? true : false;
    

    so kompliziert.
    Das hier

    Form4->Button1->Enabled = (str[1]  == '1');
    

    reicht doch auch;
    Desweiteren könnte man doch die Nummern der Buttons auch in deren Tag schreiben. Da bräuchtet ihr keine Namen abzufragen.



  • String ur="000000000000";// String Aus Datenbank
    ur[7]='1';
    //... In Datenbank schreiben
    


  • also müsste ich es so machen:

    if (CheckBox->Checked)
     {
     Form3->Query1->??? und jetzt?? Ein FieldByName(""), oder wie bekomm ich den String per Syntax rein?
     }
    

    Oder wo muss ich das ur[7]='1' hinschreiben?



  • Am besten unterhält man sich mit einer Datenbank in einer Sprache die sie versteht.(SQL)

    Für ändern UPDATE ...
    Für löschen DELETE ...

    http://dev.mysql.com/doc/mysql/de/UPDATE.html



  • Ja schon klar...

    könntest mir bitte mal ein beispiel geben bitte...wie ich in den String reinschreiben kann...den syntax weiß ich nich!

    Also einfach mal ein Codebeispiel?!





  • Hmm...das is schon klar....ich weiß nur mit dem nix anzufangen:

    String ur="000000000000";// String Aus Datenbank
    ur[7]='1';
    //... In Datenbank schreiben
    

    kannst mir das mal in so ein ähnliches beispiel wie bei dem anderen Thread geben?! 🙄


Anmelden zum Antworten