1 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:41:37 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その50 pc12.2ch.net/test/read.cgi/tech/1246340765/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
552 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 16:41:28 ] www1.axfc.net/uploader/Sc/ のコメントDelのSc_100990.zipでアップロードしておきました。5秒で再現できるんですが。 上記の操作を繰り返すとボタンの位置がずれていきます。
553 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 18:38:24 ] 2k+D6Per発生せず。 手順は>>542 の通りやった。
554 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 19:23:08 ] xp(sp3)+d7ent(sp1)だけど発生しなかった。 HDDを交換でXPをクリーンインストールしたいんだけど D7のライブラリパスとかを一発で元に戻す事ってできる?
555 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 20:24:04 ] >>553 んー。発生しませんか。お手数おかけました。ありがとうございます。 しばらくもうちょっと調べてみます。
556 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:17:01 ] >554 該当レジストリを持っていくっていう手もあると思うが>設定の引っ越し。
557 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:55:14 ] xp sp3+turbo delphiで発生しますた
558 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 10:51:28 ] 発生してた奴はOSとDのバージョンだけじゃなくて ウィンドウ周りに関する環境設定情報を全部書き出せ
559 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 10:55:20 ] そんな書き方じゃまともな情報は上がってこないぞ
560 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 17:14:14 ] 今のところ再現画像、再現動画等なし
561 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 19:32:37 ] オレのところでも発生したわ。 557と同じXPSP3+Turboだけど。 bsSingleとかで検索したら、似て非なる事例が何個か出てくる。
562 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 11:22:49 ] 自演、乙。 オッチャ盛況だよ。
563 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 16:00:49 ] 何個かしかないなら挙げればいいのに、しないのは何故なんだろうね
564 名前:561 mailto:sage [2010/04/09(金) 16:55:56 ] Win98+Del6Per(XPSP3上のVirtual PC 2007)では発生しなかったわ。 アンカーの両側がオンだと、繰り返すたびにボタンが縮んでいくのが笑える。 まあ確かに、くだすれの話題ではないか。
565 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 13:25:46 ] Del7のVCLに直接手を入れて使ってる人いる? VCLってリコンパイルできるのかな。
566 名前:191 mailto:sage [2010/04/11(日) 14:21:39 ] 超初心者スレなのにみんなレベル高すぎでついていけませんT_T
567 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 14:39:48 ] 途中で書き込んじゃった。 最近のバージョンって書籍でリファレンスって出てないんでしょうか。 自分としては首っ引きでページ捲り捲り勉強する方がしっくり来るのですが… 昔はパッケージにちゃんと含まれてたんですよね?
568 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 15:30:19 ] >>565 できる >>566-567 印刷
569 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 20:14:09 ] コミュニケーションのとれないおっさんだなw
570 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 00:41:45 ] おっさんきもい
571 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 13:10:21 ] おっさんかっこいい
572 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 14:25:42 ] あっちゃんかっこいい
573 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 11:51:03 ] >>569 △
574 名前:554 mailto:sage [2010/04/13(火) 22:35:55 ] ライブラリパスって普通にテキストでコピーしとけば良かったのね。
575 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 12:56:06 ] Javascriptはやたら柔軟です。 ブックマークレットの例 Javascript:for(var I=0;I<3;++I){alert(['One!','Two!!','Three!!!'][I]);}; Delphi言語では上記の ['One!','Two!!','Three!!!'][I] みたいなお手軽な書き方はないでしょうか? オープン配列コンストラクタというのが近いかなと思ったんですが、違ったようです。
576 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:10:11 ] function getarr(arr: array of string): TStringDynArray; var i: Integer; begin setlength(result, length(arr)); for i := 0 to high(arr) do Result[i] := arr[i]; end; getarr(['a', 'b', 'c'])[0]というのはできなくもないけど 今の処理系では手軽表記はないと思う。 いつの日か'one'[2]と同様 ['One!','Two!!','Three!!!'][I] が通るようになるかもしれないけどな。
577 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:29:46 ] Cだと通るよね
578 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:44:23 ] >>575 ttp://d.hatena.ne.jp/tales/20091020 ttp://d.hatena.ne.jp/tales/20100319 この辺を応用すると一応書ける uses .., Types; var s: string; i: Integer; begin for s in TStringDynArray.Create('One!','Two!!','Three!!!') do ShowMessage(s); for i := 0 to 2 do ShowMessage(TStringDynArray.Create('One!','Two!!','Three!!!')[i]); end;
579 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 12:32:54 ] 教えてください。D6パーソナル使用です。 EXE自身のアイコンをTImageに表示しています。 アイコンの透過色が透明になってくれるのは良いのですが、白色まで透明になってしまいます。 何がいけないのでしょうか。それとも全部間違っているのでしょうか。 プロジェクトのオプションに設定しているicoファイルはこんな感じです。 www1.axfc.net/uploader/File/so/42162 var Icon:TIcon; begin Icon:=TIcon.Create; Icon.Handle:=Application.Icon.Handle; if Icon.Handle<>0 then Image1.Canvas.Draw(0,0,Icon); Icon.Free; end;
580 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 13:46:07 ] transparent
581 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 15:39:26 ] Transparentが関わってそうなことは想像できるのですが、2色が透過してしまうという上記例の場合 どのようにすれば良いのか分かりませんでした。もしよろしければご教示下さい。 結局ですが自己解決しました。以下のように修正。 Image1.Canvas.Draw(0,0,Icon); → Image1.Picture.Icon:=Icon; やり方が根本的に間違っていたということでした。 しかし、こんな方法↓でもOkでした。 Image1.Picture.Icon.Handle:=Icon.Handle; Image1.Picture.Icon.Assign(Icon); 一体どれが正しいのか?? さらに、Handleってなんなんだ?と思ったので調べると、32bit整数だと。ならば、 var Icon:Integer; begin Icon:=Application.Icon.Handle; if Icon<>0 then Image1.Picture.Icon.Handle:=Icon; end; と、やってみたら大丈夫でした。 こんなコードでいいんでしょうか???
582 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 00:36:03 ] ListBox.Items.Selectedが画面外の時、 その項目が表示されるようにスクロールするやり方教えてください
583 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 04:35:59 ] はい
584 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 06:47:12 ] >>582 TopIndex
585 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 06:51:43 ] >>581 Image1.Picture.Assign(Application.Icon); これだけでいいと思う。(D6パーは持ってない
586 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 16:59:50 ] >>582 MakeVisible
587 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:10:54 ] キャプチャーを作ってみたんだけど、ウィンドハンドルからデバイスコンテキストを 取得して指定の画面のキャプチャーを取ってるつもりなんだけど、わざと取りたい画面の上に 別のウィンド置いとくとその別のウィンドもキャプチャーされるんだけどそんなもの?
588 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 00:14:15 ] XP以降なら個別にとれる 詳細はググれ
589 名前:587 mailto:sage [2010/04/19(月) 02:37:57 ] ググったらで来た。 ありがとう
590 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 07:57:21 ] >>589 興味有るから、やり方教えて
591 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 09:51:25 ] printwindowを使うんだって。 使い方はググった方が早い。 簡単だよ。
592 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 14:00:11 ] >>585 D6パーソナルでもOkでした。正解はスッキリ簡単でしたね。 リソースからアイコン削除してApplication.Iconが無い状態(有り得ないけど)にしても 表示されないだけでエラー無し。 教えてもらってから理解したけど、IDEでImage1.Pictureに画像をセットするのとほぼ同じ動作ということですね。 ありがとうございました。
593 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:55:06 ] >>591 ありがとう! がんばってみる
594 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 23:58:23 ] IDEのエディタマクロ書きたいんだけどそういう情報ってどこにあるの?
595 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 17:46:07 ] RichEditにDephiのソースコードを着色した状態で表示する サンプルなりコンポなりがあったら教えてください。
596 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:50:22 ] TParser使え
597 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 22:45:23 ] RichEditの使い方が分かりません。 単純に任意の色で文字を書いて、改行を付加する/しない が選べるようにしたいだけ なのですが、どのようにしたら良いのか分かりません。 こんなイメージで使えるprocedureを作りたいです。 const CRLF=#$0D#$0A; … RichWrite('エン', clBlue); RichWrite('バカ', clRed); RichWrite('デロ', clYellow); RichWrite('☆', clGreen); RichWrite('Delphi'+CRLF, clBlack); RichWrite('Hello'+CRLF, clAqua); RichEdit1に書かれる結果: エンバカデロ☆Delphi // 青色赤色黄色緑黒色 Hello // 水色 これを実現するための材料だけでも良いので教えてください。よろしくお願いします。 一応ですが、私は>>595 とは無関係です。
598 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:01:57 ] SelAttribute(ただし遅い)
599 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:34:48 ] >>598 ありがとうございます。 SelAttributesはヘルプによると、 >テキストを新規に挿入するときには,SelAttributes のフォント属性が適用されます。 とのことなので良さそうなのですが、改行無しで文字列を追加したい場合はどのように すれば良いのでしょうか?
600 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:36:49 ] seltext
601 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:06:58 ] >>600 うーん分からないです。 SelTextプロパティを使ったサンプルをいただけないでしょうか。
602 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:10:21 ] つ ttp://www.google.co.jp/search?hl=ja&q=delphi+seltext+SelAttributes
603 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:50:57 ] ああっ、分かりました! SelStart := GetTextLen; SelText := 'ABC'; ですね! 「Delphi SelText SelAttributes」でググると一番最初に出てくる delphi.about.com/od/delphitips2008/qt/format_richedit.htm の記事が分かりやすいです。 今までさんざん探してたんですが、こういう単純で基本的な内容のサンプルは初めて見ました。 ようするに、 with RichEdit1 do begin SelStart := GetTextLen; SelAttributes.Color := clBlue; SelText := 'エンバカデロ'; SelAttributes.Color := clBlack; SelText := 'Delphi'+CRLF; end; みたいな感じにすればOkですね。これをprocedureにしてみます。 ありがとうございました。
604 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 08:53:22 ] グループボックスのCaptionがCheckBoxになっているコンポーネントってないでしょうか?
605 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 09:06:16 ] グループボックスのキャプションをなしにして、キャプションの位置にチェックボックスを置けば?
606 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 16:29:52 ] >>604 ググって一発で出てきたんだけど ttp://www.delphidabbler.com/tips/112
607 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 20:18:13 ] ?
608 名前:604 mailto:sage [2010/04/27(火) 23:56:33 ] >>605 ,606 トンです。 でけました。
609 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:17:35 ] del標準の関数でbitmapをjpegに変換すると、低圧縮でも汚いのできれいに変換できるコンポとかってないですか?
610 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:23:04 ] ないです
611 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:29:03 ] >>609 JPEGが何なのか調べてくるといいですよ^^
612 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 15:08:57 ] 正しいことが何なのか、この胸にわかるまで〜
613 名前:609 mailto:sage [2010/05/03(月) 23:15:23 ] Jpegへ綺麗に変換できるコンポがあって説明を読むと、 delphiのはサンプリングが4:1:1だから汚いと書いてありました。 del7proなんですが、このサンプリングレートを変えることは出来ませんか?
614 名前:デフォルトの名無しさん [2010/05/04(火) 00:40:48 ] c言語の float range_0[] = { 0, 256 }; float* ranges[] = { range_0 }; をDelphiで書き換えたいのですが var range_0: array[0..1] of Float = (0, 255); ranges: array[0..0] of PFloat; begin ranges[0] := @range_0; ・・・・・・ end; でいいのでしょうか? Floatは type Float = Single; PFloat = ^Float; で作ってあります。 どなたかわかる方おられましたらよろしくお願いします。
615 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 03:06:22 ] なんで数字まで変わっちゃうんでしょうか
616 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 03:41:13 ] >>613 jpeglib.hのjpeg_component_infoをjpeg.pasに定義してcomp_infoを^jpeg_component_infoにして TJPEGImage.Compressで for i:= 0 to 2 do begin jc.c.comp_info[i].h_samp_factor:=1; jc.c.comp_info[i].v_samp_factor:=1; end; とかすればイケるのかな つーか、そのコンポとやらを使えば良いんじゃないかな 酔ってるし寝るのであとは知らん
617 名前:614 mailto:sage [2010/05/04(火) 08:24:11 ] >>615 レスありがとうございます。 数字は素で間違えました;
618 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 08:37:43 ] Cうろ覚えだけど愚直に移すならこんな感じか。 type Float = Single; PFLoat = ^Single; TFloatArray = array [0..High(Integer) div SizeOf(FLoat)-1] of Float; PFloatArray = ^TFloatArray; var range_0: array [0..1] of Float = (0,255); ranges: array[0..0] of PFloatArray = (@range_0); ranges[0][0] ==> 0 ranges[0][1] ==> 255
619 名前:614 mailto:sage [2010/05/04(火) 15:27:34 ] >>618 こういった書き方は、初めて知りました。 とても勉強になりました。ありがとうございます。
620 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:59:28 ] >>618 そこまでこだわるならHigh(Integer)じゃなくて(High(Integer)+1)じゃね? もしくはせっかく定数が用意されてるんだからMaxInt+1でもいいかと
621 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:11:06 ] ranges: array [0..255] of Single; とどう違うかさっぱりワカンネ
622 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 23:27:13 ] 何で1足すんだよ
623 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:25:46 ] >>621 どう違うかどころか全然違うよw 実際に計算してみたら? >>622 High(Integer) div SizeOf(Float)じゃなくてHigh(Integer) / SizeOf(Float)を計算すれば分かる
624 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:55:41 ] 相変わらずどうでもいい頑張り方だな
625 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 04:02:03 ] そのどうでもいいレスよりマシじゃない?
626 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 10:01:09 ] WindowsXP SP3 DELPHI7 SQLSERVER2000 BDE 画像ファイル(JPG)を読み込み SQLServerの画像項目(IMAGE型)に格納したいんですが AFileName:='IMAGE.jpg'; jp :=TJPEGImage.Create; jp.LoadFromFile(AFileName); BDEの画像項目.Assign(jp); 上記を実行すると 「〜型が一致しません。VarBytesに対してBlobが渡されました」とエラーが出てしまいます。 blobからVarBytesに変換する処理が必要なのかと思い調べたのですがよくわかりませんでした。 ADOを使用した場合はネットから引用したソースでうまく動いたのですが、 該当システムはBDEで統一させたいので質問させていただきました。 宜しくお願い致します。
627 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 11:37:45 ] BDE からの接続形態は? ODBC ? SQL-Link ?
628 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 12:08:57 ] >>627 ODBCです
629 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 17:07:02 ] a-zから10桁の文字列生成をしてみようと思って '', 'a'..'z'の配列から文字列を取り出してつなげていくプログラムを組んでみたのですが、 forを10重にしたコード書いたけど ぐぐってみたらX種類の文字のN重ループは for i := 0 to Power(X, N)-1 do begin for j := 0 to N-1 do begin で代用出来ると書かれていたのですが、 文字列の取り出し方がわかりません。 str := mojiretsu[Trunc(i / j) mod High(mojiretsu)] + str; としてみたらなんとなくそれっぽい感じだったんだけど文字列がループしてしまいました。 mojiretsuにアクセスする式はどうかけばいいのでしょうか?
630 名前:629 mailto:sage [2010/05/09(日) 17:07:43 ] コードはこんな感じにしてみました uses SysUtils, Math, Windows; const StrLenMax = 27; keta = 10; var i : LongWord; j, k : Integer; str : String; mojiretsu : array[0..StrLenMax-1] of string; begin { TODO -oUser -cConsole Main : ここにプログラムコードを書いてください } mojiretsu[0] := ''; for k := Low(mojiretsu) + 1 to High(mojiretsu) do begin mojiretsu[k] := Chr(97+k-1); end; for i := 0 to Trunc(Power(High(mojiretsu), keta))-1 do begin str := ''; for j := 0 to keta-1 do begin str := mojiretsu[Trunc(i / j) mod High(mojiretsu)] + str; end; Writeln(str); Sleep(100); end; end.
631 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 01:55:29 ] なんで乱数を使わないのかと小一時間
632 名前:629 mailto:sage [2010/05/10(月) 04:10:41 ] >>631 期待している動作としては a, b, c, d ... z, aa, ab, ac .. az, ba, bb みたいな感じで指定した桁数の文字列を生成したいです。
633 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 05:36:27 ] テストとか学校の課題? >ぐぐってみたらX種類の文字のN重ループは >for i := 0 to Power(X, N)-1 do begin > for j := 0 to N-1 do begin >で代用出来ると書かれていたのですが 元 URL を出していただけるか、元 URL のところに相談を持ち込んだほうがよいかも。 このアルゴリズム断片は、整数を26進数表記で処理するアイデアです。 i が対象となる全整数、j が 26進数変換の変換対象桁数。 i が 32 なら、 32 / 26 -> 1 余り 6 -> 'g' 1 / 26 -> 0 余り 1 -> 'b' 文字列として 'bg' を得る。 となります。 アルゴリズムとしては簡単なほうですが、 * 全組み合わせを整数から生成しているけど 26進数10桁だと 16進で 806406972400 で 32bit に収まらないから int64 にしないと。 * 0-9 が 10進で、a-z で 26進。'a' が 0 を意味するので、このアルゴリズムを単純実装 したときは aaaaaaaaaa から zzzzzzzzzz が生成されます。頭の a を消去(ゼロサプレス) しても a,b ... y ときて z の次は aa ではなく ba です。 * おそらく、遅い。
634 名前:629 mailto:sage [2010/05/10(月) 05:58:41 ] >>633 いえ、ブルートフォースもどきなプログラムを作ろうと思ってまずは文字列生成部分を作ってみようとしました。 参考URLはdobon.net/vb/bbs/log3-38/23321.html です。 同じように26進数のことをいわれていたのですけど、 結局わからなかったです。 まさか32bitに収まらないとは・・・ なんとなく10桁って書いたので6桁でも8桁でもいいのですが・・・
635 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 09:00:01 ] var table: array [#0..#255] of char; procedure init; var i: char; begin for i := #0 to #255 do case i of 'a'..'y': table[i] := succ(i); 'z': table[i] := 'a'; else table[i] := #0; end; end; function getnext(s: string): string; var i: integer; c: char; begin result := s; for i := length(result) downto 1 do begin c := table[result[i]]; result[i] := c; if c <> 'a' then break; end; end;
636 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 09:00:54 ] init; getnext('aaa') ==> 'aab' getnext('zzz') ==> 'aaa' var s: string; begin init; s := 'aaa'; while true do begin writeln(s); if s = 'zzz' then break; end; end; 最速狙いたいなら普通にCでDLL書いたほうがいい。
637 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 15:34:26 ] 別にCなんか使わなくてもインラインアセンブラで十分じゃん
638 名前:629 mailto:sage [2010/05/10(月) 16:20:22 ] www.ss.u-tokai.ac.jp/~ooya/Program/Console/NShinhou1.txt ここを参考にしたらなんとかいけそうでした。 ご協力ありがとうございました。
639 名前:デフォルトの名無しさん [2010/05/11(火) 14:28:43 ] Delphi7だけどバグの修正これでいいかな Quality Centralの33496 qc.embarcadero.com/wc/qcmain.aspx?d=33496 procedure TMenuItem.DoDrawText(ACanvas: TCanvas; const ACaption: string; . with ACanvas do begin if Text = cLineCaption then//追加2010.05.11 QC33496 exit;//追加2010.05.11 QC33496 if IsLine then begin if Flags and DT_CALCRECT = 0 then begin R := Rect; Inc(R.Top, 4); DrawEdge(Handle, R, EDGE_ETCHED, BF_TOP); end; end 2箇所追加してみたけど(新しいの2010も治っていないけど)
640 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 01:08:13 ] //if Text = cLineCaption then if IsLine then でしょ
641 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 10:44:10 ] フォームのAlphaBlendを使った時に特定のコンポだけは透明化されないようには出来ないでしょうか?
642 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 12:15:46 ] AlphaBlendなフォームの上に Transparentなフォームをぴったり重ねればできそうだけど アホっぽいなw
643 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:04:26 ] バイナリデータを文字変数を使って処理しています 以下のようにすると、バイナリ状態のUTF-16LE文字列をWideString文字列に出来ることが分かりました var Bytes: AnsiString; WStr: WideString; begin // BytesにUTF-16LEのバイナリを入れる処理が入る… // 例:バイナリ 71 67 AC 4E 30 00 33 00 WStr:=WideString(PWideChar(Bytes)); // 結果:WStrに「東京03」が入る 質問: 1. コンパイル時に警告が出るんですが、このやり方で問題ないですか? [警告] Unit1.pas(174): String から PWideChar への型キャストは間違っている可能性があります 2. この逆(WideString → AnsiStringにバイナリ状態のUTF-16LE)の変換は、1文字ずつループを回せば 出来ましたが、もっと簡単に出来ますか? よろしくお願いします
644 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:11:55 ] なんでAnsiStringなんかに入れるの・・・ Byte配列でええやん
645 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:34:12 ] 警告ごまかしたいなら w := WideString(PWideChar(Pointer(s))); w := WideString(PWideChar(@s[1])); で行けるんじゃね。 Stringをバイナリコンテナとして使う場合 別に文字コードなんて関知しないから問題ないはず。
646 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:04:55 ] >>644 何をどうすれば出来て、何が最善なのか分からないんです 実は当初、Byte型の動的配列で検索とかいろいろやってました TByteDynArrayとかオープン配列パラメータとか使ってみたり 勉強にはなったんですが、配列要素を切ったりつなげたりのやり方が よく分からなかったのと、いちいちSetLengthするくらいならStringの方が 簡単かつオールマイティで良いではないかと考えたんです ちなみに配列版の試作途中ソースは誤って削除してしまいました(アホ) >>645 ありがとうございます WStr:=WideString(PWideChar(Pointer(Bytes))) とすることで警告が出なくなりました さらに、 WStr:=WideString(Pointer(Bytes)) でもOkでした ということはと考えて、 Bytes:=AnsiString(Pointer(WStr)) とすると逆変換も出来ました 空文字やヌル付きでもそのまんま、ありのまま相互変換するようなので分かりやすいです ポインタとかの理解度5%程度なのでよく分かってませんが、このPointer(文字型変数) というのは単なるポインタじゃなくてポインタ型、文字列の長さ情報をも含んでいるんですね ヘルプ見ても断片的に「型なしポインタ型」としか書いてないし… 配列でなく、オールマイティな?Stringをバイナリコンテナ(カッコ良い言葉なのでこれも拝借) として使うのは、方向性として間違ってはいませんよね? それともやはり配列使うべきでしょうか? 配列の利点があれば教えてください
647 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:05:45 ] >>646 あんたなかなかセンスいいw
648 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:50:44 ] >>642 それやったことあるw よっぽど重いアプリでも作らない限り無難に理想の動作はしてくれるよ。 リサイズさせない移動させないサブフォームでなら普通に使える。
649 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:59:47 ] Del7を使っています。 WinSight32である特定のウィンドハンドルを見たら、そのウィンドウを隠した(スライドさせる)時に hidden となるのですが、この hidden になっているかどうかはどうすれば分かるでしょうか?
650 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 22:57:03 ] IsWindowVisibleとか
651 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 23:58:52 ] >>646 使ってるDelphiのバージョンが分からないけど、そのバージョンを一生使い続けるならそれも可 でも乗り換えることがあるなら、string型はすでに仕様が2回ほど変わった過去があるので そのキャストが今後も使えるとは限らないし、配列を使った方が確実にいいと思う だからそのコードは偶然動いた程度に考えた方がいいかと あと利点云々は変換した後何するかによるし、もう少し情報出してくれないと・・・
652 名前:649 mailto:sage [2010/05/13(木) 00:17:33 ] ありがとうございました。 状態の取得が出来ました。 新たな質問なのですが、 他のソフトのテキスト描画色を取得したくて、ググったらGetTextColorというのにたどり着きました。 var CL: TColor; begin CL:=GetTextColor(DC); と、やってもCLには「0」が入ります。 DCの取得は出来ています。 TColorをTColorRefとしてもダメでした。 どなたかよろしくお願いします。