Delphi相談室(中級者以上)その12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG初心者は「くだすれDelphi(超初心者向け)」へどうぞ。
0002デフォルトの名無しさん
NGNGミ,,゚Д゚彡フサギコとモナーのDelphi質問相談談話室2
http://pc2.2ch.net/test/read.cgi/tech/1061142216/
ミ,,゚Д゚彡フサギコとモナーのDelphi質問相談談話室
http://pc2.2ch.net/test/read.cgi/tech/1052312038/
ミ,,゚Д゚彡フサギコのフサフサDelphi相談室�H
http://pc2.2ch.net/test/read.cgi/tech/1045813143/
Delphi相談室その8
http://pc2.2ch.net/tech/kako/1037/10371/1037146781.html
Delphi相談室その7
http://pc3.2ch.net/tech/kako/1032/10325/1032576325.html
Delphi相談室その6
http://pc3.2ch.net/tech/kako/1028/10284/1028436692.html
Delphi相談室その5
http://pc3.2ch.net/tech/kako/1022/10229/1022921598.html
Delphi相談室その4
http://pc.2ch.net/tech/kako/1018/10182/1018211735.html
Delphi相談室その3
http://pc.2ch.net/tech/kako/1010/10101/1010153466.html
Delphi相談室その2
http://pc.2ch.net/tech/kako/995/995950803.html
Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html
0003デフォルトの名無しさん
NGNGBorland Japan Delphi
http://www.borland.co.jp/delphi/
Borland Delphi 6 Personal ダウンロード
http://www.borland.co.jp/delphi/personal/
Delphiマガジン
http://dmj.psnet.ne.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0004デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1052312038/
ミ,,゚Д゚彡フサギコのフサフサDelphi相談室�H
http://pc2.2ch.net/test/read.cgi/tech/1045813143/
Delphi相談室その8
http://pc2.2ch.net/tech/kako/1037/10371/1037146781.html
Delphi相談室その7
http://pc3.2ch.net/tech/kako/1032/10325/1032576325.html
Delphi相談室その6
http://pc3.2ch.net/tech/kako/1028/10284/1028436692.html
0005デフォルトの名無しさん
NGNGBorland Japan Delphi
http://www.borland.co.jp/delphi/
Borland Delphi 6 Personal ダウンロード
http://www.borland.co.jp/delphi/personal/
0006デフォルトの名無しさん
NGNG同じの貼るなよ
0007デフォルトの名無しさん
NGNGttp://memo.st.ryukoku.ac.jp/archive/200309.month/6508.html
0008デフォルトの名無しさん
NGNG> サーバクラックして不正な文字列埋め込んだりすると危険かもね。
十分外部から引き起こすことが出来るバグです。
0009デフォルトの名無しさん
NGNG>通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
>隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
Windowsアプリケーションソフトウェアにおけるバッファオーバーフローの危険性
http://www.shadowpenguin.org/sc_documents/spsdocument21.pdf
> 5. スタック上に置かれたコードの実行
> カーネルにより割り付けられたスタック領域は、読み
> 書き可能であると同時に実行可能です。つまり、スタック
> 上にコードを置き、EIPを適切に移すことができれば、置
> かれたコードは問題なく動作します
釈明ま〜だ〜?
0010デフォルトの名無しさん
NGNGというより かちゅーしゃ 使ってるの?このメソッド。
大体そんな長い板名設定できないんじゃないかな?
起こせないじゃん。よく考えてからほざけよヴァカ!
0011デフォルトの名無しさん
NGNG379 名前:****緊急**** 投稿日:03/09/25 01:18 ID:AitgqY+Y
開発ツールDelphiで作成されたアプリケーションに深刻なセキュリティーホールが発見されました。
TComboBox,TListBox,TToolBar,TListView にバッファオーバーフロー
http://memo.st.ryukoku.ac.jp/archive/200309.month/6508.html
同じ会社から販売され上記コンポーネントを使用している開発ツールC++Builderで開発されたWinny2にも
同種のセキュリティーホールが存在する可能性はきわめて高いです。
特にTListView(データを一覧表示するコンポーネント)のセキュリティーホールを利用することで
ファイル一覧を表示するだけでネットワークからダウンロードされた
任意のコードが強制的に実行されてしまう危険性があります。
# たとえばバッファを溢れさせるほど非常に長いファイル名の後ろにコードを埋め込むなど。
具体的な方法はまだ見つかっていませんが、おそらくは時間の問題です。
作者の安全宣言がでるまでは使用を控えるなどの自衛手段をとることを強く推奨します。
380 名前:[名無し]さん(bin+cue).rar 投稿日:03/09/25 01:29 ID:pFLFxdHr
がくがくぶるぶる((((((
0012デフォルトの名無しさん
NGNG> というより かちゅーしゃ 使ってるの?このメソッド。
> 大体そんな長い板名設定できないんじゃないかな?
何も知らないくせに勝手に結論出すな。ヴォケ。ヴァカはお前だ。ヴォケ。
0013デフォルトの名無しさん
NGNGくだすれDelphi(超初心者向け) Part6
http://pc2.2ch.net/test/read.cgi/tech/1063202727/
■.NETの話題はこちら(現Delphiはまだ.NET未対応のため)
ミ,,゚Д゚彡フサギコのフサフサ.NET談話室
http://pc2.2ch.net/test/read.cgi/tech/1033489735/
■VCLを使わないプログラムはこちら
Delphiで小さな実行ファイルを作ろう
http://pc2.2ch.net/test/read.cgi/tech/1009080085/
■C++Builder
C++Builder相談室 Part7
http://pc2.2ch.net/test/read.cgi/tech/1061594556/
■Kylix
Kylix3
http://pc2.2ch.net/test/read.cgi/tech/1030031001/
■Delphi以外のPascal処理系
Pascal の初心者用の質問・相談所
http://pc2.2ch.net/test/read.cgi/tech/1009903617/
■VBの名前を出したければこっちでやれ
VB vs Delphi @夏厨2003
http://pc2.2ch.net/test/read.cgi/tech/1060779022/
■技術的でない話題はこちら
Delphi談話室
http://pc.2ch.net/test/read.cgi/prog/1064399807/
ちょっと遅れたけど関連スレ、こんなもんでいい?
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGEIP移せないし。
0016デフォルトの名無しさん
NGNGバッファオーバーフロー利用して移すのですよ。
0017デフォルトの名無しさん
NGNGそれはできないって。
できるなら、今回の件での方法を提示してみな。
0018デフォルトの名無しさん
NGNG>>9を読みましたか?
出来ないって言っている奴はスタック上のコードが実行できないと
勘違いしていた奴なのであてになりません。
0019デフォルトの名無しさん
NGNGasm
mov EAX, ESP
jmp EAX
end;
しかし、今回の件では行えない訳だが。
0020デフォルトの名無しさん
NGNGなんで?
溢れないから?それとも溢れても行えない?
0021デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1064423473/
0022デフォルトの名無しさん
NGNG他にもありそうな悪寒。
0023デフォルトの名無しさん
NGNG取得元はウィンドウだし、ウィンドウはnull終端で終わる文字列として保持しているから0が入る命令は書けない。
元ネタに戻るがバグを含むVCL側のコードを実行する機会がなければ、ハグが発生する機会さえないわけで。
報告された問題は内部で意図的に作り出さないと起きない問題なため通常は発生しない。
0024デフォルトの名無しさん
NGNGわりと新しい環境でビルドされ(そういえばかちゅはDel6以前だったよな)等々・・・の
条件をクリアしてれば通常は安全といえばそりゃ安全と言い張っても構わないけどさ(藁
0025デフォルトの名無しさん
NGNGListViewに至っては、加えてユーザーの操作(頭文字のキーを押しての検索)かつ、
標準の検索動作をわざわざ変えている、かつ、その時GetSearchString使用、かつ、
「ユーザーが入力したキーが」1024文字を超えて悪意のあるコードにならないといけない。
そもそもListView標準の検索動作に手を加えてるプログラムすらサンプル以外では見たことないしね
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGこのバグを実際に利用するには
バッファをオーバさせ(オーバさせた領域はスタック)リターンアドレスを書き換えて乗っ取るわけだけど
リターンアドレスはダイレクトアドレスでなければいけない。
他のパソコンで実行されるプログラムが同じアドレスに配置される可能性は低いので、これは乗っ取る側
が何度かアドレスを変更しトライする必要があり、その間に暴走・異常終了してしまう可能性大。
もし利用されても、他の手段ほど危険な状態にはならないだろう。
002827
NGNGそれが無い場合はバッファオーバランを利用してそこにコードを書かなければいけない。
そうなると、スタックアドレスはアプリの状況により刻々変化するので余計に難しいように思う
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG1、API等のOSの機能
2、ネットワークに接続し、不特定の相手からデータを受信する
の場合に悪用されえる。
通常のアプリでもこれが起きれば誤動作、異常終了の原因となりえるので根絶すべきなのは当然だと思うが
0031デフォルトの名無しさん
NGNG間違い。高い。仮想メモリを採用しているため、
物理的には異なっても論理的に
同じアドレスに配置される可能性が高い。
そんなことも知らないの?
0032デフォルトの名無しさん
NGNGどう変化しようが、変わるのはスタックの一番底なので
ある時点でのスタックアドレス=スタックの上(すぐに取り出す部分)は変わりません。
0033デフォルトの名無しさん
NGNG関係ない
> 2、ネットワークに接続し、不特定の相手からデータを受信する
ネットワークに接続する必要はない。
0034デフォルトの名無しさん
NGNGスレ違いです。
Delphiではネットワークで通信するようなアプリケーションは開発しないし
そもそもセキュリティーホールを狙われるほど広く普及したDelphi製のアプリケーションなどありません。
つまりこの問題は修正をしてもしなくても発生しないのです。断固セキュアなのです。
そこまでしてDelphiを貶めるのには何かわけがあるんですか?
もしかして滅びつつあるVBユーザーですか?
それとも予定ほどには普及していないまたGUIの貧弱なC#ユーザーですか?
我々の問題は我々自身で解決するので(そもそも問題自体が無効なのですが)これ以上スレを荒らさないでください。
これ以上続けるようなら管理者に連絡してアクセス禁止等の処置を取りますよ。
0035デフォルトの名無しさん
NGNGボーランド社員必死だな(w
0036デフォルトの名無しさん
NGNGそこで話したほうがいいんじゃね?
明らかに技術不足な奴がいるよ。
27とか30とか
0037デフォルトの名無しさん
NGNGへえ
procedure hoge;begin end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := Format('%p',[@hoge]);
end;
試してみたよ。 ホントだ。
>>32
でも、その場合、相対では指定出来ないでしょ。
0038デフォルトの名無しさん
NGNGまあ読め
http://linux.ascii24.com/linux/linuxcom/2000/06/13/465216-000.html
0039デフォルトの名無しさん
NGNGまぁ信者がリスクを全部自分で負うから問題ないって言ってんだから問題ないんだろ。
0040デフォルトの名無しさん
NGNGやはりスタックの位置がわからないとダメみたいだね。
でも
procedure TForm1.Button1Click(Sender: TObject);
var test:integer;
begin
Caption := Format('%p',[@test]);
end;
として試してみると、やはり必ず同じアドレスになるようだ。
よって、スタックの位置が必ずわかっているのと同じだね。
0041デフォルトの名無しさん
NGNG.dpr の先頭で
var reg:Integer;
begin
reg:= GetTickCount and $FF0;
asm sub ESP,reg end ;
のようにするアイデアが浮かんだよ。 これでスタックを強制的にランダムに動かせるから
アタックが成功する率を 1/256 に出来る。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGprocedure muddleSP;
asm
call GetTickCount
mov edx,[esp]
and eax,$00000ff0
sub esp,eax
jmp edx
end;
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGGetTickCount の部分も手続きに入れた所が
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGスタテックリンクのDLLのサイズで配置アドレスって変わらないかな?
もし変わるなら、実行終了時に別のプログラムを起動して、変更するとか可能なのだけど
0048デフォルトの名無しさん
NGNGちょっとは既存の対策方法をあさってみたら?
0049デフォルトの名無しさん
NGNG検索したら既存の対策方法も同じ感じだね。
・ 毎回ロードアドレスを変更する
・ スタックのベースアドレスも毎回変更する
既に巨大システムになったアプリケーション全てのバッファオーバラン対策を行うコストよりこっちが少ないからだってさ。
0050デフォルトの名無しさん
NGNG普通に使えば遭遇しないって何回言ったらわかるの?
起きないものに対して対策して楽しいですか?
0051デフォルトの名無しさん
NGNG16バイトごとに同じコードを配置したら抜けられてしまうね。
もっと大きく動かさないとあんまり効果ないか。
0052デフォルトの名無しさん
NGNGまあね。 今回のVCLの不具合はまあ大した事はないけど、
つい自分でも同じような事やっちゃう場合もあるでしょ。
そんな時の安全策は無いかと思ってさ
0053デフォルトの名無しさん
NGNG>ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
>通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
>隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
Windowsアプリケーションソフトウェアにおけるバッファオーバーフローの危険性
http://www.shadowpenguin.org/sc_documents/spsdocument21.pdf
> 5. スタック上に置かれたコードの実行
> カーネルにより割り付けられたスタック領域は、読み
> 書き可能であると同時に実行可能です。つまり、スタック
> 上にコードを置き、EIPを適切に移すことができれば、置
> かれたコードは問題なく動作します
釈明ま〜だ〜?
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGスタックをもっと大きく動かすと勿体無いお化けが出そうだから
別スレッドをランダムな個数作ってからそのスレッドをメインスレッドにするというのはどうだろか?
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGリターンアドレスはスタックに入ってるだろ。4バイトだがどうしても上位に0が入ってしまう。
Windowコントロールの仕様上文字列はnullで終わるので、メッセージ投げて取得しに行った時には既に0以降読み込めない。
また他のスタックデータも設定する場合もこの0問題があるので、正しくハックすることは不可能。
昨日も同じこと書いたぞ。
あとなToolbarとListViewは内部でDQN操作しない限り発生しないからバグはユーザー(作る人)の責任だぞ。
ライブラリのメンテナンスに期待しても無駄。自分で対処するのがプロってもんだろ。なんのためのソースだい?
0060デフォルトの名無しさん
NGNGそんなことで誤魔化そうってのか(綰听邵
Del厨必死だな(綰听邵
0061デフォルトの名無しさん
NGNG試してみた。 Win2K では スタック領域はコード領域より前にくるようだ。
コードは$400000番地代 よって、スタック領域は必ず上位は 00 になるのは間違いない。
ただし、上位が00という事は 丁度リターンアドレスの最上位でデータ列を終わらせれば不可能ではない。
コード部をその前の4096バイトの部分におけば良いからだ。
0062デフォルトの名無しさん
NGNG数多のクラックコードは当然'\0'を避けたコードを書いているんだけどな。
0使う命令には体外代替命令があるしデータの0なんて演算でいくらでも作り出せる。
0063デフォルトの名無しさん
NGNGどのあたりが必死なのか具体的に説明してくれませんか?
0064デフォルトの名無しさん
NGNGだから、命令の事じゃなくて、コードの流れを自分のコードに持ってくる為の最初の1ステップである
リターンアドレスを変更する為のデータが置けないと言ってるのだろう。
もちろん、たった一つだけなら0を置くことは出来る
0065デフォルトの名無しさん
NGNGソースコード嫁
>>62
そんなことを言うのならば今回のケースで実際に動くコードを書いてみろ
0066デフォルトの名無しさん
NGNG言いたい事は、たぶん
4096バイトもスタックに取る場合は スタックフレームも作られるだろうから
帰り番地の前にスタックフレームもちゃんと書いてやらなければならないという事かな?
そうすると2つの#00を置くことは出来ないから帰り番地を書き換えられないと
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGvar result Result: System.AnsiString; Text: array[$0..$FFF] of System.Char; Len: System.Integer;
begin
| PUSH EBX
| PUSH ESI
| PUSH EDI
| ADD ESP,$FFFFF004
| PUSH EAX
| MOV EDI,ECX | MOV ESI,EDX
| MOV EBX,EAX | MOV EAX,ESP
| PUSH EAX | PUSH ESI
| PUSH $00000148
| MOV EAX,DWORD PTR [EBX+12]
| CALL TWinControl.GetHandle{0xF0}
| PUSH EAX
| CALL SendMessage{0x190}
| CMP EAX,-1
| JNE +2; (0x2E)
| XOR EAX,EAX
| MOV EDX,ESP
| MOV ECX,EDI
| XCHG EAX,ECX
| CALL @LStrFromPCharLen{0x2B6}
| ADD ESP,$00001000
| POP EDI
| POP ESI
| POP EBX
| RET NEAR
end;
0069デフォルトの名無しさん
NGNG初心者はカエレ
ttp://pc2.2ch.net/test/read.cgi/tech/1063202727/
0070デフォルトの名無しさん
NGNGつまり、スタックフレーム(EBP)は作られていない。
よって、もしも何らかの方法で任意の文字列を置けるならば、
攻撃者がリターンアドレスをスタックフレーム内に書き換える事は可能。
0071デフォルトの名無しさん
NGNG4096+3*4 バイトの後に #$56#$34#$12#00 というデータを作り
この文字列の先頭からウイルスプログラムを書けばいいという事だね。
こういう攻撃法に対しては >>41 >>43 もある程度は有効。
ただし、>>51 の方法で回避されるから、もう少し大きめ と4byte単位で
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGそれが出来ればダミーコンポをポトペタしてもらえば解決するというふうにできるのだけど。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGいいじゃないか
暴走原因としてのバッファオーバフローはデバッグして取るべきものだけど
それでも残る事はあるさ、その場合でも攻撃者に利用し辛くしておくことには意味はある。
今回の件は、そもそもセキュリティネタに入れるのはどうかと思うようなことだけどね。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGと思ったら、end の所で RETは実行されないのか・初めて知ったよ。
0081デフォルトの名無しさん
NGNGそんなVB厨はスルーがイチバン
0082デフォルトの名無しさん
NGNGDelphiにはとんでもないセキュリティホールが隠されていたそうです。
Del厨はこんなものをマンセーしていたのかよw
やはりネイティブコードは駆逐されるべきだな。
0083デフォルトの名無しさん
NGNG.dpr の begin の前に @InitExe という隠れた手続き中で initializationは呼ばれ
initialization は ret で終わり、その後 pop /retが何度かある
という事で、 initialization 中ではスタックを変更するのは無理。
initialization 中で InitProc を設定して
Application.Initialize; でやる方法もあるけど
そうすると、 InitProc は他のユニットからもリンクチェイン式に使われるので難しいかもね
やるとすれば initialization 中に@InitExe の ret の帰り番地を書き換えて
パッチをあてる方法だけど、こういうコードがexeに入っていると、逆に攻撃者にこれを
利用されてしまうような気がする・・・大丈夫かな?
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNGいや >>82 の問題じゃなくて、オーバラン一般の対策としての話ね。
0086デフォルトの名無しさん
NGNGあたりまえなんだけど、これが一番。
Linux 系で、ライブラリ/メモリマネージャに手を入れてオーバーランを検出できるように
したものがあるけどね。
0087デフォルトの名無しさん
NGNGまあそうなんだけど、今回の騒ぎのように、使ったライブラリに入ってしまった場合とか
テストコードのつもりで書いたのがデグレで混入してしまったり、
5万行くらい書いてると、完璧だって言い切るのは難しくなるでしょ?
まあ、GUIアプリだと CUIのようにGCIから呼ばれて使われるという事もないから、
ネットワークとの入出力の部分だけに限ってチェックすればいいとは思うけど
0088デフォルトの名無しさん
NGNGでも片手落ちだと思うよ。
1、確かにスタック上の任意のコードを走らせる確率は減るけどゼロではない。
まあ、失敗したら例外で落ちるだろうから大多数は攻撃に気づくだろうけど、ゼロでない事は重要。
2、スタック上の任意コードはガード出来たとしても、プログラム領域はガード出来ない。
任意のコードは書けないが、普段とおらない筈の部分をいくらでも呼び出せる。
たとえば、個人情報を吸い出されたり、パスワードを解除するような部分を呼び出してパスワードを解除したり、
コード上にある全ての機能を呼び出せてしまう。
と、書くと今度はコード領域もシャッフルすると言い出すんだろうな。
まあそれも有効な方法だから否定はしないけど。
0089デフォルトの名無しさん
NGNGってことだとおもうんだけど。
スタックオーバーフローに関してならスタックにバッファを取らない。と規定すればよし。
String / Dynamic Array を使えばほとんどのコードはそのまま使える。
88 さんの #1 も #2 も非現実的な話。
0090デフォルトの名無しさん
NGNG>5万行くらい書いてると、完璧だって言い切るのは難しくなるでしょ?
それを言い始めたら「プログラムが正しいことの証明」ってことになって不可能。
できるだけおきないようにする。とか、おきたら検出できるようにする。
ってするしか。
C/C++ では、歴史的に文字列バッファをスタック上の Char 配列でとるコードが使われており、
それを長さチェックなしで操作しているコードが多くあったので問題が出た。
Delphi だと文字列型はヒープだし、範囲チェックを ON にすれば配列オーバーランも実行時検出できる。
実際のところ、C# / Java でも「不正メモリアクセスを検出」することができるだけで、それはうまく使えば
DOS (サービス不能攻撃) を起こすことができるわけで、そこまで行ったらやはりアプリ側での対応の問題となるでしょ。
0091デフォルトの名無しさん
NGNG範囲チェックをONしても 配列を外部DLLに渡すような場合まではチェックしてくれないし・・・・
ただ、ヒープだとアプリの状態によって、オーバランしたときにどこを壊すかというのが変わってくるから攻撃は難しいか。
0092デフォルトの名無しさん
NGNGいや、だから、そういう注意を優先項目の一つとしておざなりにすべきではないと思うし、
現在は自分だって注意してコーデングしてるつもりだよ。
しかし、長年使ってると、自作したライブラリはとても大きいし、貰ってきたライブラリも多数あるって事でさ、
おきてしまったときに、攻撃し難くしておこうというのが、スタックスクランブルの手法で、
この為に支払うコストは僅かなスタック上のゴミだけで、実行には何の影響もない。
僅かなコストを支払って、大きなメリットがあるのだから、入れて問題は無いと思うのだが?
0093デフォルトの名無しさん
NGNGただ、 initialization であんまりお手軽に対策出来るようにすると
初心者が何も考えずに、これでOKってなりゃしないかなと。
0094デフォルトの名無しさん
NGNG3、データ領域にもコードを置いて実行させる事が出来る。
文字列の場合、元と同じサイズまでなら同じアドレスに配置されるので、文字列にコードを埋め込んでおいて
そのアドレスに分岐することも出来る。
その検証コード
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
type TGetSP=function:Integer;
begin
s:='XPテ';
caption:=IntToHex(TGetSP(PChar(s)),4);
end;
これで 文字列中の XPテ を実行してかえってくる
X: POP EAX
P: PUSH EAX
テ: RET
0095デフォルトの名無しさん
NGNG「大きなメリット」かどうかには疑問があるが。
その方向でちょっと研究/まとめてみたら?
bdn に投稿すればお金ももらえるし。
0096デフォルトの名無しさん
NGNGのように、データ領域を使って任意コードが実行出来るとなると
ここに数バイトのコードさえ置けるなら、これを使ってSP相対で分岐されてしまい
スタックをシャッフルするという対策は意味のないものになってしまう。
結論として、スタックシャッフルを入れても悪い訳ではないが、それを入れて安全とは言えない。
0097デフォルトの名無しさん
NGNGデータ領域のデータに実行可能属性が付いているのは OS の問題なんだし、それをいまさら発見のように書かれても。
問題は Exploit でつつくことが可能かどうか?という点でしょ?
0098デフォルトの名無しさん
NGNGもし、ネットワークで任意データを取得するプログラムでバッファオーバランが起きた時に
事前に設定した文字列・あるいは数値が固定アドレスに配置されているなら、それと組み合わせてつつく事が可能。
文字列はネットワークデータからのデータで再配置されてしまう可能性が高いが、
文字列上の数値を利用するような場合、数値は固定番地におかれる可能性が高い。
グローバル変数でなく、クラス等使ってヒープ上にそれがあっても、そのヒープはプロセスの先頭で確保されているなら
同じアドレスとなってしまうためだ。 特に負数が設定出来るような場合は・・・
0099デフォルトの名無しさん
NGNG「バッファオーバランが起きた時」には何でもできる。それをいまさら大騒ぎしなくてもいいでしょ?ってこと。
穴をつつくコードはアセンブラの知識があれば良い話し出し。
だから「オーバーランが起きないように」しましょう。ってのと、
もしおきたら、それを検出/遮断しましょう。って話をしているのでは?
0100デフォルトの名無しさん
NGNGいや、オーバランしてもスタックをスクランブルすれば効果があるというのに対して、
スタックをスクランブルしても、別の攻撃方法があるよという事。
条件:
・>>68のコードがあるとする
・データが $00789ABC に配置されてる整数型変数があるとする
攻撃者
1、整数型変数に $802464FF を設定する これは JUMP [ESP-128]相当
2、攻撃コードは 4096+3*4-128バイトからに配置
乗っ取りコードは4096+3*4 バイトの後に #$BC#$9A#$78#00
これで、JUMP [ESP-128]が実行された後、スタックの位置に関係なく攻撃コードが実行される。
0101デフォルトの名無しさん
NGNGライブラリへの介入でオーバーフロー問題が解決するなら Linux/MS がとっくに対応しているでしょ?
C/C++ の方が傷口が大きいのだから。
FUD したいなら別のところで。
0102デフォルトの名無しさん
NGNGLINUXの方は OS 側でもあるていど対応しようとしてるみたいだね。
1、スタック・データ・コード再配置アドレスのシャッフル
2、スタック領域の実行不可属性
3、データ領域(ヒープ)の実行不可属性
Windowsの方は何のアナウンスもないようだ。
同じようなせ制限とアドレスシャッフルは有効だと思うのだけどね
ただMSはMAC用のIEで、これと似た手法で対策を入れたらしい。
0103デフォルトの名無しさん
NGNGスタック上、retアドレスの直前にガードデータを入れておくとか
ある程度の対応を入れてるようだ。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGhttp://www.zdnet.co.jp/news/0304/15/ne00_openbsd.html
1、メモリの中の「スタック」(アプリケーションとそのデータを記録する構造)の常駐場所を無作為化する
2、アドレスが修正されたら検知できるように、メモリ構造の中に「カナリア」と呼ばれる小さなタグを配置
3、メインメモリを書き込み可能領域と実行可能領域に分割
という事だ
0106デフォルトの名無しさん
NGNGうん。だからもう少しその関係を勉強しなさい。
Linux にもその実装はあるの。で既存のコードとの非互換性とかがおきているの。
ソースコードレベルで再コンパイルできる UNIX でそれだから MS Windows ではちょっと
難しい。
で、どこらへんが Delphi ?
0107デフォルトの名無しさん
NGNGもともと WindowsのEXE/DLLは再配置可能モジュールで実際 NT/9xでアドレスも違ってたので
アプリの配置アドレスのシャッフルでは影響は出難いと思うよ。
で、その話のどこがDelphi?
0108デフォルトの名無しさん
NGNGリターンアドレスを書き換えるタイプの攻撃に対しては
スタック領域+データ領域+ヒープ領域+コード領域の4つ同時にシャッフルしなければ意味がない。
Windowsがソレをやってくれればいいが、そうでない以上、
Delphi側で簡単に対応可能なのはスタック・ヒープのみ。
他の2つは難しい。・・・・何か方法ある?
0109デフォルトの名無しさん
NGNGJava/.NET のようにがちがちにしても、まだ穴があくんだから。
0110デフォルトの名無しさん
NGNGprocedure TForm1.Button1Click(Sender: TObject);
var s:string;
type TGetSP=function:Integer;
var OldAcc:Integer;
begin
s:='XPテ';
VirtualProtect(PChar(s),10,PAGE_READWRITE , @OldAcc)
GetLastError;
caption:=IntToHex(TGetSP(PChar(s)),8);
end;
とやったけど 例外が出ない。
Win2KではPAGE_READWRITE 属性だと実行可能なのか・・・
0111デフォルトの名無しさん
NGNGスタックとデータ領域にそれをかければ、問題の多くは解決してしまうようにも思うな。
なんでそういう設計になってないんだろ?
0112デフォルトの名無しさん
NGNGうぅ。先人の苦労を一から踏む気か。i386 の資料を読んで頂戴。
0113デフォルトの名無しさん
NGNG知ってることばかりでつまらないです。
0114デフォルトの名無しさん
NGNG自分がネタふりしたらいいじゃん。
0115デフォルトの名無しさん
NGNG下から使えば、バッファ溢れを利用した攻撃なんて心配しなくていいような。
0116デフォルトの名無しさん
NGNG汎用CPUだとデータ領域は上からスタックを下から取れば領域を動的に目いっぱい使えるからでしょう。
DSPなんかではスタックをどっち方向に使うか切り替えられるものもありますよね。
0117デフォルトの名無しさん
NGNGちゃんと>>115のネタに付き合ってやれよ。
「スタックは下からだよバーカ」でもいんだよ。そこからネタが広がるんじゃないか。
0118115
NGNG仮想アドレスが32ビット00000000..ffffffffとあったら、00000000が下位…と思ってたのですが
貧弱な記憶だと、00000000から順に、OS、コード、データ、空間、スタック、の順で、
上下こんがらがってるので矢印で書くと、空間に向けて、データが→、スタックが←方向で伸びる…ですよね…
115は、仮にスタックを→方向に使えるなら、バッファオーバーフローでリターンアドレスが上書きされる
心配が無くなるのでは、という意図のつもりでした。
0119デフォルトの名無しさん
NGNG昔の人は、メモリマップを描く時に 0番地を上に書いたので 上、下というと逆の意味になる事が多いです。
上位・下位と言えばその通りになります。
上の報告だと Win2000では OS →スタック → コード →データ みたい。これは 調べてみたら?
だから、空間を有効利用出来るという事では意味が無いですね。
バッファオーバーフローの件はその通りですね。 そこまで考えなかったのでしょう。
そこまで考えていれば i386 で読/書可能で実行不可な状態を簡単に作れるようにしてくれたでしょうし
0120デフォルトの名無しさん
NGNGWindows NT/2000/XP: The 2 GB partition in low memory (0x00000000 through 0x7FFFFFFF) is
available to the process, and the 2 GB partition in high memory (0x80000000 through 0xFFFFFFFF) is
reserved for the system.
としか書いてなかったので、
program MemLayout; {$APPTYPE CONSOLE} uses SysUtils;
function Stack: Cardinal;
asm mov eax, esp end;
var P: Pointer;
begin
WriteLn('コード: ', IntToHex(Cardinal(@Stack), 8));
WriteLn('データ: ', IntToHex(Cardinal(@AllocMemCount), 8));
P := HeapAlloc(GetProcessHeap, 0, 1);WriteLn('ヒープ: ', IntToHex(Cardinal(P), 8));
WriteLn('スタック: ', IntToHex(Stack, 8));
GetMem(P, 1);WriteLn('Delphiのはvirtualalloc: ', IntToHex(Cardinal(P), 8));ReadLn
end.
コード: 00408148
データ: 0040A5AC
ヒープ: 00132700
スタック: 0012FF88
Delphiのはvirtualalloc: 00C70984
結果、スタック→ヒープ→コード→データ→OS or VirtualAlloc?
0121デフォルトの名無しさん
NGNGこのスレの厨房みてるとやっぱ一度はC&UNIX&socketプログラミング
やっといたほうがいいような気がしてきたよ。
0122Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ ノートPC用に環境ごとに
ミ*゚Д゚彡 ネットワーク設定を
ミ つ旦)~~ 一発切り替え
〜と,,,~),,~) できるソフトを
作りたくなりました。
IPアドレス・サブネット・デフォゲ・DNS
LMHOSTS・etc....
レジストリの変更箇所は追えましたが
([Delphi-ML:15656]とか参考)
手動で変更しても、設定に反映されませんです。
ネットワークの接続先アイコンのCaptionやら
プロパティの中身やらを、自由に取得変更する方法を
どなたかご存知でしたら教えてください。
http://redmaru.hp.infoseek.co.jp/index.html
NetSet
と同じような機能のソフトを作りテー表ます
0123デフォルトの名無しさん
NGNG大まかな仕様とか紙に書いたりするんですか?
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGスレ違い。
0126デフォルトの名無しさん
NGNG作者に聞けよ
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGいきなりで申し訳ないですが
キャンバスに出力する文字列も幅と高さを知るのに
CanvasのTextExtent メソッドがありますが、
Canvasを使わず幅高さを知る方法を知ってたら教えて下さい。
0129デフォルトの名無しさん
NGNGいきなりで申し訳ないですが
キャンバスに出力する文字列も幅と高さを知るのに
CanvasのTextExtent メソッドがありますが、
Canvasを使わず幅高さを知る方法を知ってたら教えて下さい。
0130デフォルトの名無しさん
NGNGいきなりで申し訳ないですが
キャンバスに出力する文字列も幅と高さを知るのに
CanvasのTextExtent メソッドがありますが、
Canvasを使わず幅高さを知る方法を知ってたら教えて下さい。
01311ミ*゚Д゚彡ファン
NGNGSHChangeNotifyで行けないかな?
Shell系の関数だから関係ないか。
0132デフォルトの名無しさん
NGNG内部的にキャンバスでやればいいじゃん。
つうか、何度も書くなよ。
0133デフォルトの名無しさん
NGNG内部でキャンバス作ってやったんだけどうまくいかなかったもんで・・・
やり方が悪かったかな、
0134デフォルトの名無しさん
NGNGもしよければ簡単なサンプルを教えてもらえませんか?
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGサンプルはくだすれに書くよ。(ここは中級者以上)
0137デフォルトの名無しさん
NGNGどもありがとです、
くだすれみてみます。
場違いでした、すみません。
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG十分中級者以上の話題では?
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG自称中級者はカエレ
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNGデバイスコンテキスト
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?&q=GetTextExtentPoint32&lr=lang_ja
結局 ハンドルが必要になります。
0149デフォルトの名無しさん
NGNGということは、出力さきのデバイスに依存してるっと事なんですね。
一応内部的にキャンバスを作り解決しました。
みなさんどうもありがとうでした。
0150Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡 どもです。
ミ つ旦)~~
〜と,,,~),,~)
検索してみてもなかなかうまくいきません。
VBですが、この辺を参考にしたらいいのかな?
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/chtml/chtml.cgi?key=spec_netnt
0151デフォルトの名無しさん
NGNGあほな質問すなや。
>>141
DCが保持しているパラメータを使ってシミュレートするんじゃない?
0152デフォルトの名無しさん
NGNG使いますが、そのことを聞きたいのでは?
たぶんちがうだろうけどね。
0153デフォルトの名無しさん
NGNGフォント情報とセットにして解析するのはめんどくさい上、精密でない可能性もあるしね。
01541ミ*゚Д゚彡ファン
NGNGuses, ShlObj;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, nil, nil);
でレ痔ストリの内容がシステムに反映されます。
ただ、おいらはアプリの *.icoを更新しただけだから、フサ氏のやりたいことが
このコードでできるかどうかは不明。
クズレスならスマソ。
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGTGraphicControl継承のコンポーネントで 背景や枠を持たせない設定が出来るようにしようと
const clNone = TColor(-1) ; なら Polygon -> Polyline あるいは枠を描画しないようにしています。
ただ、問題は オブジェクトインスペクタでは $FFFFFFFF と表示されてしまう事です。
これを clNoneと表示させる為に、 プロパティエディタを作りました。
ところが、 TColor型の全てのプロパティが $FFFFFFFF なら clNoneとなってしまいました。r
自作コンポーネントは複数あるので、
そこで TColor型ではなくTColorNone型というのを作ってみたのですが やはり同じ結果になりました。
どうやれば上手くいくでしょう?
0157156のコードです
NGNGuses DsgnIntf, Graphics;
const clNone = TColor(-1);
type TColorNone =TColor;
TColorNoneProperty = class( TColorProperty)
public
function GetValue: string; override;
procedure SetValue(const Value: string); override;
end;
procedure Register;
implementation
uses Sysutils;
const clNoneStr='clNone';
function TColorNoneProperty.GetValue: string;
begin
if GetOrdValue = clNone then Result :=clNoneStr
else Result := ColorToString(TColor(GetOrdValue));
end;
procedure TColorNoneProperty.SetValue(const Value: string);
begin
if AnsiSameText(Value,clNoneStr) then SetValue('$'+IntToHex(clNone,8))
else inherited SetValue(Value);
end;
procedure Register;
begin RegisterPropertyEditor(TypeInfo(TColorNone), nil, '', TColorNoneProperty);
end;
0158デフォルトの名無しさん
NGNGそれぞれプロパティエディタを変更したいクラスと、そのプロパティ名を指定します。
0159156
NGNG恥ずかしい・・・既に clNone という色は定義されてたのを忘れていました。
名前を変更したらいけそうです。ドロップダウン時に参照されるようなので
>>157のコードではエラーが出るようになりましたが。
0160156
NGNG使われてる所みても、そんな感じみたいだし。
コンポーネント作成関係ない話題になってしまいました。ごめんなさい。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG整数型の場合、単にCreateで初期化し、初期値を default で指定すればよかったのですが
double型のプロパティを 100 で初期化した場合に困ってしまいました。
double型では default が使えないのです。
その為、プロパティを0 にするとプロパティが保存されず、結果 次にロードされると100に戻ってしまう現象が起きてしまいました。
0163162
NGNGCreateで
if csDesigning in ComponentState then begin
と場合別けすりゃいいだけですね・・・・・どうも思考が硬直して型に嵌ってしまったようです。
0164Delフサギコ ◆A6VzDeLphI
NGNGミ*゚Д゚彡 ごぶたさです。
ミ つ旦)~~
〜と,,,~),,~)
レスサンコ>>154、フサファンさん。
進中のページを見ますと
http://www.asahi-net.or.jp/~GV4J-SGUR/narik/stp001.htm#SHChangeNotify
SHChangeNotifyについての、オプションがいろいろ変えられることがわかるのですが
いったい、どれがTCP/IP設定変更時のレジストリ更新に
有効なのか、とんと、検討もつきません。
TCP/IPの設定はレジストリ更新差分比較ツールでみたところ
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{NIC名}\Parameters\Tcpip]
このあたりにあると思ワレなのですが、
レジストリを変更してSHChangeNotifyを実行しても
うまく動かないっすね。
なんか、特殊なやり方があるように思うのですが…
どこかに情報ないかしら。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG普通はTCustomFormを継承して作成するのだろうけど、いらない機能が多すぎて。。。
0167デフォルトの名無しさん
NGNGWinAPI使ってウィンドウ作れ。
0168デフォルトの名無しさん
NGNG最低限、TWinControl からはじめたら?
アプリ側で設定ダイアログを一つでも持てば TForm のコードが引きずり込まれるわけで
機能が多いからといって無駄になるわけではない。
0169デフォルトの名無しさん
NGNG>>166
THintWindow とかのソースを参照したら?
0170166
NGNG0171バグですか?
NGNGDelphi5・BDE5.11でTBatchMoveを使用してParadoxテーブルのコピーを
行った所、「ディスク容量が足りません」って出ます。
ディスクの空き領域が4.00G(4,295,634,944)付近の場合のみ発生します・・・
ちなみにテーブルは200M程度なので、足りないわけ無いはずなのですが、
ディスクの空き領域が3.99Gになると発生しません。
何か分かる方居ますか?
0172デフォルトの名無しさん
NGNGだったら適当にファイルを作って容量を減らせばいい。
2の32乗ってわかる?
0173デフォルトの名無しさん
NGNGバグだと思いますよ。 レポートを上げておくべきでしょう。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGどこか間違えてるが95%、バグの可能性が5%と見た
0176デフォルトの名無しさん
NGNG実装するにはどのようにすればいいんですか。
0177デフォルトの名無しさん
NGNG0178バグですか?
NGNG正常に動作しない模様!
TBatchMove自体がコピー先のディスク空き容量を見ている感じ・・・
そして、TBatchMoveがディスク空き容量の確認にGetDiskFreeSpaceExを使わずに
GetDiskFreeSpaceを使ってるから、2147483648Byteで割り切れるサイズでは
「ディスク容量が足りません」って出してると推測しました!!!
Delphi7では直っているんでしょうね〜・・・
0179デフォルトの名無しさん
NGNGよくやった!!!
0180デフォルトの名無しさん
NGNGdelphi側では DiskFreeを使ってないみたい。だからたぶんBDEの問題じゃないかな。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGさすがにindyにそんなのないよな。
いいコンポーネントでもクラスでもあったら教えて下さい
0183デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG漏れもわからんのだが80番ポートを監視したらできそうな気がするが
違うん?
0186デフォルトの名無しさん
NGNGWinSockレベルで監視と言うと、listenするって事ですよね?
つまり、サーバーになっちゃう。
0187デフォルトの名無しさん
NGNGおまいら、ここは中級者以上ですが?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGまあ作ろうと思えばWinsockでも作れないことはないが、実行するにはOSの設定が必要。
0190デフォルトの名無しさん
NGNGそれ見ると、デバイスドライバ作ってるね。
0191デフォルトの名無しさん
NGNGデバイスドライバ用のコールバック関数は
デバイスドライバで作るしかないって事か。
そのドライバ(DLL)をDelphiからも使えたら、
Delphiでもパケットモニタを作れる…。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGボタン等を動的作成して、ParentをHintWindowに設定しても表示されませんが。。。
0194デフォルトの名無しさん
NGNGくだすれDelphi Part7 (超初心者向け)
http://pc2.2ch.net/test/read.cgi/tech/1065195699/
0195デフォルトの名無しさん
NGNG普通に表示されましたよ?
var w:THintWindow;
begin
w:=THintWindow.Create(Self);
w.Parent:=Self;
w.Left:=10;
w.Top:=30;
w.Width:=100;
w.Height:=40;
with TButton.Create(w) do begin
Parent:=w;
Caption:='test';
end;
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGDelphi相談室(上級者用)その12 に逝け
http://pc2.2ch.net/test/read.cgi/tech/1064766880/l50
0199デフォルトの名無しさん
NGNGだからさ、親にTCustomForm継承が無いと上手く動かないようになってるんだよ。
どうしてもやりたいなら、そこの部分を自前で処理しないといけない。
とりあえず表示させたいなら、
w:=THintWindow.Create(Self);
w.Left:=10;
w.Top:=50;
w.Width:=100;
w.Height:=40;
with TButton.Create(w) do begin
Parent:=w;
Caption:='test';
SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_SHOWWINDOW);
end;
SetWindowPos(w.Handle, 0, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_SHOWWINDOW);
とか無理やりに表示フラグをオンしてやれば表示はするけど、Visibleフラグは更新されないぞ。
0200199
NGNGParentWindow:=Application.Handle;
で我慢するというのはダメかい?
0201193
NGNG子ウィンドウをすべて検索して、一個一個表示させないといけないようですね。
>ParentWindow:=Application.Handle;
MainFormを最小化したら、HintWindowも最小化されてしまいました。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGRawソケット使うんじゃないの?フックつかうの?
0206デフォルトの名無しさん
NGNGWinSockレベルのパケットキャプチャが出来るんだって。
NDISはWinSockを経由しないので、Rawソケットより強力。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGお前が使い方を知らないだけだろ
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG「TD32デバッグ情報を含める」をチェックすると
exeファイルがでかくなるんだけど
このファイルのフォーマットの情報ってどこにあるか知ってる方居ません?
0218デフォルトの名無しさん
NGNGはるか太古の昔からの機能ゆえ、俺も最初のリファレンスを知らん。
JCLにTD32の情報を読み取るクラスがあるのでそれらから調べることができるかもしれない。
Jediに聞けば答えてくれるかもね。
0219217
NGNGかなり参考になります。
折を見てJEDIに聞いてみようかな。英語苦手なんだけどなぁ。
そのまえにMemCheckの堀氏に聞いてみるかな。
0220デフォルトの名無しさん
NGNGハンドブック風の書籍としてBorland 自身が公開していたとおもったが
タイトルがおもいだせないなぁ。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG「とびっきりSUNDAY,・・・fall in love ♥」
0223デフォルトの名無しさん
NGNG全然やり方がわからん。誰か教えてくれ。
下のようなコードを書いてみた。
type
TDict = record
key: String;
value: Pointer;
end;
登録しようとするとエラー
begin
dict[0].key := 'Enter';
dict[0].value := PEnter; //ここでエラー
dict[1].key := 'Exit';
dict[1].value := PExit; //ここでもエラー
end;
利用しようとしてもエラー
procedure TUserManager.Execute(command, mess: String);
var
i: Integer;
begin
for i := Low(dict) to High(dict) do
if dict[i].key = command then dict[i].value(mess); //だめ
end;
0224デフォルトの名無しさん
NGNGPEnter も PExit もTUserManagerで定義しているメソッドで、
どちらもString一つを引数に取る手続き。
なんだけど、上のコードでは「実パラメータが足りません」とか言われる。
で、適当なパラメータをつけてやると
例) dict[0].value := PEnter(s);
「関数とか形無しとかとポインタとは互換性がありません」みたいに言われる。
じゃあポインタにしようと思って@つけてみると
例) dict[0].value := @PEnter(s);
「変数が必要です」とかいう。もうね。なんとかならないかと。
0225デフォルトの名無しさん
NGNGprocedure TEnterEvent(value: String) of object;
TDict = recort FOnValue: TEnterEvent; end;
0226デフォルトの名無しさん
NGNGでも、相変わらず
「TEnterEventと形無しなんちゃらに互換性がない」って怒られるっす
0227デフォルトの名無しさん
NGNG登録時に
dict[0].value := PEnter(s) //←この引数部分がヤバかった
こうすればOKでした。
dict[0].value := PEnter
0228デフォルトの名無しさん
NGNGみんな使ってるの?
どこまでのことがIntraWebでできますか?
0229デフォルトの名無しさん
NGNGC++で書くと、こんな事をやりたいのですが・・・・
//----------------------------
class TX {
private:
//----------------------------
// ↓このクラスを隠蔽したい。
class TY {
public:
void Exec(int num);
};
//----------------------------
int m_num;
void Init(TY *pobj);
public:
TX(int n);
};
//----------------------------
TX::TX(int n) {
TY a;
m_num = n;
Init(&a);
}
void TX::TY::Exec(int num) {
Form1->Caption = Format("Hello:%d",OPENARRAY(TVarRec,(num)));
}
void TX::Init(TY *pobj) {
pobj->Exec(m_num);
}
//----------------------------
Init をProcedure手続きにしてimplement するしかないのでしょうか?
0230デフォルトの名無しさん
NGNG現状できないね…。Delphi.NETだと確か入れ子宣言が可能になったはずだけども。
0231デフォルトの名無しさん
NGNGありがとうございます。
そうですか、Delphi.Netから対応ですか・・・(これだけの為に買うのも・・・)
クラス内クラス以外でも実現できないとすると、
InitメソッドをProcedureに置き換えるしかないなぁ。
0232デフォルトの名無しさん
NGNG#前提条件
ComboBox1.Style := scOwnerDrowFixed
ComboBox1.DrawItem := TForm1.ComboBox1DrawItem
ComboBox1のItemsにAddObjectとして clBlack, clBlue, clRedとかを入れてる
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ComboBox1.Canvas do
begin
FillRect(Rect);
Font.Color := TColor(ComboBox1.Items.Objects[Index]);
TextOut(Rect.Left+1, Rect.Top+1, ComboBox1.Items[Index]);
end;
end;
エディット部分を編集できるようにするためには、あとなにをしたらいいの?
0233デフォルトの名無しさん
NGNGtype
TXComboBox = class(TComboBox)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
//TXComboBox
procedure TXComboBox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := Style or CBS_OWNERDRAWFIXED;
end;
を適用する。
VCLはオーナードローでエディット可のスタイルを標準でサポートしていません。
ちなみにSetWindowLongは効かないのでCreateParamsをいじるは絶対条件です。
Delphi8では変わっていればいいなあ。
0234デフォルトの名無しさん
NGNGDelphi7のActiveXコントロールウィザードでTextBoxを
継承したOCXを作りました。
そのOCXをほかのプロジェクトで使うとデフォルトで
Textが 'XXXEdit1' ってなっちゃうんですけど、
これをはじめから空白にするにはどうしたら良いですか?
0235デフォルトの名無しさん
NGNG0236234
NGNGして、それをどこに記述すれば良いんでしょうか?
設計時にフォームに貼り付けたときに走るコンストラクタの
ようなものはありますか?そしてそれは(あるとしたら)
どのようにデバッグすれば良いんでしょう?
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGなくなっていますね。IPアドレスを指定して、そこにあるフォルダを持ってきたいのですが、
どのようにすればいいのでしょうか?教えて頂けないでしょうか?お願いします。
0239デフォルトの名無しさん
NGNGIndyに代わりました。検索するとサンプルが出てくるかもしれません。
0240234
NGNG0241234
NGNG0242デフォルトの名無しさん
NGNGで、君はそのメッセージをヘルプで調べたのかね?
0243デフォルトの名無しさん
NGNGそれがどうかしたのか? 答えになってねーぞ。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG説明してほしければ、くだすれ逝けよ。
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248234
NGNG>>234=>>236=>>240=>>241=私で、>>243・>>246は別人です。
いずれにしても自己解決しました。TEditを継承しようとしていたのが
間違いで、TCustomEditを継承すれば希望の動作をあっさり実現できました。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG現在、DB2をDelphiで使用する方法を模索しています。
今のところ分かっているのは、
1.Delphi付属のBDE、DBExpress等のコンポーネント
2.migaroのDelphi/400
3.IBMのCSレボリューション
の3つです。
新規開発においては1.のDelphi付属のコンポーネントでも十分なのでしょうが、
AS/400にすでにある資産(帳票等)を流用したいので、Delphi付属のコンポーネントでは、
物足りないです。
また、2.のDelphi/400は以前使用したことがあり、機能的にはメッセージ、コマンド、SQLが
使用できて十分なのですが、レスポンスは満足できるものではありませんでした。
3.のCSレボリューションはソケットを使用した伝聞でPC、AS/400間をやり取りするそうで、
レスポンスの点ではダントツのようですが、全ての開発において伝聞の形式を定義しなければ
ならず、開発効率がかなり悪いようです。
どなたか、他にツールをご存知の方はいらっしゃいますでしょうか?
よろしくお願いします。
0251デフォルトの名無しさん
NGNGデバッガでステップトレースした際に、頻繁にInternal Error が出てしまいます。
何とかならないもんでしょうか(^^;
現在は、クリティカルなコードはなるべくステップトレースを避けるなどして、
どうにか対処してますけど・・・。
4,5000行もインラインアセンブラで組んでいると、
そうも行かないところも出てきてしまって…。
Borlandに言っても、修正パッチとかは出そうに無いですし・・・。
それと、デバッグ時にXMMレジスタの中身が確認できないのも辛い。
0252デフォルトの名無しさん
NGNGhttp://program.dot.thebbs.jp/1071486463.html
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGフルスクリーンでしか起動しないゲームを
フォームの中に4つ程埋め込んで同時ハァハァしたいんだが
手っ取り早いコーポーネント無い?
ゲームって所を突っ込むとアッチ系なわけだが、みなまで言わせるな
漏れの欲望を実現させてくれ
0255デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258254
NGNGなぁ分かってくれよ…
ネタじゃなくてマジなんだよ…
たぶんマジなんだよ…
0260デフォルトの名無しさん
NGNGたとえばCTRL+Pが押されたことを検出するにはどうすればいいですか?
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNGDelphiML:79620にこんなのあったけど。
面倒だからインデントなし。
procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWnd;
begin
if WinExec('Notepad',CmdShow)<32 then exit;
Wnd:=FindWindow('Notepad', nil);
if Wnd<>0 then
Windows.SetParent(Wnd,Panel1.Handle);
end;
0263デフォルトの名無しさん
NGNGあれはどうやれば描画出来るのでしょうか?
0264254
NGNGメモ帳を埋め込むサンプルですね。
そこの所を変えればいいわけだ。
10時間ぐらい頑張ってみる。
0265デフォルトの名無しさん
NGNGこの時点でもうだめだろ。VMWAREでも使っとけ。
0267254
NGNGつまり46,000円を払えという事だな。
3時間以内に買ってくるわ。
0268254
NGNG納期一週間
体験版もDLできぬしな
262の方法で本当に無理か、10時間かけて確認してから
あきらめる事にする。
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGPolyLine
0271ななしへたぐらま ◆XcB18Bks.Y
NGNGTMemoやTRichEditをベースにして実現する事は恐らく出来ないと思います.
DelphiのコードエディタはWindowsに標準で付いてくるエディットコントロール(TEditやTMemoの実体)や
リッチエディットコントロール(TRichEditの実体)をベースに作っているわけではなく,
一からすべて自前で作られているものと思われます.
出回っているテキスト編集コンポの中にはそういうものもいくつかあるようですが
これらの中で背景のオーナー描画を自由に出来るものがあればそういう機能を実現する事が出来るかも知れません.
0272263
NGNGかなり大変そうですね。
必要に迫られたわけではなかったのですが、
ふと気になったので相談させていただきました。
でも実現出来れば作成出来るものの幅も広がりそうなので、
これを機会にコンポーネントを探してみます。
0273デフォルトの名無しさん
NGNGお使いになられているわけですよ。それって普通なの?
お漏らししてるの?
0274デフォルトの名無しさん
NGNGそんな時漏れはプロセスで抹殺
0275273
NGNGくりかえしていただけなんでつが。
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGソース
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG継承とかってのがよく分からなくて・・・
0282デフォルトの名無しさん
NGNGもしそうなら、ソース出してみ。
「再描画のたびにちらつく」
とだけ言われてもどうしようもない
0283デフォルトの名無しさん
NGNGダイアログでお知らせをしてるんですが、他のアプリの後ろに隠れてしまいます。
これを必ずトップウィンドウにする方法をご教授願います。
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGしたいのですが
MainFrm.Caption := 'テスト'
とやってから最小化してもタスクバーの文字には
あいわらず
Project1と出たままです。
どうやったらタスクバーにキャプションを反映させられるんでしょうか?
よろしくお願いいたしますm(_ _)m
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGおお、それでした
0288デフォルトの名無しさん
NGNG正月休みの間やってみようとしたけど僕にも無理でした・・
0289デフォルトの名無しさん
NGNG何のオナニー描画をしたいのか言え。
コンポによって使うイベントが違ったりする
漠然としすぎた質問はスルーされる
0290Delフサギコ ◆A6VzDeLphI
NGNGΛ,,Λ ___ [検索履歴][再読込]
ミ,,゚Д゚ミ .||::::::::|| を自作アプリから
ミ つ___||_____|| クリックさせたいのですが
| ̄ ̄|__ミ――――― どうしたらいいですか?
`ー┬‐''
┴ ワカラヘンネン
0291Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡 TagetWndにWinnyのハンドルを入れて
ミ つ旦)~~ こうすると、Alt+H/Alt+Rを
〜と,,,~),,~) 押したことになりますね。
var
TargetWnd: HWND;
FC:Boolean;
SetForegroundWindow(TargetWnd);
BringWindowToTop(TargetWnd);
FC := GetKeyState(VK_MENU) < 0;
if not FC then Keybd_event(VK_MENU,0,0,0);
Keybd_event(Ord('H'),0,0,0);
Keybd_event(Ord('H'),0,KEYEVENTF_KEYUP,0);
Keybd_event(Ord('R'),0,0,0);
Keybd_event(Ord('R'),0,KEYEVENTF_KEYUP,0);
if not FC then Keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
0292デフォルトの名無しさん
NGNGとっかかりがほしいのか?
とりあえず以下のとおりやってみ
・ListBox1を配置しる
・プロパティ「Style」に「lbOwnerDrawFixed」設定
・プロパティ「Items」に適当なアイテムいくつか設定
・イベント「OnDrawItem」に以下のコードを記述しる
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
ListBox1.Canvas.Brush.Color := clWhite; //←(A)
ListBox1.Canvas.FillRect(Rect);
ListBox1.Canvas.Brush.Color := clWhite; //←(B)
ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
end;
以上のコードがうまく動くこと確認したら、(A)とか(B)に適当な色を入れて楽しんでみれ
慣れたらRect.Leftあたりの数値いじってみたり、Canvasに絵を埋め込んでみたり
0293デフォルトの名無しさん
NGNG空白を適当に切り詰められちゃうんですが、
切り詰めないようにはどうしたらいいでしょう?
text := (右はテキストの例)[タブ] [タブ] [タブ] aaaa [タブ] bbbb [タブ] [タブ] cccc [タブ]
StringList1.Delimiter := #9;
StringList1.Delimitedtext := text;
StringGrid1.Rows[0].AddStrings(StringList1);
→ StringGrid1には aaa, bbb, ccc の3個だけ並ぶ
0294デフォルトの名無しさん
NGNGパーソナルだと1万ぐらいで、プロだと4万ぐらいで売っていました。
どういう違いがあって、どちらを買ったほうがいいでしょぷか?
0295デフォルトの名無しさん
NGNG取りあえず公用語のC言語の本とフリーのコンパイラ。
それで3ヶ月ほど勉強してみ。
0296デフォルトの名無しさん
NGNGえっパーソナル版はタダでダウンロードできるって知らないの?
0297デフォルトの名無しさん
NGNG昔の話だな。
0298デフォルトの名無しさん
NGNG○昔のヴァージョンならな。
0299デフォルトの名無しさん
NGNGDelphiの入手とインストール
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%5D%5D
0300デフォルトの名無しさん
NGNGBringWindowTopはいらなくない?
と思ったら98では効かないのか…
0301パントマイマの軌跡● ◆xPantyHouQ
NGNGどっかありませんかね?
【例】
<a href="index.html">トップページ</a>を
<a href="([^"]+)\1">([^<]+)\2</a>
みたいに書いて、\1と\2が別途の変数として取れるようなものです。
bmonkeyさんのところも、BRegExpも両方見てみましたが実装していなかったっぽいんですが。
0302デフォルトの名無しさん
NGNG0303パントマイマの軌跡● ◆xPantyHouQ
NGNGウワーイアッター!!!
早速使って見るです!�dクス!!
0304デフォルトの名無しさん
NGNGイメージングデバイスに流すことは可能でつか??
0305デフォルトの名無しさん
NGNG0306304
NGNG参考になるHPか文献ありませんか?
どっから手をつけて良いのやら…
0307デフォルトの名無しさん
NGNGDel使ってもフロントエンド程度にした方が良い。
0308デフォルトの名無しさん
NGNGで、何が制限となるのか具体的に説明して下さい。
VBならスダンディングマスターベーションするが。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGシリアルとかパラレルならそんなもん書くまでも無いっしょ。
0312デフォルトの名無しさん
NGNGいや、単純にvbってポート叩けたっけ?みたいな。
DelphiはTPの名残で普通にできるけど。
0313304
NGNGメディアサーバー(FLASH)に流すだけなんですが…
難しいでしょうか
0314デフォルトの名無しさん
NGNGアンチエイリアシングとか面倒です。
0315デフォルトの名無しさん
NGNGPureSoapってのを見つけたんだけど、オフィシャルが消えてるっぽい。
って、この質問はここであってる? もしスレ違いなら誘導してください。
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGXMLとhttpでスクラッチするというのもありかと。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGフォーカスが移らず困っています。
ググッたら
SetForegroundWindow(form1.Handle);
とかでアクティブになるみたいな情報を見つけましたが、うまくいきません。
たしかWindows95・NTとWindows2000,XPではウィンドウ制御の仕組みが変わってたと
思うのでそれが原因かも。
あと、
SetWindowPos(form1.Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE)
でウィンドウを最前面に持ってくることはできましたが、やっぱりフォーカスは移ってくれません。
何かいいアイデアはありませんか?開発OSはWindowsXPです。
0320デフォルトの名無しさん
NGNGそのexeで SetForegroundWindow してもダメ?
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGttp://hp.vector.co.jp/authors/VA016117/setfore.html
俺が参考にした場所。
win2kではでけた。
0323319
NGNG>>322
ありがとうござます。
Cはよくわからないのですが設定を変更する箇所をDelphiで書くと
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(0), 0);
ですよね?
やっぱりうまくアクティブになりませんでした。
ちょっと説明を追加すると
"(呼出)元.exe"から"(呼出)先.exe"を呼び出す際、CreateProcessメソッドを使って
呼び出してます。
で、先.exeが表示されたら元.exeのフォームのVisibleをFalseにして、画面が遷移したように
見せかけてるわけです。
元.exeは、先.exeが終了するまでsleepさせています。
先.exeが終了したら元.exeのフォームのVisibleをTureにして表示してるのですが、この仕組み
が悪いのかな?
ちなみにSetForegroundWindowを組み込んだのは元.exeの再表示直後です。
0324デフォルトの名無しさん
NGNGBringWindowToTop
0325デフォルトの名無しさん
NGNGおまえの会社から 2ch にカキコんでいるやつが多数いる。ってことだろ?
0326デフォルトの名無しさん
NGNG真っ赤な画面で「業務とは関係ないサイトにアクセスしようとしています」と警告が出る。
0327デフォルトの名無しさん
NGNGTextOutなどで自動的にアンチエイリアスされてしまいますが、
これをコーディングでClearTypeを無効にする方法とかありますか?
0328319
NGNGというか、社内の別の人が組んでくれました。一応ご参考までに。
procedure SetForeWnd(hWnd:HWND);
var
dwID,dwForeID: DWORD;
begin
dwID := GetWindowThreadProcessId(hWnd, nil);
dwForeID := GetWindowThreadProcessId(GetForegroundWindow, nil);
if dwID = dwForeID then
begin
BringWindowToTop(hWnd);
end
else
begin
AttachThreadInput(dwID, dwForeID, True);
SetActiveWindow(hWnd);
AttachThreadInput(dwID, dwForeID, False);
BringWindowToTop(hWnd);
end;
end;
アクティブにしたいウィンドウのハンドルと現在アクティブなウィンドウのハンドルを比べ
異なるようであればアタッチして、ウィンドウをアクティブにし、再び切り離してる・・・ようです。
0329デフォルトの名無しさん
NGNGttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_0xgn.asp
CreateFont するときに NONANTIALIASED_QUALITY を lfQuality に追加する。と。
0330デフォルトの名無しさん
NGNGどうでもいいことだけど
ifの中がBringWindowToTopのみ かつどちらでも実行されるなら
if dwID <> dwForeID then
begin
//ここにelseでの処理Attatch…(…False);まで
end;
BringWindowToTop(hWnd);
のほうがコード量少なくて済む。
が、可読性は下がりそう(スマン
0331デフォルトの名無しさん
NGNGいらっしゃいますか?
もし、おられたら、書き込む部分のソースを教えて下さい。
宜しくお願いします。
0332デフォルトの名無しさん
NGNGミドルウェアなに使っているのか書け。ってばよ。
ttp://pc2.2ch.net/test/read.cgi/tech/1074523803/l99
で紹介されている
ttp://www.fichtner.net/delphi/mysql.delphi.phtml
でも使ってみたら?
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG切に願う。
自分でプログラムやる気がない人は来ないでください。
0336331
NGNG答えられない奴もしゃしゃり出てくるなヴァカ
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGODBC経由でもmysql.pas(libmysql.dll)を使っても不可能です。
原因は不明です。
どうしてもやりたいなら、別の言語でdllを作るなりしてやるしかありません。
0340デフォルトの名無しさん
NGNGうそつき.
別の言語でdllを作ってできるなら原因不明ということになるはずないだろ?
0341デフォルトの名無しさん
NGNG注意:商用利用は有料です。
(ソース無しバージョンで一人の開発者が使う時は約$60必要です)
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG私は普通に接続できていますが。
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNGマジっすか?
次の開発はDelphi + MySQLで行こうと思ってたのに、やめようかなぁ。
0346デフォルトの名無しさん
NGNG個人で作っているなら無料だ。
0347デフォルトの名無しさん
NGNGところで、ODBC 接続で何の問題もなく BLOB アクセスできるんですが。
何が問題なんだろう
0348デフォルトの名無しさん
NGNGJpeg格納してみ
俺はできんかった。
ちなみにDel7。
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNGドキュメント少ないけどな。。。
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGそれって動作しないってこと?それとも最適化されてないってこと?
0353デフォルトの名無しさん
NGNG今MLで話題になってるが、遅くなるらしい。
0354デフォルトの名無しさん
NGNGどのMLか教えて。
まぁデータは飛ばんし、遅くなっても我慢して使うかな。
0355デフォルトの名無しさん
NGNG(which Firebird 1 is) on Windows OS platforms.
There are no workarounds.
^^^^^^^^^^^^^^^^^^^^^^^^^
0356デフォルトの名無しさん
NGNG私が試したところバイナリデータの中に
F*27とか
E*27とか
9*27とかの数値があるデータは書き込めませんでした。
(*はワイルドカード)
もしこれらの数値があるデータでも書き込めたのなら、やり方をご教授下さい。
環境
WindowsXP HomeEdition
MySQL 4.0.15(Windows版 文字コードsjis)
MySQL ODBC 3.51 Driver
Delphi6 Enterprise(BDE 5.01)
コード
ms := TMemoryStream.Create;
ms.LoadFromFile('test.dat');//test.datの内容はE727というバイナリデータ
Table1.Edit;
Table1.Insert;
table1.FieldByName('id').AsInteger := 1;
st := TBlobStream.Create(TBlobField(Table1.FieldByName('data')), bmWrite);
try
ms.SaveToStream(st);
Table1.Post;
finally
St.Free;
ms.Free;
end;
0357デフォルトの名無しさん
NGNGという2バイトのデーター?
まさか
E 7 2 7
の4バイト。ってことではないよね?
0358デフォルトの名無しさん
NGNG4.0.16 で blob 周りのバグが少しとれています。
16 または 17 で試してみては?私は 4.0.17 を使っています。
あと、この検証コードで問題が起きるのなら、ODBC/MySQL のバグなら他の言語でも
同じ問題が出るだろうし、Delphi/BDE の問題なら他の ODBC ドライバでも同じ問題が出るだろう。
0359デフォルトの名無しさん
NGNGソフトを作っています。
Delphi5でNMUDPを使用したときは問題なく動作したのですが,
Delphi7のTUdpSocketではなぜかOnReceivedイベントが発生しません。
Delphi-MLの過去ログにもこの現象の報告がありますがレスがついていません。
http://130.158.124.192/~takeuchi/delphi/browse.cgi?index=062605&back=http%3A%2F%2F130%2E158%2E124%2E192%2F%7Etakeuchi%2Fdelphi%2Farticle%2F062%2F062605%2Ehtml
他にも同様の現象が出ています。これも解決していません。
http://www.delphiedintorni.it/geoxml/forumgetthread?groupname=borland.public.delphi.internet.winsock&messageid=40036940$1@newsgroups.borland.com&displaymode=all
他人事だと思っていたら私もはまってしまいました。
どなたか回避方法をご存じの方がいたらよろしくお願いいたします。
0360デフォルトの名無しさん
NGNGソフトを作っています。
Delphi5でNMUDPを使用したときは問題なく動作したのですが,
Delphi7のTUdpSocketではなぜかOnReceivedイベントが発生しません。
Delphi-MLの過去ログにもこの現象の報告がありますがレスがついていません。
http://130.158.124.192/~takeuchi/delphi/browse.cgi?index=062605&back=http%3A%2F%2F130%2E158%2E124%2E192%2F%7Etakeuchi%2Fdelphi%2Farticle%2F062%2F062605%2Ehtml
他にも同様の現象が出ています。これも解決していません。
http://www.delphiedintorni.it/geoxml/forumgetthread?groupname=borland.public.delphi.internet.winsock&messageid=40036940$1@newsgroups.borland.com&displaymode=all
他人事だと思っていたら私もはまってしまいました。
どなたか回避方法をご存じの方がいたらよろしくお願いいたします。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGTUdpSocket の話はつい最近、どこかで見たような...
「他人事だと思っていたら私も」って Delphi-ML でコメントつかないからこっちに振ったんでしょ。
性格悪いな。教えてあげない。
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365293
NGNG引き上げて答えてくれ・・・
> タブ区切りテキストをStringList.DelimitedTextで読み込むと、
> 空白を適当に切り詰められちゃうんですが、
> 切り詰めないようにはどうしたらいいでしょう?
> text := (右はテキストの例)[タブ] [タブ] [タブ] aaaa [タブ] bbbb [タブ] [タブ] cccc [タブ]
> StringList1.Delimiter := #9;
> StringList1.Delimitedtext := text;
> StringGrid1.Rows[0].AddStrings(StringList1);
> → StringGrid1には aaa, bbb, ccc の3個だけ並ぶ
→ "" "" "" "aaaa" .... と並んで欲しい。
うまいように行くTStringsのプロパティとか、他のコンポーネントとか見つからない。
こういうときって、みんな自力でパースしてるもんなの?
0366デフォルトの名無しさん
NGNG適当だけど、
StringList1.Text := StringReplace(text, #9, #10, [rfReplaceAll]);
0367デフォルトの名無しさん
NGNG偉そう
0368デフォルトの名無しさん
NGNGTUdpSocket は UDP なので、OnReceive は発生しません。仕様です。
その代わりに ReceiveFrom を使います。
ReceiveFrom TUdpSocket
でググればヒントが出てくるよ。
Indy の方が使いやすいのは事実だが
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGDelphi5だとNMUDPはサンプルがあってあっさり動いたんですけど
Delphi7でこんなに手こずるとは思いませんでした。
もうちょっとサンプル充実して欲しいです。
0371デフォルトの名無しさん
NGNG直にWinsock叩くと言う手もありますよ〜。
0372デフォルトの名無しさん
NGNG昔読んだけどいまいち分からなかった
今なら分かるかも知れない
0373デフォルトの名無しさん
NGNGDelphi7 では、TUDPSocket は使うな。Indy に移行しろ。と書かれているのはよんだのか?
0374sage
NGNGIndy9のサンプルはここにあるよ。もっとよく調べたら?
http://www.indyproject.org/download/Files/Indy9.html
0375デフォルトの名無しさん
NGNG一旦、Winコントロールに描画するしかないんかな。
0376デフォルトの名無しさん
NGNGTDDSDCaptureのBlockCopyは、録音された内容を配列にコピーできるのですが、
TDDSDWaveDataのBlockCopyは、配列の内容をバッファに書き込み、処理が逆です。
TDDSDWaveDataの内容を配列にコピーしたいのですが、どうすればいいですか?
0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGit is up to you
0380デフォルトの名無しさん
NGNG0381ななしへたぐらま ◆XcB18Bks.Y
NGNG画像をビットマップオブジェクト(TBitmap)に書き出してからTBitmapのScanLineプロパティ経由でピクセルを直接いじる感じになるのでは?
とりあえずイメージコンポに読み込んだ画像から明るさ2倍?の画像を作ってペイントボックスに表示する例.
procedure TForm1.Convert; // Image1.Pictureに画像を読み込んだ後に呼び出す
var x, y: integer; p: PByte;
begin
FWorkBitmap.Assign(Image1.Picture.Graphic); // FWorkBitmapはフィールド変数.あらかじめCreateしてPixelFormatをpf24bitにする
for y := 0 to FWorkBitmap.Height - 1 do
begin
p := FWorkBitmap.ScanLine[y];
for x := 0 to FWorkBitmap.Width * 3 - 1 do
begin
p^ := Min(255, p^ * 2); // usesにMathユニットを追加
inc(p);
end;
end;
PaintBox1.Invalidate; // ペイントボックスの再描画
end;
0382デフォルトの名無しさん
NGNG俺も無理だった。データが1234だったらOK。F727だったらNG。
---------------エラーメッセージ--------------------------
一般 SQLエラーです
[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-max-debug]You have an error in your SQL syntax.Check the manual that corresponds to
your MySQL server version for the right syntax to use near "・")'at line 1.
---------------------------------------------------------
なんでだろね。ただ俺はMySQLに詳しくないのでどこか設定が間違ってるのかも。
OS:WindowsXP
開発環境:Delphi7 Pro + BDE 5.01
データベース:MySQL 4.0.17
ODBCドライバ:MySQL ODBC 3.51.06
fm := TMemoryStream.Create;
fm.LoadFromFile('test.dat');
with TQuery.Create(self) do begin
RequestLive := true;
SQL.Text := 'select * from test';
Open;
Append;
FieldByName('code').AsInteger := 1;
st := TBlobStream.Create(TBlobField(FieldByName('bdata')), bmWrite);
fm.SaveToStream(st);
try
Post;
finally
Free;
st.Free;
fm.Free;
end;
end;
0383デフォルトの名無しさん
NGNGTDBMemoでメモ型項目に長文を格納したいのですが、240バイトほどしか保存されません。
blobというのを使うらしいということまではわかったんですが、どうやって
保存するのか、ネットやヘルプを調べても情報がほとんどありませんでした。
ご存じの方がおりましたらご教授よろしくお願いします。
0384デフォルトの名無しさん
NGNG240 バイトしか保存されない。というのをどうやって確認しましたか?
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG私は383であり385の発言はしておりませんが、実際に保存したら240バイト
くらいしか保存されていませんでした。判定方法は、保存された文字数を
数え、170文字(2バイト文字と1バイト文字の混合)くらいしか保存されて
いませんでした。
0387デフォルトの名無しさん
NGNG任意長のテキストの読み書きができるはずですよ?
データベース側がメモ型ではなく文字列型だったとか?
TDBMemo ではなく TDBEdit だったとか?
TTable コンポーネントで項目の追加とかしていない?
0388デフォルトの名無しさん
NGNGDemos\Db\FishFact に簡単なデモがあるからそれ見てごらん。
魚の説明のところが DBMemo だよ
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNGみなさん、どうもありがとうございました。
魚のサンプルを見て確かめました。特に間違っていなかったので再度
長文を保存してみたところきちんと保存されていました。原因はよく
わからないのですが勘違いかもしれません。お騒がせして申し訳ないです。
また、質問したいのでその時はよろしくお願いします。
0391デフォルトの名無しさん
NGNG自分で解決するしかない。 がむばれ。
0392デフォルトの名無しさん
NGNGprocedure TfrmDelStudy.Button6Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to ComponentCount -1 do
begin
Components[i].Visible := false;
あるいは
TComponent.Visible := false;
end;
end;
などと思いつくことはやってみたんですがうまくいきません。
よろしければご教授くださいませ。
0393デフォルトの名無しさん
NGNGfor i := 0 to ComponentCount -1 do
begin
if Components[i] is TControl then
(Components[i] as TControl).Visible := false;
end;
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNGばっちりです。とても助かりました。
どうもありがとうございましたm(__)m
0396デフォルトの名無しさん
NGNGボタンを乗っ取る方法はありますか?
とくに、スキンで特殊なボタンになってるアプリの。
0397デフォルトの名無しさん
NGNGhttp://off.2ch.net/test/read.cgi/offevent/1075197039/
0398デフォルトの名無しさん
NGNG押せなくする
連打する
どっちだろう
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGはぁ?
0401デフォルトの名無しさん
NGNGTControl(Components[i]).Visible := false;
0402デフォルトの名無しさん
NGNG(Components[i] as TControl).Visible := false;
TControl(Components[i]).Visible := false;
上の2つは何が違うの?
0403デフォルトの名無しさん
NGNG型の解決をコンパイル時にやるか実行時にやるかみたいな話だったかと。
0404デフォルトの名無しさん
NGNGつまり実用上はどちらも変わらないということでしょうか?
0405デフォルトの名無しさん
NGNG0406ななしへたぐらま ◆XcB18Bks.Y
NGNGvar
i: integer;
begin
for i := 0 to ControlCount - 1 do
Controls[i].Visible := False;
end;
>>402
●前者( オブジェクト as クラス型 )
オブジェクトが指定されたクラス型またはその派生クラス型のオブジェクト,あるいはnilかどうかをチェックします.
いずれにも当てはまらない場合は例外を生成します.
●後者( クラス型(オブジェクト) )
オブジェクトが指定されたクラス型かどうかをチェックをせずに
強引にそのクラス型のオブジェクトであると解釈します.
0407デフォルトの名無しさん
NGNGURL := 'http://hogehoge/'
flg := 0;
Header := ''hogehoge Browser;
WebBrowser1.Navigate(URL, flg, tmp, tmp Header);
上記のやり方では、無理なのでしょうか?
よろしければご教授ください。
0408407
NGNGURL := 'http://hogehoge/'
flg := 0;
Header := 'HTTP_USER_AGENT: hogehoge Browser';
WebBrowser1.Navigate(URL, flg, tmp, tmp, Header);
これでできました。
0409デフォルトの名無しさん
NGNG描画するとCanvas全体が再描画される為か
処理が非常に遅くなり、困っています。
処理が遅くならないDraw()のやり方はあるのでしょうか?
0410デフォルトの名無しさん
NGNG具体的な最小コードを書いてみて
0411デフォルトの名無しさん
NGNG画面に表示されているCanvasに一括転送
0412409
NGNGレスありがとうございます。
TImageのCanvasに
cv.Draw(x, y, CharImg);
と描画しています。
描画イメージのサイズは32*32
TImageのサイズは500*180です。
TImageのTransparentはTrueにしています。
0414デフォルトの名無しさん
NGNGそうすると、Picture.OnChangeが設定されてしまっていて、一部でも書き換えたら、TImage全体が書き換えられてしまう。
一番簡単な対策は、TImageを使わずに、フォーム直接か TPaintBoxに描画する事だと思うけど。
つまり、TPaintBox.OnPaintで TBitmapを全部表示して
普段は、その一部だけ書き換える。
0415デフォルトの名無しさん
NGNG今のマシンは速いから、ダブルバッファで十分じゃないの?
0416デフォルトの名無しさん
NGNGダブルバッファと同じだと思うんだけどね。
それで重いというなら Bitmapの一部を書き換える時に、そこだけ画面も書き換えるしかないと思うよ。
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGTImageってあまり書き換えないような絵を表示するには向いてるけど、すごく重いという感覚がある。
オフスクリーンでTBitmapに描画、それをCopyRectでTPaintBoxに転送するというのが俺の定番。
0419デフォルトの名無しさん
NGNGSHFileOperation関数を利用してファイルを転送・削除するときに、
進捗ダイアログボックスが表示されますよね。
あれが出てくる位置を変更することはできないんでしょうか?
0420デフォルトの名無しさん
NGNG質問です。
あれが出てくる位置を変更するのはどうしてでしょうか?
0421デフォルトの名無しさん
NGNG死ぬ気でWindowハンドルなりダイアログハンドルなどを取得してごにょごにょ
0422デフォルトの名無しさん
NGNG0423419
NGNG転送する時に、エクスプローラーの真上に出てくるじゃないですか。
あれをやられると、次に転送するファイルを探しにくいというか・・・。
邪魔なので、右上とか左上に追いやりたいんですけどね。
>>421
・・・ホント死ねるかも。
ちょっともう少し調べてみることにします・・・。
>>422
やっぱりそっちのほうが早いですか。
私がやり方を知らないだけで、
比較的簡単に出来るのかもしれないと思ったんですけどね。
とりあえず、421さんのやり方で出来ないかもうちょい検討して、
どうしても難しいと悟ったら422さんの案で、自前で用意することにします。
レスありがとうございました。
0424デフォルトの名無しさん
NGNG0425409
NGNGありがとうございます。
上に置くビットマップ素材を作り直すことで
TImageのTransparentをFalseにしても上手く表現
出来たので、今回はTImageを使うことにします。
少なくとも私の環境ではTImageの方で画像を透過しようとすると
大幅なパフォーマンスダウンが見られました。
今回は時間が無かったのでTImageのままですが
次回はTBitmap&TPaintBoxにチャレンジしてみます!
0426デフォルトの名無しさん
NGNG書き換えた領域だけを描画させるようにしたら 速くなると思うよ。
0427デフォルトの名無しさん
NGNGvar
PC: String;
Point:Pointer;
begin
PC := '$64FA6C';
Point := 何らかの関数?(PC); <---ここ
上のソースのように変数PCに文字列を代入し
Pointer型のPointに変数PCに代入したアドレスを入れたいのですが
どのようにしたらいいのでしょうか?
PCに入れる値はファイルからとってきています。
0428デフォルトの名無しさん
NGNGbegin
Result:=@dt;
end:
0429428
NGNGPoint:=Pointer( StringToInt( pc ) );
でも Pointer型より PChar とかにした方がいいよ。
0430427
NGNGありがとうございます。
それを組み込んでみたんですが、
未定義の識別子:'StringToInt'
となったんですが、特別な関数なのでしょうか?
PointerよりPCharの方がなぜいいのでしょうか?
0431デフォルトの名無しさん
NGNGWhy?
仮に、ポインタの加減算が出来るなら、PAnsiCharの方が1byte単位であることが
保証されていいような気がします。
どうなんですか?その辺知っている方教えてください。
0432デフォルトの名無しさん
NGNG>となったんですが、特別な関数なのでしょうか?
StrToIntの間違えっしょ。
0433デフォルトの名無しさん
NGNGStrToInt。
後半確かにね。 言いたいのは、Pointer型だとそのままじゃ殆ど使えないからって事。
何かポインターとして使いたいなら、その型で使うべきだと思うよ。
0434427
NGNGvar
PC: String;
Point,Point2:Pointer;
begin
PC := '$64FA6C';
Point := StrToInt(PC);
Point2 := StrToInt(PC) + 4;
という感じでいけそうですね。ありがとうございました。
最後にString型よりPAnsiCharの方がいいとおっしゃってましたが
String型からPAnsiCharにしたばあいはStrToInt使えないけど
どうするんでしょうか?(だんだん初歩的なことになってる・・・)
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNGうーむ、誰も言ってないと思うけど?
0437デフォルトの名無しさん
NGNG型なしポインタは。加減算が不便だけどもっとも汎用的。キャストすると Inc() Dec()
で簡単
0438デフォルトの名無しさん
NGNGでも、PCharだと、Incしたときに、何バイト分ポインタが進むかが、コンパイラに
依存するぞ。
もっとも、現在存在する全てのコンパイラは1バイト単位だけど。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGDelphiごときに標準規格なんて無いだろw
0441デフォルトの名無しさん
NGNGそういう神経の持ち主が作ったソフトは使いたくないなw
0442デフォルトの名無しさん
NGNG・PAnsiChar は 8 ビット文字で構成される,ヌルで終わる文字列へのポインタです。
・PWideChar は 16 ビット文字で構成される,ヌルで終わる文字列へのポインタです。
0443デフォルトの名無しさん
NGNG>可能性があるので,サイズの異なる文字を処理する可能性のあるプログラムを作成する
>ときは,ハードコーディングした定数を使用するかわりに標準関数SizeOf を使用した
>ほうがよいでしょう。
ヘルプより抜粋
0444デフォルトの名無しさん
NGNGAnsiChar型、UCS2Char型、UCS4Char型のいずれかを使いなさい、ってこった。
文字列やポインタについても同じ。
String型やPChar型の実装は、コンパイラ依存ですよ>>442
確実に8ビット文字列のポインタを扱いたければPAnsiCharを使うのが正解。
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG質問者は「バイト数が固定されることが保証される文字を扱うには」とは
言ってないよ。あんたが勝手に思いこんでるんでは?
0447デフォルトの名無しさん
NGNGString 型に対応するのは汎用型の PChar じゃないの?
0448デフォルトの名無しさん
NGNGだから PChar が正解なんでは
0449デフォルトの名無しさん
NGNG質問者っつーか、442が間違いとも取られかねない発言をしているのに対しての意見じゃないの?
>>447
それはケースバイケースでしょう。
少なくとも、例えばフォーマットの固定されたファイルから文字列をコピーする
時なんかは俺はちゃんとAnsiStringにしてるが。
内部で一時的に記憶する文字列は汎用のStringで一応使い分けている。
0450デフォルトの名無しさん
NGNGあのね、PChar をつかうより PAnsiChar をつかえ、とか偉そうに説教してるのが
いるでしょ。そもそも質問者は型なしポインタをつかってるのよ。なにを指して
るのかわからんけど。だから一般的には、PChar でも PAnsiChar でも正解なんか
ないのよ。
>>444 確実に8ビット文字列のポインタを扱いたければPAnsiCharを使うのが正解。
「確実に8ビット文字列のポインタを扱いたければ」なんて誰もいってないの。
そもそも文字列のポインタかどうかさえ分からないんだから。
あなたがどう使い分けてるかは関係ないの
0451デフォルトの名無しさん
NGNGstring → PChar
AnsiString → PAnsiChar
一般的なバイナリ → PByte
Integer の配列 → PInteger
レコード型の配列(例えば TRect の) → PRect
......
というふうになるんじゃないの
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG笑わせるなよ(爆笑
0454デフォルトの名無しさん
NGNGIntegerとLongint、CardinalとLongWordとかも混同して使ってるんだろうな・・・
0455427
NGNGみなさんの回答で一応解決しました、ありがとうございます
結局こう使いたかったんです
p := '$64FA6C';
ReadProcessMemory(hProcess,Pointer(StrToInt(p)),PC1,4,numRead);
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGたぶん、ゲームなんかのデータ変更ツールを作ってるんだよ。
で、誰かがどこかに流してるデータを・・・
0458デフォルトの名無しさん
NGNG大丈夫なんだろうか?
0459デフォルトの名無しさん
NGNGロードアドレス以外も、大抵は毎回同じ。
だからバッファオーバランとかにとても弱い訳だ。
0460デフォルトの名無しさん
NGNGそなの? ベースアドレスが同じ指定の異なるアプリを起動したときはどうなるの?
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0463427
NGNGUWSCというソフトをご存知でしょうか?↓
http://www.vector.co.jp/soft/win95/util/se115105.html
このソフトはマウスやキーボードの動きを記録して
再生することができるんですが
マウスクリックはどうやって実現されているのかがわからないんです。
マウスを動かすことまではできたんですが、よろしくお願いします。
どうやったかは以下のソースのようにしました。
procedure TForm1.Button5Click(Sender: TObject);
var
hCalc: HWND;
Rect: TRect;
begin
hCalc := FindWindow(nil, '電卓');
GetWIndowRect(hCalc,Rect);
SetCursorPos(Rect.Left+23,Rect.Top+79);
sleep(3000);
sendmessageA(hCalc, WM_LBUTTONDOWN, 0, 0);
sleep(10);
sendmessageA(hCalc, WM_LBUTTONUP, 0, 0);
end;
サンプル的に電卓の16進数のラジオボタンをクリックするようにしてみたんです。
なにがだめなんでしょうか?
0464デフォルトの名無しさん
NGNGprocedure TForm1.Button5Click(Sender: TObject);
var
hCalc: HWND;
Rect: TRect;
hButton: HWND; //追加
begin
hCalc := FindWindow(nil, '電卓');
GetWIndowRect(hCalc,Rect);
SetCursorPos(Rect.Left+23,Rect.Top+79);
hButton := WindowFromPoint(Point(Rect.Left+23,Rect.Top+79)); //追加
sleep(3000);
sendmessageA(hButton, WM_LBUTTONDOWN, 0, 0); //修正
sleep(10);
sendmessageA(hButton, WM_LBUTTONUP, 0, 0); //修正
end;
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNGDel用はDel2用以降死滅して居るんだが。
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGDelphiは文法的に完全的と思うなら、コードガード買わせるんじゃねーよ。
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGEdit1.Enabled := false;
Edit1.Color := clBtnFace;
みたいに、入力できないコントロールの表示をいちいち変えるのが面倒で、
Enabledがfalseになったら、自分の色を変えるようなコンポーネントを書きました。
(単に、Enabledのプロパティ変更時に、自身のColorプロパティを変更)
で、こんどは、グループとか、パネルのEnabledの設定変更にあわせて、
子コンポーネントのEnabledの設定変更が呼ばれるようにしたいと思うんですが、
こういうのって、TCustomGroupBoxとか、TCustomPanelとかを継承して、
継承したコンポを使うしかないんですかね。
なんか、筋が悪いような気がするんですけど。
#そもそも、コンポの色変更をするほうも、
#Enabledのプロパティ変更(SetEnabled)を、オーバーライドすればいいのか、
#CMEnabledChangedの方をしたほうがいいのかってのもよくわかんない...
おしえて、VCLの偉い人!
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGprocedure EditEnable(Edit: TEdit; Enabled: Boolean);
begin
Edit.Enabled := Enabled;
if Enabled then Edit.Color := clWhite
else Edit.Color := clBtnFace;
end;
あんまり綺麗にならなかった_| ̄|○
しかも、質問に答えてねぇ
0477デフォルトの名無しさん
NGNGさらに脇道にそれるが、
Edit.Color := IfThen(Enabled, clWhite, clBtnFace);
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGパネルのEnabled を変更したら自動的に子供も変更されなかったっけ?
作った方のコンポーネントから、親の CM_ENABLEDCHANGEDをフックして処理すればいいんじゃないの?
そうすれば親のコンポーネント(パネル)には手を付けなくていい。
あるいは、逆に非表示コンポーネントを作って、パネルの COLORCHANGED をフックして
乗ってる子コントロールの色を全部変更してしまえば・・・ってのは既に >>473が書いてるのかな?
0480デフォルトの名無しさん
NGNGWindowProcプロパティを自分のインスタンス内に保存(SaveWindowProc)した上で
自分のメソッドに置き換えて、
自分のメソッド内で ENABLEDCHANGEDなら処理してそれ以外なら SaveWindowProcの方を呼ぶってことね。
で、サブクラスをするコンポーネントを使う時は
( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2 http://piza2.2ch.net/tech/kako/999/999482946.html 928
var WM_DetachProc:Cardinal; をローカル変数として定義し
コンポーネントの初期化部で
initialization
WM_DetachProc := RegisterWindowMessage('WM_SubclassFreeNotify');
end.
とする。
サブクラス解放時にはこのメッセージIDで
WParam,LParam はユニークな値を入れて サブクラス先に送信する
それを受信したWindowProcでは、
この2つの値で送信者が自分かどうか判断し
自分でなければリンクを解放して下位にメッセージを送り
メッセージが帰って来たらリンクを再接続する
送信者が自分ならリンクの解放だけを行う
VCL上のサブクラス取り外し
WParam で selfが渡される WParam = LongInt(self)
LParamは無視してよい サンプルコード >>922
Win上のサブクラス取り外し
LParamでプロセスID
WParamはプロセス内ユニークな値(メソッドアドレス等それぞれのプロセスで管理)
注意: WM_DetachProc は定数ではないので case では使えない ifで判断する事
0481472
NGNGコンポいじりというか、DELPHIもまだまだ初心者(←3項演算子も知らんかったくらい)なので、
とっても参考になります。
できれば1度作ったら、あとは張るだけでいいようなものを目指してますので(できるん?)、
ちょっと時間をとって、メッセージの流れを追ってみたいと思います。
すぐ試せそうにはないんですが、それなりにできたら、経過を投げますね。
ありが�dございました。_o_
0482デフォルトの名無しさん
NGNGフォームに貼り付けたら、フォーム上の全部のTControlのメッセージフックをして
自分の思うスタイルを実現するっていう非ビジュアルコンポーネントを作れば出来るよ。
仕掛けそのものは簡単だけど、フックしてるから、コンポ設計中につけ外しされた時の処理
(これはパネルやフォームにCM_CONTROLCHANGEとかのメッセージが来る)
をしっかり考えとかないと、IDEが暴走して悲しい事になる。
でも、そこらへんを考えるのが一番面白いよね。
0483デフォルトの名無しさん
NGNGやりたい事は、現在開いているウィンドウに対して、マウスによるD&D以外で
ファイルを渡す事です。
D&Dが可能なアプリケーションを列挙して選択させるようなフリーソフトが
あったりしますが、どのように処理しているのでしょうか?
それもソフトによって微妙に表示されるアプリが違ったりするので、いくつかの
アプローチがあるのかと思いますが・・・。
また、全然別のアプローチでも構いませんので、なにかいい方法があれば
教えていただけませんでしょうか?
0484デフォルトの名無しさん
NGNGWM_DROPFILE捕まえたりとか、OLEつかったD&Dの処理なんかはできています。
0485デフォルトの名無しさん
NGNGそのフリーソフトとやらを紹介してくれれば少しは分かりやすくなるかも
>マウスによるD&D以外で
以外って言われても困ります。もっと具体的に
0486デフォルトの名無しさん
NGNGつまり、D&Dをサポートしたアプリに、 WM_DROPFILE を自分が送り付けてやりたいという事かな?
でも、WM_DROPFILEだけ送りつけても その後そのアプリがシェル API呼ぶからダメだと
0487デフォルトの名無しさん
NGNGあとはそのインターフェイスを呼び出すかメッセージ送ればいいんじゃない?
0488デフォルトの名無しさん
NGNGドロップもしくはドロップオープン、といった感じの名称の機能で、キーボードでD&Dを
エミュレートする機能です。
ウィンドウを列挙するのはいいとして、そのウィンドウがD&Dに対応しているかどうかの
判断をどのようにしているのかな、と。
そして、判断できたとして、WM_DROPFILESはどうやって送るのかな・・・と思いましたが
これは情報が発見できました。
また、WM_DROPFILES送る以外に何か方法はないのか、とか・・・。
0489デフォルトの名無しさん
NGNGおお!まさにそれっぽい・・・
検索するとうんじゃり出てきますねー。どうして見つからなかったのか・・・。
OleDropTargetInterfaceのほうは余り情報なさそうですが、ちまちま調べてみます。
どうもありがとうございましたー。
0490デフォルトの名無しさん
NGNGスクリプトにForm1を引き渡す処理がうまくできないっす。
AddObjectっていうメソッドがうまくやってくれそうなんだけど、
いまいちうまく動かない。どっかDelphiでScriptControl使ってる例ないですか?
0491490
NGNG試したソースはこんな漢字。
procedure TForm1.Button1Click(Sender: TObject);
begin
ScriptControl1.AddObject('Form1', Form1, true);
ScriptControl1.ExecuteStatement(Memo1.Text);
end;
これをコンパイルしようとすると、「IDispatchとTFormには互換性がありません」
って言って怒られる。
でもVBでScriptControl使ってる例では、特に小細工なしにFormぶち込んでOKみたいだし、
IDispatch調べようとしたらなんかCOMの深い世界に行きつくらしいし、
どっちの方向に進めばいいかわからないです。
教えてエロの人
0492デフォルトの名無しさん
NGNGDelphiでは そのままという訳にはゆかない。
0493490
NGNGO.K!じゃあ、さっそくIDispatchとやらをForm1につけてやろう。
type
TForm1 = class(TForm, IDispatch)
・・・・
コンパイル通った。Goooood!!!
よっしゃ、さっそくいじくりまわしてやるぜ!
とりあえず
Form1.Caption = "test"
↓
エラー:
このオブジェクトではサポートされていない操作です Form1.Caption
ヽ(`Д´)ノ
0494デフォルトの名無しさん
NGNG0495490
NGNGいや、上のコードはScriptControl上のVBScriptに書いてるコードだから、
文字列のリテラルは "test" でいいのよ。
(正確に言うと、Memo1.textに書いているVBScriptのコードを
ScriptControl.ExecuteStatementに引き渡している。
説明不足でした。すんません)
あといろいろいじってみたんだけど、
どうやら AddObjectで渡された'Form1'は何者か知らないけど、オブジェクトなんだろう
ということは認識しているらしい。 ScriptControl君は。
いろんなコードを引き渡して観察してみると・・・
Msgbox "test" → OK
Msgbox Form1.Caption → 「このオブジェクトではサポートされていない操作です」
Msgbox hoge.Caption → 「オブジェクトがありません」
というわけで、かろうじて名前は認識しているらしいが、彼にもっとものを教えるにはどうしたら・・
0496デフォルトの名無しさん
NGNGフォームじゃなくて、オートメーションオブジェクトを渡す
or
IDispatchのメソッドを自力で実装する
Delphi中で、OleVariant経由で操作できるものじゃないと、渡しても意味がない
0497Delフサギコ ◆A6VzDeLphI
NGNG⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ (´⌒(´⌒;;
やってみたんだけど、ものすごい簡単に
アプリにVBScriptが搭載できるんですね。
MsgBoxで出力するのは出来たのですが
この中で計算させた値を
変数に代入するにはどうしたら…??
Form1.FValueに代入するのも
やっぱり>>496の書きこみみたいのを
実装しなきゃだめ?
0498デフォルトの名無しさん
NGNG( ̄ー ̄)
0499Delフサギコ ◆A6VzDeLphI
NGNG⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ (´⌒(´⌒;;
http://www.delphidevelopers.com/learnbooks/Scripting_your_Delphi_Application.htm
このあたりかニャー
0500470
NGNGprocedure TForm1.Button2Click(Sender: TObject);
begin
Caption := ScriptControl1.Eval(Memo1.Text);
end;
アプリケーションをコントロールさせたり、
例えば自前のオブジェクトをコントロールさせたりするには、
やっぱり >>496を実践しなきゃいけないようです。
http://www.delphidevelopers.com/learnbooks/Scripting_your_Delphi_Application.htm
↑では「新規作成のActiveXウィザード使えば簡単ヨー」なんて言ってますが、
俺はDel6Personal使いです。そんなメニューありません。
_| ̄|○ < IDispatch自力実装? なんか、ムチャっぽいすよ・・・ COMスレ見てると。
0501デフォルトの名無しさん
NGNG無ければ作れ。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGWizard がない。ってことがあれだな。
誰かに雛形ソースを作ってもらって後は手でメンテナンスかな?
手元に Personal 版がないのでどこまでやってあげればいいのかわからない。
0504490
NGNGhttp://www.wwlnk.com/boheme/delphi/techdoc/dad0030.html
なんか参考にして作ってみた。
ComObjユニットにあるTAutoObjectっていうクラスが、あらかじめIDispatchを実装しているらすぃ。
なので、TAutoObjectと、自分が実装したい機能を持ったインターフェースをくっつけて、
新しいクラスを作ればとりあえずOK?みたいな?
uses にComObjを追加
IExposingObjectsDemo = interface
function Get_Age: Integer;
function Get_Name: OleVariant;
procedure Set_Age(Value: Integer);
procedure Set_Name(Value: OleVariant);
end;
TExposingObjectsDemo = class(TAutoObject, IExposingObjectsDemo)
function Get_Age: Integer;
function Get_Name: OleVariant;
procedure Set_Age(Value: Integer);
procedure Set_Name(Value: OleVariant);
end;
続く・・
0505490
NGNGで、あとは>>499に書いてあるのを多少自分の環境にあうように改変して実行!!
→エラー:
TExposingObjectsDemo クラスの オブジェクトファクトリがありません
(・∀・) ダメポ!!
むずかしいなあ・・・それにしても、COMってググりづらくねえすか?
>>501
それかっこいいよ。アッツいよ。
最終目標はそういうコンポの作成だな。
>>502
Apolloいじってみた。
すげーよ!まさにコレやりたかったんだよぅ。
Apolloのソースで勉強するかぁ
>>503
ええ、動くソースさえあれば、壊しながら勉強しますとも
サンプルくれるの? (゚-゚ ) ←期待でいっぱいの目
0506デフォルトの名無しさん
NGNGまず、タイプライブラリが必要
ほら、ActiveXを読み込むと xxx_TLB.pas が出来るでしょ?アレ。 アレを真似する。
interfaceで公開したいのと同じ名前の dispinterface を作る。で、それに dispid を付けてゆく。
これが無いと、外部からメソッド名が判らないでしょ?
あと、メソッドはsafecallにするのと GUIDを付ける GUIDはinterfaceと dispinterface で同じにする
>>505
>ExposingObjectsDemo クラスの オブジェクトファクトリがありません
initialization
TAutoObjectFactory.Create(ComServer, TExposingObjectsDemo, CLASS_xx, ciInternal);
なんてのを書けってエラーだと思うよ
http://www.wwlnk.com/boheme/delphi/techdoc/dad0080.html
ここの サーバーアプリケーションのコード を参考に
0507デフォルトの名無しさん
NGNGxxx.com に引っかかる。って話かな?
.net も検索しづらいし。キャッチーな宣伝文句だったんだろうけど。
0508デフォルトの名無しさん
NGNG>>501の方向がやりたいなら、TAutoObjectを使わず IDispatchを自前でサポートする必要があると思うぞ
0509デフォルトの名無しさん
NGNGCOMは一般的な単語のため検索には使われません。
と言う恐ろしいwarningを出してくれる。
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG普通のプログラムはちゃんとデバッグできるんですが
マルチスレッドのプログラムをデバッグしようとして、「カーソルの位置まで実行」などで
ブレークポイントで停止させると delphi自体がハングアップして
デバッグできないのですが
マルチスレッドのプログラムはデバッグ不可能なのでしょうか。
0512デフォルトの名無しさん
NGNGDel6でやってましたが止めてるスレッド以外は動いてたりして結局ややこしくなります。
0513デフォルトの名無しさん
NGNGネットでの検索をしにくくして書籍を買わそうという魂胆
とか言ってみる
0514511
NGNGやっぱりスレッドのデバッグは、ムリみたいですね。
(ブレークポイントで停止しても、delphi自体がハングします)
そこで一時的にスレッドのユニットをシングルのユニットにしたら、
ちゃんとデバッグできました。
そうするとスレッドのユニットにはあまり複雑な処理を記述せず、
ほとんどのロジックを普通のユニットとして作成して
スレッドのユニットはそれらのユニットを呼び出すだけの処理に
する必要がありますね。
0515デフォルトの名無しさん
NGNGひょっとしてDirectX使ってたりしてる?
0516デフォルトの名無しさん
NGNGどうなんでしょう
0517514
NGNGDirectXは使ってません。
pradoxのデータベースを使っています。
osはXPを使ってます。
原因は結局、0での割り算だったんですが、マルチスレッドのままで
デバッグしようとすると、ブレークポイントで停止しても、delphiがハングアップして
しまいます。そして、普通アプリがハングしてもXP自体の再立ち上げは不要なんですが
このdelphiのハングアップの場合は、もう一切の操作をXPが受付なくなります。
再立ち上げしか方法がない、でもアプリでこんな目に会ったのは何年もXP使っているけど
初めてです。
また何回かはブレークポイントで停止し、ハングするのが一定の箇所でなかったため
マルチスレッドのままデバッグしようとしてまる2日も原因究明にかかりました。
(疲れた)
0518デフォルトの名無しさん
NGNGテストはやめですか?
0519デフォルトの名無しさん
NGNGFAQ
詳細なテキストサービスをオフに汁
0520デフォルトの名無しさん
NGNGて言うかスレッドで発生する未キャッチの例外ってたまに通知してくれない気がする。
0521デフォルトの名無しさん
NGNG[Windows] + [M]ですべてのウインドウを最小化できると思いますが、
それによって発生するイベントというのが見つかりません。
お心あたりないでしょうか?代替手段でもOKです。
Application.OnMinimize
FormのWM_SYSCOMMANDのSC_MINIMIZEをキャッチ
ではダメでした。
0522デフォルトの名無しさん
NGNGこれそのままではヤヴァイので、最小化して良いウィンドウか判別しなければならないが。
0523デフォルトの名無しさん
NGNGタスクバー(appbar)的なプログラムをDelphiで書いていて、ユーザが[Win] + [M]を押しても
巻き添えにならない方法を探しているんです。
0524デフォルトの名無しさん
NGNGそれに「クイック起動」にある「デスクトップの表示」の中身を書き込んで、
ShellExecuteで実行すれば実現できるけど、
これでは不満なんだろ?
0525デフォルトの名無しさん
NGNGAppBar にするとよいのでは。参考になると思ふ。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=051302
0526デフォルトの名無しさん
NGNGappbarにはしてます。
でもアレってTApplication.Handleを設定するのが筋っぽいですよね。
で、このリンクだと思うのでちょっと呼んでみます。
0527デフォルトの名無しさん
NGNG釣りと思いつつ、そんなことやっていたら、Winではなくなるだろうが。
変なの
0528デフォルトの名無しさん
NGNG多くのランチャはタスクバーからの整列や最小化などには追随しないようにできている。
ちゃんとした Windows の作法がある。それが AppBar アプリ。
0529デフォルトの名無しさん
NGNGタスクバーはWindowsアプリではないってこったな。タダのcoolbarなんだけれど。
0530デフォルトの名無しさん
NGNGバカヤロ。
0531デフォルトの名無しさん
NGNGいくつかの優秀なグラフィックソフトやオーディオシーケンサを否定する発言ですね。
0532デフォルトの名無しさん
NGNGまあ、代え難い実績があるアプリは例外だろう。
0533デフォルトの名無しさん
NGNG君は集合論や論理学の初歩をしらないの。
ある機能を実現する正式な方法ある、と主張しているのが 528 だろ。
それ以外の方法では駄目とはいってないだろ?
0534デフォルトの名無しさん
NGNG自分を正当化するのに多大な労力をかけるより、素直に引っ込むなり謝るなりした方が
コストパフォーマンスは高いと思うが。
0535デフォルトの名無しさん
NGNG自己レスですか?
0536デフォルトの名無しさん
NGNGDelphi でランチャつくってはダメってことなんだろうか?
0537デフォルトの名無しさん
NGNGそうだよ。お前はMACにでも逝けば?
何、おまけにdelで作ってる?言語道断だな!
0538デフォルトの名無しさん
NGNGそうだよ、ってことはやはりイタイ人だと自覚してるんだね。
MAC だとDelphiでランチャつくれるの?
0539デフォルトの名無しさん
NGNG只で使えるもので十分だし。済みませんでした。
0540デフォルトの名無しさん
NGNGMAC は友人が使っているとき画面を見たことがある程度です。
MAC 上ではメジャーなプログラミングツールは何ですか。言語はどの系統ですか。
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGありがとう。ちょっと興味がでてきました。539によるとタダでついてくるんだよね。
0543デフォルトの名無しさん
NGNG使えないとか言うよな。
インタフェースビルダーくらいは憑いて来るが、がんばれよ。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGAppleScriptとOSXのgcc・・・?
で、なんの話だっけ?
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGアルゴリズムは十分移植可能なので。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNGそう言う変な動きに対しての気遣いが少なくて済む。
メイン画面はDCが一枚あればいいので大して難易度は上がりません。
0551デフォルトの名無しさん
NGNG>>521
WM_WINDOWPOSCHANGING見れ。
Win+M, +Dは最小化ではなくて画面外にウィンドウを移動させてる。
0552デフォルトの名無しさん
NGNGありがたいです。
しかしながら、挫折して云年、久々に触るVC++はなんともわかりやすく、コレで一度戦ってみようと思います。
ダイアログベースにするだけでCTRL + M対策ができたりとか素直なので。
画面外に移動は良いんですがタスクバーのボタンで元の位置に戻るってのはWindowsさんが
親切でやってくれるんでしょうか。
0553デフォルトの名無しさん
NGNGイベントは取れるようになりましたがWin+Mに対して踏みとどまれません。
LParamのポインタに対してごにょごにょしたりMoveWindowを呼んでも消えてなくなりやがります。
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGデータベースを使わなきゃ仕事にならないおいらとしては
VC++の方が効率がいいなどということは有り得ないわけで…
0556デフォルトの名無しさん
NGNGDBクライアントのフロントエンドなら、Delphiは便利かもね。でもそれ専用の
ツクールアプリみたいなのもあるんじゃないの?知らないけど。
0557デフォルトの名無しさん
NGNG知り合いの会社はAccessを使ってるらしいよ。
UIの自由度やら配布のしやすさを考えるとDelphiの方に分があるのは明らかなんだけどね。
大きな会社ほどM$製じゃなきゃ駄目なんだと思うと少し気の毒な気もする。
VS.NETでもあんまり状況は良くなってないし…
(DB用の部品を「買えば」いいらしいけど)
0558デフォルトの名無しさん
NGNGいや、それで間に合ってるんならそれでいいのでは?
なぜ気の毒になるのか分かりません。ごちゃごちゃプログラムつくらなくても
既製品で間に合うなら、それでいいのでは?
> UIの自由度やら配布のしやすさを考えるとDelphiの方に分があるのは明らかなんだけどね。
「UIの自由度やら配布のしやすさ」より優先すべき重要なことがあるんだね、きっと。
0559デフォルトの名無しさん
NGNG大きな会社->設計フェーズでぐいぐい意見を通すことができる->自社のデファクトスタンダードを採用。
小さな会社->大きな会社からの仕様書->いろんなOSなりアプリ。
例えばうちでは独自OSかHP-UX、TurboLinux以外は認められません。
AIXとか口走ったら会社が揺れます。多分。
去年からメーカ系で働いてるけどなんか凄いです。
「せんぱい〜。ここの仕様ってわかりにくくないですか?」
『ああ。適当に解釈して仕様書改訂しといて。』
「(・・・いや、他社が作ってる通信相手どうすんだよ。)」
とか、
「(あ、この通信エラーって俺が悪いんだよな)ああ、仕様の相違がありますね・・・。」
『あ!すぐに直しますんで!!』
「(いや、なんであんたが・・・)お願いします。」
怖いね。力って。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGそしてまだまだ書くことはたくさん。なんとかならんもんか・・・。
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1064424521/
0564デフォルトの名無しさん
NGNG>なぜ気の毒になるのか分かりません。ごちゃごちゃプログラムつくらなくても
>既製品で間に合うなら、それでいいのでは?
全然間に合いません。
結局、VBAで開発するわけです。
0565デフォルトの名無しさん
NGNGいや、だからそれでいいんでは?
0566デフォルトの名無しさん
NGNG「ごちゃごちゃプログラムつく」る必要があると
思いませんか?
0567デフォルトの名無しさん
NGNGどうしてもDelphiでつくりたいならつくればいいんだし。>>557 のように
気の毒に思うのはどうか、ということから始まっているんだよ。
0568デフォルトの名無しさん
NGNG0569↑(´∀`)
NGNGまぁ、他人のコードバカにする暇があったら満足度の高い成果物を作れと。それが正義だ。
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGユーザの多い方が正義だと思いますよ。(藁
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGあぁ、なるほど。ひとりでするアレと同じですね。(藁
0574デフォルトの名無しさん
NGNGvar
BufX,BufY:array[0..16500] of integer;//座標と色を保持した構造体
wRGB:array[0..16500,0..2] of Byte;
0575つづき
NGNGvar
j,i,r,y,x:integer;
v:array[0..2500] of PByteArray;
begin
for j:=0 to (cY2-cY1) do begin
y:=cY1+j;
v[y]:=BmpB.ScanLine[y];//まとめてポインタ先に保持
end;
for i:=0 to m do begin
y:=BufY[i];
x:=BufX[i]*3;//RGB 3バイト単位
// BmpB.Canvas.FillRect(Rect(x,y,2,2));以下相当の処理
for r:=0 to 1 do begin
v[y+r,x ]:=wRGB[i,0];
v[y+r,x+1]:=wRGB[i,1];
v[y+r,x+2]:=wRGB[i,2];
v[y+r,x+3]:=wRGB[i,0];
v[y+r,x+4]:=wRGB[i,1];
v[y+r,x+5]:=wRGB[i,2];
end;
end;
end;
0576デフォルトの名無しさん
NGNGMMXでなくとも
折角2ピクセル毎に塗ってるんだから、4ピクセル一度に塗ったら?
つまり 3ワード分一度に塗るように変更すれば 3/12 =1/4になるよ・・・・
・・・・塗る場所が広いと結局メモリアクセスに引っ張られて変わらんのだよね
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG0580ななしへたぐらま ◆XcB18Bks.Y
NGNGループの中で2次元配列の同じ要素へ[]を使って何度もアクセスするのをやめてポインタを使うようにしたり,
ピクセルをRGB個別ではなく一括で転送すれば多少は速度が上がるようです(一応実験しました).
今回のコードをCPUウィンドウをのぞいてみたら
1バイトを転送するための処理が非常に長いばかりか毎回Push/Popしていました.
0581デフォルトの名無しさん
NGNGdelphiの場合、Pentium3やPentium4では、確実に早くなるぞ。
なぜかというと、P3以後ではフェッチされるバス幅、
および、ライトコンバイニングバッファが32ビット(=4バイト)ではなく、
32バイト単位(P4では64バイト)なので、使用するデータ幅が大きいほど、
バス効率が上がるから、CPUのロードバッファ、ストアバッファの負担が下がる為。
P4以後でSSE2命令のレイテンシがMMX命令より悪くても、
MMXより高速化できる場合があるのはこの為。
プリフェッチもひとつの手段だが、CPUごとにプリフェッチの時間距離計算を
変える必要が出たり、色々不定要素が絡むので難しいぞ。
0582デフォルトの名無しさん
NGNGふむ、わしには理解できぬ
0583デフォルトの名無しさん
NGNGよく読んでやれよ
塗る場所が広ければと書いてる つまりはキャッシュが溢れたら メモリ書込速度のみに調速される。
それから、 プリフェッチについては >>578
0584デフォルトの名無しさん
NGNG一バイトずつ書き込んだら一バイトずつ物理メモリに書き込まれる?
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNGDX > 0
DY > 0
DX > DY
のとき、ループを使わないで C を求めたいのですけれど、どうすればいいのでしょうか?
var
Y, C, DX, DY, S: Integer;
begin
C := 0;
Y := -34;
DX := 1252;
DY := 92;
S := DX shr 1;
while True do
begin
Inc(C);
Dec(S, DY);
if S < 0 then
begin
Inc(S, DX);
Inc(Y);
if Y >= 0 then Break;
end;
end;
end;
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGC := Trunc(DX / DY * -Y);
S := S + -DY * C + DX * (-Y);
これじゃだめです。
0590ななしへたぐらま ◆XcB18Bks.Y
NGNG0591587
NGNG本当はSを求めたいのです。
if の中は -Y回実行されるので、S に DX * (-Y1) が追加されます。
後は Dec(S, DY) が何回実行されるか解れば、Sが求まります。
つまり、S := S + -DY * C + DX * (-Y); になる
C にはループの実行された回数が入ります。
0592デフォルトの名無しさん
NGNGCがc番目ならYがy番目
S = (DX shr 1) + y*DX - c*DY ; if S<0 then inc(y)
最終的に
S =(DX shr 1) -Y*DX - C*DY
Sは必ず正 S>=0 で c=(DX shr 1) div DX まではyは変化しない
それ以上になるとおよそ y:c = DY:DX
これを S=0で解いてから、整数関係を調整したら?
0593587
NGNGそのやり方は理解できませんでした。
で、結局591を手直ししてできました。
C = ループ回数
DX * (-Y - 1) = 最後のifブロック実行前のSの増加分
DY * C = 最後のifブロック実行前のSの減少分
S + DX * (-Y - 1) - DY * C < 0
C > (S + DX * (-Y - 1)) / DY
を満たす、最小の正の整数 C を求める。
(S + DX * (-Y - 1)) を A に置き換えると、
C > A / DY になる。
C := A div DY + 1;
となるので、
C := (S + DX * (-Y - 1)) div DY + 1;
0594587
NGNGこんどはループの回数が決まっている場合です。
Sの初期値 >= 0
DX >= DY > 0 のとき
ループを使わずに S の値を求めたいのですが、どうすればいいのでしょうか?
for I := 0 to C - 1 do
begin
Dec(S, DY);
if S < 0 then Inc(S, DX);
end;
ループを展開すると、
Dec(S, DY);
if S < 0 then Inc(S, DX);
Dec(S, DY);
if S < 0 then Inc(S, DX);
Dec(S, DY);
if S < 0 then Inc(S, DX);
...
C回繰り返す。
になります。
0595デフォルトの名無しさん
NGNGfunction hoge(C,DX,DY: Integer):Integer;
var
p,r: Integer;
begin
Result := S;
r := C;
if r = 0 then exit;
Dec(Result,DY);
Dec(r);
p := Result div (DX
if p = 0 then
Dec(Result,DY*
else
begin
Dec(Result,(D
Dec(Result,DY*(r
end;
end;
0596デフォルトの名無しさん
NGNGヴァカ?
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG文字化け?
0599デフォルトの名無しさん
NGNG0600594
NGNG(DX や DY* の意味が解らなくてすみません。
for I := 0 to C - 1 do
begin
Dec(S, DY);
if S < 0 then Inc(S, DX);
end;
↓
for I := 0 to C - 1 do
Dec(S, DY);
for I := 0 to C - 1 do
if S < 0 then Inc(S, DX);
が言えたらいいのですけど。
if S < 0 then が無ければ分割できるのですけど。
for I := 0 to C - 1 do
begin
Dec(S, DY);
Inc(S, DX);
end;
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGS0 を初期値
K[0]:=0;
for i=1 to C do begin
if S0 - i*DY + K[i-1]*DX < 0 then K[i]:=K[i-1]+1 else K[i]:=K[i-1] ;
S[i] := S0 - i*DY + K[i]*DX
end;
S[c] := S0 - c*DY + K[c]*DX
もし S0>c*DY なら K[c]:=0
そうでなければ、
0=< S[c] <DX
0603デフォルトの名無しさん
NGNGCursorTypeなどのパラメータを変更してみたんですがどうにも改善せず、しかたな
いので現在は生のRecordsetを操作するようにしています。
スピードを比較したところ、TADODataSet.NextはRecordset.MoveNextに比べて
100倍時間が掛かっていました。
これはこういう物なんでしょうか?
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNGVC++のように、リリースビルドとデバッグビルドを一気に生成する方法ってないのですか?
リリースチェック時とかにバグが見つかったりするたびに、オプション変更してコンパイルしなおすのが面倒です。
できれば、VCみたく、Release, Debugのように別フォルダにdcu/exe作ってくれるようにしたいのですが...
IDE使わずに、makeでも使えばできるのでしょうか??
皆さんどうされてます?
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNGhttp://www.atozedsoftware.com/finalbuilder/
0608デフォルトの名無しさん
NGNGあるいはhoge.dprをフォルダ掘ってコピーを作っておいて、そのコンパイルオプションを別にするとか
0609デフォルトの名無しさん
NGNG126 名前:デフォルトの名無しさん :04/04/17 16:16
これは明らかにDelphi対抗だ!!
0610デフォルトの名無しさん
NGNGIDEではできない。
makeかなんか使うしかない。
wantってのもある。
俺はantを使ってる。
0611605
NGNGそうですか、やはりmake/antですか...
特別IDEが好きだってわけじゃないですが、ちょっとばかり残念です。
業務で使ってると、
Debug/Releaseの話と、日本語DLLウィザードの使えなさ加減(*)は気になります。
もうちょっとなんとかしてほしいなぁ。
(*:日本語版だと謎のエラーが出るとか、
バイナリの出力パスに相対指定使っただけで、exe参照できないとか..
こいつもも、コマンドラインから指定できるのかな?
ついでに一緒に調べてみるかな..)
ほんと、Delphi自体はかなり好きなんですけどねぇ...
0612デフォルトの名無しさん
NGNGそれは D7 以降は仕様。D6 以前はバグ。細かく話すときりが無いが
生成された .RC に codepage(932) の一行を入れればコンパイルできると思うぞ
0613605
NGNGhttp://www.dummzeuch.de/delphi/delphi_make/deutsch.html
http://www.sdgn.nl/Default.asp?A1PID=57PDGUH&A1SID=510423200447&URL=515PSXX
しかたがないので、とりあえず英訳サイトで英語に変換して、ちらちら読んでますが。
>>612
レスどうも。そうなんですか。
私の場合は、D7で、とりあえずコンパイルは通ってるんですけど、
ウィザード君が一発で終わらないのです。
0614デフォルトの名無しさん
NGNGどんな形でもいいからレポートしていかないと、結局何時までたっても直らないぞ。
0615デフォルトの名無しさん
NGNGなんてエラーメッセージ?
0616デフォルトの名無しさん
NGNGフィルタHit全件Deleteしているんだけど、2回目以降フィルタ前後で件数が
合わない... そもそも2回目以降フィルタHit0件なのはナゼ... orz
初回Delete件数以上いなくなってしまったオレは人望なさすぎですか?(w
後で再現コード晒します。
0617デフォルトの名無しさん
NGNG各種バージョン情報もよろしく。
0618デフォルトの名無しさん
NGNGttp://www.dow.wau.nl/aew/DelForExp.html
日本語環境でフォームの大きさがくずれるので、Del7でビルドしようと思ったのですが、
ExpIntf.pasが見つからないって言われ、Buildできません。
これって、標準のモジュールなんでしょうか。
Del用ウィザード作るのに使うやつみたいなので、当然Borland謹製のものだと思うんですが...
0619デフォルトの名無しさん
NGNG>New: DelForExp now supports Delphi 7
と出ているが?
0620デフォルトの名無しさん
NGNGsource\toolsapi\ExptIntf.pas が見つからないかな?
ホントに ExpIntf.pas て中江だとするとわからない。
0621618
NGNGあれ、うちではみつかりません。
あれ、D7Proをデフォルトインスコなんですが、
標準では入らないのかなぁ。
V:\usr\delphi7\Source\ToolsAPI のディレクトリ
2002/09/06 16:00 7,363 ClxDesignWindows.pas
2002/09/06 16:00 24,764 ClxEditors.pas
2002/09/06 16:00 7,904 ClxSprigs.pas
2002/09/06 16:00 1,949 DesignConst.pas
2002/09/06 16:00 90,411 DesignEditors.pas
2002/09/06 16:00 48,713 DesignIntf.pas
2002/09/06 16:00 5,057 DesignMenus.pas
2002/09/06 16:00 6,460 DesignWindows.pas
2002/09/06 16:00 14,609 PropertyCategories.pas
2002/09/06 16:00 164,917 ToolsAPI.pas
2002/09/06 16:00 70,674 TreeIntf.pas
2002/09/06 16:00 45,121 VCLEditors.pas
2002/09/06 16:00 7,812 VCLSprigs.pas
2002/09/06 16:00 3,539 VcsIntf.pas
んー。
0622デフォルトの名無しさん
NGNG用途はシリアルポートによるレシートプリンタ出力です。
いままでDel3などでdukeさんのTComm使っていたんですが
Del5では使えないようなのです。
0623デフォルトの名無しさん
NGNGD7 Pro には無いね。なんでこれを抜いたんだろう..
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGhttp://sourceforge.net/projects/comport/
これどうよ? Del3〜7、BCB3〜6対応
0626デフォルトの名無しさん
NGNGちょっと質問聞いてください。
最近Delphi8を買ったんですけど、一緒についてきたDelphi7の意味がさっぱり
分からずに困ってるんですよ。
なんかDelphi8を構成するために必要ですとか書いてあったんだけど
Delphi8だけインストールできたし、起動も出来たし、
いったい何のために有るのか知りませんか?
0627デフォルトの名無しさん
NGNGDelphi8の一部を構成するために必要ならDelphi7を共存させないといけない
じゃないですか。
どうなんでしょうかそこのところは。
誰か教えてください。まじ困ってますtt
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGDelphi7 → for Win32
全く別物。知らないで買ったのなら、驚異。呆然。
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNGいや知らないわけではないんですけど。
都合上最新モデルでプログラムを改良せよとの命令が下りましてねt
で、どうなんでしょう?共存させちゃっていいんでしょうか?
0633デフォルトの名無しさん
NGNG普通のWin32用のプログラムが作りたきゃDelphi7つかえってことですかい?
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGなったんだけど、Delphi7とDelphi8か・・・。
まぁ今から共存させてみるよ
0636デフォルトの名無しさん
NGNG>なったんだけど
おまえだけ。
0637デフォルトの名無しさん
NGNGわっけわかんなくなったんでアンインストールしたよtt
0638デフォルトの名無しさん
NGNGかぶらないけど?
ディレクトリもレジストリも別だし。
.pas を開くときにどちらになるか。ってのがあるけど、これは拡張子関連付けの問題だから
しょうがないし
0639デフォルトの名無しさん
NGNG・・・・・OTLw
0640デフォルトの名無しさん
NGNGD5, D6, D7, D8 と4世代同居しているけど問題ない。
0641デフォルトの名無しさん
NGNGありがとーね。
0642デフォルトの名無しさん
NGNG異なるバージョンの Delphi が共存できない。と騒ぐ人がいて、症状を聞いてみたら
C: のルートにインストールしていた。というのがありました。
c:\bin\Delphi32.exe
って感じ。そんなディレクトリ選ばれちゃ、さすがにどうしようもないが。
世の中にはいろんな人がいる。ということで。
0643デフォルトの名無しさん
NGNGほんとだね。Delphi に限らないけど、いろんな書き込みの内容を読むとしみじみ
そう思うね。個人的には、Delphi8 を買う人がいるってのが(略
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG影響を受けないで、DateTime型に変数を入れる方法を教えて下さい。
0647デフォルトの名無しさん
NGNG1/2/3 を 2001年2月3日と見るか、2003年1月2日とするかはプログラマーであるあなたが決めること。
0648デフォルトの名無しさん
NGNG>1/2/3 を 2003年1月2日
と決めた場合、
Windowsのロケールに影響受けない、StrToDateTimeはありまつか?
0649デフォルトの名無しさん
NGNGStrToDateTime の第二引数に 'yy/mm/dd' と指定するか、
自分でパースしてから EncodeDate でしょうか
0650デフォルトの名無しさん
NGNG第二引数ってありましたっけ?
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG本当ですね、D7はオーバーロードしてますね。
BCB6には無い...
0653デフォルトの名無しさん
NGNGじゃねえよ、アホ
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG逆ならValというのを見つけたのですが。
0656デフォルトの名無しさん
NGNGSystemにStr手続きがあります。
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNGだれかNullの代わりになるもの教えてくれない?
ひょっとして「''」とか?
0661デフォルトの名無しさん
NGNGUnAss(ry
0662デフォルトの名無しさん
NGNGもっと詳しく!!お願い!!
0663デフォルトの名無しさん
NGNGT・H・X !
0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGアプリ起動時にGetCurrentDirをやるとアプリパスが帰ってきますが、
TOpenDialogの初期パスはどんなアプリでも共通のパスを開くようです。
一度OpenDialogで選択すれば、カレントパスもそこに移動するようですが・・・。
この共通のパスの取得方法ってなんかありますか?
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNGttp://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp
lpstrInitialDir の解説をよみな。
0670デフォルトの名無しさん
NGNGttp://www.microsoft.com/japan/developer/windows2000/technologies/ac-win2kcompat/ac-win32apichanges.asp
の lpstrInitialDir かな?
0671デフォルトの名無しさん
NGNGWin2000以降に限定された話になりますが、InitialDirにNullが入っていた場合、
現在のディレクトリをみて、フィルタに指定されたファイルがあればそこを、
なければマイドキュメントを開く、という動作をすると読みました。あってますか?
この時の「現在のディレクトリ」というのが問題で、普通にGetCurrentDirをすると
アプリパスが取得されるわけですが、実際に初めてOpenDialogを開いた場合などは、
他のアプリのダイアログで開いたパスが開かれるわけです。
「現在のディレクトリ」というものに、アプリごとのものと共通のものが在るのか?
また共通のがあるのなら、その取得方法は?というのが疑問です。
0672デフォルトの名無しさん
NGNGvideo for windowsの定義:
function AVIMakeCompressedStream(
var ppsCompressed : PAVISTREAM;
ppsSource : PAVISTREAM;
lpOptions : PAVICOMPRESSOPTIONS;
pclsidHandler : PCLSID
): HResult; stdcall; external AVIFILDLL;
呼び出し:
SourceStream, DestStream: PAVIStream;
opt: TAVICOMPRESSOPTIONS;
if AVIMakeCompressedStream(DestStream, SourceStream, @opt, nil) <> AVIERR_OK then exit;
手本にしたCソース:
AVICOMPRESSOPTIONS opt;
PAVISTREAM pstm,ptmp;
if (AVIMakeCompressedStream(&ptmp,pstm,&opt,NULL)!=AVIERR_OK) return 0;
-----
DelphiからのAVIMakeCompressedStream関数の呼び出しが実行時にエラーに
なるんですが、どうしてでしょう? 最初の引数に問題があると思うんですが?
ちなみに、以下のページで何か言ってるようだけど、英語わからん。
ttp://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_10246460.html
よろしくお願いします。
0673自己レス
NGNG何でか分からないが、キャストする必要があるみたいだった。
AVIMakeCompressedStream(DestStream, SourceStream,
PAVICOMPRESSOPTIONS(@opt), nil)
0674デフォルトの名無しさん
NGNG@opt は PAVICOMPRESSOPTIONS 型じゃないからだろ
0675デフォルトの名無しさん
NGNG0676673
NGNGPAVICOMPRESSOPTIONS = ^TAVICOMPRESSOPTIONS;
TAVICOMPRESSOPTIONS = record
分からないんだけど、型キャストするかどうかで
この場合、渡されるアドレスが変わるの?
0677デフォルトの名無しさん
NGNGデバッグしてみればわかるけど。
以前試した限りではなかった。
0678デフォルトの名無しさん
NGNGまったく関係無い所にバグは潜んでいるのかも…。
0679デフォルトの名無しさん
NGNGTIdMessageをそのままSendするだけでは
Shift Jisのまま送信されてしまうのでしょうか?
0680デフォルトの名無しさん
NGNG0681679
NGNGIdCoderHeader.pas内のEncode2022JPっていう
関数で、エンコードしているっぽいのですが…
メールを受け取る環境によっては文字化けを起こすらしいのです。
原因などわかる方がいらっしゃいましたら教えていただけませんでしょうか?
0682デフォルトの名無しさん
NGNGステップ実行するとどこがバグってるのかよくわかるよ。
勉強だと思って追ってごらん。
0683デフォルトの名無しさん
NGNGTable1->FieldByName("Field1")->AsString
などとして取り出すと、 1000 になってしまいます。
AsInteger や AsVariant で取り出してから変換してもいいんですが、
ビミョーに気持ち悪いので、直接、取り出す方法ないですか?
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686683
NGNG0687デフォルトの名無しさん
NGNGTQuery 使えよって言われそうですが、
すでに Query1 に合計を求めたいレコードが抽出してあるので、
それを利用したいんです。
たとえば
Query1 の SQL : select * from order.db where (いろいろ条件)
の時に、
Query2 の SQL : select sum(price) from order.db where (いろいろ条件)
と書けば目的のことはできるんですが、両方に条件書くのはいかにも
無駄っぽい。
Query1 の結果をテンポラリテーブルに書き出せばいいんでしょうけど、
Query1 を DBGrid に表示させている場合は、別のクエリを用意しなければ
いけないので、それはさらに無駄っぽい。
SumOfPrice := DSum('price',Query1)
みたいなことをしたいんです。
VB にできるんだから、Delphi にできないはずはないと思うんですが・・・。
よろしくお願いします。
0688デフォルトの名無しさん
NGNGtry
s := IdHTTP1.Get(url);
except
on E: EIdHTTPProtocolException do
begin
end;
end;
0689デフォルトの名無しさん
NGNG> VB にできるんだから、Delphi にできないはずはないと思うんですが・・・。
愉快なご意見。
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGbegin
Result := 0;
with AQuery do
begin
Open;
First;
while not Eof do
begin
Result := Result + FieldByName(FieldName).AsInteger;
Next:
end;
end;
0694デフォルトの名無しさん
NGNGクエリで sum を使う方向でしか考えてなかったものですから、
自分で全部足す方法は思いつきませんでした。
0695デフォルトの名無しさん
NGNGhttp://bdn.borland.com/article/0,1410,32337,00.html
でも駄目ぽ(エラーでまくりらしい)
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGそれは素晴らしい。漏れもやってみようかな・・・
0699デフォルトの名無しさん
NGNGD7 初期出荷版だとだめ。
ということだそうだ
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGそりゃバカにしてるな・・・
付属のD7の時点で、一部アップデートされてるって事か?
0702デフォルトの名無しさん
NGNGまぁ、まだ日本ではアナウンスされていないわけだし。
0703デフォルトの名無しさん
NGNGって話じゃなかったっけ?
0704デフォルトの名無しさん
NGNG同じだといっていたのは誰?
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGニュースソースはどこよ?
Updateしてみたが、バージョン上がらないのは確か・・・欝死
0707デフォルトの名無しさん
NGNGバージョン情報は変わらないみたい。
下のスレの821以降参照。
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その12
http://pc5.2ch.net/test/read.cgi/tech/1076095856/
0708デフォルトの名無しさん
NGNGThx!!
0709デフォルトの名無しさん
NGNGD7インスコして環境構築し終わった時点で、D8付属のCDの方は番号が1あがってるのに気づいた。
が、なんか入れなおすのが怖いのとマンドクサイので放置...してたのにーーー。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNGWindowsで扱いやすいものと扱い難いものと2種類あると聞きましたが、
両方扱えますか?
扱うとは、ファイル操作だけでなくて、描画や画像形式変換も含みます。
0713デフォルトの名無しさん
NGNGライブラリが欲しいのか、フォーマットが知りたいのか。
ライブラリが欲しい場合、DLLでいいのかexeにスタティックリンクしたいのか。
0714デフォルトの名無しさん
NGNGYes、Noでつ。
>ライブラリが欲しい場合、DLLでいいのかexeにスタティックリンクしたいのか。
どちらでも良いから欲しいでつ。(スタティックリンクの方が楽は楽ですが)
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG拡張子辞典ばかりひっかかる。
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGそれを見ればとりあえず解決方法はわかる。
また、その中にPICTのフォーマットについてのリンクもある。
もう少し、検索を上手く使えるようになるといいね。
0719デフォルトの名無しさん
NGNG日本語ページの検索だとそうなるけど、その次のサイトが・・・。
0720デフォルトの名無しさん
NGNGオブジェクトモジュールだけのソース無しでした。
使うの怖い。
(コンポーネントはちゃんとしているんでしょうが、将来の話として)
0721デフォルトの名無しさん
NGNG俺もソースなしは気になったので自分で書いた。
これが参考になった。
ttp://www2f.biglobe.ne.jp/~kana/spi_api/spi_api_delphi.html
0722デフォルトの名無しさん
NGNGソースクレクレ
0723デフォルトの名無しさん
NGNG一部抜き出したので、これで勘弁。
procedure TSPI.GetBitmap(ms: TMemoryStream; bm: TBitmap);
var
hBmpInfo, hBitmap: HLOCAL;
pBmpInfo, pBitmap: Pointer;
BmpInfo: PBitmapInfo;
begin
GetPicture(ms.Memory, ms.Size, 1, hBmpInfo, hBitmap, nil, 0);
pBmpInfo := GlobalLock(hBmpInfo);
pBitmap := GlobalLock(hBitmap);
BmpInfo := pBmpInfo;
bm.Width := BmpInfo^.bmiHeader.biWidth;
bm.Height := BmpInfo^.bmiHeader.biHeight;
SetDiBits(bm.Canvas.Handle, bm.Handle, 0, BmpInfo^.bmiHeader.biHeight, pBitmap, BmpInfo^, DIB_RGB_COLORS );
GlobalUnlock(hBmpInfo);
GlobalUnlock(hBitmap);
GlobalFree(hBmpInfo);
GlobalFree(hBitmap);
end;
0724デフォルトの名無しさん
NGNGDelphian Worldにソース付きのがあるじゃん。
Del7のコンパニオンディスクにも入ってた奴。
まあ、俺はそのままでは使いにくかったので、それを参考に自作したけど。
0725デフォルトの名無しさん
NGNG>>724
念のため、コンポ名教えてYO!
0726デフォルトの名無しさん
NGNG「Susie Plug-in 読込コンポとビットマップ」
World行ってspiで検索すれば、それらしいのはひとつしか出てこない。
もう一回言おうか?
もう少し、検索を上手く使えるようになるといいね。
0727デフォルトの名無しさん
NGNGむしろ、ソースが付いていなかったのはどれなのかが知りたくなってきた・・・
0728デフォルトの名無しさん
NGNGま、上記のやつを参考に頑張ってみておくれ。
0729デフォルトの名無しさん
NGNGそれともDelphiが賢い?
とりあえず、勉強になった。
0730デフォルトの名無しさん
NGNGそこでデルがインストールされた自分のノートPCで仕事中に勝手に(指示なく)
業務用プログラムを書いた。
私は「著作権は私が保有する。しかし会社には自由に使用する権利を与える」とした。
これに対し会社は「仕事中に作ったのなら著作権は会社のもの」と主張。
しかし、開発ツールさえ所有していない会社に著作権が所属してしまうものなのだろうか?
なんか会社の都合のいいことになりそうなんですが。。。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGが正解。あおりじゃなくてね。物と金がなければフリーの使う。
そういうもんだろ。
0733デフォルトの名無しさん
NGNG給与をもらって作ったんだから会社の物では?
0734デフォルトの名無しさん
NGNGデルのライセンス上問題ないんでしょうかね。
0735デフォルトの名無しさん
NGNG著作権法第15条の2
「法人その他使用者の発意に基づきその法人等の業務に従事する者が職務上作成するプログラムの著作物の著作者は、その作成の時における契約、勤務規則その他に別段の定めがない限り、その法人とする」
0736デフォルトの名無しさん
NGNG時間をもらっているんでしょ。
その場合は著作権は主張できないよ。
あまりごねると別の人にCかJAVAでつくらせて
左遷かくびになるんじゃない。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGプラグインのインターフェースが良いわけでもDelphiが賢いわけでもない。
DelphiでDLLを利用する、それだけの話。
0739ななしへたぐらま ◆XcB18Bks.Y
NGNG0740デフォルトの名無しさん
NGNG流れ読んでね。
0741デフォルトの名無しさん
NGNG作成したいのですが、なにかライブラリとかコンポとか簡単な実現方法は
ありますか?
あと参考になるサイトがあれば是非教えてください。
0742デフォルトの名無しさん
NGNG素直に会社に明け渡す事にします。
0743デフォルトの名無しさん
NGNGこれだと、中身がビットマップのPICTしかサポートできない。
712は扱いやすい物と扱いにくい物の両方が可能か聞いているが、これは前者のみ。
本来PICTはWindowsのWMFに相当するフォーマットで、QuickDraw(Win32のGDIに相当)描画命令全般bフ記録ができる=B
所がMacにはBMPに対応するフォーマットが無いので、ビットマップ画像もPICTを使って保存されている。
Susieは前者しかサポートしていない。
もしもすべてのPICTのサポートが必要であれば、QuickTimeのイメージインポーターに対応するのが確実。
これはAppleが作っていて、QuickDrawの命令をフルサポートしている。
ヘッダは下記から取得できる。
ttp://www.delphi-jedi.org/TEAM_QTM_HOME:347231
0744Delフサギコ ◆A6VzDeLphI
NGNG⊂,,,,,,,,,つ,,゚Д゚ミつ ウダウダいう会社には
正直、委託ない。
0745デフォルトの名無しさん
NGNG最近のログが検索できないんですが、
ほかにメーリングリストの過去ログ
検索できるサイトないですか?
0746デフォルトの名無しさん
NGNG模様。あと少しで追加されるんじゃないかな。ありがたや。
ほかにはない、と思うよ。
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNG>>730 がいなくなったら誰が保守するんだ ?
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG見積書を作ろうと思い、TLRGridPanel に LRItemR を貼り付けて、
Aligh = alClient
LineBottom = lsSingle
LineLeft = lsSingle
LineRight = lsSingle
LineTop = lsSingle
としました。
しかしこれだと、スキマがあいてしまって、二重線で書いたように
なってしまいます。
どこか間違ってますでしょうか?
よろしくお願いしますでつ。
0752デフォルトの名無しさん
NGNG0753訂正
NGNG0754デフォルトの名無しさん
NGNGwhile not Game.Finished do
begin
Player := Players[Turn];
Player.Think;
ShowGame;
Turn := GetNextTurn(Turn);
end;
のようなゲームのメインルーチンがあったとします。
この形を崩さずにイベントドリブンなアプリに組み込むにはどうすればいいですか?
いろんなところでApplication.ProcessMessageばら撒いておけばよさそうですが
もっと賢い方法がないですかね。
0755デフォルトの名無しさん
NGNGなにをもって「賢い」とするかで意見がわかれるな
0756デフォルトの名無しさん
NGNGお前が無能なのはわかったからだまっとけ
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGほかをメインループにしたいなら、メッセージループの代わりをさせる。
そうでなきゃ、メッセージループにそれを組み込む。
Delphi では、TApplication を継承できないので、前者しかない。
0759デフォルトの名無しさん
NGNG別にPlayerに代入する必要なくないか?
0760デフォルトの名無しさん
NGNG>JQTFileDialog1.execute;
がダンマリでつ。
同様のライブラリを使ったことある方居られますか?
Apple提供のライブラリが動作しないと困りますね。
0761760
NGNGQuickTime Header Conversion Project
ttp://www.delphi-jedi.org/TEAM_QTM_HOME
0762760
NGNGファイル選択ダイアログが動作したけど、
画像描画は別というかデモに無さそうですね。
0763760
NGNGQuickTimeランタイムを配布して良いのだろうか...
0764デフォルトの名無しさん
NGNG配布しちゃダメだと思う。
つーか、それ以上はスレ違いになりそうな予感。
流れを読む以前にスレをよく読んでいなかったようで…_| ̄|○…失礼しました.
ところでエンプラ以外で英語環境でも動くアプリを作る場合,どうすればいいのでしょうか.
うちのD5ProにあるリソースDLLウィザードはいまいちよくわかりません.
(ウィザードがはき出したRCファイルはコンパイルしようとするとエラーになりました)
これを使わないとなると
自分で日本語と英語の文字列リソースからリソースDLLを作って
私の頭では実行時に必要な方を読み込む方法ぐらいしか思い浮かびませんでしたが,
私のウィザードの使い方が悪いのでしょうか.またもっとスマートな解決方法はありますでしょうか.
一部の日本語文字列が(なぜか変換できない)のと
ウィザードがはき出すリソースDLLのプロジェクトファイルが
リソース行をだぶって書き出してしまっているようですが,
前者は該当行を英文に書き換えることで(それが目的なのですが),
後者はだぶった行を削除することでとりあえず動作しました.
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG通常のアプリでは正常に動きますが、ActiveXFormだと正常に動きません。
procedure TActiveFormX.Start; //HTML側で呼び出しています。
begin
DefButtonWndProc := Button2.WindowProc;
Button2.WindowProc := ButtonWndProc;
end;
procedure TActiveFormX.ButtonWndProc(var Msg:TMessage);
begin
if Msg.Msg = CN_KEYDOWN then begin
case Msg.WParam of
VK_DOWN: begin PostMessage(0, WM_KEYDOWN, VK_TAB, 0); Exit; end;
end;
end;
DefWndProc(Msg);
end;
なんか別のイベントがあるのでしょうか?教えてください
Win2K IE5.5Sp2 Delphi7Pro
0769768
NGNGWM_KEYDOWNでもダメ何でだろう。
普通のキー(aやbなど)ではいいみたいなのに・・・
実際、矢印キーでTABSTOPがFalseの奴までフォーカスが逝ってしまうので
それを制御するようなコンポーネントを作成中なのですが
if Msg.WParam = VK_DOWN then Exit;
見たいにしても、フォーカスが移っていく不思議。
0770デフォルトの名無しさん
NGNG行われるので、アクティブフォームの場合はしらないけど、普通のアプリでは、
Application.OnMessage でキー入力をトラップして制御できるよ。
0771デフォルトの名無しさん
NGNGボタンコントロールは矢印キーを受け取らないので、代わりにフォーム側で
CM_DIALOGKEY を捕まえたらどう?
カスタムコンポーネントで矢印キーを受け取りたい場合は WM_GETDLGCODE を
捕まえて、Result に DLGC_WANTARROWS を追加してやる必要がある。
フォーカスの移動も PostMessage を使うと割り込みが入る可能性があるので、
該当コントロールの親の FindNextControl で次のコントロールを特定して、
フォームの FocusControl を呼ぶ方がいいと思う。
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNGが送られてくるの? どうして?
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG0779768
NGNG>捕まえて、Result に DLGC_WANTARROWS を追加してやる必要がある。
でうまく動くようになりました。
PostMessageはコンポーネントのさいは使ってませんでしたので、気づかいありがとうございます。
みなさん勉強になりました。本当にありがとうございました。またよろしくお願いします
0780デフォルトの名無しさん
NGNGアニメーションを変更するにはどうすれば良いのでしょうか?
インストールしておけば、自分のアプリだけでなく
何処から呼び出されても変更された状態であってほしいのですが。
0781デフォルトの名無しさん
NGNGshell32.dll の中にあるけど、これを変更するのはやめるべきだと思う。
というか何のためにそうしたいの?
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGしたんだけど、Borlandの教え通りClientDataSet.ApplyUpdates(0);
を呼んでもデータが書き込まれなかった。なぜでしょう?誰か教えて
ください。
0784デフォルトの名無しさん
NGNG追記
ベンダーはInterBase7 Delphi8 Ent
ソースは
if CDS_CustomerMemo.ChangeCount > 0 then
begin
if CDS_CustomerMemo.Active then
CDS_CustomerMemo.CheckBrowseMode;
CDS_CustomerMemo.ApplyUpdates(0);
SQRY_CustomerMemo.Close;
SQRY_CustomerMemo.Open;
CDS_CustomerMemo.Active := False;
CDS_CustomerMemo.Active := True;
end;
に書いてみました。
ちなみに BLOB SubType Text は書き込めるのかなぁ〜?
おっと、「〜」はFireBirdでうまく書き込めないみたい?
hさんガンバレ〜応援してますよ〜。
0785デフォルトの名無しさん
NGNGLoadFromStreamってリソースエラーをおこすときってありますよね?
バグなのかな。
何か回避する方法ありますか?
0786デフォルトの名無しさん
NGNGそりゃ、一時的に同内容の巨大なデータがメモリ上に二つ存在する事になるからでは
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNGBlockRead/Writeの頃はこんな質問なかったのに
0789デフォルトの名無しさん
NGNGプ
0790785
NGNG同じ処理を同時に行うところをSyncronizedして直るならその通りですが、
ストリームの移し変えが1つしか走ってない場合にも同様です。
Syncronizedって他スレッドを完全止めちゃうのかな。
なら分かるんだけど。
そういえば、以前リッチエディットの巨大な文字列を移し変えるとき、
一旦TMemoryStreamに移して、元のStreamをクリアして次のStreamに移すと、
エラーが出なくなる、といった経験もあったけど、今回もそうすれば直るかなぁ。
0791デフォルトの名無しさん
NGNGはぁ? 別スレッドからメインスレッドの何かにアクセスしてるの?
> Syncronizedって他スレッドを完全止めちゃうのかな。
いや、呼び出したスレッドが止まってコードがメインスレッドで実行される
Syncronizedして直るなら、スレッドセーフでないVCLコンポにアクセス
してるか、競合してるかです。
> ストリームの移し変えが1つしか走ってない場合にも同様です。
だからメインレッドだって休んでいるんじゃないんだよ。アイドルしてるかもしれんけど
0792785
NGNGIndyのHTTP受信コンポーネント使ってて、
受信時にスレッドが生成されその中で
ストリームの移し替えで画像変換を行ってます。
画像コンポーネントがスレッドセーフじゃないのかも。
それと、メインスレッドが関係してるかも知れないと思ったのが、
大した処理じゃないとき、
マウスで画面動かしたときに同様の現象が起きたときがあったので、
メインスレッドと画像変換スレッドが競合してるのかも。。。
0793デフォルトの名無しさん
NGNGただそれだけのこと
0794785
NGNG重要な感じは受けるのですが、今ひとつ意味が分かりません。
噛み砕いて教えて下ちい。
今回の回避策は、
スレッドセーフじゃなさそうな部分をSyncronizedで回避、
と納得しとけば良いのかなぁ。
グラフィックコンポーネントはネットで落としたソースでつ。
0795デフォルトの名無しさん
NGNGトランザクション、コミットしてる?
0796デフォルトの名無しさん
NGNGトランザクションは使っていないです。使わなきゃダメですか?
ちなみに、Delphi6pro + InterBase6 では トランザクションを
使わなくても出来ました。プロパティに違いが何かあるのかな?
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG漏れは>>795じゃないけど、データベースに対して
変更処理をしたら、直後に必ず明示的に
Transaction.Commitしたほうがいいですよ。
とくにサーバで複数のクライアントがアクセス
するような場合、commitしないと、他のクライアントで
変更がなかなか反映されない。
それと、例外処理でRollBackも。
0800デフォルトの名無しさん
NGNGとりあえず、テストで開発していたのでまだトランザクションをかけていなかったのです。
それと、解決しました。
TSQLTable,TSQLDataSet だと上手くいき、TSQLQueryだとダメでした。
なのでTSQLDataSetを採用していきたいと思います。
まだ、Delphi8の製品登録をしていないので、Update2はやっていないです。
明日、製品登録をしてから、もう一度チャレンジしてみようかと思います。
他の方で、TSQLQuery でBLOB Subtype 1 を 更新できた方がいらっしゃったら
教えてください。
あぁ。疲れた。やっと、次へ進めそうです。それにしても、Delphi8は良く落ちる。
ここまでくるのに5回落ちた。
0801デフォルトの名無しさん
NGNGオブジェクト名とか読めるんですけど、コンパイルってこんなもんなんですか?
0802デフォルトの名無しさん
NGNGどうしてほしいんですか?
0803798
NGNG0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG「失望しました。」
なにを期待してたんだか・・・・(w
浅ましい乞食ですね。
0806デフォルトの名無しさん
NGNG>803はGoogleも知らない、自分で探すことすらできないアマチュアなんだよ。
たまにいるから仕方がない。
こいつはVB.NETを使ってもまあこの程度なんだろうな。
0807デフォルトの名無しさん
NGNGレベルを暴露してるわけだが。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG次のWindowsからは動かなくなるんでっか?そもそも.NETでなんでっか?
Longhornって何時ごろでるんでっか?
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG激しく、スレ違い。
逝ってヨシ。
0812デフォルトの名無しさん
NGNG中のコンポーネントが激しくはみ出ます。
何ででしょう?対処法教えて下さい。
0813デフォルトの名無しさん
NGNGフォント
0814812
NGNGこのプロパティ、フォームの中で変えても手遅れですね。
IDEで全部変えなきゃだめなのかな。
大変。
0815デフォルトの名無しさん
NGNGいまだにWin16のアプリがとりあえずといえども動作している現状から類推しる。
0816デフォルトの名無しさん
NGNG動作するけど、実際に使ってるユーザはごく少数、と。
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGこの先10年は確実に現役。
Longhornが出たからと言ってもWin2k/XPから積極的に移行する理由もないし、
Win95時代と違って古いPCだからといってそれほど困る事もないからPCの買い換え需要は伸びないかと
0819デフォルトの名無しさん
NGNGはははは、ありえない。
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGLonghorn・・・2年後+α=3年後?
XP・・・Longhorn登場直前に買えば、3〜5年は使用
8年は確実の予感
0822デフォルトの名無しさん
NGNG>>821 のような数え方なら、いまならまだ Delphi1 が現役。そういう意味ならOK。
つくったもののユーザが自分だけならね。
0823デフォルトの名無しさん
NGNGとか思ってるんじゃないの?
実務やフリーウェアとして公開できるほどのアプリが作れる = 現役
という定義なら長角出た時点でアウト。
0824デフォルトの名無しさん
NGNGWin32アプリはいつまで使えるかっていう話じゃないの?
> Windows95 が出た時点で Windows3.1 専用開発環境は引退。
っていう理屈が、どうも分からん
0825デフォルトの名無しさん
NGNG素人さんでつか?
公開ソフトなんて関係ない
企業内で業務に使われているソフトが動いている間=現役
マイクロソフトが未だにNTやWIN98を切れない理由も、その辺りにある
0826デフォルトの名無しさん
NGNGおれは 16bit 版の秀丸エディタのユーザだった。なかなかよいエディタだった
がそれをそのまま Win32 で使うことはなかった。
0827デフォルトの名無しさん
NGNG95ではユーザー側に大きなメリットがあったけどLonghornってなにかこれといったメリットあるのか?
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG玄人さんは、過去むけでがんばってくださいね。>>821 のような数え方で
8年後も Del5 を使って仕事してるようじゃ、つらいものがあるね。
そのころ Del5-7 つかって遊んでる素人さんは一桁もいないと思うよ。
0830デフォルトの名無しさん
NGNGそんなことは知らんが、Win32 アプリが古めかしく見られて
使われなくなることは確実。
0831デフォルトの名無しさん
NGNGだからさ、個人ユーザーがどうしようと関係ないの
メーカーが気にしているのは、企業ユーザー
>>827
なんて上司に言われちゃったら反論できないだろ>826
0832デフォルトの名無しさん
NGNG売ってるパソコンが長角しかOSの選択肢がなければ、どんどん普及していく。
今だって、Win2000pro をOSとして新規購入するのはかなりつらい。
0833デフォルトの名無しさん
NGNG関係あるの。プロは需要があるうちは使っていればいい。どんなに古くてもね。
Delphi のように圧倒的にアマチュアが支えてきたツールでは、8年後はDel5-7は
アマチュアにとって現役じゃないでしょ。
0834デフォルトの名無しさん
NGNGゆっくりっと代替わりしていくんでないの?
>>833
アマチュアが支えてこなかったから、某に見捨てられたんだろ
新しいバージョン出ても買い換えない。ケチ臭いDel 使いが多いからさ
0835デフォルトの名無しさん
NGNGうん、そうだね。どっちが見捨てたかは見方によるが、某が個人ユーザを
重視していないことだけははっきりと分かる。新ジャージョンが買い換える
だけの魅力があったか、とうことも見方によるが。
ま、これからはプロが某を支えてくださいね。
0836デフォルトの名無しさん
NGNG実際はね。プロと違ってアマチュアはあえて古い方の環境をターゲットに
することはないから、開発ツールとしては劇的に代替わりすると思うよ。
0837デフォルトの名無しさん
NGNG> 開発ツールとしては劇的に代替わりすると思うよ。
どうなんだろ?某は、劇的変化を演出したいみたいだけど
Kylix、C#Builder、Delphi8と失敗続き・・・
劇的代替わり=某倒産。日本撤退?
で、MSの宣伝の影で、WIN32アプリがしぶとく残る。7〜8年
0838デフォルトの名無しさん
NGNG某は Java とか、なんとかという上流開発支援ツールとかで生き延びればいい。
某の将来と Delphi のそれは無関係じゃないけど、某はどうなったってかまわない
が Delphi はなんとか生き延びてくれないものか?
0839デフォルトの名無しさん
NGNG確かにさっさとWin32環境を捨てるだろう。
でも、企業向けのシステムやアプリを作る場合は、確実にWin32が残る。
だって、企業のPCは一般市場に比べて環境移行は遅いから。
だから、そういう仕事する分にはDel5-7でもしばらくは問題ないだろうさ。
それこそ10年単位で生き残るんじゃないの?
まあ、今のコボラ―のような扱いは受けるかもしれんがね・・・。
0840デフォルトの名無しさん
NGNG> Delphi はなんとか生き延びてくれないものか
漏れも信者だから、そう願っているが・・・
エンプラ版の出荷量が増えれば、日某も振り向くんだろうけど
現状でも、日某のサポート=終了っていう感じだからな・・・
これから先は海外のDel 信者と連携して生き残っていくしかない予感
0841デフォルトの名無しさん
NGNG長角出て1年が限界と見た。
絶滅しない程度にはどこかで動いているだろ、という程度になる。
実はおれは Windows3.1 の時に買ったゲームがまだ動いていて、ほとんど
毎日起動している。でも、そういう程度であって、決して第一線のままで
いることはない。
0842デフォルトの名無しさん
NGNGあっ、企業内アプリは別ね。アマチュアから見て、ということにしてください。
0843デフォルトの名無しさん
NGNGDelphi滅亡まで
アマ・・・長角出荷1年後(残り3〜4年)
プロ・・・長角出荷5年後(残り7〜8年)
0844デフォルトの名無しさん
NGNGまっ、妥当なところだね。
0845デフォルトの名無しさん
NGNGなんか、もう駄目駄目じゃん>Delphi
と思ってたけど、まだそんなに長い間使えるのか
宝くじ当選>D6 Personal(無料)使用者
0846デフォルトの名無しさん
NGNGDelを知らなかったら喜んでVC++使ってただろうに
0847デフォルトの名無しさん
NGNG0848初心者
NGNGDelphi 言語に対する親和性が高いと感じました。
0849デフォルトの名無しさん
NGNG寝言だな・・。
0850初心者
NGNGJAVA は C/C++ に比べて親しみやすい、と言う意味です。
MFC では Hello World を表示する window を作るのに3日かかりましたが、
Swing では3分でした。
開発効率は、およそ1000倍(3分>30分>300分>3日)です。
0851デフォルトの名無しさん
NGNGそうかそうか、良かったな。
0852デフォルトの名無しさん
NGNGデスクトップ・アプリ開発という意味なら
JAVA・・・速度遅すぎて、デスクトップ・アプリには向かない
DOTNET・・・まだ実験段階。コンポーネントも揃っていない
を考えると、ここ1〜2年はノンビリDelphi
+ちょっとだけDOTNETがお勧め
Delphi 9の出来を見て、DOTNET本格移行を考えるべし
0853デフォルトの名無しさん
NGNG要するにC#はじめとけって事でつか?
0854デフォルトの名無しさん
NGNGそうとも言う
0855デフォルトの名無しさん
NGNG激しく同意。
>>853
そゆこと。
0856Delフサギコ ◆A6VzDeLphI
NGNG∧.,,∧ /スレタイに従った人があつまろうよ。
ミ.,,゚Д゚彡<
ミ つ目(ミ . \なんで低級者以下ばかりが・・・
〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0857デフォルトの名無しさん
NGNG意味無しコピペの集合を思い出してしまった。
>>815-855
0858デフォルトの名無しさん
NGNGDelフサギコ は中級者なの? 自称するなら、だれが来ても同じだろ。
>>857
なにを思い出そうと勝手だが、個人的な感慨はスレ違い
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG個人的な感慨はスレ違い
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGさいきんデルファイ8に興味あるんだけどさ
デルファイ5でつくったソースは使えんのかな?(変換とかやっぱあんの?)
いままでデルファイ3、5しかやったことないからその辺が心配なんだよね
誰かおしえてー!
0865デフォルトの名無しさん
NGNGそーでぃすか。了解しますた。
0866デフォルトの名無しさん
NGNGCodeCentralあたりをうろついているのだが、どうも使いにくくて・・・
0867デフォルトの名無しさん
NGNGDelphi9?
たしかDelphiって8で打ち止めですよね?
もうPascalコンパイラは作らないとかって某がコメントしてませんでした?
0868デフォルトの名無しさん
NGNG終了時に死ぬほどエラーでたりとか、不安定な部分って直ったのかな?
新バージョンもいいけど、フォローもきっちりやって欲しい・・・
0869デフォルトの名無しさん
NGNG今の所、IDEを統合します!って話ばかりだね
http://www.drbob42.com/delphi9/index.htm
あんまり興味ないんだけど・・・
0870デフォルトの名無しさん
NGNGCode Central玉石混交だね・・・
基本的には、素人さんが多いのかな?
で、こっそりSharewareが混ざっている(ウザ)
アメリカ人が多いが、スペイン語やフランス語も結構ある。
案外、堂々と書いても許される予感>日本語
もっと日本からの投稿が増えると良いな〜
0871デフォルトの名無しさん
NGNGよいネタには Borland からお金が出るし、ものによってはコンパニオン CD に収録される。
0872デフォルトの名無しさん
NGNGマジ?幾らぐらい出るの?
0873デフォルトの名無しさん
NGNGプログラム起動時ワトソン博士が出る事が30回に1回あり、調べてみると
ファンクション: RtlTraceDatabaseEnumerate
でエラーが落ちているみたいです。
色々調べましたが、RtlTraceDatabaseEnumerateが引っかかって
こないのでこの場所に出して見ました。
環境は Win2000 + Delphi5 update1 InterBase6.0 です。
何かヒントになる事があれば教えてください。
お願いします。困っています。
0874デフォルトの名無しさん
NGNG1件出てきたが。
http://www.google.co.jp/search?q=cache:0PLjiRJCj8oJ:www.moonstone.jp/cgi/bbs/wwwforum.cgi%3Fid%3D4%26az%3Dthread%26number%3D73+RtlTraceDatabaseEnumerate&hl=ja&lr=lang_ja
「delphiを起動してる時に限って」ってんじゃないならスレ違いかもな。
0875デフォルトの名無しさん
NGNGttp://groups.google.co.jp/groups?threadm=3fb95afd%40newsgroups.borland.com&rnum=4&prev=/groups%3Fq%3DRtlTraceDatabaseEnumerate%2Bdelphi%26hl%3Dja%26lr%3D%26ie%3DUTF-8%26scoring%3Dd%26selm%3D3fb95afd%2540newsgroups.borland.com%26rnum%3D4
0877874
NGNG↓だけだけ
0878デフォルトの名無しさん
NGNGめでたしめでたし・・・
0879デフォルトの名無しさん
NGNGどうやって使うの?
0880デフォルトの名無しさん
NGNGヘルプのキーワードに「パッケージ」といれろやハゲ。
>どうやって使うの?
激しく意味不明。
使ってねえのか?
てめーでパッケージ作りてえのか?
0881デフォルトの名無しさん
NGNG>>875
ありがとうございます。
意味もなく、プロジェクトソースにSleep(5000)を入れたら全然でなくなった。
スタートアップに登録して起動/終了を100回やってもワトソン君はでない。
ヨカッタ。
0882デフォルトの名無しさん
NGNGおお!「パッケージ」だとヘルプ出ますね
> てめーでパッケージ作りてえのか?
はい。コンポーネントの入れ物じゃなくて、
Javaみたいに、Unitを集めた、クラスライブラリみたいな物を
作りたいんです。
あんまり使われている所を見た事無いんですけど、
これってありですか?
0883デフォルトの名無しさん
NGNG中級スレで質問するからにはもうちょっと自分で調べてください。
0884デフォルトの名無しさん
NGNG了解でつ
0885デフォルトの名無しさん
NGNGクライアント側の作業はプログラム本体のインストールだけにしたいのですが、
ODBC,oo4o,DBexpress
どれでやっても接続できません。
オラクルクライアントをインストールすれば接続できます。
オラクルクライアントは絶対必要なのでしょうか?
Delphi7entを使っています。
0886デフォルトの名無しさん
NGNG文字を円弧にそって曲げて描写するには、どうしたらいいでしょうか?
一文字ずつ角度をつけて、自分で位置を調整して書くしかないんでしょうか?
0887デフォルトの名無しさん
NGNGどうあがいても無理なものは無理。
自分で実装してみたら?
もし実装できたらリバースだといって訴えられるかもしれんがw
0888デフォルトの名無しさん
NGNG>どれでやっても接続できません。
当たり前です。
目的がクライアント側インストールのコスト低減にあるのなら、
データアクセスサーバーとして一台だけに Oracle クライアントを導入し、
ほんとのクライアントとは別のインターフェース(WebService とか)でつなげたら?
Enterprise 版なら道具は全部そろっているし。
0889naka
NGNGけど、方法はあるよ。
スタンダードな方法なら
ASTA,kbmMW,RemObjects/DataAbstractとかで3階層C/S構築。
2階層なら Core' Lab の ODAC Net Optionで出来る。
自力で SQL Net と OCI を実装してる脅威のミドルウェアメーカー。
0890デフォルトの名無しさん
NGNGそもそも >>885 のクライアント環境がわからん。
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNGPGP Components for Delphi v.3.3.5 っての見つけたんで早速入れたら
PGP Software Development Kit Core Library not foundってエラーが出て起動しなくなった・・
Libraryなんて見つからないし、、もうだめぽ..
0893デフォルトの名無しさん
NGNGこれかな?読んでないけど。
http://www.pgp.com/products/sdk.html
0894デフォルトの名無しさん
NGNG、、DL出来ね・・
Delphi入れなおしてきます・・
λ,,. .
0895デフォルトの名無しさん
NGNGDelphi6\Projects\Bpl\dclusr60.bpl
をいったん消してあげれば直るんですね。
直ったところでもっかいトライしてみます。
0896デフォルトの名無しさん
NGNG知ってます
0897デフォルトの名無しさん
NGNG早速使ってみます。
どうもありがとうございました。
0898デフォルトの名無しさん
NGNGIntraWeb+WebBroker(exe型cgi)で、ページを表示させることはできたのですが、
ボタンを押しても、フォームの内容がリセットされるだけで、イベントが発生している様子がありません。
確認してみる点などありますでしょうか?
0899898
NGNGsubmit関係で注意すべきプロパティでもあるのでしょうか
0900898
NGNGTCGIRequestまではデータは渡るのですが、IntraWebに伝わってないみたいなのです
IntraWebのソース欲しい…
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGtype
THoge1 = class
end;
THoge2 = class
private
FHoge1: THoge1;
public
end;
implementation
private でしか使用しない THoge1 を interface 部で晒さなきゃいけない
ことに納得できないのですがこういうもんですか?
0903デフォルトの名無しさん
NGNGイヤならinterfaceとインスタンス生成用関数だけ晒すとか
コンパイルして.dcuと情報削った.int飲み公開とかするしかない。
0904デフォルトの名無しさん
NGNGTHoge1をTObjectなんかの上位クラスにしとけば、
interfaceにさらす必要ないよ。
ただ、FHoge1を生成するときはTHoge1をCreateすること。
0905904
NGNGimplementation
の下にTHoge1の入ったソースをusesするか、
THoge1のオブジェクトを外からTHoge2に設定してやるか、
のどちらかをやる必要がある。
0906デフォルトの名無しさん
NGNGとは関係ない。THoge2 のフィールドとして private であるだけで、どうせ外からは
THoge2 クラスを使う部分からは見えないんだし。気持ち悪ければ、THoge1 をなにか
の abstract なメソッドを宣言しておき、抽象クラスにすると。そして、実装部で
それから派生した具体クラス宣言・実装をつくり、実際に THoge2 の FHoge1 は
その具体クラスのインスタンスとして作ればよい。VCLでは常套手段だよ。
0907デフォルトの名無しさん
NGNGそれじゃ、そもそも interface で FHoge1 を宣言できないじゃないの
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG無理してやってもメリットは薄い。
0910デフォルトの名無しさん
NGNGFHoge1: TObect;
と書いといて、
FHoge1にTHoge1のオブジェクトを入れれるんだよ。
0911デフォルトの名無しさん
NGNG別に、privateに、そういうpropertyを用意してもいいし
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNGproperty FHog1: THoge1 write ....
とかのように THoge1 がそもそも使えないんじゃ実装部でキャストするしかないでしょ
0915デフォルトの名無しさん
NGNGclass helper…ごにょごにょ
0916デフォルトの名無しさん
NGNG実際は実装部で宣言実装されている TStrings の派生具象クラス TMemoStrings
のインスタンスが代入されている。ユーザは TStrings のメソッドを呼び出しても
多態性により実際は TMemoStrings クラスのメソッドが実行される。
0917デフォルトの名無しさん
NGNG話がずれとる。
拡張性の話とは無関係だよ。
0918デフォルトの名無しさん
NGNG拡張性の話はしていない。>>902 をよく読むこと。
0919デフォルトの名無しさん
NGNGTHoge2 = class
private
class THoge1 = class
end;
FHoge1: THoge1;
public
end;
0920デフォルトの名無しさん
NGNG単に晒したくないって理由で抽象クラスを用意するというのは
Delphi的にはまっとうなやり方ではないよ。
0921デフォルトの名無しさん
NGNGだからまっとうなやり方を教えてよ。
0922デフォルトの名無しさん
NGNG>>909
0923デフォルトの名無しさん
NGNGまっとうだとは思わないな。
0924デフォルトの名無しさん
NGNG説明としてTObjectを使っただけであって、
TWinControlでもTComponentでも構わない。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG902の結論は?
0927902
NGNG気にしなければいいのですけど名前衝突のリスクとか考えると
表に出さなくていいものは出したくないですよね・・・・・
でもそのためにキャスト多用というのもちょっと・・・ですし。
Del8で可能かもですか・・・Del8未満を切り捨てられる時代は
まだまだ先のような木もするので当面我慢して使うしかないですね・・・・
ありがとうございました。
0928デフォルトの名無しさん
NGNG明示的にShortString使ったほうが速度面その他で有利とかありますかね?
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNGやるなら全部ShortStringで完結させるつもりでGO
0931デフォルトの名無しさん
NGNG>ちょっと期待してたのですが残念です。
なにをどう期待してたのか分からないのですが? >>902 には納得できない、としか
書いてないけど。
0932デフォルトの名無しさん
NGNGやるなら全部ShortStringで完結させるつもりでGO
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNG> 名前衝突のリスクとか考えると
THoge2 の private で宣言するのはよくて、同じユニットで THoge1 を宣言すると
どうして名前衝突のリスクが増えることになるんですか?
0935デフォルトの名無しさん
NGNGだから TObject にするとか、抽象クラスをつくるとか提案があったでしょ。
隠蔽方法としてはよい提案でしょ。902 がそれを採用しないのは、隠蔽を必要
とする度合いが、キャストやら抽象クラスをつくる手間より小さいからでしょ。
つまり、簡単な方法があれば採用するけどめんどくさいのはいや、ってことね。
0936デフォルトの名無しさん
NGNGそんな当たり前の事言われても。
0937デフォルトの名無しさん
NGNG結論
> あぅ、気にするな、っていうのがまっとうだと。それはそうかも。
0938デフォルトの名無しさん
NGNGクラス名の衝突はユニット名が異なれば起こらないから
ビルドできなくなることはないよ。
問題はたまたま同名クラスの同名メソッドを呼び間違える可能性があることだけど
それほど神経質になることはないと思うよ。
0939902
NGNGおっしゃるとおりです。
interface
type
TFunc = procedure(A, B, C: integer) of object;
THoge2 = class
private
FFunc: TFunc;
public
end;
implementation
ちなみに TFuncを隠蔽するにはどう宣言しとくのがよいでしょう?
気にしないことにしたのですが隠蔽も覚えておいた方がいいかと思いまして。
0940デフォルトの名無しさん
NGNG>Delphiにはクラスにアクセス指定できないから気にせずやるしかないよ。
>無理してやってもメリットは薄い。
だと思う。いろいろ手をつくしても得られるメリットがそれに見合ってないよね。
いろいろなところで質問があるんだけど、回答する方は、なんとか解決しようとする。
でも、質問者は軽い気持ちで、簡単ならいいけど面倒ならまぁいいや、ってことも
あって、回答者はガックリ、ということも多い。質問者は、一応回答を得たなら、
実際に採用するかどうかはともかく、「参考にさせていただきます」とか答えて
おけばいい。
いっぽう、どんな方法でもいいから絶対解決したい、という質問もあるので、
そこらへんの見極めが難しいんだよね。
適当な質問には答えないのも節度かもね。
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGDelphiには型宣言にアクセス指定できないから気にせずやるしかないよ。
無理してやってもメリットは薄い。
0943デフォルトの名無しさん
NGNGデフォルトは簡単でまともなやり方を答えつつ
無理な方法が存在することを匂わせとけば十分。
それを聞きたきゃ再度聞けばいいだけだし。
迷うのは最初からまともでないやり方を指定した質問。
直接答えるべきか勘違いを指摘しつつ代案を示すべきか。
まともでないことを自覚しつつ後者の返答をもらうと
なぜまともでないことをやりたいのかを
説明しないといけないから割にウザかったりするんだよな。
0944902
NGNGこんな当たり前のことができないはずはない、私の知識不足だ、
D5ぐらいからは対応してるはず、と思っていたので
「期待してたのですが残念です」と書いたのですが・・・・
もしかして触れてはいけない話題だったのかな(^^;)
おとなしく.NET勉強します・・・
0945デフォルトの名無しさん
NGNGそうか、ここら辺の感覚が違うのね。そんなことのために .NET 勉強するってのも
なんかちょっと違う感じ。
たいした弊害があるわけでもないことが重大なことに思えるのかなぁ。
0946902
NGNGたいした弊害でもない、といってる時点で初心者丸出しですが。
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNGしかし、あれば便利だけどなくてもこれまでやってこれたし、なんか
つまらないことをほじって釣りしてる感じだね。多重継承ができない
から不便、begin end がダサイ、とかと同じレベルのような。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGどこが重要で、なにが重要じゃないのかってのが正しく見極められない人間は、
どーでもいいことで拘るから仕事も遅いし融通が利かなくて使えない。
もう少し、柔軟な思考能力を身に付けられるといいな。
0951デフォルトの名無しさん
NGNGこんなのにいつまでも相手しなくていいよ
↓ はい、次の方どうぞ
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGなにをしたいかよくわからんが、
DateTimePicker.Format := ' ';
とでもしておけばとりあえず非表示になる。
0954902
NGNG0955デフォルトの名無しさん
NGNGこちらで質問させてください。
今、TPersistentを継承したTData1,TData2...TDataNという
いくつかのクラスをファイル入出力させるためTHogeというクラスを作り、
Dataプロパティに先ほどのTDataクラスを保持させるようにしています。
THoge = class(TComponent)
published
property Data: TPersistent read FData write SetData;
end;
WriteComponentできちんと書き込みは出来ているのですが、
実行時のDataプロパティの実際の型が不定のため、
ReadComponentでうまく読み込むことが出来ません。
やはりDataプロパティの実際の型をTHogeにプロパティとして持たせ、
Dataプロパティを偽プロパティを使って、
ストリームからの読み込み時にその型を判別し
個々の読み込みを行うという方法をとるしかないのでしょうか?
なにかスマートな方法がありましたら教えてください。
0956デフォルトの名無しさん
NGNGTHogeのインスタンスをWriteComponentしても
Dataのプロパティまでは書き込み出来ない気がしますが。
0957デフォルトの名無しさん
NGNGTPersistent.GetOwner
使ったことはないが
0958デフォルトの名無しさん
NGNGTDataN を THoge の中に置くのではなく、クラスの外に作って THoge から
参照するだけにしておけばどうですか?
この場合、TDataN は TPersistent ではなく TComponent から派生します。
そうすれば Read/Write や Create/Destroy の面倒は Owner (フォームや
データモジュール) が見てくれるので、特に何もする必要はありません。
0959デフォルトの名無しさん
NGNGdData = record
case DataType: Integer of
{Data1..Nのデータ型を定義}
end;
THoge = class(TComponent)
public
property Data: dData read FData write SetData;
end;
みたいのじゃダメなの?的外れならスマソ
0960デフォルトの名無しさん
NGNGだった
0961デフォルトの名無しさん
NGNG955 じゃないが書き込み可能なメンバーにレコードを使うのは
何かと不便だと思うけど。
・パブリッシュできない。つまり dfm に保存することができない。
・Data.X := Data.X + 1 みたいな操作ができない。
0962955
NGNG>>956
Dataへの代入時にFDataを実際の型でCreateしてますんで、
WriteComponent時にはきちんと保存できているようです。
>>958
TComponentから派生させるように作り直すことも考えたのですが、
先ほど簡便性のためにTData1,TData2...TDataNなど書いたクラス群は
実際にはTCustomDataA,TCustomDataBとあり、
さらにTCustomDataAを継承したTDataA1,TDataA2...というクラスが
数十個、すでに構築されてますんで、これをすべてやり直すのも
いかがなものかと思ったわけなんです。
どうせTHogeは、ファイル入出力時に一時的にCreateするだけですし。
>>959
近いものとして、以下のようにしようかとも思いました。
THoge = class(TComponent)
public
property Data: TPersistent read FData write SetData;
published
property DataType: TClass read FDataType;
end;
Dataプロパティへの代入時、FDataTypeへその型を代入しておいて、
読み込み時にはFDataTypeに代入されている型をもとにFDataをCreateさせようかと。
もっともそのためにはDataプロパティを偽プロパティを設定して
読み書きする必要があるかと思うんですが。
0963デフォルトの名無しさん
NGNG詳細はともかく、最終的に実現したいことを素朴に書いてみたら >>955
0964デフォルトの名無しさん
NGNG簡単に書くと、
・TData...のクラスの内容をファイル入出力したい。
・TData...の構成はできればあまりいじりたくない。
の、2点のみですw
>>962で書いたことを試してみたんですが、ちょっとうまくできませんでした。
やっぱりTData...をTComponentから派生させたほうが楽なのかな…
0965デフォルトの名無しさん
NGNGDelphi 7 + dbExpress を利用して、ローカルの MySQL を操作しようとしています。
カラム数が 11 あるテーブルに対して、TSQLQuery 経由で 'select * from hoge...'
としたところ、TSQLQuery.FieldCount が 6 を返します。頭 6 つ分しか取得できて
いないようです。
同じ問い合わせを SQL エクスプローラから行うと、正しく 11 カラム返って来ます。
MySQL のバージョンは 4.0.20a です。MySQL も dbExpress も初めてなので、問題の
切り分けができず困っています。心当たりのある方、いらっしゃいませんか。
0966デフォルトの名無しさん
NGNGLast;First;
をしないと件数正しく返さないことがありました。
参考になるかどうか。
MySQL4は情報少ないよなあ。
0967デフォルトの名無しさん
NGNGその件数ってレコード件数のことではなくて?
0968965
NGNG情報ありがとうございます。ただ残念ながら、今回は TSQLQuery.Open メソッドの
直後で FieldCount の値が決まっているので、それが直接の原因ではないようです。
なお、insert や update では 10 以上のカラムを同時に挿入・更新できました。
今のところ、select 文を発行するときは * を使わずに 6 つ以下のカラム名を列挙
してごまかしています。
何か分かったらここに還元します。
0969デフォルトの名無しさん
NGNGスタンドアロンのデータベースアプリがあります。
これをC/S型DBアプリにする方法を教えてください。
データベースソフトに Firebird を入れて、BDE系のコンポーネントを IB系に換えれば
いいのかなぁ?と漠然と考えてますが、C/S型は作るのが初めてなのでどうしたら
いいのかよくわかりません。
クライアントは Windows XP のマシンが2台(将来的には6台程度まで増えるかもです)。
サーバーはこれから用意するので、Unix 系でも Windows でもどっちでもいいです。
開発言語は Delphi6 Professional です。
参考になるURLだけでもいいので、よろしくお願いします。
0970デフォルトの名無しさん
NGNG| ┌────────────┐
| | おまえの消し方 |
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
|
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
0971デフォルトの名無しさん
NGNG> データベースソフトに Firebird を入れて、BDE系のコンポーネントを IB系に換えれば
> いいのかなぁ?と漠然と考えてますが、
そんな感じでどうぞ。
でも、差し替えるのならBDEからdbExpressもおすすめです。
サーバはライセンス関連でUnix系がおすすめ
ただ、差し替えるにあたってデットロックが起こらないように
トランザクション関係はしっかりね
0972デフォルトの名無しさん
NGNGレスありがとうございます。
昨日、Firebird を入れてみました。
今日、Marathon を入れてみましたが、
使いかたがわかんね;;
いそいでないのでゆっくりやります。
0973デフォルトの名無しさん
NGNGワロタ
0974デフォルトの名無しさん
NGNG非常におもしろいんだが、スレ違いだと思う。
Office アシスタントはMSですら失敗だったと認めるくらいだが。
0975ななしへたぐらま ◆XcB18Bks.Y
NGNG【お前を】Excelのイルカ【消す方法】
http://aa5.2ch.net/test/read.cgi/kao/1088168743/
0976デフォルトの名無しさん
NGNGカスタムコンポーネントを製作する事は無謀なのでしょうか。
Unicode 対応 TMemo 派生コンポーネントを製作したのですが、
どうも挙動が不審です(終了時にメッセージを処理しきれていない模様)。
プロフェッショナル版を買うべきか、悩んでいます。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGそれって版関係あるのか?
0979デフォルトの名無しさん
NGNG何版かは関係ない
0980デフォルトの名無しさん
NGNGVCLがどの様にメッセージを処理しているのか、
VCLのソースが参考になると思っているのですが。
>>977
スターターアップキャンペーンでしたっけ?
アレが終わってしまったので、今は買う気はありません。
0981デフォルトの名無しさん
NGNGあれば確かに参考になるけど、他のコンポーネントのソースでも参考になるとおもわれ
0982デフォルトの名無しさん
NGNGTnt Delphi Unicode Controls
http://tnt.ccci.org/delphi_unicode_controls/
0983デフォルトの名無しさん
NGNGWin98だとまともに動かないんです。
0984デフォルトの名無しさん
NGNGELPack がつかえるぞ
0985デフォルトの名無しさん
NGNGどうも動かすには、Pro版に含まれる
コンポーネント(masks.pas)が必要なようです。
いやはや。やはりPro版を買うかなぁ。
0986デフォルトの名無しさん
NGNGやっておけばいい。無駄にならないし。ベータだけど Express 版なら無料で
DLできる。あとすこしで。
0987デフォルトの名無しさん
NGNGhttp://lab.msdn.microsoft.com/express/vcsharp/default.aspx
0988デフォルトの名無しさん
NGNGシステム側に不具合出るって報告もあるし。
0989デフォルトの名無しさん
NGNG>C# でやっておけばいい。無駄にならないし。
言い切るのはどうかと。.NETイラネっていわれてるし。
0990デフォルトの名無しさん
NGNG(中級者以上)
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNGソースキボン
0994デフォルトの名無しさん
NGNGこのセキュリティ証明書は、信頼できる会社から発行されていません。
証明書を表示して、この証明機関を信頼するかどうか決定してください。
とか出るし(w
流石MS
0995デフォルトの名無しさん
NGNGだから何?
0996デフォルトの名無しさん
NGNGとりあえず開発者ガイドのコンポーネント作成の部分読んでみれば?
色々書いてあった気がする。
Personalの場合、落としたアーカイブを展開したディレクトリのどこかにpdfで入ってるはず。
0997デフォルトの名無しさん
NGNGC:\Program Files\Borland Delphi Personal Installer\documentation\
ここにある
0998デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1064766880/
0999デフォルトの名無しさん
NGNG了解。
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。