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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Проблема работы с файлами, С++ Builder
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 16.05.2024 5:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name