| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:请高手帮看一下,下面代码错在哪里?
取消只看楼主 加入收藏
摩诃般若
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
请高手帮看一下,下面代码错在哪里?
反复调用函数GetTPData,偶尔会弹出错误:Project Project1.exe raised exception class  
EAccessViolation with message 'Access violation at address 00C3099A. Read of address  
FFFFFFFF'. Process stopped. Use Step or Run to continue. 到底是什么原因呢?

function TfrmMain.getBitStr
(aHandle:HWND;ileft,iTop,iWidth,iHeight:integer;IsYDData:boolean):TStringList;
var
  FullscreenCanvas:TCanvas;
  dc:HDC;
  i,j,h:integer;
  c:TColor;
  Str,strline:string;
begin
  Result:=TstringList.Create ;
  dc:= GetDC (aHandle);  
  FullscreenCanvas := TCanvas.Create;
  FullscreenCanvas.Handle := dc;
  if IsYDData then
    c:=clLime   
  else c:=fullscreenCanvas.Pixels[1,1];
  Str:=' ';
  for i :=1 to iHeight do
  begin  //i
    strline:='';
    for j :=1 to iWidth do
    begin   //j
        if c<>FullscreenCanvas.Pixels[iLeft+j,iTop +i] then
        begin   //if
          c:=FullscreenCanvas.Pixels[iLeft+j,iTop +i];
          if str=' ' then
            str:='1'
          else
            str:=' ';
        end;  //if
        strLine:=strLine+str;
    end;  //j
    Result.Add(strLine);  
  end; //i
//ReleaseDC(aHandle,dc);   此句用不用都不影响弹出错误提示
//ReleaseDC(aHandle,FullscreenCanvas.Handle);  此句用不用都不影响弹出错误提示
  FullscreenCanvas.Free;   
end;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

function GetTPData(AHwnd:HWND;T:integer):boolean;
var        
  i,j,m,n:integer;
  strbit:TStringList;
  TempTP:string;
  Ok:boolean;
begin
  m:=455;
  Ok:=False;
  Result:=Ok;
  for i:=0 to 3 do
  begin    //i
    for j:=0 to 3 do
    begin   //j
      strbit:=frmMain.getBitStr(AHwnd,m+j,T+i,34,16,False);
      TempTP:='';
      if Trim(strbit.Strings[0])<>'' then  
      begin   //if
        for n:=0 to strbit.Count-1 do
        begin
          TempTP:=TempTP+strbit.Strings[n];
        end;
        Ok:=(TempTP=frmMain.TPdat.Strings[10]);  
      end;   //if
      strbit.Free;   
      if Ok then break;
    end;   //j
    if Ok then break;
  end;   //i
  Result:=Ok;
end;
搜索更多相关主题的帖子: 代码 
2010-04-13 09:12
快速回复:请高手帮看一下,下面代码错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016085 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved