Загрузка из ресурса

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ShkiperLol, 21 Jun 2010.

  1. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Народ помогите!!!!!!Очень нада помощь!

    Такая проблема возникла.

    На форме размещен TImage и TButton.
    В ресурсах приложения есть файл "fail.png".
    При нажатии на кнопку данный файл загружаеться в
    TImage.
    Фрагмент кода:
    Code:
    TResourceStream*res=new TResourceStream(0,"PORTOPENSUCCES","ICONS");
          Form1->Image2->Picture->Bitmap->LoadFromStream(res);
          delete res;
    
    Вроде все норм,но если нажать еще раз кнопку,то выскакует исключение.
    В чем может быть проблема?
     
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    "исключение" это гораздо лучшее описание ошибки, нежели "не работает", но и оно не спасет нас от необходимости поиска телепата. Или подробности в какой строке, какое исключение, что пишет борланд(или что там) - секретная инфа?
     
  3. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Простите,вы правы.
    Вот ексепшн который выскакивает
    [​IMG]
     
  4. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    Form1->Image2->Picture->Bitmap->LoadFromStream(res);

    Эту строку разбить на промежуточные. типа Image img = Form1->Image2;
    и так далее. Ну а дальше смотреть на какой строке исключение. Какой то из указателей крив.
     
  5. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    :D :D :D :D :D :D :D
    Ну ты блин гений.Я и так знаю в каком месте возникает ексепшн.
    Пожалуйста народ,если вы не знаете в чем трабла,то не пишите глупые посты!
     
  6. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    В приведенном фрагменте кода в каждой строке по одному оператору
    Разбивать во-первых не поможет, во-вторых можно проще.
    Надо ставить бряк на эту строку, и смотреть в окно дебаггера Local Variables на что указывают все указатели, и в интерактивном режиме пробовать в дебаггере обращаться по всем указателям и объектам, тогда отладчик выдаст эксепшен на мусоре.

    А чем не катит:
    Image1.Picture.Bitmap.LoadFromResourceName();
    :confused:

    В общем, у меня на кнопке всего одна строчка и нормально отрабатывает сколько угодно раз:
    Image1.Picture.Bitmap.LoadFromResourceName(0, 'Bitmap_1');
    где Bitmap_1 - название ресурса
     
    #6 GhostOnline, 22 Jun 2010
    Last edited: 22 Jun 2010
    1 person likes this.
  7. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    GhostOnline привет :)
    вечная путаница под операторами я имел ввиду операции
    выполнящиеся на операндами а их бывает очень много в одной строке
    отлаживать такое если что то не работает это ахтунг
    в отладчике на уровне исходного кода за один шаг меняется
    сразу пачка переменных когда нужно все по шагам
    ну или вариант переключится в режим дизассемблера или не писать
    по 10 операций в одной строке думать как отлаживать будеш
     
  8. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    открою маленькую тайну - в норм фирмах запрещается делать вызовы вложенностью больше двух-трёх, как раз именно для избегания таких багов.
     
  9. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    сколько раз попадался на таком пишеш объемный кусок
    кода причем на каждой строке код довольно вычурный
    который невозможно отладить нормально потом билдиш запускаеш
    не работает тут то и начинаеш пошагово смотреть а так как
    в каждой строке делается масса вещей такой код невозможно
    отладить потом береш и переписываеш код нормально
    чтоб в каждой строке делалось минимум и снова отлаживаеш
    а потом позже уже стал прежде чем написать в одной
    строке что то мудреное представлять себе отладку этого чуда
    и практически сейчас никогда не стараюсь сделать побольше
    без перевода каретки на новую строку так как код с первого
    раза редко работает а отладить такое невозможно нормально
     
  10. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    greki_hoy, если у тебя даже простые тексты нечитабельны, страшно представить, как исходники выглядят ;)