我在Delphi中有这样一个基本问题,我无法解决它.
我的代码:
注意:DataR在下面的方法中是本地的,但通常它是一个类var.Just为它的本地概念.
class procedure TCelebrity.BeginRead(var input:Array of byte);
var DataR:Array of byte;
begin
VirtualFree(@DataRead,High(DataRead),MEM_RELEASE);
SetLength(DataR,Length(input));
Move(input,DataR,Length(input));
end;
Run Code Online (Sandbox Code Playgroud)
这个编译,但执行Move()后DataR = nil.
第二次尝试:
class procedure TCelebrity.BeginRead(var input:Array of byte);
var DataR:Array of byte;
begin
VirtualFree(@DataRead,High(DataRead),MEM_RELEASE);
SetLength(DataR,Length(input));
DataR := Copy(input,0,Length(input));
end;
Run Code Online (Sandbox Code Playgroud)
这不会编译在所有.第三行的错误(DataR:=复制(输入....)说"不兼容的类型".
哪里出了问题?它们都是字节数组!
我已经看到有关SO的评论在声明中说" <>比快="或" !=快于==" if().
我想知道为什么会这样.你能在asm中展示一个例子吗?
谢谢!:)
编辑:
这就是他所做的.
function Check(var MemoryData:Array of byte;MemorySignature:Array of byte;Position:integer):boolean;
var i:byte;
begin
Result := True; //moved at top. Your function always returned 'True'. This is what you wanted?
for i := 0 to Length(MemorySignature) - 1 do //are you sure??? Perhaps you want High(MemorySignature) here...
begin
{!} if MemorySignature[i] <> $FF then //speedup - '<>' evaluates faster than '='
begin
Result:=memorydata[i + position] <> MemorySignature[i]; //speedup. …Run Code Online (Sandbox Code Playgroud) 我在TCP Client中收到了一个byte []数组.该数组包含一个24位RGB位图文件.如何创建具有给定宽度,高度和数据的位图文件?
在C++中我使用它
int WriteBitmapFile(const char *filename, int width, int height, unsigned char *imageData)
{
FILE *filePtr; // file pointer
BITMAPFILEHEADER bitmapFileHeader; // bitmap file header
BITMAPINFOHEADER bitmapInfoHeader; // bitmap info header
DWORD imageIdx; // used for swapping RGB->BGR
unsigned char tempRGB; // used for swapping
// open file for writing binary mode
filePtr = fopen(filename, "wb");
if (!filePtr)
return 0;
// define the bitmap file header
bitmapFileHeader.bfSize = sizeof(BITMAPFILEHEADER);
bitmapFileHeader.bfType = 0x4D42;
bitmapFileHeader.bfReserved1 = 0;
bitmapFileHeader.bfReserved2 = 0; …Run Code Online (Sandbox Code Playgroud) 如何WSAGetLastError()从WinAPI 调用,以便获得有效的文本错误?
我认为问题出在我的C++函数中,但我试过了
C++中的C++函数:
bool __declspec( dllexport ) OpenA(std::string file)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
C#代码:
[DllImport("pk2.dll")]
public static extern bool OpenA(string path);
if (OpenA(@"E:\asdasd\"))
Run Code Online (Sandbox Code Playgroud)
我得到一个例外,内存已损坏,为什么?
如果我删除了std :: string参数,它的效果很好,但是使用std :: string它不起作用.
我之前使用.NET和Windows Forms编写了用户界面.
我即将开始开发新的软件.该软件只是一个简单的实用程序,它将使用富文本字段,几个按钮,对话框等.
似乎Windows Forms非常适合这种情况.我不需要任何华而不实的东西.
但是,WPF是新的东西,我想学习它.
我在WPF中创建了一个hello world应用程序,我并不高兴,因为运行应用程序需要花费太多时间,并且需要花费大量时间来编译它.
我是WPF的新手,所以我有一个以上的问题:
我有一个25k行的巨大文本文件.在文本文件中,每行以"1\t(linenumber)"开头
例:
1 1 ITEM_ETC_GOLD_01 ??(?) xxx xxx xxx_TT_DESC 0 0 3 3 5 0 180000 3 0 1 0 0 255 1 1 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 100 0 0 0 xxx item\etc\drop_ch_money_small.bsr xxx xxx xxx 0 2 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 …Run Code Online (Sandbox Code Playgroud) 如何部署应用程序以便它们需要管理员权限而无需最终用户手动执行此操作?
我使用Delphi 2009来构建应用程序.
在form.cs文件中,我有两个按钮,一个备忘录和一个计时器.我的问题是:如何从另一个cs文件访问计时器或备忘录?
我试图将这些对象公开,但它不起作用,请给我一个来源或项目,所以我可以看到我错了.
谢谢!
我有一个项目组,其中包含两个共享一个源文件夹的项目,但做了不同的事情.我觉得奇怪的是使用'项目组',但我不想把这个变成一个主观问题,因此我直接问你:
如何在项目组中运行所有项目 - 有一个简短的方法吗?
先感谢您!