Масивът в моя режим за отстраняване на грешки показва само първите 14 елемента, а останалите показват (?) въпросителен знак

Използвам windows 7 x64.

Случайно забелязах този проблем вчера.

В кода имам масив от тип int и размер 500 или нещо друго всъщност и X > 14

Използвам for цикъл, за да поставя число в този масив. И зададох точка на прекъсване за отстраняване на грешки в края на цикъла, за да разгледам елемента в масива.

Но само елементите 0-14 на масива показват номер, а останалите показват въпросителни знаци?

Въпреки това, ако трябваше да отпечатам масива, мога да видя стойности във всички тях.

Използвам режима Visual Studio 2012 Express.

Зададох режим на отстраняване на грешки на Всеки процесор. Пробвах и x64 и x86, но имам същия проблем.

Знаете ли какъв е проблема?


person user3573417    schedule 01.05.2014    source източник


Отговори (1)


Това е (глупав) бъг във Visual Studio, който се причинява, когато превъртате изгледа за отстраняване на грешки в списъка с мишката. За да го „отстраните“, използвайте/щракнете върху стрелката надолу в долната част на менюто, вместо да използвате мишката за превъртане.

РЕДАКТИРАНЕ

Вижте това за подобен/същият проблем

person Haney    schedule 01.05.2014
comment

Наскоро се сблъсках със същия проблем за настройка на фоновото изображение на ImageView. Решението, което измислих, работи с всеки View, така че трябва да покрива и Button.

Проблемът е, че View винаги разтяга своя фон до пълния обхват на ширината и височината на View, независимо от мащабирането на Drawable, предоставен като фон. Както подсказва докладът ви за непредоставяне на специализирани Drawables, това не може да бъде противодействано с никакви средства за мащабиране на изображение, преди да го зададе като фон, защото View просто ще вземе размерите на изображението, каквито и да са те, и ще ги мащабира отново независимо, за да запълни View ■ площ.

Моето решение използва различен подход въз основа на факта, че ако можем да предоставим фоново изображение със същото съотношение на страните като View, няма да има изкривяване.

Функция scaleKeepingAspect() по-долу взема ресурс за изображение и отговаря на BitmapDrawable, който съдържа оригиналното изображение, мащабирано до желаната ширина и височина. Мащабирането се извършва по начин, при който съотношението на оригиналното изображение се запазва, а евентуално оставащите пространства, за да пасне на желаното поле, се запълват с прозрачни пиксели. Оригиналното изображение е центрирано в резултата.

private BitmapDrawable scaleKeepingAspect(Resources res, int id, int dstWidth, int dstHeight) {

    Bitmap b = (new BitmapFactory()).decodeResource(res, id);
    float scaleX = (float) dstWidth / b.getWidth();
    float scaleY = (float) dstHeight / b.getHeight();
    float scale = scaleX < scaleY ? scaleX : scaleY;
    int sclWidth = Math.round(scale * b.getWidth());
    int sclHeight = Math.round(scale * b.getHeight());
    b = Bitmap.createScaledBitmap(b, sclWidth, sclHeight, false);
    int[] pixels = new int[sclWidth * sclHeight];
    b.getPixels(pixels, 0, sclWidth, 0, 0, sclWidth, sclHeight);
    b = Bitmap.createBitmap(dstWidth, dstHeight, b.getConfig());
    b.setPixels(pixels, 0, sclWidth, (dstWidth - sclWidth) / 2, (dstHeight - sclHeight) / 2, sclWidth, sclHeight);
    return new BitmapDrawable(res, Bitmap.createBitmap(b));

}

Подходящо място за използване на scaleKeepingAspect() при настройване на фона на View е по време на събития за промяна на оформлението, така че фонът се актуализира правилно, когато границите на View се променят поради обработката на оформлението. За да направите това, ако приемем (a) че вашият View е идентифициран от myView във вашия xml оформление и (b) вашето фоново изображение е файл res/drawable/background.png, направете следното:

  1. Декларирайте вашия Activity като изпълнител на интерфейс View.OnLayoutChangeListener:

    public class MyActivity extends Activity implements View.OnLayoutChangeListener {
    
        ...
    
    }
    
  2. Регистрирайте своя Activity като слушател на промени в оформлението на вашия View:

    @Override public void onCreate(Bundle savedInstanceState) {
    
        ...
    
        myView = (View) findViewById(R.id.myView);
        myView.addOnLayoutChangeListener(this);
    
        ...
    
    }
    
  3. Открийте за View актуализации на оформлението в манипулатора за промяна на оформлението и актуализирайте неговия фон, когато е необходимо:

    @Override public void onLayoutChange (View v,
            int left, int top, int right, int bottom,
            int oldLeft, int oldTop, int oldRight, int oldBottom) {
    
        if (left == right || top == bottom || (
                left == oldLeft && top == oldTop &&
                right == oldRight && bottom == oldBottom))
            return;
    
        switch (v.getId()) {
    
            case R.id.myView:
    
                v.setBackground(
                    scaleKeepingAspect(
                        getResources(),
                        R.drawable.background,
                        v.getWidth(),
                        v.getHeight()));
                break;
    
        }
    
    }
    
- person user3573417; 01.05.2014
comment
Не съм сигурен, че можете. :С - person Haney; 01.05.2014