Во многих версиях 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");
Идея (ы), кто-нибудь?
Как написано, это не может работать. Причина именно то, что вы подозревали: C ++ компилируется. Имена переменных не существуют во время выполнения. Но PlayString
интерпретирует его аргумент только во время выполнения. Тебе нужно
PlayString(aa+"O3"+bb);
Других решений пока нет …