Comment permettre de faire glisser un fichier sur l' *.exe et de l'avoir comme paramètre?

Que dois-je faire pour que mon programme d'utiliser un fichier qui a été déplacée et se laissa tomber sur son icône comme un paramètre?

Mon main méthode ressemble à ceci:

int main(int argc, char* argv[])
{
    if (argc != 2) {
        cout << "ERROR: Wrong amount of arguments!" << endl;
        cout << "\n" << "Programm closed...\n\n" << endl;
        exit(1);
        return 0;
    }

    Converter a(argv[1]);
    //...

    cout << "\n" << "Programm finished...\n\n" << endl;

    //cin.ignore();
    return 0;
}

Ce que je voudrais vraiment être en mesure de faire est de sélectionner 10 (ou les) fichiers, de les déposer sur le fichier EXE, et de les traiter de au sein de mon application.


EDIT:

La incomming paramètre est utilisé comme nom de fichier, construit dans le cunstructor.

Converter::Converter(char* file) {
       //string filename is a global variable
   filename = file;
   myfile.open(filename.c_str(), ios_base::in);
}

La méthode où le texte est lu:

string Converter::readTextFile() {
char c;
string txt = "";

if (myfile.is_open()) {

    while (!myfile.eof()) {
        myfile.get(c);
        txt += c;
    }

} else {
    error("ERROR: can't open file:", filename.c_str());
}
return txt;
}

EDIT2:
supprimé

Mise à jour:

Je suis nouveau sur ce point.

Réelle Main méthode:

//File path as argument

int main(int argc, char* argv[]) {
if (argc < 2) {
cout
<< "ERREUR: Mauvais nombre d'arguments! Donnez au moins un argument ...\n"
<< endl;
cout << "\n" << "Programm fermé...\n\n" << endl;
cin.ignore();
exit(1);
return 0;
}

vector<string> files;

for (int g = 1; g < argc; g++) {
    string s = argv[g];
    string filename = "";
    int pos = s.find_last_of("\\", s.size());

    if (pos != -1) {
        filename = s.substr(pos + 1);

        cout << "argv[1] " << argv[1] << endl;
        cout << "\n filename: " << filename << "\n pos: " << pos << endl;
        files.push_back(filename);

        }
    files.push_back(s);
    }

for (unsigned int k = 0; k < files.size(); k++)
    {
    cout << "files.at( " << k << " ): " << files.at(k).c_str() << endl;
    Converter a(files.at(k).c_str());
    a.getATCommandsFromCSV();
    }


cout << "\n" << "Programm finished...\n\n" << endl;

cin.ignore();

return 0;
}

En fait la fenêtre de la console apears peut-être de 0,5 sec et ferme de nouveau.

Il ne débite pas s'arrêter sur aucun de mes cin.ignore(); Peut-être qu'il ne veut pas y aller?

Peut aider quelqu'un?

  • Pouvez-vous m'aider à nouveau?
  • Voir ma réponse ci-dessous et n'hésitez pas à poser toutes les questions liées...
  • J'ai eu un problème similaire à cela. J'ai ajouté std::cout << "pause"; avant la boucle qui parcourt les arguments, et d'une certaine façon il a commencé à travailler.
InformationsquelleAutor Beasly | 2011-01-11