小编Dav*_*Caz的帖子

VB6 UDT的自检

我有一种感觉,答案是"不可能",但我会试一试......我处于一个不值得羡慕的位置,修改了一些增强功能的旧版VB6应用程序.转换为更智能的语言不是一种选择.该应用程序依赖于大量用户定义的类型来移动数据.我想定义一个公共函数,它可以引用任何这些类型并提取包含的数据.
在伪代码中,这是我正在寻找的:

Public Sub PrintUDT ( vData As Variant )
  for each vDataMember in vData
    print vDataMember.Name & ": " & vDataMember.value 
  next vDataMember 
End Sub
Run Code Online (Sandbox Code Playgroud)

似乎这个信息需要在某个地方提供给COM ...任何VB6大师都在乎小心翼翼地拍摄?

谢谢,

担

vb6 user-defined-types tlbinf32

18
推荐指数
1
解决办法
7889
查看次数

如何获得无状态框架的优势

我想在我的代码中使用http://code.google.com/p/stateless将功能与其依赖项分开.我没有找到任何高级的用法示例,所以这个问题是关于无状态框架的最佳实践.

我有以下配置(这只是一个例子,只有一个功能状态):

var stateMachine = new StateMachine(State.Stopped);

stateMachine.Configure(State.Stopped)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.GenerateMachineData);

stateMachine.Configure(State.GenerateMachineData)
    .Permit(Trigger.Failed, State.Error)
    .Permit(Trigger.Succeed, State.Finished);

public enum State
{
    Stopped,
    GenerateMachineData,
    Finished,
    Error
}

public enum Trigger
{
    Succeed,
    Failed
}
Run Code Online (Sandbox Code Playgroud)

那么在哪里调用实际的功能.我有以下想法,但每个都有优点和缺点:

1)在OnEntry()中设置功能以及下一次触发:

stateMachine.Configure(State.GenerateMachineData)
.OnEntry(() => { 
    try {
       Generate(); 
       stateMachine.Fire(Trigger.Succeed);
    } catch {
       stateMachine.Fire(Trigger.Error);
    } 
})
.Permit(Trigger.Failed, State.Error)
.Permit(Trigger.Succeed, State.Finished);
Run Code Online (Sandbox Code Playgroud)

那么如果我只是打电话

stateMachine.Fire(Trigger.Succeed);
Run Code Online (Sandbox Code Playgroud)

它最终在State.Finished或State.Error中结束

  • 优点 - 全部在一起
  • disadvatages - 解决方案不能真正单元测试

2)将状态机和功能分开,如: __CODE__或__CODE__直接传入,因为这可能不是你想要发生的.即使他们这样做了,你仍然需要__CODE__/ __CODE__处理创建对象的错误.供应商是一种懒惰的回调,它允许一次性创建,使用和关闭实际对象,而不必进行大量的丑陋__CODE__/ __CODE__错误处理.

例如,只需查看将一个文件复制到另一个文件所需的代码(使用Guava实用程序将实际复制和流关闭代码最小化):

void DoTheStuff() …

.net c# stateless-state-machine

18
推荐指数
2
解决办法
1万
查看次数

格式化SVN diff作为并排比较

我想生成一个并排的SVN diff而不是通常的SVN diff输出.有没有办法获得这种输出?

unix svn console diff

18
推荐指数
2
解决办法
8256
查看次数

WPF C#InputBox

我在网上进行了研究,但没有找到我想要或不清楚的解决方案.

我正在使用C#进行WPF应用程序.我想弹出一个对话框,提示用户输入他/她的名字.之后,我将跟踪名称并使用名称将一些数据保存到txt文件中.

例如,

名称输入是name ="John"

所以我有一个数据数据="1,2,3";

然后我将"数据"保存在John.txt文件中.

谁知道怎么做?我认为问题是如何弹出一个对话框供用户输入名称.

谢谢!

c# wpf visual-studio-2010 visual-studio

18
推荐指数
2
解决办法
6万
查看次数

将位图转换为图标

我正在尝试将位图转换为图标.但是有一些错误,因为结果文件只是空白.

private void btnCnvrtSave_Click(object sender, EventArgs e)
{
    Bitmap bmp = new Bitmap(sourceFile);  //sourceFile = openfiledialog.FileName;
    IntPtr Hicon = bmp.GetHicon();
    Icon myIcon = Icon.FromHandle(Hicon);

    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Title = "Save Icon";
    sfd.Filter = "Icon|*.ico";
    sfd.ShowDialog();

    FileStream fileStream = new FileStream(sfd.FileName, FileMode.OpenOrCreate);
    myIcon.Save(fileStream);
    fileStream.Flush();
    fileStream.Close();

    MessageBox.Show("Image is converted successfully!");

    //Process.Start(sfd.FileName);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多来弄清楚问题,但不能.请告诉我问题出在哪里.

.net c# winforms

18
推荐指数
3
解决办法
3万
查看次数

将TFS历史记录导入Mercurial(hg)

有没有人成功将TFS 2008历史记录导入新的Mercurial存储库?

我迄今发现的唯一可能的解决方案是使用tfs2svn去TFS - > svn - > hg ,然后使用转换扩展,但我还没有尝试过.

svn version-control tfs mercurial mercurial-convert

17
推荐指数
3
解决办法
4160
查看次数

Zip文件压缩如何工作?

我正在研究流行的压缩算法是如何工作的,所以我可以实现自己的zip归档.关于拉链的确切运作方式是否有任何资源?

compression zip archive

17
推荐指数
1
解决办法
1万
查看次数

泛型如何影响C#和.NET的设计?

这可能是一个广泛的问题,但这是我不太清楚和非常好奇的事情.

通常,对于某些问题,我听到的原因是因为Generics在.NET 1.0中不可用.这让我想到以下两件事之一:

  1. 之前没有想到泛型,所以开发人员在.NET 1.0之后提出它可能会极大地影响C#和.NET的设计,但由于已做出的决定(向后兼容性)而无法实现.

  2. 泛型从一开始就一直在计划中,因此不使用.NET 1.0发布它的唯一问题是无法在2.0之前使用它.但除此之外,没有引入或错误的冗余功能,提出了不可逆转的决定.

我大多假设#1,但实际情况是#2?

.net c# generics

17
推荐指数
3
解决办法
571
查看次数

如何解决'...是'类型',在给定的上下文中无效?(C#)

以下代码生成错误:

错误:'CERas.CERAS'是'type',在给定的上下文中无效

为什么会出现此错误?

using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinApp_WMI2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            CERas.CERAS = new CERas.CERAS();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wmi network-programming visual-studio

16
推荐指数
4
解决办法
11万
查看次数

如何Hg Shelve添加了尚未提交的文件

我正在使用Mercurial Shelve扩展来保留命令行的更改.它很好用,除非我想搁置的更改包含工作目录中的新添加文件(a).基本上,除了新添加的文件外,它还可以上架.我通过查看.hg/shelve存储的更改来检查这一点.

如何搁置新添加的文件(状态)?

mercurial shelving

16
推荐指数
3
解决办法
6708
查看次数