Смущает "Нарушение прав доступа" - PullRequest
0 голосов
/ 17 февраля 2012

Я не понимаю, с этим делом, но это действительно очень важно для меня, пожалуйста, помогите мне ...

void __fastcall TForm1::Button4Click(TObject *Sender)
{
    String masuk, keluar, kosong;
    int i, x, j, n = 0;

    masuk = Edit2->Text;
    keluar = masuk;
    kosong = " ";
    n = 0;
    x = 0;

mulai:
    i = 1;
    j = 0;
    j = j + n;
    i = i + j;
    if (masuk[i] == 'a')
    {
        keluar[i] = 't';
    }
    else if (masuk[i] == 't')
    {
        keluar[i] = 'a';
    }
    else if (masuk[i] == 'c')
    {
        keluar[i] = 'g';
    }
    else if (masuk[i] == 'g')
    {
        keluar[i] = 'c';
    }
    else
    {
        Application->MessageBoxA("Masukan Anda Salah", "Peringatan", MB_OK | MB_ICONWARNING);
        keluar = kosong;
        goto end;
    }
    n = n + 1;
    if (i < 10)
        goto mulai;
    else
        goto end;

end:
    Memo1->Text = keluar;
}

, если я сделаю масукан более 10 (я <10 (10 по умолчанию)значение)), это нормально, но если оно меньше 10, оно сделает исключение для сообщения Class EAccessViolation .. </p>

1 Ответ

1 голос
/ 17 февраля 2012

Съемка в темноте, но я думаю, что вы на самом деле пытаетесь сделать это.Я предполагаю, что вы берете одну строку из 10 символов, которая представляет одну половину генома, и вы генерируете другую строку значений пары.

void __fastcall TForm1::Button4Click(TObject *Sender)
{
  String masuk, keluar;
  masuk = Edit2->Text;
  keluar = masuk;

  char kosong = ' ';

  for (int i=0; i < 10; i++)
  {
    switch(masuk[i]) {
      case 'a':
        keluar[i] = 't';
        break;
      case 't':
        keluar[i] = 'a';
        break;
      case 'c':
        keluar[i] = 'g';
        break;
      case 'g':
        keluar[i] = 'c';
        break;
      default:
        Application->MessageBoxA("Masukan Anda Salah", "Peringatan", MB_OK | MB_ICONWARNING);
        keluar[i] = kosong;
        break;
  }
  Memo1->Text = keluar;
}
...