turboから2010に変更したときに2つのエラーがでます。
turboでは正常稼動していたプログラムです。
②Application.ProcessMessages;
の ProcessMe までに赤い斜線がはいります、どうしてでしょうか?
以下ソースです。
-----------------------------
//接続の確立
hSession :=InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
if Assigned(hSession) then
begin
//URLのハンドルを取得
hReqUrl :=InternetOpenUrl(hSession,PChar(http://hogehoge.com/hoge.txt), nil, 0,INTERNET_FLAG_RELOAD, 0);
try
if Assigned(hReqUrl) then
begin
while true do begin
//URLハンドルを元にBufferに読み込む(ファイル最後まで繰り返す)
InternetReadFile(hReqUrl, @Buffer, Sizeof(Buffer), ReadCount);
//ファイルの最後までいったら抜ける
if ReadCount = 0 then Break;
HtmlStr :=HtmlStr + string(Buffer);
end;
//HtmlStr確認用のアレ
ShowMessage(HtmlStr);
//Memo1.Text :=HtmlStr;
Label1.Caption := HtmlStr;
Label2.Caption := '[1]';
WebBrowser1.Navigate(HtmlStr);
HtmlStr := '';
end;
finally
InternetCloseHandle(hReqUrl);
end;
end;
finally
InternetCloseHandle(hSession);
end;
Buffer :='';
HtmlStr := '';
{URL1 部分終了}/////////////////////////////////////////////////////////////////
WaitTime := 2/24/60/60; //2秒待つ
StartTime := Now;
while True do begin
Application.ProcessMessages;
if StartTime + WaitTime < Now then Break;
end;
せっかくソースを公開しているのに変数の宣言部までカットしている
ものだからそのままでは動かないどころかいちいちhSessionとかの型を
調べなきゃいけなくて面倒だから試していない。
だから下記の内容は予想。
Delphiは2009からUnicodeに変わってる。
だからString、Charと宣言した場合
turboではAnsiString、AnsiChar(1バイト)になるが
Delphi2010ではUnicodeString、WideChar(2バイト)になる。
とりあえずHtmlStrとBufferをAnsiStringやAnsiCharで宣言してあげないと
文字化けすると思う。
もちろん↓の行も 〜AnsiString(Buffer); にする必要がある。
HtmlStr :=HtmlStr + string(Buffer);
Delphi2010の基本がUnicodeStringなのにHtmlStrがAnsiStringになって
しまうが、他のstring型に代入した時はDelphiが文字コードを変換しながら
代入してくれるから気にしない。
通りすがり様ありがとうございます。
HtmlStrとBufferをAnsiStringやAnsiCharにしたら解説いたしました、
また宣言部分の不記載失礼いたしました。
後一つ
②Application.ProcessMessages;
の ProcessMe までに赤い斜線がはいります、どうしてでしょうか?
の部分はどうしてでしょうか?
無事解決したようでなにより。
でも
>②Application.ProcessMessages;
>の ProcessMe までに赤い斜線がはいります、どうしてでしょうか?
に関してはわからない。自分の環境ではそうならないから。
自作のコンポーネントを変更して.pasと.dcuの内容がズレているときに
よくこうなっていた事を考えると、もしかしたらプロジェクトの再構築を
実行してからDelphiを再起動すると直るかもしれないけど自信は無し。
コンパイルしてもエラーにならないなら無視してもいいかと思う。
プロジェクトの再構築 はどのようにするのでしょうか?
あ、すいませんできました、がエラーでとまってしまいますねぇ。
コンパイル時にはエラーはでません、もうしばらくがんばってみます。
ありがとうございます。
ツイート | ![]() |