使用C++和.net我想要显示一个数据流作为滚动图像.每次我得到一些新数据时,我想将其添加为新行(128x1像素)并将之前的内容滚动到一侧.
我对这个问题的第一次尝试涉及每次获得新行时渲染整个数据集.这有效,但速度太慢,所以我认为写入某种缓冲区可能更有意义(可能是位图?).问题是我无法看到我能做到这一点; Graphic对象允许你画得很开心,但我看不出一种明显的方法告诉我的控件使用一个Bitmap对象作为它的缓冲区?同样,我看不到一种绘制位图的方法,然后我可以将其写入屏幕.
这一定是可能的,但到目前为止我的google-foo已经失败了......
[编辑1]为了澄清,数据是一个频谱图.下图显示了我试图实现的那种事情:
我正在绘制的数据来自浮点数组.没有什么可以限制我会得到多少,所以我只想忘记数据,因为它从情节的一侧掉落.
我目前正在从a继承System::Windows::Forms::UserControl,但如果有更好的替代品,可以切换到别的东西吗?
我正在从网上检索HTML.我得到"java.lang.OutOfMemoryError: Java heap space (repl-1:3)"
;; fetch: URL -> String
;; fetch returns the string of the HTML url
(defn fetch [url]
(with-open [stream (. url openStream)]
(let [buffer (BufferedReader. (InputStreamReader. stream))]
(apply str (line-seq buffer)))))
Run Code Online (Sandbox Code Playgroud)
我认为问题是"应用str".有没有更简单的方法
编辑:我需要检索
上下文
我正在绘制画布,它会定期更新并闪烁.逻辑思考我认为这是因为我的重绘方法清除了Canvas,然后一次将一个元素绘制到画布上.所以我的想法是写一个Timage,然后将图片设置为Timage.
信息
这是我的代码
procedure Tmainwindow.Button3Click(Sender: TObject);
var bufferpicture:TImage;
begin
//draw stuff to bufferpicture
//***
//draw stuff to bufferpicture
myrealpicture.picture:=bufferpicture.picture;
end;
Run Code Online (Sandbox Code Playgroud)
运行代码后,我得到一个错误显示如下.

问题 如何将画布设置为另一个画布,因为画布是只读属性?或者有更好的方法来做我想做的事情?
在阅读有关cookie的过程中,我发现很难掌握以下语句
" setcookie()必须在HTTP响应的任何输出之前调用.主要原因是PHP没有缓冲HTTP响应"请帮助我以简单的方式解释它
我目前正在用C++编写一个套接字程序,由于某种原因,我在尝试写入控制台(一项必需的任务)时遇到了非常奇怪的行为.
cout << themsg[0] << themsg[1] << endl;
cout << "Phase 3: Supernode sent the message " << themsg[0] << " on dynamic port number " << themsg[1] << endl;
Run Code Online (Sandbox Code Playgroud)
themsg [0]是字符串"User#2:Dick是什么?"
themsg [1]是字符串"39416"
第一行应写"用户#2:怎么了迪克?" 到控制台,然后是"39416".
第二行应打印"第3阶段:超级节点发送消息用户#2:怎么了迪克?动态端口号39416"
控制台输出如下所示:
394162:What's up Dick?
on dynamic port number 39416essage User#2:What's up Dick?
Run Code Online (Sandbox Code Playgroud)
我知道themsg [0]和themsg [1]是正确的,因为我将它们的值写入文件进行验证.它肯定是一些奇怪的stdout问题.
对于第一行,出现themsg [1]的5个字符会覆盖themsg [0]的前五个字符.对于第二行,似乎忽略了cout的前两个参数,然后附加了一个消息片段.
如果有人可以提供帮助,我会非常感激.我尝试使用flush()但无济于事.我不确定输出缓冲区是如何工作的,所以我真的迷失了.
使用Linux系统调用打开并读取.在读取调用接受3个参数
read(File descriptor, Buffer array, Size of the buffer array);
Run Code Online (Sandbox Code Playgroud)
我的问题与论点#3有关.假设我有多个文本文件要读入我的缓冲区数组.但据我所知,C没有像Vector或ArrayList或任何其他动态大小的结构.
有没有一种简单的方法来计算文件的大小,所以我知道我应该为char数组分配多少空间?
我在寻找简单的字节FiFo缓冲区.我必须放置或获取或单个字节或数组.但我可以每次都将单字节放入并获得数组,反之亦然.
任何想法或示例代码来帮助我?
我是Golang的新手,我正在尝试写入一个缓冲区,该缓冲区应该在开始写入之前填充到特定大小.
我的尝试:
buf := bytes.NewBuffer(make([]byte, 52))
var pktInfo uint16 = 243
var pktSize uint16 = 52
var pktLine uint16 = binary.LittleEndian.Uint16(data)
var pktId uint16 = binary.LittleEndian.Uint16(data[6:])
// header
binary.Write(buf, binary.LittleEndian, pktInfo)
binary.Write(buf, binary.LittleEndian, pktSize)
binary.Write(buf, binary.LittleEndian, pktLine)
// body
binary.Write(buf, binary.LittleEndian, pktId)
(...a lot more)
fmt.Printf("%x\n", data)
fmt.Printf("%x\n", buf.Bytes())
Run Code Online (Sandbox Code Playgroud)
问题是它是在字节之后写入而不是从开始写入.我怎么做?
我正在尝试使用C++ 1D阵列初始化Halide Buffer.鉴于其他一些在线帖子,这是我到目前为止所得到的:
Image<float> in(Buffer(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr));
Run Code Online (Sandbox Code Playgroud)
其中in_ptr是指向我的C++数组的指针.当我运行这个时,我收到以下错误:
错误:在'('token image in in(Buffer(type_of(),padded_size*(jb + 1),0,0,0,NULL,d_In))之前缺少模板参数;
所以我将我的代码更改为:
Image<float> in(Buffer<float>(type_of<float>(), size_x, 0, 0, 0, NULL, in_ptr));
但这与任何构造函数都不匹配,但我找不到有关如何初始化Buffer的任何好文档.
甚至可以做这样的事情吗?如何使用C++ 1D或2D数组初始化Halide缓冲区?
假设我在Node.js中有一个简单的缓冲区,如下所示:
const bytes = Buffer.from('abcdefg');
Run Code Online (Sandbox Code Playgroud)
这个缓冲区实例有slice和concat作为方法,但我真的不知道如何使用这些来基本上创建数组的pop/shift/splice的功能.
这里是缓冲区文档:https://nodejs.org/api/buffer.html
我基本上要做的是读取/删除前X个字节,如下所示:
function read(x){
// return the first x number of bytes from buffer
// and remove those bytes from the buffer
// side-effects be damned for the moment
}
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,但它对我来说似乎很"错误",即使它似乎也有效:
let items = Buffer.from('abcdefg');
function read(x){
const b = items.slice(0,x);
items = items.slice(x,items.length);
return b;
}
console.log(String(read(4)));
console.log(String(items));
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
另外,我不确定读取是否是正确的单词,但pop会意味着一个数组...使用描述这个函数的功能是什么?