![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Andrewshkovskii |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: ![]() ![]() ![]() |
/////
Сообщение отредактировано: Andrewshkovskii - 17.11.2008 16:38 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
На самом деле при внимательном рассмотрении твоей программы выясняется, что
1) функция GetFileList написана неправильно: ты вторам параметром передаешь в нее char*, и тут же внутри этой функции обращаешься: lstrcat(&(argv[1]),"\\*.txt");
, и что, по-твоему, это должно делать? Куда будет записываться результирующая строка? Ты ж весь стек себе испортишь...2) тебе действительно не нужно extern-переменных... Все проще гораздо. Смотри: realiz.h #ifndef __REALIZ_H__
#define __REALIZ_H__
#include <vector>
#include <string>
/*FUNCTIONS PROTOTYPE GOES HERE*/
void GetFileList(int argc, char *argv, std::vector<std::string>& vect);
/*==========================================================*/
#endif /* VARS_H_ */
realiz.cpp #include <iostream>
#include <windows.h>
#include "realiz.h"
using namespace std;
void GetFileList(int argc, char *argv, std::vector<std::string>& vect)
{
WIN32_FIND_DATA dFile;
HANDLE hFile;
std::string path;
if (argc < 2 || argc == 1) {
cout << "Not enought parametrs ";
exit(0);
}
char s[MAX_PATH] = "";
lstrcpy(s, argv); path = s;
lstrcat(s,"\\*.txt");
path += "\\";
hFile = FindFirstFile(s, &dFile);
if (hFile!=INVALID_HANDLE_VALUE) {
do {
vect.push_back(path + dFile.cFileName);
} while (FindNextFile(hFile,&dFile)!=0);
FindClose(hFile);
}
}
, и наконец, main.cpp:#include <iostream>
#include <time.h>
#include "realiz.h"
using namespace std;
int main(int argc, char *argv[])
{
std::vector<std::string> FileA;
GetFileList(argc, argv[1], FileA); // передаешь локально описанную переменную по ссылке
for(unsigned int i = 0; i < FileA.size(); i++)
cout << FileA[i] << endl;
return 0;
}
Все работает... |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 3:07 |