Ошибка по адресу

287
28 октября 2017, 17:08

Помогите найти ошибку... Программа компилится, запускается. Но при нажатии на кнопку... Вылетает ошибка по адресу.

View -> Debug Windows -> Call Stack.

00401BE9 Morf(S1={ "111" }, T=false)

B = S1[I]; <- ругается на это. Почему не знаю... С C++ не очень сильно знаком.

//---------------------------------------------------------------------------
#include <vcl.h>
#include<iostream>
#include<string>
using namespace std;
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString Morf(AnsiString S1, bool T)
{
    int LS;
    int KB;
    int B;
    int W;
    AnsiString S2;
    LS = S1.Length();
    KB = LS * LS;
    if (!T)
    {
        for (int I = 0; I < LS; I++)
        {
            B = S1[I];
            if (B > 32)
            {
                W = B + KB;
                if (W > 255)
                    W = W - 223;
                B = W;
            }; // If
            S2 += static_cast<char>(B);
            KB = (KB + (I * 2)) & 127;
        }
    }
    else
    {
        for (int I = 0; I < LS; I++)
        {
            B = S1[I];
            if (B > 32)
            {
                W = B - KB;
                if (W < 33)
                    W = W + 223;
                B = W;
            }
            S2 += static_cast<char>(B);
            KB = (KB + (I * 2)) & 127;
        }
    }
    return S2;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text = Morf(Edit1->Text, false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//Edit4->Text = Morf(Edit3->Text, true);
}
//---------------------------------------------------------------------------

Стек вызовов в момент падения:

7565B727 C:\Windows\syswow64\KERNELBASE.dll
40005B68 C:\Windows\SysWOW64\rtl60.bpl
77436A8B ntdll.dll
77400143 ntdll.dll
0040276A System::AnsiString::ThrowIfOutOfRange
00401DA7 System::AnsiString::operator [](this=:0018F280, idx=0)
00401BE9 Morf(S1={ "123" }, T=false)
00401E2B TForm1::Button1Click(this=:00A15688, Sender=:00A173C0)
4010798A C:\Windows\SysWOW64\vcl60.bpl
4010A9A8 C:\Windows\SysWOW64\vcl60.bpl
4010AAE0 C:\Windows\SysWOW64\vcl60.bpl
4010A9A8 C:\Windows\SysWOW64\vcl60.bpl
4010A623 C:\Windows\SysWOW64\vcl60.bpl
40037EEA C:\Windows\SysWOW64\rtl60.bpl
75DA62FA C:\Windows\syswow64\user32.dll
75DA6D3A C:\Windows\syswow64\user32.dll
75DB0D27 C:\Windows\syswow64\user32.dll
75DB0D4D C:\Windows\syswow64\user32.dll
72A2A7C2 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
72A2A9D0 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
72A2A985 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
72A41BD0 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
72A2A9D0 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
72A2A8C3 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll
75DA62FA C:\Windows\syswow64\user32.dll
75DA6D3A C:\Windows\syswow64\user32.dll
75DA965E C:\Windows\syswow64\user32.dll
75DA96C5 C:\Windows\syswow64\user32.dll
75DE5FBB C:\Windows\syswow64\user32.dll
75DE60FC C:\Windows\syswow64\user32.dll
75DD312E C:\Windows\syswow64\user32.dll
75DCAA3F C:\Windows\syswow64\user32.dll
75DA62FA C:\Windows\syswow64\user32.dll
75DA6D3A C:\Windows\syswow64\user32.dll
75DB0D27 C:\Windows\syswow64\user32.dll
75DB794A C:\Windows\syswow64\user32.dll
4010AA8C C:\Windows\SysWOW64\vcl60.bpl
4010A9A8 C:\Windows\SysWOW64\vcl60.bpl
40037EEA C:\Windows\SysWOW64\rtl60.bpl
75DA62FA C:\Windows\syswow64\user32.dll
75DA6D3A C:\Windows\syswow64\user32.dll
75DA77C4 C:\Windows\syswow64\user32.dll
75DA7BCA C:\Windows\syswow64\user32.dll
400F5834 C:\Windows\SysWOW64\vcl60.bpl
004017AB WinMain( =:00400000,  =NULL,  =:007744E9,  =9)
3267E52F C:\Windows\SysWOW64\CC3260MT.DLL

Вот весь call stack. Может я что то не подключил...

Answer 1

В AnsiString элементы считаются с 1, а не с 0.
Документация

READ ALSO
Как написать такую шаблонную функцию?

Как написать такую шаблонную функцию?

Не пойму как в С++11 написать такую хотелку:

209
Нужен jquery cropping больших картнок

Нужен jquery cropping больших картнок

Подскажите, перерыл пол гугла, нечего не походит, может быть не так понимаюЗадача такая: Есть картинки разных размеров где то около 2000x***-5000x****...

237
Добавление класса с параметром scroll и удаление в зависимости от условия

Добавление класса с параметром scroll и удаление в зависимости от условия

Всем привет! Есть фильтр, задача в зависимости от кол-ва дочерних элементов в блоке, добавлять или удалять css класс, помогите найти ошибку

226
Python scrapy select element with display:none

Python scrapy select element with display:none

Не могу спарсить элемент с значением style="display: none;" css/xpath selector возвращает пустой список

242