混淆“访问冲突”

时间:2012-02-16 21:23:17

标签: c++ c++builder

我不明白这个案子,但这对我来说真的很重要,请帮助我......

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;
}

如果我使masukan超过10(i <10(默认值为10)),则可以,但如果小于10,则会使消息异常类EAccessViolation ..

1 个答案:

答案 0 :(得分:1)

在黑暗中拍摄,但我认为你真正想做的事情可能就是这样。我假设您正在使用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;
}