Login...mitnahme von Benutzername und Passwort!
-
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.
110011100000Button1->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 hierForm4->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 ...
-
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?!
-
Hier ist genau das gleiche.
http://www.c-plusplus.net/forum/viewtopic.php?t=93756
-
Hmm...das is schon klar....ich weiß nur mit dem nix anzufangen:
String ur="000000000000";// String Aus Datenbank ur[7]='1'; //... In Datenbank schreibenkannst mir das mal in so ein ähnliches beispiel wie bei dem anderen Thread geben?!

-
String alt="101000000000"; String neu=alt; neu[7]='1'; String sql="UPDATE artikel SET passwort='"+neu+"' WHERE passwort='"+alt+"';"; Query1->SQL->Clear(); Query1->SQL->Add(sql); Query1->ExecSQL();
-
Damit du nicht das eventuell gleiche Passwort bei anderen Benutzern änderst solltest du es so erweitern...

String alt="101000000000"; String neu=alt; neu[7]='1'; String sql="UPDATE artikel SET passwort='"+neu+"' WHERE passwort='"+alt+"' AND username='"+user+"';"; Query1->SQL->Clear(); Query1->SQL->Add(sql); Query1->ExecSQL();