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

Во многих версиях 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");

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

0

Решение

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

PlayString(aa+"O3"+bb);
0

Другие решения

Других решений пока нет …