ミ,,゚Д゚彡フサギコとモナーの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談話室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
9 :
デフォルトの名無しさん :03/08/18 08:17
乙〜 スレ消滅かとオモター
全角のフサギコか半角のフサギコか統一した方がいいな。 フィルタで指定するのが面倒くさい。
スレ立て人です.ごめんなさい.
>>7 関連リンクの最後の1個だけチェックし忘れていたようです.面目ないです.そしてフォローに感謝いたします.
>>10 くだすれにも書きましたが題名の長さ制限に引っかかったのでやむを得ず半角にしま
した.
#それにしても
>>2 の素早さには驚かされます.
12 :
デフォルトの名無しさん :03/08/18 16:37
13 :
Delななし ◆Taxfe0rEug :03/08/18 16:43
できない・・・。
>>12 厨はくだスレの方へ
エラーがでてコンパイルできないのか、録音ができないのかどっちかわからん。
具体的に説明できないようではなぁ
もうすでにくだスレにもポスト済みのようだ。
説明不足でした。すみません。 エラーは出ずに、コンパイルもできます。 実行して、BUTTONをクリックしても'c:\test.wav' は何も変更されません。
19 :
デフォルトの名無しさん :03/08/18 20:58
>>12 ワイもできへんワ。
どうも dtWaveAudio 辺りが臭い、ちゅーか。
既存のファイルを開いて変更するのすら、
DeviceType が dtWaveAudio になってると、
ErrorMessage に274返してはじかれよるし。
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が最近沈滞気味だったからいいんじゃない?
>>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
つーか、「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 したのはネタかとおもた
あぼーん
#bye #end にも対応すればいいと思う。
ある男が、自分を愛している3人の女の中で 誰を結婚相手にするか長いこと考えていた。 そこで彼は3人に5000ドルずつ渡し 彼女らがその金をどう使うか見ることにした。 一人目の女は、高価な服と高級な化粧品を買い、最高の美容院に行き、 自分を完璧に見せるためにその金を全て使って こう言った。 「私はあなたをとても愛しているの。だから、 あなたが町で一番の美人を妻に持っているとみんなに思ってほしいのよ」 二人目の女は、夫になるかも知れないその男のために新しいスーツやシャツ、 車の整備用品を買って、 残らず使いきる と、こう言った。 「私にとってはあなたが一番大切な人なの。だからお金は 全部あなたのために使ったわ」 最後の女は、5000ドルを利殖に回し、倍にして男に返した。 「私はあなたをとても愛しているわ。 お金は、私が浪費をしない、 賢い女であることをあなたに分かってもらえるように使ったのよ」 男は考え、3人の中で一番おっぱいの大きい女を妻にした。
53 :
デフォルトの名無しさん :03/08/23 08:56
何番目が大きいの?画像キボンヌ
55 :
デフォルトの名無しさん :03/08/23 20:36
pasファイルを解析して個々の関数の長さを測定したり、 グラフ化するようなソフトありませんかね?
そんなの自分で作った方が早かないか?
57 :
デフォルトの名無しさん :03/08/23 21:02
Delphi製のexeからImageListのビットマップをぶっこ抜く方法教えて。
59 :
デフォルトの名無しさん :03/08/23 21:05
>>56 んじゃ作るわ。
ファイル処理とか今まで勉強したことないからいい機会だ。
作ったらupして感想もらってもOK?
60 :
デフォルトの名無しさん :03/08/23 21:08
>>58 書いてる間にまたレスが。
っていうかなんだその読むだけでも疲れるような単語は( ゚д゚)
ググッテみたけどまあそんなとこだね。
関数は短くしたいから。
>>59 ファイル処理というか、正規表現コンポ使って
ファイル開く
↓
1行ずつマッチ試行
↓
マッチしたら関数名の切り出し>ストリングリスト登録
ぐらいのモンでしょ?
後はリストつかってグラフ処理なりなんなりできるし
あやしすぎまつ!! これ手動? 乙っ
使用例まであって親切だな。あやしいけど。
65 :
デフォルトの名無しさん :03/08/24 11:47
重複ルーチンはまとめてバックエンド関数として切り出すとか 使用する変数が限られてたらクラス化するとか そういう機能を付けれ
>>66 初心者いじめすんじゃねーよ( ゚Д゚)ゴルァ
今やっと形が出来てきたところなんでそんな難しい機能は勘弁してください。
68 :
デフォルトの名無しさん :03/08/24 15:28
簡易デバッグ用に function ToString(obj: TObject): String; // TStrings返すのでもいいけど みたいなインターフェースでpublishedな(できればpublicも)プロパティを再帰的に 文字列化するようなコードってない?
基本的な部分は出来上がりまつた。 後はいろいろ体裁整えたり使いやすくする予定でつ。。
オプションでソース整形してくれ
71 :
デフォルトの名無しさん :03/08/24 18:08
Action.Executeの戻り値(Boolean)をアプリ=フォームで 受け取るにはどうすればいいの? CustomActionで処理をキャンセルしたいことがあるんだけど。l
>>71 何をしたいのかさっぱりわからないが、不可能。ソース嫁!
通常Executeメソッドの戻り値は利用されていないため保持されていない。
単体でExecuteを直に呼び出した時、実行されたか調べるくらいだろう。
というかこれくらい、適当にOnExecuteにイベントでも設定してそこでブレークして
トレースしていけば戻り値がどう使われているか調べられるだろ。
>>70 だから初心者いじめするなって言ってんだよ( ゚Д゚)ゴルァ
でもそれはあったら便利な機能だね〜。
っていうかこのスレの人たちってレベル高いんでないのか?
だったら俺なんかに期待するより自分で作ったほうが100倍速いんじゃ・・・
たいして高くないよ。
んなわけないだろ
ママとおねんねの時間よ
>>75 既にあるソース資源を使うのは厳しいが、これからのことを考えて
例えばコメントの//以降に特定のスイッチを付けておいて後でそのコメントを元に関数の機能表示等をできるようにすれば良いかもしれん
<例>
function Bind(socket: TSocket; addr: PAddr): integer; //#Rソケットをバインドする #A1ソケット #A2アドレスへのポインタ
変換後
__________________________________________________________________________________
|関数名 |概要 |長さ
|===================================================
|Bind |ソケットをバインドする |4
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|引数 |型 |概要
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|soket |TSocket |ソケット
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|addr |PAddr |アドレスへのポインタ
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
こんな感じにできるようにしてみたら?
|
>>75 が簡単に作って自分が使う程度のものだからこんなもので良いじゃないか
77も適当に書いただけだし
わざわざしち面倒なXMLにせんでも良い
形式がどうなろうが生成ツールがやることは同じだし。
初心者が最初から面倒くさいことやろうとすると計画だけで終わってしまうものだよ。
>>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
ageちまった。 つーか俺今までずっとageてたんだ。 ごめん気づかなかった。
84 :
デフォルトの名無しさん :03/08/25 12:24
デルファイで作ったソフトを配布するときって なんか添付しないといけないタイプ?
>>84 うむ、最低でもReadMeは添付して欲しいな
>>86 そんなの己で調べろ。
WinAPIの使い方位ネット漁るなり参考書買うなりでできるようになってろ。
>>55 関数名は?
TMemoじゃなくてTListView使えよ
ファイルをドロップできないよ!!
どういうことだ!!
>>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;
行の最初が'begin'、'end'で調べているのね…。 これなら、TStringListに代入して、一行ずつ調べればいいだけです。 ソースを書くときに仕組みを組み込んでおくのも一つの方法ですが、 やはり、一般的なものを作った方が面白いでしょう。 コメントと文字列に注意して、やってみましょう。
93 :
デフォルトの名無しさん :03/08/26 03:49
保守age
こういう処理はパーサの応用です。 Delphi 用の Lex/Yacc もありますが pascalの文法は 状態遷移型で処理してもそう大変ではないです。 ・コメント { 〜 } (* 〜 *) //〜 ・文字列 '〜' ・文 と大きく3つに分けた後、必要に応じて文を解析してゆきます。
>>90 サンクス!
ソースを応用したら思ったようにできました。
>>91 なんか問題あったかな?なぜexeつけないほうがいいのか教えてくださいな。
それととりあえず
TMemo→TListView
ファイルをドラッグできるようにしますた。
「複数の」ファイルをドロップできる? パースにかかった時間をどっかに表示して
DnDなんていらないだろ。.dpr解析して関連ファイルを自動登録しろ。
>>96 第一に、仮に悪意のあるプログラムだった場合、初心者が困る。
第二に、このスレの住人には不要。 もしexeが付いていた場合、それを削除する手間がかかります。
*.dcu も入りません。
*.dof、*.dof は環境に依存するので付けない方がいいでしょう。
標準アイコンを使うのなら、*.res もいりません。
ナカムラタクオさんがユニットを解析するライブラリを公開していたと思うのですが、 どこで手に入りますか?
PopupMenuを勝手に消すのはWindowsのUIとしてどうかと思うが。 自前のフォームやTipHelpじゃ駄目なのか?
105 :
デフォルトの名無しさん :03/08/27 01:58
>>102 Escキーをエミュレートしてみそ。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Keybd_event(VK_ESCAPE, 0, 0, 0);
end;
メインフォームがアクティブである時は常にIMEをオフにしたいのですが どこのイベントで処理すればよろしいでしょうか? ダイアログや別のフォームをShowModalしているときはユーザーが切り替えられるようにしたいのです。
>>107 ソフトウェア工学ではユーザーの期待を裏切る挙動はご法度なので
「メインフォームがアクティブになったときに自動でIMEをオフにしてくれる」
という機能にしといた方がコーディングも簡単だよ
普通IME切り替えようとして何も反応しなかったらPC壊れたと思う
仕様書にそんなとんでもないことが書かれてたなら頑張って説得して(笑)
>>98 dprに全部書いてあるんだ。知らなかった。
やってみます。
>>99 (;´Д`)ハァハァ
なんかすごいことになってる。まずはソース理解しないと
>>100 了解
今度からつけないようにします。
>108 常にという表現が間違ってました。おっしゃるとおりメインフォームがアクティブになった時に オフに切り替えれば良いです。しかしメインフォームがアクティブになった時のイベントってありますか?
そのまんま
>111 私へのレスでっか?
>>110 君はオブジェクトインスペクタを見てそれっぽいのをF1してみることすらできないのか・・・?
別スレッドのループ内で定期的に呼び出されるある関数ポインタを さらに別のスレッドから勝手に差し替えるのは問題ありますか? (関数ポインタの処理はその関数内で全て完結しているものとして) 僕の足りない頭で考えた限りはどうせ今の処理が終わるまで 再び関数ポインタが呼ばれる事はないので大丈夫なんじゃないかと思うんですけど スレッド内でもさらに畳み掛けてループが回ることって無いですよね? 要はStrategyスレッドを作りたいんですが
間違った、Stateスレッド
>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を送って印刷する という方法も考えたのですが、動作しませんでした。 宜しくお願いします。
シンデキマツ
ひとつ質問させてください。 procedure 〜 begin end; って形をとるのは procedure function constructor destructor だけでいいのですか?
129 :
デフォルトの名無しさん :03/08/27 21:46
>>128 予言。
Var部のせいで君のやろうとしていることは破綻するだろう。
>>128 意図的に破綻させるのは簡単だけど
普通にまともにコードかいてるならそれだけ。
procedure foo;
procedure bar;
begin
end;
begin
bar;
end;
なんて形式もあるけどね。
132 :
デフォルトの名無しさん :03/08/27 21:57
>>128 ヘルプで予約語を見てみよう
込み入ったことをするならやはり再帰的に処理できるパーサが必要になる。
でないと、begin〜end;ブロックでメソッドを抽出できず、またメソッド名の抽出が
>>130 の言うようにvarの為にbegin〜end;でマッチした行の一つ前というようなわけには行かないので面倒になってしまう。
どこにうpすればいい? 以下の点を直したわけなのですが。 ・boolean を渡すタイプの Test() のメッセージが表示されないのを fix ・例外が発生することを試験するタイプの Test() が正しく動作しないのを fix ・起動のたびにブレークポイントを指定しなおさなければならないのを fix ・オーバーロードされたTest() の一部にメッセージ引数がないのを fix ・メソッドテストのたびにログに仕切り線を出すようにした
>>133 その手があったのか。どうも〜
俺はbeginの1行前とか深く考えないで
文頭のprocedure, begin. endって順番に調べて見つけたのから
配列にでもぶち込めばちゃんとそれぞれ対応する順番に
なるじゃん、と思ってたけどそれ以外にも関数の宣言のほうとかで
文頭に書いて配列でずれる可能性あるな〜
と書きながら思ったけどまずimplementationの行数を調べて
それより前だったら除外するってしとけばいいんじゃないかな。
文まとめられずにすまん。
っていうか元はくだらん質問だったのにこんなにためになるレスくれるなんて
このスレの人やさしいな。・゚・(ノД`)・゚・。
仕事速いですね。。。 とりあえずうpしてみました。
>>136 どうでもいいが、case end; も考慮しないといけないからbegin end分けだけではだめだよ。
>>133 が言っているとおり、パーサーが必要になる(簡易パーサーでもいいけど)。まあパーサーくらい簡単に作れるだろう。
>>138 case end;って文頭には書かないような気が。
まぁこんなこと言ってるときりがなさそうだし、パーサやらなにやら考えてみます。
>>139 いやいや全然OKですよ。upしまくってくださいな。
むしろ俺が変な流れ作っちゃったのか?だったらすいません。
俺なんか気にしないで話し進めてください。
TGrepはそこのであってます。
↑あ、55です。
>>137 乙。
これってオリジナルのアーカイブに差分を上書きだよね。
144 :
デフォルトの名無しさん :03/08/27 23:36
class THoge.function もあるよ。 コメントも考慮しないと。 implementation部にも宣言がかけますよ。
>>128 program
begin
end.
ってのもあります。
但し最後がセミコロンではなくピリオドだが。libraryもそうか。
重要テクニック 長い文字列型は、 P: PChar; P[n] <> #0 なら、P[n+1]にアクセスできる。
String、WideString の変数が空文字列を指している場合は、 その値は nil になってるんだっけ。だから無理にアクセスすると あぼんぬ。
うそだけど。
149 :
デフォルトの名無しさん :03/08/28 01:49
空文字は #0 だから、キャストして nil にできるけど、 アドレスは有効では?
begin end が対にならないのって、 case asm ユニットの最後の end. しかありませんか?
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人
↑あ、55です。
>>163 それは、自分がその最初の1人になるという自信の現われですね?(Y/y)
期待してます。
168 :
デフォルトの名無しさん :03/08/28 08:34
Delphiの引数って前から評価されることは保証される? Foo(Bar, Baz); // Bar, Bazの順に呼ばれるか?
なんか朝起きたらすごいことになってるな〜
聞けば聞くほど俺には無理な気がしてならない。
それと
>>164 は俺じゃないぽ。
偽者が現れるぐらいにはかまってもらえてるってことかw
>>166 ホスィ
>>168 Object Pascal 言語ガイド -> 手続きと関数 -> 手続きと関数の宣言 ->
呼び出し規約
stdcall; とか pascal; とかで変わります。
>>169 たかが行数カウントごときで厳密にやる必要は全然ないだろ。
・関数の頭からend;までを関数とみなす
・^\s+は関数の頭ではない
・^\s+endは関数の終わりではない
・今関数の中にいるのか外にいるのかのフラグを管理する。これだけで
function Func;
implementation
function Func;
begin
end;
が処理できるようになる
・Delphiは効率悪いのでPerlかRubyを使う
・このツールで解析できないような糞コードは書かない
Delphiの良いプロファイラってない? できれば体験版があるのがいいんだが。
>>171 ^\sって何さ?
> ・Delphiは効率悪いのでPerlかRubyを使う
(゚听)リョウホウシラネ
> ・このツールで解析できないような糞コードは書かない
(・∀・)イイ!!
> ・Delphiは効率悪いのでPerlかRubyを使う LL文法のパーサよりも正規表現のほうが効率が良いとは、これ如何に・・・ それとも*コーディングの*効率ですか?
RubyにはDelphiのパーサが既にあったりして。
>>175 >それとも*コーディングの*効率ですか?
この程度のツールにDelphi&パーサを採用する*人間*の効率です。
ゴチャゴチャ言うならもう Lex/Yacc使え! Delphi用のパーサも一緒に入ってるはずだ。 D3迄だったかな・・・
パースしたら行数が分からなくなる罠。
>>171 糞とは限らないと思いますが,1行目には同意.
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 思わず調べちゃったじゃないか!普通にcall命令だった。
多分Incとか特定の関数や手続きのインライン化のことと勘違いしていると思われ。
組み込み関数のどれがインライン化されるかの資料って Delphi クイックリファレンスしか知らないんだけど、 System.pas を丹念に読めばわかるものなのかしら。
>>195 たぶん ヘルプにsystemとかかれているのに system.pasに無いのがインライン化されると思うよ。
たとえばAbsなんて無いよね。
でも、Absならいいけど、少し長くなるような関数はインライン化しないほうが今のCPUでは効率良いようだけどね
>>189 戸田っちも宮本も要らない。ただのノイズ。
>189 あれは狙ってやってるよなぁ?
ノイズのわりには圧縮率が高そうだな
201 :
デフォルトの名無しさん :03/08/29 10:18
>>202 Posで関数行の中の最初のスペースの位置を得る
上で得た位置までの文字列でprocedureやらfunctionやらを判別
Posで開き括弧「(」の位置を得る (Procedure Hoge(i: integer);みたいな場合
失敗すればセミコロン「;」の位置を得る (Procedure Hoge;みたいな場合
失敗すればコロン「:」の位置を得る (Function Hoge: integer;みたいな場合
こんな感じでやれば関数名の行数さえ判れば関数名そのものを取り出しはできるよ。
>>204 そのやり方は一度試してみたんですが、
エラーばっかりでまともに動いてくれなくて(;´Д`)
Posでスペースとかの位置を求めたらCopyで抜き出そうと思ったんですが・・・
パーサ厨はすっこんでろ。 という結論が出ているわけだが。
>>205 99のソースではうまくできてるじゃん。55の中の人ではないんかな?
とりあえずどんなエラーがでるか判らないことにはどうしようもないぞ。
>>206 そうなのか。
来週になったらDelphi再開できるからそうしたら見てみるわ。
>>208 >>99 さんとは別人ですぞ。
エラーつってもいろいろあったな。
すまん。ほとんど覚えてないわ。
Halbow氏、猛ラッシュ。
Halbow Uzeeeee。毎度知ったかぶりな投稿うざすぎ。
個人叩きはマ板でやれ
今まで溜めてきたのが一気に爆発したみたいな感じだ。
どこの話をしてんの?<ラッシュ
うるさい
だから宮本は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);
224 :
デフォルトの名無しさん :03/08/30 11:32
>>223 あのMLは
ロジックを聞くのはだめなんでしょ?
225 :
デフォルトの名無しさん :03/08/30 11:33
なんか
>>221 といい、
>>55 といい文字列処理の一つもできなかったり、ソース読んで調べることもできないようなアホが大杉。
↑ 代表格ヴァカ
228 :
デフォルトの名無しさん :03/08/30 12:03
図星つかれると逆ギレするのが今の若者の特徴?
年寄りはすぐ型にはめようとする。
やっぱりMLネタと厨房隔離用スレが欲しいよな
↑ 代表格ヴァカ
他の言語厨に煽られるだけだ。
厨の特徴 1.ググらない(調べない) 2.ソース読まない 3.タイムリーに答えが返ってくると思っている 4.面倒くさがる(その割には便利なツールを使わない) 5.ヘルプ・説明書を読まない(readmeすら読まない) 6.直ぐ質問する
7.思いつくだけ列挙して勝ち誇る
8.↑これwwwwwww
239 :
デフォルトの名無しさん :03/08/30 13:29
図星取られて逆ギレするのは中年の方が多いと思うけどな。
>>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分程度かけるのが惜しいのかい?
書いておけば、それは又使えるだろ?
その後の構文解析は半日かかるけど、書いておけば、色んな用途に使える。
再利用出来るようにコードは書いておくべきだよ。
お前底なしの馬鹿だな。
そりゃ人それぞれだよ
性器・・・もとい正規表現というか、有限オートマトンだけでは個数を数えなけりゃならん処理はできん。 かといって、パーサだけでも手続きの定義と使用のとこで別の処理が必要になる。 まぁ、こういうのは思っているのとは違って、実際にやってみると結構マンドクサイ。
>>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;
ソース #!/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、関数内関数はカウントしてしまいたいし
逆にメソッドの上のコメントは排除したいからあれでいいでしょう。
という細かい仕様はおいといて、ともかく動くものが簡単にできるのだから
(スクリプト言語と)正規表現を覚えると便利だよといいたかったの。
ついでに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
日本人です。
282 :
デフォルトの名無しさん :03/08/31 07:35
例外発生アドレスとマップファイルから、例外を生成した関数を知りたいのですが、 どうやるのでしょう?
>>282 IDEを使わずって事?
マップには相対アドレスが書かれているから絶対アドレスを相対アドレスに直す必要があるが
絶対アドレス一つだけでは無理。
スタックの内容とか
>>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に引っかかるから激しくウザい
>>217 さんのすごいね〜
確かに俺は文字列処理とか弱い以前にやったことすらなかったけど
今回のがわりと勉強になりそうだし、個人的にはよかったかなと。
パーサとかははっきり言って俺みたいな初心者には難しすぎるし、
もっとDelphiに慣れたらまた挑戦してみたいわ。
まぁとりあえず俺はもう名無しに戻ります。
今まで質問に答えてくれた人たちありがとう。・゚・(ノД`)・゚・。
>>285 なんだか面倒ですね。 マップファイルも大きいし…。
>>290 そうだね。自分の身の程をよく知っていて、まぁ、これからやるってんだから、
とにかく、えらい、ってことにしておこうよ。287 の最初の3行をすなおに
書けるだけでもエライ、ってことで。
私,やっぱり頭が20年前で止まってるのかなぁ.
正規表現はIDEの検索で使っている程度ですがもっと勉強してみようと思いました.
皆様に感謝.
>>287 作りたいものを見つけてそれを実際に作ってみたという点がすごく大事だと思うのです.
#そういえば正規表現で検索を使うときといえば
メソッド名をアルファベット順に並べ替えるときに
{procedure|function|constructor|destructor} .*\..*
としてすべてのメソッドの先頭行を検索していますが,
(Del5はイベントハンドラが一番下に来てしまうので)
正規表現ライブラリを使えばこういうのをプログラム中でのテキスト解析にばしばし使えるのか….
(「今更何を」とい声が聞こえそうw)
正規表現って、短く書く為にわかりやすさを犠牲にしていると思いませんか?
>>289 だったらさ、エラー出しそうな関数を必ず try 〜 except で挟んでおけばいいじゃない。
>>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入会できないんですけど。
無駄話なんざここでいい。 ソースなんざ付属ソース嫁。
XP の Theme が嫌いなので、 自作のソフトを強制的にClassicで表示したいのですが 何か方法ありませんか。
>>304 知ってますけどやっぱりMLだしちゃんと入会して読みたいんで
っていうか何で今入会できないんでしょう?
>>305 入会しても、最近はだいたい20通/日以下です。いまのログは7万を超えて
いる。したがって、10年分くらい読めるだろ。
>>303 自分で描画するしかネェな
若しくはコンポ見つけるか
> 自作のソフトを強制的にClassicで表示したいのですが つかいたくねぇ
じつはmanifestファイルに細工してインクルードすると出来るんだなこれが。
>>303 XP自体をClassicにしろよ・・・
「入会」するのはイヤだけど、MLログは読みたいな。オレも。
> ちったぁググれよ そこでは「ググれ」ないよ
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は投稿しない、に32,000ペソ!(^^)
332 :
デフォルトの名無しさん :03/09/04 01:32
ここでMLの話すんなよ。入会してない奴に分からないネタを出すな! ネタ出すなら投稿のやりとりさらせ。 どっちかにしろよ。
332が良いこと言ったに4096億ドラクマ!
332は統合スレの意味が分からない、に22円
332はMLに参加してないに12円!
談話室だし、Delphi絡みならなんでもありでいいんじゃない?
なんだよー、おれの負けかよ!
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は感想というより妄想かもね
7は1が直接の目的ではなく2で相手を叩きたくてその口実が欲しいだけだろ。
はぁ。その二つの違いは?
>>339 はやく340に答えろよ! でっち上げかよ!
読んだけど該当するものがないよ。
>>339 340に答えろよ! でっち上げかよ!
339で長々書くのに比べたら番号くらい簡単に示せるだろうに
351=339 が逃げに入った!(^^)
手元にログがあればすぐ見つけられるでしょ。 日本語の読解力がないんだね。
つーかお前らもっと質問者の話し聞けよ>三馬鹿トリオ 何勝手に不明な部分を仮定して答えてんだよ。 だから荒れるんだよ。
おまえら,なんでけんかしてる? ML ごときでスレ使い切らないでくれよ...
質問者に再質問してるんでは?
351=339=354 が逃げに入った!(^^)
三馬鹿トリオ(戸田、宮本、Halbow ) 自身は、質問を完全に理解していると思っているんだと思うよ。
こういうの何と言うんだっけ?
>>359 その脳内補完機能はDelphi7の新機能か?
めくそみみくそをわらう。
>おまえら,なんでけんかしてる? 妄想がでっち上げしてるから
>>362 本人登場?
それとも?
三馬鹿トリオを擁護する人がいるなんて信じられませんがね。
反面教師
.... 終わった?
339はフレームかよ!
>>324 とその他
ほんとにそう思ってるなら、どうだ、専用のスレッド切って投稿してみろ(藁
こんなところでグダグダいってないでさ。
まともな神経の持ち主ならMLであんな糞議論をしないだけの分別を持ち合わせているものさ。
ML 雑談はここですか?
>>372 ほんとにそう思ってるなら、どうだ、専用のスレッド切ってまとも投稿してみろ(藁
こんなところでグダグダいってないでさ。
>>372 口で言うほど、まともな質問/回答してないでしょ。
そういうやつほど口だけは達者
なぜ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には。
>結局某に貢献したのってFreeAndNilだけ 皮肉だね。よりによって。
>>399 当たり前のことを言うなよ。
俺の神コードはMLなど下賎なところには書かないよ。
>結局某に貢献したのってFreeAndNilだけだろ これって何の話? あの ML はまったく何も貢献していないと思っていましたが....
>>389 >既存のものだけで十分にやっていけるし。
それを停滞というのさ...
>>396 はやく404に答えろよ! でっち上げかよ!
だれもいないの? 実質二人くらいで騒いでいたのかねぇ
408 :
デフォルトの名無しさん :03/09/04 07:27
戸田さんは間違えたことは言ってないと思いますよ。
5人くらいじゃなの? 低農が二人くらいいて、ほかの一人にいいようにあおられてるよ。 分別なんて言ってて、爆笑
はあ・・・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イベントを処理したいのですが良い方法はありませんか?
すでに過去ログは腐りきっています。>> 433
けどなんで「FreeAndNil の出典が DelphiML」なんて馬鹿なことを信じるんだろう。 人間って不思議!
>>435 WM_PROCESSKEY ってなに? ウィンドウメッセージにあるの?
使われないものは生まれなかったのと同義。 現状に合わせて更新されない過去ログ(とそれを見ろ。としかいわないアホ)は社会の害悪。
>>使われないものは生まれなかったのと同義。 自分のことですね? 同義じゃないですよ。 過去ログを更新するのはバカ。追加のみ有効。
>馬鹿なことを信じるんだろう。 馬鹿だからだろ。
>>441 時代遅れや間違った記述を訂正しないのは、過去への盲信。馬鹿以下。
>439 ヒントは与えた。 調べて実験しなさい。
445 :
デフォルトの名無しさん :03/09/05 08:43
訂正します。「FreeAndNil の出典が DelphiML」は私の妄想です。 ごめんなさい。 ごめんなさい。 ごめんなさい。 ごめんなさい。 ごめんなさい。
>>443 おまえはログの意味がわかってないな。Tips とは違うんだぞ。
過去への盲信は443だけ。
>447 かもね?調べて実験してから答えを出してもよいとおもうけどね。
で、Tips の意味わかってる? > 446 たとえば、メンテナンスされない Google 使うとおもうか?
>>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 日本語に翻訳すると。。。
戸田さん自身は、質問を間違えずに理解し、間違っていないと信じている知識を説明されています。
しかし、ほとんど常に質問者の要求を理解できず、自分の体験を状況を無視して押し付けていらっしゃいます。
昼休みぐらいちゃんと休まないと午後の業務に差し支えるよ。
ストレス発散にちょうどいいんじゃないかしら。名無しでしか書けない連中なんだから...
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 のログ検索したので、
どうやったらできるのかな、と。
よく知らんが、脳内検索じゃねーの。
だからそこは users じゃないってば。
googleで分かるだろ馬鹿
死滅厨に限界が来ました。
苦しそう
えっと、仕事で真剣に誰か助けて欲しいって 思うくらいに、ぢごくってます。 2chにくる余裕がありませんでした。 出張先のホテルの湯船で水死体のように 浮きながらシャワーにまぎれて苦やし泣きしてみたりして 人生の悲喜こもごもを堪能してます。 いいオッサンなのに…よお。まじ泣きですよ。だんな。 いや、Delphiとは関係ないのですいません。
いや、ほんと、ここは楽しい談話室です。 幸せです。(死後吐も一段落したし。) 幸せ気分でおやすみなさい。
>>498 Delphi使うからそういう状況になるんだよ
死滅スレで書きまくってこい!
Delphi使って幸せになった奴なんて見たことない
不幸な身の上なんだね。かわいそう
∧,,∧ ところで、時期がもう ミ,,゚Д゚彡 時期なんですが ミ つ旦)~~ D8奥たんの、進捗は 〜と,,,~),,~) いかがなものでしょうか? 誰か知りませんか? いったいどうなるんでしょうね。 既存のコンポーネントなど どこまでつかえるようになるのかな。 あ、とりあえず、仕事では一切Delphiは使ってません。 腐れSヨの真似事です。あーっとVBは使うか。 競合他社さんの優れたシステムがVCL製だと気が付いて 転職したくなる気分です。
>>505 優れたシステムが VCL 製だからといって
VCL で作られたシステムがすべて優れているわけではないので...
結局は人のセンスだからな
>VCL で作られたシステムがすべて優れているわけではないので 誰もそんなこといってない。センスわりー
センスたんハケーン
>>506 > 優れたシステムが VCL 製だからといって
> VCL で作られたシステムがすべて優れているわけではないので...
どっからそんな話が出てきたよ?
腐れ固定必死(w
ひとは皆、必ず死ぬものさ、 ただいつ死ぬかが判らないだけ
>>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対応のプロパティエディタないでしょうか?
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 にも突っ込んでくれ
関数書いて別名を与える場合は 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;
・・・・怪しい・・・・
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使え
>>556 ポインタもよくわからんのですが参考にはなりそうですね。
ヘルプと格闘してみます。
>>557 これなら確かに目的の動作はするかもしれませんな。
thx!
559 :
デフォルトの名無しさん :03/09/07 23:27
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
FWindow := nil を
Window := nil にしたらうまく行きそう。
あと、TNkCustomDropTarget.Destroy で OleCheck を呼び出しているけど、
デストラクタで例外を送出したらマズイですよね。
>>573 ウィンドウの再生成はウィンドウ側で対処しておきます。
>>575 捨て台詞までつまんない。
うすっぺらいな、お前。
580 :
デフォルトの名無しさん :03/09/08 14:52
DelDel某や
疑わしきは有無を言わさず殴るべし
∧_∧
(. ・∀・) | |
と ) | | ガッ
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
>>579 (_フ彡 /
>>516-517 遅いレスですが
>516がやりたいのはもしかしたら相対パスから絶対パスへの変換なのでは?
だとすればExpandFileNameになると思います.
>>540 = >520
WAVE関係には疎いのですが
Windowsの8ビットPCMは符号なしらしいですので
shortint型(8ビット符号あり)ではなくword型(8ビット符号なし)を使うべきでは?
何か意味があってのことならごめんなさい.
584 :
デフォルトの名無しさん :03/09/08 23:29
DelDel坊主、Del坊主、あ〜した天気にしておくれ〜♪
無理。
つまんねー記事読ませるなよ。2chの雑談並に無価値な文章だな。
∧,,∧ と、いわれても。 ミ;゚Д゚彡 ミ つ旦)~~ 〜と,,,~),,~) InstallShield Express For Delphi 5の話題を Delphiとは関連がないから InstallShield の ML で質問しろって いうほどの、無価値なレスよりは なんぼかましと思うです。
妬んでいるんだから、ほっときなよ... > Delフサギコ
>>588 香具師、前も同じようなレスをつけてたな。
そのMLのURLは出さねーのな。
>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 は、ちょっと勘違い
それよりも、604さん、例のコードで最初に AnsiPos() を使わないで、 全部 AnsiPosNext() を使った方がきれいじゃないか。全部列挙するという 意味では。
>>592 >この論理でいくとデータベースは全部駄目そうだな
「Paradox について」には反応しないなぁ。
InstallShield Express For Delphi 5 より関連薄そうなのに。
>>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かな。
∧,,∧ ファイル・フォルダの ミ,,゚Д゚彡 移動/コピー/削除 ミ つ旦)~~ 名前変更 〜と,,,~),,~) シェル使用/未使用 などなどが 一斉にわかるように まとまっているテクニックページって どこかありますか?
>>612 ワロタ。ちょっとがんばりすぎだよ。部分検索したけりゃ
>>604 のに
(PChar(S) + Index+Count)^ := #0
って#0打ち込んどけばいいじゃん。
∧,,∧ にゃぬ! ミ゚Д゚;彡 ミ つ旦)~~ 〜と,,,~),,~) あんた賢いね。
>>609 InstallShield に恨みでもあるんじゃねーの。過去ログ検索するとそんなんばっか
なお、今回の ISX の質問は無事、IS-users で解決しました... つーか元質問者は納得してしまいました。
↑なんのはなし?
ParadoxのMLはないの?ないから、関係薄くてもOKなの?
文句がつかなきゃいいの。 偉そうな顔しているほうが勝ちなの。 戸田、中村あたりなら、どんなに Delphi と関係なくても許されるの。
AnsiStringってスレッドセーフ?
>>620 基本的にバス・あるいやCPUのアクセスデータ幅以上のデータ型は全てスレッドセーフではないと思ってかかった方がよいです。
スレッドセーフなデータ型、ってあるのか? > 621 アトミックオペレーションを記述できる。ってのとすべてのアクセスで排他処理する。ってのは異なる次元の話だよね?
>>622 その通りですね。言葉足らずスミマセンでした。
単なる代入を2つのスレッドで行った時に、どちらか後で行われた代入が正しく残るかどうかという
内容についての発言が
>>621 だと読み替えて下さい。
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
>>ライブラリが糞なこと。 ユニコードへの対応については確かに糞だね。
>ユニコードへの対応については確かに糞だね。 そうだけど、できるできないはライブラリで決まってる訳じゃないよ。 不便だけど。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 に関しては。それ以外は素晴らしいけど。
>>639 SendMessage(WM_GETTEXT)を使って調べれ。
>>644 SendMessage(WM_GETTEXT)を使って調べると、内部的な文字コードが分かるの?
SDK のヘルプを読むと、NT系のコントロールは内部的にユニコードを使ってる ように書いてある、ように読める部分があるね。コモンダイアログは明らかに ユニコードのようだし。
なんか、↑の口調、誰かに似てるんだよなぁー
>>647 その意地の悪い性格は長年MLに関わってきたからでつか?
>>649 そう。
どうしても一言言わずにはいられなかった。
他の何千人もの人の様に黙っているなんて出来ない。
∧,,∧ 教えてくらさい ミ,,゚Д゚彡 ミつ[|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 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; を省くと論理が 破綻する。
671 :
デフォルトの名無しさん :03/09/12 21:08
DelphiはVBに比べて型に厳しすぎて駄目だ。 頭の固いお役所仕事より、柔軟で融通の利く方がパートナーとして優れてるに決まってる。
>DelphiはVBに比べて型に厳しすぎて駄目だ。 頭のゆるい人には、型の厳しさがどんなに重要か分かってない。
Delphiが型に厳しいか?Javaとかと比べてもゆるゆるな気が
>アンチSmallTalkerですか? そうですが、何か?
>Javaとかと比べてもゆるゆるな気が 例えば?
どんなデータ型も入るVariantがあるVBのどこが型に厳しいのかと? どんなデータ型も入るobjectがあるJavaのどこが型に厳しいのかと?
>>675 あぁ、やっぱり。( ´,_ゝ`)プッ
↑、こいつかなりオカシクない?
>どんなデータ型も入るVariantがあるVBのどこが型に厳しいのかと? だれもそんなこと言ってないだろ。
うるせー馬鹿 アフォ一人放置できない敗北主義者は逝ってよし!
またキチガイが現れた
みなさん。いいですか〜。 放置。放置ですよ〜。
686 :
デフォルトの名無しさん :03/09/12 22:56
TListView を仮想リストにして使ってるけど、仮想リストの時は 各リストの左端に出るチェックボックスって使えないの? Checkboxes を True にしても表示されないんだけど。
自分で描画しろよ。
688 :
デフォルトの名無しさん :03/09/13 00:19
やっぱりVB.NETのOption Strictみたいに型に強くも弱くも自由自在にできないと。
その点でDelphiは全然機能が劣ってる。
>>671 は正論だが、Del厨はやっぱり都合の悪い意見は即荒らし扱いだな。(w
事実なのに。
DelphiはVB.NETに機能的に劣るのですか? それでは旧VB6ユーザーも誰もDelphiには移行したがらないですね。
移行したいよ〜。今までの糞コードすべて封印して。
まあ、実際このスレの連中も今Delphiなんて使ってないから。 焦ってC#のお勉強中だろ。VB.NETにたどり着くまでには程遠いな。
.NETにはまだ魅力的な部分が見えないのだけれど。 MSがヴァカ騒ぎしてユーザーから金を毟り取るためのプロジェクトにしか思えない。 .NETでしか使えない必要な機能とかあるなら、使ってみようかという気にはなるのだがなあ。
Delphiの型システムが中途半端なのは確か
まぁ MS Office が .NET で全面的に書き換わったら、そのとき .NET を使うことにするよ。 ゲイツの実験台になる必要はなかろう
ヘジの実験台になってC#に全部いいところ持って行かれたがな。(ゲラ
>>697 ところが悪い点も引き継いでいるんだよなぁ...
.NET 版コンポーネントとか作っているとイライラ。
699 :
デフォルトの名無しさん :03/09/13 02:04
#bye #end
新ネタがないからって散々外出なネタでスレ埋めなくてもいいだろ。
同じことを一人で延々とやってるのが楽しいお年頃なんだろう。
ところで、IDE のイベントログのフォントがプロポーショナルなのが 非常にイヤンなのですが、なんか変える手段があるのでしょうか? あるとしたら誰も知らないレジストリキーがあるか、OpenTools な 話になるのかしら。
さて、どうかな?
>>702 TDebugLogView というフォームがイベントログです。
これは proide50.bpl -> proide50.jpn (日本語化) にありますから、
このリソースを書き換えてしまえばどうですか?
うまくいったら教えて下さい
ちょっと無責任なので自分で試してみました。 1、exeScope (リソースハッカでは jpn は直接編集出来ないので ) 起動 2、proide50.jpn を D&D 3、左ペインで Resource -> TDEBUGLOGVIEW を選択 4、右ペインで Font.Name = 'MS ゴシック' を2行目に追加 5、編集->変更を書込む という操作です。
.NETもYahooBBみたいに街頭で配れば普及するかもしれないね。
>>708 企業 ヒ. ミ. ツ. だもん. 教えられないよぉ。
逆コンパイラで WinForm のソース作り直すのにもお金かかったしね。
>>709 いや別に秘密まで教えてもらおうと思わないが、
漏れもつくっているので(ただし、ほとんど翻訳だが)。
確かに一言で言うと、なんかこまかいところまで行き届いていないと言うか…。
VC++でActiveXを作成していたころに比べるとはるかにマシだけど。
VCLの作成に戻るとある意味ホッとする。
ひとつだけ。 .NET は Win98/me もサポートしているけど、ろくにテストされてません。 特に us-ascii 以外の文字(日本語だけでなく、ヨーロッパのアクセント記号付き含む)の扱いがひどい。 MS にしても、98/ME は、もう気にしていないんだろうけどね。 文字/文字列が UNICODE になった。ってことですべて解決。なんて思っちゃいけない。ってことですね。
何をしたくて .NET やってるんですか?
MS に代わってベータテストしてるんだろ。
.NET ユーザってマゾなんですか?
まあ、俺もDel8出たらベータテスタになるつもりだけどね。
Delphi で作って/使っていた社内用のコントロールを .NET 用に焼き直しているんだよ。
>>717 だからなんのために? Del8 でたら意味ないじゃん。
>>718 だって、VB.NET用として売れるだろ? あいつら自分で作れないんだから 今ならいい商売だ。
>>719 は偽者。
Octane 出れば話は変わるけど、今現在存在しないからね。
こればっかりはしょうがない。
会社組織全体から見れば WinForm の解析は重要な資産となるわけ。
で、やっぱり同じ人が造っただけあるなぁ。とね。
ん? Octane のベータテストなら始まった模様。 ny に流れている。
> 会社組織全体から見れば WinForm の解析は重要な資産となるわけ。 そうですか。なにをするための資産ですか。レファレンスにたくさんのってますけど。 そもそも今現在、なんのために .NET つかってるんですか。 .NET でしかできないことってあるんですか。
一応報告を。。。 リソースハッカーではだめでした。 うちは 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を入れたんだけど、メニューバーとかが文字化けしてしまいます。どうすればいいでしょう?
>>728 そうか・・・・こっちはDelphi再インストールしたけど直らない。
というかD5updateが何故か出来ない。
Windows再インストールだな・・・・
具体的には、デバッガで実行してSTOPした後の再実行や、終了後のハングアップです。
>>731 再インストールしてもWindowsUpdateしたら同じことのような。
かといってWUしないのも現実的じゃないし。
ああ・・・悲しい事に、原因はHDDにあったようです。 スレ汚しすんません
>>733 モツカレー。気にするなよ。そういうこともある。
つか、致命的問題になる前に解決してよかったと思った方がいいかも。
慰めてくれてありがと。 この前40M壊れて80M買ったばかりなのに・・・ 残暑の影響みたいだな。 今日買ったHDDも触ってみたら異常に熱いから、 ケースのふた開けてクリップ扇風機で冷やしながら使う事にしました。
は・・・はちじゅうめが?!?!
俺のノーパソですら200Mはあるのに
オレのポケコンすら4096Mはあるのに オレのMZ(略) オレのぴゅう太(略) オレのM5(略)
ネオジオスラ100Mだぜ
742 :
デフォルトの名無しさん :03/09/16 16:38
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やってた奴なんだからそんなに騒いでやるなって
>>751 いや、それは正しいとはいえないかも。
Delphi使いこなせる環境も能力もないに過ぎないということだよ。
>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と何ら変わらなくなるような気が…。
Delphi版が出るとしたらDelphiXか ・・・ん? どっかで聞いたような・・・
クロスプラットフォームDelphiか・・・いいね。 ・自前のTBitmap(OSに依存しない) ・ファイル入出力はTStream ・フォームにはTBitmapを通じたダブルバッファ方式の小規模GUI こんな感じの小型GUIで Pro版以上なら x86以外の為にCコードも吐き出せるとかさ
>>769 夢を語るのは楽しいだろうけど、現実はそうは行かないってことだなぁ。
その要求なら Java で間に合う。
でもまあ TBitmapがOS非依存だけでも メリットあるな。 DOSエクステンダーで動かすとかさ
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でも同じだしね。
誤爆すまん
おまいらTBitmapとTCanvasの区別くらいつけてください
太線なんて四角形と半円*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使うメリットがまったくないんですが。
連続投稿ゴメソ
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のまるっきり別ものだろ。
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イラネって言ってたの誰だっけ?
あーなんか愚痴ってたネ♥
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 そろそろ次のやつを発表するから、発表前に買え、そして新しいやつも買えゴルァ!ってことだろ。
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みたいな汚いものに振り返ったりしない。
898 :
デフォルトの名無しさん :03/09/23 18:35
>>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
どうして.NET厨は去年の記事しか持ち出さないのだろう。
911 :
デフォルトの名無しさん :03/09/23 19:26
フサギコはforループの最終値がループ内で変わると思ってたの?
相談室と談話室分けたほうがいいよ。 後者はML・厨房隔離用に。
スレタイに妙なAAも前者は無しで。
915 :
デフォルトの名無しさん :03/09/24 01:03
ヤッターマンコーヒーライター
どうせ隔離したって厨房はどこにでも寄ってくるだろ
ヤッターマン コーヒー ライター 何事も分割することで上手くいく
まあ、最近はくだすれにまで湧く事も増えてきたしなあ。
ヤッター マンコー ヒーライター うまく分割しないと余計酷くなる 初代くだすれは読んでてキモチ良かった(;´Д`)ハァハァ
どうしても談話だけのスレがほしいなら マ板に作れ。 なれあいのスレが技術スレにあるのはじゃま。
>880 その通り。 かわいそうだよね、VB厨って。
924 :
デフォルトの名無しさん :03/09/24 17:44
ヤッター!ヤッター!ヤッターマーーーン!!
初心者相談は別スレがあるから、 ・Delphi中級以上相談室 ・Delphi談話室 に分割するのはどうか。
分割する理由なし。
928 :
デフォルトの名無しさん :03/09/24 19:37
>>928 お疲れさん。 ついでに初心者用じゃない方の技術話が出来るスレもお願いね。
Delphiって教育用(初心者勉強用)なんだから 初心者用だけで良いのでは?
そうかテーマ絞るか・・・ギコbasic拡張計画はどうだろ?
>>931 よし、それも立てろ。
あとIndyスレも必要だな。
MFCスレに対抗してVCLスレも立てるべし。
Delphi.NETはスレはすでにあったかな?
Delphi.NETって正式な名前だっけ? Delphi7になるんだっけ? それとも.NETになっても名前変わらない? Delphi(.NET)とした方がいいのかな?
934 :
デフォルトの名無しさん :03/09/24 20:01
Delphiスレ乱立の兆し
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ソースを配布するのは違反かな。
>>941 今回のバッファの件で、どういうふうに問題なのかが良く分からなかったりする。
相手のプロセス内にスレッドを作成すれば、色々と出来ると思うけど、そういうのとは別ですか?
>>941 お前がわかっていない。外部から操作できるその手段自体がセキュリティホールだろ。
で、リモートPCをハックするにしてもその方法を相手側に準備させることができんだろ?
もしできるとしたら、その方法自体がセキュリティホール。
ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。
通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は
隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
元記事にもあるように、可能性だ。事実上起きない問題なのだよ。
実害のないバグにそんなに騒ぐな。
> 実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。 > 通常のヒープやスタックは実行不可。 じゃあ世間で騒いでいるのはなんでしょう?(w 知ったかは良くないよ。
知ったかもなにも、隅から隅まで知ってますが何か? 俺に言わせれば、世間のほうが馬鹿ですね。まるでY2Kの時のようで滑稽です。
XPでユーザがマルチでログインしているとき 権限が低いユーザが高い権限を取得することも可能になるわけだが。
>>950 状況を作ること自体が問題。でさどうやって権限取得するの? 知ったかはお前だよ。
絵に描いた餅的な、適当なことをほざくんじゃネーヨ。ヴァカ。
>>952 今回のケースとは別物だろうが。ヴァカですか?
>ついでに言っておくが、実行コードを走らせるには実行可能フラグの設定されたメモリ領域ではならない。 >通常のヒープやスタックは実行不可。さらにオーバーフローされたとしても大抵は >隣接する関係のないデータが書き換わるかAVが発生してあぼーんして終わり。
スタックは実行不可でもスタック内の 戻りアドレス情報を変更すれば、 実行可能な別の領域に飛ばせるわけだが。
グローバルフックやレジストリをいじればいくらでもコード実行できるのに それに比べれば今回のバグがかわいすぎると思いますが。こんなことで騒ぐなんて可笑しいね。
Windowsってスタック領域実行できないの? つーことはLinuxより安全ってことなのかな。
>>957 問題ない。修正しなくてもいい。なんて言っている馬鹿がいるからねぇ。
960 :
デフォルトの名無しさん :03/09/24 23:41
デスクトップなDel厨はネットワークアプリを作ってはいけない。 作るならバッファオーバーフローの危険性のきわめて低いVB.NETを使いましょう。
はいはい。よかったでちゅねー
あわわ・・なんでフレームが起きてるんだろう(;´Д`)
>>957 スレ違い承知で一つ質問。
私は
>>936 の時点では特に騒ぎは起こってはいないと感じましたが,
あなたは今回の件のどの部分で「騒ぎ」を感じましたか?
ていうか,みんなに質問した方が早いかもーヽ(´ー`)ノ 今回の事で,どこか「騒がしいなぁ」と思える部分はありますか? 騒ぎが起こっている URL や,このスレッドのレス番号などを お答え頂ければ,抽選で1名の香具師に myブチューだ <- 嘘
つーか。Delphi7だとTComboBoxは修正されてる。ただいま確認中。しばし待て。
上記コンポを使ったチャットアプリは危険かもな。
∧,,∧ なんですか? ミ,,゚Д゚彡 ネットワークアプリて? ミつ日(ミ
電撃ネットワークが… いや、なんでもない。
>>968 次スレよろ。ちゃんと談話と質問をわけるよーに。
TComboBox TListBoxはDelphi7では修正されている。 TToolBar TListViewは修正されていない。 しかしだなあ、実際に実行したところAVが起きて終わりだったぞ。 これがどうセキュリティに関係あるか小一時間
> 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ユーザなんてそんなもんだよ。なにを今更。
Delphiユーザはネット接続禁止!!
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
ヴァー ファッファッファッファッファッ
最初からVCLにバグあると言ってましたが。
>>939
終わり
バグがあるのに修正しなくて良いとは何事か。
>>939
ちゃんとソース読んで実験しろよ。セキュリティも何も発生しないじゃねーか。
GetMemで2G確保するような程度の問題だろ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。