1 :
デフォルトの名無しさん :
03/09/29 01:34 Delphiに関する上級者用の技術相談室です。 中級者は「Delphi相談室(中級者)」へどうぞ。 初心者は「くだすれDelphi(超初心者向け)」へどうぞ。
2 :
デフォルトの名無しさん :03/09/29 01:35
だからなに?
3 :
デフォルトの名無しさん :03/09/29 01:35
4 :
デフォルトの名無しさん :03/09/29 01:35
バッファオーバーフロー
87 :___ :03/09/28 22:25 Delphiスレは多すぎです。人気なんか全然ないのに。 スレッドの数をもっと減らしてください。
8 :
デフォルトの名無しさん :03/09/29 02:00
荒らすなよDel厨
10 :
デフォルトの名無しさん :03/09/29 02:30
>>8 のケースで上級者の対応ってどういうの?
ライブラリ書き換え。
文字列追加時にチェックする。
実行時にコード書き換え。
何もする必要なし。無駄な事はしません。
12 :
デフォルトの名無しさん :03/09/29 03:10
13 :
デフォルトの名無しさん :03/09/29 04:50
begin:って面倒くさい構文ですね
>>8 今までそれが発覚しなかったのがいろんな意味ですごいな
>>14 そうだね。C系の言語に慣れてると面倒に見えるだろうね。
でも、これくらい頭の中で共通化して抽象化してしまえ。
>>15 2CHでも前に言ってた人がいると思うよ。
確か、iniファイルの読み込みで行制限があるという話からそっちに流れたような気もする。
>>取り出す文字列の長さを確認せずに4096バイト固定のバッファに格納するため dephiの開発者って終わってるな。こんなとこチェックしないプログラマーが普通いるか?
18 :
デフォルトの名無しさん :03/09/29 14:42
>>16 XMLなら行制限も桁制限もないわけだが。
>>17 以前の議論では、パフォーマンスを優先したんだろうという事になったような気がするよ。
20 :
デフォルトの名無しさん :03/09/29 19:37
有段者向けのスレッドを立てましょう!!!!!!!!!!!!!!!!!!!!!!!!! ぼくわ厨房でわ無いです!!!!!!!!!
>>19 文字列の取得/設定なんてそう何回も呼び出されないし、単純な長さチェックだけでそんなにロスしないと思うがな。
>>21 どうかな?
・1項目毎に呼ばれる
・サイズの取得もAPIの呼び出し(メッセージ機構で)が必要になる
から昔は結構大きかったんじゃないの?
パフォーマンスとか以前に固定のバッファに格納するなら長さをチェックしないと駄目だと思うが
書き込みをチェックするのを忘れたスマソ
>>24 はなかったことにしてください
26 :
デフォルトの名無しさん :03/09/30 00:21
ゲームプログラムをしているのですが、描画内容の計算は1/30秒ごとに行い、 Application.OnIdle で暇なときに描画関数を呼び出し、というのをやっています。 が、このOnIdleというのはCPUに余裕があるときに発生すると聞いたのですが、 完全に暇なときなのでしょうか、それとも100%以外という意味なんでしょうか。 もし前者なら、描画できる余裕が少しあるのに描画できない、後者なら 描画を始めた時点で100%に達してしまい、終わるまで次が描けない → 描くのに1/30秒 以上かかるときに描画が等間隔にならない、と考えたのですが・・・。 理想は、通常は30fpsで描画して、維持できなくなったら徐々にfpsを減らしていく、 という形なのですが、いいアイデアは無いモノでしょうか。
>>26 上級者スレで、くだすれレベルの質問すんなよ。
てかゲーム製作スレで聞けヴァカ
>>26 タイマイベントでやりくりしろよ。つかDirectX使え。
>>26 OnIdleはCPUに余裕があるときです。
33mSのタイマーイベントを使うと希望通りCPUに余裕が無くなると自動的に等間隔でなくなります。
>>30 元々タイマーなんぞに制度を求めては行けません。
>>26 >このOnIdleというのはCPUに余裕があるときに発生する
前提から間違ってる。ヘルプ読め。ついでにソースも読め。
正確に言えば OnIdle は メッセージキューに何もなければ実行され、Done が Trueなら WaitMessageがその後呼ばれる。 OnIdleはマウスやタイマーイベントでメッセージキューが常に一杯なら1度も実行されない。 よってCPUに余裕があれば、OnIdleが実行される。 ただし、他のアプリのせいでCPUに余裕が無くても、メッセージキューが空なら実行される。
34 :
デフォルトの名無しさん :03/09/30 15:29
Del厨って馬鹿だなぁ(w いい加減気づけよ(w
WM_TIMERは優先順位が低いと言われていますよね。 メッセージキューに待機中であってもマウスメッセージ等が割り込むために 正確でなくなります。
36 :
デフォルトの名無しさん :03/10/03 19:48
age
37 :
デフォルトの名無しさん :03/10/04 00:46
釣れた(藁
38 :
デフォルトの名無しさん :03/10/04 00:47
釣れた(藁
WM_TIMER や WM_PAINT は必要に応じてまとめられてしまいます。 他に優先度の高いメッセージがある場合、そちらが先に処理されてしまう。 複数の WM_PAINT は再描画が必要なリージョンが統合されて一つの WM_PAINT に統合される。 逆に、自分で定義したメッセージを自分自身に送れば問題の一部は解決する。 ただし。Windows はリアルタイム OS ではないのでどうしても手の届かない部分が存在します。 DOS みたいに全権限を取得できるわけでもないしね。 いろんな部分の考え方を変えるか、いっそ全画面、CPU 100% 使用と割り切るか。
VB厨にはこれでも上級に見えるわけか。
どこにVB厨が???
煽っているのはすべてVB厨だと思い込んでいるのでしょう。
43 :
デフォルトの名無しさん :03/10/04 18:17
こんばんわ、 いきなりで申し訳ないですが キャンバスに出力する文字列も幅と高さを知るのに CanvasのTextExtent メソッドがありますが、 Canvasを使わず幅高さを知る方法を知ってたら教えて下さい。
自己解決しました。
>>43 私はそれを知りません。
TCanvas.TextExtent は GetTextExtentPoint32 を呼び出しています。
ですから、もし画面へでしたら GetDC(0)したハンドルで GetTextExtentPoint32 するか
又は これはご希望の方法ではないでしょうが、
TCanvasインスタンスを作ってGetDC(0)ハンドルを渡して Canvsa.TextExtentすればよいと思います。
CreateFontではhDCは必要ありませんが、CreateFontで作成したhFONTは
SelectObjectしなければフォント情報は引き出せません。
>>44 質問した以上は解決法をまとめて下さい。
そうすれば、検索してこのスレを見つけた人にも役立ちます
49 :
デフォルトの名無しさん :03/10/05 14:10
TThreadを使いたいと頑張っているのですが スレッド側からVCLに対して操作をすると AccessViolation例外が発生してしまいます。 例えば、ProgressBar1.Stepby(1);や LabelEdit1.Text:='文字列'などの一般的な 操作で発生します。(これらは当然Syncronize()を 使って操作してます) 不思議なことにそのVCLコンポーネントがひとつ だけの場合に発生するようです。ProgressBar ならひとつの場合エラーが発生してふたつ置くと エラーが起きません。仕方なくふたつ置いて、 VisibleとEnableをFalseにして凌いでいるのですが、 この点について何か解決方法など知っていませんで しょうか。
>>49 その Syncronize で呼び出したメソッドでやってるんだよね?
そうだとしたら、必ず起きるコード書いてみて。
それから Syncronize を多発するより、メッセージを投げた方がいいよ。
SendMessage はSyncronizeと同じだから PostMessag するといい。
>>50 >SendMessage はSyncronizeと同じだから PostMessag するといい。
これはバージョンによって実装が全くことなるよ。最新のものはイベントを使用し効率よく実行されるようになっている。
というか49は、くだすれに池
52 :
デフォルトの名無しさん :03/10/05 14:50
>>49 ,
>>50 ありがとうございます。
該当コードは以下のとおりです。
>その Syncronize で呼び出したメソッドでやってるんだよね?
>そうだとしたら、必ず起きるコード書いてみて。
//----------------------------------------
// データを追加する
//----------------------------------------
procedure TGetDataThread.AddData;
begin
Form1.DataList.Add(DataStr);
Form1.ProgressBar1.StepBy(1);
Form1.ProgressBar1.Update;
end;
>というか49は、くだすれに池
くだすれレベルの質問ですいませんでした。
次回からそうします。
>>51 ああ実装が同じという意味じゃなくて効果が同じという意味ね。
いちいちメインと同期するのは同じという意味ね。
>>52 そのフォームが完全に作成されてから TGetDataのインスタンスは作成されているんだよね?
ところでそれはテストコードなんだよね? そこにForm1を普通は書かないよね?
名人級用のDelphi相談スレを教えてください。
SendMessageを使うサンプルコード Type TMyThread=class (TThread) public gate:boolean; //同期を取る為のフラグ(片方は見るだけ、片方は書くだけなら安全) WinHandle:THandle; //スレッド作成時にメッセージを送る親を定義しておく cnt:Integer; procedure Execute; override; end; procedure TMyThread.Execute; begin cnt:=0; while(not Terminated) do begin inc(cnt); if gate then //ゲートが開いていればメッセージを送る begin gate:=false; //実際にはゲートを閉じてから送る PostMessage(WinHandle,WM_MyMessageID,Integer(Self),cnt); end; //もし整数以外の情報を送るなら、クラスインスタンスを作って 送られたフォーム側で開放する end; end; //フォーム側は procedure TForm1.RefNo(var message: TMessage); //message WM_MyMessageID; begin Caption:=IntToStr(Message.LParam); with TMyThread(Message.wParam) do begin if Message.LParam>100 then Terminate; gate:=True; end; end;
>>53 >>56 コードも載せていただき、ありがとうございます。
>そのフォームが完全に作成されてから TGetDataのインスタンスは作成されているんだよね?
はい。
>ところでそれはテストコードなんだよね? そこにForm1を普通は書かないよね?
いろいろ試していたので、Form1.と書いてました。
基本的にVCLの操作はSyncronize経由で、
グローバル変数はForm1.○○○で操作しています。
いろいろ削ったり、コメントアウトしたりしてうまくいくケースを
探ってみましたがダメでした。やはりエラーが起きてしまいます。
原因がよくわかりません。同じコンポーネントを2つ乗せれば
エラーが起きないので、それでよいと言えばよいのですが、
少し気になります。
SendMessageを使うか今後検討してみます。
>>57 一応、グローバル変数の操作は
TCriticalSection内で行ってます。
スレッド関連以外の原因も考えようよ。柔軟に思考を広めよう。 Syncronizeを使えば安全(メインスレッドで実行)という理由は色々あるけど GUI周りはメインスレッドで実行しないと正しく処理されないものもいくつかある。 それはおいといて、メモリ周りはマルチスレッド時はメモリマネージャとかは基本的にちゃんと排他処理を行っている。 なのでAVが出るのはライブラリ側の排他処理周りである可能性であるのは低い。 あそらく原因はユーザー側のコーディングが問題なのだろう。 AVの出る原因特定ってAVの出た位置から呼び出し履歴やアドレスを見ていけば結構簡単にわかるよね。 大抵は初期化されていないものにアクセスしたり、無効になったポインタやインスタンスをアクセスしにいった時発生するかと。 地道にトレースして探すべし。
>>58 1、グローバル変数を使う時は Form1.メソッドで なおかつTCriticalSection内というのは意味がないよ。
2、SendMessageはSyncronizeと効果は同じ
進行状況を表示する程度の事ならPostMessageで非同期に状態を送る方がいい
61 :
デフォルトの名無しさん :03/10/07 10:32
>>59 >>60 >あそらく原因はユーザー側のコーディングが問題なのだろう。
自分もそうだと思います。やはりどこかがよくない使い方してるのだと
思います。根気よく調べてみます。ありがとうございました。
マルチスレッドでは、排他処理やスレッド同期を常にやってたのでは せっかくのマルチスレッドが生かせない。 設計を上手くやって、同期や排他処理を必要ないようにするのがコツ。 ・単ワード(CPUのデータ幅以内)で構成される整数型、ポインタ型、浮動小数点型は あるスレッドが読み書して、他が読むだけの使い方であれば排他処理は必要ない この方式でスレッド間通信に使う事も可能 ・int64は2ワードとなるのでダメ ・メモリ境界をまたぐ32bit変数も デュアルCPU構成等の環境でダメなので注意 これを利用して、構造体を渡す場合も、リングバッファ構造にしてそのポインタか、配列番号を渡す ようにすれば、同期や、OSの提供する排他処理に頼らずにすむ。
63 :
デフォルトの名無しさん :03/10/08 17:10
>>62 そういったカビの生えた古臭い知識は.Netで完全に死滅するわけだが。
>>63 ほう。
では、 .NET で通用しないとでも? それならどのあたりが?
あるいは、.NETでも通用するけど、それよりスマートな概念があるという事かな?
Windowsでは、コンパイラやRADを常に使っていたのでは せっかくのCPUの性能が生かせない。 アセンブラやCを上手く使って、コンパイラやRADを必要ないようにするのがコツ。
まあ一生Cとアセンブラやってろよ
>42 C厨もいるのにね
>>65 ほー、Cで書いたコードはコンパイラが無くても動くと…メモメモ。
動くだろ
Delphiで書いたコードもね
>>67 C厨とやらがDelスレを煽る理由が無いんだが?
.NET もスレッドは Win32 スレッド前提だからつらいよ。 スレッドを抽象化しきった Java には、それはそれで別の問題があるが。
73 :
デフォルトの名無しさん :03/10/09 12:51
>>62 ありがとうございます。
教えていただいたことを参考にして早速作り直しましたところ
処理速度があがりました。(まだ不安定ですが・・・)
スレッドプログラムは奥が深いですね!精進します。。
74 :
デフォルトの名無しさん :03/10/09 15:37
delだと、30K円、 マイクロソフトだと、只なんですが、 どのようにしたら、ボーランドをぬっ殺せますか。
タダということにしたいのですね。
>>74 みんなで Del6パーソナルを使いましょう。 そうすれば ぬっ殺せるかどうか判りませんが、困ると思いますよ。
77 :
デフォルトの名無しさん :03/10/09 15:58
デルポイを使うと金果敢だよ。視ネ。
78 :
デフォルトの名無しさん :03/10/09 16:40
いまさら、アフォプログラムなら、自分で十分。 delphiがつまらなくしてしまった。だな。 MSならVISIOがあったし。 暇人は要らんな。俺も含めて。
誰か78を日本語に訳してくれ
いまさら、アフォプログラムなら、自分で十分。 delphiがつまらなくしてしまった。だな。 MSならVISIOがあったし。 暇人は要らんな。俺も含めて。
ここで、話題にしてること事態、アフォだね。 でるぽい、ぽい有意義な話題かと思えば、文法と ウィンばっかりじゃん。ツマンネ。 出るは、イラネ。マイクロソフト純正で十分だよ。
なんか日本語が不自由な香具師が紛れ込んでるな。
delphiのソフトはwinnyで落とそう。
ちんげあげうざっ
85 :
デフォルトの名無しさん :03/10/18 20:20
Delphiプログラマーの給料おいくらでつか?
>>85 月収27万
ただし漏れはプログラマーではない。環境測定の工作員。
工作員コワイヨー
馬鹿は高い所が好きとは良く言ったものです。
90 :
デフォルトの名無しさん :03/10/23 20:13
上級者もっとでてこい。
呼んだ?
こんなところに上級者が居るわけねえだろ
俺は上級者だけど文句ある?
94 :
デフォルトの名無しさん :03/10/24 23:45
97 :
デフォルトの名無しさん :03/10/25 23:33
謎の急浮上!
99 :
デフォルトの名無しさん :03/10/29 14:04
listViewのreport表示で 1 2 3 1 黒 青 2 黒 赤 3 黒 赤 のように個別に色を変えたいんですが どうしたらいいのでしょうか?
101 :
デフォルトの名無しさん :03/10/29 22:56
私はマルチではありません
まるぽ
103 :
デフォルトの名無しさん :03/10/29 23:16
104 :
デフォルトの名無しさん :03/10/30 10:37
object pascalにはC++のANSIみたいに仕様を定めている所はありますか? Delphiは標準にどれくらい準拠していますか?
>>104 ObjectPascalの規格があるかどうかは知りませんが、
あったとしてもDelphiは全く準拠していません。
今はボーランド自身も「Delphi言語」と称しています。
一社独占で流行らない言語は死滅するだろうな。
macのObjectPascalが最初じゃなかったっけ? で、TurboPascalもそれに準拠してた(object型ってやつ)
>>108 流行っていたにも関わらず、開発元に見捨てられて死滅寸前の言語もありますな。
ライブラリの方が重要。
>>110 じゃあ流行ってないDelphiはもっと死滅するな。
ところが死滅していないところが優良ツールと糞ツールの違い。
死滅しなくても使われていないんだもんなぁw
労働プログラマに使われていないから、おいしい思いが出来るんじゃないか。
まぁあの会社の主力はバージョンアップの頻度からして多分JBuilderなんだろうな
Delphiは終わってるって言われはじめてから何年経ってるんだろう どっこい生きてるじゃん
ようするに、今のプログラマ雇用の流れ=不安定化には合わないだけでさ 残念なことに道具として使うぶんにはまだまだパフォーマンス最高の一つだからさ。 .NET は longhornが出て、longhornがサクサク動くマシンが安価になった頃からかなあ・・・
Delphiバカにする人って何作ってるんだろ
C#を作ってますがなにか?
>C#を作ってますがなにか? この一言で、貴方の薄っぺらさが解りました。 「C#を作ってますがなにか?」だって ごめん、鼻で笑っちまった
私は英語を作りました。
DelphiでC#コンパイラを作ってるの? あんまり意味ないと思うなあ どうせなら C# で C# コンパイラ作ればいいのに。
そんなにC#が好きなら、C#で荒らしツールでも作ってみたらどうかね? この板でDelphiが付くスレを"Powerd by Microsoft Visual C#.NET"とか言って荒らしてみるの。 ほ れ 、 作 れ る も ん な ら 作 っ て み ろ よ。 あ、今更善人ぶらなくても良いよ。だれも聞いていないからさ。
Delphiバカにする人って何作ってるんだろ 121 名前:デフォルトの名無しさん[sage] 投稿日:03/10/31 19:57 C#を作ってますがなにか? そうか、頑張れ。
>124 >DelphiでC#コンパイラを作ってるの? あんまり意味ないと思うなあ あなた読解力ないね 121 は Delphi をバカにする人で、C# コンパイラ作ってる人なんだけど
だから Delphiスレで 何で を省略するという事は Delphiで作ってるんだろ? それ以外あるか?
日本人じゃないのかな。
>>129 あなたは会話の食い違いから喧嘩になる事が多くないですか?いいえ、多いに決まっています。
そんな読解力では今後大変ですよ。もっと本を読む事をお薦めします。
で、この後「まあDel厨だからな」とかワンパターンな野次が入るんだよな。
ところで C# の他には何か作ってらっしゃらないんですか?
C# はもう出来てるんじゃないんですか?
俺さ、思うんだけど、メモリ容量が32bit空間埋め尽くしそうじゃない。 今まではさ、メモリがどんどん大きくなってCPU速度を食い潰す心配してたけど これからはメモリ空間が一杯だから、CPUが速くなればそれだけ速くなる時代なのかな? 実際32bitあればメモリ空間としては問題ないじゃない。 動画がどうとか言っても、動画データ全体をメモリに入れる必然ないしさ。 64bit化なんて言ってるけど、64bitじゃなけりゃいけない用途が見えて来ないよね。
>>132 別におまいの事情によって64bit化するわけじゃないからなぁ。
そりゃ、俺個人にも必要ではないけどさ。
世の中にはそれを必要とする分野もあるってだけ。
で、
>今まではさ、メモリがどんどん大きくなってCPU速度を食い潰す心配してたけど
>これからはメモリ空間が一杯だから、CPUが速くなればそれだけ速くなる時代なのかな?
の意味が理解できないのだが。
132は64bit化はメモリの単位だけと思っているらしい。
135 :
デフォルトの名無しさん :03/11/09 18:41
age
136 :
デフォルトの名無しさん :03/11/09 18:42
つーかこのすれいらなくねー?藁
放っておけばDAT逝きになるだろ。
138 :
デフォルトの名無しさん :03/11/10 00:40
とりあえずあげとくか。
>>132 現実にテラバイト超のメモリを実装したコンピュータもあるんですが
あれは無駄な飾りですか?
>>139 そのテラバイト超のメモリを実装したコンピュータは何ビットですか?
5年前に
>>132 は、メモリなんて128MBも必要なわけ無いだろ・・・と考えてました。
分子コンピュータが実用化されればメモリの量で心配することはなくなるだろ
蒸し熱いなここ。 みんな変な顔のおっさんなんだろうな。
145 :
デフォルトの名無しさん :03/11/10 21:57
Delphi使いはすべて上級者ぁぁぁ
147 :
デフォルトの名無しさん :03/11/10 22:10
まだDelphiスレなんてあったんだ なつかしいなぁ
149 :
デフォルトの名無しさん :03/11/15 03:11
仕方なくVCを使う。 分からずにVBを使う。 好きだからDelphiを使う。
>>149 どっちみち使わなきゃいけないんだ。頑張れ。
151 :
デフォルトの名無しさん :03/11/18 22:03
常に高レベルな質問を!
いや上級者にはもっと低レベルな所からやるのを望みたい
上級者用ってなってるから見てみたら、低級者しかここいないんか? はやってないとか、使われてないとか・・・、 おもいっきり広く使われて、スタンダード言語の一つが現実だと思うが? あんた自分の世界にひたってるアマチュアヲタプログラマーか?
あんたってだれよ?
まぁまぁ。コテハンすら使わない匿名の、やたらえらそうな書き込みは無視するのが一番。 負け犬が一番よく咆える。
156 :
デフォルトの名無しさん :03/11/22 08:24
晒しあげ
157 :
デフォルトの名無しさん :03/11/27 10:40
質問です。 Delphiで、コ
>>157 中(ry先生の書籍がおすすめです
高いけどなかなか売ってないけど根性で手に入れてください
私は通販が怖いのでまだ手に入れてません
160 :
デフォルトの名無しさん :03/11/27 23:55
CMYKモードでWindowsビットマップ(bmp)って作れるものなのかなぁ。 ムリだよね、WindowsビットマップってRGBモードオンリーじゃん?
イマイチ何がやりたいのかわからんが、(何かの色原版か?) 各色成分に分解してそれぞれビットマップに保存すればいいんじゃないか? 変換式は色理論とかキーワードに検索すればすぐ見つかると思う。
163 :
デフォルトの名無しさん :03/12/03 15:46
独り言で質問かよ?
>>163 160のレスは人に質問するような書き方じゃないと思うが。
165 :
デフォルトの名無しさん :03/12/04 09:02
>JPEGImage->SaveToStream(Stream); この処理がマルチスレッドで2つくらい重なると、 Windowsがリソース不足エラーを起します。 何か回避策無いかな。 一応、重ならない工夫はしましたが、他に重いアプリを起動してると駄目みたい。
処理的には、TBitmapを使って、Pictureをコピーしてます。 Bitmap = new Graphics::TBitmap(); JPEGImage = new TJPEGImage(); try { Bitmap->Width = Image->Picture->Graphic->Width; Bitmap->Height = Image->Picture->Graphic->Height; Bitmap->Canvas->Draw(0,0,Image->Picture->Graphic); JPEGImage->Assign(Bitmap); JPEGImage->SaveToStream(Stream); } __finally { delete JPEGImage; delete Bitmap; }
実際にやりたいことは、bitmap等のフォーマットのJpegファイル化です。
>この処理がマルチスレッドで2つくらい重なると、 >Windowsがリソース不足エラーを起します。 あなたの書いたコードがバグってるだけだと思われます。
>Windowsがリソース不足エラーを起します。 書き方間違えました。 Win32APIがエラーをリターンしてVCLの「リソース不足」エラーメッセージになります。 Windows自体は大丈夫でつ。
VCLのスレッドとメモリ管理の間に、バグとかありませんでしたっけ。
「リソース不足」と出ましたが、Syncronizeすると発生しなくなるので、リソースと関係ないかもしれません。
DelphiスレでC++書くヴァカは病院へカエレ
>>172 はいはいはい。
>>170 さすがに D6 位になると、そんな話は聞かない。メモリマネージャはだいぶ枯れたコード。
リソースというより、何かをスレッド間で共有していませんか?
「リソースがなくなったのでエラー」
ではなく「複数スレッド間で同じリソースを使ったためにエラーがおきた」
って線では?
ん?何でdelphiじゃないの言語のを書いてるのかの追求はソレで終わり?(藁 ワケ分からんな。
「の」が一つ多かったか。
ふつ〜なDelphiグラマだったらBCBのコードぐらい読めるっしょ。
読めたらDelphiなんか使ってませんよ。
読めないわけではないが、速度がな。
いや、「ふつ〜」かどうかは知らんが、「神経を疑う」つってんだが。 BCBスレ逝けっつーの。
心の狭いこと言うな。ちょっと読み替えれば読めないソースでもなかろう。
因みにふつ〜のBCBグラマはDelのソースが読める。しかしBCBXで読む必要が無くなる。
わざわざBCBのコードをDelスレに書く理由が分からんな 読めるかどうかが問題なのか?知障? もう一度言おう わざわざBCBのコードをDelスレに書く理由が分からんな
>>読めるかどうかが問題なのか?知障? 本当のことを言っちゃだめだよ
単純に質問者がBCB使いでVCLの情報はDelphiの方が多いからだと思うが。 そこまで嫌う理由の方がわからん。日本に来たら日本語喋れって口なのか?
>日本に来たら日本語喋れ 例えがおかしい すぐ隣にアメリカ人がいるのに、日本人に英語について質問しに来たようなもんだろ。
いや、何度もループして無駄だとは思うが 「B C B ス レ 逝 け っ つ っ て ん だ よ ! 」
BCBはDel以上に人少なくなってきてるしなあ。
>>185 それも例えがおかしくないか?
例えがないと理解できない低脳どもはお帰りください。お願いします。
189 :
デフォルトの名無しさん :03/12/07 16:40
つか、Delスレ縦杉。 このスレの存在意義って何よ?
わけわかんね。
>>189 >Delスレ縦杉
ちょっと前にアンチどもが荒らし&乱立させた。このスレも乱立スレのひとつ。
まあここは隔離スレになっているけどな。
まぁなんだ。漏れが200getするまでもまいら手伝え
>>192 > ちょっと前にアンチどもが荒らし&乱立させた。このスレも乱立スレのひとつ。
の割りには最初の方真面目に立てたって感じがするけどな。
都合が悪くなったらアンチのせいかよ。
お仲間がやったことにちゃんと責任を持ちな。
>>74 この勘違い厨は多くいるけど…
なぜなんだ?,MSの広報部が馬鹿なんだなきっと
197 :
デフォルトの名無しさん :03/12/09 07:02
MSの広報部は馬鹿の巣靴ですよ。
198 :
デフォルトの名無しさん :03/12/09 12:53
暇なんだねw
まあ昔からまともなサラリーマン風の人はいないなと思っていたが。 (どことなく風貌がチ○ピラ風?)
氏ね
205 :
デフォルトの名無しさん :04/01/28 04:55
206 :
デフォルトの名無しさん :04/03/06 12:29
汎用サンク APIを使って 16bitコードから呼ばれる32bitDLLを作っているのですが このDelphiで作る32bitDLLのデバッグをするのに、 NT系だと system32\NTVDM.EXE をプロセスにアタッチで出来るのですが 9x系だと、どうやればいいでしょう?
>>201 こんな会社に大野さん入ったんだ・・・他人事ながら心配です。
208 :
デフォルトの名無しさん :04/03/06 12:41
QRコード(2次元コード)吐き出したいんだけど、 なんかいいのあります?
>>209 あ!そんな感じのがあるんですね。
情報サンクス!
211 :
デフォルトの名無しさん :04/03/09 12:45
*.DFMのロードって、vclのどこでやってましたっけ?
フォームのCreateから辿ってけば?
>>211
stream reader は classes にあるよ。
>>213 InitInheritedComponent がそうだよ。
で、そこから
216 :
デフォルトの名無しさん :04/03/11 11:44
Delphi上級者の定義を教えてください
中村拓男さんの書いていることが全て理解できる。
> Delphi上級者の定義を教えてください 2chには書き込まない人
pcode氏の書き込みをみていらつかなくなる
>>218 それはないな。2ch で答えだけつけてる人。って方が正確では?
2chで書かれている事を鵜呑みにしない。
DelphiでDelphiを作れる
> Delphi上級者の定義を教えてください Delphi を使わないくらい使い込んだ人
検索してわざわざ読むものなの? それで「いらつかなくなる」というのも変なの
>>227 具体的にどの部分の技術。あんまり具体的な技術を示してないような
たんなる毒舌じいさんで2,3年早く「ひとり2チャンネル」やってただけ
毒舌とは安定のための周囲の苦心や忍耐に対する甘えである、ってね。
実際、彼のレスをここのような2chに貼り付けるとただの平凡な煽りとかわらんな MLでやったから目立つだけで、内容はただの2ch風煽り
つまり場違いだったというわけで、
227は煽りの技術について尊敬してるのかもな
煽りの技術としても並ていど
それは中島治康が大した事無いといっているのと同じ。
ふーん、煽りがうまいひとなの?
大昔の巨人選手。
>>235 の言ってるのは、当時としてはすごかった、ということか。
つまり、以前 ML に煽りのすごいひとがいた、と。でもそれはいまからみると、並程度と。
ML で煽るのはすごいとかすごくないとか以前に、電波だと思う。当時も今も。
団結力が高まるから、敵がいたほうがいいんだよ
ML で団結ってなに? なにに対して団結するの? 団結しないから最近は閑散としてるの?
ざっとみてきたが、pcode氏、技術はたしかにあるみたいだなぁ〜 今のMLで復活したら、活性化されて面白くなりそう
技術のある電波ってところだよね。
むかーし、電波技術って雑誌があったなー
馬鹿と天才は紙一重 ってよく言ったものだ
>>244 ただの技術ありそうな電波。天才は無関係。
ただの馬鹿より技術馬鹿の方がちょびっとだけマシか。
馬鹿と電波は違うぞ。
ねたんで、そねんで うらやみ やっかんで ひがむ。 そんなのが渦巻いてるスレですね。
そうそう、なにしろ上級者スレですから 248 が一番渦巻いてるがな
え〜料理の世界に五味、五色、五法というものがございます。 五味とは甘い、辛い、酸っぱい、苦い、塩辛い 五色とは赤、白、緑、黄、黒 五法とは生、煮る、焼く、揚げる、蒸す さて、人間にも ゴミ がありまして、それは、 そねみ,ねたみ,うらやみ,やっかみ,ひがみ
あと、「わざわざかきこみ」っていうのもあるな
253 :
デフォルトの名無しさん :04/03/17 08:48
助けて上級の人。 Windows 2003 serverにMultilingual Interface Pack日本語を被せて、 Delphiで作成したアプリを実行しました。 メニューやポップアップメニューで、 ショートカットキー(ファイル&Fの"&F"みたいなやつ)付けてないキャプションの 先頭文字が化けまつ。 どうすれば対処出来るんでしょう。
MainMenu/PopupMenu の AUtoHotkeys を False に
thanx
>>254 AutoHotkeysがフォントを間違ってHotkeysを付けてるということですか。
Windowsが間違えてるのか、VCLが間違えてるのか、日本語として処理されてないということかぁ。
「日本語として処理されてない」 ですね。とんでもないところに & を自動挿入しているのでしょう。 ユーザーロケールとシステムロケールは何をお使い? あと Delphi のバージョンは?
会社で使うアプリをDelphiで作っているのでMLログ参照したりしてます ちょっと躓いた部分があったのでMLログを見てたらpcode氏のサンプル がありました pcode氏のサンプルはすごいなって思ったり 職業delphi使いって感じがして 復活して欲しいな
さくら電波?
東京は明日が開花予想日。だけどすこしずれそう。
正直、上級スレが一番程度が低い
いまごろなにを? ネタスレなんだし。 上級者なんていないだろ。いても来ないし。 自称上級者なんてこんなもの。
ちょっと問題。 constructor TLanguages.Create; var Callback: TCallbackThunk; begin inherited Create; Callback.POPEDX := $5A; <---実行コードを動的に作成して Callback.MOVEAX := $B8; Callback.SelfPtr := Self; Callback.PUSHEAX := $50; Callback.PUSHEDX := $52; Callback.JMP := $E9; Callback.JmpOffset := Integer(@TLanguages.LocalesCallback) - Integer(@Callback.JMP) - 5; <--メソッドへジャンプしてる。 EnumSystemLocales(TFNLocaleEnumProc(@Callback), LCID_SUPPORTED); end; この部分、CallBackをポインタ型にして、VirtualAllocで確保して実行フラグを付けて実行させるように変更しとかないとマズイね
TLanguages ってどんなときに使うの?
言語選択のダイアログを作るような時使うんだろうけど どっちにしても国際化対応するなら、対応国決めてしまうから、あんまり意味ないんだろうな・・・
266 :
デフォルトの名無しさん :04/04/02 13:11
言語選択のメニュー作りたいんですが、 国旗アイコンメニュー無いですか? アイコンだけでもあれば自作だけど。
国旗は国が苦労して考え出した独創的な物。 つまり国に著作権があります。 ですので勝手に使うことは出来ません。 各国に許可を取りましょう。きっとそのときアイコンも入手できるはずです。
Mozillaのソースからパクれ
パクルなよ。ちゃんと著作権があるからな。
いや、もう面白くないってば > 270
疑問なんだが、「どっからどこまでがパクリ」なんだろう? TIPSだとかFAQレベルってのは、そのまんま使い回してるでしょ? 上級じゃない書き込みでスマンが、純粋に疑問なので。
漏れの独断と偏見による判断 コードサンプルとして置いてあったりするものは自由 ソフトウェアの根幹に関わる部分が他人が書いたコードならパクり
>>273 うーん。そんな感じだよね。
自由かどうかはちょっと分からないけど(まぁ、断ることはしないだろうから、
結局同じではあるが…)。
※関係無いけど、某所での注釈「(この文章を)PCに無断で保存することを
禁ずる」みたいなことが書いてあったのにはビックリした。
保存もダメかよ!
転載なんてのは言語道断だが、保存くれー許してもいいんじゃないかと思った。
猫でもわかるプログラミング?
>>274 保存されたくなかったらわざわざネットで公開するなよ、て言ってやれ。
「HP見るだけでIEのキャッシュに溜まってしまうんで見たらいけないというですか?」 って屁理屈こねてやれ
それいい。
>>277 まったく同感。公開したHPの内容について著作権を主張するのは当たり前だとしても
リンクする場所の制限したり、印刷するな、とか、コピーするな、保存するな、とか
を主張するなら、そもそも公開するな、と言いたくなる。
まあ、あそこはさぁ 一応シェアウェアとしてvectorなんかに登録してるし 真面目にお金払ってる人もいると思うから。 そういう人へのケアの意味で、 建前だけでも保存禁止にしておかないと、という考えなんじゃないのかな。
> 一応シェアウェアとしてvectorなんかに登録してるし これDLしたことないんだけど、内容は公開してるHPのと同じなの? だとしたら、シェアウェアにしたこと自体が間違いでしょう。
で差分は公開してないの? ふーん。
よーし、パパGetHTMLでGetしてWin(ry
つーか、意味無いんだから<保存するな 意味無いことを堂々と書いてるのが不思議。 「はい!保存しません!」って人がどのくらいいるのか。 本気で書いてるのかなぁ?
だってこのスレ的に関係ない話だし。
>>287 いや、「保存するなって書いてる人」宛てであって。
ぬるぼ
ガッ
カ゜ッ
やれやれです(^-^;
XP に興味ありな今日この頃です。 DUnit を導入し使い方は、だいたいわかってきました。 やっぱり具体例がないとどう応用していいのかわからないので、 データベースプログラム(できれば売上管理ソフト)のテストにDUnit 使った例があったら教えてください。 (まぁ、2つほど前のスレで、DUnitに関する質問で、 いっこうにレスがつかなかったので、 このスレの住人はあまりDUnitに関心がないようですが・・・)
>>293 >あまりDUnitに関心がないようですが・
んなことないけど。
ただ、DUnit は魔法のツールではないから。単なるテスト。
テスト内容はアプリによって異なるし、人によっても異なる。
応用ではなく、ツール/部品としてみなすべきで、そのためには何をテストするのか
使う人(コードを書いている人)がはっきり認識していないとね
>>293 xUnitは関数・手続き・メソッドレベルのテストであって
データベースには使かないような。
こうあるべきというデータベースを用意して
処理後のデータベースと比較するテストをすればいいんじゃないの。
BDEのSQLって副問い合わせを使えるところが限られるみたいなんですが、 Type No Name 甲 1 A 甲 2 B 甲 3 C 乙 1 D 乙 2 E ってテーブルがある時に、 甲 A他2名 乙 D他1名 って結果が欲しい時ってどうすればいいんでしょうか? select Type from テーブル where No=1 と select Type,count(*) from テーブル group by Type を結合したいんですけども。 Oracle(9i以降限定みたいですが)だと副問い合わせでくっつけられるんですけど、 BDE で使えるSQLだと無理みたいです(ぼくが無知なだけかもしれませんが)。 結果格納用のテーブルを作成して、どちらかのクエリの結果をそこに保存する やりかたしかないのでしょうか?
ひとつめのクエリは select Type,Name from テーブル where No=1 のアヤマリでした。すいません。
>>297 こんな感じでどうかな?
select x.Type, count(*), y.Name from テーブル x, テーブル y
where x.Type = y.Type and y."No"=1
group by x.Type, y.Name
できました!! from句に同じテーブル2回かけるんですねぇ・・・。 知りませんでした。勉強になりました。 ありがとうございました。
顧客ID, 金額, 売上月 というフィールドがあるテーブルで、ACCESSで言うクロス集計をしたいと思います。 4月 5月 6月 7月 8月 ・・・・ 顧客A xxx円 xxx円 顧客B 顧客C って感じにしたいのですが、BDEでどうかいたらいいかわかりません。 とりあえず、4・5月分だけ練習で書いてみました。 >select > T.CustID, T4.Price April , T5.Price May >from > Customers T left join Bills T4 on T.CustID = T4.CustID left join Bills T5 on T.CustID = T5.CustID >where > (T4."Month" = 4 or T4."Month" is null) and > (T5."Month" = 5 or T5."Month" is null) しかしこれだと、5月だけ売上がある会社は消えてしまって思い通りの結果になりません。 月ごとにテンポラリテーブルをつくればいいんでしょうけど、それは煩雑なので、 それ意外になにか解決策はないでしょうか?
とりあえず保守書き込み
303 :
デフォルトの名無しさん :04/06/21 01:56
このスレなんのためにあるの? 質問がある人は中級スレに書くがよろしい。 ここは人がいない。
>>303 低級者にはこのスレの意義が分からないだろ。中級スレへお帰り
上級者は5人しかいないんだよ。
>>304 自分の言ってることが、可笑しいことに
気づいてないんだろうか・・・。
まじレスのほうが可笑しい・・・・
308 :
デフォルトの名無しさん :04/07/10 11:21
再利用はスレタイがじゃまして失敗!
age
311 :
デフォルトの名無しさん :04/07/12 22:51
Delphiって共産党みたいだな。 もうすぐジリ貧であぼーん
Delphi-MLで聞けばいいんじゃね?
>>311 共産党員をなめるなよ。ゲパルトかけられるぞ。
学会員だって、元真言宗の武闘派でしょ?
いつから赤vs草加スレになった?
ゲパルトってドイツの対空車輌だよね。 そしてナチスは反共。
初心者 or 中級者がないのでここで質問します・・・ インターネットオプションの設定内容を取得したいのですけど どうすればいいか解りますか? Netを漁ってみたがうまくhitしないもんで・・・ 知りたいのはプロキシ情報なんですけど。
本当に設定を取得しないといけないの? 単にプロキシの設定を利用して接続するだけならWinInetのオプション指定するだけなんだけど。
>>318 同じ設定で動かしたいんです・・・
設定すれば動くようにはできてるんですが、
環境に左右されたくないもので。
317ではシステムの設定を取得したいといい 319では環境とは無関係に独自のプロキシを設定したいといっていて よく分からないんだけど システムの情報を取るだけなら HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings のProxyServerあたり
>>320 すいません、わかりづらかったですね。
作っているアプリの環境設定にプロキシの項目があります。
自前で情報をもつのではなく、IEで使っている(インターネットオプションの設定内容)
で動作させたいのです。
>>320 レジストリに情報ありました。ありがとう。
InternetGetOption
324 :
デフォルトの名無しさん :04/07/15 01:03
TListViewのvsReport形式についての質問です。 ListViewの上の部分にでてくるTHeaderControlのような部分について 各ヘッダーがおかれている場所の座標を取ることはできないでしょうか? ちょっと説明しにくいのですがTHeaderContorlにてできる R.left := HeaderCtrl.Sections.Items[3].Left+3; R.right := HeaderCtrl.Sections.Items[3].Right-5; のような情報をTListViewで取得したいのです。 よろしくお願いいたします
n-1 ΣColumns[i].Width でいいと思う i=0
>>324 一つ一つの幅は、ListView1.Column[0].Width で判るみたいだから、
後は計算で、座標に変換、かな?
>>327 THeaderControl も内部でそうやって計算してるみたいだけど。
高さも必要なら↓
function GetListHeaderHeight(ListView: TListView): Integer;
var
Handle: HWND;
Rect: TRect;
begin
Result := 0;
Handle := GetWindow(ListView.Handle, GW_CHILD);
if (Handle <> 0) and Windows.GetClientRect(Handle, Rect) then
Result := Rect.Bottom;
end;
>>328 なるほどなるほど
どうもありがとうございます!
330 :
デフォルトの名無しさん :04/07/15 09:31
TControl.Topから、Formの絶対座標のTopを取りたいんですが、教えてください。
ClientOrigin
みんな罫線の多い帳票を作る時は、どうやって作ってるの? QuickReport で罫線はマンドクさいし、LightReport は使い方が よくわかんねぇよ!! でも、仕事でやるハメになってしまいました(ハァ) 言語は Delphi6 です。
333 :
お願い 教えて :04/07/15 10:06
かかってきた電話を どの電話番号宛てなのかをPC画面上に 表示してくれる「CTI」システムのような ソフトは作れるでしょうか?
334 :
デフォルトの名無しさん :04/07/15 10:09
いつになったら俺が答える気になるような 上級者向けの質問がくるんだ?
くだすれでなく、こっちに質問書いているということは、上級者向け質問と 思っているのかね。
>>334 TComboBox(csDropDown)の高さ(Height)を変える方法をお願いします。
ここはレベルの高いインターナッツですね
ここは上級者が答えてくれる質問板だろ? つまり>328は上級者でも>330-338は上級者とは限らない
へー、じゃあみんなここで聞いたほうがいいな。
UNIXのように自分に必要なリソースを最低限だけ取ろうっていう思想はWINユーザーには全くないのか?
>>340 Win2kを使い始めた頃からそういう意識はなくなりました。
こことあのバカスレとほぼ連続して書き込みがあるのは何でだろ
>>334 では上級者向けの質問を。
海の水はどうしてですか?
>>336 俺は334では無いが、その質問は、フォントのサイズを変える、なんて回答でもいいのか?
>>336 はかなり上級者向けかもね。
フォントを維持したいなら多分次の手順でいけると思う。
元のフォントを複製する。
フォントのサイズを変える。
編集部分のフォントを戻すために EditHandle に WM_SETFONT を送る。
リスト部分をオーナー描画できるようにするため GetWindowLong で
ウィンドウスタイルに CBS_OWNERDRAWFIXED を加える。
WindowProc を付け替えてサブクラス化する。
新しいウィンドウプロシージャで CN_MEASUREITEM と CN_DRAWITEM を
処理してリスト部分を元のフォントで描画する。
フォームの直下に乗っていれば WM_MEASUREITEM と WM_DRAWITEM が
フォームの WndProc を回るのでサブクラス化する必要はない。
×GetWindowLong ○SetWindowLong
ここには、QuickReport や LightReport を 使いこなしてる方はいないってことはわかりました。
352 :
デフォルトの名無しさん :04/07/16 00:06
もしかして
>>332 ですか?
仕事に必要で付属やフリーのレポートツールに満足できなきゃ商用のレポートツール買うしかないでしょ。
使いこなしてるとかの問題じゃない。
>>352 ここまで日本語読めない人ひさしぶりに見た。
354 :
デフォルトの名無しさん :04/07/16 13:40
他のアプリが印刷した情報(枚数など)を取得する方法を教えて下さい。
>>354 他のアプリがどういうふうにその情報を記憶してるのか
わからないと答えようが無いじゃん。
>>355 分からないなら黙っててください。レスが流れてしまうので迷惑です。
>>354 他のアプリがどういうふうにその情報を記憶してるのかわからないと答えようがありません。
一般的には無理。
>>357 分からないなら黙っててください。レスが流れてしまうので迷惑です。
>>354 他のアプリが印刷した情報を書き出したファイルを読み込めばいいじゃん
>>359 分からないなら黙っててください。レスが流れてしまうので迷惑です。
> 他のアプリが印刷した情報(枚数など)を取得する方法を教えて下さい。 スキャナで取り込む
Delphi相談室(中級者用)は死亡でつか?
前スレの終了(1000)にあたってこのスレを再利用しようと言うことになりましたです.
> 他のアプリが印刷した情報(枚数など)を取得する方法を教えて下さい。 しかたない、答えてやろう。 プリンターポートを常に監視してデータがきたらそのデータを読み取ってプリンターエミュレーターでも作って その中で印刷枚数を数えればよい。 汎用性?しらん
皆様、ありがとうございました。やはりだめですか・・・ スプーラーの情報には印刷枚数があるので、 これを何とか取得できないかと思いましたので・・・ メッセンジャーのポップアップのテキストから印字バイト数を 取得するのはできたのですが、これから枚数を予想するのは 無理がありますし・・・。
./l ,-, ,-, /i l y'- `‐‐'‐-i, l i l l ’ ι ’ l 保守。 l j l キ iフ メ l i l  ̄l ̄l ̄` (二)、_,./ `-‐‐‐-、,.-, liiil`‐-‐'i,/ / l___,3 .l-‐' (二)二二/‐‐,-,-‐,‐' "" l / l l __l l ヽヽ `‐ ' `"
相手のプロセスに侵入して、印刷関係のAPI(EndPageとか)へのエントリポイントを書き換えて 自前のルーチンをはさむようにして、そこで改頁の数を数えるというのは?
ここは厨房度も最上級なスレですね
>>368 私の力では、そこまでは、とても・・・;;
タスクトレイにプリンタのアイコンが出たら、それをダブルクリックしたことにして 開いたエクスプローラの SysListView32 から取り出したらどうですか。
371>> それが、アイコンは一瞬で消えるので、うまくいくかどうか・・・
というかDelphiとは全く関係の無い質問ですね
というかDelphiでいかに解決するかということです
じゃ、Delphi 以外で実現しているソフトが存在するのか?というところから始めようか。
やり方知ってるから答えてやっても良いが、358, 360 で荒らしたのはおまえか >> 354
基本的にはプリンタの情報表示ウィンドウを自作することになる。 注意しなければいけないのは、アプリが何枚出したかったのか、ではなくプリンタ側が 受け取ったページの量しか取れない。ほとんどの場合一致するが。 それと Win9x 系と NT 系、および XP 以前と以降で API や通告メッセージの仕様が変わっている。 この部分はアプリより OS よりの機能のため、OS ごとに微妙に動作が異なる。 既存のすべての OS で動かそうとするには結構努力が必要なのでがんばること。
スプーラーを通さずに印刷するプリンタがある場合にはもうどうしようもないが、 Windows ではまず考えなくても良いだろうから NT でのスプーラーサービスのことを考えます。 98 のことはあとで自分で調べてくれ。 NT のスプーラーは system32 の sppolss.dll (スプールサービス?) と spoolsv.exe の組で 動いています。こいつらがスプーラーの本体。 プリンタ情報ウィンドウはこれらから情報を取得して表示しているだけだ。
鍵となるのは WM_SPOOLERSTATUS メッセージ。 誰かがプリントジョブを追加するとこのメッセージがやってきますから、EnumJobs で新しい 印刷ジョブを見つけ、その情報を取得。
376さんありがとうございます。 WM_SPOOLERSTATUS を検索してみたら以下のコードが見つかりました。 今、自宅なので試せないのですが、休み明けにやってみようと思います。 枚数がこれで取得できれば嬉しいのですが・・・。 なお、358,360は私ではありません(もう四十路なので荒らしなどは・・・)。 type TyourForm = class(TForm) private { Private declarations } procedure WMSpoolerStatus(var Msg: TWMSpoolerStatus); message WM_SPOOLERSTATUS; public { Public declarations } end; implementation {$R *.DFM} procedure TyourForm.WMSpoolerStatus(var Msg: TWMSpoolerStatus); begin ShowMessage('Now in the spooler a ' + IntToStr(msg.JobsLeft) + ' jobs'; msg.Result := 0; end;
結局Delphiとは全く関係ないじゃん
382 :
デフォルトの名無しさん :04/07/18 11:43
枯れ木も山の賑わいです。
ポインタを配列みたいに使いたいんで type TIntArray = array[0..0] of integer; PIntArray = ^TIntArray; とかやるのって問題ある?
>>385 問題ない、むしろ動的配列が実装される前は、それが普通のテクニックだった
…が、{$R+}状態も考慮するなら、
array[0..High(Integer) div SizeOf(Integer)] of Integer
とかのほうがいいかな
散々外出の上にまちがっとるな
High(Integer)が$7fffffffで最初から2Gには1少ないんだから、あっちのスレの-1に意味は無いんでは?
その上妄想かよ
妄想はどっちだ。試してみろ 本当はどちらも間違ってて 0 .. (2G = $80000000 div SizeOf(T)) - 1 とすべきだが High(Integer) = $7fffffff を使うなら、1少ない分端数がdiv SizeOf(Integer) = 4 で切り捨てられて $1fffffffになって、添え字に0を含めるので+1して$20000000になって、 配列全体のサイズはまた*4して2Gジャストだ。-1は不要。
また妄想かよ コード晒してみ
馬鹿の粘着か。 妄想って言いたいだけちゃうんかと小一時間… コード晒すも何も型宣言が通るかどうかだけだろ。一行だし。
394 :
デフォルトの名無しさん :04/07/25 11:58
ここが中級車スレに戻る日は永久にこないのかな・・・・ age
395 :
デフォルトの名無しさん :04/07/25 20:42
中級者スレが見当たらないのでこちらに書き込ませていただきます。 BitmapImg: array [0..30] of TBitmap; 上記の配列をfor文でCreate()し、その後、for文でループさせて 30枚の24ビットのビットマップ画像を読み込んでいるのですが 何故かWindows98/Meで実行するとPCがフリーズしてしまいます。 Windows2000/XPでは正常に動作します。 TBitmapを普通に使っているだけなので、何処に問題があるのか 分かりません。ステップ実行で追ってみたのですが LoadFromFile()で読み込んでいる最中にPCがフリーズしてしまい 例外も拾えません。 何か情報ありましたらアドバイスお願いします。
システムリソースを食い尽くしてるのかな? 30枚程度でというのは、少々考え難いけど。 リソースモニタを表示しながら、もう一回 トレースしてみて。 ついでに、ビットマップのサイズは?
9x系だと画像のサイズとか色々制限がきつかった記憶があるが…
>>396 トレースしようにもいきなり
フリーズしてしまうので、出来なさそうです。
フリーズするタイミングですが、必ずfor文の2ループ目に
この現象が起こります。
>>397 画像サイズに関して色々と試してみたのですが
1枚あたり5KBの画像でも、1枚あたり200KBの画像でも
必ず同じ場所(for文2ループ目)でフリーズしてしまいます。
とりあえずGDIリソース見ようぜ
>>399 GDIリソース見てみました。
大体59%くらい残っているのですが
いきなりPCがフリーズします。
試しに8ビットのビットマップにしてみたら
フリーズせずに無事読めるようになりました。
しかし、使いたいのは24ビット画像なので
原因が分からないのは非常に困ります…
var BitmapImg: array [0..30] of TBitmap; i1,i2:Integer; begin for i1 := 0 to 30 do BitmapImg[i1] := TBitmap.Create; For i1 := 0 to 30 do BitmapImg[i1].LoadFromFile(IntToStr(i1) + '.bmp'); For i1 := 0 to 30 do Image1.Canvas.Draw(0,0,BitmapImg[i1]); For i1 := 0 to 30 do BitmapImg[i1].Free; end; 俺のWin98環境では、このコードで1600x1200x24の ビットマップを読ませても、何とも無いけど。
402 :
デフォルトの名無しさん :04/07/26 04:25
Delphi超初心者スレより画像処理スレへと誘導されたのだですが上級者様のスレなら
お答えしていただける方お思いこちらへと移動してまいりました
ある画像(bmp)ファイルを入力し その画像の中から新円もしくは楕円に近い軌跡を描く線のみを抽出して
別画像ファイルとして 出力するということを考えているのですが
その画像ファイル内には他にも多くの直線部分や、塗りつぶし部分などが含まれているため
曲線部分のみの抽出方法をどうしたらいいのか悩んでおります。
http://www.eyescan.tv/images/me001.jpg たとえばこのような画像を入力した場合ある程度のフィルタ処理をした後
データ-ベース上にある登録された個人との 照合をしある程度以上の適合率が出た場合は
OKサインを出すといった手法で考えております。
ファイルタ処理は完全に白黒レベルまで虹彩と書いてある目の外側にある放射線状に延びている多くの線は残した状態にまで
フィルタをかけデータベース上にある画像ファイルの一番外側の楕円軌道と入力画像の大外の楕円軌道が一致するよう
拡大縮小処理をした後にその2画像の適合率のようなものを出したいと考えています。
上記のような入力画像ファイルの中から曲線部分の抽出することを考えた場合どのような手法が考えられるでしょうか?
Delphiとは無関係のような
404 :
デフォルトの名無しさん :04/07/26 04:39
Delphiでbmp画像の処理というのは出来ないものなのでしょうか? 他の言語にはめっぽう疎いものでこちらで質問させていただいたのですが 他の言語を組みこむ?という形になるのでしょうか? そういう場合はどういった流れらになるのか教えていただけないでしょうか?
0..30 で30枚と言ってるのが怪しい。 他にも勘違いがあるのでは? 2ループ目って事は、i1=1の時?
>Delphiでbmp画像の処理というのは出来ないものなのでしょうか? できるです。でも質問の内容は、それ以前のアルゴリズム的な内容かと。
せっかく画像処理スレを紹介したのに、 なぜここに書くかなぁ…
409 :
デフォルトの名無しさん :04/07/26 11:59
中級スレ向けなのかもしれませんが、質問です。 最近のエクスプローラのように、"ツールバーを固定する"ことは、 Coolbarを使って簡単にはできないのでしょうか?
>>395 ウィンドウズを巻き込んでクラッシュするなら、
ポインタや添え字のミスでスタックやヒープを壊しているか、
初期化忘れやFreeした後のオブジェクトを操作している気がするな。
>>410 うーん。それは順番が変更できないだけ..
SendMessageでスタイルを設定すればできそうなのはわかりましたが、
ちょっと試しただけじゃ動かないなぁ。
シェブロンも対応大変そうだし、素直にToolBar2000かなにか試してみるかな。
413 :
デフォルトの名無しさん :04/07/28 22:44
設計時にコンポーネントから、実行ファイル名を取得したいんですが、 何か方法はありませんか? Application.ExeNameでは'DELPHI32.EXE'が返ってきてしまいます。 どなたか知恵をお貸しください。
>>413 あ、もしかして
Paramstr(0)
のこと?
>>413 OpenToolsApiとか使えばいいんじゃないの
> 設計時にコンポーネントから、実行ファイル名を取得したいんですが まだセーブしてないかもしれないし、コンパイルさえ一度もしてないかもしれないし 設計時に実行ファイル名を知る必要なんか思いつかないが。
>>417 プロジェクトの設定とプロジェクトファイルのパスが取得できれば分かるだろ。
> プロジェクトファイルのパスが取得できれば分かるだろ。 だからセーブする前にそのコンポ貼り付けたらどうするのよ?
コンポーネントはコンパイルする前にも貼り付けられる。
>>417 を読んでないの?
> 設計時に実行ファイル名を知る必要なんか思いつかないが。
なぁ、
>>413 は何がしたくて、設計時にまだないかもしれない実行ファイル名が
知りたいの?
コンポーネントのコード内で、今設計時か実行時か知ることができることを
>>413 は知らないのでは?
お前らもくだスレに帰れよ
∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)<
>>425 オマエモナー
( ) \_____
| | |
(__)_)
427 :
デフォルトの名無しさん :04/07/30 00:08
>422 設計時にコンポーネントを貼り付けて、 オブジェクトインスペクタでファイルバージョン等を 管理をしたかったんです。 コンパイル後の設計画面でもかまいません。
そりゃリソースエディタの役割だろ。 外部ツールで.resファイル編集しとけ。
とりあえず、設計時にファイルバージョン等を 取得して、いろいろやってみたかったんです。 無理っぽいので挫折します。
>409 こんなんでよければ... 1.FormのAutoScrollをFalseに設定 2.ScrollBarを2つ貼る Kind=sbHorizontal、Align=alBottom Kind=sbVertica、Align=alRight 3.ToolbarとPanel1を貼る。Panel1のAlignをalCliantに変更 4.Panel1にPanel2を貼る。Panel2を想定する最大サイズに変更 TopとLeftは0に設定 Anchorsを全てTrueに設定。BevelOuterをbvNoneに設定 5.FormのOnShowイベントでScrollBarの最大値を設定 ScrollBar1.Max := Panel2.Width; ScrollBar2.Max := Panel2.Height; 6.2つのScrollBarのOnChangeイベントでPanelのTopとLeftを操作 sbHorizontalの方で、Panel2.Left := - ScrollBar1.Position; sbVerticaの方で、Panel2.Top := - ScrollBar2.Position;
431 :
デフォルトの名無しさん :04/07/30 21:21
自作のアプリで出力したjpgファイルを、通常使う設定になってるメーラーに添付して メール作成画面を開くにはどうしたらいいですか? MAPIに対応したメーラーに対しては、そういったことが可能らしいのですが・・・
Delphi固有の質問じゃないならこんな糞スレに頼るなよ
434 :
デフォルトの名無しさん :04/08/03 00:19
中級スレかもしれませんが、ここで質問させていただきます。 C言語で書かれたプログラムをユニットとしてDelphiに組み入れる ことは可能なのでしょうか? それとも、おとなしくDelphiに書き換えなければならないのでしょうか?
C++Builder でコンパイルされた Objファイル はリンク可能。 Jpeg.pas はそうやってリンクしてるよ。
436 :
デフォルトの名無しさん :04/08/03 08:37
>>435 やっぱ、宣言は__fastcallとか、引数に使えるものとか決まってんだよね。
詳細はどこに記載されてまつか?
シェルのコンテキストメニューに独自のメニュー加えたいんだけど、 良いサンプルないかな?DLLを作る必要があるようなんだけど。 それらしいものがsampleフォルダにあったり、Webにもあったりしたけど、 どれもエラーが起きたり、まともに動かなかった…
BC++5.5じゃだめ?
>>436 ヘルプのキーワード 'external 宣言' の 'オブジェクトファイルのリンク'
かなり不親切な説明しかないけど、実際には次のような感じ。
interface 部にインポートする関数の宣言を書く。
これは C++ 側で宣言されたものをそのまま Delphi 言語に翻訳する。
特に呼び出し規約に注意すること。
指定なし → 普通は cdecl
__fastcall → register
__stdcall, WINAPI, PASCAL → stdcall
implementation 部の冒頭に {$L ファイル名.obj} を入れる。
各関数の実装部は begin 〜 end; の代わりに external; と書く。
>>438 解らない。
C++Builder ver 1 は大丈夫だったから、
それより新しいC++コンパイラなら大丈夫だと思う。
フォームから別のフォームをShowした時に 呼び出したフォームの中央に表示したいのですけどどうやればいいのか教えてください。 呼び出され側のPositionプロパティはpoOwnerFormCenterにしてあります メインフォームから呼ばれたときはちゃんと中央に表示されます・・・ その他のフォームから呼び出してもメインフォームの中央になってしまします。 Owner?を指定すればいいようなのですが・・・やり方がわかりません。 そもそも、フォームのOwnerはいつきまるのでしょう?
>>441 Position は poDesigned にしておいて Show を呼ぶ前に
Left と Top を設定する。
Owner はコンストラクタ Create の引数 AOwner で決まる。
自動作成の場合は Application グローバル変数。
>>442 ありがとうです、やはり poDesigned で位置指定ですか・・・
もう一つ質問です PopUpMenu を表示した親を知りたいのですがどうすればいいですか? PopUpMenu のイベント(Click)で親コンポーネントのTAGの情報を知りたいのです。 (Sender as TComponent).Owner.??? で取得してもフォームの情報のようです・・・ 同じPopUpMenu を複数のコンポーネントで使いたいのです。
>>444 AutoPopup で開いた場合は PopupComponent。
コードで開く場合は、PopupComponent を設定してから Popup を呼べばいい。
Owner は単にコンポーネントを解放するコンポーネント。
Create でコンポーネントを作成すると AOwner の Components の List に
作成したコンポーネントが追加される。
Owner が廃棄されると List が廃棄され、その項目も廃棄される。
間違えた。 TMenuItem からなら GetParentMenu を呼んでメニューを取得。 それが TPopupMenu なら、その PopupComponent プロパティを見る。
>>444 最近の上級者ってレベル低いんですねぇ。
>>448 いまはここを埋めようとしてるんじゃ無かったっけ?
中・低級者もここを使えっていってなかったか?
そもそも上級な質問など無い
質問です。 子ウィンドウをタスクバーに表示することはCreateParamsをoverride することで対応できたのですが・・・ メインのウインドウに対応するタスクバーをクリックしても 子ウィンドウが反応してしまい、メインをアクティブできませんどうしたら 良いのか教えて下さい。
>>451 親子関係にあるとそうなってしまう希ガス
兄弟関係じゃあかんの?
>>451 メインのウィンドウに対応するタスクバーは Application でしょ。
Application.MainForm が本当にメインのウィンドウに対応しているか
どうか確認してみたら?
>>452 兄弟でもいいけど・・・それって親もCreateParamsをoverrideということでしょうか?
そうすると、親の表示が2つになってしまう・・・(消し方が解りません)
>>453 たぶん違っていると思う、確認してみます。
変更できればいいんだけど・・・
456 :
デフォルトの名無しさん :04/08/11 09:37
parent-child と owner-owned の関係が混同されているのはよくあることだな
>>455 FormActivate で Application.MainForm.Handl 確認してみましたが同じ値でした。
仕方がないので、親もCreateParamsをoverrideして
表示しているウィンドウ+1の状態にしています・・・
どなたか解決の方法を知りませんか?
そもそも何でそんなことしたいの? タスクバーから Application ウィンドウを消して不都合なく動作させるのは大変。 MLでたくさん議論されている。
460 :
デフォルトの名無しさん :04/08/11 18:48
aa\a.txt aa\bb\c.txt aa\bb\d.txt aa\ee\f.txt aa\ee\gg\h.txt ↑このような感じの任意のフォルダを起点としたファイル名が記載されたテキストがあります。 で、このテキストを読み込んで、このツリー構造をTTreeViewとTListViewで表現したいと思ってます。 テキストはもちろん読み込めるんですが、その後のツリー構造の解析と、それをTTreeViewとTListViewに 落とし込む方法がわかりません。どなたかご教授ください。お願いします。
初心者スレじゃないんだからもっと具体的にどこまでできていて どこでつまってるかを書きなさい。それとも丸投げしたいのか?
>>461 初心者が妄想してみました。
テキストのフルパスを得る。
フルパスから任意のフォルダまでのパスを削除。
残りを、\ ごとに分解して、順番にツリーに登録していく。
もしすでに登録済みだった場合は、登録せずにノードを移動するだけ。
パスの最後まで繰り返す。
これを、全部のファイル分繰り返す。
こんな感じでどうかと。初心者が思いついた妄想なので、実際に正しく動くかどうかは
わかりません。もっといい方法があるかも、しれません。
>>459 普通に複数ウインドを表示していて切り替えたいだけなんですが・・・
画面サイズいっぱいのウインドが一つあるので、他のは下になるから。
>>462 すみません。ほとんど自分は初心者なんですが、
まず、あとから使いやすいように、ツリー構造をメモリに読み込んでおくんだと思うんですが、
そのツリー構造をどのように保存しておけばいいかわかりません。
ツリーの解析と、それを何型に保存するのか、がわかりません。よろしくどうぞ。
( つД`) 初心者スレの方がよかったねたぶん
223 名前:名無し~3.EXE[sage] 投稿日:04/08/11 22:14 ID:UFKHXgd0
>>113 ja_winxp_sp2.iso
CRC16:6A0B
CRC32:FFFFFFFF
MD5:35CB1233E6D8C6B7630A216B6AA75892
CRC32がオールFすげぇ…
>>459 お薦めの delphi MLを教えていただけませんか?
>>467 末尾にゴミ埋めたりすればCRC32を自由に操作するのは簡単だよね。
MD5だと一部を除き難しいんだけどね。
最近のMSはCRC32をオールFにする傾向がある 覚えやすいからか?
>>465 >463は読んでない?( つД`)
というか、461=465 でいいんだよね? それを前提に書くけど…
>まず、あとから使いやすいように、ツリー構造をメモリに読み込んでおくんだと思うんですが、
これってどういう意味…?
読み込んでおくんだと思う、って、誰が何を…?
>そのツリー構造をどのように保存しておけばいいかわかりません。
>ツリーの解析と、それを何型に保存するのか、がわかりません。よろしくどうぞ。
ファイルにツリー構造を保存したい、ってことだよね?
ファイルに保存するための決まった形式ってのは無いと思うから、
自分が使いたいだけなら、自分で使いやすいように好きに決めていいと思うよ。
ツリーの構造だけを保存したいのなら、>461に書いてある、\で区切られた文字列の列を
テキストで書き出すだけでも保存できる。
それを読み込むのは>463の手順で、書き出すのは、ツリーを辿りながら、テキストに変換。
ツリー構造を辿るには、「再帰」ってのを使うと簡単にできるようになる。
>>473 ありがとう、試してないけどメイン非表示で最初のウインドを表示すればいいのか・・・
なんか、コロンブスの・・・かなぁ
>なんか、コロンブスの・・・かなぁ いや、このTipsはけっこう巧妙にできてるよ。VCLのForm間の関係と Windowsの作法に精通してないと、こうは書けないものだよ
>>465 TTreeView 自体が TreeNodes プロパティにツリー構造を
持ってるので、わざわざ実装しなくてもいい。
TListView との連携は TTreeNode にある Data プロパティを
活用するといい。Data は Pointer だけど任意のオブジェクトを
入れることもできるので、TreeView の選択を変更するたびに
ListView の状態をそのオブジェクトに保存/復元をする。
ファイル名だけなら保存先は TStringList あたりでいいと思う。
TListItem の方にも Data プロパティがあるので、これもうまく
利用すると相互に関連づけを行うことができる。
ただし、動的に生成したオブジェクトはちゃんと廃棄すること。
>>475 >Windowsの作法に精通してないと、こうは書けないものだよ
俺が書けるかと言われれば・・・だけど、メインを消してしまえという発送が・・・
> だけど、メインを消してしまえという発送が・・・ Delphi の VCLアプリで、複数のフォームがある場合、MainForm だけを特別 扱いしているんです。ですから、すべてのフォームを同等に扱うためには、まず、 MainForm だけを使わないようにしよう、というのはかなり自然な発想だと思うよ。
>>465 ただ単にツリーを保存するだけならTTreeViewのSaveToFileもあるよ
たとえスレッド内ローカルなオブジェクトであっても VCLオブジェクトにアクセスする時はSynchronizeメソッドで同期をとってからアクセ スしたほうが安全です。 って聞いたんですけど、これって本当にそうなのですか? TThreadから派生したクラス内で動的に確保したTList等にアクセスするのにもSynchronizeメソッド を利用しないといけないのですか?
しなくていい、っていうかしてはだめ。
>>480 そのTListのインスタンスが自分で生成したもので、
なおかつTThreadから派生したクラスがアクセスするのと同時に
メインスレッドからアクセスしないことを保証できるならSynchronizeなしでもアクセス可能。
> メインスレッドからアクセスしないことを保証できるならSynchronizeなしでもアクセス可能。 こういう場合は、アクセス可能というより、Synchronizeなしの方がいいでしょ。
中級者スレが見あたらないのでこちらへ・・・ DelphiでCADソフトを作りたいのですが .DWG .DFX .JWC 等々のファイルフォーマットの形式を 詳しく解説しているサイトなど、ご存じの方又はCADソフトの開発に携わった方いらっしゃいましたら ご教授頂けないでしょうか?
CAD板池
スンマセン(´д`;)ドコ? ビジネスsoftの所ですかね・・・
昔DXFから座標を拾い出して簡単な絵を描くソフトを書いたが、すんげー面倒で 苦労したし、二度とやりたくない。その時は知り合いが「CADユーザーのためのDXF リファレンス・ガイド」という本を持ってたので借りてきたけどもう売ってないし、 それの改訂版すら完売らしい。 ってDFX?そいつぁしらねーな。
Delphi6 personal + Indy 9.0.14でIdFTPServerを使用しています。 StoreFileイベントに VStream := TFileStream.Create(AFileName, fmCreate or fmShareDenyNone); でファイルを受信しているのですが、 2,147,483,647Byte(2GB)以上のサイズのファイルを受信しようとすると強制的に転送が終了します。 この問題を回避する方法は無いでしょうか? むろん他のFTPServerでは正常にファイルが受信できる事を確認済みです。 Indyのソースを見るとsizeやseekをintegerで操作しているので このあたりがあやしいと思うのですが…
>Indyのソースを見るとsizeやseekをintegerで操作しているので ヘルプより Integer の範囲 -2147483648..2147483647 形式 符号付き 32 ビット だから桁あふれして一気にマイナス最大値に突入してるんじゃないの 2GB以上は無理な感じだね
>>484 DWGは知らないが、DXFやJWCはそれぞれ詳しく書かれた書籍がある。
DXFに関しては海外のサイトでDelphiのサンプルコードだったか、コンポだったか忘れたが
以前落とした記憶がある。
DXFの古いバージョンならテキストエディッタで開いて見たらすぐ理解できるだろ。
自分も遊びでCAD作ったりしてみたが、この手の情報はネットには少ない。
SFXのように仕様をちゃんと公開してくれるといいんだけどね。
>>489 やっぱりこれが原因なんだろうな。
Indyのソースは膨大で俺の力量じゃ直せないし
一から作った方が楽か…
BDE で like 演算子使うとスゲェ遅いんですけど、 早くする方法なんかないですか? ぐぐっても、MLでもめっかんなかったーYO!!
>>492 IntegerをすべてCardinalに置換
2倍にしかならないが
FATなら4GBで十分 NTFSでもっと欲しかったらがんがれ Int64は素人にはおすすめできない
WinSockつかって分割して読み込めばいい。
>>494 >>496 >>497 結局、Indyのソースの怪しい箇所をInt64に直して可能になりました。
ちなみに作成しているのはHDD&DVDレコーダのソフト関連で、
扱うファイルサイズは数GBになるのが当たり前だったので必要でした。
ところでInt64が素人にお勧めできない理由ってなぜでしょう?
# ソース直すときMin関数にだまされてました。
# 標準のを使っていると思ったらIndyで独自に定義してるのね
# そのせいでいつまでも出来なかったよ…
488はShare作者
ShareははじめっからInt64使ってる
>>488 全然関係ないのだけど…もしかして、VRDの作者さん?
>>498 ・遅い
・オペランドへの配慮が面倒
欠点っつったらこれくらいしか思い浮かばんな
>>502 おお、向こうと話題がシンクロしてたのでもしやと思ったのですが。
開発、がんばってください〜
BCB のスレで質問したら、あまり興味ある人がいないらしく まともなレスがつかなかったので、こちらで質問しなおしたいと思います。 DBGridで、 1.グリッドに表示されている一番下のアイテム(仮にRow=5だとします)をクリック。 2.カーソルキーの↓を押す。 ---> Row=6に移動し、[*]と表示される。 3. 1.で選択されてたアイテム(Row=5)を再度クリック。 ---> するとクリックしたアイテムの1個うえ(Row=4)のアイテムが選択される。 という症状が現れます。 環境は、BCB6 Pro SP4、WINXP Pro SP1 です。
(つづき) 調査の結果、 TDBGrid.MouseDown() ↓ TDatalink.MoveBy() ↓ TDataSet.MoveBy() ↓ TDataSet.CheckBrowseMode() と呼び出されています。 CheckBrowseMode内で TDataSet.State = dsInsert の時、TDataSet.Cancel() が実行され、 この時点で Row は一行上に移動するわけなんですが、 その分を考慮していないため、 「MoveBy の移動分+Cancel の1行分」移動してしまい、 クリックした行のひとつ上の行が選択されるようです。 ここまでわかったのですが、じゃあ具体的にソースをどうなおしたら よいかわかりません。 また、他のプログラムに影響を与えたくないので、できれば、VCLソースの修正ではなく、 アプリケーション側で対応したいのですが、無理でしょうか? よろしくお願いします。
特定のユニットを、そのアプリだけで修正verを使いたいなら、修正後の.pasをコンパイルして出来た.dcuを アプリのフォルダに入れておけばOK。優先して使われますよ ただしinterface節を変えてはダメ、修正できるのはimplementation以下のみ
質問です。 バイナリファイルの検索をしたいのですが、バイナリエディタで開いたときに 「4A 44 6C 23」と表示される場所の位置を調べるには、どのようにしたら よいのでしょうか?
バイナリ版BM法を自前で実装しろ
4バイト程度ならbrute-forceでへらへら検索しても たいして変わらない気もしないでもないけど
んなこたーない。
>>507 それは知らなかたーYO!!!
それなら気楽にトライできます。
というわけで、デバグに挑戦すます。
ありがと!
513 :
デフォルトの名無しさん :04/08/29 01:54
DBGRIDで行の複数行選択して選択した行を全て下位に複写したいのですが どのようなコードをかけばいいのですか?
>また、 >他のプログラムに影響を与えたくないので、 >できれば、VCLソースの修正ではなく、 >アプリケーション側で対応したいのですが、 >無理でしょうか? VCLを修正してもスタテックリンクすれば、 他のアプリケーションに影響を与えない。
>>515 行追加はできるんですけどカラムのデータまでコピーされないんですけど
どうしたものか・・
518 :
デフォルトの名無しさん :04/08/30 23:03
でけた
519 :
デフォルトの名無しさん :04/08/30 23:22
4バイトなら、Longint型にして先頭から1バイトづつ順番に調べた方が BM方より速いのでは?
520 :
デフォルトの名無しさん :04/09/01 10:01
Delphi7でDeCALを使おうとするとコンパイルエラー。 sourceforgeなんだし誰か直してウプしてよ。 自分はBCB派なんでSTLするしぃ。
522 :
デフォルトの名無しさん :04/09/01 12:45
マルチページTIFFファイルを表示する方法をきぼんぬ。
>>524 ありがとう、でも全く使い物になりません。
>>522 たったこれだけかよ。やる気うせた(´_`)
>>526 さんくそ。有料だがしばらく試用してみる。
>>529 数行追加だから、各自直しても特に問題ないけどね。
現在の所有者は、現状渡しに妙に拘っているし・・・
苛めの腹いせ?
STLに該当する標準ライブラリなら各自直すんでなく、元を直すべき。 でないとライブラリが氏滅しちゃう。
532 :
デフォルトの名無しさん :04/09/03 07:01
クイックレポートで表示させる列をで画面から任意で順番を変えたいのだが、 項目の位置のずらしかたがわかりません!どなたかお助けを!! 左から[名称][コード][区分]で表示させていたのを画面で順番を選ぶことができて 出力すると[コード][名称][区分]とかさせないといけないのです。
>>531 Delphi自体死滅予定だから大丈夫☆
死ぬ死ぬいってる奴に限って死なないんだよな
クラスの○藤くんは、サクッと死にました
どうしてボーランドは nil as THoge で例外を出さないようにしたのですか?
F12でデバッガ立ち上がるのなんとかならん? いちいちウザイ
あ、NTの機能ということは知ってていってます。 切れないものかと
>>539 切れないけど、キーを変更することは出来る
レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\AeDebugの中の
UserDebuggerHotKey=0x00000000を、例えば0x00000013 に変更後・再起動
thx!!
お勧めのコンポって何かある? 特に伝票入力に必要なグリッド系のを探してます。 教えれクリ
上級者にはおそれ多くて教えられん
>>543 TEditとかいいよ。一行入力用として最も使われてる。
特に伝票入力に必要なグリッド系のではないけど。
>>543 有名ではないけどTStringGridなんかどうだろう。かなりお勧めだよ。
入力できるし、オーナードローもできる。
>>544 上級者に質問するスレなんだと思ってますたが・・・。
それはともかく中級者スレ復活しないかなぁ・・・。
>>543 TFromとかいいよ。いろいろな伝票がデザインできる。
TButtonとか、知る人ぞ知るって感じだけど、便利だよね。
>>549 TFrom とかの詳細を語ってくれないか。はじめて聞いた、そのクラス。
上級者の質問じゃないと思うんですが、初心者スレでスルーされたので 教えてください。DelphiでPythonの埋め込みってできますか? マクロ みたいな拡張機能をPythonで書けるようにしたいんですが。
埋め込みはRubyでやろうかと思ったけど面倒そうなので一分であきらめた。 埋め込みたければ言語にはこだわらずにメジャーなの使ったほうがいいんじゃないの。
簡単だけどな・・・ どこが難しかったの?
>>555 難しいという以前にRubyの低レベルな知識が皆無な状態で
ここからここまでを読めば埋め込みできるってドキュメントが見つからなかったから。
ついでに技術デモになるようなexeも実際に採用したフリーウェアも見当たらなかった。
チェックしたよ。その上での>556。 WEB眺めてもApollo\Docを眺めても(だいたいApolloのヘルプなんて置いてないし) どこから手をつけていいのかわからなかったし 簡単に行きそうな気配が微塵もしなかった。 で結局DMokeyに落ち着いた。 シンプルなヘルプを上から下まで一読してあっさり動いたよ。
組み込みならDMonkey汎用性持たせるならWSHって線がほとんどの用途で一番無難かもね
560 :
デフォルトの名無しさん :04/09/17 16:47:23
メソッドの引き数がdata: array of charになってまつ。 ここに、MemoryStream.Memory(メモリのポインタ)を代入したいんですが、 どうやったら良いですか?
どうして data: array of char を渡さないの? 返ってきたら MemoryStream.Memory に内容をコピーしたらいいじゃないの
いや、逆にMemoryStream.Memory の内容を関数に渡したいんです。 2重にメモリ取りたくなくて。
ヘルプでは、 >代入の互換性 >T1 がPChar 型またはPWideChar 型で,T2 がarray [0..n]of Char(T1 がPCharの場合)またはarray [0..n]of WideChar(T1 がPWideChar)という形式の添字がゼロから始まる文字配列である となってますね。
じゃ、配列に内容コピーして MemoyStream Free。これで解決
Pointer<->PChar<-Stringの変換はメモリ上の構造が同じなので可能だけど array of char<-Pointerはメモリ上の構造が異なるので渡せない。 array of charにコピーするか 可能ならメソッド側をPCharに変更するしかない。
なるほど、サンクス。 >可能ならメソッド側をPCharに変更するしかない。 これにしてみます。
参照型みたいなので、array of charとPointerをマッピングしたいと思った。
補足すると、array of char は動的配列なので、いつでも大きさが変えられる。 これは隠れたフィールドをコンパイラ/RTL が管理しているわけだ。だからいつでも 大きさを変更でき、かつ好きなときに大きさを入手できる。 ポインタは単にメモリの一点を示すだけ。 Array of char の保持する内容をポインタで操作することはできるが ポインタを(何もせずに)array of char として渡すことはできない。 無理して渡すと、たとえば array of char の大きさを変えようとしたときに 存在しない(隠れた)変数を参照しに行くため、結果は悲惨なことになる。
>可能ならメソッド側をPCharに変更するしかない。 メソッドオーバーライドを使って引数二種類定義したら?
570 :
デフォルトの名無しさん :04/09/17 17:56:24
参照されるだけだとしたら、こんなん駄目かな? type ArrayChar = array[0..0] of char; PArrayChar = ^ArrayChar; var Pac: PArrayChar; begin Pac := MemorySteam.Memory; obj.method(Pac^);
array of charとarray[0..0] of charは全く別物。 0..0なんて小細工は勧めない方がいい。
572 :
デフォルトの名無しさん :04/09/17 18:28:03
メソッドの引数array of charに動的配列(これもarray of char)を入れようとすると、 動的配列は入りません、てエラーが出る。 array[0..10] of charなんてしとくとコンパイル通るが、 固定サイズは何だかやり難いなー。
新しく型宣言するんだよ、そんなときは
2chに入り浸ってるからTCharDynArrayとTWideCharDynArrayを定義し忘れるんだよ>某
しょうもねぇな、まったく
>>577 なんとなく解決、イベントの処理中にProcessMessagesを投げてたのがまずかったみたいです・・・
しょうもねぇな、まったく
ProcessMessages って投げるもんなのか?
差し込むものに一票。
呼び出すものに一票。
>クリックすると勝手にクリックされてしまうという現象が発生します >なんとなく解決、イベントの処理中にProcessMessagesを投げてたのがまずかったみたいです 因果応報
584 :
デフォルトの名無しさん :04/09/23 23:25:01
DelphiのinterfaceってCOM依存って聞いたんですけど Javaのinterfaceみたいな気分で使えないんですか?
無理 できなくもないという言い方もできなくもないけど
COM に依存してませんが? デフォルトで COM のための実装クラスだけが用意されているだけでしょ?
クイックリファレンスにのってたTNoRefCountから継承させてインターフェイスをよく使ってる
>>586 言語仕様的にCOM向けにデザインされてるって意味で
COMに依存してるって意味じゃないの。
自分はJavaでは使うけどDelphiでは使う気しないな。
面倒だしなんかインターフェースごっこをしてるみたいでなんかヤダw
>自分はJavaでは使うけどDelphiでは使う気しないな。 同感
もったいない
もったいない。 どこら辺が「言語仕様的にCOM向けにデザインされてる」と思うの?
ここら辺の
ttp://www.borland.co.jp/delphi/del6/report/tsunoda_2.html >ただし、Javaと異なり、DelphiのインターフェースはIUnknownを継承しているため、
>TInterfacedObjectを継承しないと個別に、QueryInterface, _AddRef, _Releaseを
>実装しなければならない。
などを無批判に信じ込んでしまっている人がいるのかな?
某結城浩が、それを無駄に広めている形跡もある...
Interface を宣言すると暗黙の IUnknow が継承されるが、これも
インターフェースでしかないのだから COM に依存なんかはしていない。
TNoRefCount でもなんでも定義して使えば済む話だ。
Java と違って GC が無いから、代わりに GC 代わりの参照カウンタを実装するための
インターフェースが二本出ているだけ。
ToolsAPI なんか COM とは一切関係の無い Interface 宣言の山だぞ
AddRefとかのメモリ管理を強制(されないけど)される Java,C#等で用意されている基本的なインターフェースがない(かなり貧弱) VCL自体COM関連でしか使ってないのでインターフェースベースの設計になっていない。から拡張時に使わない。 Delphiでインターフェース使っても特に劇的に生産性が向上するわけでもない。継承ベースでもふつーにこなせる。 だから使ってない。別に役に立たないというつもりはないけどDelphi積極的に使う気がしないというだけ。
Del房ってネガティブだよね
ネガティブではないよ。ただ個人的に老い先短いDelphiでがんばるつもりがないってだけで。 interfaceもinterfaceとTComInterfaceを分けてくれればもう少し幸せになれたって気がしないでもないけど。
596 :
デフォルトの名無しさん :04/09/25 09:11:29
Del7にTHTMLが無いんですが、どうしたら良いでつか?
>>595 言語に老い先も糞もねぇだろ。
プログラマという職業が老い先短いというのは分かるが。
だいたい職業でDelってるやつなんていないし。
言語ではなく、プラットホームに依存した開発環境というのはあります。 だからOSの変更により使えなくなる開発環境もあり得ます。 最近はSPで使えなくなる環境もあるようですね。
>>598 プラットホームに依存しない開発環境があったら教えてください。
Ruby
>600 依存してるじゃねーか
BrainFuck
久々にIrvineのvupがあったのでhp見てて思ったのだけれど mark&sweep GCを行う ライブラリって何?便利?
605 :
デフォルトの名無しさん :04/09/26 21:47:01
おい、苺きんたまとかいうウイルス作ったのDelphianらしいじゃねーか 責任取れよお目ーら
ほとんどのウィルスは VC 製だけど、そこんとこよろしく。
ちなみに過去にはVBで作られたウイルスもありましたよ。 ただVBでウイルス作れるような香具師でも ランタイムの面倒をみる事までは出来なかったようで感染力は低い。
vbsで十分
609 :
デフォルトの名無しさん :04/09/29 02:22:06
C++のstl::sortよりも高速なソート方はありませんか?
611 :
デフォルトの名無しさん :04/09/29 19:21:11
言葉が足りませんでしたね C++のSTLの std::sortよりも高速なソートをDelphiで 実装できますか?
そりゃまー、できるだろ。 高速なソートってのはデータにも依るから、データの傾向を調べてあわせれば 汎用であるstd::sortには勝てるんじゃないか?
614 :
デフォルトの名無しさん :04/09/29 22:43:41
可能 不可能じゃなくて 勝てるなら実際に教えてください
だからソートなんてデータに大きく依るんだって
616 :
デフォルトの名無しさん :04/09/29 22:58:13
ポインタなら32bitだから関係ない
ポインタでソートするわけないだろ。比較は中身
馬鹿ばっか
そうだな、アルゴリズムスレでも行けばいい
std::sortはどうやってるか知りませんが、逆写像ソートは速いらしいです。
実数や不定長文字列の逆写像ソートの効率の良いアルゴリズム、あったらおしえてくれ。
分布数えソートの方が速いらしい。
>>621 大小関係を維持したままハッシュ値を求められればいいね。
じゃ >大小関係を維持したままハッシュ値 の求め方を考えてくれよぉ でまぁ stl にしろ、汎用性と性能は衝突することがあるので、要注意。 stl だと(というか stl の目的は)アルゴリズムを取り替えられるので 使う人がいろいろ選択できる点は良いです。 その代わり stl のコードは読みやすいものではないし、不必要なコードも 大量に生成される。
624 :
デフォルトの名無しさん :04/09/30 08:37:55
それはおまいの力不足 人のせいにするな
625 :
デフォルトの名無しさん :04/09/30 08:41:16
>>625 なんじゃそら。
大体ソート済み、とか、逆順になっている事が多い、とか、ランダム並びが多い、とか、
全データ量が膨大、とか、入れ換えより比較に時間がかかる、とか、
そういうところを見るんじゃないのか?
アラシだろ、ほっとけ
>>620 逆写像はバケットに比べて勝ってる所が全くない使い道0ソートです。
PC Anywareチックなプログラムを作ろうと試みています。 クライアント側が指示を出すとサーバが指示を受けて動作するような感じのです。 //Client側 procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Socket.SendText('01'); end; SendText以外に ・MessageDlgのような任意のダイアログを出す場合 ・その他の指示を出す場合 の記述の例を書いていただけませんか? とても勝手なのですが是非お願いします。
すいません投稿するスレ間違いました∧||∧
文字列はラディックスソートと分布数えソートを組み合わせるのが速いらしい。 実数は途中までクイックソートで残りを挿入ソートで仕上げるのはどうかな。 ところで、分布数えソートって最速なの?
データ構造とデータの傾向に依存する。
昇順に並んでいるデータなら挿入ソートが最速かも。
procedure combsort11(var data: array of integer); var i, size, hold, gap, done: integer; begin size:= High(data) + 1; gap:= size; done:= 0; while (gap > 1) or (done = 0) do begin gap:= (gap * 10) div 13; if gap = 0 then gap:= 1; if (gap = 9) or (gap = 10) then gap:= 11; done:= 1; for i:= 0 to size - gap - 1 do begin if data[i] > data[i + gap] then begin hold:= data[i]; data[i]:= data[i + gap]; data[i + gap]:= hold; done:= 0; end; end; end; end;
分布数えソートって呼び方はアフォっぽい。 バケットソートと呼べ
馬尻
そんな変なソートアルゴリズムと一緒にしないでください
640 :
デフォルトの名無しさん :04/10/20 15:55:36
WindowsXP上でテーマがWindowsXPの場合、 フォームにTDBGridと結果を返すデータセットをおいて、 以下のコードを実行するとTDBGridの垂直スクロールバーが消えてしまいます。 @Button1Click → ○ 垂直スクロールバー出る AButton2Click → ○ 件数0で垂直スクロールバー消える @Button1Click → × 垂直スクロールバーが表示されない(描画の形跡は見られる) @AA@の様にAを2回繰り返した場合は正常に表示される。 procedure TForm1.Button1Click(Sender: TObject); begin ADODataSet1.Close; ADODataSet1.CommandText := 'select item_cd from item'; ADODataSet1.Open; end; procedure TForm1.Button2Click(Sender: TObject); begin ADODataSet1.Close; ADODataSet1.CommandText := 'select item_cd from item where item_cd = ''無いコード'''; //結果は0件 ADODataSet1.Open; end; 外国のサイトにも同様の現象で困っている人がいましたが、解決されてないみたいでした。 解決できる天才はいませんか?
Delphi5Proにて… ClientSocketのHostプロパティに無効なURLを入力すると OnErrorイベントが発生しないで 「'ASync Lookup' APIでWindows ソケットエラー:そのようなホストは不明です。(11001)」 というメッセージが表示されちゃうのはなんとかできないのでしょうか?
そんなバナナ
>>641 おい〜,あるスレで回答がもらえなかったらほかのスレで尋ねる前に
「レスがないようなのでほかのスレで尋ねてみます」とか一言断わろう.
…と!いうわけで!くだすれの方でレスつけたのでご覧下さい.
…いろいろお手数かけました
個々のプログラムが使用するメモリー容量を取得したいのですが・・・(タスクマネージャのプロセスタブみたいなの) TMemoryStreamとかで動的に取得しているメモリー容量まで取得したいのですが方法がわかりません どなたか、解りませんか?
>>645 仮想メモリサイズ ってのがあるのか・・・
これはどうやれば取得できるのだろう?
Win32APIスレ池
くだすれで返答を頂けませんでしたので 申し訳ありませんがこちらでも質問させて下さい サイズ変更可能なタイトルバーなしのフォームを作りたく思い、 検索してサンプルなども見つかって動作するのですが、不満な点があります。 探したところCreateParamsをoverrideしてWS_THICKFRAMEを指定してあげる方法しか 見つからなかったのですが、これだと当然ながらフォームの縁に太い線が出来てしまいます。 出来れば縁がないものを作りたいのですが、良い方法がありますでしょうか? ※BorderStyleでbsNoneにしたときのような外観にしたいのです。
WM_NCHITTEST でぐぐる
651 :
おしえて!! :04/12/18 00:39:12
a(n)=1×2×...×n b(n)=b(n-1)+b(n-2)、 b(1)=1、 b(0)=0 ・n(≥1)が入力として与えられたとき、a(n)の値を返す再帰的なプログラムを記述せよ。 ・上記の問題を再帰を用いないプログラムで記述せよ。 ・n(≥1)が入力として与えられたとき、b(n)の値を返す再帰的なプログラムを記述せよ。 ・上記の問題を再帰を用いないプログラムで記述せよ。 ※ただし入力と出力は全ての整数型で与えられるとし、記述はDel-phiで記述せよ。
>>651 失せろキチガイ
>どなたかわかる方いらっしゃいませんか??
>もしくはわかりそうな人がいるとこしりませんか??
お前の態度が気に食わない。かつ、マルチポストするなボケ。
Del-phi
>どなたかわかる方いらっしゃいませんか?? >もしくはわかりそうな人がいるとこしりませんか?? 偏差値50程度の高校生なら誰でもわかるよ。 宿題は自分でやろうね。
もう冬休みか。はえーな。
簡単すぎて、レスする気にもならないんだよね。だから、ウザがられるってことに気がついてないのかな。
簡単杉っていうより、それで必死なのがうざいんだろ
学校の宿題だとして、学校でDelphi使ってるのに驚いたよ
つかってるのは Del-phi だろ
自作クラスのHelpInsight対応めんどくさすぎ。 .pasから.dcu, .xmlはいた時点で自動的にIDEが認識すべきだろ。 MSはVC++6.0から既に対応してるんだが。
D2005使ってる時点で(ry
やり放題のOSメーカーと一中小企業を比較するのが無理ってもんです。 巨人ファンは黙っててください。
なんだ敗北宣言か > 一中小企業 つまらん
巨人ファンが、あたかも自身が巨人であるかのように振舞う不思議
一中小企業ファンが、あたかも自身が一中小企業であるかのように振舞う不思議
666 :
デフォルトの名無しさん :04/12/21 13:44:20
TRichEditに読ませるリッチテキストを作ろうと思ったんですが、 リッチフォーマットって暗号みたいでつね。 テキストをリッチテキストに変換してくれるライブラリはありまつか?
669 :
デフォルトの名無しさん :04/12/21 14:42:48
マルチじゃないよ。 だって初心者スレでは透明人間でつから!
TEditor作者さん、D2005インストール出来なかったそうです
ACMを使ってMP3をデコードさせようとしてるのだが上手くいかない・・・ acmFormatSuggest acmStreamOpen acmStreamSize acmStreamPrepareHeader acmStreamConvert acmStreamUnprepareHeader acmStreamClose を使うのは分かったけど 落ちてるmsacm.pasの定義だとacmStreamOpenすら通らない・・・ どなたかACM使ってデコードできてる方いません??
672 :
デフォルトの名無しさん :04/12/24 17:18:43
TRichEdit.SaveToFileするとリッチテキストになってしまいます。 テキストファイルでSaveToFileするにはどうしたら良いですか?
PlainText
サンクスでつ
>>673 上級な質問でなくてゴメソ
>>670 incファイルいじればインスコはできるんだけど、たまに例外起こして止まる
676 :
デフォルトの名無しさん :04/12/25 17:17:12
独自の画像形式のファイルがあって、それを描画するコントロールを作りたいんですが、 何のクラス(TCanvas、TGraphic、TBitmapとかとクラスが一杯あって...)を派生したら良いでつか? 関連サイトもキボンニュでつ
>>676 内部的にビットマップに描画しておいてそれを表示するのと
WM_PAINTで毎回Canvasに描画する方法があるけどどっち?
>内部的にビットマップに描画しておいてそれを表示するのと こっちキボンニュ >WM_PAINTで毎回Canvasに描画する方法があるけどどっち? こっちは、全体の一部を描画する場合にのみ速くなるんですか? もしそうだったら今回使いませんが、お手数でなかったら教えて下さい。
679 :
デフォルトの名無しさん :04/12/27 08:53:38
>>676-678 の件、教えてage!
ググッてみましたが、TImageの書き込みが遅いだとか、Canvas.Pixelsが遅いだとか、難しいですね。
>>679 Pixelsは1ピクセル書き換えるだけなのにGDIのAPI呼ぶからな。ScanLineで検索。
ScanLineは見つけました。 なるほど、PixelsはGDIのAPIコールが遅いわけですか。 ScanLineだとビットマップイメージでこれだとAPI呼ばない、、、わけないですよね? GDI以外のAPIコールなんかな。 まだ理解できてなくて苦しい。。。
WindowsのビットマップにはDDBとDIBがあって、DDBはデバイス依存形式で常にAPIを介して操作する。 DIBは固定形式で作成時にビットマップ(=ビット配列)へのポインタを受け取れるので直接弄れる。 ScanLineはDIBの各ラインへのポインタを計算して返してくるだけ。
683 :
676 :04/12/27 10:46:54
なるほど勉強になりました。サンクス
>>682 ビットマップ形式にしてScanLineで書くと、ビットマップのポインタに直接書けるわけですね。
もう一つ知りたいのは、せっかくScanLineしてもTImageに書くと遅いのでしょうか?
TPaintBoxとかに書くのが良いのでしょうか。
(1回書けば、再描画は意識しなくてOKですよね?)
それともう一つ、
>WM_PAINTで毎回Canvasに描画する方法があるけどどっち?
について、詳細を知りたいです。
WM_PAINTのメッセージハンドラを作るとして、そうするとなんで高速化なんですか???
つうかJpeg uses XYZ; ... Image1.Picture.LoadFromFile('image.xyz'); だけできればいいんじゃないの? やり方知らないけど
×つうかJpeg ○つうかJpegみたいに
とにかく、どれかひとつでもやってみては? 全部の疑問が解決しないと取り掛かれませんか? ・ビットマップのファイル形式を調べる(TBitmap について理解が進む) ・ウィンドウズにおける描画の仕組みを理解する どっちも Delphi と直接関係ない
>TBitmap について理解が進む これ重要。 >ウィンドウズにおける描画の仕組みを理解する 上級なら知っとくべし。
>WM_PAINTのメッセージハンドラを作るとして、そうするとなんで高速化なんですか??? 高速化にはならないだろ。 例えばベクトルデータの配列があってそれを毎回 LineToとかで描くとかそういう話。 ビットマップ持たないで済むから省メモリだし レンダリングに柔軟性を持たせることが出来るかも試練。
納得でつ
>>688 やっぱScanLineですね。
690 :
デフォルトの名無しさん :04/12/27 14:59:39
>TImageの書き込みが遅い これは何でだろ。
日本ヒューレット・パッカード株式会社 SSS サポートセンター Delphi 係ってなんだ?
>>690 >>688 のようにCanvasに描画する処理は、
TImageでは一度Picture.Bitmapの上で行われてから転送されるので
メモリ的にも処理速度的にも効率が悪い。
ただし、Picture.GraphicのDrawは直接親のCanvasに行われるので
一般的な使い方なら関係ない。
あとは、状態によりWM_ERASEBKGNDで全て背景色で塗りつぶしてから
その上にPicture.Graphicを描き直すので、無駄だしちらつく。
そのほかに、TImage.Picture.Graphicへの代入は実際にはAssignなので、
代入するオブジェクトが複製される。これは画像のデータを内部の
TSharedImageで共有するVCLのTGraphic派生クラスでは問題にならないけど、
そうなっていないフリーのクラスなどでは、代入の時の複製処理が重いし、
さっさと元のオブジェクトを破棄しないと必要量の2倍のメモリを食う。
>>688 の話は PaintBox の OnPaint のことだろ
Bitmap の Assign てコピーなの? CopyOnWrite だから、一方が変更されるまで 実際のコピーは行われない、ってきいたことがあるけど
>>671 遅いレスですいません.
ACMは2年くらい前にPCMファイルのサンプリングレート変換に使いました.
MP3での変換は使ったことがありません.
やはり落ちていたユニットを使ってプログラムを作りました.
レコード型の宣言が一部抜けていたのでMSDNを参考に追加.
ちなみにうちにあるユニットのacmStreamOpenの宣言:
function acmStreamOpen(
phas : PHACMSTREAM;
had : HACMDRIVER;
const pwfxSrc : TWAVEFORMATEX;
const pwfxdst : TWAVEFORMATEX;
pwfltr : PWAVEFILTER;
dwCallback : DWORD;
dwInstance : DWORD;
fdwOpen : DWORD
) : MMRESULT; stdcall;
>>695 レスどうもです。
やはり宣言は同じですか・・・
結局acmStreamOpenを通すのに使った宣言は
function acmStreamOpen(
phas : PHACMSTREAM; had : HACMDRIVER;
pwfxSrc : PWAVEFORMATEX;
pwfxdst : PWAVEFORMATEX;
pwfltr : PWAVEFILTER;
dwCallback : DWORD;
dwInstance : DWORD;
fdwOpen : DWORD) : MMRESULT; stdcall;
でポインタを使って通してます。
しかし、acmFormatSuggestをポインタで通すとエラーに・・・
acmStreamPrepareHeaderでもMMSYSERR_INVALPARAMが返ってくる・・・
ん〜
>>696 その宣言のようにpwfxSrc, pwfxDstはポインタにした方が素直ですね.
acmFormatSuggestは使ったことがないので,すいませんがわかりません.
acmStreamPrepareHeaderですが呼び出す前にACMSTREAMHEADER構造体の要素に値を設定していますか?
var ash: TACMSTREAMHEADER;
(中略)
FillChar(ash, sizeof(ash), 0);
ash.cbStruct := sizeof(ash);
ash.pbSrc := PByte(SrcData);
ash.cbSrcLength := SrcLength;
ash.pbDst := PByte(DestData);
ash.cbDstLength := DestLength;
あとは思いつきませんでしたすいません.
>>698 ACMSTREAMHEADERは設定してます。
pbSrcにFileStreamから参照させるためにFileStream.Memoryを渡してるのがまずいのですかね・・・
TFileStream に Memory なんかない
TMemoryStreamでした。スミマセン
>>699 遅くなりましたが…
読み出し側ならそれでも問題なさそうですよね.
思いつきで恐縮ですが単純にPCMからPCMへの変換ができるのでしたら
CODECの種類に固有の問題かもしれません.
703 :
デフォルトの名無しさん :05/01/06 11:39:12
Demos\RichEdit で、ワードパッドが作れるのは凄いんでつが、 「挿入−オブジェクト」メニューがありません。 Delphiだと簡単に実装で期末か?
メニューは簡単の実装で期末
Delphiの起動方法はどのこからどのようにして起動すれば良いのでしょうか、 デスクトップにアイコンがないのです。もう一度ダウンロードしたほうが良いのでしょうか?
上級者ッ!
>>705 なんて じょうきゅうな しつもんなんだー(棒読み)
>>705 スタートメニュー辿ってけばあるはず。
ExplorerでC:\Program Files\Borland以下を探してもいい。
いやきっと
>>705 はプログラマがゲームとかに現実逃避するのを抑止するために
Delphiをデスクトップに統合しようとしているんだ!!
ロングホーンよりすばらしいUIになるに違いない。
そうだね
俺達は(略)
>>705 を並び替えて(略)
な、なんだってー
Delphi 7 Proで EmbeddedWbを使うにはどうしたらいいでしょうか?
うーん、上級な質問だw
ムリなんだろうか。。。orz
716 :
デフォルトの名無しさん :05/01/28 19:37:56
初心者板で質問したのですがレス付かないので此方で聴きます RichEditで通常と太字で大きさ同じにしたいのですが abcde ←1行目フォント指定しない abcde ←2行目太字 で文字位置がだんだんずれていくんですがどうすればいいのでしょうか
何で表示装置上で文字が太く見えるか分かる?
718 :
デフォルトの名無しさん :05/01/28 19:50:45
文字幅が大きくなるから IDE上だとprocedureやinとかrecordとか太字じゃないですか それでも文字位置はずれないですよね。そういうふうにしたいのですが
そんなこと無いです。IDE上だってずれてるよ
え? IDEのデフォルトで右マージン位置80文字目にラインが引かれますよね その位置は太字が含んでいても80文字目になりますし、 見た目にもずれてないと思いますが
字詰めやるなら自分で計算するべきだな
722 :
デフォルトの名無しさん :05/01/28 20:46:31
計算ってFONTのややこしい計算ですよね? 一字一字の計算したフォント位置を求めたとして、 RichEdit・・・というかCreateSubClass(Params, 'RICHEDIT') や CreateSubClass(Params, 'EDIT')で作られるウインドウで反映させる事は出来るのでしょうか?
仕方ないよ、アドビとかの存在意味なくなるじゃん。 安く上げるなら我慢しないと。
無理と言うことになるのかな? つまりエディタとして全実装を自前で作らないといけないとか? カレット作ったり、PAINTでDC文字描画したり、スクロール数計算したり・・・しろって事?
です、それで十分飯食えるほどの物です
726 :
デフォルトの名無しさん :05/01/28 21:29:47
マジかよ・・・・ 相当時間掛かるんですが、集中的にやらないと作れるようなものじゃないし どうもありがとうございました
HEditorやSynEdit使え
さんく 探してみました。HEditorは金掛かるみたいなので、SynEditってほう(beta200) すげーファイル群とコンポーネント入れられたけど、 とりあえずSimpleIDEDemoってのビルドしてみた。 目的な事が出来そうかな。Delphi無し環境で実行出来る事確認したし なんか使い方複雑そうだけどソースもサンプルもあるし、なんとかなるかな どうもありがとうございました
むぅ使い方ワカラネ、サイトみて使い方覚えてくる
したいことが SynEdit とは関係ない方に122ルギコント
VC++(非.NET)アプリ用に、DelphiでDLLを書く必要があるんですが、 VC++から関数の引数として渡されるデータアクセス用の関数ポインタを Delphi製DLL内で、関数ポインタから関数を呼ぶ時点で例外が生じてしまいます。 cdeclをつけても、stdcallをつけても、safecallをつけても、なにもつけなくても、 同じです。 VC++アプリから渡される関数ポインタをDelphi内で利用するには、 特別な方法がいるのでしょうか? (一応、アクセス用のVC製DLLを作って、Delphi製DLLから呼び出すと データにはアクセスできてはいます。)
わざとややこしく書いてるのか?もちっと、簡素に言ってみ
>>733 すみませぬ。
VC++アプリから引数で送られてくる関数ポインタを
Delphiで作ったDLL内で使うには、何か特別な操作がいるのでしょうか。
メソッド呼び出しているオチだったらぬっころしますよ?
手続き型を宣言して、それにキャストすれば良いのでは
>>735 いや、さすがにそれは・・・
しかし、そうおっしゃられるということは、普通にできるということですね。
もうちょっと、自分のコードにミスがないかチェックしてみます。お騒がせしました。
VC++側は多分、cdeclで呼び出しているんだとは思います。
VC++で書いたDLLでは、普通に関数ポインタから関数呼び出せますので。
(性的だが)実行部に function ナンチャラ関数名; external ナンチャラDLL名 name ナンチャラ関数名; やってるか?
>>739 仕様で、VC++アプリ側から、動的にインポートされているはずです。
それから、関数の引数を通じて関数ポインタが渡されてきてます。
一応、私が勘違いだったらすみませんが、
external〜、Delphiから外のDLLを静的に呼ぶときですよね?
実際の関数名と合ってないとか?(頭に_@が付いてるとか) dumpbinで調べてみ
>>741 そうしてみます。
って、いきなり他の仕事割り当てられました。orz
経過はまた後ほど。 お騒がせしました。
関数ポインタの受け渡しで呼び出し規約が合っていないために 正しい関数ポインタを受け取れないか、 Delphi側の関数ポインタの宣言を間違えているか。 まずは、DLL側が受け取ったアドレスが実際にVC++側の関数のアドレスかどうか確認する。 後は、VC++側の関数の宣言と、Delphi側の型をここに出せば簡単に解かる。 関数ポインタと、エクスポートした関数の両方ね。
昨日からどうもです。 今日になって、新しいVC++アプリのバイナリがあてがわれまして、 このバイナリだと、無事動作しました。 昨日の苦労はなんだったんだ orz みなさん、本当にどうもありがとうです。
原因不明のまま放って置く奴って伸びないよね
動くことが優先で、追求は後でもいいじゃん?
そういう奴は後でも追及なんかしないし
まあそうなんだけど、そういう風に元質問者を決め付けるのはどうかな?ってことで。
一般論
そのうち同じ事に出くわすよ
あー気になる。 宣言だけでも教えてくれ。
どうも、お騒がせしてすみません。 結論から言うと、cdeclで良かったです。 あのあと、VC++製ホストアプリバイナリ開発元に問い合わせたら、 今更になって、dll側のサイズを見て、サイズが条件内に無いときは、蹴っているとのこと。 (そういうのは、最初に言ってくれ・・・) 結局、新しいバイナリを送ってもらって、cdeclでちゃんと動きました。 重ね重ねお騒がせして申し訳ないです。
つまり、DLLが大きすぎたら、正しい関数ポインタを渡してくれないの? こっそり誤動作するようにしてるのか?
セキュリティ対策だろ、多分 どれだけ意味あるかわからんけど
誤爆 スマソです orz
誤爆に見えない。
くだすれに書いたとたんにスレがいっぱいになってしまったので 引っ越させてください。 とあるDLL中の関数をDelphiから呼び出そうとしています。 DLLのヘッダファイルを読むと extern "C" _declspec(dllimport) __time64_t #関数名#(); という定義になっていました。 この関数は日付を返す関数で、戻り値の型が __time64_t となっています この値をTDateTime型に変換する方法を教えて下さい。
TDateTimeとWindowsのFileTimeとは同じだ
hatumimidesu
FileDateToDateTime 関数か
time_t系との変換はUnixTime(ry
一旦文字列にしてTDateTimeに変換してはどうでしょう?
UnixToDateTime関数は違うようでした(浮動小数点なんとかエラーが出た)。 「time_t delphi」でぐぐってみたらそれ用の関数がサンプル蔵に あったものの、time64_tのものは見つかりません。 いっそDLL内の関数がtime64_t以外の形式で返してくれれば良かったのですが (2006/1/31 12:34:56 なら "20060131123456" みたいに文字列で返して くれればまだマシだった) DLL自体は自社のものではないため手を出すこともできず。 何するにしても、まずは__time64_tから自分で読み解ける形式にしないと 話が始まらず、今のところ手詰まりです。 また、Win32APIにはそもそもこの型を扱うものが見当たらない。 CStringクラスのメソッドがばんばん検索でヒットするので、 VC使いなら問題ないんでしょう。 というかDLL自体VCで作ってんだろうな… まぁ、そんなところです。己の知識不足を恥じる。
time64_tでぐぐると、トップにMSDNのページが来る。 で、これを読む限り、単にtime_tを64bitにしただけのようだ。 そして、もし、TDateTimeがFILETIMEと同じであるとするならば 単に、time_tをFILETIMEに変換すればよい。 これもぐぐれば簡単に出てくるが time_t = (FILETIME - 0x19DB1DED53E8000) / 10000000 という式を変形すればよい。
と、TDateTimeはFILETIMEとは違うのかな。 だとしても、 FILETIMEをSYSTEMTIMEに変更して そのメンバからTDateTimeを作り出せばいいだけ。
をぉ、ありがとう。 試しに関数作ってみますた。出来の良し悪しはさておく。 type time64_t = int64; function time64_tToDateTime(Time: time64_t): TDateTime; var filetime: TFileTime; systemtime: TSystemTime; begin filetime := TFileTime(Time * 10000000 + $19DB1DED53E8000); FileTimeToSystemTime(filetime, systemtime); Result := SystemTimeToDateTime(systemtime); end; 答え合わせ。 ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', 1138719599)); すると、'2006/01/31 14:59:59'が表示されました。 パラメータの1138719599はDLLから取得した値で、 別の資料から2006/1/31を意味する内容である事が分かってます。 (残念ながら時刻は不明) 結果を見る限り、いちおうちゃんと動いてるくさいです。 これで今の仕事には支障ないです。助かりました。
ごめん、答え合わせの方、転記間違ってた。 ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', time64_tToDateTime(1138719599))); だった。
あ、ちょっとダメだ9時間の差が出てる ってことはTimeZoneの時差を補正してないとか、そういう話か。 もう少し考えてみます。
FileTimeToLocalFileTime(Time, tmpTime) FileTimeToSystemTime(tmpTime, SysTime) SystemTimeToDateTime(SysTime) 少しは調べろ。
面目ない。 で、こうなった。 type time64_t = int64; function time64_tToDateTime(Time: time64_t): TDateTime; var filetime, localfiletime: TFileTime; systemtime: TSystemTime; begin filetime := TFileTime(Time * 10000000 + $19DB1DED53E8000); FileTimeToLocalFileTime(filetime, localfiletime); FileTimeToSystemTime(localfiletime, systemtime); Result := SystemTimeToDateTime(systemtime); end; くだすれ系のネタに付き合ってくれて感謝。
>>763 >UnixToDateTime関数は違うようでした(浮動小数点なんとかエラーが出た)。
はぁ?ちゃんと使えるぞ。
time64_tが1970/01/01 00:00:00(UTC)からの経過秒数だということを理解しているのか?
あぁ、先に言っておくとUTCとJSTは9時間ずれているから、タイムゾーン取得して補正しろ。
ここは上級者スレなんだからレビューしあうようなレスなら書くな
活性化すればなんでもヨシ。
枯れ木も山の賑わいってか? いよいよダメっぽいのか?
いよいよってwww もうとっくに、の間違いだろwwww
777 :
デフォルトの名無しさん :05/02/13 05:44:29
しかもダメっぽいじゃなくダメじゃn
くだすれはマターリしてていい感じなのに 何で上級スレは殺伐としてるんだろうか?w
アンチは無視しとけって。
実際はもう趣味範囲でしか無いのでは? クラサバ業務ならD5〜D7はまだ案件あるけど、D8以降は企業が採用しないだろうし Delphi実装をWeb(IIS)対応にリニューアルするならVSに変更してるのが実情
それは当然。だから先がないことは明らかなんだが、わからん人が多いんだよな
10年前にも781みたいなこといってた奴はいたよ。 いまだVBしかできないけど。
だからVBしかできないんじゃないの?
10年まえにはDelphiなかっただろ。テキトウなこというなよ
10年前はWin3.1→Win95へホビー層に浸透する頃だ この時期のWin環境のまともな仕事はVC++2.0(例外的にBC++4.0)しか無かったが 8年前と言うならわかるが
>784 丁度10年ぐらいかな、正確には9.n年前だろうけど Del1正式発売前に評価版として3ヶ月ぐらい前から雑誌の付録に付いていた Win3.1orWin95ファイナルベータで使った 趣味でBC++使ってたがVB覚えようかなと思った時に出てきたので、VBは覚えませんでした
先がない・・・・・変な事言うなあ・・・・・ プログラマとして仕事してたら、そもそもどんな幸せな未来があるっての? どこもソフトの開発現場は派遣化。 現場は使い捨て。 先が暗いなら、なおさら今を楽しまなくちゃね。 だいたいさ、道具の使い方には可能性があってもさ、道具に未来があるんじゃないよ。
つかえねぇ道具には可能性があっても小さいわな。本質論と程度論を混同するのはアフォ
どちらにしても道具の使い方レベルの所で可能性を論じてもしょうがないと思う 所詮はスキルも使い捨ての時代。
使えない道具か。 かわいそうに、使い方くらいのところで躓いてるのか
IDEが落ちるから、じゃないの?
D8もよく落ちたよなぁ、そういえば。
D8以降は使い方以前の問題
先細りだよね・・・・・Delphi・・・・・
お前は激太りだけどな。
そうだね。やはり、Delphiは死滅直前だとは思ってるんだね、みんな。
微妙に会話成立してないワロタ
古い安定版をちまちま改造して最新版と同程度の機能を実現するのが楽しみなD2..5ユーザ
799 :
デフォルトの名無しさん :05/02/18 11:23:27
TFrameのResizeでTImageへの描画を行うと、 マウスでリサイズ中に物凄くチラツキます。 リサイズの最後のタイミングイベントなんか無いですかね?
>>799 LockWindowsUpdateは?
興味があって、みにいったが
>>800 ものすごく役に立たないスレだな。
そんなのリンクするなゴルァ
結局どうやって解決するんだよ。
>>803 だから、マウスボタンを押してるかどうかで判断だろ?
ものすごく役に立つと思うけど?
>>803 解決方法が分からないのに、役に立つどうかどうやって判断したのかをききたい
WM_SIZE ではなく WM_EXITSIZEMOVE を使うような様相でお願いすれば多分うまくいく気がしないでもない。
まあちらつきが気になる人は画面のプロパティで「ドラッグ中にウィンドウの内容を表示する。」 をOFFにしそうな気がしないでもない。
>>801 と
>>806 を組み合わせてみた
procedure WM_EXITSIZEMOVE (var msg:TMessage );message WM_EXITSIZEMOVE ;
var fLock:boolean=True;
procedure TForm1.WM_EXITSIZEMOVE(var msg: TMessage);
begin
LockWindowUpdate(0);
fLock :=False;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
if not fLock then LockWindowUpdate(handle);
fLock :=False;
end;
ちらつかないが、枠が動かない・・・・・
という事で、やるなら WndProc メッセージフックで リサイズを適当に潰して
WM_EXITSIZEMOVE で確実にという感じかな
みんな暇なのかな
UTF-16LE 文字列を ANSI 文字列に変換したいのですが対応する標準関数 が解りません・・・ていうかあるのでしょうか?
>>810 WideStringをAnsiStringに代入する
812 :
デフォルトの名無しさん :05/03/08 17:11:45
>>799 { Private 宣言 }
procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;
・・・
procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage);
begin
//ここにやりたい処理を書く
beep;
inherited;
end;
> //ここにやりたい処理を書く
TImage を使用してるんだから、再描画は自動的に行われる。やりたいことなどなんにもない。
>>799 は質問自体がネタ
>>811 すいません、もう少し教えてください。
UTF-16LE 文字列ですが、バイト配列のデータです・・・
最終的にはString型に変換したいのです。
WideCharLenToString とかをどのように使えばいいのかが解りません
(というか、どうすればいいのか解りません)
バイト列の先頭アドレスを(キャストして)WideStringに代入 WideStringをそのままAnsiStringに代入 これ以外にどう解釈しろというんですかね
>>814 const
ws: WideString = 'あいうえお';
var
astr: string;
begin
astr := ws; <---ここでブレークしてCPUウインドウでみればどんなコードが補われているか良く分かる
end;
817 :
デフォルトの名無しさん :2005/04/11(月) 08:54:41
インターフェース=COM専用で無い事は知っていたが > [Kylix:01023] Re: 使えない interface > 「親を TInterfacedObject にせずに、独自のものを使えば、 > 勝手に破棄されないものも作れます」 これは知らんかった orz
818 :
デフォルトの名無しさん :2005/04/11(月) 08:56:30
ペイントブラシを非表示で開いてそれに印刷させる、なんてことはできますか?
"(…)\mspaint.exe" /p "%1"
820 :
818 :2005/04/12(火) 16:37:54
ヲオ,レスサンクツ
>>819 印刷出来ます田。
どうやってその内容調べられましたか?
といいますのは、
プレビューの場合のコマンドラインがどうなるのか知りたいのですが、
連続質問出すと、教えてクンみたいですよね...
>>820 ファイルの関連付けをミロ。てかここは上級者用スレだぞ。
>>821 エクスプローラのフォルダオプションでファイルの関連付け見ましたが、プレビューはありませんが...
>>822 プレビュー、プレビューっていまいち意味わからんがWindowsの画像ビューワのことか?
それだったらShellExecuteで開けばえんでないかい。
>>823 ペイントブラシのプレビューコマンドが知りたいです。
ついでに、これらの情報はWindowsのどこをみれば分かるのでしょう?
>>824 PC初心者板行って来い。
Delphi と何の関係もない。
828 :
デフォルトの名無しさん :2005/04/20(水) 09:59:33
初心者スレで質問をしたのですが、 結局わからなかったので、こちらでも質問させていただきます。 FormをDockしたりUndockしたりすると Form上に配置していたコンポーネントのDataプロパティから オブジェクトを正しく参照できなくなるのを回避するためにはどうすればよいんでしょうか。 例) Form2にTreeViewを配置 TreeViewに適当にNodeを追加 NodeのDataプロパティに適当にオブジェクトを参照させる Form2をForm1にドック 先ほど参照したオブジェクトが参照できなくなる という感じです。 どなたかご存知の方、教えてください。 Delphiのバージョンは6Personalです。
なんてこったい。 もう一度実験してきます。
>>831 あまりいいやり方じゃないけどこれでできるんじゃない?
CreateProcess でペイントを起動する。
ペイントのウィンドウを探す。
PostMessage で WM_COMMAND を送ってメニューを操作したことにする。
Windows 2000 SP4 の場合 ItemID = 57609。ほかは違うかも。
OLEを使って出来ないかって質問では?
>>828 form2.dock(form1,...);
form2.dock(nil,...); //ここで参照不能になる
当環境ではundockしたら参照できなくなった
836 :
828 :2005/04/22(金) 03:10:29
どうにかして回避できませんかね。それ。 ご存知の方いらっしゃいましたらご教授お願いします。
837 :
デフォルトの名無しさん :2005/04/26(火) 03:02:15
AnimateWindowで、ウインドウにフォーカスを移さずにフェード表示できる方法誰か知りませんか?
TStream系の派生クラスでSeekメソッドをオーバーライドする場合、Resultには何を入れれば いいんですか? ヘルプには何も書いてないのですが・・・。
839 :
838 :2005/04/26(火) 20:11:54
自己解決しました。Positionの値ですね。
840 :
デフォルトの名無しさん :2005/04/27(水) 00:21:36
TStringGridの質問です。 セルの結合(2行結合)をやってみたのですが、結合したセルに入力しようとすると 1行分のフォーカスになって入力した内容が上にずれてしまいます。 EXCELのように結合したセルでも正しく表示できないでしょうか? 環境はD7です。 ご教授お願いします。
For all you Australian pascal developers out there. The May 2005 edition of the magazine APC comes with a copy of Delphi 2005 Personal Edition on the DVD. You still have to obtain a license from Borland to run it but thats the only thing required to use it for free. I would suggest reading up on the license terms for using this application as you can only use it for Personal and not Commercial usage.
よし、オーストラリア行くか。
IEコンポーネント使って変り種ブラウザ作ってるんですが、 サーバーから取得したHTMLをIEコンポーネントがレンダリングする前に 書き換えたいのです。 (あとからDHTMLで書き換えるのではダメなんです。) 都合のいいイベントとかフックする方法あったら教えてください。
普通にhttpでソースをリクエストして、 書き換えてから書き換えたHTMLソースを IEコンポーネントに投げる。
845 :
843 :2005/04/29(金) 12:31:21
レスありがとさん。 その方法も考えた、というかその方法でコーディングしてたんですが リンクをクリックされた場合とかフレームの場合とかの制御が大変とか 認証が必要な画面でIE標準の動作が出来ないとか カレントURLによってHTMLの動作が変わってしまう(相対アドレス)とかとか・・・ 色々問題が出てきたんでちょっと僕には無理っぽいなと断念しました。 温泉いってる間に神様出てくることを祈っとこう・・・
TWebBrowser.DownloadBegin // DL開始時 TWebBrowser.DownloadComplete // DL完了時。ここで TWebBrowser.Document を操作 TWebBrowser.DocumentComplete //レンダリング完了時
スクリーンの垂直リフレッシュレートはdelphiのプログラムから取得できますか?
>>847 やるとしたらレジストリかAPIになると思うけど
849 :
デフォルトの名無しさん :2005/05/27(金) 05:07:07
ステータスバー上にプログレスバーを配置する方法を教えてください
dfm直接いじってもできるけどね
ToolBar2000+TBXで実験がてら遊んでおります。 で質問なんですが、ソフトの起動時にどのドックにはまってたのかを復元する方法が判りません。 DockRowやDockPosやらでは、はまってたドックでの位置は復元出来ますが別のドックにはめるとナニな訳です。 誰かご存知の方おられませんでしょうか?
854 :
853 :2005/06/01(水) 23:04:51
すんません、自己解決しました。CurrentDockとかLastDock使えばよかったようです。
671〜 で書かれているACMを使って、MP3をデコードする方法を参考に自分でも組んでみましたが つまずいてます・・・ acmStreamConvertを実行した後に入ってくるbufferに何も入ってこないのです。 どなたか分かる人いますか?
856 :
855 :2005/06/08(水) 22:41:50
ソースはこんな感じです。 var mp3buf,wavbuf : array of byte; block_size, raw_buf_size : DWORD; acmStreamOpen acmStreamSize は問題なく通過してます。 //各バッファの確保 SetLength(mp3buf,block_size); SetLength(wavbuf,raw_buf_size); FillChar(ash, sizeof(ash), 0); ash.cbStruct := sizeof(ash); ash.pbSrc := PByte(mp3buf); ash.cbSrcLength := block_size; ash.pbDst := PByte(wavbuf); ash.cbDstLength := raw_buf_size; mmr := acmStreamPrepareHeader(hstr, ash, 0); // 結果判定 if mmr <> 0 then begin showmessage('ヘッダ取得に失敗しました'); end; //ファイルからデータ読み込み blockread(f,mp3buf[0],block_size); //データ変換 mmr := acmStreamConvert(hstr, ash, $30); if mmr <> 0 then begin showmessage('変換に失敗しました'); end;
857 :
デフォルトの名無しさん :2005/06/09(木) 14:52:29
TPrinterの用紙トレイ値、DMBIN_とかいうやつを取得する方法教えて下さい。
858 :
857 :2005/06/09(木) 15:17:24
>用紙トレイ 給紙トレイ=ビン というみたいでつね。
859 :
857 :2005/06/09(木) 19:49:01
TNkPrintDialogというのが給紙トレイを使えるそうなんですが、 使い方が分からない...
861 :
デフォルトの名無しさん :2005/06/10(金) 09:24:57
TPrinterSetupダイアログで設定された内容を、 Windowsに反映できますか?
> Windowsに反映 って何だ?
>>862 コントロールパネルのプリンタ設定の中の人が、
ダイアログで設定した通りになってる、という意味で津。
ずいぶん身勝手なアプリだな。
反映しないのが普通なんだ? TPrinterSetupダイアログから、給紙トレイが取れなくて困って待つ。 で、Winに反映してから取ろうかなぁ、と。
TFrameに独自のイベントを追加し、そのフレームを貼り付けた フォームで、追加したイベントを発生することはできないでしょうか?
868 :
866 :2005/07/08(金) 09:48:17
例えば、フレーム内にボタンが貼り付けてあるとして、 そのボタンをクリックすると、フレーム内のクリックイベントが発生しますが、 その後、フォーム側でこのボタンがクリックされたことを知りたいのです。
貼り付けたフォームで参照できるように、フレーム内publicにOnButtonClickみたいなイベントかいたら?
>>868 フォーム側でイベントハンドラ設定して、その中からフレームのイベントを呼ぶってのは?
×フレームのイベント ○フレームのイベントハンドラ スマソ イベント呼んだら無限ループだ
872 :
866 :2005/07/11(月) 08:44:28
>>869 それが、コンポーネントのようにイベントの追加がうまくできないのです・・・
873 :
869 :2005/07/12(火) 16:35:56
>>872 フレームにあるボタンのイベントを貼り付けたフォームから設定すると解釈して
TMyFrame = class(TFrame)
private
FMyButtonEvent: TNotifyEvent;
procedure DoMyButtonEvent(Sender: TObject);
public
property MyButtonEvent: TNotifyEvent read FMybuttonEvent write FMybuttonEvent;
end;
procedure TMyFrame.DoMyButtonEvent(Sender: TObject);
begin
if Assigned(FMyButtonEvent) then
FMyButtonEvent(Sender);
end;
procedure TMyFrame.ButtonClick(Sender: TObject);
begin
DoMyButtonEvent(Sender);
end;
後は貼り付けたTForm側で
TMyFrame.MyButtonEvent := MyEvent; //実行したい手続き(型をTNotifyEventにあわせるように)。
て書くだけ。
いかがでしょ?
874 :
866 :2005/07/13(水) 16:24:11
>>873 ありがとうございます。
でも、TForm側のコードをどうすればいいかさっぱりです;;
ご教授お願い致します。
875 :
デフォルトの名無しさん :2005/07/13(水) 17:27:25
流石はDelphi上級者だな 言うことが違う
わはははは、最後の4行の意味がわからないようじゃ、絶対無理だわ
マルチだし、ほっとけ
878 :
デフォルトの名無しさん :2005/07/14(木) 08:50:06
QuickReportの復帰はもう無いんでつか?
>>877 マルチだからほっとくというのは、どういう理由で?
何の根拠で?万人に理解できる返答が欲しいものだな
あっちで解決してるから
あっち見ればいい。
ようするにマルチポストの弊害なわけで、それをしたほうが責められるべきで 他人に当り散らすのは筋違いだ
知らなきゃ、別にどうにもならない。
質問者がマルチポストして、しかも両方放置しておいて逆切れはみっともないな
>>885 違う。知らなければ、こちらしか解決の場が無いので、
マルチポストは第三者にとっては弊害ではない。
第三者は質問者じゃないから解決する必要なんかないじゃん
かわった第三者だな
>>889 同じ疑問を持った第三者がいたらどうだ?
だったら質問しなよ。ここでもあっちでも解決ずみだよ。 質問者が理解できないだけ。 同じ疑問をもってかつ今回の質問者と同じレベルの第三者はきわめてまれだろうな。
まっ、マルチした最初の質問者を恨むべきだろうな
894 :
デフォルトの名無しさん :2005/07/15(金) 10:13:39
>>894 ソース買うしかない。
QuickReport最初は使いにくいと思ったけど、今はコレ無しじゃ帳票作るならん・・・
896 :
デフォルトの名無しさん :2005/07/15(金) 13:57:14
>>895 ソース買ったらD2005で使えるわけ?
なら買うぞ。
>>896 本家みろよ。
D2005ってかいてあるだろ?
つーかソース買うのに下位で動いてて、D2005で使えないわけないだろ。
ソースからコンパイルするとヒントや警告がでてウザイかもしれんが、そこは自分で直せ。
898 :
デフォルトの名無しさん :2005/07/26(火) 03:46:45
899 :
デフォルトの名無しさん :2005/07/26(火) 21:38:04
製品のQuickReport買えば、Delphi2005でも使え待つか?
900 :
デフォルトの名無しさん :2005/07/26(火) 21:44:04
製品のQuickReport買えば、Delphi2005でも使え待つか?
901 :
デフォルトの名無しさん :2005/07/26(火) 21:46:35
製品のQuickReport買えば、Delphi2005でも使え待つか?
>899-901 回答出てましたね。 QRのソース買う方向にしてみまつ。 でも実はD2005じゃなくて、次のBCB(Del統合予定のやつ)で使うので若干不安。
903 :
デフォルトの名無しさん :2005/07/27(水) 11:52:50
いきなりで失礼しますが質問させて下さい。 税込み原価価格から税抜き原価価格を計算する処理をしているところで、 ごく一部なんですが、正しい価格と1銭差が出る場合があるようなのです。 (正)税込み:80.85 税抜き:77.00 (誤)税込み:80.85 税抜き:77.01 ← こうなる時があるようです。 ただ、私の所では再現すら出来ず、原因究明が滞っている状態です。 おかしい点や「ここでそういう事おきるって聞いたことあるよ」というご指摘が頂ければ幸いです。 原価価格は小数第2位以下は切り捨てと考え、消費税は5%計算です。
904 :
903 :2005/07/27(水) 11:53:56
ソースは下記の通りです。 function F_Get_Hontaikakaku(Hasuu:Integer): String; var Zeikomi:Currency; Zeiritu:Double; Zei:Double; begin Result := '0'; if txtZeikomi.Text = '' then//空だったら0を指定 Zeikomi := '0' else Zeikomi := txtZeikomi.Text; Zeikomi := StrToCurr(Zeikomi); Zeiritu := 0.05 * 100; Zeikomi := Zeikomi * 100;//小数点の計算(切り上げ、四捨五入)ができないので*100
905 :
903 :2005/07/27(水) 11:54:59
ソースの続きです //端数処理 if Hasuu = 1 then//切り捨て Zei := trunc((Zeikomi * Zeiritu) / (100 + Zeiritu)) else if Hasuu = 2 then //切り上げ Zei := Ceil((Zeikomi * Zeiritu) / (100 + Zeiritu)) else if Hasuu = 3 then //四捨五入 Zei := trunc((Zeikomi * Zeiritu) / (100 + Zeiritu) + 0.5) else Zei := 0; Zeikomi := (Zeikomi - Zei) / 100; Result := FloatToStr(Zeikomi); end;
それ、簡略したコード? Zeikomi := StrToCurr(Zeikomi); ってコンパイルエラーになるでしょ? バリアントでもないなら で、 Zei := trunc((Zeikomi * Zeiritu) / (100 + Zeiritu)) が怪しそうだよ。
907 :
デフォルトの名無しさん :2005/07/27(水) 13:15:32
>>906 略したコードです。
というか余計な部分を端折ってあるうえに分かりやすく少し書き換えてあります。
>Zei := trunc((Zeikomi * Zeiritu) / (100 + Zeiritu))
>が怪しそうだよ。
ここですか。。
うーん。せめて問題の現象が再現できていればもう少しなんとかなるんですが・・。
ご返答ありがとうございます。
むかーしのことだけど、どっかのいんてりマウスドライバと、どっかのうんぬIMEが コプロの丸め精度フラグを下げっぱなしにしてくることがあった。 (割り込み時のコントロールワードの戻し忘れ) もしかすると誰かに銀行家丸めを変更されているとか。 0.05%とかをそのまま使わないで(小数点以下が出ないようにして)、最後の最後で100とかで割るといいよ。 あと、消費税は2進数できれいに表せる数にしてくれよ>政府 暑いから納涼話どう?
>>908 そうしてるようだが
で
>>903 よ、なぜCurrencyとDoubleを混在させる?
ZeikomiがCurrencyならZeiだってCurrencyでいいし
ZeirituだってCurrencyでいいじゃん
910 :
デフォルトの名無しさん :2005/07/27(水) 13:40:22
>>908 うーん。一応消費税は
>Zeiritu := 0.05 * 100;
のところで100倍してから計算に使用してるんですけど、
なんか順序とかがおかしいんですかね?
truncするタイミングとか・・??
正しい値が出たり出なかったりとかはやっぱり環境とかも影響あるんでしょうか。
911 :
デフォルトの名無しさん :2005/07/27(水) 13:45:10
>>909 >なぜCurrencyとDoubleを混在させる?
前任の作成した関数(さっきのソース)なので
私も「なぜ」かという所までは・・。
(前任は既に会社を辞めております)
やはりそのへんもあやしい部分なのでしょうか?
現象が再現されないうちにそういうあやしい部分を潰していくと
修正が完了したのかどうかも判断が付かないので
へたにいじることが出来ないのが現状です。。
なにぶん「なんかおかしいからコレ直して。はいソース」という状態でして・・
913 :
デフォルトの名無しさん :2005/07/27(水) 14:50:10
>>912 今読み終わりました!
大変参考になりました。ありがとうございます。
やっぱり
>>909 さんからご指摘頂いている
CurrencyとDoubleの混在あたりがいけないようですね。
Currencyで統一すれば誤差はなくなりそうです。
ただやはりこちらで再現出来ていない状態で手直しして
「直りました」は説得力がないですよね。。
うーん。
さすがにこればかりは自分の力でなんとか頑張ってみます。
皆さんのおかげでなんとかなりそうです。
たくさんのご教授ありがとうございました<(_ _)>
914 :
908 :2005/07/27(水) 16:44:07
>>910 >>Zeiritu := 0.05 * 100;
>のところで100倍してから計算に使用してるんですけど、
もしかしたら定数にするのに0.05を変換しきれなくて、100かけても
≠5.0かと思っただけ。
杞憂だと思うけど。
再現できる環境の確保がポイントですね〜。
あと、状況を絞り込んだ(ボタン押すと結果だけ出す)プログラムなどを相手に渡すとか。
>>902 今のうちにD2005買っとけ。
up3+FastMMで使えるレベルだから。
次のバージョンも安定するまで半年はかかるだろうしね。
>>908 俺も金額計算する時によくはまったな。
Currencyはたしか少数以下4桁まで保障だっけ?
Currencyが6桁まで保障してくれたらいいのにな〜なんて材木関係の仕事の時に思ったな。
917 :
903 :2005/07/27(水) 17:18:16
みなさんいろいろと案を出してくださってありがとうございます。 ですが「再現出来なきゃあてにならない」と言い換えされてしまいました。。 うぅ。そう言われるのは当然なんですけど・・。・゚・(ノд`)・゚・。
>>917 現象が発生する環境では常に発生してないとおかしい
もしかしてやたら古い機械じゃまいか?
919 :
903 :2005/07/27(水) 17:47:25
>>918 実は常に発生しているかもハッキリしていないのです。
情報が少なくて・・。
えっと。とりあえず、
その現象が再現できるPCを特定→手直ししたものをそのPCで実行→それから判断
という流れで問題を潰していくことになりました。
私のところでやっていても再現は難しいだろうということで。
みなさん本当にお騒がせしました。。
ありがとうございました。
>>917 データ見せられて、おかしいよって言われてるわけだよね?
そしてその計算部分の特定は出来てる。
あとは、その使用しているデータを客にきけばいいのでは?
もしくは、その部分だけ読み取って計算するような小さなプログラムを客先で動かしたら?
>>903 >>920 にも書いてあるがStrategy パターンでも使用した新しいソースと古いソースの計算結果を
照らし合わせ異なる場合のみ、そのデータを適当に抜き出すような小さいプログラムを作れ。
計算誤差はいったんstring型にしてから、元の型に戻せば解消されることが多い。
923 :
906 :2005/07/29(金) 07:12:11
まだ解決してないの? 再現するには、大量の乱数を発生させてこのルーチンを通してやればいいじゃない。 そして、再現した数字でトレースすれば簡単に判るでしょ。 たぶん、皆が書いてるように Zeiritu := 0.05 * 100 ってのが実際にこう書いてるなら 5になってるけど 0.05が変数なら (1+0.6)*2^(-5) で 0.6は 16進数で書くと 0.9999999999999999と無限小数だ だから、 0.05 * 100 しても5にならない。 で、 Zeiritu:Double; Zeikomi:Currency; でZeikomi * Zeiritu すると、結果は浮動小数点型になる。 つまり trunc( Zeikomi *5/(100+5) ) と trunc( Zeikomi *4.999999999999..../(100+4.999999999999.....) ) が同じになるかという事になるわけだけど
924 :
906 :2005/07/29(金) 07:18:32
で、こういうのを予防する方法としては
>>922 の言うように誤差を10進化して丸めながら計算するといい
いちいち文字列形にするのは格好悪いと思うならCurrency流に計算すればいい。
変数をExtend型にして、1000倍とか1万倍してroundすればいい。
つまり、2桁で常に丸めるなら
Zeiritu := 0.05 * 100 ではなくて Zeiritu :=round( 0.05 * 100) とする
4桁必要なら
ZeirituX10000 :=round( 0.05 * 10000) とする
実際に計算する時は round(ZeirituX10000 * Daikin)/10000てな感じね
925 :
906 :2005/07/29(金) 07:26:18
それから、状況を悪くしているのは Zeiritu:Double; にしている事。 浮動小数点型はExtendedで計算されるから いわば πに 3.14 つかって、半径1メートルで円周を求めて 6280mmなんて書いてるような状態になる Extended同士で計算させてれば、もっと滅多に起きなかったろう・・・まあもっと状況が悪いとも言えるが
926 :
906 :2005/07/29(金) 07:37:27
>>913 >Currencyで統一すれば誤差はなくなりそうです。
ってのは注意しないといけない。Currency形ってのは 1万倍して保持しているだけだから
Currency*Currency は 掛け算して1万で割るわけで
誤差が無いのは小数点2桁同士の掛算まで。
Currency同士の割算が入ると、それは浮動小数点で計算される
ファイルをPC外に持ち出されないように、 エクスプロラーで、「コピー」操作を 行った段階で、その事をDelphiから 感知する方法はありますでしょうか。
いわゆるクリップボード監視アプリでは似たようなことやっているけど、 ドラッグアンドドロップとか、ファイルダイアログでのファイル移動操作とかも考慮すると、 完全に防ぐのは難しい。
satoといいます。 ファイルをPC外に持ち出されないように、 エクスプロラーで、「コピー」操作を 行った段階で、その事をDelphiから 感知する方法はありますでしょうか。 よろしく、お願いします。 Windows2000 Delphi6.0です。
MLと2chでマルチする人も珍しい
フィルタドライバってネットに資料全然ないな(英語では調べてないけど) ファイルを暗号化して別ファイルとして保存、別のプログラムで復号したら トラッキングするのはかなり難しくなりそうだけど・・・ 難しいというか、面倒と言うべきかな
929 であげた資料は日本語ですが... 普通の SDK の外の資料だからあまり読む人はいないのかもしれないけど、 プリンタドライバとかでも必要だから、読む人は読んでいるんだろう。 ファイルシステムを丸ごと作るわけではなく、ミニポートドライバを作るだけで すむから、速度を気にしなければ COM が使える人なら簡単なんだけどね
936 :
デフォルトの名無しさん :2005/09/01(木) 13:39:09
すみません教えてください。 Win32APIのReadConsoleとか使ってコンソールアプリを作っているのですが パスワード入力のところで、エコーバック無しで入力させたいのですが どのようにすれば良いのでしょうか? SetConsoleModeとか?いろいろやってみたのですがダメです。
937 :
936 :2005/09/01(木) 16:00:25
ありゃりゃ、このスレってよく見たら氏んでた? Win32API質問箱でもいってくる。 マルチになるんでこの質問はスルーしてください。
Delphiでコンソールってあんまりやらないからな まあ、がんばってくれや
939 :
デフォルトの名無しさん :2005/09/28(水) 20:37:06
DLL を使うアプリなんだけど、 もしDLLが無ければそのDLLを吐き出して終了して 次実行したらDLLが使えるというような仕掛けにしようと思うのだけど、 実行時動的リンク だと大量にある関数をいちいちポインタ表現するのが面倒 ロード時動的リンク だと、ロード時にエラーメッセージが出るのは良いとしても その後の実行で SysInit InitializeModule 内でメモリアクセスエラーが出て強制終了されてしまう。 スマートな解決方法は何かあるかな? 案1、別の実行ファイルでDLLがあるかどうかだけチェックする・・・・結局格好悪いし普段の起動が遅くなる 案2、_InitExe を書き換えてしまう。 ・・・・これだけの為にはチョッと・・・
DLLをロードする前にチェックするんじゃだめなのか?
>>940 それは実行時動的リンクでしょ。
なにせ100近く関数があるから
全部の関数ポインタとを書くのは、ちょっと勘弁してくれって感じ。
・・・・でもそうするしかないか。
みんなどうしてるんだろ? 正規表現置換でやれば、それほどでも無いのかな?
>DLL を使うアプリなんだけど、 >もしDLLが無ければそのDLLを吐き出して終了して >次実行したらDLLが使えるというような仕掛けにしようと思うのだけど、 別に終了する必要はないし・・・そのまま動的リンクへ >実行時動的リンク だと大量にある関数をいちいちポインタ表現するのが面倒 >ロード時動的リンク だと、ロード時にエラーメッセージが出るのは良いとしても >その後の実行で SysInit InitializeModule 内でメモリアクセスエラーが出て強制終了されてしまう。 >スマートな解決方法は何かあるかな? 面倒でも動的リンクでいちいち記述するのが逆にスマートかも
>>939 読んで何かつっかかえていたんだが、ヘルプひっくりかえして思い出した。
Delphi for .NETには仮想ライブラリインターフェースっつうDLLの遅延ロードに便利そうなものが新設されてた。
まあ_InitExeなんて書いてるぐらいだから.NETはお呼びでないだろうが。
944 :
939 :2005/09/28(水) 21:33:59
今まで、実行時動的リンクする時は
procedure Hoge(hage:Integer);
begin
if assigned(pHoge) then Hoge(hage) else MyRaise( 'Hoge');
end;
こんな感じのを作ってたけど、
さすがにこれを100も書くのは無理。
それをあきらめて、直接間接コールさせれば、 正規表現置換で出来そう。
>>943 うん。 いまだにD5だし
ロード時動的リンクでロードできなかったらDLLを吐いた後即座に終了して、 自分自身を再実行させるんではだめですか 再実行は終了直前に別のプロセスとして起動させるか batファイルを吐いて実行させるか
946 :
939 :2005/09/28(水) 22:02:12
>>945 ロード時動的リンクはOSがまずエラーメッセージを出すみたい。
これはいいんだけど、
ロード時動的リンクに失敗すると、Delphiで作ったアプリは
その後のセットアップルーチン内でメモリアクセスエラー出してしまうんで
結局DLLを吐き出す事が出来んのです。
それには、スタートアップルーチンである InitExeを書き換えてしまうしかない
で結局
procedure Hoge(hage:Integer); stdcall;
↓
procedure RaiseHoge(hage:Integer); stdcall;begin MyRaise('Hoge');
type THoge = procedure (hage:Integer); stdcall;
var Hoge:THoge;
さらに
p=GetProcAddress(hModule, 'Hoge'); if p=nil then Hoge=RaiseHoge else Hoge=THoge(p);
とやれば、正規表現置換でなんとかなりそう
なるほどね ただLoader.exeの可能性も考えていいんじゃないか? programからVCL抜きで小さいの作れば起動もそれほど遅くならないし それはそれでスマートだと思うけど
とか何とかやってる間に100個位書けるんジャマイカ
要は実行タイミングが得られればいいんだろ? もう一個DLL作って、それが最初にロード時リンクされるように 順番を調整して、そのDLLの中で目的のDLLの存在確認をとる なんてのはどうだ? 思いついただけだが。
それか、_InitExe直せるぐらいなら自己書き換えなんて楽勝だろ。 .exeでもDLL同様にエクスポートはできるから、 100個の関数をプロトタイプと名前を合わせた ダミー関数として作っておいて自身のエクスポートテーブルに載せる。 あとは自身のエクスポートテーブルを参照して、 各関数と同名でGetProcAddressして、結果によって ダミー関数の実体を書き換えてやれば…。 思いついただけだってば。
951 :
デフォルトの名無しさん :2005/10/13(木) 18:33:55
procedure TForm1.Button1Click(Sender: TObject); var Form2: TForm2; begin Form2 := TForm2.Create(self); Form2.Show; Form2.Parent := self; end; ↑ こうして実行すると、チャイルドウィンドウとしてForm2が開かれます。 ここでForm2がForm1の範囲をはみ出すとForm1にスクロールバーが出ます。 その後マウスでForm2移動してを内側にした上でスクロールバーをクリックすると、 エラーが出ます。(スクロールバーはVerzとHorzと両方の場合のみ) これって何でエラーが出るんでしょうか? 対策として、Form2が動いたときForm1のスクロールのアップデートをしようかと思っていますが、 どういうコードに
MDIFormではダメなの?
953 :
951 :2005/10/13(木) 18:46:45
>>952 あ、その存在を忘れていました。
確かにMDIフォームならスクロールバーはリアルタイムに直されますね。
でも、ボタンの下にForm2が入っちゃう。
954 :
951 :2005/10/13(木) 18:55:57
やっぱりMDIフォームじゃない解決策お願いします。
Form を Form に貼り付けるような厨房アプリなんてつくるなよー
>>955 フレームがない頃はFormPanelなんてのがあったりしたなぁ。
今でもドッキングがあるし、普通じゃない?。
なら、ドッキングさせりゃいいじゃない
Frame もすでにあるし
959 :
デフォルトの名無しさん :2005/10/31(月) 09:03:33
TPanelとか、回転できますか?
そのままの形では回転できない。モニタ回すしかない。
じゃあ、TPanelに回転機能を付けたコンポーネント希望。 ネットに落ちてないかな?
>>959 >>961 ここってDel上級者用じゃないのか?
回転したいpanelのRectを部分の画像をコピーして回転させればイイじゃん。
それを別で表示
965 :
デフォルトの名無しさん :2005/10/31(月) 13:37:41
>>962 その内容をコンポーネント化する方法きぼんぬ。
画像を回転してもウィンドウを回転したことにならないよ
TPanel は子ウィンドウなのでウィンドウとしての性質はOSが決めている。 だから真の意味では回転できない。
968 :
959 :2005/10/31(月) 13:49:35
ウィンドウ自体回転になってなくても良いです。 でも、TImage(おっと、今使ってるのTPanelじゃなかった、TImageのビットマップだった)の中の ビットマップの人が回転してて欲しいでつ。
イメージ 回転 Delphi でググル
Canvas.Pixels[X,Y]でアクセスすると激遅になるだろうし、 結構面倒だね。
972 :
962 :2005/10/31(月) 16:39:56
>>971 Scanlineで取る事ぐらいするだろww
上級スレにしては回答も低級すぎだな
煽れば教えてもらえるという考えは誤りです。
975 :
デフォルトの名無しさん :2005/11/01(火) 15:17:59
2005でMSAccess2003で作ったdb1.mdbに接続したいのですが、 データエクスプローラでMSAccessに新しい接続を追加して 「接続の変更」でプロパティ画面見たいのを出して、 「Database」のところにdb1.mdbのパスを入力して 「Password」と「UserName」をくうらんにして テストを押したのですが、 「接続が開きませんでした」とメッセージが出て接続できません。 誰かお知恵を貸してください。
976 :
デフォルトの名無しさん :2005/11/02(水) 12:22:53
既にあるExeファイルのアイコンを書き換えようと思っているんですけど どうすればできるのでしょうか? Delphiに限らずどこかにサンプルとか落ちてないですかね。。。
977 :
デフォルトの名無しさん :
2005/11/02(水) 12:37:27 >>976 UpdateResourceでできるようです。