Qt ListBox Problem
-
Hi Leute,
ich hab ein Problem und zwar
Ich will ein Bot Programmieren.
ich hab ein ListBox mit Item die Checkable sind also wie CheckBoxen.
und die Items sind sozusagen die Accounts dann, damit der BOT auch dann funktioniert kann man die accounts mit Informationen verfüttern also sozugagen
Username, Passwort .... damit der Bot auch sich einloggen kann...usw..
so man kann neue accounts erstellen und die dann mit informationen versorgen, dann wird eine Datei erstellt für den Account wo die ganzen informationen drinn stehen, aber dass hab ich schon alles geklärt,so mein problem liegt darin die informationen auszulesen. Wenn ich jetzt bei den ersten Account ein haken mache
und die Informationen auslesen will kommt alles korrekt raus also Username , passwort ... alles korrekt ( um die information auszulesen hab ich, in ein Button ( name des Buttons "Start") eingepflanzt ).Aber wenn ich jetzt zwei Accounts erstelle ( Die Accounts fügen sich nach dem erstellen direkt in die ListBox ein ), und die Informationen von beiden accounts ablesen will hab ich ein Problem, also wenn ich bei beiden accounts ein Haken mache und auf den Button klicke kommen zweimal die informationen von dem zweiten account raus ( da hinter läuft eine Schleife ).
ich mein ich damit wenn wir z.b 5 accounts haben und ich will von alles 5 die informationen lesen und ich mach bei allen 5 ein haken und wenn ich auf den button Klicke kommt 5 mal die information des 5ten accounts raus, statt die info vom 1 vom 2 vom 3 ...
also ich hab die datei mal angehängt, wenn ihr es nicht verstanden habt dann führt es selber aus. also:
http://uploaded.to/file/y0cy86
1. ihr geht auf den Button "Neues Account"
gibt ein Bsp Username und ein Bsp Passwort ein und klickt auf Speichern.2. macht ein Haken bei dem Account und klickt "Erweitern>>"
3. Username und Passwort müsste schon drinn stehen also noch die anderen
Felder ausfüllen ( bitte beachtet dass die infomationen von 1 account nicht mit dem 2 account übereinstimmt, und die ID`s sind Integer also zahlen)4. punkt 1,2,3 macht ihr nochmal für ein Zweites Account.
5. macht ein haken bei dem ersten account und drückt auf start, schaut ob die
informationen übereinstimmen mit dem ersten account.6. wenn die info übereinstimmt, macht dann die haken bei beiden accounts und klickt start und seht den fehler.
-
Poste lieber n stückchen quellcode, was sollen wir den mit ner executable anfangen? Orakeln? Reverse Engeneering? Virus einfangen?
-
wie bitte wieso sollen hier vieren verteilt , hast du es überhaupt mal scannen lassen naja egal hier ist der quellcode für den Button "Start", also um die infos aufzufangen.
int count = ui->listWidget->count(); int a = 1; string usern = er->lineu->text().toAscii().data(); for ( int i = 0; i < count; i++) { QString neu; QString usr(usern.c_str()); char er[25]; sprintf(er,"Aktiv box %i",a); QString es(er); a++; //QString name = ui->listWidget->item(i)->text(); if (ui->listWidget->item(i)->checkState() == Qt::Checked ) { QMessageBox::about(this,"info",es); string ssds = ui->listWidget->item(i)->text().toAscii().data(); QString name = ui->listWidget->item(i)->text(); QString skk = name + ".ini"; QFile file(skk); QString fname = file.fileName(); QTextStream in(&file); //QMessageBox::about(this,"Datei Name:",fname); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::about(this,"info","Fehler"); } while (!in.atEnd()) { char ergs[50]; sprintf(ergs,"%i: Gefunden!",a++); QString as(ergs); neu = as; //QString line = in.readAll(); // QMessageBox::about(this,"info",line); QString line = in.readLine(); if ( strncmp (line.toAscii().data(),name.toAscii().data(),256) == 0 ) { QMessageBox::about(this,"Datei Name:",fname); //QMessageBox::about(this,"info",line); file.setFileName(skk); QString ab = zeilenschreiben(1); // für BASE 1 ID QMessageBox::about(this,"Base1",ab); ab = zeilenschreiben(2); // Sammler Fabrik 1 ID QMessageBox::about(this,"Sammler1",ab); ab = zeilenschreiben(3); // Base 2 ID QMessageBox::about(this,"Base2",ab); ab = zeilenschreiben(4); // Sammler Fabrik 2 ID QMessageBox::about(this,"Sammler2",ab); ab = zeilenschreiben(5); // Sammler Fabrik 2 ID QMessageBox::about(this,"Sammler2",ab); break; } else { QMessageBox::about(this,"info","nichts gefunden!"); break; } } for ( int i = 0; i < in.atEnd(); i++) { QString line = in.readLine(); QMessageBox::about(this,"ganze zeile",line); } } } }
hier der Code für die funktion Zeilenschreiben
QString MainWindow::zeilenschreiben(int zeilen) { std::string ss = listCheckName(true); const char * sss = ss.c_str(); ifstream f; // Datei-Handle string s; string n; f.open(sss, ios::in); for ( int i=0;!f.eof();i=i+1) { if (i==zeilen) { getline(f, s); //QMessageBox::about(this,"Info",a); } else { f.eof(); getline(f,n); } } f.close(); QString a(s.c_str()); return a; }
und für ListCheckName
std::string MainWindow::listCheckName(bool endn ) { QString name; int anzahl = ui->listWidget->count(); for ( int i = 0; i < anzahl; i++) { if ( ui->listWidget->item(i)->checkState() == 2) { name = ui->listWidget->item(i)->text(); //QMessageBox::about(this,"info",name); } } //QMessageBox::about(this,"info",name); if ( endn = true ) { std::string sk = name.toAscii().data(); string ss = sk + ".ini"; return ss; } else if ( endn = false) { std::string sk = name.toAscii().data(); string ss = sk + ".ini"; return sk; } }
also wenn das zu viel ist post ich mal das ganze project und ihr könnt es dann
Compilieren und selber (siehe oben) testen.
-
ok danke leute ich habs.
-
War net bös gemeint, hab dir auch keinen Virus unterstellen wollen.
Der Fehler muss ja in deiner Programmierung liegen, deswegen wollte ich dich nur dazu bringen den eventuell Fehlerhaften Code zu posten sodass sich das jemand anschauen kann und eventuell nen Tipp hat. Executables sind da wenig hilfreich.Fein dass dus gepackt hast.
Grüße