ミ,,゚Д゚彡フサギコとモナーのDelphi質問相談談話室2

このエントリーをはてなブックマークに追加
初心者は入室禁止だ!!!ゴルァ!!!
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
         ∧,,∧____
     ∬ /,ミ゚Д゚,,彡,,  /|
     □⊂へ ::::⊂,,,ミ //
       (_ミ ゛,, ノ~~//
       (_丿|_|"" し'
          ̄ ̄
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. 初心者向けの質問は以下のスレへご案内するモナー.
 (    ) .| くだすれDelphi(超初心者向け) Part5
 | | |  | http://pc2.2ch.net/test/read.cgi/tech/1061090908/
 (__)_)  \_________________________

                  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∬   ∧,,∧      |  Delphi や Borland に関する話題
     ~━っミ ゚Д゚彡,,    <  雑談や質問を、しながら
    ∀._(,,,~  ,,,~⊃_   | マターリくつろごうや
━┳┷ |. ,(~ヽ,,,ミ.       \_________
  ┃...| ̄ ̄し'J.  ̄ ̄ ̄
  ┻ ヽ ̄ ̄
関連リンクは >>2-9 あたりのどこかに
2デフォルトの名無しさん:03/08/18 02:44
死ね
■過去スレ
ミ,,゚Д゚彡フサギコとモナーの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
●過去スレ
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室H
http://pc2.2ch.net/test/read.cgi/tech/1040734433/
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室G
http://pc3.2ch.net/tech/kako/1035/10355/1035549044.html
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室F
http://pc3.2ch.net/tech/kako/1033/10335/1033504099.html
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室E
http://pc3.2ch.net/tech/kako/1031/10316/1031668744.html
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室D
http://pc3.2ch.net/tech/kako/1030/10302/1030266945.html
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室C
http://pc3.2ch.net/tech/kako/1027/10273/1027343132.html
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室B
http://pc3.2ch.net/tech/kako/1021/10215/1021554929.html
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/tech/kako/1006/10066/1006602102.html
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室
http://pc.2ch.net/tech/kako/1003/10036/1003664165.html
■過去スレ
フサギコの *やさしい* Delphi質問スレ Ver.14
http://pc2.2ch.net/test/read.cgi/tech/1050203056/
フサギコの *やさしい* Delphi質問スレ Ver.13
http://pc2.2ch.net/tech/kako/1048/10485/1048589538.html
フサギコの *やさしい* Delphi質問スレ Ver.12
http://pc2.2ch.net/tech/kako/1045/10454/1045476913.html
モナーの *やさしい* Delphi質問スレ Ver.11
http://pc2.2ch.net/tech/kako/1042/10424/1042424592.html
モナーの *やさしい* Delphi質問スレ Ver.10
http://pc3.2ch.net/tech/kako/1038/10388/1038885567.html
モナーの *やさしい* Delphi質問スレ Ver.9
http://pc3.2ch.net/tech/kako/1033/10336/1033667645.html
モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/tech/kako/1027/10278/1027875869.html
モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/tech/kako/1021/10212/1021262036.html
モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/tech/kako/1019/10191/1019134212.html
モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/tech/kako/1017/10178/1017807412.html
モナーの *やさしい* Delphi質問スレ Ver4
http://pc.2ch.net/tech/kako/1016/10164/1016467937.html
モナーの *やさしい* Delphi質問スレ Ver3
http://pc.2ch.net/tech/kako/1014/10144/1014474427.html
モナーの *やさしい* Delphi質問スレ Ver2
http://pc.2ch.net/tech/kako/1011/10116/1011649279.html
モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/tech/kako/1003/10031/1003113443.html
●関連ページ

Borland 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://nigiri.s3.xrea.com:8080/delphi/
このミスは永久に直らないのだろうか・・・

DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
8あとこれも:03/08/18 03:08
9デフォルトの名無しさん:03/08/18 08:17
乙〜
スレ消滅かとオモター
全角のフサギコか半角のフサギコか統一した方がいいな。
フィルタで指定するのが面倒くさい。
スレ立て人です.ごめんなさい.

>>7
 関連リンクの最後の1個だけチェックし忘れていたようです.面目ないです.そしてフォローに感謝いたします.

>>10
 くだすれにも書きましたが題名の長さ制限に引っかかったのでやむを得ず半角にしま
した.

#それにしても >>2 の素早さには驚かされます.
12デフォルトの名無しさん:03/08/18 16:37
http://forum.nifty.com/fdelphi/samples/00003.html
↑のページの通りにやってもできねーぞ。
ご指摘お願いします。
13Delななし ◆Taxfe0rEug :03/08/18 16:43
>>12
精進しましょう。
1412:03/08/18 17:30
できない・・・。
>>12
GoodJab!
>>12
厨はくだスレの方へ
エラーがでてコンパイルできないのか、録音ができないのかどっちかわからん。
具体的に説明できないようではなぁ
もうすでにくだスレにもポスト済みのようだ。
1812:03/08/18 19:11
説明不足でした。すみません。
エラーは出ずに、コンパイルもできます。
実行して、BUTTONをクリックしても'c:\test.wav'
は何も変更されません。

19デフォルトの名無しさん:03/08/18 20:58
写真集だよん☆☆☆☆☆☆
http://www.sexpixbox.com/pleasant/teen/index.html
>>12
ワイもできへんワ。
どうも dtWaveAudio 辺りが臭い、ちゅーか。
既存のファイルを開いて変更するのすら、
DeviceType が dtWaveAudio になってると、
ErrorMessage に274返してはじかれよるし。
2120:03/08/18 22:39
ttp://www.delphifr.com/article.aspx?Val=2500
↑みると、riff チャンクを自前で作って、ファイルとして書き出して、
それを MediaPlayer で開いたうえで録音しとるね。

ようするに、TMediaPlayer には、wav ファイルを1(0)から作り出す
機能は無いっちゅう事やないかな、とわてはおもっとります。

ほな、まとめよか。
・dtWavAudio は糞
・TMediaPlayer は糞
・あるいは使い方が糞
ToolsAPIを使ってTDataModuleから派生したクラスをプロジェクトに追加
する方法を挑戦していまして、TDataModuleそのものを追加するとDataModule
のフォームが表示されるのですが、任意に追加したTDataModuleから派生した
クラスがどうしてもTForm型のフォームになってしまいます。
なんか方法があるのかなぁ。。
23デフォルトの名無しさん:03/08/19 21:56
Delphi用のYAMLのライブラリってないっすかね。
XMLで我慢するか・・・
>>22
普通に使って、TDataModuleから派生されたクラスがプロジェクトに追加されるぞ。
25デフォルトの名無しさん:03/08/20 08:35
DelphiのStringGridで,よくあるソフトみたいにフォームのサイズをマウスで
変えてもStringGridのよこ列が途切れないようにしてるけどあれってどうやってるの?
誰か宮本をとめてくれ・・・
>>25
単にフォームかパネルのリサイズイベントで大きさを決定してるだけでしょう。
>26
くだすれに来てもらうとか…。
導師レベルの人と初心者レベルの人のやり取りは
見ていて参考になるが?
MLが最近沈滞気味だったからいいんじゃない?
30ぬるぽ:03/08/20 12:47
>>25
StringGridの Alignプロパティを alClientにしてみる。
>>25
 グリッドの幅(高さ)が変わるたびにグリッドのセルの幅(高さ)をグリッドの内側に収まるように変えています.しかし,フォームなどと違い,グリッドには『幅(高さ)が変わるたびに』を実現するイベント(OnResize)がありません.
 そこでフォームなど,OnResizeイベントを持つコンポの上にその全体を覆うようにグリッドをのせて(Alignプロパティの値をalClientにする),そのイベントハンドラでグリッドのセルのサイズを調整します.
32デフォルトの名無しさん:03/08/20 16:56
OpenXML使ってるんですが、これって整形できないんでしょうか?
TDomToXmlParserで出力すると、インデントや改行がなくなっちゃって、
人間がよめたものじゃなくなってしまいます。
33デフォルトの名無しさん:03/08/20 17:57
ActionManagerとかActionToolBarとかまともに使ってる人いる?
昔試したらなんかバグバグで使えなかったんだが。
>>33
Delphi7のにパッチ当てれば一応普通に使えるよ。XPStyle?も使えるし。
というよりDelphi7が使ってるから、それなりに安定したんじゃないかな。
Del7のパッチって、英語版の奴?
なんだ、オフィシャルじゃないのか・・・
MS以外はオフィシャルじゃない。
何いってんの?
どーでもいいけどRegExprの残りさっさと訳してコントリブしたら?
41デフォルトの名無しさん:03/08/22 19:00
IndyコンポーネントにあるIdHTTPServerコンポーネントを使って
簡易webサーバっぽいのを作ろうと思ったのですが、これのコン
ポーネントって接続があったことをイベントでしか取れないので
しょうか?

例えば、GUI側でいろいろ重い処理をやってしまうと、その間は、
ずっと、ブロッキングされてしまいOnCommandGetイベントが処理
できないです。(当たり前ですが。。)

一般的には、ブロッキングソケットとスレッドをつかってサーバ
側の処理は実装すべきと思いますが、IdHTTPServerコンポーネント
を使ってサクっと実装するにはどうすればいいでしょうか?何でも
IdHTTPServerコンポーネントも内部はマルチスレッドで稼動してい
るらしいので、そのスレッド君に処理をまかせられればいいと思う
のですが、どう実装すべきでしょうか?
>>41
GUIでやってた重い処理も別スレッドで汁!
多分OnCommandGetがメインスレッドで実行されるためIdle待ちになってだけじゃない?
Indy側で別スレッドでイベント起こせるかまたはできないか調べるのがよいだろう。(ソース嫁)
今時、Webサーバ作るのも意味ないので素直にIISあたりのDLL作っときゃいいのに。
>>42
お答えありがとうございます。

まぁ、webサーバといいますか、webサーバっぽい処理をするものなのですが、、

>多分OnCommandGetがメインスレッドで実行されるため
>Idle待ちになってだけじゃない?
まさにそのとおりなのです。ただ、いろいろ事情がありまして、GUI側の処理を
スレッド化することはできないのですよ。。

>Indy側で別スレッドでイベント起こせるかまたはできないか
>調べるのがよいだろう。(ソース嫁)
やはり、ソースをよむしかないですかね。
Indy側でイベントではなくて、別スレッドを起こしてくれて、それに、やりたり処理を
渡せればいいのですが。。。

とりあえず、ソース呼んでみます。
サンキュでした。
44デフォルトの名無しさん:03/08/22 21:09

写真集だよん☆☆☆☆☆☆

http://www.sexpixbox.com/pleasant/teen/index.html
つーか、「Indy専用スレ」たてたらエエんちゃう?
と思ったりした。
怒られるかな?
別にオレは興味無いからいいけど。
最近のMLは活気あるね。
FAQと雑談と#bye #endしかないけどな。

   ∧,,∧   / C#Bが出てPerでダウソって使ってみたら
  ミ,,゚Д゚彡<  ・やっぱ.NET使えねな。
   ミ つ旦)~~ \ ・某で.NETでもダイジョブネ
 〜ミ  ミ.     ってわかった人々が多かったんかな
   ∪''∪  Delに期待感が戻ってきたのかしら。
FAQ雑談で十分

ボーランドがJava開発ツールと合わせて使うモデリング・ツールの日本語版を発売
http://itpro.nikkeibp.co.jp/free/NSW/NEWS/20030819/1/print.shtml
>  ボーランドは2003年8月19日,Java用の開発支援ツール2製品を出荷開始し
> た。一つはフリーの開発環境であるEclipseに,モデリング,設計,品質保証機
> 能を追加する「Borland Together Edition for Eclipse 6.1」の日本語版。もう一つ
> は,IBM WebSphere Studioに同様の機能を追加する「Borland Together
> Edition for WebSphere Studio 6.1」日本語版である。

ハローシステムが仕様書生成ツールのBorland C#Builder版を発売,Eclipse版も年内に提供へ
http://itpro.nikkeibp.co.jp/free/NSW/NEWS/20030812/1/print.shtml
>  ハローシステムは9月10日に,ボーランドのC#統合開発環境Borland
> C#Builder for the Microsoft .NET Frameworkに対応したドキュメント自動生成
> ツール【A HotDocument】for C#Builderを発売する。さらに,今秋発売予定の
> Office System 2003に対応した【A HotDocument】をOffice System 2003の発売
> と同時あるいは1カ月以内に,フリーのJava統合開発環境であるEclipse対応版
> を年内に提供開始する。
49デフォルトの名無しさん:03/08/23 01:43
>>47
既存スレッドに新ネタ投稿したヤシに
#bye #end したのはネタかとおもた
50あぼーん:あぼーん
あぼーん
#bye
#end
にも対応すればいいと思う。
ある男が、自分を愛している3人の女の中で
誰を結婚相手にするか長いこと考えていた。
そこで彼は3人に5000ドルずつ渡し
彼女らがその金をどう使うか見ることにした。
一人目の女は、高価な服と高級な化粧品を買い、最高の美容院に行き、
自分を完璧に見せるためにその金を全て使って こう言った。
「私はあなたをとても愛しているの。だから、
あなたが町で一番の美人を妻に持っているとみんなに思ってほしいのよ」
二人目の女は、夫になるかも知れないその男のために新しいスーツやシャツ、
車の整備用品を買って、 残らず使いきる と、こう言った。
「私にとってはあなたが一番大切な人なの。だからお金は
全部あなたのために使ったわ」
最後の女は、5000ドルを利殖に回し、倍にして男に返した。
「私はあなたをとても愛しているわ。 お金は、私が浪費をしない、
賢い女であることをあなたに分かってもらえるように使ったのよ」
男は考え、3人の中で一番おっぱいの大きい女を妻にした。
53デフォルトの名無しさん:03/08/23 08:56
何番目が大きいの?画像キボンヌ
>>52
大方コピペだろうが


ワラタ
55デフォルトの名無しさん:03/08/23 20:36
pasファイルを解析して個々の関数の長さを測定したり、
グラフ化するようなソフトありませんかね?
そんなの自分で作った方が早かないか?
57デフォルトの名無しさん:03/08/23 21:02
Delphi製のexeからImageListのビットマップをぶっこ抜く方法教えて。
>>55
リファクタリングですか?
59デフォルトの名無しさん:03/08/23 21:05
>>56
んじゃ作るわ。
ファイル処理とか今まで勉強したことないからいい機会だ。
作ったらupして感想もらってもOK?
60デフォルトの名無しさん:03/08/23 21:08
>>58
書いてる間にまたレスが。
っていうかなんだその読むだけでも疲れるような単語は( ゚д゚)
ググッテみたけどまあそんなとこだね。
関数は短くしたいから。
>>59
ファイル処理というか、正規表現コンポ使って
ファイル開く
   ↓
1行ずつマッチ試行
   ↓
マッチしたら関数名の切り出し>ストリングリスト登録
ぐらいのモンでしょ?

後はリストつかってグラフ処理なりなんなりできるし
62(;´Д`)ハァハァ:03/08/24 02:48
あやしすぎまつ!!

これ手動?  乙っ
使用例まであって親切だな。あやしいけど。
65デフォルトの名無しさん:03/08/24 11:47
>>61
形が見えてきた
ただいま製作中
重複ルーチンはまとめてバックエンド関数として切り出すとか
使用する変数が限られてたらクラス化するとか
そういう機能を付けれ
6755:03/08/24 14:41
>>66
初心者いじめすんじゃねーよ( ゚Д゚)ゴルァ
今やっと形が出来てきたところなんでそんな難しい機能は勘弁してください。
68デフォルトの名無しさん:03/08/24 15:28
簡易デバッグ用に
function ToString(obj: TObject): String; // TStrings返すのでもいいけど
みたいなインターフェースでpublishedな(できればpublicも)プロパティを再帰的に
文字列化するようなコードってない?
6955:03/08/24 18:02
基本的な部分は出来上がりまつた。
後はいろいろ体裁整えたり使いやすくする予定でつ。。
オプションでソース整形してくれ
71デフォルトの名無しさん:03/08/24 18:08
Action.Executeの戻り値(Boolean)をアプリ=フォームで
受け取るにはどうすればいいの?
CustomActionで処理をキャンセルしたいことがあるんだけど。l
>>71
何をしたいのかさっぱりわからないが、不可能。ソース嫁!
通常Executeメソッドの戻り値は利用されていないため保持されていない。
単体でExecuteを直に呼び出した時、実行されたか調べるくらいだろう。
というかこれくらい、適当にOnExecuteにイベントでも設定してそこでブレークして
トレースしていけば戻り値がどう使われているか調べられるだろ。
7355:03/08/24 20:58
>>70
だから初心者いじめするなって言ってんだよ( ゚Д゚)ゴルァ
でもそれはあったら便利な機能だね〜。
っていうかこのスレの人たちってレベル高いんでないのか?
だったら俺なんかに期待するより自分で作ったほうが100倍速いんじゃ・・・
たいして高くないよ。
7555:03/08/24 22:08
んなわけないだろ
ママとおねんねの時間よ
>>75
既にあるソース資源を使うのは厳しいが、これからのことを考えて
例えばコメントの//以降に特定のスイッチを付けておいて後でそのコメントを元に関数の機能表示等をできるようにすれば良いかもしれん
<例>
function Bind(socket: TSocket; addr: PAddr): integer; //#Rソケットをバインドする #A1ソケット #A2アドレスへのポインタ

変換後
__________________________________________________________________________________
|関数名 |概要            |長さ
|===================================================
|Bind   |ソケットをバインドする |4
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|引数   |型             |概要
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|soket   |TSocket         |ソケット
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|addr    |PAddr           |アドレスへのポインタ
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

こんな感じにできるようにしてみたら?
|
>>77
>//#Rソケットをバインドする #A1ソケット #A2アドレスへのポインタ
一体なんだよそのフォーマットは(w
今の流行はXMLドキュメントだろ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcwlkXMLDocumentationTutorial.asp

暇があったらXMLDoc対応のDelphi用のドキュメント生成ツールを作りたいと思いつつ早半年。
>>75が簡単に作って自分が使う程度のものだからこんなもので良いじゃないか
77も適当に書いただけだし
わざわざしち面倒なXMLにせんでも良い
形式がどうなろうが生成ツールがやることは同じだし。

初心者が最初から面倒くさいことやろうとすると計画だけで終わってしまうものだよ。
Graphics32
http://www.g32.org/graphics32/index.html

このコンポってどうよ?
>>80

Q: There are some red, green, blue (and alpha) circles on the screen, what's that?

A: You spend too much time with computer, get some rest
8255:03/08/25 12:17
まだ正式なもんじゃないけどとりあえずup
意見をことごとく無視した単純なものだけど怒らないでくれYO!

http://forgamedev.zombie.jp/uploader/up5/img/218.zip
ageちまった。
つーか俺今までずっとageてたんだ。
ごめん気づかなかった。
84デフォルトの名無しさん:03/08/25 12:24
デルファイで作ったソフトを配布するときって
なんか添付しないといけないタイプ?
>>84
うむ、最低でもReadMeは添付して欲しいな
RichEditで変換中の文字色を変えたいのですが、
http://www.geocities.co.jp/SiliconValley-Oakland/9177/vbtip/vbt_10.html
http://homepage2.nifty.com/DSS/VCPP/MFC/CRichEditCtrl/CRichEditCtrlIME.htm
↑他言語ではTipsがあるのですが、これをDelphiで書くとどのようになるのでしょうか?
>>86
そんなの己で調べろ。
WinAPIの使い方位ネット漁るなり参考書買うなりでできるようになってろ。
>>55
関数名は?
TMemoじゃなくてTListView使えよ
ファイルをドロップできないよ!!
どういうことだ!!
8955:03/08/25 22:35
>>88
別に長さがわかればいいだろ。
つーか名前わかるとそんな便利かね?
それ以前に俺には難しくて出来ん。

TListView便利そうだな。
これ使ったほうが便利そうだし。使い方勉強しよう。
90デフォルトの名無しさん:03/08/25 23:27
>>86
(略)
implementation

{$R *.dfm}

uses
RichEdit;

procedure TForm1.Button1Click(Sender: TObject);
var
CompColor: ^TCompColor;
begin
New(CompColor);
try
SendMessage(RichEdit1.Handle, EM_GETIMECOLOR, 0, Integer(CompColor));
CompColor.crText := clRed; //文字色
CompColor.crBackground := clBlue; //背景色
//CompColor.dwEffects := CompColor.dwEffects or CFE_ITALIC; //書式
SendMessage(RichEdit1.Handle, EM_SETIMECOLOR, 0, Integer(CompColor));
finally
Dispose(CompColor);
end;
end;
>>82
exeはつけない方がいいでしょう。
行の最初が'begin'、'end'で調べているのね…。
これなら、TStringListに代入して、一行ずつ調べればいいだけです。

ソースを書くときに仕組みを組み込んでおくのも一つの方法ですが、
やはり、一般的なものを作った方が面白いでしょう。
コメントと文字列に注意して、やってみましょう。
93デフォルトの名無しさん:03/08/26 03:49
保守age
こういう処理はパーサの応用です。
Delphi 用の Lex/Yacc もありますが pascalの文法は
状態遷移型で処理してもそう大変ではないです。

・コメント { 〜 } (* 〜 *) //〜
・文字列 '〜'
・文
と大きく3つに分けた後、必要に応じて文を解析してゆきます。
9586:03/08/26 13:34
>>90
サンクス!
ソースを応用したら思ったようにできました。
9655:03/08/26 21:14
>>91
なんか問題あったかな?なぜexeつけないほうがいいのか教えてくださいな。

それととりあえず
TMemo→TListView
ファイルをドラッグできるようにしますた。
97 :03/08/26 22:33
「複数の」ファイルをドロップできる?
パースにかかった時間をどっかに表示して
DnDなんていらないだろ。.dpr解析して関連ファイルを自動登録しろ。
>>96
第一に、仮に悪意のあるプログラムだった場合、初心者が困る。
第二に、このスレの住人には不要。 もしexeが付いていた場合、それを削除する手間がかかります。

*.dcu も入りません。

*.dof、*.dof は環境に依存するので付けない方がいいでしょう。
標準アイコンを使うのなら、*.res もいりません。
ナカムラタクオさんがユニットを解析するライブラリを公開していたと思うのですが、
どこで手に入りますか?
こっちからきますた
http://pc2.2ch.net/test/read.cgi/tech/1061090908/279

TrackPopupMenuでPopupMenuを表示させることはできた。
ではコードからPopupMenuを閉じるにはどうすればいいのかよ!
PopupMenuを勝手に消すのはWindowsのUIとしてどうかと思うが。
自前のフォームやTipHelpじゃ駄目なのか?
>>103
わかったあきらめる
105デフォルトの名無しさん:03/08/27 01:58
>>102
Escキーをエミュレートしてみそ。

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Keybd_event(VK_ESCAPE, 0, 0, 0);
end;
>>105
なるほd、ありがd
メインフォームがアクティブである時は常にIMEをオフにしたいのですが
どこのイベントで処理すればよろしいでしょうか?
ダイアログや別のフォームをShowModalしているときはユーザーが切り替えられるようにしたいのです。
>>107
ソフトウェア工学ではユーザーの期待を裏切る挙動はご法度なので
「メインフォームがアクティブになったときに自動でIMEをオフにしてくれる」
という機能にしといた方がコーディングも簡単だよ

普通IME切り替えようとして何も反応しなかったらPC壊れたと思う

仕様書にそんなとんでもないことが書かれてたなら頑張って説得して(笑)
10955:03/08/27 08:42
>>98
dprに全部書いてあるんだ。知らなかった。
やってみます。

>>99
(;´Д`)ハァハァ
なんかすごいことになってる。まずはソース理解しないと

>>100
了解
今度からつけないようにします。
>108
常にという表現が間違ってました。おっしゃるとおりメインフォームがアクティブになった時に
オフに切り替えれば良いです。しかしメインフォームがアクティブになった時のイベントってありますか?
そのまんま
112110:03/08/27 09:55
>111
私へのレスでっか?
>>110
君はオブジェクトインスペクタを見てそれっぽいのをF1してみることすらできないのか・・・?
別スレッドのループ内で定期的に呼び出されるある関数ポインタを
さらに別のスレッドから勝手に差し替えるのは問題ありますか?
(関数ポインタの処理はその関数内で全て完結しているものとして)

僕の足りない頭で考えた限りはどうせ今の処理が終わるまで
再び関数ポインタが呼ばれる事はないので大丈夫なんじゃないかと思うんですけど
スレッド内でもさらに畳み掛けてループが回ることって無いですよね?

要はStrategyスレッドを作りたいんですが
115114:03/08/27 10:23
間違った、Stateスレッド
116110:03/08/27 10:30
>113
じゃあずばりダイアログボックスが閉じメインフォームがアクティブなった時のイベントを教えろ。
>>114
差し替え部分は保護が必要。

if Assigned(OnYourEvent) then
 OnYourEvent(self);
でifの判定と呼び出しの間にnilを突っ込まれるとあぼ〜ん。

それ以前にイベントハンドラの差し替えはCPUの一命令では終わらないから(ポインタ2個分の代入)
差し替えてる途中の半端な状態でスレッドが切り替わることがありそう。
118デフォルトの名無しさん:03/08/27 11:06
Buf
>>114
関数ポインタなら現実的には問題ないよ。
イベントハンドラでも、オブジェクトを変更しないなら問題ない。

ただし、バス幅が8bitとか16bitの環境で動かす場合や、オブジェクトも含めて変更があるならダメだな。

関数ポインタを書き換えるなら ダブルバッファにしておく習慣をつけるのがいいね。
関数ポインタの配列を作っておいて、
afunc : array [boolean] of TFunction;
afuncpt:byteboolean;

書き換える時は
afunc[not afuncpt]:= 新しい関数;
afuncpt:=not afuncpt; //と書き換えてからフラグを倒して

読むほうは
(afunc[ afuncpt]) ( ) を呼び出す
>>119
おーなるほどー
ひとつ賢くなったよありがとう
>>117が解決できてない気が・・・
やっぱロックしないと駄目?
安全かどうか迷ってる暇があったらさっさとロックしろ。
いつの間にやらTCriticalSectionクラスとかできてるし。
BDEのエイリアス、ODBCのデータソースをソースで作成させる事は可能でしょうか?
初期起動の場合は上記2種のDB接続用データの登録を行いたいのですが、
わかる方いましたらご教授ください。
>>121
 OnYourEvent ->  OnYourEvent[afuncPt] に変更すれば大丈夫だよ。

ただし、afuncPt を Assigned からイベント呼び出しの間に2度変更されたらダメなんで
こういう場合、 bool じゃなくて

afunc : array [byte] of TFunction;
afuncpt:byte;
として
afunc[(afuncpt+1) and High(byte) ]:= 新しい関数;
inc(afuncpt) ; //と書き換えてからフラグを倒して
にしたらどう?
さすがに256回も書き換えるのは無理でしょ
125デフォルトの名無しさん:03/08/27 18:13
くだすれの方で質問しても回答が頂けませんでしたので、
こちらで質問させて下さい。

TWebBrowserを使って簡単なブラウザを作っているのですが、
画面を印刷する事が出来ません。
右クリック→印刷でやれば出来るのですが、
「印刷ボタンをクリックすれば印刷できる」
という仕様にするにはどうすれば良いでしょうか?

印刷ボタンを押すと
SendMessageで右クリックメッセージを送り、
さらにShift+Iを送って印刷する
という方法も考えたのですが、動作しませんでした。

宜しくお願いします。
127125:03/08/27 18:42
シンデキマツ
12855:03/08/27 21:46
ひとつ質問させてください。
procedure 〜
begin

end;
って形をとるのは
procedure
function
constructor
destructor
だけでいいのですか?
129デフォルトの名無しさん:03/08/27 21:46
DUnitって、
海外の http://dunit.sourceforge.net/
日本製の http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/
と2つありますよね。

とりあえずシンプルそうな後者を落として、細かい不具合とか直しつつ
遊んでみたのだけど、これ、作った人にどうやって連絡とるんでしょうか?
>>128
予言。
Var部のせいで君のやろうとしていることは破綻するだろう。
>>128
意図的に破綻させるのは簡単だけど
普通にまともにコードかいてるならそれだけ。
procedure foo;
 procedure bar;
 begin
 end;
begin
 bar;
end;
なんて形式もあるけどね。
132デフォルトの名無しさん:03/08/27 21:57
>>129
>細かい不具合とか直しつつ
うpして
>>128
ヘルプで予約語を見てみよう

込み入ったことをするならやはり再帰的に処理できるパーサが必要になる。
でないと、begin〜end;ブロックでメソッドを抽出できず、またメソッド名の抽出が>>130の言うようにvarの為にbegin〜end;でマッチした行の一つ前というようなわけには行かないので面倒になってしまう。
134129:03/08/27 22:12
どこにうpすればいい?

以下の点を直したわけなのですが。
・boolean を渡すタイプの Test() のメッセージが表示されないのを fix
・例外が発生することを試験するタイプの Test() が正しく動作しないのを fix
・起動のたびにブレークポイントを指定しなおさなければならないのを fix
・オーバーロードされたTest() の一部にメッセージ引数がないのを fix
・メソッドテストのたびにログに仕切り線を出すようにした
>>134
ここにページ作ってみたので上の方の[添付]でうpできるはず
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDUnit%5D%5D

といってもまだ使い方知らないんだけど。
13655:03/08/27 22:47
>>133
その手があったのか。どうも〜

俺はbeginの1行前とか深く考えないで
文頭のprocedure, begin. endって順番に調べて見つけたのから
配列にでもぶち込めばちゃんとそれぞれ対応する順番に
なるじゃん、と思ってたけどそれ以外にも関数の宣言のほうとかで
文頭に書いて配列でずれる可能性あるな〜
と書きながら思ったけどまずimplementationの行数を調べて
それより前だったら除外するってしとけばいいんじゃないかな。
文まとめられずにすまん。

っていうか元はくだらん質問だったのにこんなにためになるレスくれるなんて
このスレの人やさしいな。・゚・(ノД`)・゚・。
137129:03/08/27 22:47
仕事速いですね。。。
とりあえずうpしてみました。
>>136
どうでもいいが、case end; も考慮しないといけないからbegin end分けだけではだめだよ。
>>133 が言っているとおり、パーサーが必要になる(簡易パーサーでもいいけど)。まあパーサーくらい簡単に作れるだろう。
139129:03/08/27 23:00
読み返してみると空気を読めてなかった。
ごめんなさい>>55の中の人

>>82は実行できなかった。TGrep って
http://homepage1.nifty.com/bmonkey/delphi/delphi.html
にあるやつ?
>>138
case end;って文頭には書かないような気が。
まぁこんなこと言ってるときりがなさそうだし、パーサやらなにやら考えてみます。

>>139
いやいや全然OKですよ。upしまくってくださいな。
むしろ俺が変な流れ作っちゃったのか?だったらすいません。
俺なんか気にしないで話し進めてください。
TGrepはそこのであってます。
14155:03/08/27 23:12
↑あ、55です。
>>137
乙。
これってオリジナルのアーカイブに差分を上書きだよね。
143129:03/08/27 23:33
>>142
です。

ぐぐりまくって、なんか
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=54171
のスレ主が作った人なんじゃないかという気が。。。
144デフォルトの名無しさん:03/08/27 23:36
class THoge.function もあるよ。
コメントも考慮しないと。
implementation部にも宣言がかけますよ。

>>128

program

begin

end.

ってのもあります。
但し最後がセミコロンではなくピリオドだが。libraryもそうか。
重要テクニック

長い文字列型は、
P: PChar;
P[n] <> #0 なら、P[n+1]にアクセスできる。
147129:03/08/28 00:22
String、WideString の変数が空文字列を指している場合は、
その値は nil になってるんだっけ。だから無理にアクセスすると
あぼんぬ。
148129:03/08/28 00:27
うそだけど。
149デフォルトの名無しさん:03/08/28 01:49
空文字は #0 だから、キャストして nil にできるけど、
アドレスは有効では?
begin
end
が対にならないのって、

case
asm
ユニットの最後の end.

しかありませんか?
>>150
tryは?
>>150
record, classも追加
interfaceもな。

さらに

hoge = class;

というendなしの場合と

hoge = class
end;

の場合があることも考慮せよ。
classはendなし宣言もありだしrecordで共用体が混ざると・・・。ちゃんとした構文解析必須だな。
さらにコンパイラ指令も認識する必要があるかもね。
S := 'ABC';
をトークンに分割すると、どうなりますか?
S
:=
'
ABC
'
;
でしょうか? それとも
'ABC'
を一つのトークンと解釈するのでしょうか?

'(#39)が特殊シンボルだから、'単独でトークンを更正するのかな。
もう一つ。
$ も特殊シンボルですが、
$AB は $ と AB に別れるのでしょうか?
>>155
暴に聞くしかネェ
そんなの実装次第で変わるだろ。
>>155
パーサーの実装方針にもよるが、"'文字列'"ならば、"'"で始まり"'"で終わるものが文字列と定義し
更に文字列の内容の条件として"'"が二つ連続で現れた場合は終わりと見なさないことが必要。

"$"は、出現したら続く文字は16進数が必ず必要という条件なら数字部分と一緒でも構わない。

分割の最小単位は1文字だけど、どのくらいを纏めてトークンにするかは設計者のお好みでどうぞ。

と言ってみるテスト
>>155
何がしたいの?
自分の都合のいいようにパースすりゃいいじゃん。
Delphi Pascal の BNF や構文図が欲しいところですね。
ヘルプ見ろ
実はヘルプは結構あいまい。
このスレで本当にDelソースのパーサ書いたことのある人間の数
->0人
16455:03/08/28 06:44
↑あ、55です。
>>163
それは、自分がその最初の1人になるという自信の現われですね?(Y/y)

期待してます。
>>163-165
ほっほー、それではさっき完成したパーサは公開しない方がいいですね。
>>99のソースをトークンで区切ってみました。
http://forgamedev.zombie.jp/uploader/up5/img/220.txt

// コメントの後に改行が入るのはご愛敬。
168デフォルトの名無しさん:03/08/28 08:34
Delphiの引数って前から評価されることは保証される?

Foo(Bar, Baz); // Bar, Bazの順に呼ばれるか?
16955:03/08/28 08:43
なんか朝起きたらすごいことになってるな〜
聞けば聞くほど俺には無理な気がしてならない。

それと>>164は俺じゃないぽ。
偽者が現れるぐらいにはかまってもらえてるってことかw

>>166
ホスィ
>>168
Object Pascal 言語ガイド -> 手続きと関数 -> 手続きと関数の宣言 ->
呼び出し規約

stdcall; とか pascal; とかで変わります。
>>169
たかが行数カウントごときで厳密にやる必要は全然ないだろ。
・関数の頭からend;までを関数とみなす
・^\s+は関数の頭ではない
・^\s+endは関数の終わりではない
・今関数の中にいるのか外にいるのかのフラグを管理する。これだけで
function Func;
implementation
function Func;
begin
end;
が処理できるようになる
・Delphiは効率悪いのでPerlかRubyを使う
・このツールで解析できないような糞コードは書かない
Delphiの良いプロファイラってない?
できれば体験版があるのがいいんだが。
17455:03/08/28 09:07
>>171
^\sって何さ?

> ・Delphiは効率悪いのでPerlかRubyを使う
(゚听)リョウホウシラネ

> ・このツールで解析できないような糞コードは書かない
(・∀・)イイ!!
> ・Delphiは効率悪いのでPerlかRubyを使う
LL文法のパーサよりも正規表現のほうが効率が良いとは、これ如何に・・・
それとも*コーディングの*効率ですか?
RubyにはDelphiのパーサが既にあったりして。
>>175
>それとも*コーディングの*効率ですか?
この程度のツールにDelphi&パーサを採用する*人間*の効率です。
ゴチャゴチャ言うならもう Lex/Yacc使え! Delphi用のパーサも一緒に入ってるはずだ。 D3迄だったかな・・・
パースしたら行数が分からなくなる罠。
>>171
糞とは限らないと思いますが,1行目には同意.
>>179
トークンに行番号つけとけばOK
182デフォルトの名無しさん:03/08/28 14:40
type
 String = WideString;
 Char = WideChar;
ってやってエラーが出なくなる方法を教えてください。
CharはOKだけど、stringは予約語。
type AnsiString = WideString; なら通るけどね

C言語のTCHARのノリで、TSTRINGとかにすれば?
>>146-149が気になって調べてみたけど、

S := '' の時、
PChar(S) は #0 へのアドレスを返し、
Pointer(S) は nil を返すんだね。
>>184
知らなかった・・・PChar(s)もnilを返すものかと思ってた。
だからDLLとかでPChar返すときは、空の場合は条件分岐して#0入れた
Char型変数へのポインタを御丁寧に返してた・・・
プロジェクトオプションで条件を定義している場合は、
うまく解析できないと思う。

コメントがあるとソース整形は難しい。
>>185
それを Systems._LStrToPChar がやってくれます。

空文字列が大量にある場合にメモリの節約になるから、
こうやってるんでしょうかねぇ〜?
188デフォルトの名無しさん:03/08/29 00:54
Delphi32.dciの場所変えるのってどうするんだっけ?
Halbow氏が戸田っちにジャブを放った。
Delの関数内関数は、C++のinline付関数の様に
インライン展開されると聞いたんだが…本当か?
uso
>>190
誰から聞いたの?
実はそれ…。
>>190
思わず調べちゃったじゃないか!普通にcall命令だった。
多分Incとか特定の関数や手続きのインライン化のことと勘違いしていると思われ。
>>188
rdかも。
組み込み関数のどれがインライン化されるかの資料って
Delphi クイックリファレンスしか知らないんだけど、
System.pas を丹念に読めばわかるものなのかしら。
>>195
たぶん ヘルプにsystemとかかれているのに system.pasに無いのがインライン化されると思うよ。
たとえばAbsなんて無いよね。

でも、Absならいいけど、少し長くなるような関数はインライン化しないほうが今のCPUでは効率良いようだけどね
>>189
戸田っちも宮本も要らない。ただのノイズ。
>189
あれは狙ってやってるよなぁ?
>>194
rdってなに?
ノイズのわりには圧縮率が高そうだな
201デフォルトの名無しさん:03/08/29 10:18
すごくエロいサイトを発見でつ!(*´∀`*)ハァハァ…
美人女子大生や美人OLなのに パイパンおま○こ は反則でつよ。
http://plaza16.mbn.or.jp/~satchel/prettygirl/omanko/
20255:03/08/29 11:53
しばらくDelphi出来ないんで途中経過upしときます。
といっても前回のとあんまり変わってないんですが。
まだまだやりたことはいっぱいあるのに、全然実装されてないな〜

http://forgamedev.zombie.jp/uploader/up5/img/221.zip
Panel+Splitterを半自動的にリサイズするクラスを作ってみました。
マウスカーソルを合わせるとPanelがぴょこっと大きくなります。
http://onigiri.s3.xrea.com:8080/delphi/index.php?SmartResize
>>202
Posで関数行の中の最初のスペースの位置を得る
上で得た位置までの文字列でprocedureやらfunctionやらを判別
Posで開き括弧「(」の位置を得る     (Procedure Hoge(i: integer);みたいな場合
失敗すればセミコロン「;」の位置を得る (Procedure Hoge;みたいな場合
失敗すればコロン「:」の位置を得る   (Function Hoge: integer;みたいな場合

こんな感じでやれば関数名の行数さえ判れば関数名そのものを取り出しはできるよ。
20555:03/08/29 15:36
>>204
そのやり方は一度試してみたんですが、
エラーばっかりでまともに動いてくれなくて(;´Д`)
Posでスペースとかの位置を求めたらCopyで抜き出そうと思ったんですが・・・
Posでやるより
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
こういうの使って、状態遷移型で処理したほうがいいと思うが?
パーサ厨はすっこんでろ。
という結論が出ているわけだが。
>>205
99のソースではうまくできてるじゃん。55の中の人ではないんかな?
とりあえずどんなエラーがでるか判らないことにはどうしようもないぞ。
20955:03/08/29 18:01
>>206
そうなのか。
来週になったらDelphi再開できるからそうしたら見てみるわ。

>>208
>>99さんとは別人ですぞ。
エラーつってもいろいろあったな。
すまん。ほとんど覚えてないわ。
Halbow氏、猛ラッシュ。
Halbow Uzeeeee。毎度知ったかぶりな投稿うざすぎ。
個人叩きはマ板でやれ
今まで溜めてきたのが一気に爆発したみたいな感じだ。
214つーか:03/08/30 00:17
どこの話をしてんの?<ラッシュ
うるさい
>>211は○田ないし宮●
http://forgamedev.zombie.jp/uploader/up5/img/222.zip
面白そうなので作ってみますた。
グラフの実装がめんどくさくなったので適当です。
>>55はもう出番ないね。
来なくていいよ。
だから宮本は1行の文字数増やせって言ってるだろ
MLの件だが、素直に分けりゃ良いだけの話ではないかなと思うがな

質問->過去ログ嫁OKand常連馴合い
質問->答えor考察

みたいな感じで。
どっちにしろなんかもう更年期障害起こしちゃってる年寄みたいだなぁ
221デフォルトの名無しさん:03/08/30 10:45
test "a" "b" "c"

この文字列を
test
a
b
c
という異なる文字列に分解したい
おまいら教えてくれ!
たのむ!!

p.s.
Halbow氏は僕にいろいろ教えてくれるので個人的には凄くありがたいです
まぁMLの件に関してはちょっとあれですがw
sl := TStringList.Create;
sl.CommaText := StringReplace('test "a" "b" "c"', ' ', ',', rfReplaceAll);
>>221
Halbow氏に訊いたら?
224デフォルトの名無しさん:03/08/30 11:32
>>223
あのMLは
ロジックを聞くのはだめなんでしょ?
225デフォルトの名無しさん:03/08/30 11:33
>>223
粘着?
なんか>>221といい、>>55といい文字列処理の一つもできなかったり、ソース読んで調べることもできないようなアホが大杉。

代表格ヴァカ
228デフォルトの名無しさん:03/08/30 12:03
>>226
うるせぇ馬鹿!
図星つかれると逆ギレするのが今の若者の特徴?
年寄りはすぐ型にはめようとする。
やっぱりMLネタと厨房隔離用スレが欲しいよな

代表格ヴァカ
他の言語厨に煽られるだけだ。
厨房隔離用ではないが、こんなのあるんだが、なんでこっちに質問投げんのだろう
くだすれDelphi(超初心者向け) Part5
http://pc2.2ch.net/test/read.cgi/tech/1061090908/l50
厨の特徴
1.ググらない(調べない)
2.ソース読まない
3.タイムリーに答えが返ってくると思っている
4.面倒くさがる(その割には便利なツールを使わない)
5.ヘルプ・説明書を読まない(readmeすら読まない)
6.直ぐ質問する
7.思いつくだけ列挙して勝ち誇る
>>236
図星だったみたいだな(藁
8.↑これwwwwwww
239デフォルトの名無しさん:03/08/30 13:29
>>229
俺は切れてねぇYO!!(怒
図星取られて逆ギレするのは中年の方が多いと思うけどな。
>>226
>>55氏が該当するのかわかりませんが
一昔前と比べると最近は標準のライブラリである程度のことができるようになったので
ある程度までは何も考えずにそれを使えばよいのでしょうが,
その一線を越えると何もできなくなってしまうという方は多いように思います.

昔の人たちは比較的簡単な処理から自分で書いていたことによって
自然に能力が身に付いてきたのでしょう.
そういう意味では,かえって今の若い人は恵まれていないのかもしれません.

今の若い人たちには実践とは別に教養課程として,
文字列加工など,基礎技術の鍛錬が必要なのかも.

>>235
2ちゃんをグーグル代わりにしている香具師は多そうですね(笑).
(グーグル代わりに答えている香具師も,ですが(苦笑))
>>241
>昔の人たちは比較的簡単な処理から自分で書いていたことによって
>自然に能力が身に付いてきたのでしょう.
>そういう意味では,かえって今の若い人は恵まれていないのかもしれません.
これはかなり検討違いな主張だな。
特定の分野を除いてCだのなんだのの低レベルな知識なんて必要ない。

純粋培養なDel厨(たぶんフサも入るだろう)はお話にならないほど文字列処理・フィルタに弱い。
これはCの文字配列処理の知識で補うべきではなくスクリプト系の知識で補った方が100倍まし。

ロートルの価値観で若いもんをあさっての方向に誘導するのはどうかと思うぞ。
早めにIDEに組み込んである検索用正規表現ライブラリを標準添付しとけばこんな悲惨な状況にはならなかったのにな。
>>243
とっても怪しげな発言だと思うぞ。
もし、検索用正規表現ライブラリがあればどんなコードを書いて解決するつもりなんだ?
>>242
スクリプト系ならどう処理出来るというんだ?

str := " procedure prog(var r:Integer) ;" ;
みたいなのが混じった文をちゃんとパースするには、やっぱりパーサを書くしかないんだよ。
昔BASICで"1+2*3"みたいな文字列の計算に手間取ったなあ…(遠い目)

パーサなんて知らなかったから、数字に挟まれた演算子の並びを探しては、
一番優先順位の高い演算子から抜き出しては置換…
自分で言うのもなんだが最悪のアルゴリズムだった。

でもま、自前で色々工夫するのはそれはそれで楽しいので、修行も兼ねてアリでしょう
実際勉強にはなったし。
(今の自分なら間違いなくパーサ書くけど)
>>171って
ようするに行の先頭から function /procedure が始まっていたら
行の先頭から end;がある行までを関数とみなすって事?

それでいいなら 苦労はしないと思うが?
>>247
パーサ書くかな・・・再帰下降でいきなり処理しても100行くらいじゃないかな。
>>248
>それでいいなら
誰がいけないといったんだ?
言ったのはパースせねばいけないとのたまった原理主義者だけだろ。
それでいいなら TStringList.LoadFromFile して
const sproc ='FUNCTION ';
const sfunc ='PROCEDURE ' ;
const send ='END;';

for 文中で
if ( UpperCase(copy(Strings[i] , 1,length(sproc))=sproc)
or ( UpperCase(copy(Strings[i] , 1,length(sfunc))=sfunc) then 手続き始まったよ
if UpperCase(copy(Strings[i] , 1,length(send))=send then 関数ここまで

するだけでしょ? スクリプト言語持ち出す必要もないと思うが?
>>251
だからそんなスクリプトをわざわざDelで書くのはDel厨だけだった話をしてたんだよ。
ただ、コメントアウトされてる事を検出出来ないという1点をもって、これは使い物にならないよ

せめて、コメント部と、文字列部を事前処理する、字句解析を通してからなら判るけどさ
>>252
いや、こんな使い物にならないコードを書くDelphi使いはそんなにいないと思うが?

というか スクリプト使いというのは、関数の行数を測るという目的で、字句解析も通そうと思わないのかい?
>>254
別にDelも普通に使えるが。
目的が肥大化した関数のリストアップなら
別にGUI化なんて必要ないし厳密である必要も無いよ。
ディレクトリ巡って関数名+行数だして行数でソートして上位何件か表示するだけだろ。
コメントや{$ifdefで誤判定しても人間様が判断すればいいよ。
こんなツール一日に何度も使わなきゃならないもんじゃないし。
別に厳密であるなというつもりは無いがこんなものに時間をかけたくないんだよ。
>>255
字句解析書くのに20分程度かけるのが惜しいのかい?
書いておけば、それは又使えるだろ?

その後の構文解析は半日かかるけど、書いておけば、色んな用途に使える。
再利用出来るようにコードは書いておくべきだよ。
お前底なしの馬鹿だな。
>>255
時間かけずにって、 >>251のコードだってほんの2分で書けると思うが?
そりゃ人それぞれだよ
性器・・・もとい正規表現というか、有限オートマトンだけでは個数を数えなけりゃならん処理はできん。
かといって、パーサだけでも手続きの定義と使用のとこで別の処理が必要になる。

まぁ、こういうのは思っているのとは違って、実際にやってみると結構マンドクサイ。
>>241
漏れはちょっと違うと思う
昔と違って、今はプログラムできるマシン持っている底辺の数が違う。
「ちょっくらやってみるか」
程度の奴らが多いせいだろうね

基本的に、例えば文字列処理の所で煮詰まったとしても、解法を自力で調べるような性格の人間じゃないとプログラマには向かない。
なにもアルゴリズムを自分で作り出す必要はないが、昔と違って人のソースがネットでゴロゴロ転がっている時代だ
それを読む気力・技術等がないと結局厨のままで終わっちゃうだろう

まぁなんにせよ「勉強しない奴は駄目」っちゅうことだな。どんな世界でもね。
行数を求めるだけの解析なら、そんなに複雑な処理じゃないと思うよ

1、入力処理でグローバル変数で改行数を数えさせる
2、コメントと文字列を取り除き、それ以外を吐き出す
 結果を−>、空白TAB改行 ; ( でセパレートする  (閉じカッコやカンマ : などは見ない)
 結果を−>、Trimして一致結果で状態遷移型に文を解析する
begin finally except なら+ end で- 0に戻った時のグローバル変数で見る
Rubyバージョン。作成5分調整・テストで5分くらい。
自作のソースとVCLのソースでたぶん誤動作なく動いてる。自分用なら不満はないかな。

>ruby diagpas.rb Forms.pas | sort /R | head
LENGTH:LINE :FUNCNAME
000175:006321:procedure TApplication.WndProc(var Message: TMessage);
000146:007201:procedure TApplication.ActivateHint(CursorPos: TPoint);
000131:005697:procedure TScreen.AlignForms(AForm: TCustomForm; var Rect: TRect);
000126:004337:procedure TCustomForm.CMShowingChanged(var Message: TMessage);
000112:002928:procedure TCustomForm.WndProc(var Message: TMessage);
000090:001722:procedure TControlScrollBar.ScrollMessage(var Msg: TWMScroll);
000083:003513:procedure TCustomForm.CreateParams(var Params: TCreateParams);
000077:004186:procedure TCustomForm.WMHelp(var Message: TWMHelp);
000073:003719:function TCustomForm.SetFocusedControl(Control: TWinControl): Boolean;

264263:03/08/30 18:51
ソース
#!/usr/bin/ruby
# Delphiソースのメソッドの長さを計測
impl = func = nil
count = line = headpos = 0
puts "LENGTH:LINE :FUNCNAME"
while gets
 s = $_.chop
 count += 1; line += 1
 # implmentation以前をスキップ
 if impl == nil
  impl = true if s !~ /^implementation/
 # メソッドの先頭を検出
 elsif !func
  if s =~ /^procedure|^function|^constructor|^destructor|^class/
   func = s
   headpos = line
   count = 1
  end 
 # end;に遭遇
 elsif s =~ /^end;/
  puts format "%06d:%06d:%s", count, headpos, func
  func = nil
 end
end

>>264
procedure func;
type THoge=record
end;
var ・・・
begin
end;

なんて場合もあるから、そこまで簡易化するなら、次の先頭 procedure /function 又は最終行まで
でもいいんじゃないかな
>>265
メソッド内のtypedefやvar、関数内関数はカウントしてしまいたいし
逆にメソッドの上のコメントは排除したいからあれでいいでしょう。

という細かい仕様はおいといて、ともかく動くものが簡単にできるのだから
(スクリプト言語と)正規表現を覚えると便利だよといいたかったの。
267263:03/08/30 19:54
ついでにDelphi版uses RegExpr;しておいてね。
procedure DiagPas(Lines, Result: TStrings);
var
 impl: Boolean;
 s, func: String;
 count, line, headpos: Integer;
begin
 impl := False; count := 0; headpos := 0;
 for line := 0 to Lines.Count-1 do begin
  s := Lines[line];
  Inc(count);
  if not impl then begin
   if RegExpr.ExecRegExpr('^implementation', s) then
    impl := True;
  end
  else if func = '' then begin
   if RegExpr.ExecRegExpr('^procedure|^function|^constructor|^destructor|^class', s) then begin
    func := s; headpos := line+1; count := 0;
   end;
  end
  else if RegExpr.ExecRegExpr('^end;', s) then begin
   Result.Add(Format('%0.6d:%0.6d:%s', [count, headpos, func]));
   func := '';
  end;
 end;
end;
>>263,264,267
烈しく既出というか、出遅れ
関数行の抽出と正規表現はも99でもやってるじゃん
それでスクリプト言語を薦めても意味ない気が・・・
>>266
THogeの宣言の終了の end; で func を終わってしまわない?
270デフォルトの名無しさん:03/08/30 20:54
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  パーサバージョンまだ〜?
             \_/⊂ ⊂_ )   \________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .愛媛みかん.  |/
>>270
出すのは嫌だよ。 結構自作ライブラリ使ってるからね。
>>269
>s =~ /^end;/
だからインデントしてあれば終わらないだろ
正確にやりたいなら DCU32INT を弄ったらいい。

DCUを解析ツールなんだけど、全ソース公開されてる。
これならどの関数がどれだけの命令バイト数を使うかも判る
もちろんデバッグ情報として行番号も判るから命令生成に関わった行数が必要ならそれも出せるだろう。
>>268
正規表現だスクリプトだとほざいているが、結局やっていることは初心者の>>55と五十歩百歩。・゚・(ノД`)・゚・。
なんだかんだ言って





















パーサ書けないんですね
>>273
そっちが面白そうだ。あきらかに使えないツールをスクリプトで書くより10倍はマシだな
>>276
そんな事いったら、あきらかに使えないツールをパーサで力いっぱい書いちゃった奴に悪いだろ。










つか本人?(プッ
>>277
なんの本人?
279デフォルトの名無しさん:03/08/30 23:10
おかしな引数を受け取ったときどんな例外を投げればいいの?
定義済み例外一覧とかどっかにないの?
280デフォルトの名無しさん:03/08/30 23:12
>>279
EINVAL
日本人です。
282デフォルトの名無しさん:03/08/31 07:35
例外発生アドレスとマップファイルから、例外を生成した関数を知りたいのですが、
どうやるのでしょう?
>>282
IDEを使わずって事?
マップには相対アドレスが書かれているから絶対アドレスを相対アドレスに直す必要があるが
絶対アドレス一つだけでは無理。
スタックの内容とか
284282:03/09/01 02:36
>>238
IDEは使わずにです。リリース前にマップファイルを取るようにと
書いてあったので、そうしたいのですが、マップファイルが理解できません。

例えば、

Line numbers for Unit1(Unit1.pas) segment .text

39 0001:0002CC10 40 0001:0002CC13 41 0001:0002CC2D 45 0001:0002CC40

はどういう意味なのですか?
>>284
どういう意味かと言われたら、それは
Unit1.pas の 39行目が 0002CC10 相対番地に配置されたという事

実際の絶対アドレスは 4FCC10 とかに格納される。 
だもんで、どれか一つ絶対アドレスが判る必要がある。
解決方法としては、 例外が発生した時にどれか一つの関数アドレスを
一緒に表示しておけばいい
users group一体いつまでメンテしてんだよ
googleに引っかかるから激しくウザい
28755:03/09/01 23:51
>>217さんのすごいね〜
確かに俺は文字列処理とか弱い以前にやったことすらなかったけど
今回のがわりと勉強になりそうだし、個人的にはよかったかなと。
パーサとかははっきり言って俺みたいな初心者には難しすぎるし、
もっとDelphiに慣れたらまた挑戦してみたいわ。

まぁとりあえず俺はもう名無しに戻ります。
今まで質問に答えてくれた人たちありがとう。・゚・(ノД`)・゚・。
>>55
あんたはえらい
289282:03/09/02 01:09
>>285
なんだか面倒ですね。 マップファイルも大きいし…。
>>288
先ほどスレの流れを見ていたが
とてもでないがこういう受け答えをしている人間をえらいとは思えない
文字列処理なんて勉強しようという気持ち無いんじゃないか?
>>204>>205>>208>>209
291288:03/09/02 01:49
>>290

そうだね。自分の身の程をよく知っていて、まぁ、これからやるってんだから、
とにかく、えらい、ってことにしておこうよ。287 の最初の3行をすなおに
書けるだけでもエライ、ってことで。
私,やっぱり頭が20年前で止まってるのかなぁ.
正規表現はIDEの検索で使っている程度ですがもっと勉強してみようと思いました.
皆様に感謝.

>>287
作りたいものを見つけてそれを実際に作ってみたという点がすごく大事だと思うのです.

#そういえば正規表現で検索を使うときといえば
 メソッド名をアルファベット順に並べ替えるときに
 {procedure|function|constructor|destructor} .*\..*
 としてすべてのメソッドの先頭行を検索していますが,
 (Del5はイベントハンドラが一番下に来てしまうので)
 正規表現ライブラリを使えばこういうのをプログラム中でのテキスト解析にばしばし使えるのか….
 (「今更何を」とい声が聞こえそうw)
正規表現って、短く書く為にわかりやすさを犠牲にしていると思いませんか?
>>289
だったらさ、エラー出しそうな関数を必ず try 〜 except で挟んでおけばいいじゃない。
295288:03/09/02 09:10
>>292
>正規表現はIDEの検索で使っている程度ですがもっと勉強してみようと思いました.

同感。かなりもりあがったトピックのきっかけをくれた 55 には感謝。
話はガラリと変わってTCriticalSectionなんですが

TCriticalSection.Enterに一定時間以上かかっているなら諦める
という処理は可能でしょうか?
例えば別スレッドでたまたま処理が混雑してて
同期を取るのに5ms以上かかってしまうなら
5ms経過した時点で諦めて処理をスキップするような実装をしたいのですが
これはCriticalSectionでは無理なんでしょうか?
>>296
TCriticalSectionではできない。でもTEventかミューテックスあたりでタイムアウト可能なものを実現できる。
でも処理中フラグでも用意してEnter前にチェックすれば済む話のような気がするけど。フラグももちろん排他保護が必要かもしれんが。
>>297
なるほどMutexでできそうです

ところで動的配列の動的配列
TNode: array of Integer;
TTree: array of TNode;
みたいなのってどういうメモリ配置になってるんでしょうか?
例えば SetLength(Tree, 2); SetLength(Tree[1], 256); とした場合
Tree[1]は全然別の空間に取られてTreeのオフセット0には
そこへのポインタが格納されるんでしょうか?

動的配列の動的配列を一括コピー(複製)したいんですけど
SetLength(DestTree, Length(SourceTree)); してから
Treeの各要素に対してそれぞれLengthを得てSetLengthして
Move(SourceTree[1], DestTree[1], SizeOf(SourceTree[1]));
みたいにしなきゃダメなんですか?
SetLength(DestTree, Length(SourceTree)); だけだと
DestTreeの各要素はインスタンス化されてないみたいだし・・・
>>298
>Tree[1]は全然別の空間に取られてTreeのオフセット0には
オフセット1の間違いです
>>298,299

そのとおり。勝手にメモリを確保してくれることを期待するのは変でしょ。
長さの管理はすべてユーザの責任。手続きを一つつくるだけでしょ。
ML以外で人のソースとか話をたくさん読めるようなところありませんかね?
なんか今ML入会できないんですけど。
無駄話なんざここでいい。
ソースなんざ付属ソース嫁。
303naka:03/09/02 22:13
XP の Theme が嫌いなので、
自作のソフトを強制的にClassicで表示したいのですが
何か方法ありませんか。
>>301
入会しなくてもログは読めるよ
>>304
知ってますけどやっぱりMLだしちゃんと入会して読みたいんで
っていうか何で今入会できないんでしょう?
>>305
入会しても、最近はだいたい20通/日以下です。いまのログは7万を超えて
いる。したがって、10年分くらい読めるだろ。
>>303
自分で描画するしかネェな
若しくはコンポ見つけるか
>>305
入会しても「過去嫁」が多数だよ。
> 自作のソフトを強制的にClassicで表示したいのですが

つかいたくねぇ
>>305
簡単な質問だといたぶられるしな
じつはmanifestファイルに細工してインクルードすると出来るんだなこれが。
>>303
XP自体をClassicにしろよ・・・
>>313 そりゃそうだ
「入会」するのはイヤだけど、MLログは読みたいな。オレも。
ちったぁググれよ
http://www2.big.or.jp/~osamu/Delphi/
> ちったぁググれよ
そこでは「ググれ」ないよ
317314:03/09/03 01:15
>>315
いや、そーじゃなくて…。
>>314 勝手に読めばいいだろ
319デフォルトの名無しさん:03/09/03 01:24
ToolBar on CoolBarの位置保存・読み出しってどうやるんだ?
くだすれへどうぞ
MLログに並ぶの遅すぎ!
323デフォルトの名無しさん:03/09/03 23:36
オブジェクトにぶら下がってるメソッド・プロパティ一覧で前・次の候補に移動するショートカットって無いの?
カーソルはあまりに遠すぎる。
324デフォルトの名無しさん:03/09/04 00:17
>戸田、Halbow、宮本
お前らマジウザい。何度も何度も同じネタを無関係なサブジェクトの下で繰り返すんじゃない。
やるなら専用のスレッド切って真剣に死ぬ気でやれ。
>何度も何度も同じネタ

あとどこか教えて
>真剣に死ぬ気でやれ。
あんたがやったら。ML ごときで死ぬのはバカ
もう誰もネタ引っ張ってない気が。
>>324 遅杉
324が一っちゃんウザイ
>>324
ほんとにそう思ってるなら、どうだ、専用のスレッド切って投稿してみろ(藁
こんなところでグダグダいってないでさ。
324は投稿しない、に32,000ペソ!(^^)
332デフォルトの名無しさん:03/09/04 01:32
ここでMLの話すんなよ。入会してない奴に分からないネタを出すな!
ネタ出すなら投稿のやりとりさらせ。
どっちかにしろよ。
332が良いこと言ったに4096億ドラクマ!
332は統合スレの意味が分からない、に22円
332はMLに参加してないに12円!
談話室だし、Delphi絡みならなんでもありでいいんじゃない?
>>332
吐○サンお疲れさまです!
338335:03/09/04 01:56
なんだよー、おれの負けかよ!
339デフォルトの名無しさん:03/09/04 02:11
これまでのあらすじ

1. Aが厨房な質問をする
2. [Halbow|戸田]がそれに対して[教える|咎める]
3. [戸田|Halbow]が別の前提をでっち上げて2.を攻撃する。
4. 1.そっちのけで泥仕合開始。
5. 宮本がやはり1.そっちのけで参戦。
6. 三者が一通り言いたいことを言い終わるとスレ違いな発言はやめましょうと捨て台詞を吐いてそれぞれ退散。
7. 別の餌食となる1.が現れるのをじっと待つ。
>スレ違いな発言はやめましょうと捨て台詞を吐いてそれぞれ退散。

これ何番?
5まではおおむね正しい、とおもふ
6,7は339の個人的な感想
個人的な感想だけど、6,7 が事実だと強く推測するよ
6,7は感想というより妄想かもね
>>339 340に答えろよ! でっち上げかよ!
>>343 のも個人的な感想だしな
7は1が直接の目的ではなく2で相手を叩きたくてその口実が欲しいだけだろ。
はぁ。その二つの違いは?
>>339 はやく340に答えろよ! でっち上げかよ!
>>348
過去ログよめ。
読んだけど該当するものがないよ。
>>339 340に答えろよ! でっち上げかよ!
>>350
検索下手だね。めくら。よく読めよ。
339で長々書くのに比べたら番号くらい簡単に示せるだろうに
351=339 が逃げに入った!(^^)
手元にログがあればすぐ見つけられるでしょ。
日本語の読解力がないんだね。
つーかお前らもっと質問者の話し聞けよ>三馬鹿トリオ
何勝手に不明な部分を仮定して答えてんだよ。
だから荒れるんだよ。
おまえら,なんでけんかしてる?

ML ごときでスレ使い切らないでくれよ...
質問者に再質問してるんでは?
351=339=354 が逃げに入った!(^^)
三馬鹿トリオ(戸田、宮本、Halbow ) 自身は、質問を完全に理解していると思っているんだと思うよ。
こういうの何と言うんだっけ?
>>357
そうおもいたいのですね?
>>359
その脳内補完機能はDelphi7の新機能か?
めくそみみくそをわらう。
>おまえら,なんでけんかしてる?
妄想がでっち上げしてるから
>>362
本人登場?
それとも?

三馬鹿トリオを擁護する人がいるなんて信じられませんがね。
>>360
フレーム
反面教師
.... 終わった?
339はフレームかよ!
>>369お前何者だ?MLでのHN明かしたまへ
>>324 とその他
ほんとにそう思ってるなら、どうだ、専用のスレッド切って投稿してみろ(藁
こんなところでグダグダいってないでさ。
まともな神経の持ち主ならMLであんな糞議論をしないだけの分別を持ち合わせているものさ。
ML 雑談はここですか?

>>372
ほんとにそう思ってるなら、どうだ、専用のスレッド切ってまとも投稿してみろ(藁
こんなところでグダグダいってないでさ。
>>372
口で言うほど、まともな質問/回答してないでしょ。
そういうやつほど口だけは達者
376閑話休題:03/09/04 02:53
なぜDel厨はちょっとしたフィルタ処理を書くのにも
正規表現よりも構文解析を好むのでしょうか?
私にはわけが分かりません。
>>374
やだよ。
おまえこそ、ここでグダグダいう義務ないんだよ。
>>376
・正規表現ライブラリが標準で提供されていないから
・文字列処理が(C/C++ よりは)楽にできるから
・正規表現のことよく知らないから
・パーザー書くほうが高等だと思い込んでいるから
・フルセットの正規表現ライブラリより必要最小限のコードですむから。
>>377
374だけど、おれはぐだぐだ言ってないぜ。
>>376
正規表現ライブラリにできなくて、パーサーにしかできないことがあるだろ。既出すぎ。わからないなら勉強しなおせ。
>>376
Ruby256の青い本に、構造を持つテキストを処理するには
正規表現「だけ」では対応しきれない事が割とわかりやすく書かれてるから嫁

それに、正規表現と構文解析は用途が微妙に違うぞ
正規表現はlexの代わりにはなってもyaccの代わりにはならん
なんだぁ、便所の落書きは書くけど、人前ではろくに発言できないヤツばかり
つーか、アナライザ(正規表現 or lex or 手作業)で切り分けたトークンを、
パーサ(yacc or 手書きの再起下降)で処理するわけで、混同するやつどっかいけ
どうしてそんなに必死なんですか?w
低脳を納得させるのは疲れるだろ。だから俺はヴァカに答えられない質問にしかレスしない。
下手にヴァカがよってくると処理が面倒じゃん。残念ながら近年はろくな投稿がないのでROMばっかりになっている。
>残念ながら近年はろくな投稿がないのでROMばっかりになっている。

同感。なぜそうなったと思う?
停滞が進歩に取って代わったからだろ。
正規表現ライブラリごとき載っていないような死んだツールに未来は無い。
ふーむ、確かに Delphi は古めかしいなぁ。落ち目なのか。
ユーザの絶対数も、厨房を除くと減ってるんだろうね。
質問が出尽くしている感があるからだろう。大抵過去ログにヒットする。
でもこれから新技術な話題とか出てほしいな。IPv6とか。
次期バージョンはきっと.NETで少しは盛り上がらないかなあ。
個人的にはMSが無駄に既存の機能を再定義して無理やり利益を作ろうとしている気がしてならない。
既存のものだけで十分にやっていけるし。
むしろ、よくそこまで正規表現万能と思いこめるな…
Delphi1Jのお試し版からの古参ユーザーですが、なにか
>質問が出尽くしている感があるからだろう。大抵過去ログにヒットする。

そうだね。確かに。新たな信者はフリーのせいで厨房ばかり、というのもあるかも。
これは先が長くないね。個人的には32ビットのうちは使い続けるつもりだけど。
MLってコードの断片ばっかでライブラリの蓄積がまったく無いのがダメダメだよな。
おかげでパーサごときで玄人気分でおめでてーなって奴らであふれかえっとる。
>>393 そこまで ML に期待してる方がおめでてーなって思えるが。
2chにライブラリスレがあったと思うのです。
結局某に貢献したのってFreeAndNilだけだろなんか悲しいよな>ML
ML っていうシステムそのものが古いのかもね。このような掲示板方式のほうが
あってるのかもしれない。
んー。俺の記憶だとそんな大事にするようなコードはなかったぞMLには。
>>398 自分の投稿も含めてですね?
>結局某に貢献したのってFreeAndNilだけ
皮肉だね。よりによって。
>>399
当たり前のことを言うなよ。
俺の神コードはMLなど下賎なところには書かないよ。
>>401 2ちゃん専用ですね(藁
>>400
どうして皮肉なの?
>結局某に貢献したのってFreeAndNilだけだろ
これって何の話?

あの ML はまったく何も貢献していないと思っていましたが....
>>389
>既存のものだけで十分にやっていけるし。
それを停滞というのさ...
>>396 はやく404に答えろよ! でっち上げかよ!
だれもいないの?

実質二人くらいで騒いでいたのかねぇ
408デフォルトの名無しさん:03/09/04 07:27
戸田さんは間違えたことは言ってないと思いますよ。
5人くらいじゃなの?
低農が二人くらいいて、ほかの一人にいいようにあおられてるよ。
分別なんて言ってて、爆笑
>>408 釣り?
はあ・・・MLに出てるすべての話題を100%理解してる奴なんているのかよ
自分の知らない分野の話は、それが必要になったときにけっこう有用だよ

なんつうか、自分は何でも知ってるとでも言いたそうな勢いの奴って
はたから見てて痛い
>自分は何でも知ってるとでも言いたそうな勢いの奴
戸田とか戸田とか戸田とか...
そう思っていても口にはしない中村を見習ってくれぇ
ところで FreeAndNil の出典が DelphiML というデマは解決したんか?
「結局某に貢献したのってFreeAndNilだけだろなんか悲しいよな>ML 」
396 の妄想ですた。


つーか、どうすればそういった発想ができるのかある意味驚異!
>412
いや、411は、ここでMLは糞って言ってる奴らのことなんだが・・・

戸田も、知識はあるんだろうがああも見当違いが多いとねぇ
戸田に知識があると思っている点で、415 が糞。
見当違いするような知識って、ほんとの知識かな?
Halbow の突っ込みは正鵠を射た意見だよ。

Halbowは知識もあるし、まともに回答するからいいんだけど
戸田は過去ログに回答があろうがなかろうが過去ログ読めだし
宮本は自分がダメなのをDelphiのせいにしてDelphiの叩き
どころを探ってるように見えるし・・・
>Halbowは知識もあるし、まともに回答するからいいんだけど
戸田が絡むと必要以上に篤くなるのはどうにかならんのか。
せめて件名変えてくれよ。
このスレ休憩時間終わるとピタッとレスが停まるな
421デフォルトの名無しさん:03/09/05 02:33
やっぱり「FreeAndNil の出典が DelphiML」はデマですか?
Delphiはなにも生み出さない。
そう、バグもデスマーチも生み出さない
バグ絶対に作らないにはプログラムを書かないことだと聞いたことがある。
Delphiがバグを生み出さない理由はそこにあるのだろうな。
ユーザーがいないソフトもバグレポート0だよ。l
昔の人の格言に「Delphiは叩かれる」というのがあります。
Delphi-ML は何も生み出さなかった。かな?
IDE コマンドラインオプション

一般オプション

オプション説明

?IDE コマンドラインオプションのヘルプを表示します。
hmヒープモニタ(Heap Monitor)。メモリマネージャを使って割り当てられたメモリの量に関する情報を IDE のタイトルバーに表示します。割り当てられているブロック数およびバイト数を表示します。情報は,IDE がアイドル状態になると更新されます。
hvヒープベリファイ(Heap Verify)。メモリマネージャを使って割り当てられたメモリの検証を行います。ヒープにエラーが検出された場合はエラー情報を表示します。
nsスプラッシュ画面なし(No splash screen)。IDE の起動時にスプラッシュ画面の表示を抑止します。

npプロジェクトなし(No Project)。IDE の起動時にデスクトップファイルのロードを抑止し,デフォルトプロジェクトの作成を抑止します。
                  ノ      } ゙l、   」′           .,/′   .,ノ _,,y
    .,v─ーv_         〕      〕 .|  .il゙            《 ._   .,,l(ノ^ノ
   ,i(厂  _,,,从vy      .,i「      .》;ト-v,|l′          _,ノ゙|.ミ,.゙'=,/┴y/
   l  ,zll^゙″  ゙ミ    .ノ       .il|′アll!           .>‐〕 \ _><
   《 il|′     フーv,_ .,i″       ||}ーvrリ、             ¨'‐.`   {
    \《 ヽ     .゙li ._¨''ーv,,_     .》′  ゙゙ミ| ,r′                }
      \ ,゙r_    lア'    .゙⌒>-vzト    .ミノ′                 〕
       .゙'=ミ:┐  .「      ./ .^〃     :、_ リ                   .}
         ゙\ア'   .--  ,,ノ|    、    ゙ミ}                   :ト
           ゙^ー、,,,¨ -   ''¨.─   :!.,   リ                   ノ
              〔^ー-v、,,,_,:     i゙「   }                  .,l゙
              l!     .´゙フ'ーv .,y    ]                  '゙ミ
              |     ,/゙ .ミ;.´.‐    .]                   ミ,
              |     ノ′ ヽ      〔                   ミ
              }    }     ′    }                   {
              .|    .ミ     .<     〔                    〕
              .{     \,_   _》、    .{                    .}
              {      ¨^^¨′¨'ー-v-r《
                  ノ      } ゙l、   」′           .,/′   .,ノ _,,y
    .,v─ーv_         〕      〕 .|  .il゙            《 ._   .,,l(ノ^ノ
   ,i(厂  _,,,从vy      .,i「      .》;ト-v,|l′          _,ノ゙|.ミ,.゙'=,/┴y/
   l  ,zll^゙″  ゙ミ    .ノ       .il|′アll!           .>‐〕 \ _><
   《 il|′     フーv,_ .,i″       ||}ーvrリ、             ¨'‐.`   {
    \《 ヽ     .゙li ._¨''ーv,,_     .》′  ゙゙ミ| ,r′                }
      \ ,゙r_    lア'    .゙⌒>-vzト    .ミノ′                 〕
       .゙'=ミ:┐  .「      ./ .^〃     :、_ リ                   .}
         ゙\ア'   .--  ,,ノ|    、    ゙ミ}                   :ト
           ゙^ー、,,,¨ -   ''¨.─   :!.,   リ                   ノ
              〔^ー-v、,,,_,:     i゙「   }                  .,l゙
              l!     .´゙フ'ーv .,y    ]                  '゙ミ
              |     ,/゙ .ミ;.´.‐    .]                   ミ,
              |     ノ′ ヽ      〔                   ミ
              }    }     ′    }                   {
              .|    .ミ     .<     〔                    〕
              .{     \,_   _》、    .{                    .}
              {      ¨^^¨′¨'ー-v-r《
「FreeAndNil の出典が DelphiML」はデマでした。

おらおら。なんかいってみろ。うそつきども。
>うそつきども。

一人だけでしょ。
> Delphi-ML は何も生み出さなかった。かな?

過去ログを生み出した。それで十分。
IMEがオンの状態でもKeyDownイベントを処理したいのですが良い方法はありませんか?
>>434
WM_PROCESSKEY をみる
すでに過去ログは腐りきっています。>> 433
>>436
そうかもしれないが、事実は事実。
けどなんで「FreeAndNil の出典が DelphiML」なんて馬鹿なことを信じるんだろう。
人間って不思議!
>>435
WM_PROCESSKEY ってなに? ウィンドウメッセージにあるの?
使われないものは生まれなかったのと同義。
現状に合わせて更新されない過去ログ(とそれを見ろ。としかいわないアホ)は社会の害悪。
>>使われないものは生まれなかったのと同義。
自分のことですね? 同義じゃないですよ。
過去ログを更新するのはバカ。追加のみ有効。
>馬鹿なことを信じるんだろう。
馬鹿だからだろ。
>>441
時代遅れや間違った記述を訂正しないのは、過去への盲信。馬鹿以下。
>439
ヒントは与えた。
調べて実験しなさい。
445デフォルトの名無しさん:03/09/05 08:43
訂正します。「FreeAndNil の出典が DelphiML」は私の妄想です。
ごめんなさい。
ごめんなさい。
ごめんなさい。
ごめんなさい。

ごめんなさい。
>>443
おまえはログの意味がわかってないな。Tips とは違うんだぞ。
過去への盲信は443だけ。
>>444
インチキヒントじゃないの?
>447
かもね?調べて実験してから答えを出してもよいとおもうけどね。
で、Tips の意味わかってる? > 446

たとえば、メンテナンスされない Google 使うとおもうか?
>>448 SDK には載ってないな
>>449 だんだん苦しくなってきたな(藁
Google は過去ログビューワじゃない。
VK_PROCESSKEY の間違いでしょ。きっと。
>>451
ってーことは、google で検索もしないと。
>>453 こじつけもいいかげんにしろよな。
おまえは、過去ログを Google で見てるのか?
間違ったヒントのわりにはえらそうにしてるな
>453
Googleと比較されるの位置付けにあるのは、過去ログ検索機能だと思うが。

過去ログそのものとGoogle比較してどうするんだよ・・・バカ?
つーか、ここで過去ログは糞っていってるやつって、Tipsのように
答えがズバリ書いてないと納得できない低脳だろ?

昔の話だって自分の問題のヒントにはなるし、ある結論に至るまでの
いろんな意見の交換はそれなりに参考になる。

もちろん、それをそのまま今使おうとして失敗する奴も阿呆。
どっちにしろおまえら馬鹿。
>458 顔が真っ赤だぞ(藁
>457
そこまで話を広げられると終わりだな。
ヒントにもなるしならないときもある。
参考になるときもあるし、ならないときもある。
失敗するやつもいれば、成功するやつもいる。

そりゃ、あたりまえだ。あたりまえすぎて内容がない。無意味。無価値。
>457
はぁ。それで、なにをおっしゃりたいんで?
こいつらがわめき始めると、ほかの Delphi スレがぴたりと動きを止める。
なんでだろー。なんでかなー。
切れたヤツは放置!
そして半日書き込みがとまるのだね?
466デフォルトの名無しさん:03/09/05 11:37
戸田さんは間違えたことは言ってないと思いますよ。
さて、そろそろ昼休みでさらに一段と書き込みが増えますな
φ(。_。 ) カキカキコ
意味不明なレスがついてるな。

>460
まったく話は広がってないと思うけど。
んじゃあMLの過去ログが役に立たないって話はどういう意味なの?

>461
読んだまま。
「過去ログは糞って言ってる奴は低脳」
「昔の話をそのまま今使おうとして失敗する奴も阿呆」
もう少し日本語勉強し(ry

>>466 日本語に翻訳すると。。。

戸田さん自身は、質問を間違えずに理解し、間違っていないと信じている知識を説明されています。
しかし、ほとんど常に質問者の要求を理解できず、自分の体験を状況を無視して押し付けていらっしゃいます。

昼休みぐらいちゃんと休まないと午後の業務に差し支えるよ。
ストレス発散にちょうどいいんじゃないかしら。名無しでしか書けない連中なんだから...
>>468
もう相手にするのやめたら?
473デフォルトの名無しさん:03/09/05 16:30
ここは戸田さんに劣る厨房しかいないな。
↑ 自分モナー
戸田はにしのでも何でもいいから見習えよ、と
>>444
自分では一度も調べて実験したことないのね?
どうしたら、そんなにエラソーにできるの
はぁ・・・
激しく時刻のずれた投稿はかなり見づらいな
479デフォルトの名無しさん:03/09/05 23:56
まだMLの話してんのか…
談話室だからなぁ・・・
481デフォルトの名無しさん:03/09/06 01:00
日本語が分からないDel厨には何を言って無駄
482デフォルトの名無しさん:03/09/06 01:03
日本語も分からないDel厨が多いから、戸田先生も啓蒙しておられるのだよ。
↑ と、日本語で言っています
>>481 死滅スレよりようこそ。ほんんーとに、分かりやすいヤツだな、おまい(藁
485デフォルトの名無しさん:03/09/06 01:17
戸田ってどんな人だろうとUSERSのログ検索してみたら、
きちんと回答してていい人じゃん。

お前ら何が不満なの?
>> USERSのログ検索してみたら

users のログってどうやって検索するの? すみません、教えてください。
せっかく、4月から部署飛ばされて
投稿が減ったと思ってたのになぁ。
あっ、フサさん、どうも。users のログってどうやって検索するの?
過去ログ検索をして、回答がみつからないまま、検索結果の最後のほうに目当てのタイトルの
スレッドを見つけて、少し興奮しつつ見たときに
戸田の「過去ログを検索しましょう (^_^)(^_^)(^_^) THE REAL PROGRAMMER (^_^)(^_^)(^_^) 」
ってのに当たると正直なんか悲しくなる。
ども。
usersの検索はよくわかりませんが、
AboutDelphiで見るといいんでは?
>>490
ども。このごろ見ないんで、どうかしたのかと心配してたんです。
そのトリップ見るとなんか安心します。
AboutDelphi は知ってます。>>485 が users のログ検索したので、
どうやったらできるのかな、と。
よく知らんが、脳内検索じゃねーの。
Del厨はほんと情報収集能力がブビ厨以下だな
ttp://www2.big.or.jp/~osamu/Delphi/
だからそこは users じゃないってば。
googleで分かるだろ馬鹿
死滅厨に限界が来ました。
苦しそう
えっと、仕事で真剣に誰か助けて欲しいって
思うくらいに、ぢごくってます。
2chにくる余裕がありませんでした。

出張先のホテルの湯船で水死体のように
浮きながらシャワーにまぎれて苦やし泣きしてみたりして
人生の悲喜こもごもを堪能してます。
いいオッサンなのに…よお。まじ泣きですよ。だんな。

いや、Delphiとは関係ないのですいません。
いや、ほんと、ここは楽しい談話室です。

幸せです。(死後吐も一段落したし。)

幸せ気分でおやすみなさい。
>>498
Delphi使うからそういう状況になるんだよ
>>500 わっ、フサさんの仕事知らないんだね。
死滅スレで書きまくってこい!
Delphi使って幸せになった奴なんて見たことない
不幸な身の上なんだね。かわいそう
    ∧,,∧  ところで、時期がもう
   ミ,,゚Д゚彡   時期なんですが
    ミ つ旦)~~  D8奥たんの、進捗は
  〜と,,,~),,~)   いかがなものでしょうか?

  誰か知りませんか?

  いったいどうなるんでしょうね。
  既存のコンポーネントなど
  どこまでつかえるようになるのかな。

あ、とりあえず、仕事では一切Delphiは使ってません。
腐れSヨの真似事です。あーっとVBは使うか。
競合他社さんの優れたシステムがVCL製だと気が付いて
転職したくなる気分です。
506Dale L. Fuller :03/09/06 02:26
>>505
優れたシステムが VCL 製だからといって
VCL で作られたシステムがすべて優れているわけではないので...

結局は人のセンスだからな
>VCL で作られたシステムがすべて優れているわけではないので

誰もそんなこといってない。センスわりー
センスたんハケーン
>>506
> 優れたシステムが VCL 製だからといって
> VCL で作られたシステムがすべて優れているわけではないので...
どっからそんな話が出てきたよ?
腐れ固定必死(w
ひとは皆、必ず死ぬものさ、 ただいつ死ぬかが判らないだけ
>>498 手伝おうか?マジで
>>505
その情報に関しては、きのう時間があったのでWEB上で探しまくったのですが、
Borlandのページで公開されている以上の情報は見つからなかったです。
ただ、11月のカンファレンスでいくつかセッションがあり、その中で Delphiと
.NETのトラックがあるので、そのとき(まで)には何らかの形で明らかにされる
のはと。
514デフォルトの名無しさん:03/09/06 16:52
Indyコンポーネントについて質問していい?
>>514
その質問が妥当かどうかについてはMLの議論の結果を待たねばなるまい。
c:\test\..このパスを
をc:\test
に変換してくれるような関数はありませんか?
extractfilepath
array of string, integerとかをtypeした型ってない?
Types ヲミロ
520デフォルトの名無しさん:03/09/07 00:12
Formの新規追加したときデフォルトで自動作成の対象からはずす方法ってない?
OTAいじり。
>>520
そういうオプションがある、というか一応見てから質問しろよー
>>520 ツール オプション デザイナ 自動生成の対象に追加
のチェックを外す
質問させてください。
MMSystemを利用して、マイクから入力された音声を、
バッファに以下のように取り込みました。

WaveINOpen(@FhWaveIn, WAVE_MAPPER, @FWaveFormatEX, Self.ThreadID, 0, CALLBACK_THREAD);
WaveInPrepareHeader(FhWaveIn, FpWaveHdr, SizeOf(TWAVEHDR));
WaveInAddBuffer(FhWaveIn, FpWaveHdr, SizeOf(TWAVEHDR));

これでFpWaveHdr.lpDataに入力された音声がデータとして
保存されていると思うのですが、ここからデータを取り出して、
ある音量以上の入力があったときにだけ、何らかの処理を
行いたいと思っています。
しかし、ポインタ関係の知識に疎いからか、FpWaveHdr.lpData
に保存されたWaveデータの数値を取り出すことができず
悩んでいます。

このデータを取り出すことができれば、Waveデータの無音部分
(設定数値以下を無音とみなす)を排除したり、マイクに対して
入力信号があったときだけ録音したりするソフトが作れると思うの
ですが、どなたかこのpWaveHdrにバッファとして保存された
データの生の数値を取り出し、入力レベルとして比較できる方法
をご存じの方がおられましたら、お教えいただければと思います。
String型プロパティでマルチライン編集できる
D6対応のプロパティエディタないでしょうか?
>>526
画像用プロパティーにしか見えないが。
528デフォルトの名無しさん:03/09/07 05:02
2ちゃん用ぶらうざって、データをサーバから読み込むとき、
datファイルを全部読み込んでませんか?

新しいレスを認識するたびにdatファイルを読み直していたら、
IEより重くなると思うけど、どうなのですか?
>>524
>ポインタ関係の知識に疎いからか

そうだと思います。ポインタを勉強した方が早道で、応用がきく。
>>524

いくつか方法があるよ16bitなら

var p:^Smallin ;//16bit符号付きポインタを
にして
L:=p^ ;inc(p);
R:=p^ ;inc(p);

とポインタインクリメントしながらループする方法と

var p:^ array[WORD] of Smallin ;//16bit符号付き配列のポインタ( ほんとはこう書けない いったん配列型を定義する事)

L :=p^[ i*2]
R :=p^[i*2+1]

と配列として扱う方法。 この場合関数を書いて、関数に参照渡しで配列を渡すともっと綺麗に書ける。

両方とも lpData からは型変換するか関数書いて 引数をabsokute で別名を与えるかする。
Smallin ってなに?
>>531
それに突っ込むなら absokute にも突っ込んでくれ
>>532
でもタイポにしては2回出てる
関数書いて別名を与える場合は

procedure prog( lPdata : PChar );
var p:^Smallint absolute lPdata ;
type aSmallint=array[WORD] of smallint;
var q:^aSmallint absolute lPdata ;

begin
・・・・

てな感じにする。 こうすると
pもqもlPdataも 同じ物理アドレスを参照するようになるから、

L := q^[0] ;
R := q^[1] ; inc(p,2); //2 word =4byte分ポインタを進められる。

みたいに扱える。

8bit/16bitの両方を扱う場合は、関数をそれぞれ用意するとシンプルだけど
absoluteで別名を与えて一つの関数で処理する事も出来る。
ポインタつかわなくても.....

type
TLRRec = record
L,R:SmallInt;
end;

TWavRec = array[word] of TLRRec;

var
Data:TWavRec;

として

Data := FpWaveHdr.lpData^;

とすると

Data[i].L とか Data[i].R とかでとれるんじゃないかと
>>535
lpData は PChar 型だから、FpWaveHdr.lpData^ はCHAR型。よって、その代入は出来ない。

やるなら、
http://pc2.2ch.net/test/read.cgi/tech/1029120920/431
のようにする。

procedure t2(var x:Char);
  type TLRRec = record
   L,R:SmallInt;
  end;
  type TWavRec = array[word] of TLRRec;
  var Data:TWavRec absolute x; //<-------- 別名として配列を定義
  begin
   Caption:=Format('%8x %8x',[data[0].L,data[0].R]); //<---これで配列としてアクセス出来る
  end;

呼び出しは、 t2( FpWaveHdr.lpData^ ) ;  と先頭番地を参照で渡す
> その代入は出来ない。

そうだね。キャストするだけだけど....

Data := TWavRec(FpWaveHdr.lpData^);

これでもダメ?

>lpData は PChar 型だから

そうなの? 型なしポインタだと思ってた。
>これでもダメ?

ポインタ同士はキャストできるんで、上のだめなら

type
PWavRec = ^TWaveRec;
TWavRec = array[word] of TLRRec;

にしておいて

Data := PWavRec(FpWaveHdr.lpData)^;

で確実
>>537
動くのは動くけど、それは良くない。

理由は var Data:TWavRec; は (Max(word)+1)*4 という領域を
ローカルならスタックに取っている。

そして代入はこの全領域コピーという意味になる。
 Data := TWavRec(FpWaveHdr.lpData^);  <--- この部分ね

つまり、殆ど無駄なコピーがされてしまう。
あるいは、録音ブロックサイズによってはこれでも足りないことがあるかもしれない。

>>538 でも同じ。

皆さんありがとうございます。
いちおう、以下のようにしてみたんですが、これで可能なんですかね^^;;;
今は8ビットモノラルに限定してテストしてるので、以下のようになってます。
ただ、実際にしゃべったりしてテストしてるんですが、想像とは違う値が
でてくるので、WaveHdrに保存されてる音データの形式なんかを調べてます。
Waveのようにデータ数→実データのように保存されてるのかしら。

procedure TWaveControl.GetPeak();
var
 Level: ShortInt;
 MaxLevel: ShortInt;
 pLevel ^ShortInt;
begin
 LoopCnt := FpWaveHdr.dwBytesRecorded;
 pLevel := @FpWaveHdr.lpData;
 for i := 0 to LoopCnt do
  begin
  Level := pLevel^;
  Level := Abs(Level);
  if Level > MaxLevel then
  begin
   MaxLevel := Level;
  end;
  Inc(pLevel,1);
 end;
end;
>>540
ソレで動くか?

 pLevel := @FpWaveHdr.lpData;

・・・・怪しい・・・・
>>541
ガーン
ポインタを勉強きまつ
var
 Level: ShortInt;
 MaxLevel: ShortInt;
type PShortInt=^ShortInt; //こういうふうに関数内でも型は定義出来るから
var
 pLevel PShortInt;  //出来るだけポインタ型を定義してから使う方が後で楽
begin

 ・・・
 pLevel := ShortInt(FpWaveHdr.lpData);

スマン
 pLevel := PShortInt(FpWaveHdr.lpData);
>>539
>代入はこの全領域コピーという意味になる。

そうみてもこれは間違いだろ。
>>539
>代入はこの全領域コピーという意味になる。

×そうみてもこれは間違いだろ。
○どうみてもこれは間違いだろ。
>>539
>殆ど無駄なコピーがされてしまう。

なーにいってんだか。どんな根拠あって(ry
いや根拠はある。
配列のサイズを決めておいて、それを録音ブロックサイズにあわせておけば>>536でもOKだよ。
あっと正確には >>539 はたぶんダメで >>540ならOKね
× Data := TWavRec(FpWaveHdr.lpData^); <-- 警告か、エラーになると思う。こういうキャストは出来ない筈だ
○ Data := PTWavRec(FpWaveHdr.lpData)^;  <--似てるけどポインタならサイズが同じなのでキャスト出来る筈

Delphiでは実体の型変換はコンパイル時にけっこう制限される
ポインタなら同じポインタ間でキャスト可能だ。

で、当然実体の代入は全コピーになるから、コピーせずに普通は使うけど
コピーしたからといって間違いじゃない。
リンク先まちがいました。>>527

それにしてもどんどん雰囲気悪くなるね>ML
そうなんですか
553デフォルトの名無しさん:03/09/07 16:37
戸田さんは間違えたことは言ってないと思いますよ。
クラスとか勉強したてでよく判ってないんですが教えてください。
TListを継承し、その中にオリジナルの別のクラスを入れて
そのクラスを複数、リストにして管理したいのです。
ですが、
TTest = class

end;


TTestList = class(TList)
 Test: TTest;
end;

とやっても結局はTTestを一つしか管理できないし
複数を扱うためにはどうすればいいのでしょう?
やっぱりテンプレートがない言語はダメだな。
TObjectList使え
558554:03/09/07 18:00
>>556
ポインタもよくわからんのですが参考にはなりそうですね。
ヘルプと格闘してみます。

>>557
これなら確かに目的の動作はするかもしれませんな。


thx!
559デフォルトの名無しさん:03/09/07 23:27
http://130.158.124.192/~takeuchi/delphi/article/066/066170.html
にある NkDropTarget.pas ですけど、
終了時に Notification で、 FWindow := Nil; にしているから、
RevokeDragDrop(FWindow.Handle) を呼ぶ機会がないと思うのですよ。

いいのですか?
ML で質問汁
561デフォルトの名無しさん:03/09/07 23:47
>>555
アセンブラは何もないといってもいいくらいだけど使われている。
テンプレートがないだけで何がダメなのか具体的に答えてみろ。
テンプレートがないだけで何がダメなのか具体的に何もないといってもいいくらいだけど使われている。
563デフォルトの名無しさん:03/09/07 23:56
>>561-562
こういう人間は過去に何度も見た。

ローカル変数がないだけで何がダメなのか具体的に何もないといってもいいくらいだけど使われている。
構造化ができないだけで何がダメなのか具体的に何もないといってもいいくらいだけど使われている。
クラスがないだけで何がダメなのか具体的に何もないといってもいいくらいだけど使われている。

こういう人間はここから成長しない場合が多い。
Del厨も同じ類の人間なんだな。
564デフォルトの名無しさん:03/09/07 23:57
別スレッドの例外をそのスレッドで
Application.HandleException(Self);
で処理してもいいのですか?
それとも、Synchronize しないと駄目でしょうか?

565デフォルトの名無しさん:03/09/07 23:59
>>564
お前もいい加減成長しろよ。
Delphiばかりやっているからそんな下らん疑問をもってしまうんだ。
テンプレートがないことのもっとも大きな弊害は何かといえば
>>561-563のような馬鹿が議論にすらなっていない
低レベルなレスを何度もつけることだな。もう飽きたよ。
>こういう人間は過去に何度も見た。
類は友をよぶ
568デフォルトの名無しさん:03/09/08 00:00
>>566
> 低レベルなレスを何度もつけることだな。もう飽きたよ。
お前もその一人なんだがな(w
放置できないDel厨の馬鹿さ加減があらわになっているな。
自演してるくせに。
>放置できないDel厨の馬鹿さ加減があらわになっているな。
そっくり自分に返ってる
>Del厨も同じ類の人間なんだな。
厨は何厨でもいっしょ
572デフォルトの名無しさん:03/09/08 00:04
> >放置できないDel厨の馬鹿さ加減があらわになっているな。
> そっくり自分に返ってる
ごめんよ。俺もDel厨なんだわ。
>>559
ウィンドウの再生成に対応もしていないからサンプル程度に捉えるべし。
ちゃんとしたOLEドロップターゲットにしたかったら対象のコントロールを継承して作れば確実。
バグってたらサンプルか(w
575デフォルトの名無しさん:03/09/08 00:35
レスがなくなったな。
もうそろそろ遊ばれていたことに気づいたかな?
Del厨はよくつれるので面白い。(w
576559:03/09/08 01:04
FWindow := nil を
Window := nil にしたらうまく行きそう。

あと、TNkCustomDropTarget.Destroy で OleCheck を呼び出しているけど、
デストラクタで例外を送出したらマズイですよね。

>>573
ウィンドウの再生成はウィンドウ側で対処しておきます。
>>551
http://www.howtodothings.com/showarticle.asp?article=327
の、TCaptionProperty を参考にプロパティエディタを作ってみては?
同名のプロパティエディタがあるので別の名前を付けた方がいいよ!



>>575
捨て台詞までつまんない。
うすっぺらいな、お前。
>>578
  ∧_∧
 ( ´∀`)<
580デフォルトの名無しさん:03/09/08 14:52
DelDel某や
疑わしきは有無を言わさず殴るべし
  ∧_∧
  (. ・∀・)   | |
 と    )    | |  ガッ
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  >>579
 (_フ彡        /  
>>581
ワロタ
>>516-517
遅いレスですが
>516がやりたいのはもしかしたら相対パスから絶対パスへの変換なのでは?
だとすればExpandFileNameになると思います.

>>540 = >520
WAVE関係には疎いのですが
Windowsの8ビットPCMは符号なしらしいですので
shortint型(8ビット符号あり)ではなくword型(8ビット符号なし)を使うべきでは?
何か意味があってのことならごめんなさい.
584デフォルトの名無しさん:03/09/08 23:29
DelDel坊主、Del坊主、あ〜した天気にしておくれ〜♪
無理。
    ∧,,∧  
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

[Analysis] 闇に包まれるソフトウェア開発の現場
http://www.atmarkit.co.jp/news/index.html#eclipse
つまんねー記事読ませるなよ。2chの雑談並に無価値な文章だな。
    ∧,,∧   と、いわれても。
   ミ;゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

InstallShield Express For Delphi 5の話題を
Delphiとは関連がないから
InstallShield の ML で質問しろって
いうほどの、無価値なレスよりは
なんぼかましと思うです。
妬んでいるんだから、ほっときなよ... > Delフサギコ
>>588
香具師、前も同じようなレスをつけてたな。
そのMLのURLは出さねーのな。
激しく暇だからGoogleのヒット件数を調べてみた。一ヶ月でどのくらい増えるのかね。

http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=Borland+Delphi
日本語のページからBorland Delphiを検索しました。 約17,300件中1 - 100件目 ・検索にかかった時間0.58秒

http://www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=Borland+Delphi&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
全言語のページからBorland Delphiを検索しました。 約634,000件中1 - 100件目 ・検索にかかった時間0.27秒

日本/全言語比 2.73%

次回調査予定日 2003/10/09
>InstallShield Express For Delphi 5の話題を
>Delphiとは関連がないから
>InstallShield の ML で質問しろって

この論理でいくとデータベースは全部駄目そうだな
>>586
eclipse の意味に引っかけたんだと思うけど、あきらかに Sun に対抗するための
命名だったわけで、MS が光とは、笑わせるよな。
>>588
インスコシールドの質問投げた本人のレスも適当だったし、ますます初心者が寄りつかず、常連がでかい顔するようになるな
>常連がでかい顔
常連って誰?
>InstallShield Express For Delphi 5の話題を
>Delphiとは関連がないから
>InstallShield の ML で質問しろって

付属ツールに関する質問は全部駄目なのな
Delphi用のツールだったらいいような気もするがなぁ
もうMLなんてどうでもいいよ
>>588
>いうほどの、無価値なレスよりは
ああいう投稿って、自分の判断が絶対だ、と確信してないとできなよな。
いろんな考え方があるかもしれない、と想像する能力が足りないような。
アメリカと同じで大きな顔をしたほうが勝ちなのよ。
ということはトミーズ雅は勝ち組なのか・・・
>>583 他多くの皆様

大変、お世話になりました。ありがとうございました。
おかげで無事にレベルを取ることができました。
あとは、監視時間や、トリガーのかけ方等のタイミングの
問題になりそうです。

>>583
ご指摘の通り、8bitの場合は符号なし8ビットですので、
byteで取得します。気づかずにそのまま載せてしまい
ました。

いずれ、バリバリかけるようになったら、Tipsサイトでも
立ち上げて、そのなかでご報告できればと思ってます。
ありがとうございました。
602デフォルトの名無しさん:03/09/09 14:46
AnsiPosの途中から検索バージョンってない?
>>602
Ansi文字=シフトJIS文字は 先頭から見ないと全角半角の区別が出来ないからね
>>603
それは前回の検索で保証されてインデックスを使えばいいんじゃないの。

function AnsiPosNext(const Substr, S: string; Index: Integer): Integer;
var
 P: PChar;
begin
 Result := 0;
 if (Index < 0) or (Length(S) < Index) then
  Exit;
 P := AnsiStrPos(PChar(@S[Index]), PChar(SubStr));
 if P <> nil then
  Result := Integer(P) - Integer(PChar(S)) + 1;
end;

procedure sample;
var
 s, ss: string;
 i: Integer;
begin
 s := '表\表\表';
 ss := '\';

 i := AnsiPos(ss, s);
 while i <> 0 do
 begin
  Writeln('found:', i);
  i := AnsiPosNext(ss, s, i + Length(ss));
 end;
end;
Unicode使え。楽だぞ。
どう楽になるの?
>>604のAnsiPosNextのUNICODE版キボン
AnsiPos() は、2バイト文字1バイト文字を自動判別するから、なんも楽になることは
ない。605 は、ちょっと勘違い
608607:03/09/09 19:47
それよりも、604さん、例のコードで最初に AnsiPos() を使わないで、
全部 AnsiPosNext() を使った方がきれいじゃないか。全部列挙するという
意味では。
>>592
>この論理でいくとデータベースは全部駄目そうだな
「Paradox について」には反応しないなぁ。
InstallShield Express For Delphi 5 より関連薄そうなのに。
610604:03/09/09 20:34
>>608
いわれてみればその通り。半端にFindFirst/Nextにひきづられてしまった。
やるなら
function AnsiPosFirst(sub, s: string; var index: integer): Boolean;
function AnsiPosNext(sub, s: string; var index: integer): Boolean;
か。実際には
function AnsiPos(const Substr, S: string; Index: Integer = 1): Integer;
で十分だね。名前がいやなら次点はAnsiPosExかな。
    ∧,,∧  ファイル・フォルダの
   ミ,,゚Д゚彡  移動/コピー/削除
    ミ つ旦)~~ 名前変更
  〜と,,,~),,~)  シェル使用/未使用
          などなどが
        一斉にわかるように
    まとまっているテクニックページって
    どこかありますか?
    ∧,,∧  なんか、懐かしいけど
   ミ,,゚Д゚彡   AnsiPosで範囲を指定したり
    ミ つ旦)~~ してる関数です。
  〜と,,,~),,~)  RangeAnsiPosのCountにMaxIntを指定すると
          AnsiPosNextな動作をするはずです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1023631451&rm=100

AnsiPosExとかの名前って
VCLでも使っていたような気がするなあ…思い過ごしかしら。
>>612
ワロタ。ちょっとがんばりすぎだよ。部分検索したけりゃ>>604のに
(PChar(S) + Index+Count)^ := #0
って#0打ち込んどけばいいじゃん。
    ∧,,∧  にゃぬ!
   ミ゚Д゚;彡   
    ミ つ旦)~~ 
  〜と,,,~),,~) あんた賢いね。
>>609 InstallShield に恨みでもあるんじゃねーの。過去ログ検索するとそんなんばっか
なお、今回の ISX の質問は無事、IS-users で解決しました...
つーか元質問者は納得してしまいました。
↑なんのはなし?
ParadoxのMLはないの?ないから、関係薄くてもOKなの?
文句がつかなきゃいいの。
偉そうな顔しているほうが勝ちなの。

戸田、中村あたりなら、どんなに Delphi と関係なくても許されるの。
AnsiStringってスレッドセーフ?
>>620
基本的にバス・あるいやCPUのアクセスデータ幅以上のデータ型は全てスレッドセーフではないと思ってかかった方がよいです。
スレッドセーフなデータ型、ってあるのか? > 621
アトミックオペレーションを記述できる。ってのとすべてのアクセスで排他処理する。ってのは異なる次元の話だよね?
>>622
その通りですね。言葉足らずスミマセンでした。

単なる代入を2つのスレッドで行った時に、どちらか後で行われた代入が正しく残るかどうかという
内容についての発言が>>621だと読み替えて下さい。
>>619 了解しました
625デフォルトの名無しさん:03/09/10 22:50
好きな方使っとけ
好きな方使っとけ
function CreateFileA(lpFileName: PAnsiChar; dwDesiredAccess, dwShareMode: DWORD;
lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD;
hTemplateFile: THandle): THandle; stdcall;

function CreateFileW(lpFileName: PWideChar; dwDesiredAccess, dwShareMode: DWORD;
lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD;
hTemplateFile: THandle): THandle; stdcall;
誤爆です。新スレへどうぞ
> >>Ansi文字列はUnicodeに変換される。
> というわけで、Delphi でも大丈夫
かなり重度なDel厨だな。
Delphiでも大丈夫な理由は、
Ansi文字列は"VBが"Unicodeに変換してくれるからか?
975 :デフォルトの名無しさん :03/09/10 19:55
Unicodeのファイル名を扱うにはどうすればいいの?


976 :デフォルトの名無しさん :03/09/10 20:02
>>975
現実的に考えてDelphiじゃ無理。
.NETなら余裕なんだけどw


だから無理だって。ライブラリが対応していない。
ユニコード版ワイド文字列用のファイル関連APIをラップするだけでは?
なにを騒いでるの。
630デフォルトの名無しさん:03/09/10 23:01
>>629
ライブラリが糞なこと。
Win98ってNTFS扱えたって?
ここみて
http://www4.airnet.ne.jp/munakata/filesystem.html
VFAT16や FAT32は unicodeだと言ってるようだけど、
自分でセクターダンプしてみて判断した方がいいよ。
>>ライブラリが糞なこと。
ユニコードへの対応については確かに糞だね。
くだすれDelphi(超初心者向け) Part6
http://pc2.2ch.net/test/read.cgi/tech/1063202727/
>ユニコードへの対応については確かに糞だね。
そうだけど、できるできないはライブラリで決まってる訳じゃないよ。
不便だけど。Windows.pas にはワイド文字列用のインポート宣言があるから、
できることはできるね。めんどくさいけど。現状では、あんまりユニコードで
あることでの恩恵は感じないけど。なんか重大なことでもあるの?
>>631
NT系ならFAT32に対してUnicodeでファイル・ディレクトリを作成できる。
9X系なら失敗する。思わず実験しゃったじゃないか。
で、Unicode対応していないアプリケーションがAnsiにマップできないUnicodeを含むファイルは扱えないっと。
Unicode にマップできない Ansi文字ってのはないの?
互換性の問題もあるんだし
VCL->SJIS
VCL.NET->UNICODE
でいいだろ。
つうか初心者スレでやるネタでもないだろ。ここでやれや。
>>635
へえ、そのファイルをFDに入れて Win9xから読めるの?
ところで、Win32 のエディットコントロール(TEditとTMemoに相当)やリストボックス
やリストビューなんかが保持している文字列は、内部的にユニコードになってるの?
>>639
テキストの長さを返すメッセージはバイト数を返すね。文字数じゃなくて。
だから Unicode になってないんじゃ。
Delphiってほんと糞だな。(ゲラ
そだね、Unicode に関しては。それ以外は素晴らしいけど。
>>640 OS自身も遅れてるのね。
>>639
SendMessage(WM_GETTEXT)を使って調べれ。
>>644
SendMessage(WM_GETTEXT)を使って調べると、内部的な文字コードが分かるの?
SDK のヘルプを読むと、NT系のコントロールは内部的にユニコードを使ってる
ように書いてある、ように読める部分があるね。コモンダイアログは明らかに
ユニコードのようだし。
>>604のコードはまずいだろう。
>>613もしかり。

と、釣られてみました。
なんか、↑の口調、誰かに似てるんだよなぁー
>>647
その意地の悪い性格は長年MLに関わってきたからでつか?
650647:03/09/11 02:11
>>649
そう。
どうしても一言言わずにはいられなかった。
他の何千人もの人の様に黙っているなんて出来ない。
    ∧,,∧  すごいふるい記事列挙ですが
   ミ,,゚Д゚彡   日経の記事を最近、存在に気がついたので
    ミ つ旦)~~  紹介してみます。
  〜と,,,~),,~)

Delphiもそれなりで、.NETでも思ったよりもシェアはへってないかな。

VB開発者が次に選ぶ言語の行方は?
http://www.atmarkit.co.jp/fdotnet/questionnaire/2002-11/2002_11.html
ITPro 記者の眼【結果発表】あなたはどのプログラミング言語-ツールを使っていますか?
http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20030407/2/
@IT:Insider.NET -- 読者調査結果 第7回 Visual Studio .NET 2003は“買い”か?
http://www.atmarkit.co.jp/fdotnet/questionnaire/2003-04/2003_04.html


>他の何千人もの人の様に黙っているなんて出来ない。
他の人はもし発言したとしても
意地の悪い性格が見え隠れするような内容にならない。
  ∧,,∧  教えてくらさい
 ミ,,゚Д゚彡
 ミつ[|lllll]).
〜ミ   ミ
  ∪''∪

WideStringで処理している時に
表示上の文字のバイト数を求めるにはどうしたらいいでしょうか?

Length(WideString)x2を求めたいのではなくて
半角なら1バイト全角なら2バイト
でカウントしたいのです。

とりあえずはWideString→AnsiStringにキャストしてから
Lengthを取得していますが、
ShiftJISにはなくUnicodeにある文字列についても
正しく処理したくて、このやり方が正しいかどうかわかりません。
>表示上の文字のバイト数
できません。表示してみなきゃわからない。

>半角なら1バイト全角なら2バイト
半角/全角それ自体がフォントのグリフ(字体)の問題だから。
「ShiftJISにはなくUnicodeにある文字」、たとえば u+2800 をどの幅で記述するか。という情報は UNICODE にはない。
グリフ(字体)とコードの分離。が(当初の)UNICODE の目標だったし。

大雑把に言って、UNICODE には「半角/全角」の概念はないから、求めることはできない。
653さんのおっしゃる通りだと思いますよ。

もし、どうしてもというなら、固定幅フォントにして Canvas.TextWidth くらいかな
>固定幅フォント
なぜ固定幅フォントにする必要があるの?
>表示上の文字のバイト数を求めるにはどうしたらいいでしょうか?
あっ、これのためか。なるほどぅ。
表示上の文字のバイト数と表示の幅となんの関連がある?
そもそも「表示上の文字のバイト数」ってどんな意味かな?
>>657 たぶん >>654 の言うような意味じゃないのかな?
>>657
Shift-JIS だと「表示上の文字のバイト数と表示の幅」が一致(比例)する。のだよ。歴史的に。
フォントによっても違うしね…
前に同じこと質問した事があるが、結局>>654しか無かった
何のためにそんな値が欲しいんだ?使い道が分からん。
画面のレイアウトに
TTextMetric.tmAveCharWidthの値を使ってそれより大きいか小さいかで全角半角をエミュレートする。
という方法で俺はUnicodeでプロポーショナルフォントの擬似固定ピッチ化というのをやったことがある。
 ∫,,,,,,,,,∧,,∧   ど、、どーもどーも、
⊂,,,,,,,,,つ;゚Д゚ミつ ありがとございます。

利用目的なのですが

EmEditorのPlugin作ってまして
「行末をスペースで埋める」
って処理を書こうとしています。

行末の何文字(Byte)分を半角スペースで埋めるかを求めたくて
すでにある1行文字列が何バイト分の
領域を占めるのかを知りたかった。

AnsiStringなら問題ないんですがちょっと欲だして、
Unicode対応したかったのですが
難しそうですね。

レスくれたみなさん、産休

665デフォルトの名無しさん:03/09/12 12:43
Result := 0;
if foo then
 Result := 2;
こういう書き方って無駄な代入が最大二回発生するけど
最適化してくれるの?
>>665
どういうふうになったら最適化と思うの?
if foo
then Result := 2
else Result := 0;

とかだと分岐が増えるからサイズも実行サイクルも増えるよね。

それとも
Result := 0;
if foo then inc(Result ,2) ;

これは同じだね
>>665
無駄な代入は最大1回だと思うんだけど。
2度おきると考えているのなら、解説してみてください。
論理的に言って、そのコードに無駄な代入はないでしょ。
無駄は、省ける可能性がある場合だけ。Result := 0; を省くと論理が
破綻する。
>>665
気にするな。
>>669
オマエも気にするな。
671デフォルトの名無しさん:03/09/12 21:08
DelphiはVBに比べて型に厳しすぎて駄目だ。
頭の固いお役所仕事より、柔軟で融通の利く方がパートナーとして優れてるに決まってる。
>DelphiはVBに比べて型に厳しすぎて駄目だ。
頭のゆるい人には、型の厳しさがどんなに重要か分かってない。
>>672
アンチSmallTalkerですか?
Delphiが型に厳しいか?Javaとかと比べてもゆるゆるな気が
>アンチSmallTalkerですか?
そうですが、何か?
>Javaとかと比べてもゆるゆるな気が
例えば?
どんなデータ型も入るVariantがあるVBのどこが型に厳しいのかと?
どんなデータ型も入るobjectがあるJavaのどこが型に厳しいのかと?
>>675
あぁ、やっぱり。( ´,_ゝ`)プッ
↑、こいつかなりオカシクない?
>どんなデータ型も入るVariantがあるVBのどこが型に厳しいのかと?
だれもそんなこと言ってないだろ。
>>679
おかしくないと思うよ。
うるせー馬鹿
アフォ一人放置できない敗北主義者は逝ってよし!
またキチガイが現れた
みなさん。いいですか〜。
放置。放置ですよ〜。
>>684
なに必死になってるの?(w
686デフォルトの名無しさん:03/09/12 22:56
TListView を仮想リストにして使ってるけど、仮想リストの時は
各リストの左端に出るチェックボックスって使えないの?
Checkboxes を True にしても表示されないんだけど。
自分で描画しろよ。
688デフォルトの名無しさん:03/09/13 00:19
やっぱりVB.NETのOption Strictみたいに型に強くも弱くも自由自在にできないと。
その点でDelphiは全然機能が劣ってる。
>>671は正論だが、Del厨はやっぱり都合の悪い意見は即荒らし扱いだな。(w
事実なのに。
Delphiは帯に短し襷に長し
http://pc.2ch.net/test/read.cgi/prog/1062144150/
DelphiはVB.NETに機能的に劣るのですか?
それでは旧VB6ユーザーも誰もDelphiには移行したがらないですね。
移行したいよ〜。今までの糞コードすべて封印して。
まあ、実際このスレの連中も今Delphiなんて使ってないから。
焦ってC#のお勉強中だろ。VB.NETにたどり着くまでには程遠いな。
.NETにはまだ魅力的な部分が見えないのだけれど。
MSがヴァカ騒ぎしてユーザーから金を毟り取るためのプロジェクトにしか思えない。
.NETでしか使えない必要な機能とかあるなら、使ってみようかという気にはなるのだがなあ。
Delphiの型システムが中途半端なのは確か
>>693
Longhorn
まぁ MS Office が .NET で全面的に書き換わったら、そのとき .NET を使うことにするよ。
ゲイツの実験台になる必要はなかろう
ヘジの実験台になってC#に全部いいところ持って行かれたがな。(ゲラ
>>697
ところが悪い点も引き継いでいるんだよなぁ...
.NET 版コンポーネントとか作っているとイライラ。
699デフォルトの名無しさん:03/09/13 02:04
#bye
#end
新ネタがないからって散々外出なネタでスレ埋めなくてもいいだろ。
同じことを一人で延々とやってるのが楽しいお年頃なんだろう。
ところで、IDE のイベントログのフォントがプロポーショナルなのが
非常にイヤンなのですが、なんか変える手段があるのでしょうか?

あるとしたら誰も知らないレジストリキーがあるか、OpenTools な
話になるのかしら。
さて、どうかな?
>>702
TDebugLogView というフォームがイベントログです。
これは proide50.bpl -> proide50.jpn (日本語化) にありますから、
このリソースを書き換えてしまえばどうですか?

うまくいったら教えて下さい

705704:03/09/13 08:33
ちょっと無責任なので自分で試してみました。
1、exeScope (リソースハッカでは jpn は直接編集出来ないので ) 起動
2、proide50.jpn を D&D
3、左ペインで Resource -> TDEBUGLOGVIEW を選択
4、右ペインで Font.Name = 'MS ゴシック' を2行目に追加
5、編集->変更を書込む 

という操作です。
.NETもYahooBBみたいに街頭で配れば普及するかもしれないね。
>>705
リソースハッカーでもいけたよ。
>>698
どのあたりがイライラする?
>>708
企業 ヒ. ミ. ツ. だもん. 教えられないよぉ。

逆コンパイラで WinForm のソース作り直すのにもお金かかったしね。
710708:03/09/13 11:30
>>709
いや別に秘密まで教えてもらおうと思わないが、
漏れもつくっているので(ただし、ほとんど翻訳だが)。
確かに一言で言うと、なんかこまかいところまで行き届いていないと言うか…。
VC++でActiveXを作成していたころに比べるとはるかにマシだけど。
VCLの作成に戻るとある意味ホッとする。
ひとつだけ。
.NET は Win98/me もサポートしているけど、ろくにテストされてません。
特に us-ascii 以外の文字(日本語だけでなく、ヨーロッパのアクセント記号付き含む)の扱いがひどい。
MS にしても、98/ME は、もう気にしていないんだろうけどね。
文字/文字列が UNICODE になった。ってことですべて解決。なんて思っちゃいけない。ってことですね。
何をしたくて .NET やってるんですか?
MS に代わってベータテストしてるんだろ。
.NET ユーザってマゾなんですか?
まあ、俺もDel8出たらベータテスタになるつもりだけどね。
>>714 多少その傾向はあるようだ。
Delphi で作って/使っていた社内用のコントロールを .NET 用に焼き直しているんだよ。
>>717 だからなんのために? Del8 でたら意味ないじゃん。
>>718
だって、VB.NET用として売れるだろ? あいつら自分で作れないんだから 今ならいい商売だ。
720717:03/09/13 12:50
>>719 は偽者。
Octane 出れば話は変わるけど、今現在存在しないからね。
こればっかりはしょうがない。

会社組織全体から見れば WinForm の解析は重要な資産となるわけ。

で、やっぱり同じ人が造っただけあるなぁ。とね。
ん?
Octane のベータテストなら始まった模様。
ny に流れている。
なんか MSの新しいパッチ適用(Win2000)したら D5のデバッガがまともに動かなくなったんだけど
他になったひといる?
http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/security/bulletin/MS03-039ov.asp

D7では問題起きてないから、 なんかパッチ適用した前後でD5のどれかのDLL壊れたのかな・・・
D5再インストールしてみるか・・・

> 会社組織全体から見れば WinForm の解析は重要な資産となるわけ。

そうですか。なにをするための資産ですか。レファレンスにたくさんのってますけど。
そもそも今現在、なんのために .NET つかってるんですか。
.NET でしかできないことってあるんですか。
724702:03/09/13 15:22
一応報告を。。。

リソースハッカーではだめでした。

うちは Delphi6 なためか proide60.bpl しかないのでそれを eXeScope で
いじりました。RCData の TDebugLogView を開いて修正。イベントログは
TStringGrid らしいのでそこの定義にフォントについての記述を追加する
(charset、size とかもあわせて)。

で保存して delphi 立ち上げたら反映されてる。
IDEの改造は適当にパッケージ作って、変換コードを組み込んで
Applicationを辿って該当フォームを探しプロパティの値を変えることでもできる。
リソースいじるより全然楽かと。
726デフォルトの名無しさん:03/09/13 17:22
1年前の記事を今日初めて読んだ726
>>722
漏れD5だが問題なし。
>「D5のデバッガがまともに動かなくなった」
具体的にはどんな動き?
729デフォルトの名無しさん:03/09/13 23:39
kylixを入れたんだけど、メニューバーとかが文字化けしてしまいます。どうすればいいでしょう?
>>729
Linuxの糞仕様です
>>728
そうか・・・・こっちはDelphi再インストールしたけど直らない。
というかD5updateが何故か出来ない。
Windows再インストールだな・・・・

具体的には、デバッガで実行してSTOPした後の再実行や、終了後のハングアップです。
>>731
再インストールしてもWindowsUpdateしたら同じことのような。
かといってWUしないのも現実的じゃないし。
733731:03/09/15 00:37
ああ・・・悲しい事に、原因はHDDにあったようです。 スレ汚しすんません
>>733
モツカレー。気にするなよ。そういうこともある。
つか、致命的問題になる前に解決してよかったと思った方がいいかも。
735731:03/09/15 18:02
慰めてくれてありがと。 この前40M壊れて80M買ったばかりなのに・・・
残暑の影響みたいだな。
今日買ったHDDも触ってみたら異常に熱いから、 ケースのふた開けてクリップ扇風機で冷やしながら使う事にしました。
は・・・はちじゅうめが?!?!
>>736
Gの間違いだろ
俺のノーパソですら200Mはあるのに
オレのポケコンすら4096Mはあるのに
オレのMZ(略)
オレのぴゅう太(略)
オレのM5(略)
ネオジオスラ100Mだぜ
>>738
いったいOSは何が入って(ry
742デフォルトの名無しさん:03/09/16 16:38
VCL死滅おめでとうございます。

Borlandの新マルチプラットフォームIDE C++BuilderX
http://slashdot.jp/developers/03/09/16/0613259.shtml?topic=58

> GUIフレームワークも従来のVCL/CLXからwxWindowsになりそうで、
512 MB RAM recommended minimum
768 MB RAM recommended

フルネイティブのくせに何だこりゃ。.NETの方が軽いな。
744デフォルトの名無しさん:03/09/16 16:47
Delphiじゃ他社製コンパイラも糞もないし、CLXがゴミとなってはウィソ専用だな。(プププ
死滅一直線だな。(ゲラ
やっぱりVB.NETやってて正解だったな。(大爆笑
746デフォルトの名無しさん:03/09/16 16:50
ネイティブDelphiもVCL/CLX死滅で意味なし。
Delphi.NETもVBに劣る中途半端さ。
Delphiやってた奴はほんと悲惨だな。
747デフォルトの名無しさん:03/09/16 17:00
クロスプラットフォーム路線
本命 : JBuilder
対抗 : C++BuilderX

Windows路線
本命 : C#Builder
負の遺産 : Delphi
748デフォルトの名無しさん:03/09/16 17:02
C++BuilderのVCL絶縁宣言とは、言い換えれば某のDelphi絶縁宣言だよな。
VCLあっての某製品だったのにね。
なぜそんなに必死なの?
C++の新しいマルチプラットフォーム環境が発表されただけだろ。
ここまでDelphiを叩いてる奴見ると笑えてくるな
よっぽど暇なんだな。
DelphiのC++サポートがなくなっただけでそ?
一番悲惨なのはBCBやってた奴なんだからそんなに騒いでやるなって
wxWindowsって他社製かよ。
http://www.wxwindows.org/
C#コンパイラに続いてGUIライブラリも手放すってことか。
http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
これ読むとなかなかよさそうだね。
ただ、フォームひとつひらいても300〜400KbyteというのはVCLと変わらない感じ。
755Delフサ信者:03/09/16 17:17
>>751
いや、それは正しいとはいえないかも。
Delphi使いこなせる環境も能力もないに過ぎないということだよ。
その話題は
【GUIライブラリ】wxWindowsでのひょーん
http://pc2.2ch.net/test/read.cgi/tech/1052186697/

こっちに移動して下さい。
>wxString
また独自文字列かよ・・・
いいかげんにしてくれよ・・・
Win32上のVCLと言うのはある意味完成形だと思うし、
C++Builderがこれ以上のバージョンアップをしようとしても
余計な機能をごたごたつけるような形になり、もう魅力的なものでは
なくなっているのではないかと思う。
最小限のサポートとバグフィクスを提供していれば、リソースは十分に
あるわけだから、ここで戦略的に C++ & VCLを終結させても何ら問題ないと思うけど。
だれか困るヤツはいるのかな?

かく言う漏れもまだDel5.これで十分。
これとは別にC++Builder.NETが出る予感
CLX路線は少し無理してる感じだったからね。
C++ライブラリであるQTをDelphiでラップして、それをまたBCBで使うというのは

相変わらず似たり寄ったりな半端ライブラリが乱立してるな。
そんなことじゃ.NETに集中しているMSにはとても勝てそうにないな。
買った自分の”道具”の自慢と、人の道具の中傷しかできないようだけど。
それで、その優れたツールで何を作れるのかねぇ・・・。

俺としては、別に必要に迫られれば.NETだって覚えるってだけなんだが、
たかが開発環境に何をそんなに必死になってるんだろう。
>>760
ストリーミングができるようにするには、C++じゃRTTI含めて機能が足りないからねえ…。
Pascalで書かれたGUIツールキットとか無かったのだろうか。
VCLはまだWinAPIが見えたけど、CLXはQtを意識させないぐらいにラップしてるので
Qt以外のCLXとかできても良さそうなんだけどな…

>>761
VBX, MFC, ATL, WTL, WFC, ActiveX…
まあGUIなんて流行りのデザインもあるし、OSの変化にも付いていかなくちゃならないし
次々に新しいのが出てくるのもむべなるかな。VCLもいい加減追加がかさんで無理が来てるしね…
>>752
>>759
C#BuilderかDelphi.NETのバージョンが3ぐらいになったら、C++Builder路線はどっちかまたは両方に統合されてる予感
(Managed C++からVCL.NETを…かな?)
C#Builderがそんな売れるとも思えないので、バージョン3くらいでそれら全部が統合されると思われ
>>765
それが行われると、ほとんどMS Visual Studioと何ら変わらなくなるような気が…。
雑談系なのでこっち移動。

          C+BuilderXを
    ∧,,∧  ぐぐってTOPが
   ミ,,゚Д゚彡  ZDNetChinaってのは
    ミ つ旦)~~  なんか不思議。
     チャイナでは9/10のNewsだったみたいです。

何書いているのかさっぱりなので、混乱増すばかり。

http://www.zdnet.com.cn/developer/news/story/0,2000081594,39163220,00.htm
http://www.google.com/search?q=%22C%2B%2BBuilderX%22&ie=UTF-8&oe=UTF-8&hl=ja&lr=

>>766
現在でもVC#とC#Bと何も変わらない気も・・
Delphi版が出るとしたらDelphiXか



・・・ん?
どっかで聞いたような・・・
クロスプラットフォームDelphiか・・・いいね。
・自前のTBitmap(OSに依存しない)
・ファイル入出力はTStream
・フォームにはTBitmapを通じたダブルバッファ方式の小規模GUI

こんな感じの小型GUIで Pro版以上なら x86以外の為にCコードも吐き出せるとかさ
770DaleL.Fuller:03/09/17 09:12
>>769
夢を語るのは楽しいだろうけど、現実はそうは行かないってことだなぁ。

その要求なら Java で間に合う。
でもまあ TBitmapがOS非依存だけでも メリットあるな。 DOSエクステンダーで動かすとかさ
>>771
それくらい自分で作れ
TBitmapのOS非依存てのはものすごく巨大なプロジェクトだよ。
1、直線・円・多角形の描画・これは太さ1に限れば簡単だけど、破線や太線は難しいよ。
2、ベジェ曲線、多角形塗りつぶし、リージョン これらは厄介
3、フォントの展開 さらに厄介


>>773
単にお前の技術力の低いからそう思うだけ。
その程度で巨大といってたら、世の中、巨大だらけだよ。
そうなのかね? それじゃ製作お願いしたらどれくらいで出来るもんかね?
お願いじゃなくて、先ずプロジェクトを建てるもんじゃないかぃ?

IndyやIBXも確か某外のプロジェクトのはず。
いや、>>774さんの技術力が高いようだから一人でどの程度の期間で出来るのかなと。
値段によっては、作って貰って買い上げて オープンソースにするのもいいかなと
なんか厨房的な展開だなあ…
2D描画処理の実装なんて、描画系に心得があるプログラマなら書けて当然なんだが。
777は、文字列置換、分解などを一から書けないやつと見た!
というか773が上げている問題点が
ほとんどOS非依存の部分に言及してるように見えるんだが・・・

実線が描けるのに破線が描けないのは単にアルゴリズムを理解してないだけだし
ベジェ曲線だの多角形塗りつぶしだのをOSがサポートするわけが無いし(コレもアルゴリズム理解してないだけだろ?)
フォントの展開(ビットマップ化のことか?)だってAPIなどのマニュアルを読むだけだし

要は773がただのバカだから話が変な方向に行くんだろ(笑)
>>780
?だからTBitmapのOS非依存について話しているんだろ?
1、破線を描くのはまだよいとして太い線の場合の高速実装は少し面倒だよ。
2、ベジェ曲線も、多角形塗りつぶしも WindowsのOSがサポートしているよ?
 ベジェを描くだけなら面倒じゃないけど、ベジェをDDAで高速描画するのを一から作るのは結構大変だよ。
 多角形を塗りつぶすのも、ソートしてスキャンライン化してDDAで描くのを多色でやるのは結構大変だよ。
3、フォントの展開をAPI読んでやったらそれ、OS依存じゃないか。
BEGIN_EVENT_TABLE
   |
   |
END_EVENT_TABLE()

が似てるってだけだろ。このやり方はBCBでも同じだしね。
783732:03/09/17 19:33
誤爆すまん
おまいらTBitmapとTCanvasの区別くらいつけてください
785772:03/09/17 23:12
太線なんて四角形と半円*2でいいじゃん。
Windowsのリュージョンは性能が悪いからな…。
フォントの内部仕様を知らないのが困るね。

1と2で一ヶ月、3は不明。
クロスプラットフォームの実装を間違った方向で考えているやつが何人かいるね。
>>785
・・まあ1ヶ月お仕事モードでドキュメント無視で出来るのなら普通かな(100人中5〜10人目くらいだ)
1ヶ月で自由時間のみで出来ますなら結構すごい奴だな。
本物のプログラムってそんなに大変なものなのか。
1ヶ月お仕事モードったら、漏れみたいなへたれ(100人中80〜90人目)でもドジンソフト2本作れるのに・・・
そりゃ、32bitモードに限って作っても手間は大変だよ
だいたい ベジェをDDA描画とか・・・これはできる奴が限られてしまうだろう。
直線・円ならDDAの解説サイト検索してしまえば出来たようなもんだけどな。
region はリージョン
太線の破線は難しそうだな
いリュージョン?
もういまどきなんだから、浮動小数点で処理すればいいんじゃないの?
>>793
クロスプラットフォームを前提にした汎用描画クラス/記憶域って話をしているんだが。
BDEを使ってDBとデータのやりとりをする場合、
EXEを使用する各端末にBDEをインスコする必要がありますよね?
そこでBDEにはライセンス料が発生してしまうのか、知りたいのですが、しってますでしょうか?
教えてください。
    ∧,,∧  くだすれ・
   ミ,,゚Д゚彡  流れるの早すぎっすので、
    ミ つ旦)~~  こっちに移動
  〜と,,,~),,~)   すまそ、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1020833969&res=7&fi=no
このリンク先で、よろしくなさそうな処理を修正する予定です。
次のような形式でいいのかな?質問を最後に書きます。
procedure TMyRecordList.Delete(Index: Integer);
begin
 Finalize(FList[Index]^);※これが足りなかったので追加
 FreeMem(FList[Index]);
 FList.Delete(Index);
end;
procedure TMyRecordList.SetCount(const Value: Integer);
var
 i, ListCount: Integer;
 p: PMyRecord;
begin
 if FList.Count = Value then Exit
 else
 if Value < FList.Count then
 begin
  ListCount := FList.Count;
  for i := ListCount downto Value+1 do
  begin
  Self.Delete(i); ※FList.Delete(i);という記述だったので修正
  end;
 end else
続く
    ∧,,∧  
   ミ,,゚Д゚彡  
    ミ つ旦)~~ 
続き
 if FList.Count < Value then
 begin
  for i := FList.Count+1 to Value do
  begin
   GetMem(p, SizeOf(TMyRecord));
   FillChar(p^, SizeOf(TMyRecord), 0);※@
   FList.Add(p);
  end;
 end;
end;
procedure TMyRecordList.Insert(Index: Integer; Item: TMyRecord);
var
 p: PMyRecord;
begin
 GetMem(p, SizeOf(Item));
 Initialize(p^);※A追加した。
 p^ := Item;
 FList.Insert(Index, p);
end;
上記、※@の部分はFillChar(...ではなく、Initializeをするべきでしょうか?
※Aの部分は追加が必要でしょうか?
>>796のDelete、修正
Self.Delete(i-1);
でした。
なんでNew Dispose使わないの?
上記の例だとGetMem FreeMem使うメリットがまったくないんですが。
    ∧,,∧  なんか、New/Dispose周りで
   ミ*゚Д゚彡  MLをログってみてると
    ミ つ旦)~~  過去にいろんな戦いが
  〜と,,,~),,~)    あったんですね。

  夏草や 兵どもが 夢の跡

            なつかしくてほのぼのしてしまいますた。
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=43678

ところで、戦のログをみてもまだ疑問があるです。
教えてください。
連続投稿ゴメソ

http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=18256
>New, Dispose は可変長配列が扱えないのでこの場合は使えないと思います。
となっていますが
D6HELP、Newの例文をみると

type PListEntry = ^TListEntry;
 TListEntry = record  Next: PListEntry;  Text: string;  Count: Integer;
 end;
var List, P: PListEntry;
begin
 ...
 New(P);
 P^.Next := List; P^.Text := 'Hello world'; P^.Count := 1;
 List := P;
 ...
end;
もろ、可変長(を含むrecord)を使っているような気がしてならないのですが
よいんですか??

>>799
えーっと、TMyRecordは
type
TMyRecord = WideString;
こんなことをするような型なのですが、
New/Disposeで処理していいんですか?
> 可変長(を含むrecord)を使っているような気がしてならないのですが

固定長なら、New Dispose のありがたみがありません。可変長(この場合は
string 型)がある場合に、確保・廃棄にありがたみが出てきます。GetMem
FreeMem だと、string 型のフィールドはポインタとして確保されるだけで、
また、廃棄もポインタ部分が廃棄されるだけで、本体が生き残るのが問題
です。動的配列の場合も同様。

だと思うんですが。
メリットとか、ありがたみ、てのは
procedure TMyRecordList.Insert(Index: Integer; Item: TMyRecord);
var  p: PMyRecord;
begin
 GetMem(p, SizeOf(Item));
 Initialize(p^);
は、
begin
 New(p);
で置き換えられますよ。って事なんですか?

等価なコードなら1行、減るか増えるかの違い
なので、さほどありがたがれないのですが......

>GetMem FreeMem だと、string 型のフィールドはポインタとして確保されるだけで
だから、Initialize/finalizeしています。
>>801
>>D6HELP、Newの例文
どこも可変長ではないよ

>>TMyRecord = WideString;
問題なし。

Initializeが必要な場合というのは

type
TArrayString = array[0..0] of String;
PArrayString = ^TArrayString;

var
tmpList: PArrayString;
begin
GetMem(tmpList, SizeOf(String) * 100);
Initialize(tmpList[0], 100);

このような使用をする時や、メモリ割り当てを独自に行う時などである。
> だから、Initialize/finalizeしています。

いやいや、フサさんのコードがどうとかではなく、自動的に Initialize/finalize
できるんなら、New Dispose を使ったほうがいいでしょ、という意味です。
ご紹介の過去ログにもありましたように、SizeOf(string型)は4なので、
GetMem() だけでは、string 型のフィールドを正しく生成できませんよね。
だから、AV が起きるんです。
>>803
シンプルに書けばバグも起きにくくなる。GetMem Initializeに、もしわけた場合、書き間違いする可能性がありますよね。
固定長はNew Disposeと徹底すれば悩むこともない。
New Dispose使えば自動で初期化やってくれるのだから素直に使っておけば? Delphi1からある手続きですよ。
VCLソースとか検索してみ。Initialize全く使われてないからさ。
なんとなくわかってきました。

というか、俺、
String型が"長い文字列型"と書かれているのをみて
「昔の256byteの文字列と、違って可変長なんだよな。」

と思いこんでしまっていたですが
そこが変になってしまっていたようです。

>>804みたいなコードが可変長ってのか。
わかりやすいです。ありがとうございます。
805なんですが、そうなんですか?逝ってきます・・・・
>>798
質問とは関係ないが

  for i := FList.Count-1 downto Value do Self.Delete(i);

普通こうじゃないか?
ListCount := FList.Countなんて全然必要ない、というか少なくとも手続きの最初にやって
以降のFList.Countを全部それで置き換えないと意味ないし。
>>809
そっとしておいてやれ。これ以上駄目出しすると彼がみじめになる。もう遅いか。
function TMyRecordList.Add(Item:TMyRecord): Integer;
var p:PMyRecord;
begin
 GetMem(p,SizeOf(Item));
 Initialize(p^);
 p^ := Item; result := FList.Add(p);
end;
上のコードは、下のコードに置き換えてよし。って事ですよね。
function TMyRecordList.Add(Item:TMyRecord): Integer;
var p:PMyRecord;
begin
 New(p)
 p^ := Item; result := FList.Add(p);
end;

>>809、あら、すまそ。
もうちょっと見直します。
その前に、New/Disposeの理解で頭まわらな...

>>810、ん?教えてもらう事に対して
みじめになることなんて、何一つないっすよ。
うれしいし、ありがたいこってす。
破棄の方で、さらに疑問というか確認したいことがあります。
たびたびスマソ

procedure TMyRecordList.Delete(Index: Integer);
begin
 Finalize(FList[Index]^);
 FreeMem(FList[Index]);
 FList.Delete(Index);
end;

このコード、型情報が抜けているので間違っている気がしますが
下のように置き換えるのが正解なんですよね?

procedure TMyRecordList.Delete(Index: Integer);
begin
 Dispose(PMyRecord(FList[Index]));
 FList.Delete(Index);
end;

くどくて冗長な記述だと
次のようにしてもいいってわけですよね。

procedure TMyRecordList.Delete(Index: Integer);
var p:PMyRecord;
begin
 p := FList[Index];
 Dispose(p);
 FList.Delete(Index);
end;

Disposeにも型情報が必要になる。
という罠に気をつけなければ!
halbow氏の汎用リストとこの汎用リストの違いがワカラン…
どっちもイラネ
動的配列型が無いならこういうのも欲しくなるんだろうけどな

> 動的配列型
Delete、Move、Sort、IndexOf、などがあるリストクラスと動的配列は、
比較にならんだろ。TStringList を使わずに String 型の動的配列つかう
ヤツは馬鹿だろ。
> 違いがワカラン…

元は一緒、と見た。
一年くらいまえにも議論があった。ML でも議論があった。2ch の Delphi スレで
は由緒ある(らしい)ネタみたい
818デフォルトの名無しさん:03/09/19 18:21
>比較にならんだろ。TStringList を使わずに String 型の動的配列つかう
>ヤツは馬鹿だろ。
普通に使ってるが。とくに関数の戻り値として。
GCのないうんこ言語ではこっちのが便利だね。
しかしなんとも半端なもん出してきたね>X
結局のところBorlandはLinuxに軸足を移して本気でやろうという意思がないから
出来合いの主流言語であるC++とオープンでポータブルなGUIライブラリを採用したということなんだろな。
# Borlandが本気になれないのは極度に"無料"にこだわる乞食ユーザーと、
# あまりにGUI開発とコードの再利用(とその動機/副作用としての概観・操作性の統一)に
# 無頓着な開発者が原因なんだろうな。
そしてオープンでポータブルなものを使う以上
最高の開発効率とアプリのパフォーマンスや使い勝手もまた得られない。Kylix&CLXがまさにそれ。

まあLinuxのGUI環境にはなんの期待もしてないからDelphi(.NET)さえがんばってくれればそれでいいよ。
> 普通に使ってるが。とくに関数の戻り値として。
あっそう。
> GCのないうんこ言語ではこっちのが便利だね。
あっそう。GCないと不安ですか。
BuilderXはDelphiとは関係ないのではないかと読んでいます。
読んでいますっていうかC++&wxWindowsのまるっきり別ものだろ。
823 :03/09/20 23:45
GC=ガードキャンセル
誰もかかんのか・・・いや、俺に書いて欲しいんだろう?
書いてやるよ



GC=ゲームキューブ
レコード型のリストや配列ってそんなに使うものなのですか?
レコードではなくクラスにしてはいけないのですか?
レコードはパフォーマンスとメモリ効率の点で使うことがあるけど
newでヒープに確保したらまるで意味なし。
素直にクラス使っとけ。
>>825
レコード型のリスト・・・・リストというのはリスト構造のリストなのかTLISTなのか?TListは配列と同じですよ。
レコード型リストも配列も、普通に使いますよ。
ただ、リストにするならクラスにする方が楽出来ますね。
>826-827
普段は九分九厘,オブジェクトのリストクラスにしていますが,
今後もそうしていこうと思います.

>828
すいません,>825の表現が不適切でした.
確かにオブジェクトを使わないリストもありますね.

GC=Grammer Communication
GC = Grand Canyon
           _________
   ∧,,,,∧   / そろそろ
  ミ,,・Д・彡 <  ねむっす。
   ミつ旦(ミ~~ \ 
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
アク禁でカキコできなかったよ。

>>813 そういうニーズがどこにでもあるんではないかと。
>>816 同意
>>817 Halbowタンなら自作るだろうとは思う。
StringListは、例えばCRLF/CR/LF全てに
等しく対応しようとすると面倒だし、
改行コードも単なる文字として扱うの無理だし。
.Textは勝手に末尾にCRLFつけたりするし
WideStringは保持できないし、
その他、こだわるといろいろ出てくるもんです。
TStringListイラネって言ってたの誰だっけ?
834 :03/09/22 23:45
あーなんか愚痴ってたネ♥
835デフォルトの名無しさん:03/09/23 00:40
C#ではstring[]で返すのが基本中の基本。覚えとけ。
>>835
禿胴。Functionの戻り値に動的配列返すのって厨っぽい。
VB使いはそんなことしない。
VBスレには来るなと言っておきながら何故に彼らはこうも。
動的配列を初心者は使わないような…
むしろ中級者以上の物でしょ
>>837
835ではC#ではstring[](動的配列)で返すのが基本といい、386で同意しつつ「そんなことはしない」
VBすら使ってないただの自演の煽りにしか見えんが。
釣られるなよ
次のバージョンのVB.NETなら ArrayList<String> で返せるけどね。
842デフォルトの名無しさん:03/09/23 01:50
DelphiもVBに差をつけられる一方だな
ううむ!VB.NETはずばらしい!VB.NET最高!!
今ごろDelphi 7の案内を送り付けるなんて
「某は何を考えているんだろう?」
>>832
自分でそういうリストクラスを作りましょう,というのは駄目ですか?

項目の追加,挿入,削除,交換,更新,全消去といった
リストクラスの実装は難しくないと思いますし,
後はテキスト解析のときに改行コードを捨てないようにすれば良いはず.
TPersistentを継承してAssignメソッドをオーバーライドすれば
TStringsと相互の複写することもできます.

WideStringのほうも基本的には同じように作れると思います.
>>844
そろそろ次のやつを発表するから、発表前に買え、そして新しいやつも買えゴルァ!ってことだろ。
>>846
つまり在庫生理てわけか。
string[]やArrayList使ってるとTStringListのクラス設計の不自然さが見えてくるよ。
それは違う。
元々TStringsはデータを外部(Windowsコントロールなど)に持つものへの抽象インターフェース。
TStringListはそのTStrings互換の文字列リストというところに意味がある。
単体で使うようなもんじゃない。
850デフォルトの名無しさん:03/09/23 10:23
詭弁だな
TStringListでもTStringsでも本質は変わらないだろ。
文字列リストというデータ構造にCommaTextだのLoadFromFile/Streamだのがあるのがおかしい。
リストはただデータを読み書きしてもらうものでその方法を自身で規定すべきではない。
TStringsは汎用クラスでありながら数行の便利さと引き換えに柔軟さを失ってしまった悪例だな。
852デフォルトの名無しさん:03/09/23 10:37
VCLの設計の欠陥を「本質」という言葉で誤魔化すのはどうかと思う。
シンプルな文字列リストクラスを作って、そこからTStringsを派生させればいいのか?
854デフォルトの名無しさん:03/09/23 10:46
String Grid(256*20ぐらい)のセルごとのObjectプロパティに
TList(の派生クラスだけど)のインスタンスを生成し、各リストにオブジェクトをぶら下げるコードを書いており。
そのTListの生成、破棄を繰り返していると

  EInvalidPointer

で落ちるんですわ。

 落ちてる場所は、TListの破棄ロジック。
"どっかのばか"(これを書いたのもおれだけど)がメモリを上書きして領域破壊を起こしている、
ってところまでは追跡できたけど、その"どっかのばか"がだれなのかが不明な状態で
行き詰っており。

 条件として、プロジェクトの最適化チェックをOnすると落ちるようになり。
最適化殺して、出荷すればいいんだけど、なんか気持ち悪くて。


 で、落ちるちょっと前に、構造体(record)を関数の引数にして、値をやり取りしてる
部分があるんですわ。このメンバにString型(普通の可変長文字列型)を使っており。
バイナリファイルとのやり取りをやるんでないんで、問題ないかな、
なんて思ったりもしたんですが、最適化からむと、これって問題あります?

 構造体はローカル変数として定義し、関数にはvarオプションで引き渡して、
関数内で値をセットして返す、って感じでやっており。

 唯一、構造体でやりとりしてる部分なんで、こいつが、"どっかのばか"なら
さくっと、クラスに書き換えちゃうんだけど。。。
>>853
違うって。TStringsは常にシンプルであるべきで
その上でファイルへの読み書きは文字コード・改行コードに詳しい別のクラスに委ねるべきってこと。
そうしておけばsjis, unicode, crlf, lfなんでも処理できる。

Delphi方式は今となっては悪例だけどsjis, crlfで完結した世界では便利ではあったよ。

>>854
それは最適化のoffでバグが顕在化しただけ。
最適化オプションに頼らずちゃんとデバッグしとけ。
856デフォルトの名無しさん:03/09/23 10:55
VB.NETはきちんと文字列関連クラスの役割分担がされていますね。
>>855の言う「TStringsは常にシンプル」をその上位に持っていっただけのつもりなんだけどね。
.NETだとListBoxなんかは全部ObjectCollectionになってしまってるけどな…
string型じゃなくて、object型…

さておき、>>851、非virtualメソッドなんて無視しても全く影響は無いわけだが。
無論あればあったで特定の状況下(SHIFT-JISと決め打ちできる場合)すごく便利だという、それだけ。
>>858
>.NETだとListBoxなんかは全部ObjectCollectionになってしまってるけどな…
>string型じゃなくて、object型…
おかげでintでもカスタムクラスでもぶら下げられるようになったし
Delみたいにstringとobjectの二重管理よりはだいぶ改善されたと思うよ。

>さておき、>>851、非virtualメソッドなんて無視しても全く影響は無いわけだが。
それで標準でunicode対応のStreamReaderはいずこ?
機能を提供しないのは対応してるとは言えないだろ。
>>859
>それで標準でunicode対応のStreamReaderはいずこ?
JEDIのライブラリに…
標準で付いてないのは情けないが、DirectXのヘッダーやら新設されたAPIのヘッダーやらも全部JEDIにあるし、
DelphiのコンパニオンCDにも入ってたりするので、C++に対するBoostみたく、準標準と思っていいと思う
861デフォルトの名無しさん:03/09/23 12:19
やっぱりVB.NETの方が必要なものが揃ってるな。
粘着だなあ・・・
確かにDel厨は粘着だ。
JEDIだけで400コンポーネント。
日本語解説サイトないかな。


VBもVB.NETもコンポーネント少なすぎて死ぬほどかわいそう。
数だけあって使い物にならず。

まぁ、使える奴はActiveXに変換して使うだけだけど(w
死滅したVBで使ってどうするんだ。

VCLの繁殖がVBとVB.NETを殺したわけだ。
>>854
とりあえず、その情報じゃ他人には何とも言えない。

ところで、データブレークポイントというのは使ってるよね?
TListの破壊されてる領域まで判ってるのだから、
TListのその破壊部を作成した直後にブレークポイントを仕掛けて
そのアドレスを ctrl+F7 で @( メンバー ) として得ておいて
ブレークポイント -> データブレークポイントでアドレスを仕掛けて、サイズをちょっと大目にとっておけば
その書き換え個所で止まるという奴ね。



DelphiのAthlon64用コンパイラ(もちろんWindows用)はいつ発売ですか?
だって>>864がわざわざVBを出して来るんだもん。
Delphiのコンポーネントを.NETで使うのはどうするんだっけ?
一旦ActiveXにする必要があるかな。
Delphi.NETってでたんだっけ?
非.NETのDelphiと互換性があるならDelphiで.NET用コンポーネントに
変換したらVB.NETのコンポーネントにはやがわり。

> VCLの繁殖がVBとVB.NETを殺したわけだ。
それはない。
もうVBの話題はどうでもいいじゃないか。
道具は適性に応じて使えばいいし、どんな道具でも使えるようにすりゃいい。 

そりゃ好き嫌いはあるよ。 俺だってVBも..NETも嫌いだけど、それでも勉強して評価も準備もするぞ
>> VCLの繁殖がVBとVB.NETを殺したわけだ。
>それはない。
それはない。
Delphi開発者のヘジタンがM$に引き抜かれてDelphiと文法がほとんど同じC#を作った。
VB厨とDel厨は具体的な話ができないという点で似たもの同士だな。芯でいいよ。
>>871
> Delphi開発者のヘジタンがM$に引き抜かれてDelphiと文法がほとんど同じC#を作った。
つまり、C#が殺したわけね。Delphiも含めて。
その通り。ただしVB.NETは例外。
その筈が、VCLの繁殖にC#が殺された。
Delphi.NETが出たらVCL->.NETコンポネントの変換ヘルパー誰か書くんだろうな。
それともVCL.NET上ではわずかな修正で動くとか?
なんやかんやいってもDelphiは死滅しますよ。
VCLなんてDelphiとBCBからしかつかえないライブラリの上に、
ボーランドのC++はVCLを捨ててwxWindowsを使おうとしているしね。
878デフォルトの名無しさん:03/09/23 14:34
死滅した言語に何必死になってるんだろw
必死になってる人がいるってことは死滅してない。
880デフォルトの名無しさん:03/09/23 14:37
すでに死滅したから必死になってるんだろ。(ゲラ
>>876
> Delphi.NETが出たらVCL->.NETコンポネントの変換ヘルパー誰か書くんだろうな。
ボーランドだろ?

既存のサードメーカーのライブラリをDelphi.NETから使えないというのなら話は別だが、
使えるとしたら、それを継承もしくはそのまま使って.NETライブラリを作るのも簡単なわけで。
1年経っても何の進展もないけどな。(ゲラ
883デフォルトの名無しさん:03/09/23 14:40
過去のDelphi資産は
すべて.NETの物です。
> Delphi.NETが出たらVCL->.NETコンポネントの変換ヘルパー誰か書くんだろうな。

usesのインポートライブラリ句に.NET足すだけだろ。
885デフォルトの名無しさん:03/09/23 14:48
つーかこの前出たんじゃなかったのか?
Delphi.NET。
ありゃなんだ?
まったく.NETで使えないのか?
なんか制限でもあるのか?
>>885
プレビュー版。画面のポトペタ出来ない。
.NETの資産は全てDelphiのものです。
VB厨は新しい言語を覚えて今までの資産を捨てて…可哀想。
なんかハブとマングースが同じ箱に入ってるみたいだな。
>>887
えっ? .NETはActiveX使えますよ。 知りませんか?
警鐘●どうするVB資産
http://itpro.nikkeibp.co.jp/members/SI/ITARTICLE/20030828/1/

かつてVisual Basicで作ったアプリケーション資産を見直す動きが高まっている。
運用面の負荷が高いことに加え,マイクロソフトによるOSやVBのサポート期限切れが続々到来しているからだ。
しかし.NETやJavaへの移行は容易ではない。VB資産が企業情報システムのお荷物になるかもしれない。

「VBからVB.NETへツールによる移行を試してみた。動くことは動いたが,
とてもメンテナンスに耐えるものではないことが分かった。結局,既存のVB資産を捨てて,ゼロから作り直すことになった」。
vsスレに行け
これだけは言える。.NETになってもVBは永遠に糞だ。
しかしシェアナンバー1
シェア落ちてるんじゃねーのか?
895デフォルトの名無しさん:03/09/23 18:01
こういう時だけVB使いが他の言語を使えることにするんだな。(嘲笑激藁
>VB使いが他の言語を使える
そりゃありえない。
他の言語を知ってる香具師はVBみたいな汚いものに振り返ったりしない。
>>895-896
はいはい。わかったからおとなしくしててね(w
898デフォルトの名無しさん:03/09/23 18:35
> ttp://www.atmarkit.co.jp/fdotnet/questionnaire/2002-11/2002_11.html
> もっとも習得したい言語 Delphi : 0 (C# : 49)
> もっとも利用したいIDE Delphi : 2 (VS.NET : 65)

これはどういうことなのでしょう?
Delphiやるのは時間の無駄なんですか?
>>898
時間の無駄です。
VB.NETでもやってた方がはるかにマシ。
激しく同意
901デフォルトの名無しさん:03/09/23 18:43
自分のウンコは食べたことあるのですが、人のウンコも食べても大丈夫ですか?
VBとDelphi以外に有力なRADなんてないだろ
>>898
既出。MS信者がMS製品選ぶのはあたり前だろ。でもVB厨は馬鹿だから結局VBに戻る罠。
>>901
A.ウンコは毒です
体の中から出てきたんだから大丈夫だろって?
答えはNO.
食べ物の中から栄養を取り込んだ残りカスと毒素が混ざったもの
それがウンコです
すでに習得した言語C/C++が33%もいますが
2ちゃんねる的にはC++を習得したなんて言わせておいていいんですか?
つまり、Delphiはウンコ
907デフォルトの名無しさん:03/09/23 18:54
有害なスレだな。
Delphiユーザーのためにもこのスレ潰せ。
908デフォルトの名無しさん:03/09/23 19:00
いくら煽ってもまたスレが立てられる罠(w
言われてみればもう900か。
次スレ、フサギコとかモナーとかやめて、単に「Delphi相談室その9」とか「Delphi tech 3rd」希望。
で、関連スレも>>1に書いとけばいい

くだすれDelphi(超初心者向け) Part6
http://pc2.2ch.net/test/read.cgi/tech/1063202727/
Delphiで小さな実行ファイルを作ろう
http://pc2.2ch.net/test/read.cgi/tech/1009080085/
C++Builder相談室 Part7
http://pc2.2ch.net/test/read.cgi/tech/1061594556/
Kylix3
http://pc2.2ch.net/test/read.cgi/tech/1030031001/
Pascal の初心者用の質問・相談所
http://pc2.2ch.net/test/read.cgi/tech/1009903617/
VB vs Delphi @夏厨2003
http://pc2.2ch.net/test/read.cgi/tech/1060779022/
どうして.NET厨は去年の記事しか持ち出さないのだろう。
911デフォルトの名無しさん:03/09/23 19:26
【Delphi初心者】今から始めるDelphi Part01
http://pc2.2ch.net/test/read.cgi/tech/1062422335/
【Java初心者】今から始めるJava Part01
http://pc2.2ch.net/test/read.cgi/tech/1062422058/

これ忘れてるぞ
フサギコはforループの最終値がループ内で変わると思ってたの?
相談室と談話室分けたほうがいいよ。
後者はML・厨房隔離用に。
スレタイに妙なAAも前者は無しで。
915デフォルトの名無しさん:03/09/24 01:03
ヤッターマンコーヒーライター
>>913
私も分割に一票.
どうせ隔離したって厨房はどこにでも寄ってくるだろ
ヤッターマン コーヒー ライター

何事も分割することで上手くいく
>>918
うまい!!
分割に1票。
まあ、最近はくだすれにまで湧く事も増えてきたしなあ。
ヤッター  マンコー  ヒーライター

うまく分割しないと余計酷くなる
初代くだすれは読んでてキモチ良かった(;´Д`)ハァハァ
どうしても談話だけのスレがほしいなら
マ板に作れ。
なれあいのスレが技術スレにあるのはじゃま。
>880
その通り。
かわいそうだよね、VB厨って。
924デフォルトの名無しさん:03/09/24 17:44
ヤッター!ヤッター!ヤッターマーーーン!!
初心者相談は別スレがあるから、
・Delphi中級以上相談室
・Delphi談話室
に分割するのはどうか。
分割する理由なし。
>>923
文章読めないの?(w
928デフォルトの名無しさん:03/09/24 19:37
ごちゃごちゃ言うな。
強行突破じゃ。

スレ立てました。

Delphi談話室
http://pc.2ch.net/test/read.cgi/prog/1064399807/l50
>>928
お疲れさん。 ついでに初心者用じゃない方の技術話が出来るスレもお願いね。
Delphiって教育用(初心者勉強用)なんだから
初心者用だけで良いのでは?
そうかテーマ絞るか・・・ギコbasic拡張計画はどうだろ?
>>931
よし、それも立てろ。
あとIndyスレも必要だな。
MFCスレに対抗してVCLスレも立てるべし。
Delphi.NETはスレはすでにあったかな?
Delphi.NETって正式な名前だっけ?
Delphi7になるんだっけ?
それとも.NETになっても名前変わらない?
Delphi(.NET)とした方がいいのかな?
934デフォルトの名無しさん:03/09/24 20:01
Delphiスレ乱立の兆し
しゃあない。

コンポーネント関係は
【大量・便利】Delphiコンポーネント【再利用】
http://pc2.2ch.net/test/read.cgi/tech/1051802300/


技術話全般は
Delphiマンセー
http://pc2.2ch.net/test/read.cgi/tech/1029120920/


貴殿らはdelphiスレが好きすぎる(;´Д`)

TComboBox,TListBox,TToolBar,TListView にバッファオーバーフロー
ttp://memo.st.ryukoku.ac.jp/archive/200309.month/6508.html
って事なんで,各自修正しておくように!ヽ(`Д´) 以上!
937デフォルトの名無しさん:03/09/24 22:24
>>936
おい! スタティックリンクしているのにどうするんだよ?
やっぱりDLLにしたほうが安全だな。
938デフォルトの名無しさん:03/09/24 22:27
> VCL ソースが付属しない場合:
> TComboBox、TListBox、TToolBar、TListView を使用しないようにします。
タダ版使えないじゃん(w
>>936
実際には起きない問題を騒いでもねぇ。
こんなんでセキュリティホール言ってたら、メッセージベースでできることいっぱいあるじゃん。
それよりも、どうやってメッセージを送るかだ。その方法がないのに騒ぐのはおかしな話だね。
仮に送信する方法があったとしたら、その方法がセキュリティホールだしDelphi側が対応することではない。
つまり今回の話は単にバッファオーバーランのバグがあるという事実だけだ。
さらに普通の使い方をしていれば問題は起きない。修正なんぞする必要なし!
940デフォルトの名無しさん:03/09/24 22:33
Del厨が問題をもみ消そうと必死です(w
わかってねーな。
> どうやってメッセージを送るかだ。
内部でメッセージは呼ばれている。
リストのデータやキャプションがバッファサイズ以上の場合問題。
外部アプリからリストのデータやキャプションをいじることは可能。
さあ大変。
>>938
プロ以上持っている人が修正して、DCUを配布するのは違反かな。
>>938
プロ以上持っている人が修正して、VCLソースを配布するのは違反かな。
>>939-941
イタイヨ・・・
>>944
Del厨ですから
>>941
今回のバッファの件で、どういうふうに問題なのかが良く分からなかったりする。
相手のプロセス内にスレッドを作成すれば、色々と出来ると思うけど、そういうのとは別ですか?
>>941
お前がわかっていない。外部から操作できるその手段自体がセキュリティホールだろ。
で、リモートPCをハックするにしてもその方法を相手側に準備させることができんだろ?
もしできるとしたら、その方法自体がセキュリティホール。
ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
元記事にもあるように、可能性だ。事実上起きない問題なのだよ。
実害のないバグにそんなに騒ぐな。
> 実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
> 通常のヒープやスタックは実行不可。
じゃあ世間で騒いでいるのはなんでしょう?(w
知ったかは良くないよ。
知ったかもなにも、隅から隅まで知ってますが何か?
俺に言わせれば、世間のほうが馬鹿ですね。まるでY2Kの時のようで滑稽です。
XPでユーザがマルチでログインしているとき
権限が低いユーザが高い権限を取得することも可能になるわけだが。
>>950
状況を作ること自体が問題。でさどうやって権限取得するの? 知ったかはお前だよ。
絵に描いた餅的な、適当なことをほざくんじゃネーヨ。ヴァカ。
Windowsアプリケーションソフトウェアにおけるバッファオーバーフローの危険性
http://www.shadowpenguin.org/sc_documents/spsdocument21.pdf

ネット越しに攻撃できなくてもセキュリティーホールはセキュリティーホール。
ただしこの場合攻撃対象となるPCにログインできることが条件なのでわざわざこの穴をつく必要性は低い。
UNIXでもサーバプロセスの不具合と比較して一般にあまり注目されない。
とはいえ修正が不要とかいってる奴はアホ。
>>951
あいたた。恥ずかしい奴。
>>952
今回のケースとは別物だろうが。ヴァカですか?
>ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
>通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
>隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
スタックは実行不可でもスタック内の
戻りアドレス情報を変更すれば、
実行可能な別の領域に飛ばせるわけだが。
グローバルフックやレジストリをいじればいくらでもコード実行できるのに
それに比べれば今回のバグがかわいすぎると思いますが。こんなことで騒ぐなんて可笑しいね。
Windowsってスタック領域実行できないの?
つーことはLinuxより安全ってことなのかな。
>>957
問題ない。修正しなくてもいい。なんて言っている馬鹿がいるからねぇ。
960デフォルトの名無しさん:03/09/24 23:41
で、>>955の釈明はまだか?
961結論:03/09/24 23:47
デスクトップなDel厨はネットワークアプリを作ってはいけない。
作るならバッファオーバーフローの危険性のきわめて低いVB.NETを使いましょう。
はいはい。よかったでちゅねー
963936:03/09/24 23:51
あわわ・・なんでフレームが起きてるんだろう(;´Д`)

>>957
スレ違い承知で一つ質問。
私は >>936 の時点では特に騒ぎは起こってはいないと感じましたが,
あなたは今回の件のどの部分で「騒ぎ」を感じましたか?
964963:03/09/24 23:55
ていうか,みんなに質問した方が早いかもーヽ(´ー`)ノ
今回の事で,どこか「騒がしいなぁ」と思える部分はありますか?
騒ぎが起こっている URL や,このスレッドのレス番号などを
お答え頂ければ,抽選で1名の香具師に myブチューだ <- 嘘
つーか。Delphi7だとTComboBoxは修正されてる。ただいま確認中。しばし待て。
イタイ発言集
>>939 >>947 >>949 >>951 >>954 >>955
上記コンポを使ったチャットアプリは危険かもな。
  ∧,,∧  なんですか?
 ミ,,゚Д゚彡 ネットワークアプリて?
 ミつ日(ミ
電撃ネットワークが…

いや、なんでもない。
>>968
次スレよろ。ちゃんと談話と質問をわけるよーに。
TComboBox TListBoxはDelphi7では修正されている。
TToolBar TListViewは修正されていない。
しかしだなあ、実際に実行したところAVが起きて終わりだったぞ。
これがどうセキュリティに関係あるか小一時間
>>970
談話室はすでに立っている。

Delphi談話室
http://pc.2ch.net/test/read.cgi/prog/1064399807/l50
> 5. スタック上に置かれたコードの実行
> カーネルにより割り付けられたスタック領域は、読み
> 書き可能であると同時に実行可能です。つまり、スタック
> 上にコードを置き、EIPを適切に移すことができれば、置
> かれたコードは問題なく動作します
デルぽい厨って馬鹿だなぁ
実験して気づいたけど外部から操作ではTToolBarはバッファフロー起きなかったよ>Delphi7
ToolButton1.Caption := StringOfChar('0', 8192);
こんな風にに内部経由で行わないと発生しません。他のバージョンでも同様かな。つまり変な使い方しない限り問題なし。
TCustomListView.GetSearchString も通常使用しないメソッドだから実行されないなあ。
やっぱりどこも修正する必要ないや。DQNな使い方をしない限り。
変な使い方しないとはCaptionの値をファイルやネットワークから
持ってきて単純に代入するのではなく、
ちゃんとサイズをチェックしてからということかね。

まぁバッファサイズをチェックしていれば今までのどんなプログラムも
バッファオーバーフローなんて起きないだろうね。
979デフォルトの名無しさん:03/09/25 00:33
>>977
Delphi社員ですか? バッファオーバーフローがあるのは
事実なんですからさっさと修正してくださいよ。
980デフォルトの名無しさん:03/09/25 00:34
×Delphi社員ですか?
○ボーランド社員ですか?
>>978
サイズチェックも何も画面の解像度を越えるような文字数を設定するプログラムを書くやつがアホなわけですが。
結局、Delphi7においてはプログラマがDQNでない限り今回の問題は起きません。
フローを発生させるやつ>>979=DQN
>>981
これ以上Delphiユーザーの評判を下げないでください。お願いします。
> サイズチェックも何も画面の解像度を越えるような文字数を設定するプログラムを書くやつがアホなわけですが。
だからCaptionをファイル等から持ってきていたらどうするのかと。
頭悪いんじゃね?
>>982
> これ以上Delphiユーザーの評判を下げないでください。お願いします。
Delphiユーザなんてそんなもんだよ。なにを今更。
985結論:03/09/25 00:41
Delphiユーザはネット接続禁止!!
986結論:03/09/25 00:46
DelphiユーザはDelphi使用禁止!!
かちゅーしゃとかのDelphi製2chブラウザで板一覧取得してListViewに表示する処理で
サーバクラックして不正な文字列埋め込んだりすると危険かもね。
988デフォルトの名無しさん:03/09/25 00:48
名言!
>ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
>通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
>隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。


Windowsアプリケーションソフトウェアにおけるバッファオーバーフローの危険性
http://www.shadowpenguin.org/sc_documents/spsdocument21.pdf
> 5. スタック上に置かれたコードの実行
> カーネルにより割り付けられたスタック領域は、読み
> 書き可能であると同時に実行可能です。つまり、スタック
> 上にコードを置き、EIPを適切に移すことができれば、置
> かれたコードは問題なく動作します
989デフォルトの名無しさん:03/09/25 00:48
釈明ま〜だ〜
>>983
表示しきれない文字列を設定するUIを作るやつが頭悪い。
というかToolbarの文字数制限で257バイト(Ansi)しか保持できん。
991デフォルトの名無しさん:03/09/25 00:51
ボーランド社員がVCLのバグを必死に
プログラマのせいにしようとしています(w
まあまあ。あとは談話室でやれや

Delphi談話室
http://pc.2ch.net/test/read.cgi/prog/1064399807/l50
ヴァー ファッファッファッファッファッ
最初からVCLにバグあると言ってましたが。>>939
>>995
終わり
バグがあるのに修正しなくて良いとは何事か。>>939
ちゃんとソース読んで実験しろよ。セキュリティも何も発生しないじゃねーか。
GetMemで2G確保するような程度の問題だろ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。