Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 17

Некорректная запись в файл из массива

25.04.2015, 17:54. Показов 1081. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int kol;
AnsiString user;
DeleteFile("base.dat");
Form1->file_id=FileCreate("base.dat");
if (Form1->file_id==-1){ShowMessage("фаил не создан");return;}
for (int i=0;i<m1;i++)
   {
    user=Form1->log[2][i]+".";
    kol=user.Length();
    FileWrite(Form1->file_id,user.c_str(),sizeof(kol));
    user=Form1->log[0][i]+".";
    kol=user.Length();
    FileWrite(Form1->file_id,user.c_str(),sizeof(kol));
    user=Form1->log[1][i]+".";
    kol=user.Length();
    FileWrite(Form1->file_id,user.c_str(),sizeof(kol));
   }
FileClose(Form1->file_id);
В теории данный код должен записывать каждую ячейку строкового массива в файл через точку, но он делает что-то мне не очень понятное.Он пишет только 4 символа и как-то очень странно.Можете подсказать, что я неправильно делаю?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2015, 17:54
Ответы с готовыми решениями:

Некорректная запись в файл
Помогите, пожалуйста, разобраться с кодом. Задание по нахождению большего значения объема шарового сегмента. Первое действие делает...

Запись char-массива в текстовый файл
Нашел код для считывания из файла в char-массив: int FileIn=FileOpen(FileInName,fmOpenRead); int finsize=FileSeek(FileIn,0,2); char...

Посимвольная запись/чтение массива в файл
Как реализовать, чтобы при нажатии кнопки числа записывались массивом в файл посимвольно, и потом можно было этот массив сложить?!

5
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
25.04.2015, 20:48
sizeof(kol) вернет размер переменной kol, то бишь размер инта, то бишь четыре. Вот четыре байта со строки и пишется.
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 17
25.04.2015, 21:04  [ТС]
Господи,3 с половиной часа в тупую.Спасибо, огромное и человеческое.Вопрос не по теме.Я помню с помощью каких-то чудных строк, можно удалять, искать, вставлять символы в строку.Не могли бы вы подсказать эти строки?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
25.04.2015, 21:19
В VCL все это есть, частично методами в самих классах AnsiString и UnicodeString, частично - функциями, типа StuffString, StringReplace и подобных.
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 17
26.04.2015, 00:00  [ТС]
Появился новый геморой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
String log[9];
AnsiString user2;
int kol1;
if (LabeledEdit1->Text=="Admin" && LabeledEdit2->Text=="Admin")
   {ShowMessage("Добро пожаловать, уровень вашего доступа - Admin");Form6->Close();}
else
   {
    AnsiString user=LabeledEdit1->Text+"."+LabeledEdit2->Text+"."+"A";
    AnsiString user1=LabeledEdit1->Text+"."+LabeledEdit2->Text+"."+"U";
    int id=FileOpen("base.dat",fmOpenReadWrite);
    int kol=FileRead(id,&kol,sizeof(kol));
    for (int i=0;i<kol;i++)
       {
        FileRead(id,&kol1,sizeof(kol));
        user2=FileRead(id,user2.c_str(),kol1);
        log[i]=user2;
        if (user==log[i])
           {ShowMessage("Добро пожаловать, уровень вашего доступа - Admin");Form6->Close();}
        else
           if (user1==log[i])
              {
               ShowMessage("Добро пожаловать, уровень вашего доступа - User");
               Form1->N14->Enabled=false;
               Form6->Close();
              }
       }
   }
Прежде чем обратиться снова прочитал тему:
Запись и чтение из файла строковой переменной
Я понял точно, что то, что я написал имеет те же ошибки, что и в теме того пользователя. Можете объяснить студенту как можно загрузить из фаила записи?Желательно на пальцах.

Формат записи в фаиле такой:Кол-во записей,длина 1ой записи,сама запись,длина 2ой записи,сама запись и т.д.
Например:210бла.блабла.б15бла.блабла.б
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
29.04.2015, 00:02
Цитата Сообщение от bonaparte436 Посмотреть сообщение
int kol=FileRead(id,&kol,sizeof(kol));
Ужос. Тебе переменных мало? )
И что ты везде этот sizeof суёшь?
FileRead (id - это понятно, буфер-куда писать данные из файла, количество-сколько байт читать)
Есть еще Seek — поставить указатель в файле, тогда FileRead будет читать с этого места.

Добавлено через 8 минут
C++
1
2
3
4
5
6
                     int Buf[1000];
                     int hFirstFile = FileOpen("C:\\data.txt", fmOpenRead);
                     FileSeek(hFirstFile,10,0);   // 10 от начала
                     FileSeek(hFirstFile,20,1);   // 20 от текущей позиции
                     FileSeek(hFirstFile,30,2);   // 30 от конца
                     iBytesRead = FileRead(hFirstFile, &Buf, 33);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2015, 00:02
Помогаю со студенческими работами здесь

Запись и чтения текстового массива в файл
Всем привет! Пытаюсь записать массив, состоящий из строк, в файл. Builder ругается, когда пытаюсь прочитать файл. Код на запись...

Некорректная запись массива в файл
Люди добрые! Помогите христа ради! Создаю массив dim massiv(1) as string massiv(0)=&quot;str1&quot; massiv(1)=&quot;str2&quot; ...

Некорректная запись в файл
Добрый день. Я выполнял задание по лабораторной работе &quot;Из текста, расположенного в файле, исключить однобуквенные слова. Результат...

Некорректная запись в файл
Столкнулся с непонятной проблемой. Есть строка которая содержит шифрованные символы ...

Некорректная запись в файл
Пытаюсь записать полученный массив данных в файл. В матлабе значения отображается корректно, а при записи в файл записываются как: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru