Delphi初心者のための ..
751:デフォルトの名無しさん
09/12/17 23:25:32
>>748
最初に確認すべきだったけど、Delphiのバージョンとエディションは?
752:デフォルトの名無しさん
09/12/17 23:45:34
>>750
的確なアドバイスありがとうございました。
これで眠れそうです。
753:デフォルトの名無しさん
09/12/18 00:05:15
>>748
TObjectからTCustomGridまでに宣言されてるすべてのメンバー変数を抽出して、
それをレコードか何かとして宣言して、インスタンスをそのレコードでキャストすれば直接アクセスできる
それぞれの変数間に詰め物もあるけど、その辺はデバッガでメモリ覗く等して一度調べればOK
多少語弊があるかもしれないけど、簡単に言えばクラスってのは継承できるレコードに過ぎないからね
他にもprivate変数をpublicにしただけのクローンクラスを作ってキャストしても同じ効果が得られる
もちろん目的のprivate変数自体のオフセットが分かってればインスタンスアドレスから直接取り出した方が早いけど
ただしこの説明で何やってるかピンと来なければ危険なのでやらない方がいい
754:デフォルトの名無しさん
09/12/19 03:15:07
オブジェクト指向における継承の概念をしっかり理解しない人が
コンポーネント改造しようだなんて10年早い
755:デフォルトの名無しさん
09/12/19 04:03:16
こういうことを書いてる人が本当に理解できてた例を見た試しがない
756:デフォルトの名無しさん
09/12/19 04:49:30
ftTimestamp型が使えなくて泣いてみたりして
757:デフォルトの名無しさん
10/01/13 14:25:34
フォルダ作成機能付きのフォルダ選択ダイアログありますか?
758:デフォルトの名無しさん
10/01/13 14:33:43
>>757
SelectDirectory(Delphi2009で確認)
759:デフォルトの名無しさん
10/01/13 16:19:00
BDEを使わずにODBCアクセスってどうやれば良いですか?
760:デフォルトの名無しさん
10/01/13 20:57:58
がんばる
761:デフォルトの名無しさん
10/01/14 00:03:06
つActiveX
762:デフォルトの名無しさん
10/01/14 14:09:31
ActiveXでODBCアクセスって出来ましたっけ?
763:デフォルトの名無しさん
10/01/15 10:30:36
ADOがあるじゃない
764:デフォルトの名無しさん
10/03/24 23:33:45
URLリンク(sites.google.com)
765:デフォルトの名無しさん
10/03/27 18:22:08
Delphi の購入で、Pro版かEnt版かで悩んでいます。
開発ターゲットは、SQLServerを使うDBアプリです。
Ent版ならSQLServerのNativeDriverが付いてきますよね。
でも、Pro版でもADOやODBC経由でSQLserverを使えるはず。
ADOやODBC経由と比較し、NativeDriveerが使えるメリットって、
何があるのでしょうか?
766:デフォルトの名無しさん
10/03/27 18:31:43
・Delphi付属のDBコンポーネントが使える
・SQLServerの全機能をDelphiから扱える
767:デフォルトの名無しさん
10/03/27 21:07:41
リモートでDBXを使える(ProはDBXをリモートで使えない)。
768:デフォルトの名無しさん
10/04/03 18:51:03
>>767が、とっても重要で見落としてはいけないことを言った
769:デフォルトの名無しさん
10/04/07 18:11:25
フォームのクライアント領域の一部に長方形や円を描きたいと思い、フォームのOnPaintで
Self.Canvas.Brush.Color := clBlack;
Self.Canvas.Rectangle(10, 10, 200, 100);
のようにしました。
この描画結果をデザイン時でもに見えるようにするにはどうしたら良いでしょうか?
フォーム自体のコードではデザイン時に無反応なので無理だと判断しています。
そこで、試しにカスタムコンポーネントTDrawTestを作って
constructor TDrawTest.Create(AOwner: TComponent);
begin
inherited;
if AOwner is TForm then begin
FParent := TForm(AOwner);
FParent.OnPaint := Self.ParentDraw;
FParent.OnResize := Self.ParentDraw;
end;
end;
procedure TDrawTest.ParentDraw(Sender: TObject);
begin
FParent.Canvas.Brush.Color := clBlack;
FParent.Canvas.Rectangle(10, 10, 200, 100);
end;
のようにしてやり、このコンポーネントを対象のフォームに配置しました。
すると、デザイン時にフォームをリサイズした時に長方形が描画されたのですが、フォームを他の画面の後ろに隠して再び前に出した時など、サイズ変更が伴わない再描画処理では長方形が描画されませんでした。
処理対象のイベントを増やしていけば一応は動作するのでしょうが、根本的に方法がおかしいような気もします。
何か良い方法は無いでしょうか?
770:デフォルトの名無しさん
10/04/07 20:03:16
新規作成→ダイアログで作ったダイアログでOKを押しても
条件によって、そのダイアログを表示し続けるにはどうしたらいいですか?
771:デフォルトの名無しさん
10/04/07 22:21:30
フォーム(ダイアログ)のOnCloseQueryでCanCloseにFalseを設定する。
772:770
10/04/08 10:10:55
トンです。
773:デフォルトの名無しさん
10/04/13 17:59:42
IdHTTPでgetメソッド行うときってtimeout設定出来ましたっけ?
timeoutでググルと下が出てきましたがエラー一覧だった:
URLリンク(mrxray.on.coocan.jp)
774:デフォルトの名無しさん
10/04/14 00:28:13
Indy10ならTIdHTTP.ReadTimeoutはどう?
775:773
10/04/14 11:42:49
C++ Builder 6なので、TIdHTTP.ReadTimeoutが無いみたいです。
実際に発生しているエラーは、
Getメソッドを繰り返し行って4回目くらいに、Connection Closed Gracefully、が発生です。
どうもPCのスペックが悪いのか(Win7のネットブック)、時間がかかってるのが目に見えるようなのでやっぱタイムアウトかな、と思います。
776:デフォルトの名無しさん
10/04/14 13:54:12
Gracefullyの意味を辞書で調べてくるといいと思うよ^^
777:773
10/04/14 13:58:30
>URLリンク(hpcgi1.nifty.com)
(FTPですが)にも書いてあるように、
VCLコントロールが内部から投げてる例外って意味ですが、
やっぱ、その場合にもエラー処理を行うのが対処みたいで、
正常終了ということでは無さそうです。
実際、
>Connection Closed Gracefully
が発生しているのは、
何十〜何百台あるPCの1、2台だけっぽいです。
778:デフォルトの名無しさん
10/04/14 20:08:50
ネットワークものは素人の推測でどうこうするのではなく、まずはWiresharkでパケットをキャプれ。
話はそれからだ。
TIdHTTP.ReadTimeoutはIndy9にもある。というかあんまり古いバージョンはお勧めしない。
C++Builder6ならIndy9まではあげたほうがいい。
779:デフォルトの名無しさん
10/04/14 21:32:31
>>775
Connection Closed Gracefullyがでるときは大抵POSTミスやら通信ミスってるだけだろ
780:デフォルトの名無しさん
10/04/14 22:24:20
Connection Closed Gracefully自体には悪い意味はなくGracefull shutdown(URLリンク(msdn.microsoft.com))
のことだろ?たぶん。Gracefullな手順踏んで正常にコネクションが切断されただけだろ。
タイムアウトじゃねぇかな。
781:デフォルトの名無しさん
10/04/14 22:33:06
うそ書いた。正常にコネクション切断されたなら、タイムアウトすると矛盾するな。
すまそ。
782:デフォルトの名無しさん
10/04/15 14:24:25
HTTP 1.0と1.1の違い知ってる? 前者はコネクションをいちいち切る 後者はつなげたまま
783:デフォルトの名無しさん
10/04/16 16:25:23
Delphi 2010に、TurboPower SysToolsをインストールしようとしています。
EDN(エンバカデロデベロッパーネットワーク)のWebページの通りにインストールしたのですが、
コンパイルエラーになってしまいます。
エラーメッセージとエラー箇所のコードを下記に示します。
対処方法を教えていただけないでしょうか?
■エラーメッセージは次の通りです。
[DCC エラー] StBarC.pas(1751): E2030 case 文のラベルが重複して定義されています
[DCC 警告] StBarC.pas(1752): W1063 指定された AnsiChar 定数 (#$84) を WideChar に
拡大変換した結果、情報が失われました
■エラー箇所のコードは次の通りです。
> procedure GetACode128CDigit (c : Char; var Index : Integer;
> var bcDigitPos : Integer);
> var
> J : Integer;
>
> begin
> case (c) of
> #130 : bcDigits[bcDigitPos + 1] := 98; {rest are manufactured characters}
> #131 : bcDigits[bcDigitPos + 1] := 97; <− ★ここで上記のコンパイルエラーになります★
784:デフォルトの名無しさん
10/04/16 19:05:28
AnsiChar(c)
785:デフォルトの名無しさん
10/04/16 21:21:42
>>784
ありがとう。やってみます。
Delphi2010+TurboPowerSysToolsのインストール解説ページにソースコードの
変更が必要など書いてなかったです。
必要なら書いてほしいなぁ・・・
786:デフォルトの名無しさん
10/04/24 06:25:15
>>783
Delphi 2010に、TurboPower SysToolsをインストールするHPって、
URLリンク(edn.embarcadero.com)
だよな。
公式ページに掲載されてる情報なんだから、コード修正なんて不要だと思うのだが。
787:デフォルトの名無しさん
10/04/24 13:21:27
やってみてから言えよ屑
788:デフォルトの名無しさん
10/04/25 04:57:24
やってみました。
確かに StBarC.pas の数箇所で変更が必要です。
修正箇所は、こんな感じ。
修正前: Case c :
修正後: Case AnsiChar(c) :
修正前: if c in [...]
修正後:if CharInSet(c, [...])
>>787へ
批判するだけで建設的な意見を書き込めない「無能者」は、
どんな社会でも受け入れられないでしょう。
幸いにも受け入れられる社会を見つけても、そこはキミと同じ無能者
の巣窟だろうね。
789:デフォルトの名無しさん
10/04/25 07:31:19
マジになんなよ
790:デフォルトの名無しさん
10/04/26 03:45:29
>>788
公式だからと鵜呑みにしたのは無能じゃないの?
馬鹿なの?
791:デフォルトの名無しさん
10/04/26 15:14:30
>>788
見当違いの>>786みたいなレスも社会では受け入れられないよね、無能の屑さん^^
792:デフォルトの名無しさん
10/04/27 20:09:24
デルフィアン!
793:デフォルトの名無しさん
10/04/28 21:01:59
スペル・デルフィン
794:デフォルトの名無しさん
10/05/10 19:51:14
delphi使っている人って、
独法などで研究やっている人が多いんだよね?ちがう?
795:デフォルトの名無しさん
10/05/11 00:03:18
ちがうね
796:デフォルトの名無しさん
10/05/14 12:00:40
おじゃまします、IDE上で、コード上の大文字/小文字の区別をさせる、何かしらの設定みたいなものって無いんでしょうか
とりあえずヘルプなど当たってみましたが、見つけることができませんでした
例えばMessageBoxとmessageBoxを区別したい(表記が統一されていなければわかるようにしたい)のですが…
797:デフォルトの名無しさん
10/05/14 12:04:26
>>796
何したいのかよくわかんないけど、検索のオプションには大小区別のオプションはあるよ。
798:デフォルトの名無しさん
10/05/14 15:36:56
なるほど、レスありがとうございます
いえ、色々な人間がコーディングしていると、人によってはMessageBoxだったり、またある人はmessageboxだったり、messageBOXだったり、まちまちになるとソースが読みにくくなるんです。
まぁ一括置換をしてやれば良いんですが、できればコーディングしている段階で、その人がわかるようにコンパイルで弾いてやれないかなと思ったんです
神経質といえば神経質ですね
799:デフォルトの名無しさん
10/05/15 13:46:44
Canvasにアルミのヘアライン仕上げみたいな描画をしたいのですが、
やり方載ってるページとか無いですかね?
検索してもPhotoshopでのやり方とかは出てくるんですがねぇ・・・
Bitmapに保存しておいて、それを貼り付ける方法も考えたのですが、
出来れば、コードで描きたいんですけど。
800:デフォルトの名無しさん
10/05/15 18:39:30
>799
漏れはプログラムは組めるが絵心が無いんで
Illustratorでヘアライン仕上げみたいな描画をする方法を教えてくれ。
そうしたら実現コード考えてもいい。
801:デフォルトの名無しさん
10/05/17 11:34:05
タイマーをいくつも使ってイベントで処理するのと、
マルチスレッドってやつ使うのとは何が違うの?
タイマー使った方がお手軽に並列処理出来ると思ったけど
違うっぽいんで教えてくだしゃぁ
802:デフォルトの名無しさん
10/05/17 15:24:36
>>800
すみません、規制で書き込みませんでした。
URLリンク(detail.chiebukuro.yahoo.co.jp)
こんな感じですが。
よろしくお願いします。
803:デフォルトの名無しさん
10/05/17 15:46:02
>>801
タイマーのインターバルを50msec位にして、タイマーのイベントで100msec位かかる処理を行うとどうなりますか?
また、スレッドを50msec毎に作成して100msec位かかる処理を行うとどうなりますか?
804:デフォルトの名無しさん
10/05/17 22:31:38
>801
タイマを使うってのはメインスレッドの中で処理が順次行われていくってこと。例えていうなら
中の人が5分おきに電話で起こされて仕事をしてまた寝るってのを繰り返す感じ。だから
処理は並行には行われない。それに対してスレッドのほうは中の人を5人用意してそれぞれに
仕事を割り振って一斉に(でなくてもいいけど)平行して仕事をしてもらう。でも1つしかない
資源は排他的に扱う(一度に一人だけが使用する)ようにしなければならない。
勘違いしやすいのは、タイマはタイマ割り込みではなく、指定した時間が経過したことを
示すフラグでしかない(WM_TIMERはフラグが立ったことの通知)というあたり。
805:デフォルトの名無しさん
10/05/17 23:45:33
>>803,804
ありがとうございました。
すっきりしますた。
806:デフォルトの名無しさん
10/05/18 01:06:28
>>802
なんかオレにも出来そうだな。
ちょっと書いてみるか。
807:デフォルトの名無しさん
10/05/21 12:26:43
複数のスレッドが並列処理されることは保証されるの? 片方のスレッドが停滞することは
ありえないの?
808:デフォルトの名無しさん
10/05/21 12:48:02
>>803の答えはどうなるの? タイマは呼び出しスタックが積み上がるイメージだけど
809:デフォルトの名無しさん
10/05/21 13:35:27
>>807
マルチタスクで片方のタスクが停滞することはありえないの?
810:806
10/05/22 21:35:02
挫折
811:デフォルトの名無しさん
10/05/24 14:48:48
Exeのアイコンをタスクバーでは非表示にして、
タスクバーのツールバー(?)に表示するには、
どうしたら良いのでしょう?
812:デフォルトの名無しさん
10/05/24 15:15:45
タスクトレイ?
813:デフォルトの名無しさん
10/05/24 15:51:40
その通りです!!!
タスクバーのアイコンを非表示にして、タスクトレイにアイコンを表示したいでつ。
814:デフォルトの名無しさん
10/05/24 16:10:48
そうか。わかった。
815:デフォルトの名無しさん
10/05/24 16:12:33
教えて下さいorz
816:デフォルトの名無しさん
10/05/24 16:23:18
>>815
えっと、質問何だったっけ?
817:デフォルトの名無しさん
10/05/24 17:19:24
見つけました:
URLリンク(kazina.seesaa.net)
818:デフォルトの名無しさん
10/05/27 11:18:13
Delphi 6 を最近始めました。
シリアル通信で マイクロソフトのActiveX MSCOMM32.OCX を使った場合
処理の途中でポートが開いているか判別するのに
if MSComm1.PortOpen = False then // クローズ状態
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;
とやるところを、CommX で
URLリンク(www.moriq.com)
URLリンク(www.moriq.com)
TCommX.Handleプロパティ
>property Handle: THandle;
>通信ハンドルの値を示します。
819:デフォルトの名無しさん
10/05/27 11:19:16
-続き-
>このプロパティは、拡張のために用意されています。
>また、オープンされていない状態のときは、
>必ず -1 となるので通信コンポーネントの状態を知ることもできます。
とあるので
if CommX1.Handle = -1 then // クローズ状態?
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;
とやってもポートopen/close 関わらず片一方の処理しかできません。
ポートの開閉状態を知るのに何かコツでもあるのでしょうか?
検索を掛けても、手動でボタンなどを操作するソースばかりでわかりません。
壮絶な勘違いをしているかもしれませんが、教えてください。
820:818-819 です
10/05/27 17:43:42
半分 自己解決です。
この場合の if CommX1.Handle = -1 then
−1は
Integer型「符号あり整数値」= −1
じゃなくて
Cardinal(UINT)型 = 4294967295
になるんですね・・・
又は 16進数で = FFFFFFFF
if CommX1.Handle = 4294967295 then
if CommX1.Handle = $FFFFFFFF then
で逝けました・・・
821:デフォルトの名無しさん
10/05/27 21:00:45
つ INVALID_HANDLE_VALUE
822:818-819 です
10/05/27 22:47:47
>>821 (〃▽〃) おぉそのような文字列があったのですね・・・
しかし、MSCOMM32.OCX から CommX に変えると、シリアル経由で
1秒間隔毎にだらだらと送られてくる文字を足していって #13#10 で区切って文字列にし、
必用な部分を抜いて、別に送ると
これまでの約5倍ほどの遅延が発生するようになってしまいました。
URLリンク(sourceforge.net)
TComPort に切り替えて読み込みの遅延は押さえ込めそうなのですが、
今度は>>818 の処理をさせる書式が見当たりません。
どなたか判る方、教えていただけませんでしょうか?
823:デフォルトの名無しさん
10/05/27 22:56:05
遅延はやり方が悪いだけだろ
824:デフォルトの名無しさん
10/05/27 23:55:38
>822
つ Connected
825:824
10/05/28 00:00:45
>822
あ、OnRxCharのようなデータの受信イベントで処理するのが常道だから。
826:818-819 です
10/05/28 01:56:16
>>824
行けました・・とサクっと書きたかったのですが、
最初入れていたのが TComPort component version 1.50 で、その書式だとエラー
なんとか比較的新しいコンポーネントに入れなおして突破できました。
ありがとうございました。
>>825 地道に理解していきます m(_ _)m
827:デフォルトの名無しさん
10/06/18 14:29:38
BDE無しでODBC使いたいです。
828:デフォルトの名無しさん
10/06/18 16:33:12
ADOは?
829:827
10/06/18 17:01:15
d
実は、C++ Builder 6 なんですが、ADO経由でODBC出来るんでしたっけ?
830:デフォルトの名無しさん
10/06/18 17:07:22
URLリンク(detail.chiebukuro.yahoo.co.jp)
831:827
10/06/18 17:09:14
d
とりあえず、ADOアクセス検討してみまつ。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4909日前に更新/241 KB
担当:undef