Ошибка E2027 как результат функции read() (ifsteam)

Тема в разделе "WASM.ZEN", создана пользователем EvilsInterrupt, 15 ноя 2005.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Я создаю поток используя builder c++ v6.0:

    ifstream file("data.dat");



    далее file.seekg(LastFileseek,ios::end);



    file.read(pBuf,SizeData);

    После этого

    if(file.fail())

    { return 12; }



    Ранее pBuf был выделен динамически, но после его создания переменная pBuf не нулевая, следователь память выделена! После file.seekg ошибки нет проверял с помощью file.fail(),но никак не пойму почему не хочет читаться файл, и выводится:



    E2027: Must take address of a memory location



    Когда во время отладки подводишь курсором
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан




    НизачОт! В переменных со стека хранится мусор.



    [edit]: Хотя... Наверно не так понял. Покажи весь код (с выделением памяти).
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Код (Text):
    1.         ifstream        hBackup(BackupFile.c_str());
    2.         if(hBackup)
    3.         {
    4.             hBackup.seekg(0,ios::end);
    5.             if(hBackup.fail())
    6.                     { return 11;}
    7.             else
    8.             {
    9.                 CurrentSize = hBackup.tellg();
    10. ..ifы есть, но они точно роли не играют!!!
    11.                 else
    12.                 {
    13.                     SizeBackup = CurrentSize.operator long() - NextFileseek+1;
    14.                     NextFileseek = CurrentSize.operator long();
    15.                     CountNewBcp = SizeBackup / ((sizeof(BcpArchive)-4)+sizeof(Data)*CountObjs);
    16.                     pBcpArchive = (BcpArchive *)(new char[SizeBackup]);
    17.                     hBackup.seekg((streampos)SizeBackup+1,ios::end);
    18.                     hBackup.read((char *)pBcpArchive,SizeBackup);
    19.                     if(hBackup.fail())
    20.                         { return 12; }
    21.                     hBackup.close();
    22.                     return 0;


    а про переменню, у меня привычка в контрукторе обнулять и в диструкторе тоже!
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    EvilsInterrupt







    Совершенно незачем. Лишний код, лишнее время работы.







    Аттач у меня выполняется без ошибок. Скорее всего ты облажался на том, что у тебя text.txt меньше 11-ти байт.
     
  6. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Блин с этой работой, где минуту ты программер, вторую разработчик скада систем, а третью можешь быть как монтажником так и еще фиг знает кем, че самое страшное, пока не могу никуда рыпнуться, ладно хоть дома фри помогает расслабиться

    А вообще, ты глянь выше код, ни чего не видешь случайно? можь ошибка какая
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    EvilsInterrupt



    Ну какие-то жутковато-подозрительные вещи есть, типа

    pBcpArchive = (BcpArchive *)(new char[SizeBackup]);

    Но ничего фатального вроде нет...
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    А в деструкторе-то зачем?
     
  9. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Забыл спросить а если так выделять память то там нули должны быть или что? а то я по f9 winhex глядел, там мусор и разнобродный!
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    EvilsInterrupt

    Imho E2027 - это ошибка компиляции. При чем тут "результат работы функции"?
     
  11. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    q_q

    У меня компилится и нормально под билдер 6.0 с++

    но начинаешь отлаживать вместе чтения послее ее выполнения подводишь мышь на file.fail() и видешь то что писал выше!
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    EvilsInterrupt

    Ты не курсором подводи во время отладки, а напиши отладочный код. В VC тоже в тултипах иногда чудеса бывают, лучше удостовериться.
     
  13. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    IceStudent

    спасибо но я уже просто заколустался глядеть в этот отладчик, блин, вроде пустяк но именно он мне и недает покоя, и еще ты где то выкладывал свое мыло, но где не помню не можешь ли че нить написать на мое(профайл)?