unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,math,FlashCarList;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure DrawACar(Canvas:TCanvas;x,y:integer;CarKind:integer;direction:integer);
Procedure DrawAllCar(Canvas:TCanvas);var
Form1: TForm1;
BitMap:TBitMap;implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);
begin
BitMap:=TBitMap.Create;
BitMap.LoadFromFile('Car1.bmp');
Form1.Canvas.Draw(10,10,BitMap);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
DrawAllCar(Form1.Canvas);
end;
procedure DrawACar(Canvas:TCanvas;x,y:integer;CarKind:integer;direction:integer);
begin
case CarKind of
1:begin
canvas.Draw(x,y,Image1.Picture.Bitmap);
end;
2:begin
canvas.Draw(x,y,Image2.Picture.Bitmap);
end;
3:begin
canvas.Draw(x,y,Image3.Picture.Bitmap);
end;
4:begin
canvas.Draw(x,y,Image4.Picture.Bitmap);
end;
end;
end;Procedure DrawAllCar(Canvas:TCanvas);
var x,y:integer;
carkind:integer;
direction:integer;
pCarLinked: PFlashCarLinked;
////////////////////////////////////////////////////
Test:PFlashCarLinked;
begin
Test.CarPoint.X:=100;
Test.CarPoint.Y:=100;
Test.CarType:=2;
Test.CarDirection:=10;
FlashCarList_AddNode(Test); DrawACar(Canvas,Test.CarPoint.X,Test.CarPoint.Y,Test.CarType,Test.CarDirection);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
LoadCarImage();
end;end.
/////////////////////////////////////////****************************FlashCarList单元文件
unit FlashCarList ; //车的总链表interfaceuses classes,dialogs,SysUtils,Types,Graphics,Math,ExtCtrls;// Systemtype
PFlashCarLinked=^TLinkedNode;//PCarLinked是指针型,TLinkedNode是记录型
TLinkedNode=record
ListName:integer;//链表名称(链表头结点特有的) CarID:integer;//车的ID
CarPoint:TPoint;//车的坐标
CarSpeed:real; //车的速度(可能用不到)
CarType:integer;//车的类型 (可能用不到) CarBeginNode:integer;//车出发的结点
CarBeginNodePoint:TPoint;//坐标
CarDirection:integer; //车的行驶方向 CarLength,CarWidth:integer;//车的长度和宽度
CarFirstTimerTime:integer;//产生车时的Timer时间(第几次触发) IfInCross:integer;//车是否在拐弯的过程中 拐弯开始时赋1,拐弯结束时赋0 pNextNode:PFlashCarLinked;//下一个记录的指针
end;
{
Type
TAllCarFlashList=class (TObject) //线路类
//默认为Published(发行类型成员)
LinkedHead:PFlashCarLinked;//链表头节点(标记链表只需要头节点即可)
LinkedNodeNum:integer;//链表节点数(含头节点)
StartNode:PFlashCarLinked;
EndNode:PFlashCarLinked;
LinkedList:TList;
private
{private declarations}
{ public
constructor Create; //构造函数
destructor Destroy;//override;//析构函数
//Function IfLinkedEmpty():Boolean;//检查堆栈是否为空
function IfLinkedEmpty():integer;//检查堆栈是否为空
Function GetListName():integer; //获取链表头节点 {public declarations}
{ procedure AddNode(CarID,CarRouteID,CarBeginNode,CarFirstTimerTime:integer;CarPoint,CarBeginNodePoint:TPoint); //在链表末尾增加一个新结点
function GetPNode(CarID:integer):PFlashCarLinked;//获取指向其CarID为CarID的结点的指针
function IfLastNode(CarID:integer):integer;// 判断该结点是否为最后一个结点
procedure FreeNode(CarID:integer);//释放路口结点(只要节点的名称或索引或ID)
//procedure TurnCorner(Canvas:TCanvas;alpha:extended;x,y:integer;Bit:TBitMap);
//procedure DrawCar(Canvas:TCanvas;CarOnePoint:TPoint;CarType:integer;CarDirection:Extended);
end; }//constructor Create; //构造函数
//destructor Destroy;//override;//析构函数procedure FlashCarList_AddNode(new:PFlashCarLinked); //在链表末尾增加一个新结点
//function GetPNode(CarID:integer):PFlashCarLinked;//获取指向其CarID为CarID的结点的指针
function FlashCarList_IfLinkedEmpty():Boolean;
//function IfLastNode(CarID:integer):integer;// 判断该结点是否为最后一个结点
procedure FlashCarList_FreeNode(DCarID:integer);//释放路口结点(只要节点的名称或索引或ID)
procedure LoadCarImage();var
FlashCarLinkedHead:TLinkedNode;
Image1:Timage;
Image2:Timage;
Image3:Timage;
Image4:Timage;implementation
//constructor TAllCarFlashList.Create; //构造函数
//constructor Create; //构造函数
function FlashCarList_IfLinkedEmpty():Boolean;
begin
Result:=(FlashCarLinkedHead.pNextNode=nil);
end;procedure FlashCarList_AddNode(new:PFlashCarLinked);//在链表末尾增加一个新结点
var
p:PFlashCarLinked;
begin
new.pNextNode:=nil;
p:=FlashCarLinkedHead.pNextNode;
while (p.pNextNode<>nil) do
begin
p:=p.pNextNode;
end;
p.pNextNode:=new;
end;procedure FlashCarList_FreeNode(DCarID:integer);
var
p,f:PFlashCarLinked;
begin
f:=@FlashCarLinkedHead;
p:=FlashCarLinkedHead.pNextNode;
while(p.CarID<>DCarId) do
begin
f:=p;
p:=p.pNextNode;
end;
f.pNextNode:=p.pNextNode;
dispose(p);
end;
procedure LoadCarImage();
begin
Image1:=Timage.Create(nil);
Image2:=Timage.Create(nil);
Image3:=Timage.Create(nil);
Image4:=Timage.Create(nil); Image1.Picture.Bitmap.LoadFromFile('Car1.bmp');
Image1.Picture.Bitmap.Transparent:=true ;
Image1.Picture.Bitmap.TransparentColor:=clred;
Image1.Picture.Bitmap.TransparentMode:=tmFixed; Image2.Picture.Bitmap.LoadFromFile('Car2.bmp');
Image2.Picture.Bitmap.Transparent:=true ;
Image2.Picture.Bitmap.TransparentColor:=clred;
Image2.Picture.Bitmap.TransparentMode:=tmFixed; Image3.Picture.Bitmap.LoadFromFile('Car3.bmp');
Image3.Picture.Bitmap.Transparent:=true ;
Image3.Picture.Bitmap.TransparentColor:=clred;
Image3.Picture.Bitmap.TransparentMode:=tmFixed; Image4.Picture.Bitmap.LoadFromFile('Car4.bmp');
Image4.Picture.Bitmap.Transparent:=true ;
Image4.Picture.Bitmap.TransparentColor:=clred;
Image4.Picture.Bitmap.TransparentMode:=tmFixed;
end;end.这个程序编译的时候没有出错,可是运行的时候但我按Button时就出了问题,就指到
procedure FlashCarList_AddNode中的 while (p.pNextNode<>nil) do 这一行,可是我也不知道错误到底出现在哪里,还有那个链表的创建我没有使用类哦,编译的时候没有出错,没有用到
//constructor TAllCarFlashList.Create; //构造函数
//constructor Create; //构造函数
不知道行不行呢?请高手帮帮忙,我这里到底出错在哪里?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,math,FlashCarList;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure DrawACar(Canvas:TCanvas;x,y:integer;CarKind:integer;direction:integer);
Procedure DrawAllCar(Canvas:TCanvas);var
Form1: TForm1;
BitMap:TBitMap;implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);
begin
BitMap:=TBitMap.Create;
BitMap.LoadFromFile('Car1.bmp');
Form1.Canvas.Draw(10,10,BitMap);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
DrawAllCar(Form1.Canvas);
end;
procedure DrawACar(Canvas:TCanvas;x,y:integer;CarKind:integer;direction:integer);
begin
case CarKind of
1:begin
canvas.Draw(x,y,Image1.Picture.Bitmap);
end;
2:begin
canvas.Draw(x,y,Image2.Picture.Bitmap);
end;
3:begin
canvas.Draw(x,y,Image3.Picture.Bitmap);
end;
4:begin
canvas.Draw(x,y,Image4.Picture.Bitmap);
end;
end;
end;Procedure DrawAllCar(Canvas:TCanvas);
var x,y:integer;
carkind:integer;
direction:integer;
pCarLinked: PFlashCarLinked;
////////////////////////////////////////////////////
Test:PFlashCarLinked;
begin
Test.CarPoint.X:=100;
Test.CarPoint.Y:=100;
Test.CarType:=2;
Test.CarDirection:=10;
FlashCarList_AddNode(Test); DrawACar(Canvas,Test.CarPoint.X,Test.CarPoint.Y,Test.CarType,Test.CarDirection);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
LoadCarImage();
end;end.
/////////////////////////////////////////****************************FlashCarList单元文件
unit FlashCarList ; //车的总链表interfaceuses classes,dialogs,SysUtils,Types,Graphics,Math,ExtCtrls;// Systemtype
PFlashCarLinked=^TLinkedNode;//PCarLinked是指针型,TLinkedNode是记录型
TLinkedNode=record
ListName:integer;//链表名称(链表头结点特有的) CarID:integer;//车的ID
CarPoint:TPoint;//车的坐标
CarSpeed:real; //车的速度(可能用不到)
CarType:integer;//车的类型 (可能用不到) CarBeginNode:integer;//车出发的结点
CarBeginNodePoint:TPoint;//坐标
CarDirection:integer; //车的行驶方向 CarLength,CarWidth:integer;//车的长度和宽度
CarFirstTimerTime:integer;//产生车时的Timer时间(第几次触发) IfInCross:integer;//车是否在拐弯的过程中 拐弯开始时赋1,拐弯结束时赋0 pNextNode:PFlashCarLinked;//下一个记录的指针
end;
{
Type
TAllCarFlashList=class (TObject) //线路类
//默认为Published(发行类型成员)
LinkedHead:PFlashCarLinked;//链表头节点(标记链表只需要头节点即可)
LinkedNodeNum:integer;//链表节点数(含头节点)
StartNode:PFlashCarLinked;
EndNode:PFlashCarLinked;
LinkedList:TList;
private
{private declarations}
{ public
constructor Create; //构造函数
destructor Destroy;//override;//析构函数
//Function IfLinkedEmpty():Boolean;//检查堆栈是否为空
function IfLinkedEmpty():integer;//检查堆栈是否为空
Function GetListName():integer; //获取链表头节点 {public declarations}
{ procedure AddNode(CarID,CarRouteID,CarBeginNode,CarFirstTimerTime:integer;CarPoint,CarBeginNodePoint:TPoint); //在链表末尾增加一个新结点
function GetPNode(CarID:integer):PFlashCarLinked;//获取指向其CarID为CarID的结点的指针
function IfLastNode(CarID:integer):integer;// 判断该结点是否为最后一个结点
procedure FreeNode(CarID:integer);//释放路口结点(只要节点的名称或索引或ID)
//procedure TurnCorner(Canvas:TCanvas;alpha:extended;x,y:integer;Bit:TBitMap);
//procedure DrawCar(Canvas:TCanvas;CarOnePoint:TPoint;CarType:integer;CarDirection:Extended);
end; }//constructor Create; //构造函数
//destructor Destroy;//override;//析构函数procedure FlashCarList_AddNode(new:PFlashCarLinked); //在链表末尾增加一个新结点
//function GetPNode(CarID:integer):PFlashCarLinked;//获取指向其CarID为CarID的结点的指针
function FlashCarList_IfLinkedEmpty():Boolean;
//function IfLastNode(CarID:integer):integer;// 判断该结点是否为最后一个结点
procedure FlashCarList_FreeNode(DCarID:integer);//释放路口结点(只要节点的名称或索引或ID)
procedure LoadCarImage();var
FlashCarLinkedHead:TLinkedNode;
Image1:Timage;
Image2:Timage;
Image3:Timage;
Image4:Timage;implementation
//constructor TAllCarFlashList.Create; //构造函数
//constructor Create; //构造函数
function FlashCarList_IfLinkedEmpty():Boolean;
begin
Result:=(FlashCarLinkedHead.pNextNode=nil);
end;procedure FlashCarList_AddNode(new:PFlashCarLinked);//在链表末尾增加一个新结点
var
p:PFlashCarLinked;
begin
new.pNextNode:=nil;
p:=FlashCarLinkedHead.pNextNode;
while (p.pNextNode<>nil) do
begin
p:=p.pNextNode;
end;
p.pNextNode:=new;
end;procedure FlashCarList_FreeNode(DCarID:integer);
var
p,f:PFlashCarLinked;
begin
f:=@FlashCarLinkedHead;
p:=FlashCarLinkedHead.pNextNode;
while(p.CarID<>DCarId) do
begin
f:=p;
p:=p.pNextNode;
end;
f.pNextNode:=p.pNextNode;
dispose(p);
end;
procedure LoadCarImage();
begin
Image1:=Timage.Create(nil);
Image2:=Timage.Create(nil);
Image3:=Timage.Create(nil);
Image4:=Timage.Create(nil); Image1.Picture.Bitmap.LoadFromFile('Car1.bmp');
Image1.Picture.Bitmap.Transparent:=true ;
Image1.Picture.Bitmap.TransparentColor:=clred;
Image1.Picture.Bitmap.TransparentMode:=tmFixed; Image2.Picture.Bitmap.LoadFromFile('Car2.bmp');
Image2.Picture.Bitmap.Transparent:=true ;
Image2.Picture.Bitmap.TransparentColor:=clred;
Image2.Picture.Bitmap.TransparentMode:=tmFixed; Image3.Picture.Bitmap.LoadFromFile('Car3.bmp');
Image3.Picture.Bitmap.Transparent:=true ;
Image3.Picture.Bitmap.TransparentColor:=clred;
Image3.Picture.Bitmap.TransparentMode:=tmFixed; Image4.Picture.Bitmap.LoadFromFile('Car4.bmp');
Image4.Picture.Bitmap.Transparent:=true ;
Image4.Picture.Bitmap.TransparentColor:=clred;
Image4.Picture.Bitmap.TransparentMode:=tmFixed;
end;end.这个程序编译的时候没有出错,可是运行的时候但我按Button时就出了问题,就指到
procedure FlashCarList_AddNode中的 while (p.pNextNode<>nil) do 这一行,可是我也不知道错误到底出现在哪里,还有那个链表的创建我没有使用类哦,编译的时候没有出错,没有用到
//constructor TAllCarFlashList.Create; //构造函数
//constructor Create; //构造函数
不知道行不行呢?请高手帮帮忙,我这里到底出错在哪里?
解决方案 »
- 请问有谁用Delphi7.0+SQL Server2000设计过“学生成绩管理系统”,我要做毕业设计
- 新的问题:请问大家显示在image上的图片如何存如数据库
- DBGridEh合计行 问题 ,关于 TStringList总是出错 ;
- 数据库连接问题(在没有网关的服务器上)
- 如何检查query查询出来的记录是否为空?谢谢!
- Delphi 7.0目前有补丁吗?说者有分
- 判断当前记录是不是第一条或者最后一条,不能用移动指针的方式,有办法吗
- 高手进来!!ToolButton神秘失踪
- 何处有作工具栏图标用的小bmp下载?
- 一个人工作时,如何提高工作效率????
- 请问如何把一个.exe的电子书嵌入到我的程序中
- 帮我看下数据库语句错在哪
好长,不想看