1 :
デフォルトの名無しさん :
2009/02/22(日) 22:10:29
>1乙です
/.:.:.:.:.:.:.:.:.:.:.:.:.:.:.ミY:.:.:.:.:.:.:.:.:ヽ
//::/:/.:.:.:.:.:.:.:.:.';:.:.:.}:.:.:.:.:.:.:.:.:.:.:'.
//:〃::/:/::/:::/::/ |:::j::ト、\::::::::::::::.
イ/|/j:::/l/ヽ{::/::/ j::/::j ヾ::ヽ::::::::::i
-=7{:小{イf心/l:/ ノ⌒メ {ヽ:ハ:::::::::|
/:/V} Vリ アi心 ミ:::}::j/:::::j
. /イ:::/:⊂⊃ , V_ソノ ノ`Y:::::::::リ
. |/l ::八 ⊂⊃ .)^ノ :::::;':|
|:∧::\ ` ィー::1::::::/:::{
>>1 乙
|::ハ::}::::>‐r 爪::{:::::::∧::::N八
'´ j∧/ }__,/{:从::::::|
/\/| ヘヽ{
乙イ 、\ /⌒ヽ
| L{.∨ / : : ⌒∧
|  ̄/: : : :/: : : : :}
| |: : :j/ : : : : : |
ある条件によってフォーム上のコントロールを切り替えたいのですが何か楽な 方法はないでしょうか? 1.ページコントロールを使い条件によって表示するタブを切り替える。 2.フレームを使って条件によってフレームを動的生成して切り替える。 の2通り考えましたが、他にないでしょうか? 1の場合、タブとページコントロールの枠線が消せないので気になります。
パネルに乗せる
>>8 PageControlの何かのプロパティの設定で完全に消せた記憶もあるが…
かなり以前のことなので覚えてないし、ソースも何もないんでゴメンね
>>88 フラットにしてtab非表示にしたら消えなかったっけ?
SpTBXLibっての使ってる方います?
>>8 です。
>>10 ,11
色々プロパティいじってみましたが消せないですね。
>>9 のパネルで切り替える方法でやってみたいと思います。
ありがとうございました。
タブの部分がフォームからはみ出るように配置という姑息なことをしたことがあるw
StyleをtsFlatButtonsにして各ページのTabVisibleをFalseにすれば完全に消える デザイン時はPageControlのActivePageを切り替えて編集すればおk まあ、パネルに決めたんなら止めはしないけど
最新版にあるか分からないけどTNotebookは?
教えてください。 フォームをリポジトリに登録する方法で RegisterComponentsみたいなやり方って無いですか?
BlockList: TImageList; omoteGa: TImage; FBord: array[0..9, 0..12] of Integer; //(1)背景を敷き詰める procedure TForm1.BackPaint; var i,j : Integer; begin for j := 0 to 14 do for i := 0 to 20 do BlockList.draw(omoteGa.Canvas,i*XYDOT,j*XYDOT,BCK); end; //(2)ワクを描く procedure TForm1.BordPaint; var i,j :Integer; begin for j := 0 to 12 do for i := 0 to 9 do begin FBord[i,j] := 0; if (i = 0) or (i = 9) then FBord[i,j] := WAK; if j = 12 then FBord[i,j] := WAK; BlockList.draw(omoteGa.Canvas,(i+5)*XYDOT,(j+1)*XYDOT, FBord[i,j]); end; end;
19 :
続き :2009/02/25(水) 01:34:31
//(3)テキスト表示 procedure TForm1.TextShow; var j,i: Integer; begin for j := 0 to 12 do for i := 0 to 9 do omoteGa.Canvas.TextOut(i*10,j*10, inttostr(FBord[i,j])); end; (1)、(2)を単独で最初に実行すれば意図されたとおり描かれるのですが、(1)で背景を描き その上に枠を囲うとして(1)→(2)の順で実行してもうまくいきません。ところが (1)→(2)→(3)の順に実行するとうまくいきます。(2)→(1)としたい場合もいっしょです。 なぜ(1)→(2)だけではだめなのでしょう?
20 :
訂正 :2009/02/25(水) 01:35:20
> 囲うとして 描こうとして
どううまくいかないの?
22 :
18 :2009/02/25(水) 09:41:38
>>22 (1)ではBitmapが生成されていないので、描画されたときにPictureプロパティが変更されて表示される。
(2)ではRefreshメソッドが呼ばれてないので、再描画されない。
(3)ではTCanvasの描画メソッドを呼んでいるので再描画される。
(1)を実行前にTImageのPicture.BitmapオブジェクトのWidth,Heightを指定して
事前にTBitmapを生成しておけば(2)と同様に描画されない。
要は内部ビットマップへは描画されているが、TImageがまだ表示していないってことです。
最前面表示について色々調べたら以下のAPIでできることが分かりました。 SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE); ですが、メインフォームは問題なく最前面表示されますが、別のフォーム(Form2)を 表示させた場合、以下の動作になります。 MainFormをクリックして別アプリをクリックするとMainForm、Form2両方最前面 Form2をクリックして別アプリをクリックするとMainFormだけ最前面 ※Form2のCreateイベントにもSetWindowPosを書いています。 実際にはメインフォームは表示させずに複数のフォームを表示させて、それを 全て最前面にしようと思っています。 このようなことをやる場合は別の方法でやるのでしょうか。
最前面表示は止めた方がいいよ。べつのアプリも最前面表示をしようとすると ハチャメチャ。マルチタスク環境での反則技と心得るべし。 複数の最前面表示は意味が矛盾してる・
>>26 ありがとうございます。望んでいた動作をさせることができました!
>>23 > 要は内部ビットマップへは描画されているが、TImageがまだ表示していないってことです。
なるほどそういうものですか。
(1)(2)に omoteGa.Refresh; を追加しただけでOKでした。
TPaintBoxと異なり TImage は OnPaint で再描画しなくていいというのが頭に
あったものですからRefreshは不要だと思っていました。
TImage、TBitmap、TCanvas などをもう少し勉強してみます。
昔Canvas直描きでゲーム作ってたらチラつきにはまったの思い出した 自前でダブルバッファしてあげて解決したけど チラ裏おしまい
Delphi2009の新規プロジェクトにTButtonを貼るとXPスタイルで表示されますが Delphi7で作ったプロジェクトを開くとIDE上ではクラシックスタイルで表示されます。 実行すればXPスタイルで表示されますが、IDE上でも新規プロジェクトと同じように 表示するにはどうすればいいんでしょうか?
31 :
30 :2009/02/27(金) 10:52:33
自己解決。 ランタイムテーマを有効にして保存後、開き直したらできました。 失礼しました。
Delphi2009? 今年じゃん! いつの間にかそんなに進んでたのか… Delphi6や7と比べて良くなったのかな 簡単なツールしか作ってないけど、久しぶりにバージョンアップしようかな
Delphi2009はUnicode対応(専用)版だよ
現在、QuadrupleDを使って2Dゲームを作っています。 Zバッファを使用するにはどのようにすればいいでしょうか? 具体的にいうと、後から描画したテクスチャを 後ろに回りこませたりといったことがしたいのです。 チュートリアルのプロジェクトを改造して作ってみましたが、 デプスバッファに書き込む値を0以外にすると テクスチャそのものが表示されなくなってしまいます。 procedure TForm1.FormCreate(Sender: TObject); begin //とりあえずクライアント領域のサイズに合わせて画面を初期化 DG.WindowMode(ClientWidth, ClientHeight, DGFMT_ZDetail); : : procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin : : //スプライトを一個置け Scene.PushSprite(Vector2D(Tick,50), [SXVertexSP(0,0, $FFFFFFFF, 0.0,0.0), SXVertexSP(Texture.Width, 0, $FFFFFFFF, Texture.U, 0.0), SXVertexSP(0,Texture.Height, $FFFFFFFF, 0.0,Texture.V), SXVertexSP(Texture.Width,Texture.Height, $FFFFFFFF, Texture.U,Texture.V)], Texture,sxbAlpha,False,false,0.0); Scene.PushSprite(Vector2D(Tick,100), [SXVertexSP(0,0, $FFFFFF00, 0.0,0.0), SXVertexSP(Texture.Width, 0, $FFFF00FF, Texture.U, 0.0), SXVertexSP(0,Texture.Height, $FF00FFFF, 0.0,Texture.V), SXVertexSP(Texture.Width,Texture.Height, $FFFFFFFF, Texture.U,Texture.V)], Texture,sxbAlpha,False,false,0.0);
function TForm1.BlockSet(ix,jy:Integer):Integer; begin // FBord[ix,jy1] 0 --> 背景、1 --> 壁、2 --> ブロック Result := 1; if jy+1 <= YMAX then //下へ(1) if FBord[ix,jy+1] =0 then begin FBord[ix,jy+1] := 2; Result := Result + SubPaint(ix,jy+1); end; if jy-1 >= 0 then //上へ(2) if FBord[ix,jy-1] =0 then begin FBord[ix,jy-1] := 2; Result := Result + SubPaint(ix,jy-1); end; if ix+1 <= XMAX then //右へ(3) if FBord[ix+1,jy] =0 then begin FBord[ix+1,jy] := 2; Result := Result + SubPaint(ix+1,jy); end; if ix-1 >= 0 then //左へ(4) if FBord[ix-1,jy] =0 then begin FBord[ix-1,jy] := 2; Result := Result + SubPaint(ix-1,jy); end; end; //使い方 for j := 0 to YMAX do for i := 0 to XMAX do ImageList1.Draw(offBmp.Canvas, i*DOT, j*DOT, FBord[i,j]);
37 :
続き :2009/02/28(土) 14:37:00
マウスをクリックしたところから壁に囲まれた範囲を塗りつぶす処理をネット上で 見つけたのですが、なぜこれでいいのでしょう(笑)。人力トレースでは以下のよ うになると思うのですが。ix,jy をチェックしたら(1)の再帰が終わって(2)を実行す るとき ix が 1 増えています。これがわかりません。 ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■ ■ ■ ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ●●●■ ■●●●●■ ■ ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ■ ■ ● ■ ■ ● ■ ■ ● ■ ■ ● ■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ 最初 (1)下へ (2)上へ (3)右へ (4)左へ
>>36 が端折りすぎてると思うのは俺だけか?
どこに再帰があるのかさっぱりわからん。
SubPaintも何してるか分からないしな
基本的な質問で失礼します。 Delphi言語でJSPのようなWeb開発って出来ますか? 開発環境としてのDelphiではなく 言語としてのDelphiです。 つまりObject Pascal。
41 :
デフォルトの名無しさん :2009/03/01(日) 11:40:37
Delphi7で下記用に記述すると procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin i:=-2147483648; end; [エラー] Unit2.pas(31): 数値演算のオーバーフロー [致命的エラー] Project2.dpr(7): 'Unit2.pas' ユニットはコンパイルできませんでした コンパイルが通らないなぜでしょう
>>41 釣りじゃないよな?
Integerの範囲は-2147483648〜2147483647
43 :
デフォルトの名無しさん :2009/03/01(日) 12:14:22
>>42 delphi6,d2009は通りますけどd7は通らないので困っています
45 :
42 :2009/03/01(日) 13:01:03
すまん、-が見えてなかったorz 確かに編だな。なぜかi:=Low(Integer)は通る。
46 :
42 :2009/03/01(日) 13:02:44
×編 ○変 ダメすぎ…
Delphi 2009 で ドライブ名(C: 等) から、 DeviceIoControl に渡すハンドルを得る為の CreateFile へ渡すファイル名の取得にはどの様な手順を踏まえたらよろしいのでしょうか? 1. QueryDosDevice 2. GetDevNodeRegistryProperty の手順でよろしいのでしょうか? …なんか、全然Delphiっぽくない質問ですね…。 該当スレッドなどがあればそちらを照会させてくれると嬉しいです。
49 :
34 :2009/03/01(日) 21:20:59
自己解決しました。 デプスバッファへの書き込み値を0≦rhw<1にすると 正常に描画できました。
自前の手続きの引数にはvarを付けた方がいいの? 有りと無しの違いは?
ヘルプの「値パラメータと変数パラメータ」嫁
var str:string; Copy(str,1,4)とCopy(str,0,4)の結果が同じなんですが どっちでもいいんですかね?
Copyの場合のインデックスは1から始まりますよ。 0にした場合エラーにならなくてもワーニングが出てませんか?
Unicode対応のアプリで TNTのコンポーネントを使ってるんですけど、 TStringStream のUnicode版が無いんです(Delphi7)。 代替案かよさげなライブラリなどありましたら教えてください。
作れ
54です。TMemoryStreamのWriteとReadを使って何とかできました。
文字コードの変換の事で教えてください。 この手のコードとかは検索して見つかったのですが、 word型というのを使うみたいですが何故word型なんでしょうか?
58 :
デフォルトの名無しさん :2009/03/07(土) 14:18:49
Delphi7ではTCoolBarやTActionToolBarは不具合のあるので ちょうどDelphi2007も持ってるので 2007のTCoolBarやTActionToolBarをDel7にインストールして使いたいんですが こういったことはやはり無理なんでしょうか? もし可能ならよろしかったら方法を教えて頂けないでしょうか。 2007を使えばいいんでしょうが重くて使いづらくって…
59 :
デフォルトの名無しさん :2009/03/07(土) 14:54:10
パソコンを買い換えるのが吉
やっぱ買うしかないか…
Del7のに不具合とかあったっけ? 問題なく使っているかも
XPモード表示でTCoolBarにツールバーを何個か置いて 位置を移動すると変な動作をしたり、表示・非表示したりすると位置がずれたりします。 他コンポも何個かあった。
WndProcでWM_USER + $500を無視するといいんじゃなかったっけ?
>>57 文字コードが2バイトの符号なしなら変数も2バイトの符号なしのWord型だと扱いやすい。
Delphi使うとある面では業効率がいいのですが、Delphiのバグと格闘するという 何のためにもならない時間が増大します。誰か助けてください。
稚拙な質問の上に伝わらなかったらすまん。 Form上に動的に生成したパネルを4つalTopで配置。幅はform.height/4 それぞれのcaptionを1..4にしたとして、これの並び替えってどうやればいいんですか? 上から1234にしたり4321にしたり。
>>65 上にもちょっと出てるけど、よかったらDelphiのバグ教えてくれませんか?
なるべくそのコンポ使うの避ける。
>>66 一度全てをalNoneにして、上にしたいものからalTopではダメかな?
>幅はform.height/4
これがよくわからないけど。
Delphi2006のプロジェクトを2007でコンパイルすると、アプリケーションがタスクバーに出なくなるのは 何か解決方法ありますか。
>>69 なんか
Application.MainFormOnTaskbar := True;
みたいなコードが必要だった気がする
procedure A(param:integer)みたいなのがあって、 ボタン1が押された時に実行させるのですが、 この時Aが終了する前にボタン1が押されたら、 Aを別に複数実行みたいなことをマルチタスクを使わずに 行えますか?
>>68 失礼 高さです。フォームを4枚のパネルで埋め尽くす感じです。
教えていただいた方法では駄目でした。
>>73 いい加減ですまん。
各PanelのAlignをalNone
各PanelのTopに(Form.Height - PanelN.Height)を代入
上に置きたいPanelからAlignにalTop
これでそれっぽい動きをしたので、試してみて。
>72 マルチタスクが駄目ならマルチスレッドで。
マルチタスクってなに?
Windowsの世界ではマルチプロセスってことだと思う。
ファイルをD&Dすればunixサーバのscriptが実行されるものを作りたいんだけど、 何を調べればいいのでしょう? また、Cygwin、unix for windows、を使わずにできるものでしょうか? WinXPでDelphi6 personal 使ってます。
D&Dしたファイルがscriptにどう影響を与えるのかとか script本体はどこにあるのかとかさっぱりわからない。 sshを使うとかそういうイメージなんだろうか…。
>>78 あなたを使わずに別の開発者を使えば可能です
81 :
78 :2009/03/10(火) 06:50:53
>79 "calc"ってscriptがunixサーバ側に用意されてて、 たとえばWindows側にunix環境ができていれば、 $calc AAA.txt ってやるとAAA.txtがサーバで処理されて AAA.resultsが返ってくる。 これを、cygwinなどのunix環境無しで、AAA.txtをD&Dしてできないかと思いまして。 "calcstat"で処理の進捗を表示させるのが最終目標です。
82 :
72 :2009/03/10(火) 07:17:36
マルチタスクじゃなくて、スレッドでした。 ヘルプを見たりしましたが、別スレッドで実行するしかない みたいですね。 クリエートなんちゃらとかあるかと思いました。
83 :
デフォルトの名無しさん :2009/03/10(火) 10:27:31
>>78 セキュリティがザルなのでおすすめできないが
windowsプログラムからrcp,rshを起動すればいけんじゃない
rcp,rshならXPなら標準で入ってる
セキュアにしたいならssh
ただしWindowsには入ってないので自分で入手
突然でスイマセン 誰かdelphi perssonal もってたらください。
お断りします
86 :
78 :2009/03/10(火) 18:20:23
>>74 ども。確かに結果は得られました。
ありがとうございます。
しかし結局設計時に配置変えるときのような動作をさせるより他ないのかなぁ。
希望とは違うだろうけどalNoneのままそれぞれのTopを 0 Form.ClientHeight div 4 (Form.ClientHeight div 4)*2 (Form.ClientHeight div 4)*3 でOKなような。
俺の出番か
そんなものがあったのかorz
>>88 ですな。
結局top,left,width,heightを希望するよう逐次設定してやれば希望の動作はします。
アンカーやタグの存在に気付いたときのように、もっとスマートな方法があるのでは
ないかと思い、質問してみた次第です。お騒がせしました。
それぞれのalTopのパネルの上にalClientなパネルを置いて 配置換えするときはalClientなパネルのParentを変える ってのはどうかな?
forの中にforを作ったとして、すべてのループをBreakさせる手続きってありますか? BreakAllみたいな。
goto
exit
97 :
デフォルトの名無しさん :2009/03/12(木) 15:30:40
ECUで書かれたページを直接読み込んで、その中からキーワードを拾うときに ソースの1行がTStringList1行に入るようにはできませんか? ダウンロードするプログラムは初心者本のコピーなんですが、 どうも1単語になっているものが途中で切られて次行に行ったりするみたいで うまくキーワードを拾えないときがあるんです。 どなたか教えてください。
LoadFromFileをやめてReadlnで読む
ECUとか何だか内容が良く分からないけど全部1行というか改行を削除して 検索すれば良い気がするが、外してる感じも大。
>>94 if BreakAll then Break;
try for ... for ... if ... then raise Exception.Create('BreakAll'); ... except end;
多重ループは例外で抜けるのがよさげ
APIに関係しているかもしれないのですが、winsightで見ても表示されていないボタンに メッセージを送りたい時の調べ方について教えてください。 一応、optionでトレースするメッセージをマウスのクリックに絞って、メッセージを 見てるのですがイマイチ分かりません。 どう調べればいいんでしょうか? よろしくお願いします。
それは、絵に描いた牡丹だからメッセージは送れないよ。
そう思うんですけど、そのソフトの画面を切り替える外部ソフトがあるので 何とかならんかなと思って。
Spyでしらべてみれば。
つWindowTree.exe
del7pro actionmainmenuと同等のプロパティが付いてるpopupmenuがあったと思ったんだがない。 このバージョンには付いてないんだっけか?
ちょっと質問があります。 IDEのエディタが改行しなくなりました。ENTERを押しても次の行にカーソルが進むだけで、 実際の改行がされないのです。 ・既存のプロジェクトでも駄目 ・新規作成でも駄目 ・IDEの再起動でも駄目 ・OSの再起動でも駄目 開発がまったくできず困っております。 10年来Delphiを使ってきて始めて遭遇しました。 解決方法はないものでしょうか? 環境:BDS2006 Vista SP1
>>109 自己解決しました。
エディタが上書きモードになっていましたwwww
今まで上書きモード使ったことなかったぜ
ホフォすぎる俺・・・
>>34-35 QuadrupleDしらんけど、ZバッファONなら、
後から書いてZバッファが同じなら、先に書いたものの上に上書きはされないよ。
いいなぁ、RSSつながって。
TForm上でDirectXを表示させる事は可能でしょうか? 可能ならばどのようにすればいいのでしょうか?
Clootie
そのフォームのキャンバスのハンドルを表示先に指定する
116 :
113 :2009/03/15(日) 18:57:52
>>114-115 返信ありがとうございます。
ハンドルを指定すればいいのですね。
検索したらやり方がいろいろ出てきました。
アドバイスありがとうございました。
外部プログラムのボタンの位置をスクリーン座標で取得するにはどうすればいいですか? ClientToScreenにハンドルを指定する引数がないので、あれ?って感じです。
そのClientToScreen関数はTControlのもの Win32APIを使う場合はWindows.ClientToScreenとして、Windows.pasのものを使うと明示すするべし
119 :
117 :2009/03/16(月) 23:31:49
ありがとうございました。 外部アプリのボタンをハンドルではなく座標を指定して押すプログラムを 書いていて、Mouse_Eventで押すことは出来たんですがマウスカーソルが 動くのが嫌で調べていたら、SendInputというのがありました。 今回は別に使う必要はないのですが、これも座標を指定してクリックのメッセージ を送ることは出来るのでしょうか?
delphi2009で、それ以前のString[n]と同じような宣言をしたいときは どうしたらいいですか?AnsiString[n]というのは無いらしいし、 そのままString[n]では、全角を1文字としてしまうので使えないし。
>120 ウンコードの弊害です。あきらめてください。
>>119 WindowFromPointでその点にあるコントロールが分かるので、
そのハンドルを使ってWM_LBUTTONDOWNとWM_LBUTTONUPを送るとか
Win32でGroupBoxの上にコントロールを置いてると、
Zオーダーの関係でGroupBoxのハンドルが返ることがあるので注意
>>121 すまん、俺が勘違いしていたらしい。
そのままでいいみたいだった。ありがとう。
複数のレコードを1つのレコードとしてアクセスする方法って無い? type rec1 = rec2 + rec3;とか type rec1 = record(rec2, rec3);とか
r2、r3の記述は必須なので、望み通りではないかな? rec1 = record r2: rec2; r3: rec3; end;
129 :
117 :2009/03/17(火) 20:43:18
HD入れ替えてXPを入れ直したいんだけど、 Del7って認証受けなきゃダメだよね? 今でもページあるのかな? アップデートあるのかな?
D7なら認証を受けなくても使えないことはないわけだが。 認証しろとは言われるけど。
うちのPCには昨年末にDelphi7を入れたぞ。 確かやり方がややこしかったけど、それはVistaだったからのような気がする。
デバイコンテキストを使って文字列を書く時はTexteOutですけど、 その反対の書かれたテキストを取り出すのってないですか?
>>133 それが出来たらCAPTCHAで苦労しねーよ
137 :
デフォルトの名無しさん :2009/03/18(水) 18:25:13
アイコン選択ダイアログのアイコンリストのような32×32の アイコンをリストアップできるコンポーネントを どなたかご存知ないでしょうか? リストビューで代用しようと思ったんですが アイコン同士の間隔が広すぎて思ったようには出来ませんでした。
138 :
132 :2009/03/18(水) 18:47:06
>>137 TListBoxでもTDrawGridでも好きなの使えばいい。
140 :
137 :2009/03/18(水) 23:27:16
>>139 ありがとうございます。
おかげでTDrawGridを継承してアイコン表示コンポを作ることが出来ました。
スルー推奨
Excelのセル範囲指定の時って Range['B6:N14'] の書き方しか駄目ですか? VBAで書くみたいに Range[Cells[1,1]:Cells[10,10]] って書いてもエラーになってしまいます。
うろ覚えですが。 []を()にしてみたりするとどうですかね?
>>143 レスありがとうございます。
()にしてもだめで、Range['Cells(1,1):Cells(10,10)']見たいに
文字列にしてみても駄目でした。
Delphi7のエディタってVSのエディタみたいに 2行目の行頭で←キーで1行目の行末へカーソル移動 って出来ないのでしょうか? 何か設定とかあればお教え願えませんか?
ありがとうございます フリーカーソルっていうのか…用語が分からんとかこの時点で失格な気がしてきたorz
winsightのことで教えてください。 Aというソフトのキーボードクリックをフックして、 押されたキーによってAを操作するBというソフトがあります。 (Aにはショートカットの設定が全くないので無理やりショートカット操作する ソフトです) Bからどういうメッセージが出てるのか調べたいのですが、Aにフォーカスが 移るとAのメッセージを拾うようになるみたいです。 Bのメッセージをいつも監視する設定って出来ますか?
Winspectorとか使えば? WinSightは正直使えない。
>>142 :演算子、Delphiで使えないだろ。
Range[Cells[1,1],Cells[10,10]] でどう?
148 Spy | Follow Focus にチェックがついてない?
VisualStudio エミュレーション時のフリーカーソル抑制って、QC に入っていたっけ? Weaver でどうにかしたいね。
Delphi7でずっとやってきたんすけど、Delphi2009 他の案内封筒きた。 アップすべきか、ちと迷ってます。ご意見とかこれはとか、あったら お願いします。
制約事項のあまりないアマグラマだと仮定して、Unicode対応をいまやっておきたいですか?ならD2009で。 いや、まだもう少し様子見、ならD2007で。 2007は最後のANSI系開発環境なので、Unicodeへの移行を急がないのであれば押さえておくのをお勧めする。 逆にいやもうUnicodeの時代でしょというなら2009なわけだが、これは人と事情によりお勧め度が異なる。
プリンタダイアログで「部単位での印刷」チェック時の処理を制御仕様としたときに if (PrintDialog1.Execute) then begin a := PrintDialog1.Collate; ShowMessage(BoolToStr (a)); end; な感じでチェック状態を取得してみたんだけどFalseでしか帰ってこない。 C# 2008 Express Editionでも MessageBox.Show(System.Convert.ToString(printDialog1.PrinterSettings.Collate)); ってやってみたけどFalseしか帰ってこなかった これってウチプリンタが対応してないとかなんかなぁ
>>155 内部的なテキストとか、TMemoを保存する時とかにUnicodeになるのん?
それともソースファイルがUnicodeって事?
出来上がるソフトウェアにまでunicode強制なら、旧版使うかなー。
Windows 9x のことを忘れていいなら、Unicode 化のほうが OS の制限も少ないし速度も上がる。 NT OS 自身の内部コードは Unicode で、Ansi 文字列を API に渡すたびに OS が文字セット変換を かけている。 そのオーバーヘッドがなくなる分、ちっと早いし、メモリオーバーヘッドも減る。 ソースコードは、Delphi8 (Delphi .NET) 以降 SJIS でも UTF8/UNICODE でも利用可能。 必要であれば Unicode 系円コーディングを使えばいい。 TMemo を保存するとき, SaveToFile とかするときにはエンコーディングを選べる。デフォルトは... どっちだっけ。ちとわすれた。 コンソール読み書きは ANSI のまま。 LoadFromFile とかの読み込み系は、必要ならエンコーディングの自動判定
>そのオーバーヘッドがなくなる分、ちっと早いし、メモリオーバーヘッドも減る。 うそつけw
ある決まったアプリのキーストロークをフックするプログラムを 作ったんですが、フックが有効な間キーボードの反応が悪くなってしまいます。 (関係ないアプリの入力まで影響されてしまいます。) CallNextHookExを実行させればキーコードはすぐに次のフック?キュー?にいって キーボードの反応が悪くなったりはしないのではないですか? フックを始めて作ったので質問がおかしいかもしれませんがよろしくお願いします。
>157 くわしくはどっかまとめたところを探せ。エンバカデロにもいくつかあるはず。かいつまんでいうと、String型は UTF-16になる。従来の文字列型はAnsiStringと明示しなければならない(ついでに従来のWideStringは そのままで変更なし)。またPCharもUTF-16の要素へのポインタになる。ソースコードはUTF-8だな。
162 :
160 :2009/03/23(月) 22:03:06
A-Z、0-9をフック処理するんですが、押されたキーはそのまま アプリに送りたいんですが、どうも消されてしまっているみたいです。 どうすればいいですかね? すみません、質問の仕方がぜんぜん思い浮かばない。
最低限の再現ソースと詳細な状況、かな。でもスレチじゃないか?まぁWin32APIスレでフックとかいうと それだけで荒れるからな。
てか、どうみてもキーロガーにしか見えない
それは単に物を知らなさすぎるだけ。
キーロガーといわれればそうですね。 でも、キーストロークを監視するのって よくあることじゃない?
今DLできるのってturboと7ですが、違いってどれ位あるのでしょう? turboはコンポーネントがインストール出来ないとかなにかで見たのですが、それって致命的なような。。。 zip扱うコンポーネントとかも使えないって事ですよね? DELPHIコミュニティでコンポーネント配布のコミュが有ったと思うのですが、それも完全に無意味になるのでしょうか。
168 :
167 :2009/03/26(木) 14:23:27
勘違い、7はDL出来る訳じゃなかったですね・・ 取り敢えずturbo explorer入れてみます。 サードパーティのコンポーネントを追加したかったら、有料版を買えって事なんですかね。 例えばTEditorとか、Iriaの作者が作ってたマウスジェスチャコンポーネントとか。 有用なワクワクするコンポーネントたくさんあったのになー。 Janeをいじったりもしたかったのに、確かアレも大量にコンポーネント使ってた筈。 Delphi6personalをアンインスコしなきゃ良かった・・。
7 は「ダウンロード」はできないと思ったが。タダで使いたい。ということだよね? コンポーネントを IDE に追加登録できない。というのはデザイナから貼れない。ということなので 苦労をいとわなければ任意のコンポーネントを使うことは可能。 まぁデザイナで使えない時点で使い物にはならないが。 あと、有料で製品を買うユーザーもいるので「無意味」ということにはならないと思うぞ。
170 :
167 :2009/03/26(木) 14:40:44
>>169 レスありがとうございます。
その通りです。タダで使いたいという事です。
Delphi6からのアップデートで、「金払えやゴルァ」となったという認識で良いのでしょうか。
金金とがっついてるイメージでボーランドに対する印象が悪くなりましたw
一応使う方法が有るという事で、ちょっと安心しました。
有料版を買うのは避けたいんですよねー。でも、利便性考えたら買うべきなのかなー。
TPanelをダミーで作って、中にコード上で生成したコントロールをalClientで貼り付けりゃいいじゃん
>>168 > 取り敢えずturbo explorer入れてみます。
>
> サードパーティのコンポーネントを追加したかったら、有料版を買えって事なんですかね。
TurboExplorer無料版使いだけど、自前で生成すれば使えることは使える。
VirtualTreeviewを自分好みに継承して自前の引数付けてCreateさせたりね。
ただ、不便なところも多々あるから、やっぱりコンポは使えるに越したことはない。
>金金とがっついてる うーん。不便をいとわなければ、選択肢はあなたの「自由」だしなぁ。 時間と利便性に対価を払うと思えばよいわけで。高いか安いかという話は別にして。 無料であることをほかの何よりも優先するのであれば VisualStudio / C# という手もありますし。
>金金とがっついてる 破綻したんだからあたりまえじゃん。
それTMemoでCtrl+A押した時に全選択とかの時にしか使ったことねーな
えーと Delphi7Lite ってキーワードで調べてみなさい
すばらしいテクですな。
〜Exと拡張していたコンポをそれでリプレースしたい誘惑に駆られるな・・・ フサは日常的に置き換えちゃったりしてる?
時々。 コンポインストールは最近は使わない。 複数のDelphiバージョンつかっていたりして 面倒だし。 コンポインストールしないほうが楽かと。
それじゃ Delphi 使う意味何所にあるのかしら。
コンポインストールするとIDE重くなるしな
インストールするけど使わなきゃ起動時間にも影響でないよ。 使いたいときに、プロジェクトオプションで有効にするだけですむ
パレットにロードする時間が増えるから影響がないことはないっしょ
それで遅くなるような PC / Video カードなら窓から投げ捨てな
俺が拾ってやるから
IDEとコンポーネントが癒着しすぎてるのは確かだな。 プロジェクトごとにインストール出来るような仕組みが欲しい所。 現状一応チェックボックスで選べるようになってるけどもうちょっと進めて。
パッケージ化しなくても、プロジェクト内のソースファイルからプロジェクト限定でパレットに登録できるようになればなぁ
プロジェクト全体で定数を共有したいんだが方法ありますか?
uAppCommon.pas をusesしてるな
おれもそんな感じ
ファイルから読み込みたいお年頃
2つ質問したいことがあります。
・Indyについて質問
http://homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm このサイトの通りにIndyをインストールしようとしたのですが、
「開くメニューから読み込んで以下の順番でインストールします」
と書いてあるのですが、インストールとは何をすればいいのでしょうか?
一応コンパイルかと思い、順番にコンパイルしてみたのですが、画像のようにIndyのアイコンがでてきません。
・プログレスバーについて質問
ウェブブラウザを作っているのですが、プログレスバーの記述の仕方がわかりません。
IEのようにページを表示してる最中に進度をプログレスバーにしたいのですがどのように記述すればいいのでしょうか。
WindowsXP SP3 Delphi6 Personal
お願いします。
最近全然書き込みがないなぁと思ったら板移転していたのですね。 (お気に入りからだと移転に気づかない罠でした)
マウスがフォームから出たらフラグを立てるというのはどうすればいいんでしょうか OnMouseMoveではフォーム上でしかイベントが起きませんし
CM_MOUSEENTER CM_MOUSELEAVE メッセージが飛ぶからそれを捕まえる。 Delphi CM_MOUSEENTER で検索するとサンプルが出てくるよ。
回答ありがとうございます さっきまさにその方法で解決した所だったんですが今度はフォームの外でマウスボタンを放したイベントをキャッチできないか悩み中です やりたいことは、えーとお絵かきソフトの消しゴムみたいな物で、クリック中に発動 操作中にカーソルがフォームの外に出てまた戻ってきてもボタンを押したままならそのまま作業できるが、 ボタンをどこかで離したら、無効になる というものです 乱暴に操作するとカーソルがフォームの外に出ちゃう事もあると思うんですがそれでいちいちボタンを押しなおすのが面倒だと思うので
MouseCaptureでできますた スレ汚しすみませn
delphi自体のツールバーでも使われてるようなアイコンって、何処にありますか? ネットで検索しててdelphiインストール時に一緒にインストールされると見たのですが、場所が分からずImageListに追加出来ません。 使用しているのはDelphi6です。
C:\Program Files\Common Files\Borland Shared\Images\Buttons にあるけど古臭すぎて使い物にならない。 Visual C# Express入れるとProgram Files\Common Files\MSなんちゃら にそこそこモダンなビットマップが詰まってるよ。
>>203 それってVC以外でコンパイルする物に使って良いの?
>>203 入れてみましたが見当たりませんでした。。。
「Program Files\Common Files\MSなんちゃら」というフォルダが見当たりません。
Pro版にはzipでアイコンが固めてあるという情報をグーグル先生が教えてくれたので、そっちを当たってみます。
\Common7\VS2005ImageLibrary\VS2005ImageLibrary.zip でそ
207 :
デフォルトの名無しさん :2009/04/03(金) 03:05:58
208 :
デフォルトの名無しさん :2009/04/03(金) 03:39:59
2009+indy10のsmtpを使用してメ−るを送信すると、 空白メール届くのです。 2005でコンパイルしたものは正常に送信できるのですが、 教えていただけませんか
普通に文字コード絡みの問題だと思うが
210 :
207 :2009/04/03(金) 03:54:51
すみません、自己解決しました。 colcountはCarginal型なのですが、表示の際にハマっていただけでした…
すいません、言語ではなくこのソフトに関する質問なんですが 左下にある(初期レイアウトでは)プロパティの中の設定する値が記述されてる部分のフォントの色って変えること出来ますか? ターボ、xpです。よろしくお願いします。
できません。
なんでBooleanは8ビットも使ってしまうん?(´・ω・`)
パソコンのしくみ
8つのbooleanが詰まった1バイトのbooleans型を定義するといいよ。
2009のサンプルコンポーネントが相変わらす古いものしか入っていないんですが、 使えるShellListViewって何処にありますか?
指定フォルダ内のファイル数を、サブフォルダ内のファイルも含めて取得したいです。 hoge -test1 hogehoge -test2 -test3 というようなフォルダ構造の場合、3を得たいという事です。 何か簡単な方法は無いものでしょうか。 FindFirstとFindNextでやろうとすると、サブフォルダ内の処理をする時に対象フォルダが移動する為、 FindNextで親フォルダを正しく検索する事ができません。
はいはい再帰再帰 俺は太ってるから書けないけどね
219 :
217 :2009/04/03(金) 19:48:16
FindFirstでフォルダを列挙して、それをFileListBoxに突っ込んでCountを足す事でファイルカウントにしました。 再帰は良く分かりませんが、動くので取り敢えず上記ので実装しますorz
>>199 Turbo Delphi Explorerとか最近のバージョンだと
OnMouseLeaveイベントが実装されていますね。
最初は知らなかったので今までのように
自分でメッセージに応答するコードを書き終わってから見つけて涙目でした。
Delphi7でFirebirdのクライアントアプリケーションを開発してましたが、 この度Delphi2009にバージョンアップしました。以前のソースを一部修正して コンパイルは出来たのですが、実行すると一部文字列フィールドでサイズ不一致のエラーがでます。 データはVARCHAR(8)のSJIS_0208の項目に半角英数字で10文字セットされた行でエラーが出ていますが 対処法がわかりません。テーブルのデータ構造をVARCHAR(16)に再構築すればいけるかと思いますが、 できればテーブルはそのまま使いたいのですが、無理でしょうか?
∧__∧ (´・ω・) 無理どす ハ∨/^ヽ ノ::[三ノ :.、 i)、_;|*く; ノ |!: ::.".T~ ハ、___| """~""""""~"""~"""~"
TMenuItemに複数のShortCutを設定するにはどうすればいいでしょうか?
パーテーションなどディスク上のデータを直接読みたいのですがどうすればいいでしょうか? Delphi3です。10年くらいブランクがあるのでほとんど忘れてしまったorz 低レベルなアクセスだとやっぱりAPIを駆使でしょうか? Delphi側で手軽に扱える便利な手続きが用意されてると有り難いのですが。。。 詳細はググりますんで、検索キーワードだけでもご紹介くださいませ
>>225 TActionList&TActionだとセカンダリを指定できる。
MenuItemよりAction使っといた方が全体的に便利だよ。
>226 それはWin32APIスレにいったほうがいいような。Delphiで簡単に、という性質のものではない。 あとOS(2000/XP/Vista)によってもプログラミングに違いがあると思う。UACとか。
229 :
226 :2009/04/08(水) 15:31:34
>>228 やっぱりAPIですか。誘導してくださってありがとうございます。
>>227 Actionは使ったこと無かったので思いつきませんでした
ありがとうございます
今DDEのヘルプを読んでるんですが、 サーバーからデータA、データB 、データCを取得したいときって DDEクライアントを3つ置かないといけないですか?
統合アーカイバコンポーネント ってもうどこにもないですかねぇ…? ググったけどDelphian Worldは閉鎖されてるし…
質問です。 ToolBarコンポーネント上にボタンを複数配置し、 実行中にボタンのVisibleプロパティを変更した場合、 ボタン新規作成でToolButtonを配置していた場合は 自動的にVisibleがFalseになったボタンより右のボタンは 自動的に左詰めしてくれるのですが、 SpeedButtonを配置していた場合、 VisibleをFalseにしたボタンの部分が空いてしまい、 それより右のボタンが左詰されません。 (設計時にVisibleをFalseにして実行した場合は左詰してくれますが) SpeedButtonでも自動的に左詰してくれるようになる プロパティとかはないでしょうか。 Delphi4を使用しています。
if Visible then Width := 32 else Width := 0;
CombBoxってタブオーダー無視する? タブストップはTrueにしてるんだけど次のやつにいっちゃう。 DEL7です。 どなたかよろしく。
>>237 まず新規アプリケーションにComboBoxを100個並べてTABキー押してみてくれ。
高級INIファイル程度の感じで簡単にXML読み書きするのってどうやるのが楽? Delphi XMLで検索するとOpenXMLとかいうのがヒットするみたいだけど。
大人しく付属してるTXMLDocument使えばいいんじゃ。デフォルトでMicrosoftのXMLパーサー使うように なってたような。嫌なら切り替えれたような。
>>237 今試してみたが普通にTAB移動するぞ D2007,D5
Styleプロパティも変えてみたけどOKだ
新規フォームでもう一度試してみな
また、そんなときはうまくいかないComboBoxを選択してCtrl+Cして
エディタにでも貼り付けて違いを調べるんだ
お前の言う「昆布ボックス」がカスタムコンポーネントなら知らん
製品版を購入するには2009だと10万弱かかるので、ためらっています。 バージョンアップ版は4万強ですが、例えばTurboをインストしていれば、 それが使えるとかの技はありませんでしょうか?それとも素直に10万弱 出すしかないのでしょうか?どうかご教示ください。
DEL6なんだけど今時のインターフェイスのフォルダー選択コンポーネントないかな?
ライセンス関係は Codegear に聞いてください 電話かメールで尋ねられるとおもいます 実のところ、アップデート版のインストーラーは既存製品のインストール状況を チェックしません。純粋に、ライセンス、契約の問題です。 もっとわかりやすく言うと「アップデート版はアップデートユーザーが使うと信じてるよ」です
んなこたーない
Delphi6 personalでIndyインスコしてIdHTTPをForm1に貼り付けると「IdBaseComponent.dcuが見つかりません」とでてコンパイルできません。 なぜでしょうか? もしかしてDelphi6 PersonalとTurbo Delphiの両方をインスコしてあるからなんですかね?
ライブラリパスは設定したのか?
>>248 すいませんライブラリパスとは何ですか?
具体的に教えてもらえると助かります;;
ツール(T)→環境オプション(O)→ライブラリ→ディレクトリ→ライブラリパス(B) ここにIndyの入ってるディレクトリを追加する
>>246 レストン
左側にマイコンピューターとかマイネットワーク
とか出て、フォルダーの新規作成も出来てみたいなの
が無いかなと思ったんですが、紹介してもらったのは
ソースつきなんで勉強がてら改造してみます。
dllインジェクションやりたいお
>>251 > 左側にマイコンピューターとかマイネットワーク
それってただのTOpenDialogでは?
Vista風の見た目とかなら探せばコンポ落ちてるだろうけど
せめてエラーメッセージをおしえて
いきなり30個くらいあったので・・・ 最初は定義の多重宣言とか言われて、とりあえず//でコメントアウトしていくと、 constの所で、(が必要な所に;があります、とか言われて もうわけわかめでした
解決する気がないならチラシの裏へどうぞ。
めんどくさがらずに、エラーの最初の10行ぐらいをコピペしてみろよ
何の権利があって人に命令してるんですか? 物の頼み方を知らない人ですね。
わからないのなら黙っててください。
263 :
254 :2009/04/14(火) 09:58:51
すいません、自己解決しました!
264 :
251 :2009/04/14(火) 10:27:47
>>253 そうなんですけど、OpenDialogではファイルを選ばないといけないでしょ?
2,3フォルダーコンポ落としたんですが、フォルダーの新規作成とかが
ないものばかりで。
なんか荒らされてるのはスルーしつつ一応ログの一部貼っときます [DCC エラー] DInput.pas(803): E2004 識別子の多重定義 : 'DIACTIONFORMAT' [DCC エラー] DInput.pas(883): E2004 識別子の多重定義 : 'DICONFIGUREDEVICESPARAMS' [DCC エラー] DInput.pas(938): E2004 識別子の多重定義 : 'DIDEVICEIMAGEINFO' [DCC エラー] DInput.pas(978): E2004 識別子の多重定義 : 'DIDEVICEIMAGEINFOHEADER' [DCC エラー] DInput.pas(1076): E2029 '(' が必要な場所に ';' があります [DCC エラー] DInput.pas(1082): E2026 定数式が必要です [DCC エラー] DInput.pas(1359): E2004 識別子の多重定義 : 'DIDEVICEINSTANCE' [DCC エラー] DInput.pas(1429): E2026 定数式が必要です [DCC エラー] DInput.pas(1433): E2003 未定義の識別子 : 'IDirectInputDeviceWVtbl' [DCC エラー] DInput.pas(1551): E2029 '(' が必要な場所に ';' があります [DCC エラー] DInput.pas(1555): E2026 定数式が必要です
>>250 ありがとうございます!
解決しました!
>>264 >>246 のは新規作成できるみたいだね。でもフォルダ選択で
> 左側にマイコンピューターとかマイネットワーク
ってのは見たことないなあ。あったら便利な感じもするけど…
もし作ったら公開してくださいね^^
function BrowseFolderProc(hWindow: HWND; uMsg: UINT; lParam: LPARAM;lpData: LPARAM): Integer; stdcall; var PathName: array[0..MAX_PATH] of Char; begin case uMsg of BFFM_INITIALIZED: SendMessage(hWindow,BFFM_SETSELECTION,1,integer(PChar(lpData))); BFFM_SELCHANGED: begin SHGetPathFromIDList(PItemIDList(lParam),PathName); SendMessage(hWindow,BFFM_SETSTATUSTEXT, 0,LongInt(PChar(@PathName))); end; end; Result:=0; end;
function OpenFolder(IniDir,Title:string;OwnerHandle:HWND; AddCreateFolder:Boolean;Files:Boolean=False):string; var IDList: PItemIDList; BrowseInfo: TBrowseInfo; PathName: array[0..MAX_PATH] of Char; DisplayName: array[0..MAX_PATH] of Char; const BIF_USENEWUI=$0050; begin with BrowseInfo do begin hwndOwner :=OwnerHandle; pidlRoot:=nil; pszDisplayName:=DisplayName; lpszTitle:=PChar(Title); if Files then ulFlags:=BIF_STATUSTEXT or BIF_RETURNONLYFSDIRS or BIF_BROWSEINCLUDEFILES or BIF_USENEWUI else ulFlags:=BIF_STATUSTEXT or BIF_RETURNONLYFSDIRS; if AddCreateFolder then ulFlags:=ulFlags or BIF_USENEWUI; lpfn:=BrowseFolderProc; lParam:=integer(PChar(IniDir)); end; //つづく
IDList:=SHBrowseForFolder(BrowseInfo); if IDList=nil then begin Result:=''; exit; end; SHGetPathFromIDList(IDList,PathName); Result:=PathName; end;
DELPHIのブラウザコンポーネント使ったら、 ブラウザ画面から目的の文字列を探すことって簡単に出来ますか? ソースをダウンロードして検索したほうが簡単ですか?
imiwakannne
[Delphi] WebBrowserからHTMLソースを取得する uses mshtml; Memo1.Text:= OLEVariant(WebBrowser1.Document as IHTMLDocument2).Body.InnerHTML; って話か?
274 :
271 :2009/04/16(木) 21:07:38
試してないけどそういうことです。
275 :
271 :2009/04/16(木) 21:08:17
ありがとう
今、簡単に言えばようつべから動画をダウンロードするプログラムを作っているのですが、 ・動画をどこまで落としたかの進行度をプログレスバーに表す ・中断機能をつける この2つがよくわかりません。 前者は動画の容量をprogress.max、落とした容量をprogress.positionにすればいいのはわかるんですが、どのように取得してどう記述すればいいのかがわかりません。 後者はスレッドを複数使う、というのはわかったのですがどうスレッドを複数作り、どのようにダウンロードを中断させればわかりません。 WindowsXP SP3 Delphi6 Personal Indy10 です。 どなたかご教授お願いします。
いるよね 超初心者用ってスレなのに上から目線で英語のサイトくらい嫁とか言う奴 まあそんなんだから廃れたんだろうなDelphi あ、俺は只のROMで質問者じゃないからね
しかも普通にIndyの公式とかしかヒットして無い様に見えるんだけど何が言いたいんだろうね
ああ IEで開いたら日本語だったわ
google.co.jpじゃなくて.comだから、外国だと思ったんだろう いるよね?リンクの中身すら見ずにURL名だけで判断する奴 あ、俺は只のROMで質問者じゃないからね
なんでプログラム板ってID非表示? 質問スレが多く立ちそうな板なのに不便アル
まあ俺の勘違い?だったから罵倒してくれていいんだが Firefoxだと Delphi Indy i’≫ になってて英語サイトしかヒットしてないんだよ 文字エンコードはUTF-8だけど他のに変えても駄目だ IEとChromeで開いたらDelphi Indy 進捗になったよ
>>285 俺FireFoxだけど普通に表示されたぞ
Accept-Languageで日本語が無いか優先度が低いんじゃね
そっか じゃあ俺の環境がなんかおかしくなってんだな 正直すまんかった あと俺は本当に質問者じゃないから本人さんに何も関係ないことだから 以前他の言語のくだすれでちょっとあって・・・ 脊髄反射で書き込んでしまった
必死だな質問者
ネットのログインを自動でやりたいんだけどdelでやる時の 参考になるページ教えてください。
俺はVBやC#の例を見ながら作ったぞ。
292 :
デフォルトの名無しさん :2009/04/19(日) 22:43:14
おまいIndyスレに書き込んだヤツか。 失敗している原因をちゃんと調べないとダメだぞ。
そもそも、ネットのログインってのが抽象的でよくわからない
>>292 >おまいIndyスレに書き込んだヤツか。
>失敗している原因をちゃんと調べないとダメだぞ。
残念ながら違う。
自動ログイン DELPHIでググったんだけど、いまいちピンと来なかったんだ。
IEコンポ使う方法とIndyでやる方法じゃあ、全然違うからな。
296 :
290 :2009/04/19(日) 23:43:40
>>291 ,295
レストンです。
ログインして、ブラウザに表示されるページの中からキーワードを
拾い出したいんですが、出来ればブラウザを起動させずに出来ないかなと
思い調べてました。
で、何を使ってどんな風にどこまで作って何が不満だったかくらい言おうよ。
質問の内容が悪くてすみません。 テンパってて。 ブラウザを起動させなくてもURL直接送ってページに表示されるHTML の内容を取得して、目的のキーワードを取得は出来るんですが、 最初にログインが必要な場合にどうすればいい買って事なんです。
>>298 何言ってるかいまいちだがログインすればいいだけじゃないのか?
>>290 の時点で何を聞きたがってるのか分からない奴ってアホだろw
>>298 「indy コンポーネント BASIC認証」でググレ
「自動ログイン DELPHI」は酷すぎるwww
304 :
290 :2009/04/20(月) 13:01:56
BASIC認証のサイトなんてもう少ねえよな。 まあどんな認証方法のサイトなのかは知らんけど。
306 :
290 :2009/04/20(月) 13:57:00
認証に種類があるんですか。 そんなことも知らなかった。 おとなしく、ブラウザを表示させて 自動入力みたいにしたほうが初心者には 簡単ですね。多分。
まずDelphiの前にHTTP勉強しろ
308 :
290 :2009/04/21(火) 01:06:15
ごもっともです。
マジレスすると
>>305 の言うようにBASIC認証じゃなさそうだし、
たぶんmixiみたいなIDとパス入れてログインするようなサイトなんだろうけど、
ログインしてすぐのページさえ取れればいいのならIndyでGetの代わりにPost使えば大概簡単に取れる
ただしSSLが必要だったりページの遷移があったりすると色々と面倒なんで、
IEコンポを貼り付けて見えないサイズにして(単純にVisible:=Falseだと動かない場合があった気がする)、
あとはNavigate辺りでJavaScript呼ぶかレイトバインドで直接タグ操作してやれば確実
こっちの方が資料も豊富だろうし
認証時に何をPOSTしてるのか調べて、同じようにPOSTするプログラムを書けばよろしい。
フォーム認証だとログインしたあとにセッションかクッキーでログイン状態を管理すると思うけど、 そのあたりindyだとどうやるんだろね 単にページを巡回したいなら、スクリプトでコントロールをクリックしたり ページ遷移できるブラウザがあったと思うんだけど、 それを使えば便利だが、趣旨とは異なるかな?
サブフォームをモーダルで開いた時にメインフォーム上の処理を行いたいんだが OnDeactivateに書いても動作せず。試しにこんな感じで。 procedure TForm1.FormDeactivate(Sender: TObject); begin form1.Color := clwhite; end; どうすればいいんでしょ?
Form2.ShowModal; したらフォーム閉じるまで制御が戻ってこないんだからどうにもならない。 Form2側からuses Unit1;して Form2Showかなんかで Form1.Color := clWhite してみたら
Halbowさんと俺とゲームボーイの誕生日が今日らしい 誰か祝ってやれ
tmpフォルダにzipから解凍してきたファイルを置いて、読み込み、処理が終わったらtmpフォルダを空にしたいと思ってます。 現状 tmp -test -A.txt という様なフォルダ構成で、A.txtを読み込んだ状態です。 そこで、testフォルダを削除しようとすると「プログラムが使用してます」といった旨のエラーダイアログが出て削除する事が出来ません。 A.txtを読み込んだだけでtestフォルダにロックがかかってしまうのでしょうか。 また、そのロックを解除する術はあるのでしょうか。 A.txtの読み込みにはLoadFromFileを使ってます。 また、A.txtの検索にFindFirstを使ってます。 上記2つのどちらかが、フォルダのロックの原因でしょうか。 フォルダの削除はエクスプローラ上からも出来ませんでした。 A.txtはエクスプローラ上から削除可能でした。 何方かご教示お願い致しますm(_ _)m
316 :
315 :2009/04/21(火) 16:46:04
追記: フォルダの削除にはSHFileOperationを使ってます。 フォルダをファイルが入った状態で削除するにはコレが良いとGoogle先生に聞いたので。
>>315 フォルダをつかんでる(ロックしてる)んではなくて、そのフォルダで作業してる
(カレントフォルダになってる)だけだと思う
処理が終わったら
SetCurrentDir(ExtractFileDir(Application.ExeName));
して味噌
>>315 それオレもハマった。FindFirstが原因だと思うよ。FindFirstが終わったら
FindClose(SearchRec)とかやってクローズする必要があると思う。
削除前にきっちりFindCloseを呼ぶ。 カレントディレクトリってコマンドプロンプト以外でもロックしちゃうんだっけ?だったら戻した方がいいかも。
昨日Turbo Delphi Explorerを入れてみたです。 正規表現使えないかなーとBRegExpとそのUnitを入れてみたんですが 試しに簡単なの動かそうとしたらエラー出ました。 BabaさんのBREGEXPとosamuさんのUnitとを解凍してできるファイルを とりあえず*.hと*.hlp以外全部delphiのLibフォルダに突っ込んであります。 エラーはこんなかんじ [Pascal エラー] BRegExp.pas(226): E2064 代入できない左辺値です [Pascal エラー] BRegExp.pas(227): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'UniqueString' が定義されていません [Pascal 致命的エラー] Project6.dpr(6): F2063 'BRegExp.pas' ユニットはコンパイルできませんでした コードはこんなかんじ program Project6; {$APPTYPE CONSOLE} uses SysUtils,BRegExp; var Str: String; begin Str := 'うんこ:ちんこ:まんこ'; brx.Match('m/;(+);/',Str); Writeln(brx[1]); end. うまく動かせてる人アドバイス求ム
323 :
315 :2009/04/22(水) 19:07:58
>>318-320 ありがとうございます。対応入れてみました。
結果、複数フォルダがある場合に、最後の一つだけは削除できるようになりました。
まだ何処かでロックしてるみたいですorz
>323 原因は間違いなくFindCloseのし忘れ。FindFirstした分必ずFindCloseすること。 おそらく今は最後の一回分しかFindCloseしてないんじゃないか?
Delphiのグラフ書くコンポーネントって 2本の折れ線グラフが交差した座標を検出とか そんな機能あるわけないよね?
あるわけがない。 ポイントの座標くらいなら自分で取得できそうだし、 交点くらいちょびっと計算して出せよ。
327 :
321 :2009/04/23(木) 02:10:16
>>322 レスありがd
constに代入してるのはPascal初心者には奇怪だったんですが
やっぱりDelphiな人にも奇怪だったのね。
const取ってvar内に宣言したり、言われて{J+}オプション(理解できてない)
入れたりしたらビルドは通ったんですが、別な例外で動かないですわ。
まだまだ手に負えそうにないんで、おいらもTRegExprにしてみる。
constへの代入が何故使われてるかというと、あれはDelphiでスタティック変数もどきを使用するテクニックなんで、 動作するには前回の値が保存されてる必要があるから、単純にvarにするだけじゃ動かない 実体はスコープが関数内に限定されたグローバル変数だから、宣言をfunctionの外に移動させてやればおk ただ$Jスイッチは局所的に有効になるから、ユニットの先頭にでも{$J+}と書くのが一番確実かな
>>327 古いDelphiではConstは常に書き込み可能だったのだ
var TextBuffer: string='';
function TBRegExp.Subst()
begin
end;
と外に出してグローバル変数にすればおk
今時{J+}は使わなくて良いでしょ
あと、肝心の正規表現間違ってるよ
エラーはそのせいかと
Str := 'うんこ;ちんこ;まんこ';
brx.Match('m/;(.+);/',Str);
Writeln(brx[1]);
クラス化してくれ…
>>328 322だが、もちろんその使い方で私も使ってます
ただ、くだんのBRegExp.pasでは単に初期化するだけに使っていることを
確認してのレスでした
エクセルのブックをDelphiで作成したいのですが、 Excel := CreateOleObject('Excel.Application'); てやるとエクセルが起動しちゃうんですよね? 起動させずにブックを作ることって出来ませんか?
不可能 でも表示をオフにすれば起動されたことはわからんけど。
鬼車をLoadLibraryなどの実行時動的リンクではなく、 ロード時動的リンクしようとすると、Delphiが変数のインポートをサポートしてないから 面倒なんだよな。Delphiってうんこだよな。
レストンです。 そうですか。 シートに書き込むデータがアドインソフトに関するもので書き込んだ瞬間 「外部データにアクセスできない。アドインを実行するか?」 見たいなメッセージが出てきてしまします。 エクセルの特定のアドインを一時的にとめることって出来ますか? エクセルのヘルプに見ても登録と削除しか出てこないようなので。
>>333 勿論できるぞ。種になるブックをどこかに作っておき、
それをコピーするんだ。実行自体にはExcelすら要らん。
>>336 削除と登録ができるのに、一時的に止められないってこたないだろ。
削除して、また登録すればいいんだから。
それはさておき、
Excel.AddIns['アドイン名'].Installed := false;
Excel.AddIns['アドイン名'].Installed := true;
あたりで出来ないか?
>>337 ,338,339
ありがとうございます。
>>337 >勿論できるぞ。種になるブックをどこかに作っておき、
このレス見たとき、昔こういうやりか足してた先輩がいたの思い出した。
今は会社辞めちゃったけど。
>>338 >Excel.AddIns['アドイン名'].Installed := false;
>Excel.AddIns['アドイン名'].Installed := true;
作ったら人に渡すので削除とかは実際したくないってのがありました。
こういうのがあるんですね。
ヘルプを見てみます。
>>339 これコンポーネントですよね。
よさそうなんですが、ダウンロードするところがよくわからなかった。orz
ポインタについてなんですけど、 ある手続きで参照先のデータを解放した後に、 別の手続きでその場所にデータがあるかどうか調べるって事は出来るんでしょうか?
出来ない。 メモリの内容見てそれがオブジェクトなのか、生きているのか死んでいるのかを厳密に判別する術はない。 procedure foo(var a: TObject); begin FreeAndNil(a); end; とかやって参照自体を潰して参照がnilかどうかで判断するのが定石だな。
メモリマネージャを差し替えればそれっぽいことができなくもないけど、激しくオススメしない
どんな手使っても、アプリケーションが全てと思うけどな。 やな手使って欲しくないけど…
345 :
デフォルトの名無しさん :2009/04/24(金) 21:19:38
よーわからんけど ポインタが有効かどうかって Assignedすればエエだけなんじゃねえの? 外していたらメンゴ
Assignedはnilチェックだよ
EAccessViolationで囲むとか 動いたり動かなかったりだろうからオヌヌメしない
>>341 はたぶん一つのオブジェクトに複数の参照があってその管理で困ってると思うんだけど、
そういう場合は参照カウンタで管理すべきじゃないかと思う。別解としては、参照をさらに参照する。
type
PObject = ^TObject;
var
p1: PObject;
p2: PObject;
p1^ := TObject.Create;
p2 := p1;
この状況下で、
p1^.Free;
p1^ := nil;
この時点で当たり前のこととしてp2^もnilになるから、p2を見る手続きからも実体が解放された事は分かる。
ただ、こういうのは小手先の話で、あまりそういう事をしなくてもいいのがよい設計だと思う。
349 :
デフォルトの名無しさん :2009/04/25(土) 19:52:20
Delphi2009で、文字が半角か全角かを判断する方法が分からず困ってます。 これまでDelphi6でByteType関数を使ってたんだけど、挙動が変わってしまって・・・
leadbytesとかは使えないの?
WideStringなら 単純に文字コードを見ればわかるけど。 1バイトなら半角だし、2バイトなら半角カナかをチェックする
unicodeの事いってるんなら1バイトで全角幅もあるぞ
353 :
348 :2009/04/26(日) 05:15:41
そういや
>>348 でp1^のメモリを確保してないや。
最初にNew(p1);、最終的に完全にいらなくなったらDispose(p1);が必要だった。
>>349 シフトジスに変換した後にチェックすればいいじゃん。
ウンコードを呪え。
355 :
DEKO :2009/04/26(日) 10:53:28
356 :
デフォルトの名無しさん :2009/04/26(日) 11:26:42
みなさんありがとう。 一度Ansiに変換して判定することにしました。 function IsHankaku(c: char): boolean; begin result := ( ByteType(AnsiChar(c), 1) = mbSingleByte ); end; Delphi2009で文字を扱うときって、サロゲートとかエレメントとかコードポイントとかバイトとか、ややこしいですね(>_<)
357 :
デフォルトの名無しさん :2009/04/26(日) 11:43:42
訂正: function IsHankaku(c: char): boolean; begin result := ( ByteType(AnsiString(c), 1) = mbSingleByte ); end;
Cみたいな言語から移ってきたとみた
>>356 それがユニコード糞、っていわれるゆえんだよ
>elphi2009で文字を扱うときって、サロゲートとかエレメントとかコードポイントとかバイトとか、ややこしいですね(>_<) 煽っている人がいるだけで、大した問題はないよ。
言語レベルで隠蔽されてしかるべき情報を考慮してコーディングしないといけないのは問題ではないの?
ウンコードが半角全角の区別がメンドイという致命的な欠点を持っているのは確か
win2000で2009使ってる人います? デバッグの停止ボタン押した後再開出来なくないですか?
>>361 .NET も UTF-16 で全言語で同じていたらくだけど何を使えばいいの?
.NETがどうかは別に関係なくね? Delphiの設計方針から言えば、隠蔽されててもおかしくない気はする 最近の開発にそこまで求める方が酷なのかもしらんが
TEditのOnChangeイベントでTEdit.Textを取り出すとき IMEを起動して日本語入力してると変換した最初の文字だけが TEdit.Textに入ってきたりしない? コーディングが悪いのかなあ…。 Turbo Delphi Explorerにて。
>>366 Caption:=Edit1.Text;
これで最初の文字しか取得できてないってこと?
そもそも、文字に幅があると思ってる考え方が間違ってるので、正すのはおまえらの思考。 幅をもってるのはあくまでグリフって誰かいってなかったっけ?
>>367 Captionじゃないけどそんなかんじです。
FirefoxやiTunesみたいなインクリメンタルな検索を実装してるのだけど
たとえば「饅頭」と打ったときTEdit.Onchange内では「饅」しか入っていないので
打った「頭」を検索クエリに入れられず困ってるという話。
(ここまで書くと丸投げっぽいな…)
>>369 頭が入力された時にもう一度OnChangeイベントが発生してるだろ。
>>369 自分のはTurboじゃなくてDEL7なんだけど、
単純なコード書いて試した?
OnChangeにCaption:=Edit1.Textて書いて実行すると、確定するたびに
「まんじゅう」と入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を
確定すると「饅頭」がちゃんと表示されるけど。
>>371 X OnChangeにCaption:=Edit1.Textて書いて実行すると、確定するたびに
「まんじゅう」と入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を
○ OnChangeにCaption:=Edit1.Textて書いて実行すると、「まんじゅう」と
入れて「まん」だけ確定すると「饅」表示、次に「じゅう」を
>>369 変換を伴うインクリメンタルサーチやるときは、IMEのメッセージ捕まえた方が色々とやりやすい
コンソールアプリで出力に色つけるのってどうやるの? 無理やりドライバ入れてエスケープシーケンスでじゃなく正式なやり方で。
377 :
369 :2009/04/28(火) 23:52:39
いろいろレスどもです。 確かにCaption変えるだけだと問題ないっすね。 イイワケにならんけど入れてまだ一週間くらいなんで ヘンな記述してる可能性も捨て切れません。 OnChangeのたびにSQLiteぶん回すのがキツイのか 単純な記述ミスがあるのか、もう一度じっくり眺めてみて どうしようもなかったらIMEのメッセージ(ってのも初めて見る世界) の線でぐぐってみます。
IEやFireFoxから画像をドラッグ&ドロップされたのを受け取るには、どうしたらいいもんでしょうか・・。
OLEを使う どっかにそういうコンポがあったからそれ使うと簡単にできると思う
procedure ahya; begin ahya; end;
stack overflow
>>377 > OnChangeのたびにSQLiteぶん回すのがキツイのか
Cのsystem()関数ってないの
つWinExec
VirtualListViewに256x256のサムネイル画像を並べているのですが、StretchBlt で 縦横比を変えずに縮小するために JpegをTPictureで読み込んでBMP.Assignするときに凄く時間がかかってしまいます 最初は中村氏のBitmapUtils.Stretchを使ってからStretchBltしていましたからもっと時間がかかっていました TVirtualExplorerEasyListviewなどはエクスプローラ並みのスピードで表示されるので方法次第だと思うのですが ソースがないので手法が分かりません どの方向で考えたらいいでしょうか?御指南ください
>>385 TJpegImageのScale使うか、
写真ならExifのサムネイルを読み込むか。
ソースだと思ったらJane本体だったorz
これだけがヒントですね
188 :Jane使いの名無しさん:05/07/27 00:00:41 ID:6kBZoROZ
>>174 ・TJpegImage.Scale //←基本的にこれ
・TbitmapはDIBにする
・Jpeg.pasとiijのライブラリ改造
TApiBitmapとTBitmapで検索して掛かったとこちょっと
変えてみただけ
つGDI+
>>385 ちなみにサムネイル生成処理はちゃんと別スレッドでやってる?
画像ファイルが1000超えるような場合のエクスプローラの挙動見れば分かるけど、
非同期でやらないとどれだけ高速化しても厳しいと思うよ
そうですね、10個表示されてたらいくつも平行してサムネイルが描画されていってますものね
私もスレッドはやってみようとしかけたのですが、結局ImageListに登録する所あたりで挫けてしまいました
スレッドCreateでFileName、サムネイルの大きさを渡してBitMapを返してもらうのか(どうやって?)
スレッドの中でImageListにAddするのか
ListView.OnDataHintとスレッドがどんなお付き合いにしたらいいのかが分からないのです
あ、ちなみに
>>389 さんのGDI+は試したらずいぶんと速くなりました
CなどのコードをDelphiへ移植する時、Delphiで使えない識別子があった場合はみなさんどうしてますか?
comboboxのitemを右クリックしたらポップアップメニューを出したいんだけど、 どうしたら良いですか? ContextPopupにPopupmenu1.Popup(X,Y)ってやっても何も起こらないです。
394 :
393 :2009/05/02(土) 22:27:06
事故レスです。 レジマネジャーって言うフリーのコンポの バグみたいです。 新規でテストプログラムかいたら出来ました。
>>391 実際にスレッド内部からImageList.Add呼んだら問題が起きた?そこまでやったの?
とりあえずぐちゃぐちゃになってもいいからやってみないことには問題点も分からないじゃない
やってみました。 何度も暴走させながらも(スレッドってまともに動かしたことがないもので)出来ました 目に見えるItemが同時に読み込まれている感がないのでまだまともに出来ている ワケではないのでしょうが取り敢えず正確に表示できて明らかに今までより 表示速度は速くなりました(4000Filesほど読み込ませても数秒でした) ありがとうございました
マルチスレッド歴1ヶ月のおいらがわかる事はとりあえず、 ImageList.Addメソッドの呼び出しは最低限、クリティカルセクションなりを用いて排他制御 しなきゃいけなさそうと言う事だけ。 後はわかんない。ぷぎゃ。 CriticalSection.Accuire; try ImageList.Add finally CriticalSection.Release; end;
いや、いらないからw
>>397 だけど、今、具体的にImageListのAddメソッド追ってみたけど、
内部でHandleNeededが呼ばれて、そのHandleNeededでフィールドのFHandleを参照しているから、
下手すると、
procedure TCustomImageList.HandleNeeded;
begin
if FHandle = 0 then CreateImageList;
end;
で、CreateImageListに複数のスレッドが同時に突入すると、イメージリストのハンドル
が複数作成され、迷子になっちゃわない?
ハンドルリークだから、まぁ、そこまで被害拡大しないと思うけど。
ああ、というか、そもそも前提がお互い違うのかもね。 おいらの場合は、サムネイル作成するサブスレッドでImageListのAddメソッド 呼ぶ事を前提にしてた(それで出来るか分からないけど、ぷぎゃ)。 メインスレッドだけで、ImageList.Addメソッド呼ぶなら必要ないと思う。
勉強のため、勝手にちょっと作ってみたけど、今のおいらのレベルで作るとこんな感じかな。 TThumnailEvent = procedure (Sender: TObject; ABitmap: TBitmap) of object; TThumnailer = class(TThread) private FFileName: string; FSize: TSize; FBitmap: TBitmap; private FOnThumnail: TThumnailEvent; private procedure CallOnThumnailEvent; protected procedure Execute; override; public constructor Create(CreateSuspended: Boolean; AFileName: string; ASize: TSize); public property OnThumnail: TThumnailEvent read FOnThumnail write FOnThumnail; end;
で、実装は { TThumnailer } constructor TThumnailer.Create(CreateSuspended: Boolean; AFileName: string; ASize: TSize); begin FFileName := AFileName; FSize := ASize; FBitmap := TBitmap.Create; inherited Create(CreateSuspended); end; procedure TThumnailer.CallOnThumnailEvent; begin if Assigned(FOnThumnail) then FOnThumnail(Self, FBitmap); end; procedure TThumnailer.Execute; begin // サムネイル作成処理 // ごにょごにょ if Assigned(FOnThumnail) then Synchronize(CallOnThumnailEvent); // VCLのメインスレッドど同期を取る FBitmap.Free; end;
メインのVCLスレッドでは、 procedure TMainForm.Button1Click(Sender: TObject); var Thumnailer: TThumnailer; begin Thumnailer := TThumnailer.Create(True, FileName, Size, Bitmap); Thumnailer.FreeOnTerminate := True; // 自動破棄 Thumnailer.OnThumnail := OnThumnail; Thumnailer.Resume; end; procedure TMainForm.OnThumnail(Sender: TObject; ABitmap: TBitmap); begin if ABitmap <> nil then ImageList.Add(ABitmap); end; とか。ListView.OnDataHintとかは良くわかってないので省略。
Thumnailer := TThumnailer.Create(True, FileName, Size, Bitmap); は Thumnailer := TThumnailer.Create(True, FileName, Size); だった。orz
「こんなクラス名は嫌だ」
>>399 そのHandleNeededをあらかじめ呼び出しておけば何の問題もないわけだが
プログラマのレベルがもろに出る、それがスレッド
同時に走らせるスレッドの数の目安ってある?
並列処理でパフォーマンス上げたいならコア数まで。 ただの非同期のバックグラウンド処理なら特にない。 調べてみたらFirefoxは19、Janeは11とかだな。
プログラマのレベルと言えば、DelWikiに上がってるコード あれはひどいね。目も当てられないというか。
Wikiなんだから、ひどいと思ったら書き直して構いませんよ。
410が弄ったコードの方が酷い、に一票
>>380 while True do ahya;
Delphiで終了確認のメッセージのソースの書き方ってどうやるのでしょうか? お願いします。 Delphi2007です。
意味がわからんw
416 :
414 :2009/05/07(木) 21:35:43
すまない、書き方がものすごく悪かったorz Delphi2007で終了時に処理をしたいので、OnCloseを使ったソースみたいのを書いてください。 (なんか、うまくいえないな。終了確認のメッセージの書き方っていうのか?)
普通はOnCloseQueryじゃね?
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if messagedlg('終了しますか?',mtconfirmation,[mbyes,mbno],0)=mrno then action:=canone; end; こんなの?
普通はOnCloseQueryだね
IDEで挿入される文字以外小文字で書いてる人よく見るけど見にくくないのかな
421 :
414 :2009/05/07(木) 22:03:06
皆さん、テンクス! できました。
外人さんでたまに全部大文字の人もいるよね
初めて買ったPascalの本に「コードは個性的に!」みたいな項があって tHanとか推奨してたんだがさすがにどうかと思った。
その本は捨てろ
今のDELってヘルプちゃんとしてる?
Delphiのヘルプがちゃんとするわけないだろ
>>425 動くかという意味なら真。
機能するかという意味なら偽。
今、DEL7使ってるんだけど最新のDELとC#とだと どっちがいい? 荒れるならするーよろしこ
C#, PowerShell, Iron Ruby/Pythonで.NET Frameworkの知識を駆使できるんならともかく アプリ開発環境単体としてのC#はどうもぱっとしないなぁ。 ドキュメント含めた物量は大したもんだけど。 まあいまさら.NETアプリの起動の遅さなんて気にならないレベルだし 慣れと将来性を秤にかけて決めるべし。
C丼でネイティブコードを吐くオプションを用意すれば一気に普及するのにな。 MSが強引に普及させようとしても、求められていないものは使わん。
何で今頃? VSの無料版なり、新しいDelphi買うなりすりゃいいじゃん。
DelphiとBorlandって関係あんの?
>>434 逆に関係ないの?最初の開発発売元なのに?
つりですか?そうですか。
孤独なおっさんの暇潰しは隔離スレでどうぞ
ここまで俺の自演
いや俺も1つだけ書いたよ
僕も書いたよ。
Susie Plug-in 読込コンポとビットマップ spis126.zip 作者 計 氏 って、まだ落とせるとこあるかな?
Susie Plug-in 読込コンポとビットマップ で検索するとそれらしいのが
442 :
440 :2009/05/09(土) 21:42:21
>>441 たぶん最後はDelphian Worldにリンクされてない?
Delphian Worldがなくなったのは本当いたい…
444 :
440 :2009/05/09(土) 22:11:23
>>443 おお、ありがとん。
しかもDelphi2009対応版まで…
保管しときます!
Delphi6完全にオワタのか TurboDelphiは外部コンポ使えんし有料買おうにも2009は外部コンポの互換性オワテるし これはDelphi完全終了のお知らせか?
外部コンポの登録が出来ないだけで使えるんじゃなかったか?
使えるけどモノによってはひと工夫いるらしいし、 少なくともこれからはじめようと思う初心者にはハードル高すぎるだろうし・・・
なんのひと工夫がいるんだよw 初心者が外部コンポなんぞ使うな・・・でも不便よね(´・ω・)
動的に生成するだけじゃないの?
この流れから本当にくだらなくてもうしわけない begin For i := 0 To 10 do Memo1.Lines.Add('a'); end; この a を一定間隔秒で表示させたいですが 〜秒待機、という処理はどう書けばいいんですか
452 :
デフォルトの名無しさん :2009/05/09(土) 23:31:45
Sleep() で、できました ありがとう
Timerとカウンタ変数使って1秒ごとにOnTimerで出力して 終わったらTimer1.Enabled := False;して止めるというのもある。 Application.ProcessMessagesをループで抱え込むと イベントハンドラが多重的に呼び出されて思わぬバグになることもあるから 複雑なアプリでは避けた方がいい事もある。
>>454 > Application.ProcessMessagesをループで抱え込むと
> イベントハンドラが多重的に呼び出されて思わぬバグになることもあるから
> 複雑なアプリでは避けた方がいい事もある。
俺これよくやっちゃうわ。
ループ中にウィンドウの移動とかが出来なくなって、フリーズみたいになるのがいやで
Application.ProcessMessagesを入れちゃうんだけど、そういう時って
別スレッドにするべきなのかな?
>451 >454も書いてるけど、タイマを使うべし。 >455 最初からそれ(Application.ProcessMessagesによって処理途中に他のイベントが発生すること)を 考慮して作るか、スレッドか、ま普通は簡単なんで前者だろうね。
とりあえず硬直にさえ目をつぶればSleepが一番簡単確実でしかも安全だったりするけどね
処理が5秒以上続くと応答なしになってゴーストウィンドウが出てWindowsがそれを正しく扱えない (復帰したときにトップレベルウィンドウが2つになってしまう)ことがあるけどね。
>>443 再配布は「アーカイブ全体をそのままの形にしていただくのが条件」なのに
改造版を配布って計氏の許可取ってるのかねぇ・・・?
だめだ・・。VS2008のあまりの使いやすさとC#の簡単さに折れた。 今後作るのは全部C#でやるわ・・。
www
俺はそんな時は基本、少なくともユーザーからの入力をブロックするよう、 すべてのボタンなりを無効にするな。まぁ、アクションリスト使うからアクションを。
www.cc.kyushu-u.ac.jp/ec/delphi/BorlandDelphiPersonalEditionJP.exe 今のところ落ちてくるようだ そのうち消えるだろうけど
VS使いやすいよおぉぉぉ! でも作りづらい部分もあるので、そこはDelを使ってOCXなりにして使う。
467 :
431 :2009/05/10(日) 23:43:34
>>465 大感謝!!
英語版は見つけたんだが、日本語版がどこにも見つからなかったんで。
認証通るのか? Proは認証しろといわれるだけでそのまま使えてたけど Personalは起動すらしなかったような。
C++使えない&.NET嫌い な俺はしばらくDelphianのままか
認証コード(インストール番号とキー)が無いと、インストール時にはじかれるね。 おいらの場合は、昔取ったのが残ってたので。
べたべたなクライアント作ってるならC#結構いいし、クラスとか作る時宣言部とか実行部とか別れてなくて楽だ。 コードの途中で変数を宣言できるとか宣言と同時に初期化できるとか、関数の戻り値の型に勝手に合わせられる変数宣言とか スピーディーにコーディングできる要素が沢山あって、楽すぎるんだ。 あと、ググったときの情報量もヘルプの使いやすさも段違いだ。 D2007、2009共に使ってるけど、webbrowserのhtmlElementとかアクセスしてると型を調べるのに頭痛がするが、そんなの一切無し。 が、関数の引数に省略時の値を設定できないなど、随分古くさい仕様もちらほら。 .Net縛りでやりづらいこともしばしば。RASの確立とか。コードが簡単に解読できてしまうのもアレなんだが・・。 一長一短だけど、一度作ってみるとその楽さに参ってしまう。 スレチすまん。
で、Delphiスレで何でC#の話するの?
昔Delphi作ってた人が引き抜かれてVisualStudio作ってるから。
それは知ってるけどここでC#の話する理由にはならんでしょ ここ超初心者用の質問スレだよ
本当はDelphiが好きだから
超初心者だから
確かに言語に拘るのは初心者にありがちだよな それで何を成すかが重要なのに
いや、Delphi好きだよ。引き抜かれなければDelphiが今のVSのようになってたかもな・・と思うと残念でならない。 何を成すか・・か。Delphiではとりあえず5年で1億くらい稼いだよ。 とてもいい言語だった。
うぜぇ
じゃあ俺が
483 :
478 :2009/05/11(月) 22:25:32
お、俺のことでケンカしないでくれ。 Delphiは2から使ってる生粋のDelphierなんだぜ。
俺も5億は稼いだかな
>>483 スレタイ読んでおとなしく隔離スレに行こうな。
本当うぜぇw
487 :
478 :2009/05/11(月) 23:00:56
まあ過疎ってるんだしいいじゃないか。 質問来たら黙ってるよ。
がんばるねぇ
質問です 478が黙る方法を教えて下さい よろしくお願いしますm(_ _)m
1億じゃうちの1年分の人件費にもならんなぁ
492 :
デフォルトの名無しさん :2009/05/12(火) 07:42:07
たった5億くらいで自慢する初心者が居るスレはここですか?
5億なんてちょちょいと稼いだお。 なんせ、バブル期の公共事業がらみだったからね(笑
おっさんってどこの板でもスレ違いを咎められると意地でも居座るよな
>>494 スレ違いを咎められたら意地でも居座る人がおっさんだとどうしてわかるの?
お、俺なんかdelphiで5万円儲けたぞ
おれは一年で350万くらいかな←ちょうリアル
俺、150万。 その金もらった数ヵ月後に発注元が倒産。
del7再インスコしたいんだけど、ライブラリのパスの登録を 簡単に済ますにはどうすればよいですか?
500 :
478 :2009/05/12(火) 14:45:06
VS買いなさい。 Delphiのような時代遅れのツールを使っては仕事にならないよ。
TimageとかTPaintboxの箱の中に画像を入れるとき、 画像が入る基点の座標などは設定できますか? たくさんの画像を連結してみたいと思っています。
D7とD2009って同居できます?案内のメールが来てゆれてるもので
>>502 TCanvas.Drawって座標してい出来なかったっけ?
CopyRectとかでも同じような気がする
どっちにしろTCanvasのメソッド一覧をヘルプで見るといいよ
なんか2009でDelphiX使えないよー dcuが無いってなんやねん、dcpパスとおっとるやんけ
>>503 普通にどのバージョンでもいけるんじゃないの?
関連付けみたいなのはどれかひとつになるだろうけど
うちのPCは6と2006が同居してるけど問題ないよ
うちは3と5と7が入ってるけど問題はない
508 :
478 :2009/05/13(水) 00:53:49
>>503 同居させてるけど平気。
希に挙動不審になるけど、これが単体による物か合併症かは不明。多分前者。
509 :
478 :2009/05/13(水) 01:49:07
>>508 1億稼ぐ人はそういうことまで分かるんですね。勉強になります。
510 :
478 :2009/05/13(水) 01:49:49
誤爆失礼。
自演ですか
レスありがとう。D2009、購入の方向で検討してみます。にしてもD3って…
自演乙w >478
リソースに短いテキストを入れたんだけど、コード上からできますか? ヘルプ見たらリソースからの読み込みはあってもリソースの変更とか 書き込みが見当たらなかったので。
resourcestring
516 :
514 :2009/05/13(水) 11:50:32
先ほどの質問とは関係ないんですが、 今作成中のソフトのアイコンをプロジェクトのプロパティで変更しようとして、 OKを押したらリソースの衝突(種類3、名前1)みたいに出るんですが、 リソースを自分では作ってないのでどうしたらいいでしょうか?
>>504 TGraphicなるものの作り方がよく分かりませんでしたが
それはもう一つ作ったTImage様にやってもらってなんとか目的のことは出来ました…
ありがとうございます
518 :
514 :2009/05/13(水) 12:04:04
「.dpr、.dfm、.pas」以外のファイル削除して、再構築したら直りました。
SoundExやSoundExIntってどういう目的で使うの?
memo1とmemo2があります。 memo1がスクロールバーやカーソルキーで画面スクロールした時に memo2も同じようにスクロールしたいのですが、どうしたら良いですか。
自己解決しました
Delphiで、Winsockでチャットソフトみたいのを作ろうと思ったんだが、 Winsockの初期化も終わって、ソケットも作ったんだがこの後がうまくいかない。 こういうのって、この後でPortやらIPやらを設定するんだよな?
上手く行かないコードを晒そうよ
>>524 すまなかった
var
Form1: TForm1;
ClientSocket1: TSocket;
WSAData : TWSAData;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
WSAStartup($0101, WSAData);
ClientSocket1 := socket(PF_INET, SOCK_STREAM, 0);
if (ClientSocket1 = INVALID_SOCKET) then
showmessage('Winsockerror');
//ここら辺に何を入れるんだ・・・
end;
usesには、Winsockが入ってる。
何でわざわざAPI直接呼んでるの? TClientSocketとかを使えばいいんじゃないの?
>>526 まぁ、それも思った・・・
ちょっと、そっち側方面でがんばってみるわ。
すまなかった
デスクトップにあるショートカットにドラッグ&ドロップしたのと同じような動作をさせることってできますか? Delphi5.0 Windows2000
for i := 1 to ParamCount do ShowMessage(ParamStr(i)); って話か?
たぶん逆? Delphiのアプリの指示で、あるファイルをデスクトップのショートカットにドラッグアンドドロップをさせたいんです よろしくお願いします <(__~_)>
ショートカットにファイルをドロップ=ショートカットにファイル名を引数で与えて起動 ということは、(ry
実は、一度 ショートカットパス ドロップファイル名 で BATファイルを作ってみたんですが どうもうまく動かなかったんで、Delphiで何とかならないものかと思い質問してみたんですが…
>>533 ありがとうございます <(__^_)>
ショートカットのリンク先はわかっていて、BATで リンク先のパス 処理させたいファイルパス とやってみたんですがうまくいかず…
リンク先のファイルが .CMD ファイルなんですがそれって何か関係あるんですかねぇ
>>534 めんどくさいから、試したコードあげろ。
てst
お言葉に甘えて procedure TfrmMain.Button2Click(Sender: TObject); var SelectedFileName:string; SHExeInfo:ShellExecuteInfo; intFileCount:Integer; i:Integer; strPDFPath:PChar; begin if odlgPDF.Execute then begin intFileCount:= Dialog1.Files.Count; for i:= 0 to intFileCount - 1 do begin strPDFPath:= PChar(Dialog1.Files.Strings[i]); ----- ※1 //strPDFPath:= PChar(Dialog1.FileName); ----- ※2 SelectedFileName:= 'E:\Documents and Settings\All Users\デスクトップ\hogehoge.lnk'; SHExeInfo.cbSize := SizeOf(SHExeInfo); SHExeInfo.fMask := 0; SHExeInfo.Wnd := handle; SHExeInfo.lpVerb := 'open'; SHExeInfo.lpFile := PChar(SelectedFileName); SHExeInfo.lpParameters := strPDFPath; ----- ※3 //SHExeInfo.lpParameters := PChar(Dialog1.FileName); ----- ※4 SHExeInfo.nShow := SW_SHOWDEFAULT; ShellExecuteEx(@SHExeInfo); ← エラー発生個所 end;// end; end; としてみたんですが、EAccessエラーが出ます。 ひとつのファイルなら(※1をコメント化 ※2を生かす ※3をコメント化 ※4を生かす)とすると成功します、何か大ボケしてますか?
直接は関係ないけど テキストファイルの改行コードを調べて表示とかしたいんだけどどうやるの?
>>537 プロパティへのポインタは使っちゃダメだったような。
strPDFPathをString型にすればOKにならないかな?
strPDFPath:String;
strPDFPath:= Dialog1.Files.Strings[i]; ----- ※1
SHExeInfo.lpParameters := PChar(strPDFPath); ----- ※3
>>539 ありがとうございます
やってみましたが、症状変わらす…
すまんorz
>>540 いや、こちらこそありがとうございます
そこらへんが問題なのは間違いないんでないかなぁと思うんですが
もしまた何か気づいた点があったらお願いします<(__^_)>
>>537 EAccessViolationとは関係ないと思うが
opendialog.filenameって複数だとカンマ区切りで帰ってこなかったっけ?
スペース区切りじゃないと引数にはならないよ。
あとshellexecuteやwinexecでもやってみれば?
>>543 ありがとうございます
ShellExesute でぶじ解決しました。 <(__^_)>ありがとうございました。
しつもん。 AssignFile(F,'filename'); ReWrite(F); Writeln(F,'ほげほげふがふがうごうごるがるが'); CloseFile(F); みたいなファイルの書き込みかたしたとき、 書き込む文字列の長さによって勝手に改行コードが入るのは仕様でつか。 Writeln(F,StringReplace('文字列',#13#10,'',[rfReplaceAll])); としてもなるんでおいらの勘違いではなさげ。
writelnのlnは一行分書き込めって事 write使うべし
ShellListViewのカレントフォルダのフルパスってどうやって取ればいい? RootだとrdDesktopなんかの特殊フォルダが取れない。
>>547 特殊フォルダは仮想フォルダなので、フルパスは取れない。
「C:\Documents and Settings\xxx\デスクトップ」のように取りたいってことかな?
そう。 どこであろうと手っ取り早く意味のあるフルパスを取りたい。 combobox経由だと取れるっぽいけど事情があってややこしくなるので 直接取れないかと思ってるんだけど見当たらない・・・
そのパスでいいなら ShellListView1.RootFolder.PathName
って書いたが、これだとルートフォルダのパスだな。
552 :
545 :2009/05/16(土) 09:14:15
ほうこく。 なんか変だとバイナリエディタで確認したところ 文字列に#10が混入してたのでした。 完全においらの不手際。すまん。
553 :
デフォルトの名無しさん :2009/05/16(土) 14:29:03
壁紙にJPGを指定する方法教えてください。 BMPだとうまく行くのに。
========================================================================= // 親クラス(testclass_A.pas) TTestA = class private FIncludeFile: TIncludeFile; FFile: String; procedure ReadIncludeFile(); public constructor Create(const DataFile:String); Overload; Virtual; constructor Create(var CopyFrom:TTestA); Overload; Virtual; property FileName: String read FFile write FFile; end; constructor TTestA.Create(const DataFile:String); begin FFile := DataFile; ReadIncludeFile(); // FFile(DataFile)読込 end; constructor TTestA.Create(var CopyFrom:TTestA); begin Self.FIncludeFile := CopyFrom.FIncludeFile; end;
555 :
554 :2009/05/17(日) 04:01:53
========================================================================= // TTestAの派生(testclass_B.pas) TTestB = class(TTestA) public constructor Create(var CopyFrom:TTestB); end; constructor TTestB.Create(var CopyFrom:TTestB); begin inherited Create(CopyFrom); end; ========================================================================= // プログラム(unit1.pas) classA := TTestA.Create('1234.dat'); classB := TTestB.Create(classA); =========================================================================
556 :
554 :2009/05/17(日) 04:02:48
上記のようなコードを書いてテストしています。 classAをcreateして、ReadIncludeFile()にてFFile(上記では1234.dat)を読み込み、データをFIncludeFileに保存しています。 同じことをclassBでやりたいのですが、ある事情でclassBからCreate('1234.dat')することができません。 (上記はあくまでテスト例であるためこのように書いていますが、実際にはもう少し複雑になっておりclassBからCreate('1234.dat')することができない(したくない)状況になっています) しかし、ReadIncludeFileより読み込んだFIncludeFileのデータをclassBのFIncludeFileにコピーしたいのです。 classA := TTestA.Create('1234.dat'); classB := TTestB.Create('1234.dat'); このようにはしたくないが、 [classB]-FIncludeFile = [classA]-FIncludeFile というようにしたいのです。 現在躓いているところは、「TTestAの派生(testclass_B.pas)」の constructor TTestB.Create(var CopyFrom:TTestB); begin inherited Create(CopyFrom); end; で、「指定された引数で呼び出すことのできるオーバーロード関数 'Create' が定義されていません」 というエラーが出ていまして、試行錯誤してみたのですがだめでした。。。 ご教授お願い致します。
varを取れ 何のために付けるか理解してないだろ まぁそもそも設計自体がおかしいと思うが
558 :
554 :2009/05/17(日) 05:04:20
>>557 様
レスありがとうございます。
varを取ったらできました!ありがとうございます。
おっしゃるとおり確かに設計がだめなのかもしれません。
まだプログラミングを初めて約3ヶ月なもので…(^^;)
しかし、今回の件も含め、今後も色々と学んでいきたいと思います。
まだクラスという概念自体まだあまり理解していないもので…
関数・手続きに付けるvarは値パラメータと変数パラメータの違いですよね…?
varをつけない場合は値のみを渡し、varを付けたときは変数のアドレス(?)を渡すと思うので、
関数内で変数自体を弄ることが出来ると理解しています。
今回の場合は、TTestAのCreate(var CopyFrom:TTestA);でCopyFrom内のFIncludeFileを操作する
という考えがあったので「呼び出し関数側で直接操作する=varを付ける」という考えでした。
でした、というか今もその考えのまま理解できていません。(^^;)
もしよろしければ、ご解説をお願いできませんでしょうか?
varってのは実際にはポインタを渡してるんだけど、classの場合は元からポインタだからつける意味が無い ポインタを勉強しなきゃ深いとこまでは分からんだろうから、今理解しなくてもいいと思うよ 「クラスはvarしなくても中身が弄れる」とだけ覚えておけばおk
値型(Integer, Char, record)等はvarをつけると変数そのものを書き換える。 参照型(a := TMyClass.Createとやって動的に生成するもの)はvarが不要。 と覚えといたらいいよ。 クラスの参照にvarをつけるのはこういう風にインスタンスを挿げ替えるときに使う。 procedure foo(var c: TMyClass); begin c := TMyClass.Create('C'); end; var a: TMyClass; begin a := TMyClass('A'); a.Show; // 'A' foo(a); a.Show; // 'C' end;
561 :
554 :2009/05/17(日) 16:31:53
>>559 様、
>>560 様
レスありがとうございます。
なるほど、C言語でいう配列と同じようなものですね。
明示的にポインタを指定しなくてもclassという時点でそれがポインタであるみたいな感じですね。
とてもよい勉強になりました。
3名の方々、どうもありがとうございます。
>>553 レスがつかんな
Jpegを読み込んだらBMP.Assign(Jpeg)して適当なファイル名で保存しろ
それを壁紙ファイルに指定する
Windows XP以降ならjpegも直接壁紙に指定できるけどな。そういうことではなく?
XP以降もJPEGの壁紙指定はアクティブデスクトップの機能だよ 試しに無効にしてみればわかるけど、無効だと一覧に出てこないしダイアログから選んでも設定されない
動的に複数作成したTThreadが全部終了したかどうかが 分かる命令ってあります? 今は自前で実装してるんですが、全部終わった時に実行したい処理があるんですが、 たまに一つ残ってる場合があるみたいで確実に終わったかが知りたいんです。
数を数える
どうやって?
TThreadのインスタンスを管理してる処理はないっぽいな。 TThreadListなんてのもあるけどそのインスタンスの使われ方みてると関係なさそう。 デバッガではハンドル列挙してるからWin32APIではなんかあるのかもしれないけど 今やってる通り自前で管理するのがいいんじゃないの。
570 :
565 :2009/05/20(水) 23:02:57
皆さんレスありがとうございます。 参考にさせて頂きます。
Delphi2007にて自作コンポーネントのコレクションプロパティの中に さらに子のコレクションプロパティを持たせようとしています。 しかしながらオブジェクトインスペクタの...ボタンは表示されるものの、 ボタンを押してもなぜかコレクションエディタが開きません。 押せるのに無反応、腹立たしい限りです。 Items (TCollection) →○親のコレクション、エディタ開く SubItems (TCollection) →×子のコレクション、エディタ開かない SubItemsの方もGetOwnerのoverrideはしてあります。 子も親のコードを元に作ったので、基本の部分は外してない…と思うのですが、 何か考慮漏れしていそうな点などないでしょうか?
CPUがCore2の時に処理を分散させるプログラムってDelphiで 書けますか?
マルチスレッド
マルチスレッドにすれば勝手に分散してくれるってことでしょうか? タスクマネージャーで確認してみます。
アフィニティマスク
APIの話だからDelphiあんまり関係ないと思うけど
CPU Affinity指定しない場合、 スレッド三つ立ち上げたら自動的に(あれば)三コアに振り分けられるようになってるの?
ぐちゃぐちゃ言ってないで、テストコード作ってタスクマネージャでも見なさいな。
579 :
デフォルトの名無しさん :2009/05/22(金) 23:28:40
今時出るふぃなんて使っている情弱いるんだな
バカは放っておきなよ。
むしろWindowsアプリ開発ではDelphi一択状態 趣味プログラマには
しかし新規で買う物好きはいない
>>584 どうあっても粘着嵐しないと気がすまないんだなw
プログラミングセンスのないやつ花に使ってもだめだし 逆に扇子のあるやつはなに使ってもすごい。 つまり楽器とか絵とかと同じなのさ。
そんな当たり前のことを偉そうに書くなよ 趣味でやってる人もいるんだから そんな狭い了見じゃたいしたレベルじゃないな
粘着アンチって使いこなせなくて逃げ出した連中?
むしろなんかの病気。 でもスレ違いだからくだすれな質問以外はヲッチャスレにどうぞ。
590 :
デフォルトの名無しさん :2009/05/23(土) 14:41:06
おまえらなんでVC使わないん?
気に入らない質問は排除してまでアンチと雑談し続けるおっさんたち
いろんな言語使ってるが、Windowsアプリに関しては Delphiが一番作りやすいな。
俺的にはC++よりC#の方が使いやすい
あたりまえ
俺的にはPL/Iが一番なんだが、ちょっと似ているDelphi(Pascal)で我慢してる。
個人的にはVBよりずっとカンタンだと思ってる
ランタイムなしってのが一番大きいだろ
値段だけが初心者向きじゃないのがねぇ
初心者にはC#でもやってもらいましょ
UTF8の文字をS-JISに変換してくれる サンプルコードってないですか? DEL7にあるは、変換結果の文字列がなくなってしまう時があるんですが、 なぜでしょうか?
>>602 > 変換結果の文字列がなくなってしまう
Utf8ToUnicodeで不正バイトがあるとそこで終了するから
改造するか、JCLに入ってるのとか使えば良い
>>603 ありがとうございます。
不正バイトで強制終了てことは
なにかのチェックに使えそう。
教えてください C++Builderで記述されたコードをDelphiに移しているのですが #ifdef _DEBUG #define hoge hage #endif という、デバッグモード時かどうかの切り分け方法はどのように記述すれば良いのでしょうか。
コンパイラ指令で検索
Delphi7は確か if DebugHook <> 0 then timelst.SaveToFile('Test.txt'); とか書けたよ。
それはIDEからデバッグ実行されたかどうかを判別するフラグ {$ifdef DEBUG} {$define HOGE} {$endif} {$ifdef HOGE} const a=1; {$else} const a=2; {$endif} みたいに書く。 Cのdefineそのままの機能はない。
609 :
605 :2009/05/25(月) 19:20:06
文字を左から一文字ずつドラクエ、エロゲ風に表示させたいのですが、 どうしても思ったように動作してくれません。 間にメッセージを挟むと一文字ずつ出てくるのが確認できるんですが 実際そういう使い方はできません。 どうすればいいでしょうか。 var i , mojisuu :integer; begin mojisuu := Length(WideString(edit1.Text)); For i := 1 To mojisuu do begin sleep(updown1.Position); label2.Caption := Copy(edit2.Text, 1 , i); //showmessage(inttostr(i)) end; end;
captionの下に Application.ProcessMessages; を入れる。
できた!即レスありがとう
見るからに読みにくそうで遅そうなコードだ
うるせいよ てめいもわかってねぇくせに
615 :
610 :2009/05/25(月) 22:46:18
「 Application.ProcessMessages 」でググってみたところ、
>>613 の言うように無駄にCPUパワーを使う、というのを見ました。
何か別のいい方法があるのでしょうか?
616 :
610 :2009/05/25(月) 22:47:20
>>613 さん、でしたね;
敬称が抜けてました。。
そこを言ったんじゃないんだがまあいいか TTimerとかを使えばいいんじゃないかな
普通はsleepとProcessMessagesじゃなくてTimer使うとおm
というかそんなに空行だらけで見難くないのかと
行間に // でどういう動作するかメモっていたので
>>615 Sleep(1);も一緒にはさんどけばいい。
label2.Caption := Copy(edit2.Text, 1 , i); label2.update;
なにつくってんの?
へへー、お父さんへのプレゼント!
エロゲ風のエロゲ
ゲームにLabelは使わないでしょ
使ってはいけないという決まりがあるのでしょうか…?
ない。
APIスレに書かなきゃいけないんですが質問の仕方が 分からなかったのでお許しください。 コンポーネントのEnabledプロパティーに相当する APIってあるんでしょうか?
APIというか procedure TControl.SetEnabled(Value: Boolean); begin if FEnabled <> Value then begin FEnabled := Value; Perform(CM_ENABLEDCHANGED, 0, 0); end; end; に相当するメッセージを投げればいいんじゃないの。
と思ったらこれもDelの範囲内か。忘れてくれ。
634 :
629 :2009/05/27(水) 00:46:25
メソッドポインタを比較する方法ってありますか? たとえば、あるボタンのOnClickイベントに割り当てられてる関数が Click1関数なの知りたい場合 If Button1.OnClick = Self.Click1 then… とかやってもコンパイルエラーになってしまう。
Sender 使うってのは外してる?
TMethod(Button1.OnClick).Code = TMethod(Self.Click1).Code とかかな インスタンスも考慮したい時はDataも比較すればおk
UTF-8のファイルを読み込んでTmemoに表示させると文字化けしてしまうんですけど どうすれば文字化けさせずに表示させることができるのでしょうか 初歩的なことなのかもしれませんけど教えていたいただけないでしょうか
UTF8Decodeとかかな
D2009
Delphi製アプリは基本SJIS専用と思っておけばいい。 扱おうと思えば扱えるけどいちいち変換しなきゃならないし 変換したら情報が欠落する危険性を常にはらんでるし。 2009とかTNT(は名前変わったんだっけか)で対応可能ではあるが。
ありがとうございます やっぱり文字コード変換しなきゃダメですか… テキストから特定の文字列を抽出してリスト化したかったんですが とりあえずファイルの中身をコピペすることで対応しようと思います 文字コード変換はややこしそうなのでもう少し勉強してからとりかかりますわ…
たぶん
>>635 の疑問は@Click1のようにすることで解決するレベルだな
ListView(レポート形式)の全データを クリップボードにコピーするにはどうしたら良いでしょうか? コピーした後、Excelでそのまま貼り付けすると、 ListViewの中身がカラムを含めてセルごとに貼り付くような形にしたいのです。
内部でTStringListに項目をコピーして Clipboard.AsText := sl.Text すれば改行つきテキストをExcelのセルにコピーしてくれるはず。 二次元データの場合はどうなんだろ。 たしかタブあたりで区切ってやればいけたような。 sl.Add(item.SubItems[0] + #9 + item.SubItems[1] + #9 + ...) OLEでやるのが確実か。
そうそう クリップボードにTSVで流し込めばいいだけ
>643 残念ながらそうはいかないんだな。
理由も解決策も示さずに否定だけする馬鹿がいると聞いて飛んできました
解決方法?もう>637が示してる。 理由?挑発しても教えてやらない。
そういう幼稚なのは隔離スレでやってくれ
というかマジレスすると
>>637 ってコンパイル通らないんだけどなw
マジレスするとポインタが分からないんだけどなorz
654 :
644 :2009/05/30(土) 08:29:50
タブでつなげることでうまくExcelに貼り付きました。 ありがとうございました!
ここは くだすれDelphi(超初心者用)その49 超初心者用 超初心者用 超初心者用
例えば <html>あいうえお</html> のような文字列が複数あり 『あいうえお』の部分だけ表示させるにはどういう記述をしたらいいんでしょうか? 『あいうえお』部分の文字数は決まっておらず上から順番に表示させたいんですけど 思うようにいきません もし良い方法があったら教えて下さい
ソースから抽出したいのかhtmlを処理したいのかわからんが いらない文字は削ればいい
Pos(AnsiPos)とCopy使えばいい
>>657-658 ありがとうございます
どちらかというとソースから抽出に近いかもしれません
Posでワイルドカード的な使い方ができれば
Copyで必要な部分だけ取り出せる気がするんですけど
そんな方法ってないでしょうか?
660 :
デフォルトの名無しさん :2009/05/30(土) 16:25:33
一番初めに現れる場所出してそれ以前のを削除して次に現れる場所出してそれまでのを結果とすればいいだけなんだが そんなことも分からないの?
function Strip(var sourcestr: String; delimiter: string): string; overload; begin Strip(sourcestr, delimiter, result); end; function Strip(var sourcestr: String; delimiter: string; var ret: string): Boolean; overload; var idx: Integer; begin if sourcestr = '' then begin ret := ''; result := false; end else begin result := true; idx := AnsiPos(delimiter, sourcestr); if idx < 1 then begin ret := sourcestr; sourcestr := ''; end else begin ret := copy(sourcestr, 1, idx-1); sourcestr := copy(sourcestr, idx + Length(delimiter), High(Integer)); end; end; end;
procedure TForm1.Button1Click(Sender: TObject); var s, tag, txt: String; begin s := '<html>あいうえお</html>'; Strip(s, '<'); tag := Strip(s, '>'); text := Strip(s, '<'); ShowMessage(tag + sLineBreak + text); end; 超低速でいいならこんな感じ。 正規表現 HTML 抽出なんかで検索するとまともなサンプルが出てくるだろう。 Delphiで正規表現使う場合は別途ライブラリを用意する必要がある。
>>660 ありがとうございます
ただ、単純に
<html>あいうえお</html>
<html>かきくけこ</html>
みたいなものならそれでいいですけど
<html>
<table border='1'>
<tr><td height='20' width='100'>あいうえお</td><td height='20' width='30'>あい</td><td height='20' width='50'>うえお</td></tr>
<tr><td width='100' height='20'>かきくけこ</td><td height='20' width='30'>かき</td><td height='20' width='50'>くけこ</td></tr>
<tr><td height='20' width='100' bgcolor='#FFFFFF'>さしすせそ</td><td height='20' width='30'>さし</td><td height='20' width='50'>すせそ</td></tr>
</table>
</html>
みたいな文字列からtrタグ内にある各tdタグのheight値、widht値、表示される文字を
それぞれをStringGridに表としてまとめる、といったことをしたいとき困りますよね?
最終的には属性の順番もバラバラの可能性があり
不要な属性や文字列も混ざっている可能性があることも想定していますが
とりあえず複雑な要素は省いた簡単な文字列操作の方法から勉強してみます
>>661-662 ありがとうございます、正規表現での文字列検索に関する記事があったので参考にしてみます
htmlを処理したいんじゃん
665 :
デフォルトの名無しさん :2009/05/30(土) 18:25:22
>>664 htmlの処理ってわけじゃなく
例をあげるのにhtmlが都合がよかっただけです
html(の構文)を処理したいんだね
>>666 ではもう一つ例を挙げるとしたら?
XHTML?
>>668 文章の中に文がいくつ含まれていて、『』「」などを含んだ言葉がいくつあって
またそれぞれのカッコ内の言葉を列挙する、とかでしょうか
最初から最後まで不特定の文字列よりも
ある程度決まった構文のhtmlの方が操作しやすいのではと思い例にあげました
最近勉強し始めた超初心者なので
文字列操作の勉強のためにいろいろと試しているところなのです
正規表現で切り出すか自前のパーザを書くしかないよね
ざっくりとしか読んでないんだが 質問者は何か作りたいものがあってそこで躓いてるのならここで聞けばいいけど 勉強したいのなら自分で関数作って試行錯誤したらいいよ もしかしたら元から便利な関数があって1行で済ませられるかもしれないけど 最初から近道探してたら勉強にはならない
とりあえず自分で例に挙げといて本当は違くてとか言われても困るって事で
>>671 確かにそうですね
とりあえずいろいろ関数作って試行錯誤してみます
答えて下さった方たちもありがとうございました
674 :
デフォルトの名無しさん :2009/05/31(日) 16:32:18
規制がかかってて友人にお願いした代理書き込みなのでまとめて質問します。 ----- 1 OpenDialogで選択されたファイルが存在するディレクトリを取得するにはどうすればよいのでしょうか? ----- 2 MediaPlayerとTimerのOnTimerイベントを使ってTrackBarのつまみの位置を再生と共に動かすようにしました。 TrackBar1.Position:=MediaPlayer1.Position; こんな感じで。 次に、TrackBarのOnChangeイベントを使い、ドラッグして移動した位置から再生させるようにプログラムしたのですが、曲が再生されません。 MediaPlayer1.Position:=TrackBar1.Position; こんな感じ。 これではこの2つのイベントがぶつかり合って再生されないです。 どのイベントを使ってMediaPlayer1.Position:=TrackBar1.Position;を記述すればいいのでしょうか? ----- 3 ListBoxでアイテムを選択し、ドロップで上下に移動した時に、選択が移動するのではなく、選択したアイテムが移動するようにするには何を設定すればいいのでしょうか? 移動した時にあわせてItemIndexも自動的に変わるようにしたいのです。 ----- 4 MediaPlayerで音量を調節するにはどうすればいいのでしょうか? Windows全体の音量ではなく、MediaPlayerで再生する時だけの音量を調節したいのです。 一気にたくさん質問してすいません。 どなたかご教授お願いします。
アプリ毎の音量はVistaで付いた機能だけど、それ以前で出来なかったなんてことは無いわけで TMediaPlayerがショボイだけでしょ
677 :
675 :2009/05/31(日) 17:28:49
>676 ホントッスか?方法をkwsk
いやしらんけど、WMPのボリュームって独立してるじゃん
679 :
675 :2009/05/31(日) 17:51:04
それデータいじってるだけだって。
なんかTWindowsMediaPlayerってのもあるじゃん OS変えれって言うよりかコンポ変えるって方が適切だと思ったわけ
681 :
デフォルトの名無しさん :2009/05/31(日) 20:12:37
TMediaPlayerってMCIのラッパじゃなかったっけ? なら普通に使えるんじゃね
>>675 横からすみませんが、そのVistaでの個別設定の方をご存じないでしょうか?
685 :
675 :2009/06/01(月) 23:17:31
>>683 アンカ先とは別人だが、音量変えるのにデータ直接弄る必要があることを知らずに
「しらんけど○○ではできるし」とか言っちゃう奴の方がどうかと思うわ
>>685 ソースとMSDN見てみたけどそれで変えれるな
単なるプレイヤのWMPに丸投げしてるから0〜100の精度しかないけど
DirectShowやDirectSoundくらいの細かい制御は無理ぽい
687 :
684 :2009/06/02(火) 01:11:24
>>686 そう、DirectShowがあるから音量変えるのにデータ直接弄る必要なんか無いし
OSも変える必要無いし、あきらめる必要もない。
その最たる例がWMPだとおもったわけよ。
689 :
デフォルトの名無しさん :2009/06/02(火) 07:03:29
個人的な経験からいくと、
>>688 の方が優秀なエンジニア。
>>689 音量変える必要があるってのは原理的な話だろ
DirectShowの話出してるんだから
>>686 はDSでできることも当然知ってるんだし
個人的な経験関係なく、お前のレスがどのレスよりも馬鹿なのは確か
>>692 何で噛み付いてんだ?
比較された駄目なほうの人か?
今日も鬱屈したおっさんががんばっております
ごめん、ついカッとなっちゃって・・・
DirectShowとかめちゃくちゃ難解だし面倒だろ ピンの接続みたいな概念がまず把握できない人がいるし、 少なくともTMediaPlayer使ってる人に勧められるようなシロモノじゃない それを代替として挙げるのはさすがに無理があると思うが よっぽどデータ直接弄った方が楽だぞ。資料やサンプルの数も比較にならないほど多いし つーかデータ弄るの難しいと思われてるようだけど、原理はともかく方法だけならかなり簡単な部類じゃね?
>>693 それにわざわざレスしてるお前さんもその仲間だろ
もちろん俺もなw
意味和漢ね
だからTWindowsMediaPlayer使えつってんだよカスども
はい
さあもりあがってまいりました
Delphiの新しいやつはIndyのヘルプが分かりやすくなってる?
いま細かいバグ、直している(w 膨大すぎるよ。ヘルプファイル。
704 :
デフォルトの名無しさん :2009/06/02(火) 20:36:47
>>675 ありがとうございます。
おかげさまで1・3は解決できました。
4はあきらめます。
問題は2なのです。
再生と共にTrackbarのOnChangeイベントが発生するので、ドラッグした時と同じになってしまうのです。
OnStartDragなどでも反応しませんでした。
どうすればいいのでしょうか?
また、指定した位置から再生させることができません。
試しに
Mediaplayer1.position:=30;
として実行してみたのですが、全く再生されません。
この後にMediaplayer1.play;
を加えても最初から再生されるだけで、30秒から再生されません。
これでは仮に再生中にTrackbarから数値を得られたとしてもそこから再生させることができません。
どうしたらいいのでしょうか?
Trackbar1.OnChange := nil; Trackbar1.Position := hoge; Trackbar1.OnChange := Trackbar1Change; こんな感じじゃね あるいは Flag := True; Trackbar1.Position := hoge; Flag := False; // Trackbar1Change if not Flag then fuga; な感じか
D2007です。 DBComboboxなのですが、onChangeイベントでPostしても、 Exitでモードチェックせずに FDataLink.UpdateRecord; してくれちゃうため 例外が発生します。 onExit発生前にコンポーネント側で発生するので例外がキャッチできません。 うまい解決方法はないものでしょうか。
ComboBoxでリストがズラッと表示されてる状態でカーソルが当たってる項目を削除ってどうやるんでしょうか? 表示されてる中から削除したい項目のとこでマウス右クリック→PopUpメニューを表示→削除を選んだら 項目削除みたいな感じで考えていたんですが、PopUpメニューってEditの部分でしか出てこないみたいです。 リスト表示の部分では出せないんでしょうか?
ヒィ・・・・
フゥ
兵法
>>708 ハァじゃねぇよ。
でも、ハァっていわれちゃうレベルなの?
> PopUpメニューってEditの部分でしか出てこないみたいです。 この一文が無ければまだ良かった。
そこに書いてることくらいはやったんだろうな
やった。 popupもでた。 だけど、リストのカーソルがあるItemの取得をどうすんだろうとか、 その先に進めないんだ。 (俺、そんなレベルなの) FAQでマウスカーソルの下にある文字列の取得とかあったと思うんで それを使えばいいのかと思うんだけど、もっとスマートな方法があるんではと 思って質問したわけ。
VCLの機能じゃたぶん無理な気が。 それに標準的なUIそしてはちょっと微妙。 他にやりようがなかったらItemsの一番下に(項目の整理)でもくっつけて編集用のダイアログ開くとか。
ブラウザの記憶したID/パスワードを個別に消すのと同じような動作をさせたいんだろうね。 あまり一般的な動作じゃないから、プルダウンを選択した直後にDELで削除とかするか、 自分でコントロールを作るよりないかも。
色々レスアリガトン 実は自分の思いこみなんだけど、ComboBoxの データを消す時ってリストから選んで消すのって 一般的な動作じゃなかったけ? そんなことよりハァって言った奴回答しろ
プッ
何でいまだにDelにしがみついてるの? 馬鹿なの、死ぬの?
天才として生きます
正直、しがみつきたいところなんだがエンバカのやる気のなさに限界を感じてる。
C#ねぇ・・
二つのString型変数が、大文字小文字区別なしで同じ内容のときTrueを返す変数を教えてください 具体的に言うと 〜〜('aAA' ,'AAa') というときにTrueを返し、 〜〜('AAA' ,'BBB')でFalseを返すようなものです
lowercaseでヘルプ探せ
UpperCase/LowerCaseで大文字化してから比較 UpperCase('aAA') ==> 'AAA' UpperCase('AAa') ==> 'AAA' SameTextを使う SameText('aAA', 'AAa') ==> True 雑多な便利関数が山のようにあるから 一度ヘルプの文字列処理関数一覧に目を通しておくといいよ
CompareTextかAnsiCompareTextだろ、常識で考えて。 >731 一度ヘルプの文字列処理関数一覧に目を通しておくといいよ
正直CompareとSameの使い分けはいつも迷うわ
>>732 TrueかFalseを返して欲しいって言ってんだからSameTextでいいじゃん
二つの文字列が同じポインタを指してる場合は厳密な比較を省略するからCompareTextより早いし、
異なっていたとしても結局CompareText呼ぶから処理的な違いはない
だから一致してるかどうかだけ欲しい場合はSameTextの方が適当
ヘルプだけじゃなく一度ソースにも目を通しておくといいよ
C#の組みやすさはたまらん。 でも、ネイティブコードにできないのでリリースしづらい。 売り物はDelで作るか、DelでActiveX作ってC#に組み込んでるな。
>>720 項目を選ぶ操作とその項目を追加削除する操作は
基本的には別の場所で行うのが望ましいと思います。
そうでないとユーザーは混乱すると思います。
たとえばJaneViewの書き込みウィンドウの名前欄のコンボボックスだと
削除機能はありません。
削除は設定画面で行います。
>>736 アドバイスありがとうございます。
どういう操作性がユーザーに便利かってことと、
Windowsアプリの一般的操作ってことも両方
加味しないといけないですね。
いや、どう考えてもお前の言ってたのは一般的じゃないから
だから加味するんだろ
740 :
737 :2009/06/05(金) 15:59:30
>>738 だから、加味するって書いてるだろ。
馬鹿なの?死ぬの?
TStringListとかにAddObjectってありますが、 逆にコンポーネントにTStringListとかを関連付ける 方法ってありますか?
>>742 ありがとうございます。
procedure TForm1.Button1Click(Sender: TObject);
begin
strList:=TStringList.Create;
strList.Add('HogeHoge');
Button1.Tag:=integer(strList);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Caption:=TStringList(Pointer(Button1.Tag)).Strings[0];
TStringList(Pointer(Button1.Tag)).Free;
end;
上記のようなテストプログラムを書いてみたのですが、
Captionに表示は出来たので基本的な使い方はいいと思うのですが、
破棄の仕方はあってますでしょうか?
Tagをヒントにググって見たのですが、破棄の仕方がイマイチよく分からなくて。
>Button1.Tag:=integer(strList); はTagの型に合わせてLongint(strList)が正しい。 # LLP64環境のDelphiってLongIntは何ビットになるんだろう? >TStringList(Pointer(Button1.Tag)).Free; TStringList(Button1.Tag).Free; TObject(Button1.Tag).Free;でも可。
Delphiで文字列を数値に変更するのに、数値以外までを数値に変換してくれるのって ないでしょうか? StrToFloatDefだと例えば '123円' とかで入力してもデフォルト値になってしまいます。
Val
747 :
745 :2009/06/05(金) 22:41:48
>>746 Valは整数でしか使えないみたいなんですよね。
Cのstrtodのようなものがあればいいんですが…
自分で作れ
使えなくないし
作ってから気づく、35の夏
今時、Delphi5で勉強中なのですが、BMPからJPGでの変換時について 質問があります。 かなり大きなBMP(1920*13000)のBMP→JPG変換をすると JPEG エラー #36. というエラーが発生します。 比較的小さいサイズの変換はスムーズに行くのですが、ファイルサイズまたは、 画像サイズに影響があるものなのでしょうか? また、回避する方法はあるのでしょうか? ソースは uses jpeg; procedure TForm1.Button1Click(Sender: TObject); var bmp : TBitmap; jpg : TJPEGImage; begin bmp := TBitmap.Create; jpg := TJPEGImage.Create; bmp.LoadFromFile('test.bmp'); jpg.Assign(bmp); jpg.SaveToFile('test.jpg'); jpg.Free; bmp.Free; end; このような感じなのですが。。。 ご教示いただければ幸いです。 よろしくお願いします。
752 :
745 :2009/06/06(土) 00:08:18
>>749 ヘルプには整数を表す式と書いてたのに使えるみたいですね。
Valでいってみようと思います。
以下引用
Delphi のコードでは,Val 手続きは,文字列値 S を,Read でテキストファイルから
読み出したかのように,S が表す数値に変換します。
S は文字列型の式です。S は符号付きの整数を表す文字列でなくてはなりません。
ソース、EXE、DCU等からどのバージョンでコンパイルされたか知る方法はありますか?
>>744 IntegerとCardinalが環境依存であってLongintは固定です
あとTagは汎用性を持たせるために常にIntegerと同じサイズになるだろうから、
(じゃないと64bit環境ではポインタを持たせられない)
別にIntegerでキャストしても問題ないと思うしその方が移植性高くなる気がする
今から移植性とか言っても何言ってんだって感じではあるけどw
>>751 調べてみましたがエラー#36はディスクスペースが足りないというエラーのようです
単純に空き容量不足の可能性もありますが、Delphi5ということなので、
内部で古い空き容量取得関数が使われていることに起因するバグのような気がします
試しにSaveToFileではなく、SaveToStreamを使ってストリーム経由で保存したらどうでしょうか
文字列をSameStrで比較した場合と、= で比較した場合って違いがありますか?
試せば分かることは聞くな
割りと真剣に聞いてるんだが…
オブジェクト比較と文字列比較の違いじゃないの
>>761 そうかなーとも思ったんだけど、
if toolbar.Buttons[i].Caption = strName then
こんなコード書いても期待通りに動いてたんだ…
そもそもSameStrは存在するけど、ヘルプが無かった…
あ、Delphi2006です。
763 :
751 :2009/06/06(土) 13:19:56
>>754 GDIplusのことはまったく知りませんでしたが、ちょっと調べただけでも
いろいろできることがわかったので、試してみます。
>>755 保存時にエラーになってるようでしたのでTJPEGimage側かと思っていますが。。。。
>>757 SavetToStreamはまだ試していませんでしたので、こちらも併せて
いろいろ試してみます。
ありがとうございました。
>>758 そもそもSameってなによw
サメの話ですか?wってゆうwww
>>762 ソース調べてみた
まずSameStrは古いDelphiでは存在しない(それがヘルプにない理由かも)
そして内部処理で多少の差はあるけど、基本的には同じ動作をする
あとDelphiでは文字列同士のポインタ比較だけをする処理は自分で意図的に書かない限りないと思う
コードはSameStr(やその中で呼ばれるCompareStr)の方が短いけど、
=で使われる内部関数の方が最適化が施してあって実際の処理速度は速い
SameStrの存在意義はもうひとつのoverload関数のロケール指定できる方なので、
普通に使う際は=で比較していれば問題ないと思う
>>766 おおお、ありがとうございます!
スッキリしました
レコード方の保存てどうやるんでしょうか? TListに記憶させてTListを保存すればと思ったのですが、 TListには保存がなさそうなのでどうすればいいかと。 よろしくお願いします。
えっ?
シリアライザみたいなのを期待しているなら基本的に無理。 TObjectなpublishedプロパティにすればストリーム経由で簡単に読み書きできる。 そうじゃないならメモリの塊として読み書きするか フィールドごとにテキストに変換してちまちま書いてくしかない。 というのがDelphi7までの知識。 最近のメソッドぶら下げられる奴はできるのかね。
>>770 >シリアライザみたいなのを期待しているなら基本的に無理。
>TObjectなpublishedプロパティにすればストリーム経由で簡単に読み書きできる。
>そうじゃないならメモリの塊として読み書きするか
>フィールドごとにテキストに変換してちまちま書いてくしかない。
ありがとうございます。
TObject調べてみます。
>>769 なんか最近こいつみたいな馬鹿が出てきてるけど、
学校ってもう休み?
StringGrid内の文字列をクリップボードにコピー、切り取り、貼り付けすることってできないでしょうか 可能であれば方法を教えていただけないでしょうか?
>>773 uses clipbrd
Clipboard.AsText
del7なんだけど折り畳めるアウトラインエディタのコンポーネントってありますか?
MediaPlayerで再生されてる時に発生させるイベントはどうやって作ればいいんでしょうか?(TrackbarのOnChangeイベントのような) また、MediaPlayerでファイルが開かれてることを確認するにはどうすればいいのでしょうか? if MediaPlayer1.Open then ・・・ではだめでした。
Modeとか
>>759 こういうのは
ちょっと試す
↓
期待通りに動いた
↓
やったーこれでOK!
↓
実は勘違いでたまたま期待通りに動いただけでした
の可能性があります(いや恥ずかしい経験談なのですが)。
ちゃんと仕様を調べるべきです。
この人って質問が解決してある程度流れた後にどうでもいい重箱の隅つつくようなレスするよね
スルー推奨
でも、質問する前にソース見て仕様を調べるべきだな 見ても分からないとかPersonal版でソースが無いとかなら仕方ないが
無茶言うわ、ここ何スレよ…
>>784 スレタイ読めないの?
馬鹿なの?死ぬの?
えっ?
なにそれこわい
>>782 たしかにそれはあると思います、すいません。
蛆虫どもがわらわらと活動始めたね('▽')
自己紹介お疲れ様です♪
スルーしれ。
鋭い!
スレもったいないし、質問しづらいよ! はい次↓
プロジェクトファイルをダブルクリックして起動すると 以前の状態がまるで保存されていないのですが、 持しておくようにどこかで設定できるものなのでしょうか?
多分IDEの状態の事だと仮定します。 どのバージョンかは判らないので断定はできませんが、 メニューバーの右の方に「Default Layout」と書かれた コンボボックスが見えませんか? そこで画面の配置レイアウトを読込・保存できます。
環境オプション→設定→自動保存の設定→プロジェクトデスクトップ ってのは関係ないんだっけ?@D7
そっちは一度開いたファイルを、プロジェクト読込時に再度開く設定みたいですね。 両方やっとけば大体元通りでいいんじゃないかな?
801 :
797 :2009/06/09(火) 10:34:38
>>798-800 すいません、Delphi2009です。
うまく保持されるようになりました。ありがとうございました。
9年振りのDelphiで、設定や言語仕様もあやふやな状態。
DELPHI 2009 HANDBOOK読んでると、まるで別の環境ですね…
以前は同じソースを2枚で開いたり、他のユニットを参照しながら ソース書いたり出来たのに、今はそれが出来ないのがひどい退化。 折角4画面の広いディスプレイがあるのに、1画面しか使えない。 そのくせ、TColmnやTActionの編集は従来通り。 もちっとなんとかしてくれ・・。
2つのユニットを同時に表示する方法を教えて。
外部エディタ
表示の下の方
え?今も普通にできるでしょ
旧スタイルにしたら構造の挙動がおかしいんで泣く泣くもどしたなぁ
>>804 D7ですが、右クリックメニューでやってた気が。釣りなら反応してゴメン。
やだ何この人・・・
標準ダイアログ上のコンポーネントってメインフォームからアクセスって出来ませんか? 例えば、ダイアログ上にEdit1があるとして DialogForm.Edit1.Text:='a'; ってやるとアクセスバイオレーションエラーが出てしまいます。
それはDialogFormが生成されてないってことじゃ?
>811 標準ダイアログってなんじゃいな。
レスありがとうございます。 プロジェクトのオプションで自動作成になってたんで 実行した時に作成されると勘違いしてました。 フォーム作成順番があるので、確認をしなくてはいけないってことですね。
>>811 バージョンが書かれてないけど、少なくとも5、7では無問題
アクセスバイオレーションが出るのは、DialogFormが存在しないからじゃない?
例えば、フォームの作成順がメインフォーム→DialogFormのとき、
メインフォームのFormCreateイベントハンドラでDialogFormにアクセスすると、落ちるよ。
まだ作成されてないからね。
ただ、通常は、メソッド一つ挟んだ方が可読性が上がると思うけど。
>>809 ごめん、D2007/D2009の話。
右クリメニューにはもうないの。
出せるよ 調べなよ
まあこんな対応してたらあってもなくても教えてもらえるはずもないな どっちがカスなんだか…
教える気がないならレスする必要ないんだぜ。 調べてわかるなら聞かないんだぜ。 少なくともこの事に関して記載されたページはちょっとググったところで出てきやしない。 あるかどうかすら不明。
機能名そのものでググったら一発で出ましたけど お前の能力のなさを棚に上げて他人の批判はやめれ
機能名がわかったら聞かないっつーの。 機能名を使わずにググって見つけられないなら見つからないって事だよ。
わたしばかでーす って言ってるようなもんだな
>>822
あ・ほ・か。 答えで調べたら見つかったって得意げになってる方が頭おかしいっつーの。 知ってようが知っていまいが、教える気がないなら黙ってればいいのに。
正論だなw
>>821 お前はわからないことを調べるとき、答えで検索するのか?
817のグダグダっぷりにかんぱい
調べてわからないと得意げな奴しか見あたらねーw
>>828 だから聞いてんじゃん
スレタイ読めない池沼?
ばかなの、しぬの?
>>804 で言ってるのが、
"2つのユニットを2つの編集ウィンドウで同時に開く"という事であれば、
"別の編集ウィンドウを開く" または "別の表示ウィンドウを開く" です。
ガリレオIDEでは "タブの右クリックメニュー" から無くなってしまいましたが、
・[表示 | 別の編集(表示)ウィンドウを開く]
・[コードエディタ内(タブではない)の右クリックメニュー | 別の編集(表示)ウィンドウを開く]
は、旧IDE同様に存在します。
# D2009 では "別の表示ウィンドウを開く" ですが、
# それ以前は "別の編集ウィンドウを開く" になっています。
そうではなくて、"1つのユニットを2つの編集ウィンドウで同時に開く" という事であれば、
[ツール | オプション | 環境オプション | VCLデザイナ]で
"埋め込みデザイナ" を外さないと実現不可能です。
http://www.ipentec.com/document/document.aspx?page=delphi2006-other "埋め込みデザイナ" を外さないと、別の編集ウィンドウは表示されますが、
元の編集ウィンドウから、ユニットが消えます。
832 :
829 :2009/06/10(水) 15:42:03
>>831 何でもいいけど、何で俺にからんでんの?
やっぱり頭が悪いからじゃね?
お前の?
>>830 おお、こんなところにあったんだ。全然気づかなかった。
ありがとう〜!
やっぱり頭悪かったね
お前の?
逆にどんだけアホな検索すれば辿り着けないのか教えて欲しいな たぶん1回検索しただけで「調べたけど分からなかった」なんだろうけど
>>839 逆にとかどうでもいいから、機能名を使わずにググって見つかるキーワード出してみなよ。
>>839 みたいな奴っているよなぁ。
理屈言っても中身がないとか、だからなんなんだみたいな。
>>821 >機能名そのものでググったら一発で出ましたけど
この一文で馬鹿っぷり炸裂ですね。
>機能名
>機能名
>機能名
>機能名
>機能名
>機能名
>機能名
>機能名
>機能名
蛆虫どもがわらわらと活動始めたね('▽')
お前が?
「Delphi "別の編集ウィンドウを開く"」で簡単に出てきますね 機能名で探すのがおかしいと言ってる人は何がおかしいと思ってるのでしょうか 「別の編集...」はそれまで使ってたIDEから拾って来ればいいわけですし、 無くなった機能を探すんですから、まずその無くなった機能名で探すのは当然だと思います 質問者が検索で見つけられなかったのは、恐らく引用符で囲まずに検索したんじゃないでしょうか 最近の検索エンジンはヘタに賢くなったため、ある程度長い語は勝手に切ってしまいます 引用符で囲むことでひとつの単語として検索させられますから、 利用者側がもっと賢く使ってやる必要がありますね
>>844 / ̄ ̄^ヽ / ̄ ̄^ヽ
l l ____ l l
_ ,--、l ノ . /_ノ ヽ、_\ 丶 l ,--、 _
,--、_ノ:: `ー':: 、ミー---‐,,l o゚((●)) ((●))゚o l,,‐---ー彡, ::`ー' ::ゝ_,--、
,/ ::: i ̄ ̄ | . /::::::⌒(__人__)⌒::::: \ |  ̄ ̄i ::: ヽ,
/ l::: l::: ll | |r┬-| | ll :::l :::l ^ヽ
l l . l !:: |::: l | | | | | l :::| ::! l l l
| l l |:: l: l . | | | | | l ::l :::| l :l |
| l . } l:::::,r----- l \ | | | / l -----、_::::::l } l |
ヽ :l:::: ト:;;;;;;;;;/-/__........... /. | | | ヽ ...........__ノヽ;;;;;;;ノ ::::l /
| | |
| | |
`ー'´
>>846 >「Delphi "別の編集ウィンドウを開く"」で簡単に出てきますね
>機能名で探すのがおかしいと言ってる人は何がおかしいと思ってるのでしょうか
>「別の編集...」はそれまで使ってたIDEから拾って来ればいいわけですし、
>無くなった機能を探すんですから、まずその無くなった機能名で探すのは当然だと思います
はじめからそう書けばいいのに、自分の人間性の糞っぷりを晒すからグダグダ荒れるんだろが。
お前、実生活でもそうなんだから気をつけろよ。
2度と来るな。
はーい
851 :
てすと ◆cR08PK3l1o :2009/06/10(水) 22:40:12
てすとwwwwwちょwwwおまww はいはい てすとだお
梅
しね
質問です DCUの構造を解説したドキュメントってないでしょうか できればバージョン間の差異まであればいいんですが、特定バージョンだけでも構いません
>「Delphi "別の編集ウィンドウを開く"」で簡単に出てきますね 漠然とやりたいことしかないのにそんなキーワードを書ける訳ないだろ。 答えありきでキーワード出すんじゃねーよw
はいはい、そうだね
>>855 じゃあそれまではどうやって別のウィンドウ開いてたの?
漠然と開いてたの?w
>>857 猿の動物実験なんかで脳波でPCを操作するみたいなのあるけど、
あれの被験者だったんじゃね?
くだすれDelphi(超初心者用)その49 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用 超初心者用
これならまだレスがない方が価値あるわ
862 :
デフォルトの名無しさん :2009/06/11(木) 00:11:42
非アクティブで最小化されているアプリを通常の状態に戻すのってどうやるの?
蛆虫どもがわらわらと活動始めたね('▽')
Delphi、というかプログラムを最近始めた超初心者なんですが、 DelphiはDelphiで出来ているっていう意味がわかんないです。 鶏と卵みたいにどっちが先?ってことになると思うんですが。
IDEがDelphiのコードで書かれているって事じゃないの?
>>864 Delphiに限った話ではないけど。
アセンブラや他の言語で、必要最低限なコンパイラVer0を作る。
コンパイラVer0を使って、自分自身と同じ機能を持ったコンパイラVer1ソースコードを書きコンパイル
そのコンパイラソースを拡張して、コンパイラVer2を作成
そのコンパイラソースを拡張(以下省略)
そんな感じ。
コンパイラまでPascal製ではなかったな、TP時代は 今はどうか知らんがある程度はアセンブラ使ってるんじゃないの?
なぜ断言できる? > 867
ドラッグアンドドロップされたオブジェクトが ディレクトリかどうかを調べるにはどうすればよいでしょうか? ExtractFileDirだとC:\testをドロップするとC:\しか返ってこないですし… ExtractFileExtで空かどうか調べるのだと拡張子のないファイルと区別付かないですし…
FileExists or DirectoryExistsじゃあかんのん?
>>870 ありがとうございます。それで行けると思います。
>>868 そもそも売り文句がアセンブラ製で速い!だったんですけど
Wikipediaにすら載ってるし、そんな馬鹿みたいな質問するくらいなら少しは検索しなよ
function FileInfo(AFileName: String; var sr: TSearchRec): Boolean; みたいなの作っとくとたまに便利
Stringの引数にはconstとかvarとか付いて無いと色々不安になる
procedureとfunctionの使い分けがウザイ今日このごろ
全部functionでもいいんじゃね 馬鹿だと思われるだろうけど
全部procedureでもいいんじゃね 何か意味があるのかもと少しは思われるかも
空じゃないディレクトリ削除するにはどうすればいいですか?
CheckListBoxのことで教えてください。 ある処理をする時にCheckListBoxのチェック状態を処理前に戻す 場合があるので処理前に CheckListBox1 := CheckListBox; 元に戻す場合 CheckListBox := CheckListBox1; としたのですが、チェックの状態までは戻らないみたいです。 一つ一つ状態を記憶しておくしか方法はないでしょうか?
それじゃだめだね。 var dummychk: TCheckLisBoxt; begin dummychk := TCheckListBox.Create(nil); dummychk.Assign( CheckListBox ); 処理 CheckListBox.Assign( dummychk ); end; でどうでしょう? まぁ、普通にチェック状態を覚えさせておくのが簡単とは思うけど…
あ、ごめん。 Free忘れてる。 やるならtry finallyでくくってFreeしてね。
>>881 それじゃできないよ
処理前後で項目数が変わらないなら普通にBooleanの動的配列使った方がいい
>>880 も超初心者スレらしい質問だが、
>>881 もひどいなこりゃw
Assign(やAssignTo)ってのは実装されてないと何の意味もないよ
大元のTPersistentには最低限のコードしか書かれてないからね
途中のTControlなどでも同じ
だからどんなクラスでもAssignでコピーできると思ったら大間違い
動的にコンポーネントを複製するような時って Createで作って他の内容をコピーしたい時って hoge1:=hoge2; ってやってもダメって事? Assignでもダメなら、いちいちプロパティー毎に コピーしていかないといけない?
delphiでwebサーバープログラム組むのって無謀?基本のwebページあれば簡単?それとも普通にhtml吐ける?
アパッチみたいなの作るっていうこと? 多分CGIとかならやれると思うよ。 やったことないけど、Delphi5のインターネットプログラミング って本があるから。
>>885 ポインタのコピーしたところで中身までコピーされるわけないだろ
コピーした時点ではポインタの共有状態だけど 片方変更した時点で別物になるんじゃなかったっけ? stringとかのデータタイプの話でコンポーネントはダメなんだっけ?
中途半端に知識を持つと悲惨なことになる実例
>>889
トグルボタンのコンポってどっかに落ちてないですか? ググってたら2009購入者限定でかっちょいいコンポ配ってるの 発見したんだけど、Delphi7なんです。
892 :
889 :2009/06/15(月) 20:13:21
ホントその通り。 何年かぶりにDel触ったら、昔書けてたコードが 訳わからんくなってる。w
893 :
889 :2009/06/15(月) 20:15:09
スレ汚しすまん。 で、結局プロパティ毎にコピーして逝かなきゃならんの?
>>885 Niftyにあった、DelphiのFAQサイトに、オブジェクトをコピーするサンプルが掲載されてた。
あのサイト、どこかに引っ越したと思ったけど、どこ行った?
とりあえず「delphiオブジェクト コピー」でググると、上位に「Delphi FAQ: オブジェクトをコピーする」がヒットするから、googleのキャッシュでコード確認してみて。
少し手を入れれば、イベントハンドラもコピー出来るよ。
解決策も書かず、ケチ付けるだけの奴がたまに出るの見て 昔、MLにいたPcode(だっけ)思い出した。 あの人の場合、口は悪いがちゃんと教えてくれたけどね。
pcode
ん?
pcodeさん、懐かしい。 最初は皆から総すかんだったけど、後々賛成派も現れたよな。 文句しか言わない奴より、多少間違えてもそれがヒントになればいいんだからね。
>891 SpeedButtonじゃダメか?まあフォーカス取れないけど。 チェックボックスを改造するやり方もあるにはある。これならフォーカスも取れる。 TButtonLike = class(TCheckBox) protected procedure CreateParams(var Params: TCreateParams); override; end; procedure TButtonLike.CreateParams(var Params: TCreateParams); begin inherited; Params.Style := Params.Style OR BS_PUSHLIKE ; end; しかしプロパティが誤動作する危険がある。
関係ないけど何でorが大文字なの?
気のせい
>>899 レス?ォです。
そうなんですよ、フォーカスとれないのが嫌で探してたんです。
パネルを代用しようかとも思ったんですが、コンポ探しても見あたらなくて。
Delphianなら有ったんでしょうけどないモノはしょうがないですね。
関係ないけどsageは小文字じゃないと意味ないような
大文字だとSEGAにみえてしまうのは年のせいかね
俺?
230通も受信しはじめたからDelphiML壊れたかと思ったw
MLに会社名とか書いてないのが幸いだったな もしこんなのと取引してたと分かったらちょっと考えちゃう
たしかにね、 あんなことする奴が書いたソフトはあまり信じられないような気がするからね。
なんで無理やりここでやりたがるんだろう
嫌がらせのメールボムじゃないのか。
おはようございます。 1000鳥合戦、してもいい?
1000鳥スクリプト作成スレになりますた begin
end;
end.
unit 次スレ;
uses
ははははは 間違えちった。 interface
uses lib2ch;
質問です エクスプローラで複数のファイルを選択してそのファイルを取得するにはどうすればいいのでしょうか? 最初は「送る」にショートカットを置いてそこから取得して起動していたのですが、ファイル数が増えると 「指定されたデバイス、パス、またはファイルへのアクセスは拒否されました」のエラーが出ます。 調べたら、ParamStrの文字数512制限で引っかかっているようなんですが、他に方法はあるんでしょうか?
そのエラーはDelphiではなくエクスプローラ側のエラー
Delphi コンテキストメニュー でググれ
ParamStrに文字数制限があったかどうか忘れたけど GetCommandLine使えばDelphi側の制限は回避できるはず。 でもどの道Windows自体に制限はあるけどね。 数百数千の単位でファイルを受け取りたいならシェル拡張でメニューを追加するか フォーム起動してからそこにD&Dして受け取るかすればいいんじゃね。
やはり シェル拡張の方法ですか… 調べてはみたんですが、やったことないんで理解に苦しんでますがもう一度チャレンジしてみます。
Delphi7で作ったプログラムをWindows7RCで動作確認しています。 ほとんど動作するようなんですが、ComboBoxでDropDownCountが8にも関わらず、 30個表示されてしまうようです。 Vistaは持っていないのですが、これってVistaのときから同じでしょうか? またDelphi2007や2009ではどうなのかどうか、情報お持ちの方いらしたらお願いします。 (私はDelphi7以外持っていません) よろしくお願いします。
WinXP+D7開発でVistaで動かしたけど指定通りのDropDownCountだったよ。 # と思ったけど。テストでは…
930 :
927 :2009/06/19(金) 19:49:29
>>928 >>929 回答ありがとうございます。
それほど実害があるわけではないので我慢しようと思います。
Windows7はほとんどVistaと同じみたいですね。
Delphi7 なら RTL ソースコードをお持ちかと。 Delphi Lite でググれば、D2009 の RTL の D7 へのバックポートが手に入りますよ
マルウェアもついでに入りますけどね
なにそれこわい
7z扱うコンポーネントってないですか?
とか言ってる人間のPCを検索するとマルウェアだらけでした、なんてこともよくあること
丸ウェアって何?Jwardみたいなやつ?
PC初心者版へどうぞ
マルウェアには初心者版みたいな導入用バージョンがあるの?
できる○ウェア
一時的にデータを記憶させておく必要がある時に 例えば、Memoを見えないようにしておいてリストを入れておいて、 後から取り出すとかは邪道? その都度TStringListをCreate,Freeして使うべき?
正統派とは思わないけど、常に一定のCSVデータを格納しておく時、 俺はやってる。
どんなデータかにもよるんじゃね
Handle 食うから嫌い
handle食うから嫌いって何故ですか? ケチを付けるとかそんなんじゃなくて、私の知識不足 からの質問です。
必要なものを必要なだけ確保するというのがプログラミングの基本。 StringListが必要なのにただCreate/Freeが面倒という理由だけで Memoを配置するなんて論外。 というのが建前。 実際は今時Memoインスタンスひとつ増えただけでWindowsが落ちるわけでもない。 好きにしてくれ。
まあウィンドウは見えなくても外部から参照できるからユーザーには笑われるかもしれないけどね
気持ち悪いからやだ StringListもちょっと気持ち悪いけど使っちゃう
TStringListの生成ごときでうだうだ言ってる奴は、 TComponentにTStringList持たせただけのコンポーネントでも作ってもらったら?
TMemoはWindows管理下にあるので遅いしなぁ。普通にTStringListだろ。
with TStringList.Create do try //処理 finally Free; end;
長文のテキスト定数を簡単に記述できるヒアドキュメントがないから TMemo.Linesに書きたくなる気持ちは分からないでもない。
TMemo.Lines は TStrings な訳で TStringList は TStrings の子供だから TStrings を完全に含んでいる訳だが。
>953が言いたかったのは定数として文字列を用意する代わりにForm/Datamoduleに配置した TMemoにプロパティとして文字列を入れておく、ということだと思う。お手軽デバッグ用以外には やめてほしい手法だけど。
テキストファイルをリソースで組み込めばいいやん
TStringList.Create関連の一連の記述を単語登録しとけ。 おれはそうしている。 TMemo貼り付けるより、ずっと楽だ。
Delphiアプリのタスクバーアイコンを右クリックしたときのメニューが 他と違うんだけどてっとり早く同じにするコンポかサンプルコードないですか。
Delphi7Lite はソースコード完全公開ですから、使って安心。 Weaver / Delphi2010 の修正 RTL の取り込みも始まっているので みんなで使い回しましょう マルウェアいっているのは円場かのまわしものかね。
と犯罪者が仰ってます
正規ユーザーなら、RTL/VCL のソースを修正することに何の問題も無いのだが 961 は、どこに問題を感じているのだい?
963 :
デフォルトの名無しさん :2009/06/25(木) 11:05:19
自分に知恵を付けろ 他人に知恵を付けるな 最後には自分の首を絞める事になる
Delphi2009を使用しています。 procedure TForm1.Button1Click(Sender: TObject); begin {$IFDEF FOO} ShowMessage('FOO') {$ELSE} ShowMessage('BAR') {$ENDIF} end; 上のようなテストプログラムを書き、プロジェクト オプションのビルド設定で Baseのプリプロセッサシンボルの定義にシンボルFOOを追加しました。 自動的にデバッグはFOO;DEBUG、リリースはFOO;RELEASEとなっています。 この状態でデバッグおよびリリースの再構築をしたのですが、どうやっても "BAR"が表示されてしまいます。何か見落としていることがあったら教えてください。
>>964 オブジェクトインスペクタを確認してみてください。
ここの "ビルド設定" は
・Debug
・Release
のどちらになっているでしょうか?
# "ビルド設定" はダブルクリックで切り替えられます。
966 :
964 :2009/06/25(木) 18:43:33
>>966 >オブジェクトインスペクタ
すみません、プロジェクトマネージャですね。
> おかしなところあるでしょうか。
ここはリソースコンパイラのプリプロセッサ用条件定義になります。
"Delphiコンパイラ" の "条件定義" に FOO を追加してみて下さい。
968 :
964 :2009/06/25(木) 20:08:41
>>967 うまくいきました。本当にありがとうございます。
969 :
デフォルトの名無しさん :2009/06/25(木) 21:02:45
Delphiインストールしようとしたら、あらかじめ必要なものが多すぎてめんどくなった
>>969 すげーよくわかる、面倒だよな
俺はインストールして作るもの作ってリリースした後
起動すらしてないけどあとで必要になるかもと思って
アンインストールするかどうか迷ってる
そんなのなんかあったっけ?
統合環境が.netベースになっている比較的新しいバージョンだと いろいろ入れなければならなくて面倒ですよ。 2009ではだいぶ減ったらしいですけど。
netか 俺もC#やってみようかなと思ったが、netも云々でやめたな
開発者ならそのくらい入っていても良いかな?と思うが インストールに必須なものがない方が楽は楽
975 :
デフォルトの名無しさん :2009/06/26(金) 17:26:43
c++で二重ループの先頭にもどるのって goto使うか二度if文使うしか無いの? fortranだと loop: do i=1,n do j=1,n if(hoge) cycle loop enddo enndo とかで一行でかけちゃうよね cで同じようなコードかくと ループの外に出てしまうのでiがゼロに初期化されたり jが更新されなかったりで冗長なコードになってしまうのが残念
976 :
デフォルトの名無しさん :2009/06/26(金) 17:27:49
誤爆してしまった ごめんね
コードブロックをキューに突っ込んで言って スレッドプールから暇なスレッドに割り当てて実行するような Delphi向けのマルチコア向けのスレッドライブラリってなんかない?
効率とか考え出したらライブラリ探した方がいいけど、 単純にそれだけの機能なら自分で書いた方が早くないかね
スレチなんだけど、モニターの数ってどうやって確認するの?
>>979 Screen.MonitorCount
スレチなのか?
もうスレも終わりなのでスレ立てトライしてみますが会社なので結果は期待しないでね。
>>983 は
>>980 につっこみたかったのではなくてただの補足です。
「やな感じ〜!」に見える書き込みでゴメンナサイ
モニターが増えたり減ったりなんて結構前から珍しくないのに何年放置しているのかと思います。
本当だ。 バグ報告っていっているのかな?
起動中にって・・・
珍しいか? 俺はしょっちゅうやってるが。
>>986 常駐系とか思いつきませんでしたか?
貧相な頭ですね
TForm.Monitorを参照するとモニタの数更新されるよ 厳密に言えばフォームが新規に接続されたモニタ上にあった場合にだけど
なんだこのウンココードは… function TScreen.GetMonitorCount: Integer; begin if FMonitors.Count = 0 then Result := GetSystemMetrics(SM_CMONITORS) else Result := FMonitors.Count; end; 常にGetSystemMetricsよんどきゃいいんだな
まぁそんなもんだ