ハイパーリンクにパラメータを渡すには?

解決


めるめる  2010-01-29 20:27:16  No: 37334

いつもお世話になります。

Windows7 Ultimate + D2007

下記のように、パラメータを付けてウェヴページを表示したいのですが、
「'string' と 'PWideChar' には互換性がありません」とコンパイルエラーが発生します。
パラメータは、毎回、画面より、Edit1.Text から受け取る予定です。
何か良い方法はありませんでしょうか。
無理矢理、型キャストしてみましたが、文字化けしてしまいました。
よろしくお願いいたします。

※以下サンプル(コンパイルエラーが発生するため実行できない)
uses
  UrlMon;

procedure TForm1.Label1Click(Sender: TObject);
var
  Wstr1, Wstr2, Wstr3: String; //PWideChar;
begin
  Wstr1 := 'http://www.hogehoge.jp/index.php?USER=';
  Wstr2 := 'ABC123';
  Wstr3 := Wstr1 + Wstr2;
  HlinkNavigateString(nil, Wstr3);
end;

[DCC エラー] Unit1.pas(60) E2010 'string' と 'PWideChar' には互換性がありません


fm  2010-01-29 20:36:20  No: 37335

これでは?

procedure TForm1.Label1Click(Sender: TObject);
var
  Wstr1, Wstr2, Wstr3: String; //PWideChar;
begin
  Wstr1 := 'http://www.hogehoge.jp/index.php?USER=';
  Wstr2 := 'ABC123';
  Wstr3 := Wstr1 + Wstr2;
  HlinkNavigateString(nil, PChar(Wstr3));
end;


HlinkNavigateStringの  2010-01-29 21:18:57  No: 37336

第2引数の型はPWideCharなんだから、
var
  Wstr1, Wstr2, Wstr3: WideString;
begin
  Wstr1 := 'http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi';
  Wstr2 := '?print+201001/10010114.txt';
  Wstr3 := Wstr1 + Wstr2;
  HlinkNavigateString(nil, PWideChar(Wstr3));
end;


D  2010-01-29 21:29:59  No: 37337

>無理矢理、型キャストしてみましたが、文字化けしてしまいました。
  この場合だとStringをWideStringにキャストしてから更にPWideCharにキャストします。

  HlinkNavigateString(nil, PWideChar(WideString(Wstr3)));


めるめる  2010-01-30 02:31:23  No: 37338

> この場合だとStringをWideStringにキャストしてから
> 更にPWideCharにキャストします。
2回キャストは気づきませんでした。

うまくいきました。ありがとうございました。
今後ともよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加