Преобразование музыкальных подстрок из 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);