我有一个程序可以读取文本文件,这些文件文件充满了代码,这些代码旨在由程序逐行执行,就像批处理文件一样。问题是我不知道怎么做行执行部分。这是我的代码,我以为使用\ r \ n会欺骗控制台。但它只是显示了文件中的行列表。
if (tok[0] == "read" && length == 2)
{
try
{
StreamReader tr = new StreamReader(@"C:\Users\Public\"+tok[1]+".txt");
while (!tr.EndOfStream)
{
Console.WriteLine(tr.ReadLine());
}
}
catch
{
Console.WriteLine("No such text file.\n");
}
Prompt();
}
如果我知道要搜索什么来解决我在谷歌的问题,我会的。但我不知道。
由于
编辑 - 我的程序是粗略的合成器。它采用440 5或415 2的形式输入。第一个数字是频率,第二个持续时间。我想要做的是读取我的代码所做的文本文件,并逐行执行声音信息,但它没有,因此我的问题。它在标准输入下完美无缺。
答案 0 :(得分:2)
音频合成并不简单,曾经是
Console.Beep(frequency,duration);
但是使用PC扬声器的大多数系统都没有 - here's an example虽然使用DirectSound来实现接近你想要的东西。
要从文本文件中读取频率和持续时间,您可以使用类似的内容(在空格上拆分):
StreamReader tr = new StreamReader(@"test.txt");
while(!tr.EndOfStream)
{
string[] parts = tr.ReadLine().Split(new[]{' '});
int frequency = Convert.ToInt32(parts[0]);
int duration = Convert.ToInt32(parts[1]);
}
答案 1 :(得分:1)
您应该加载代码并在运行时编译它。
查看以下示例:
编辑:
您应该使用Process.Start(cmd);
在shell中执行命令。在这里,我发现了一些不错的例子:http://dotnetperls.com/process-start
答案 2 :(得分:1)
如果您的程序使用标准输入正常工作,只需将文本文件传递给它:
yourprogram.exe< TextFile.txt的
然后文本文件的内容将传递给标准输入的程序。