Haruyuki Mohri Blog(Delphi)

毛利春幸のブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

TThread内でTADOQueryなどを使う場合

TThreadを使ってスレッド側からTADOQueryを使う場合
いろいろ試したけど
Execute()内からの関数内で
TADOQuery *ado = new TADOQuery(NULL);
ってしたらNGみたい
どっか飛んでいって返ってこなくなった
TADOQuery *ado; ←はExecute()以外で作ったほうがいいみたい
Execute()内で
void __fastcall TTestThread::Execute()
{
    CoInitialize(NULL); //おまじない
    while (! Terminated)
    {
        ado_no_haitta_kansu();
        Sleep(300);
    }
    CoUninitialize; //おまじない
}
とかしてCoInitialize~CoUninitialize;でくくったら
スレッド内でTADOQueryが動いてくれた
本来このCoInitializeってThreadの場合どこに入れるのがベストなんやろ?
この方法でTServiceのプログラムも作ったんで窓以外でもいけるみたい
スポンサーサイト

テーマ:ソフトウェア - ジャンル:コンピュータ

  1. 2008/04/20(日) 01:12:25|
  2. BCB
  3. | トラックバック:0

Delphi7で Unicode(LE)UTF16リトルエンディアン

Delphi7で UTF-16のリトルエンディアンでTEXT吐き出しする場合
こんな感じにしてみた
WideStringはUnicodeそのままみたい
しょっぱなでBOMとよばれるコード($FEFF)を入れる事でUnicode(LE)のテキストって判断するらしい

procedure TForm1.Button1Click(Sender: TObject);
var
  fh:      Integer;
  stTemp:   WideString;
  wTemp:  Word;
  i:        Integer;
begin
  stTemp := Edit1.Text +#13#10;
  if FileExists('test.txt') then
  begin
    fh := FileOpen('test.txt', fmOpenWrite);
    FileSeek(fh, 0, 2);//最後のポインタに移動するおまじない
  end
  else
  begin

    fh := FileCreate('test.txt');
    wTemp := $FEFF; //BOM(Byte Order Mark)
    FileWrite(fh, wTemp, 2);
  end;
  for i := 0 to Length(stTemp)-1 do
  begin
    wTemp := Word(stTemp[i + 1]);
    FileWrite(fh, wTemp, 2);
  end;
  FileClose(fh);

end;


続きを読む

テーマ:ソフトウェア - ジャンル:コンピュータ

  1. 2008/04/17(木) 20:23:04|
  2. Delphi
  3. | トラックバック:0

Profile

Twitter...

最近の記事

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。