widestring到string怎么转换 同上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接赋值,内部会自动转换var s: string; ws: widestring; ws := s; widestring到stringvar s: string; ws: widestring; s := ws; var s:string;ws:widestring;begin s:='hello'; ws:=s;//直接赋就可以的 s:=ws;end; 你直接赋值就可以了just do it! 问题是我的widestring是从word里读进来的为'男'#$D#7实际应该是'男'我现在要'男'该怎么办啊 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;const Penwidth = 5;//画笔的粗细 Len = 20;//箭头线的长度 {说明:这两个常量应该一起变化,具体值由效果来定。 当Penwidth很小时,显示的效果不是太好}type TForm1 = class(TForm) procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; xs, ys: integer;//画线开始处的坐标 xt, yt: integer;//记录鼠标前一时刻的坐标 xl, yl: integer;//记录第一条箭头线的端点坐标 xr, yr: integer;//记录第二条箭头线的端点坐标 b: boolean;//判断是否已经开始画线implementation{$R *.dfm}procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin b := False;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin xs := x; ys := y; xt := x; yt := y; xl := -1; yl := -1; xr := -1; yr := -1; b := True;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if b then begin Form1.Canvas.Pen.Mode := pmNotXor; Form1.Canvas.Pen.Color := clRed; Form1.Canvas.Pen.Width := PenWidth; Form1.Canvas.MoveTo(xs, ys); Form1.Canvas.LineTo(xt, yt); Form1.Canvas.MoveTo(xs, ys); Form1.Canvas.LineTo(x, y); if xl <> -1 then begin Form1.Canvas.MoveTo(xt, yt); Form1.Canvas.LineTo(xl, yl); Form1.Canvas.MoveTo(xt, yt); Form1.Canvas.LineTo(xr, yr); end; xt := x; yt := y; if x > xs then begin xl := trunc(x + Len * Cos(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6)); yl := trunc(y - Len * Sin(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6)); xr := trunc(x + Len * Cos(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6)); yr := trunc(y - Len * Sin(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6)); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xl, yl); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xr, yr); end else if x < xs then begin xl := trunc(x - Len * Cos(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6)); yl := trunc(y + Len * Sin(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6)); xr := trunc(x - Len * Cos(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6)); yr := trunc(y + Len * Sin(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6)); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xl, yl); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xr, yr); end else if y < ys then begin xl := trunc(x + Len * Sin(Pi / 6)); yl := trunc(y + Len * Cos(Pi / 6)); xr := trunc(x - Len * Sin(Pi / 6)); yr := trunc(y + Len * Cos(Pi / 6)); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xl, yl); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xr, yr); end else begin xl := trunc(x + Len * Sin(Pi / 6)); yl := trunc(y - Len * Cos(Pi / 6)); xr := trunc(x - Len * Sin(Pi / 6)); yr := trunc(y - Len * Cos(Pi / 6)); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xl, yl); Form1.Canvas.MoveTo(x, y); Form1.Canvas.LineTo(xr, yr); end; end;end;procedure TForm1.FormShow(Sender: TObject);begin Form1.Color := clWhite; xt := -1; yt := -1; xl := -1; yl := -1; xr := -1; yr := -1;end;end.//////////////////////////////////////////////////////////新建一个Application,上面的代码Copy一下,在属性框中下来设置好Form1的事件,然后Run就可以看到效果楼主如果想要填充的三角箭头很难,Delphi中只能填充长方形,填充三角形必须自己写代码,通过画点来实现填充,这是计算机图形学里面的东东,很麻烦的。///////////////////////////////////////////////////对了,楼主,是不是加点分,为你的这个问题写了两个小时的代码,要不就把这个贴加FAGQ中去,让我好涨点信誉分,觉得信誉分太少了。 真倒霉,发错地方了,不过,楼主也可以看看,千万别笑http://expert.csdn.net/Expert/topic/2007/2007970.xml?temp=.7608454 function StringToOleStr(const Source: string): PWideChar; String 其实是AnsiString 可通过PChar来转换 var s:string;ws:widestring;begin s:='hello'; ws:=s;//直接赋就可以的 s:=ws;end; WoKao~~~~真TMD寒心....太明显了!! 无法修改原代码的问题? 大家帮我看看这是怎么做到的? 无法定位程序输入点@webconst@_sInvalidWebParent于动态链接库inet60.bpl上。 如何取得sql表中的某一项的值 ADO的ConnectString怎么样动态设置 滚动式的字幕是如何实现的? =====如何实现table组件的模糊查询? 我想学串口编程,应该看哪些资料呀? 尋找軟件設計師 请问:在ToolBar上加SpeedButton时,SpeedButton正中会出现一条竖线。如何消除这条竖线?? 关于数据传输的问题 TClientSocket的问题
var
s: string;
ws: widestring;
ws := s;
var
s: string;
ws: widestring;
s := ws;
begin
s:='hello';
ws:=s;//直接赋就可以的
s:=ws;
end;
just do it!
'男'#$D#7
实际应该是'男'
我现在要'男'该怎么办啊
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;const
Penwidth = 5;//画笔的粗细
Len = 20;//箭头线的长度
{说明:这两个常量应该一起变化,具体值由效果来定。
当Penwidth很小时,显示的效果不是太好}type
TForm1 = class(TForm)
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
xs, ys: integer;//画线开始处的坐标
xt, yt: integer;//记录鼠标前一时刻的坐标
xl, yl: integer;//记录第一条箭头线的端点坐标
xr, yr: integer;//记录第二条箭头线的端点坐标
b: boolean;//判断是否已经开始画线implementation{$R *.dfm}procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
b := False;
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
xs := x;
ys := y;
xt := x;
yt := y;
xl := -1;
yl := -1;
xr := -1;
yr := -1;
b := True;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if b then
begin
Form1.Canvas.Pen.Mode := pmNotXor;
Form1.Canvas.Pen.Color := clRed;
Form1.Canvas.Pen.Width := PenWidth;
Form1.Canvas.MoveTo(xs, ys);
Form1.Canvas.LineTo(xt, yt);
Form1.Canvas.MoveTo(xs, ys);
Form1.Canvas.LineTo(x, y);
if xl <> -1 then
begin
Form1.Canvas.MoveTo(xt, yt);
Form1.Canvas.LineTo(xl, yl);
Form1.Canvas.MoveTo(xt, yt);
Form1.Canvas.LineTo(xr, yr);
end;
xt := x;
yt := y;
if x > xs then
begin
xl := trunc(x + Len * Cos(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6));
yl := trunc(y - Len * Sin(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6));
xr := trunc(x + Len * Cos(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6));
yr := trunc(y - Len * Sin(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6));
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xl, yl);
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xr, yr);
end
else
if x < xs then
begin
xl := trunc(x - Len * Cos(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6));
yl := trunc(y + Len * Sin(pi - ArcTan((y - ys) / (x - xs)) + Pi / 6));
xr := trunc(x - Len * Cos(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6));
yr := trunc(y + Len * Sin(pi - ArcTan((y - ys) / (x - xs)) - Pi / 6));
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xl, yl);
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xr, yr);
end
else
if y < ys then
begin
xl := trunc(x + Len * Sin(Pi / 6));
yl := trunc(y + Len * Cos(Pi / 6));
xr := trunc(x - Len * Sin(Pi / 6));
yr := trunc(y + Len * Cos(Pi / 6));
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xl, yl);
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xr, yr);
end
else
begin
xl := trunc(x + Len * Sin(Pi / 6));
yl := trunc(y - Len * Cos(Pi / 6));
xr := trunc(x - Len * Sin(Pi / 6));
yr := trunc(y - Len * Cos(Pi / 6));
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xl, yl);
Form1.Canvas.MoveTo(x, y);
Form1.Canvas.LineTo(xr, yr);
end;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Color := clWhite;
xt := -1;
yt := -1;
xl := -1;
yl := -1;
xr := -1;
yr := -1;
end;end.
//////////////////////////////////////////////////////////
新建一个Application,上面的代码Copy一下,在属性框中下来设置好Form1的事件,然后Run就可以看到效果
楼主如果想要填充的三角箭头很难,Delphi中只能填充长方形,填充三角形必须自己写代码,通过画点来实现填充,这是计算机图形学里面的东东,很麻烦的。
///////////////////////////////////////////////////
对了,楼主,是不是加点分,为你的这个问题写了两个小时的代码,要不就把这个贴加FAGQ中去,让我好涨点信誉分,觉得信誉分太少了。
http://expert.csdn.net/Expert/topic/2007/2007970.xml?temp=.7608454
begin
s:='hello';
ws:=s;//直接赋就可以的
s:=ws;
end;