这是我将byte []数组转换为图像的代码
unsafe
{
//convert the UInt32[] into byte array and then assign the pointer to it
fixed (byte* ptr = Misc.ConvertFromUInt32Array(image))
{
Bitmap bmp = new Bitmap(200,64,800,
PixelFormat.Format32bppRgb,
new IntPtr(ptr));
bmp.Save("test.bmp");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
alt text http:////img11.imageshack.us/img11/4853/testacr.png
代码中的问题在哪里,为什么会发生这种情况?如何将其恢复正常?
要在字符串中添加空格分隔符,我们使用String.Join().
我的问题:我有什么(以及如何)删除该分隔符.
该字符串的结构如下"FF FF FF FF FF FF FF FF FF ...."
如何删除空格?
我用Google搜索,我检查了维基百科.其中没有人帮我找到Sun的官方java编译器.
"官方"是指Microsoft的"C#Express".我想要Sun的那种编译器.
我的问题是:我从哪里得到它?
我很抱歉我的愚蠢问题,我在打开java dot com时迷路了.
提前感谢您的回答.
这是我的程序:
bool Open(std::string filename)
{
...
HANDLE hFile = CreateFile(filename.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
...
}
Run Code Online (Sandbox Code Playgroud)
错误:'CreateFileW':无法将参数1从'const char*'转换为'LPCWSTR'指向的类型不相关; 转换需要reinterpret_cast,C风格的转换或函数式转换
问题出在哪儿?
在下面的代码中,如何将myLine声明为公共(全局)变量?问题是我不能使用关键字"var".
public static IEnumerable<string> ReadLines(StreamReader reader)
{
while (!reader.EndOfStream)
{
yield return reader.ReadLine();
}
}
private void Filter1(string filename)
{
using(var writer = File.CreateText(Application.StartupPath + "\\temp\\test.txt"))
{
using (var reader = File.OpenText(filename))
{
int[] Ids = { 14652, 14653, 14654, 14655, 14656, 14657, 14658, 14659, 14660 };
var myLine = from line in ReadLines(reader)
where line.Length > 1
let id = int.Parse(line.Split('\t')[1])
where Ids.Contains(id)
let m = Regex.Match(line, @"^\d+\t(\d+)\t.+?\t(item\\[^\t]+\.ddj)")
where m.Success == true
select new { Text = line, ItemId …Run Code Online (Sandbox Code Playgroud) 我想知道如何增加FOR循环语句中的值.
这是我的代码.
function Check(var MemoryData:Array of byte;MemorySignature:Array of byte;Position:integer):boolean;
var i:byte;
begin
for i := 0 to Length(MemorySignature) - 1 do
begin
while(MemorySignature[i] = $FF) do inc(i); //<< ERROR <<
if(memorydata[i + position] <> MemorySignature[i]) then Result:=false;
end;
Result := True;
end;
Run Code Online (Sandbox Code Playgroud)
错误是:E2081分配到FOR循环变量'i'.
我正在尝试将旧代码从C#转换为Delphi,但我不能增加'i'.增加'i'不是唯一的方法,但我想知道问题出在哪里.
我使用以下函数来显示表单上的控件:
class procedure TFormMain.FadeControls(ctrl:Array of TwinControl);
var element:TwinControl;
begin
for element in ctrl do
begin
PrepareForAnimation(element);
element.Visible := true;
AnimShowControl(element,250);
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,它在每个控件上减速250毫秒,所以我想将它放在一个线程中.我在Delphi中阅读了一些关于主题的教程,但我不明白如何使用参数创建一个线程?在我的例子中ctrl:TWinControl数组.
我想创建一个执行上述函数的线程,但我不明白如何使用参数调用它.在Delphi中使用线程更难.
任何帮助将不胜感激!
在我的表单声明中,我做了一个messagehandler:
procedure MessageHandler(var Msg:TMessage);Message MSG_ACCESS;
const
MSG_ASYNC = $BAD;
MSG_ACCESS = $BEEF;
Run Code Online (Sandbox Code Playgroud)
在我检查消息的消息处理程序中,它工作正常,但如果我更改这样的声明:
procedure MessageHandler(var Msg:TMessage);Message MSG_ACCESS or MSG_ASYNC;
Run Code Online (Sandbox Code Playgroud)
我发送的消息都没有被处理.
如何用两条消息制作它?
我遇到了我使用的组件的问题.它与底部对齐,并且,当窗体最大化时,控件被放置在正确的位置,但是当我尝试最小化窗体时,控件保持在它的位置是.
我尝试使用一个总是将对齐设置为底部的计时器,但我确定计时器是我问题的最糟糕的解决方案.
当表格从最大化恢复时,请建议一种将对齐设置为底部的方法.(最大化 - >仅恢复).
我现在的想法是,以检查的形式在FormResize事件最大化,但是这是行不通的,因为我需要做它时,它的恢复,而不是最大化.
我必须将部分字符串"SKILL_______EU_______WAND_______CLERIC_______BASE_____01"与"SKILL"进行比较.这是为了检查前四个字符是否为"SKILL".或者只是第一个字符,这里需要优化!
我的问题:
谢谢!
delphi ×5
c# ×3
string ×3
bitmap ×1
c++ ×1
comparison ×1
delphi-2009 ×1
flip ×1
formatting ×1
ienumerable ×1
java ×1
windows ×1