На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Как структуру в файл???
    Здравствуйте. Что не так делаю??? Мне нужно записать структуру в фай. Данные читаю с едитбокса.
    ExpandedWrap disabled
      //сама структура
      struct recf
      {
      char kurs[256];
      char grup[256];
      char day[256];
      char lesson[256];
      int hour;
      char ds[256];
      };
       
       
      //запись в файл
      FILE *out;
      recf temp;
      int dd;
      if ((out = fopen("data.dat","wb"))==NULL)
          {
              }
       
        temp.kurs = kurs->Text.c_str;
        temp.grup = Grup->Text.c_str;
        temp.day = Day->Text.c_str;
        temp.lesson = Para->Text.c_str;
        temp.hour = StrToInt(hours->Text.c_str);
        temp.ds = Lab->Text.c_str;
        fwrite(&temp,sizeof(temp),1,out);
        fclose(out);
      neznayka

      temp.kurs,temp.grup,temp.day,temp.lesson,temp.ds - это указатели. Попробуй вот так :

      ExpandedWrap disabled
        memcpy(temp.kurs,kurs->Text.c_str,kurs->Text.Length());
        // и т.д.
        //..................
      Сообщение отредактировано: Дима -
        neznayka, у тебя это хотя бы компилиться c_str() - метод AnsiString, и это не паскаль. И {} после if как-то странно стоят.
        Цитата Дима @
        temp.kurs,temp.grup,temp.day,temp.lesson,temp.ds - это указатели.
        Нет, это - не указатели, указатели - это kurs->Text.c_str(), Grup->Text.c_str(), Day->Text.c_str(), ...
          Цитата Дима @
          neznayka

          temp.kurs,temp.grup,temp.day,temp.lesson,temp.ds - это указатели. Попробуй вот так :

          ExpandedWrap disabled
            memcpy(temp.kurs,kurs->Text.c_str,kurs->Text.Length());
            // и т.д.
            //..................

          нет нехотит. :(
          Цитата
          Cannot convert 'char * (_fastcall * (_closure )())()' to 'const void *'


          -Added
          Цитата Adil @
          neznayka, у тебя это хотя бы компилиться c_str() - метод AnsiString, и это не паскаль. И {} после if как-то странно стоят.
          Цитата Дима @
          temp.kurs,temp.grup,temp.day,temp.lesson,temp.ds - это указатели.
          Нет, это - не указатели, указатели - это kurs->Text.c_str(), Grup->Text.c_str(), Day->Text.c_str(), ...

          Компилируется.
            neznayka
            извени :
            ExpandedWrap disabled
              memcpy(temp.kurs,kurs->Text.c_str(),kurs->Text.Length());


            Adil
            Цитата
            Нет, это - не указатели, указатели - это kurs->Text.c_str(), Grup->Text.c_str(), Day->Text.c_str(), ...


            Я всё время считал, что при char c[100], c - это указатель на первый элемент массива. В чём я не прав?
              Цитата
              указатели - это kurs->Text.c_str(), Grup->Text.c_str(), Day->Text.c_str(),


              Тогда что нужно создать структуру указателей??? И как она в будет файле?? Я смогу читать файл записями???
                Цитата Дима @
                Я всё время считал, что при char c[100], c - это указатель на первый элемент массива. В чём я не прав?

                тынц
                  ExpandedWrap disabled
                    //сама структура
                    struct recf
                    {
                    char kurs[256];
                    char grup[256];
                    char day[256];
                    char lesson[256];
                    int hour;
                    char ds[256];
                    };
                     
                    //запись в файл
                    FILE *out;
                    recf temp;
                    int dd;
                    if ((out = fopen("data.dat","wb"))==NULL)
                       {
                       }
                     
                      strcpy(temp.kurs, kurs->Text.c_str());
                      strcpy(temp.grup, Grup->Text.c_str());
                      strcpy(temp.day, Day->Text.c_str());
                      strcpy(temp.lesson, Para->Text.c_str());
                      temp.hour = StrToInt(hours->Text);
                      strcpy(temp.ds, Lab->Text.c_str());
                     
                      fwrite(&temp,sizeof(temp),1,out);
                      fclose(out);


                  Спасиб за внимание :)
                    Цитата Дима @
                    Я всё время считал, что при char c[100], c - это указатель на первый элемент массива. В чём я не прав?
                    с - указывает на первый элемент массива, но это не указатель.
                    char [] и char* - это разные типы. Почувствуй разницу
                    ExpandedWrap disabled
                        char c[];
                        char* p;
                        p = c;
                        c = p;
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0361 ]   [ 16 queries used ]   [ Generated: 3.05.24, 11:25 GMT ]