Listowanie plików, zanikanie wartości w tablicy

0

Witajcie. Tworzę pewny program, mam stworzone listowanie plików w danym katalogu. Oto mój kod:

class xxx
{
public:
	wchar_t *ListFiles[100]
}
WIN32_FIND_DATA Data;
HANDLE Search;

if(Search = FindFirstFile(Path, &Data))
	{
		int i = 0;

		do {

			if(Data.dwFileAttributes)
			{
				ListFiles[i] = Data.cFileName;
				wcout << ListConfigs[i] << endl;
				i++;
			}

		} while (FindNextFile(Search, &Data));

		FilesCount =  i;
		FindClose(Search);
	}

Problem w tym że gdy później, już w innej funkcji spróbuję użyć tej tablicy okazuje się że jest ona pusta. W czym leży problem?

wcout << ListConfigs[x] << endl;
0

Pokaż tą inną funkcję i jak jej używasz

EDIT
Błędem jest chyba to, że w tablicy trzymasz tylko wskaźniki, a nie całe nazwy. Użyj std::wstring powinno pomóc.

EDIT 2
To co Ty robisz to lipa. Masz w funkcji lokalną zmienną Data. W niej jest wskaźnik na nazwę pliku. W pętli cały czas kopiujesz jeden i ten sam wskaźnik. Mało tego co obieg pętli pobierasz nazwę następnego pliku, ale jej nie zachowujesz nigdzie. I w następnym obiegu jest ona zamieniana przez nazwę następnego pliku itd.. Tak jak mówiłem, miej tablicę (a już najlepiej std::vector) std::wstringów. To załatwi problem.

0

Wstring działa dobrze, niestety muszę skorzystać z wchar_t :/ Jeżeli zmienię ten zapis na

 wchar_t ListFiles[100]

to dostaję taki error:

Error	1	error C2440: '=' : cannot convert from 'WCHAR [260]' to 'wchar_t'

Jakiś pomysł jak to naprawić bez konieczności późniejszej konwersji?

0

Możesz zdradzić powód?

Jeżeli nie to

  1. pobierz długość napisu
  2. zaalokuj pamięć na jego kopie (pamiętaj o miejscu na nulla)
  3. przypisz wskaźnik na zaalokowaną pamięć do tablicy
  4. skopiuj napis do zaalokowanej pamięci

1 użytkowników online, w tym zalogowanych: 0, gości: 1