同上

解决方案 »

  1.   

    直接赋值,内部会自动转换
    var
      s: string;
      ws: widestring;
     
      ws := s;
      

  2.   

    widestring到string
    var
      s: string;
      ws: widestring;
     
      s := ws;
      

  3.   

    var s:string;ws:widestring;
    begin
      s:='hello';
      ws:=s;//直接赋就可以的
      s:=ws;
    end;
      

  4.   

    你直接赋值就可以了
    just do it!
      

  5.   

    问题是我的widestring是从word里读进来的为
    '男'#$D#7
    实际应该是'男'
    我现在要'男'该怎么办啊
      

  6.   

    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中去,让我好涨点信誉分,觉得信誉分太少了。
      

  7.   

    真倒霉,发错地方了,不过,楼主也可以看看,千万别笑
    http://expert.csdn.net/Expert/topic/2007/2007970.xml?temp=.7608454
      

  8.   

    function StringToOleStr(const Source: string): PWideChar;
      

  9.   

    String 其实是AnsiString 可通过PChar来转换
      

  10.   

    var s:string;ws:widestring;
    begin
      s:='hello';
      ws:=s;//直接赋就可以的
      s:=ws;
    end;
      

  11.   

    WoKao~~~~真TMD寒心....太明显了!!