小编Zul*_*kas的帖子

将char指针传递给接受char数组引用的函数

我正试图称这种方法

#define SIZE 16
void DoSomething(char(&value)[SIZE])
{
}
Run Code Online (Sandbox Code Playgroud)

从这个方法:

void BeforeDoingSomething(char* value, int len)
{
    if (len == SIZE)
    {
        DoSomething(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

试图这样做会给我这个错误:

不能使用"char*"类型的值初始化类型为"char(&)[16]"(非const限定)的引用

有关如何让编译器接受value函数传递的任何提示BeforeDoingSomething

c++

10
推荐指数
1
解决办法
721
查看次数

获取带有滚动条的面板上光标的位置

我已经构建了一个简单的程序(到目前为止),它有一个大面板作为程序的“工作区”。我在上面画了一个网格,有一些功能可以将光标捕捉到网格上最近的点等。窗口底部有一个状态栏,显示我在面板上的当前位置。然而,无论我滚动到哪里(假设垂直条相对于顶部为 10%,水平条为 25%),它都会显示我的光标相对于实际窗口的位置。

我有一个处理此问题的 OnMouseMove 事件:

private void WorkArea_MouseMove(object sender, MouseEventArgs e)
{
    GridCursor = grid.GetSnapToPosition(new Point(e.X, e.Y));
    toolStripStatusLabel1.Text = grid.GetSnapToPosition(new Point(e.X, e.Y)).ToString();
    Refresh();
}
Run Code Online (Sandbox Code Playgroud)

它的工作方式正如我所期望的那样给出光标的点,将其绘制到正确的位置,等等。但是,如果我向外滚动,我仍然会得到相同的读数。我可以在垂直和水平滚动条上滚动一半,将光标放在左上角,然后读取 0,0,此时它应该更像 5000,5000(在 10k x 10k 的面板上) 。

如何获得面板内相对于滚动条的绝对位置?

c# scroll winforms

5
推荐指数
1
解决办法
3307
查看次数

Visual Studio 测试资源管理器无法在已编译的测试项目中运行测试

我正在努力让我的单元测试工作。我已经与这个问题搏斗了几个小时,但我无法解释为什么事情不起作用。我对我的代码库进行了相当大的重构,并且已经完成并修复了所有的单元测试。测试项目构建,它输出一个新的单元测试dll。但是,当我在测试资源管理器中运行测试时,我收到以下消息:

[2/27/2019 5:08:05 PM 警告] [MSTest][Discovery][C:\pathtotest.dll] 未能从程序集 C:\pathtotest.dll 中发现测试。原因:无法加载文件或程序集“System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。

[2/27/2019 5:08:05 PM 警告] 没有测试匹配FullyQualifiedName=<namespace.namespace...testmethod>C:\pathtotest.dll中的给定测试用例过滤器

这是我所知道的:

  • 我最近更新了 Visual Studio(在过去两周内,不记得我是什么时候做的)。

  • 测试项目中的所有包都已更新并正在运行最新版本的东西。

  • 我有另一个单元测试项目是 .Net Core 2.1,这是 .Net Framework 4.7.2。另一个项目有效。

其他帖子给出的一些建议是确保您的测试架构是正确的,并删除 %TEMP% 中的文件夹(不记得确切名称,除了是关于 VisualStudioExtensions 的内容)。在 %TEMP% 中找不到他们建议删除的文件夹,我尝试在两种架构上运行测试,结果相同。

因此,下一步是进行健全性测试并确保构建的测试 dll 存在。确实如此。

在这一点上,我准备开始一个新的测试项目,并逐个复制粘贴所有测试,看看是否有人抛出了无提示错误。我无法用自己的 Google-fu 技能找到任何有用的信息,我希望有人有一些有用的见解或技巧可以尝试。

c# mstest visual-studio-2017

5
推荐指数
1
解决办法
3390
查看次数

HotChocolate 从数据库转换数据?

我正在尝试使用 Hot Chocolate GraphQL 库来转换数据的形状,然后再将其发送回客户端。

举例来说,我有一个想要返回的对象:

public class SimplePersonData
{
    public string First { get; set; }
    public string Last { get; set; }
    public string HomeTown { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的数据库实体如下所示:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public int HomeAddressId { get; set; }
    public virtual Address HomeAddress { get; set; }
}

public class Address
{
    public int …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework graphql hotchocolate

5
推荐指数
0
解决办法
1415
查看次数

C# PrintQueue AddJob 打印句柄抛出空异常

我正在尝试使用 C# 打印文件。我在列出所有打印机方面取得了一些进展,然后编写了一些简单的逻辑来选择正确的打印机:

var server = new PrintServer();
var queues = server.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }).ToList();

int count = 0;
foreach (var q in queues)
{
    Console.WriteLine(count++ + " " + q.Name);
}

int iSelection = 0;
while (true)
{
    Console.Write("Select printer: ");
    string selection = Console.ReadLine();
    if (int.TryParse(selection, out iSelection) && iSelection >= 0 && iSelection < queues.Count())
    {
        break;
    }
    else
    {
        Console.WriteLine("Bad selection, try again.");
    }
}
Run Code Online (Sandbox Code Playgroud)

下一步,至于我在这个网站上看到的帖子,你需要选择特定的队列,然后添加一个作业,抓取作业流,然后写入流(至少我是这样想的)尝试这样做,除非它是错的?)

var queue = queues[iSelection];
var job = queue.AddJob(@".\Test.txt");
var …
Run Code Online (Sandbox Code Playgroud)

c# printing

3
推荐指数
1
解决办法
686
查看次数

Delphi中2D数组的索引运算符属性

我知道在Delphi中,当你想允许使用索引运算符[]时,你必须做类似的事情,

property Item[index: integer]: integer read GetData; default;
Run Code Online (Sandbox Code Playgroud)

如何在Delphi中实现多维数组,以便允许使用如下内容:

matrix := TMatrix<integer>.Create(3,3);
matrix[0][2] := 5;
WriteLn(matrix[0][2]);
Run Code Online (Sandbox Code Playgroud)

arrays delphi

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

Delphi Firemonkey TGrid 使用

我正在尝试使用 Delphi Firemonkey GUI 库中的 TGrid,但我在这里摔得很厉害。

此时,我的表单中有一个 TGrid,其中包含三个单元格、一个字符串单元格和 2 个复选框单元格。

在当前执行时,将显示网格,其中包含三个独立的列。但是,不会将任何内容保存到字符串单元格中,并且除非双击该单元格,否则复选框单元格不会出现。当您单击远离复选框单元格时,复选框就会消失。

我认为我在这里错过了一些关键步骤。我找到了 TGrid 类的函数,OnGetValue并且OnSetValue. 我认为这些一定与我的问题有关,但问题是我完全不知道如何使用它们。

每个要求一个(Sender: TObject; const ACol: Integer; const ARow: Integer; const Value: TValue)

我正在对发送者做出假设,就像为其他控件创建事件时一样,您将self作为发送者的参数传入。AColl 和 ARow 非常明显。但我迷失了 TValue 参数,因为我似乎无法弄清楚 TValue 到底是什么。Embarcadero 为 TValue 提供了此文档,但它并没有告诉我很多有用的信息。

此时,我只是想让一个单元格显示其值,并且当您单击时不会丢失其值。我知道我一定错过了一些东西,但我就是不知道去哪里寻找。感觉这个网站上的所有问题以及其他与 TGrid for Delphi 有关的问题都已经过时了(我看到它们一直可以追溯到 2003 年)。

delphi tgrid firemonkey

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