"Access Violation "的困惑

Confusing of "Access Violation "

本文关键字:Violation Access      更新时间:2023-10-16

我不理解这种情况,但这对我来说真的很重要,请帮助我…

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,它将使消息异常Class EAccessViolation。。

在黑暗中拍摄,但我认为你实际上想做的可能是这样。我假设你取一个由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;
}