IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Проблема работы с файлами, С++ Builder
ninja
сообщение 17.11.2010 22:30
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Доброй ночи, столкнулся с такой проблемой: при записи информации в файл, кроме нужной, в файл записывается еще всякая лишняя информация. Принып такой: если в файле уже есть запись с записываемым именем ее записывать не нужно, в файл записывается только новая запись. И еще такая ошибка, когда создаю файл, при чтении этого файла функция !feof(F) как-то неверно работает, а именно в цикл все равно заходит, но поидее не должно, т.к. файл пустой. Заранее благодарен за помощь.


Объявляется структура

struct YzelName
{
TCHAR name[10];
}yz;


Считывание данных из файла



AnsiString name;
NodeName = Edit1->Text;

bool flag_new_yzel = false;
char *File_Yzel_Name;

name = "Yzelname-" + ComboBox1->Items->Strings[ComboBox1->ItemIndex]; ///
File_Yzel_Name = name.c_str();

F = fopen(File_Yzel_Name,"ab+");
fclose(F);

F=fopen(File_Yzel_Name,"rb");
int i = 0;

while (!feof(F))
{
if (feof(F))
{
break;
}
fseek(F,i*sizeof(struct YzelName),SEEK_SET);
fread(&yz,sizeof(struct YzelName),1,F);
name = yz.name;
i++;
if (yz.name == NodeName)
{
flag_new_yzel = true;
}
else
{
flag_new_yzel = false;
}
}
fclose(F);


Запись в файл

if (flag_new_yzel == false)
{
F = fopen(File_Yzel_Name,"ab+");
perevod(yz.name,NodeName);
fwrite(&yz,sizeof(struct YzelName),1,F);
fclose(F);
}


Функция perevod

void perevod(TCHAR output_str[],AnsiString input_str)
{
int i;
char *str = input_str.c_str();
for (i = 0; i <= strlen(str); i++)
{
output_str[i] = str[i];
}
output_str[i-1] = '\0';
}


Сообщение отредактировано: ninja - 17.11.2010 22:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
ninja
сообщение 18.11.2010 15:32
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Все вроде работает!

У меня оказывается в настройках уже стояло соотношение TCHAR, char'y. Владимир, а что Вы имеете ввиду под

Цитата
Если тебя устраивает ,что твой код может быть только ANSI, то есть, на юникод ты его переносить не собираешься


Всмысле запускать программу на других компьютерах? или преобразовывать в другой тип? Запускать на других машинах придется, т.к. преподаватель будет проверять у себя.

P.S. Владимир спасибо Вам большое, как всегда выручаете !!!

Сообщение отредактировано: ninja - 18.11.2010 15:33
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 16:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"