2012-02-06 31 views
0

我正在尝试将示例win表单应用程序转换为控制台应用程序。我试图将其转换为消息格式时卡住了。使用C#的消息格式#

这里是低于原代码的winform

private void PutMessage(StringBuilder message, string mediaType, string filename) 
{ 

    message.AppendFormat(messageFormat, "FileSize", videoInterrogator.GetFileSize(), Environment.NewLine); 
    message.AppendFormat(messageFormat, "Duration", videoInterrogator.GetDuration(), Environment.NewLine); 

} 

我试图做同样的在我的控制台应用程序

我打电话从FTPDownload方法,该方法使代码看起来象

PutMessage(file, message); 


private void PutMessage(string filename, StringBuilder message) 
{ 
    VideoInterrogator videoInterrogator = new VideoInterrogator(); 
    videoInterrogator.LoadFile(filename); 
    message.AppendFormat(format, "FileSize", videoInterrogator.GetFileSize(), Environment.NewLine); 
    message.AppendFormat(format, "Duration", videoInterrogator.GetDuration(), Environment.NewLine); 

} 

任何帮助,请如何调用此方法传递文件名并返回值。它在“格式”引发异常我不知道这里错过了什么。

+0

如果您可以发布一些更多的代码以提供更多方法上下文将会很有用。例如,格式声明在哪里? – 2012-02-06 04:49:29

回答

2

你缺少一个变量format。它一定是你的WinForms代码中的一个字段。将它作为局部变量添加到方法中,或者将其添加到包含PutMessage的类的字段中。

编辑:我想我只是不确定实际的问题是什么。它是缺少的变量还是格式字符串具有多于或少于3个大括号参数?

+0

感谢大家的帮助,是一个白痴,没有注意到在代码块公共字符串messageFormat { } } – Usher 2012-02-06 05:17:51

+0

非常感谢siride – Usher 2012-02-06 05:20:36

+0

@Usher:属性应该以大写字母开头,这样会减少混淆。 – siride 2012-02-06 05:21:23

1

只是把它就像你调用任何方法:

var message = new StringBuilder(); 
var filename = "file.xyz"; 
PutMessage(filename, message); 
Console.WriteLine(message); 
+0

感谢安德鲁,它在@格式抛出异常,它引发格式不存在于当前上下文中。 – Usher 2012-02-06 04:44:03

+0

您或者需要将格式作为另一个参数添加到PutMessage中,或者使其成为该类的成员。 – 2012-02-06 04:47:07

1

根据您使用的AppendFormat方法的签名来判断,您缺少用于格式化的字符串。根据上述MSDN链接:

此方法使用.NET框架 的复合格式设置功能到一个对象的值转换为其文本表示 并嵌入在当前StringBuilder对象表示。

格式参数包括文本的零次或多个运行的混合 与零个或多个索引占位符,称为格式项目,即 对应通过ARG3到为arg0,在 此方法的参数列表中的对象。格式化过程用相应对象的 字符串表示替换每个格式项目。一个 格式项目的语法如下:

{索引[,长度] [:formatString的]}在方括号

元素是可选的。