Преобразование музыкальных подстрок из BASIC в C++

Во многих версиях Basic музыку можно воспроизводить с утверждением PLAY. Он принимает в качестве аргументов примечания, октавы и т. Д., Но также и подстроки. В качестве примера, A$="BCD": B$="FDE": PLAY "XA$;O3XB$;" эквивалентно PLAY "BCDO3FDE"

Я хочу сделать то же самое в C++. Я знаю, что это сложно, так как BASIC интерпретируется и C++ компилируется, но есть ли способ?

Если быть более точным, у меня уже есть функция PlayString(AnsiString ss), который может воспроизводить строку из нот (например, "BCD"), октав (префикс O плюс цифра, например, "O2"), длину ноты (префикс L плюс число, например, "L4"), поэтому строка играть может быть "BCDO3FDE" (так же, как выше).

Я хочу добавить к нему необходимый код для воспроизведения подстроки, скажем, с префиксом X, чтобы код, как показано в строке ниже, работал:

AnsiString aa="BCD", bb="FDE";PlayString("Xaa;O3Xbb;");

и быть эквивалентным

PlayString("BCDO3FDE");

Идея (ы), кто-нибудь?

1 ответ

Как написано, это не может работать. Причина именно то, что вы подозревали: C++ компилируется. Имена переменных не существуют во время выполнения. Но PlayString интерпретирует его аргумент только во время выполнения. Тебе нужно

PlayString(aa+"O3"+bb);
Другие вопросы по тегам