invalid pointer operation 提示,高手帮忙分析,100分

gooddancer 2008-03-31 03:46:21
这是一个画证券曲线的程序
程序的思想是这样的:
1.线程一,采样个股数据写进固定表格里,并从表格中取数据放进全局动态数组里面
2.线程二,用全局动态数组的数据画曲线

运行一会就出错,valid pointer operation,

但是把线程一里面的取数据放进全局动态数组里面的部分,程序不会出错,但是画不出来曲线,

好心人,帮忙分析一下!!!分不够,可以加

...全文
238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooddancer 2008-04-01
  • 打赏
  • 举报
回复
谢谢,找找看,在线
wzn0521 2008-04-01
  • 打赏
  • 举报
回复
应该是线程同步的问题导致的。

用临界区来处理。

网上有个很经典的delphi关于线程的文章,搜一下吧。
那么长,也贴不出来啊!
gooddancer 2008-04-01
  • 打赏
  • 举报
回复
在线等,刷新!!!!!!!!
gooddancer 2008-04-01
  • 打赏
  • 举报
回复
1.线程一,采样个股数据写进固定表格里,并从表格中取数据放进全局动态数组里面
2.线程二,用全局动态数组的数据画曲线

我的线程二是主线程,也就是主form

在form.show里面做了一些初始化,
form.show里面的最后用
hthread := BeginThread(nil, //Security attribute
0, //Initial Stack
@ThreadFunc, //Starting address of thread
nil, //argument of thread
0, // Create flags
ThreadID);
来开通的线程一,这样的情况该怎么去同步呢?

我的多线程的知识不够丰富,请帮帮忙啊
neweipeng 2008-03-31
  • 打赏
  • 举报
回复
..\Borland\Delphi7\Demos\Threads里有个多线程例子,拷贝一下其源代码
{ Since DoVisualSwap uses a VCL component (i.e., the TPaintBox) it should never
be called directly by this thread. DoVisualSwap should be called by passing
it to the Synchronize method which causes DoVisualSwap to be executed by the
main VCL thread, avoiding multi-thread conflicts. See VisualSwap for an
example of calling Synchronize. }

procedure TSortThread.DoVisualSwap;
begin
with FBox do
begin
Canvas.Pen.Color := clBtnFace;
PaintLine(Canvas, FI, FA);
PaintLine(Canvas, FJ, FB);
Canvas.Pen.Color := clRed;
PaintLine(Canvas, FI, FB);
PaintLine(Canvas, FJ, FA);
end;
end;

{ VisusalSwap is a wrapper on DoVisualSwap making it easier to use. The
parameters are copied to instance variables so they are accessable
by the main VCL thread when it executes DoVisualSwap }

procedure TSortThread.VisualSwap(A, B, I, J: Integer);
begin
FA := A;
FB := B;
FI := I;
FJ := J;
Synchronize(DoVisualSwap);
end;
僵哥 2008-03-31
  • 打赏
  • 举报
回复
另外有个问题就是不能在线程当中对VCL进行操作,比如画图。
僵哥 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gooddancer 的回复:]

有可能是线程二在取数据画图的时候,而线程一却要改动数据,但不是到怎么去处理了

有遇到过同样问题的吗
[/Quote]
建议好好学习一下多线程当中的同步机制。
gooddancer 2008-03-31
  • 打赏
  • 举报
回复

有可能是线程二在取数据画图的时候,而线程一却要改动数据,但不是到怎么去处理了

有遇到过同样问题的吗
僵哥 2008-03-31
  • 打赏
  • 举报
回复
比较大的可能是线程访问内存冲突。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧