Co muszę zrobić, aby mój program użył pliku, który został przeciągnięty i upuszczony na jego ikonę jako parametr?Jak włączyć przeciąganie pliku na * .exe i otrzymać go jako parametr?
Moja obecna metoda main
wygląda następująco:
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;
}
Co naprawdę chciałbym być w stanie zrobić, to wybrać 10 (lub więcej) pliki, upuść je na EXE oraz przetwarzać je od wewnątrz moja aplikacja.
Edycja:
Parametr przychodzących jest stosowany jako pliku, wykonany w cunstructor.
Converter::Converter(char* file) {
// string filename is a global variable
filename = file;
myfile.open(filename.c_str(), ios_base::in);
}
Sposób gdzie textfile dostaje przeczytać:
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: usunięte
Aktualizacja:
mam ponownie do tego punktu.
Rzeczywista Main
metoda:
// File path as argument
int main (int argc, char * argv []) { if (argc < 2) { cout < < „ERROR: Zła ilość argumentów Daj przynajmniej jeden argument ... \ n " < < endl; cout < < "\ n" < < "Program zamknięty ... \ 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;
}
Faktycznie okno konsoli apears dla może 0,5 s, a następnie zamykają się.
To nie zatrzyma się na żadnym z moich cin.ignore();
Może się tam nie dostanie?
Czy ktoś może pomóc?
@Joey Czy mnie jeszcze pomóc? – Beasly
Zobacz moją odpowiedź poniżej i nie krępuj się zadawać żadnych pytań związanych z ... –