Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2012, 01:20   #1
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию Вектор в текстовик O_o

Есть вектор, который принимает структуру Exp
Код:
struct strExp
{
	unsigned int nCount;
	char Level[64];
	char Bellato_EXP[64];
	char Cora_EXP[64];
	char Accretia_EXP[64];
};
std::vector<strExp> vecExp;
Кол-во векторов известно, как записать все в текстовый файл.

Допустим имеем мы 2 вектора vecExp:

vecExp[1].nCount = 123;
vecExp[1].Level = "123";
vecExp[1].Bellato_EXP = "123";
vecExp[1].Cora_EXP = "123";
vecExp[1].Accretia_EXP = "123";

vecExp[2].nCount = 321;
vecExp[2].Level = "321";
vecExp[2].Bellato_EXP = "321";
vecExp[2].Cora_EXP = "321";
vecExp[2].Accretia_EXP = "321";

надо чтобы в текстовик записалось так:
Код:
123 123 123 123 123
321 321 321 321 312
Как так сделать?
York вне форума Ответить с цитированием
Старый 14.03.2012, 09:52   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:
HANDLE h =CreateFile(путь , GENERIC_WRITE, 0, NULL,
                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

typedef vector<strExp>::const_iterator IExp;

IExp IBeg(vecExp.begin());
IExp IEnd(vecExp.end());
for(;IBeg != IEnd;++IBeg)
{
          WriteFile(h, (void*)&IBeg->nCount, sizeof(IBeg->nCount), NULL, NULL );
          WriteFile(h, " ", 1, NULL, NULL );          
          WriteFile(h, IBeg->Level, strlen(IBeg->Level), NULL, NULL );          
          WriteFile(h, " ", 1, NULL, NULL );          
          
           и т.д. 
          WriteFile(h,"\r\n" 4, NULL, NULL ); 
}

CloseHandle(h);
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 14.03.2012 в 13:12.
Krok27 вне форума Ответить с цитированием
Старый 14.03.2012, 13:07   #3
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Прийду домой, скомпилирую попробую))) спасибо


Не компилируется..

Сорри за большую картинку)

Последний раз редактировалось Stilet; 14.03.2012 в 22:19.
York вне форума Ответить с цитированием
Старый 14.03.2012, 15:39   #4
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Скомпилирова вроде все норм, но теперь другое


*На второй брейкпоинт ругается

Не могу решить проблему, помогите

Последний раз редактировалось Stilet; 14.03.2012 в 22:21.
York вне форума Ответить с цитированием
Старый 14.03.2012, 16:12   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

DWORD lpNumberOfBytesWritten;
WriteFile(h, (void*)&IBeg->nCount, sizeof(IBeg->nCount), &lpNumberOfBytesWritten, NULL );
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 14.03.2012, 16:15   #6
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

В строчках, где пишешь в файл массивы char-ов, вместо sizeof пиши strlen, или еще лучше
WriteFile(h, IBeg->Level, sizeof(IBeg->Level)/sizeof(char), &lpNumberOfBytesWritten, NULL );
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 14.03.2012, 16:25   #7
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Со строкой
Код:
WriteFile(F, (void*)&IBeg->nCount, sizeof(IBeg->nCount), &lpNumberOfBytesWritten, NULL );
Разобрался, теперь делаю так -
Код:
		  WriteFile(F, IBeg->Level, sizeof(IBeg->Level), &lpNumberOfBytesWritten, NULL );
При выполнении ругается.
York вне форума Ответить с цитированием
Старый 14.03.2012, 16:28   #8
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

WriteFile(F, IBeg->Level, sizeof(IBeg->Level)/sizeof(char), &lpNumberOfBytesWritten, NULL );
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 14.03.2012, 16:31   #9
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Все-равно ругается)
York вне форума Ответить с цитированием
Старый 14.03.2012, 16:33   #10
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Если не хочешь сильно париться, используй TStringList, там есть метод SaveToFile(String Path);
Сколько строк будет, столько будет в файле.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
расширение *.gfx O_o ????? zzzzzz Общие вопросы по Java, Java SE, Kotlin 11 06.06.2018 14:21
External exception EEEFACE. WTF? O_o BingoBongo Общие вопросы Delphi 21 10.01.2014 01:35
QT seaBattle o_O Guzal Помощь студентам 10 07.03.2011 22:25
Вывод в текстовик из батника mephist Помощь студентам 8 08.06.2009 23:35
пишу текстовик. как открыть файл на лету? Deceased Общие вопросы Delphi 17 08.03.2009 16:21