Delphi Tech
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001D使い
NGNGDelphiとその言語ObjectPascalの Technology/Technique についてのスレッド
質問・議論など
他の言語やツールはこうして実現している、という参考になる話は歓迎
0002D使い
NGNG−自己開放型クラスを使った簡易複素数ライブラリ
type //Interface部
IComplex = interface
procedure Complex(r, i: Double);
procedure Add(C: IComplex);
function GetR: Double;
function GetI: Double;
procedure SetR(Value: Double);
procedure SetI(Value: Double);
property r: Double read GetR write SetR;
property i: Double read GetI write SetI;
function ToString: string;
end;
TComplex = class(TInterfacedObject, IComplex)
private
FR, FI: Double;
function GetR: Double;
function GetI: Double;
procedure SetR(Value: Double);
procedure SetI(Value: Double);
procedure Add(C: IComplex); overload;
public
constructor Create; overload;
constructor Create(r, i: Double); overload;
procedure Complex(r, i: Double);
function ToString: string;
class function Add(C1, C2: IComplex): IComplex; overload;
end;
0003D使い
NGNG次に実装部(implementatoin部)
{ TComplex }
procedure TComplex.Add(C: IComplex);
begin
Self.FR := Self.FR + C.GetR;
Self.FI := Self.FI + C.GetI;
end;
class function TComplex.Add(C1, C2: IComplex): IComplex;
begin
Result := TComplex.Create(C1.GetR + C2.GetR, C1.GetI + C2.GetI);
end;
procedure TComplex.Complex(r, i: Double);
begin
Self.FR := r;
Self.FI := i;
end;
constructor TComplex.Create(r, i: Double);
begin
inherited Create;
Self.Complex(r, i);
end;
constructor TComplex.Create;
begin
Self.Create(0, 0);
end;
function TComplex.GetI: Double;
begin
Result := Self.FI;
end;
function TComplex.GetR: Double;
begin
Result := Self.FR;
end;
procedure TComplex.SetI(Value: Double);
begin
Self.FI := Value;
end;
procedure TComplex.SetR(Value: Double);
begin
Self.FR := Value;
end;
function TComplex.ToString: string;
begin
Result := FloatToStr(Self.FR) + ' + ' + FloatToStr(Self.FI) + ' i';
end;
0004D使い
NGNGprocedure TForm2.Button1Click(Sender: TObject);
var
a, b, c: IComplex;
begin
a := TComplex.Create(5, 6);
b := TComplex.Create(3.5, 1.1);
b.Add(TComplex.Create(0.14, 0.1));
c := TComplex.Add(a, b);
ShowMessage('a=(' + a.ToString + '), b=(' + b.ToString +
'), c=(' + c.ToString + ')');
end;
-------------------------------------------------------
constructor Create(C: IComplex); がほしいとか、
そういう機能追加に当たるところは除いて、
ここまででまずいところがあるでしょうか?
ちなみに上のコードでメモリリークはありませんでした。(MemCheck.pasで確認)
個人的には a.GetI などとするとプロパティを介さずに
アクセスメソッドが使えてしまうのがちょっと嫌。
Interfaceだから仕方ないかな。
0005J使い
NGNG0006名無しさん@お腹いっぱい。
NGNGwith XX.create do try
・・プログラム・・
finally free; end;
クラスを作って作業して捨てるのをローカル変数無しやる
0007名無しさん@お腹いっぱい。
NGNGそういうのいいならこうゆーのも?
with ListView1,TreeView1 do
0008>7
NGNG0009名無しさん@お腹いっぱい。
NGNGCから移ってきた当初はそういうwithの働きが分らなかった。
どこに参照が保持されるんだろうって。
ブロックのネストが深くならない点でも標準的書き方。
>7
双方に同じ名前のメンバがいた場合混乱しない?
まあ、そこだけメンバ修飾すればいいんだけど。
0010名無しさん@お腹いっぱい。
NGNGWith ListView1 is L , TreeView1 is T do
みたいに書ける時代が来るのを待つべきだね
0011名無しさん@お腹いっぱい。
NGNG私は以前自前のクラスライブラリにインターフェースを導入しかけましたが、
結局やめました。
理由は
・Delphiには既に3種類のクラスの生成・廃棄ルールがあり、
もうこれ以上増やしたくない
・インターフェース導入によってIとTが入り乱れて可読性が落ちる
・インターフェースはコードの量を削減に寄与しない
・単一継承だけでも破綻しない
というわけでインターフェースに関わるのは
COMがらみの場合のみにすると決めました。
これを踏まえた上でなお
インターフェースを導入するメリットはありますか?
またInpriseが提供しているライブラリで(VCL以外のものも含む)
COM関連以外でインターフェースを使っているものはありますか?
0012名無しさん@お腹いっぱい。
NGNGexcept
finally
end
って書きたい
0013D使い
NGNGなるほど。immutable objectっていうのはそういうことだったのか!
(immutable:不変の)
JavaのStringクラスみたいな感じですね。
propertyさえもいらなくなってずいぶんすっきりするなぁ。
複素数みたいなプリミティブなクラスはimmutableの方がいいのかな。
0014名無しさん@お腹いっぱい。
NGNG記述量がすごく減るのになぁ‥
0015名無しさん@お腹いっぱい。
NGNG>COM関連以外でインターフェースを使っているものはありますか
OpenToolsAPI
0017名無しさん@お腹いっぱい。
NGNGtry try
//処理
except
//処理
end;
finally
//処理
end;
ダサクない。ネストはどれだけでもOKよ。
001816
NGNGトライトライって書くと松野ちかおねえさん思い出すの
俺だけか?
0019名無しさん@お腹いっぱい。
NGNG0020名無しさん@お腹いっぱい。
NGNG#define は下手な使い方されると可読性下がるので嫌い
0021J使い
NGNG結果、 Delphi で書いた場合 Java の2倍近くの時間がかることがわかりました。
以上。
0022名無しさん@お腹いっぱい。
NGNGOpenToolsAPI ってどんなことできるの?
>18
その人自体知らないです。
>20
賛成。
0023>21
NGNGガベージコレクションの威力って奴ですね
0024名無しさん@お腹いっぱい。
NGNGTObject.NewInstance メソッドをオーバーライドしたらどうすか?
0025名無しさん@お腹いっぱい。
NGNGttp://java.nikkeibp.co.jp/Java/News98/0327HotSpot.shtml
0026漢太郎>25
NGNG002725>管太郎
NGNG0028漢太郎>27
NGNG単純に結果が速かったんだと思った
0029310
NGNGTTest=class
published
procedure test;
end;
で実行時情報を使ってメソッド"test"を検索して、
testを実行したい。という処理を書きたいのですが、
全然わかりません。
サンプルコードが解説ページへのリンク希望
0030漢太郎>29
NGNGのDelphi版ギコbasicで使われているので丹念に読めば判ります。
書籍上の情報は、何月号かのCマガにあるのでバックナンバーをそろえるといいでしょう
0031310
NGNG普通にCreate/Freeする場合はどうなんでしょう
0032J使い
NGNGどうせ変わらないだろ、と思ってやったら、
Java: 5127 msec.
Delphi(Create/Free): 8262 msec.
Delphi(interface): 12899 msec.
になった。interface がもっと速ければなぁ。
0033名無しさん@お腹いっぱい。
NGNG汚いなー
ブロックが{}ならそこそこ見れるんだろうけど
>12
の構文をサポートせよ!
0034名無しさん@お腹いっぱい。
NGNGうーんこの結果は信じがたい
実際のヒープを切り刻むような複雑なアプリでも
この傾向は変わらないの?
0035>32
NGNGC++はnew deleteをオーバロードすればなんとか出来るけど
Delphiも場合によって選択出来るような仕掛けがそろそろ欲しいな
0036>32
NGNGTObject.Create.Free を10000000回実行すると 6375 ms
InterlockedIncrement(val);InterlockedDecrement(val); を10000000回実行すると 1687 ms
0037名無しさん@お腹いっぱい。
NGNGできますか?
0038名無しさん@お腹いっぱい。
NGNGctrl+jのコード補完機能を活用せよ
delphi32.dci
[b|begin/end]
begin
|
end
003937
NGNGOpenTools API って怪しいんだけれど、これでできないかなぁ?
<ドキュメントが無い・・?
0040初心者質問
NGNGもしそうなら、何もしないクラスのcreate/new、free/?比較ならJavaがはやくても、
メソッドが大きいものになれば変わってくるかも。
0041>40
NGNG004241の解説
NGNGで仕組みはこんなスペースじゃ書けない。とりあえず答えを知
りたい欲求があるなら勉強してみたら? 答えかいちゃうと勉
強しなくなるでしょ? だから書かないよ。
0043名無しさん@お腹いっぱい。
NGNGんが?メモリマネージャ丸ごととっかえられますけど?
0044名無しさん@お腹いっぱい。
NGNGhttp://pcgaz.nikkeibp.co.jp/tokusyu/bestsoft00/bestsoft_08.shtml
0045D使い
NGNG荒れるから他でやってほしいっす。
Delphiの技術話とは直接関係ないですし。
0046名無しさん@お腹いっぱい。
NGNG0047>43
NGNGnew みたいにオブジェクト毎に別のメモリ管理したいって事でしょ?
0048>>47
NGNGオーバーライドすれば?
004947
NGNG005047
NGNGうーん。VCLソースもっと読んでみよう。なんか勘違いしてたみたい
0051D使い
NGNGこの辺の話は普通にDelphiで開発してる分にはほとんど使わない。
必要となったら深いとこまで入れるって事。
って、Interface以外はDelphi1や2の頃から変わってない話じゃないのかな?
俺は新入りだから詳しくは知らないけど。
0052名無しさん@お腹いっぱい。
NGNG少しだけゴールが見えたのかな。
http://www.inprise.co.jp/kylix/index.html
0053名無しさん@お腹いっぱい。
NGNGKylixが出たら作りたいソフトのアイデアが幾つかあるので楽しみです。
Linuxプログラマーが一気に増えそうですね。
Kylix製のフリーソフトが増えてくればゲーム以外の環境はLinuxに以降出来そう。
0054名無しさん@お腹いっぱい。
NGNGFormStyleにfsStayOnTop指定したとき、メインフォームとそれ以外のフォームじゃあ、動作が違うんだね。
メイン以外のを、常に手前に表示したい場合、みんなはどうしてるの?
過去スレに、Application.Norm〜を使うってのがあったから、オレはそれ使ってるけど・・・
なんか、スマートに決まるやり方、無い?
0055名無しさん@お腹いっぱい。
NGNG個人的には template が欲しいところ・・・。
0056名無しさん@お腹いっぱい。
NGNGよし、それここに書き込め。
news://newsgroups.borland.com/borland.public.delphi.non-technical
0057ねこま
NGNG0058ねこま
NGNG0059>54
NGNGでもそれが一番簡単だったみたいだけど?
0060>56
NGNG006156
NGNGI want templete.
じゃ通じないか。
Why don't using templete in Delphi.
I wish using templete in Delphi.
ごめん俺も英語駄目だ。
0062名無しさん@お腹いっぱい。
NGNG0063名無しさん@お腹いっぱい。
NGNG理由:使うと、ただでさえ大きい実行ファイルが一挙に膨張しそうに思えるから
それに、演算子のオーバーロードか 演算子の新設機能が無いとあんまり意味ないかも。
というかそれが欲しい。
たとえば a + b は書けなくていいから a @ADD b
みたいには書きたい
0064名無しさん@お腹いっぱい。
NGNGTObjectのみしか保持できないコンテナライブラリって嬉しい?
006564
NGNG確かに自分ではtemplate使わないと思うけどね
0066名無しさん@お腹いっぱい。
NGNGじゃなくてもっとエレガントなのが欲しいね。
0067名無しさん@お腹いっぱい。
NGNG充分エレガントな気がするが‥‥‥
もっとエレガントなのって、例えばどんなのよ?
0068名無しさん@お腹いっぱい。
NGNG呼び出せてしまうというのは?
Rubyとかのより動的な言語であるんだけど、
実行効率とトレードオフする必要がある
0069>64
NGNGというかそれがDelphiの良さだと思ってた。
だって、何やってるか局所的に見て判るもの
最初は、作るのに手間かかるなあと思ってたけどさ
0070名無しさん@お腹いっぱい。
NGNG日本のニュースグループに投稿したら?
0071名無しさん@お腹いっぱい。
NGNGみたいに関数の途中で帰って来るけど 次呼び出したらそこから実行
させる機能。
これをDelphiで実装してほしいなあ。
007255
NGNG0073名無しさん@お腹いっぱい。
NGNGtemplate はコードを膨張させるとは限らないんだよ。
C++ の実装がたまたまそうなっているだけ。
>69
>だって、何やってるか局所的に見て判るもの
は?意味不明。
0074名無しさん@お腹いっぱい。
NGNGNTではFiber APIとして実装されています。
0075D使い
NGNGTObjectStackとかTObjectQueseとかから、property Itemと
Add()だけオーバーライドした派生クラス作るし。
Template 作ったら演算子オーバーロードも必要だし、
そこまでするとC++になってしまう。
今ぐらいがちょうどいいバランスかな、と。
どうしても使いたいならC++使うし。
0076名無しさん@お腹いっぱい。
NGNGなぜですか?
0077D使い
NGNG多分コードの可読性が落ちることだろう。
TObjectしか格納できないコンテナライブラリってJavaもおなじ。
Platform NativeなJavaっていうのがDelphiの進むべき方向だと最近思ふ。
0078名無しさん@お腹いっぱい。
NGNG>多分コードの可読性が落ちることだろう。
キャスト繰り返すこととか、型ごとにクラスをつくる
(Java3D の Vector3d, Vector3f とか)ことの方が、
可読性落ちると思うけれど。
0079D使い
NGNG>なぜですか?
比較演算子なかったらソートさえもできない
0080名無しさん@お腹いっぱい。
NGNGややこしいのはコンパイラ上ではなく、
pascal的スクリプトを用意してそれで実現して欲しいなあ
object.script('c:=a+b;');みたいな感じ
0081名無しさん@お腹いっぱい。
NGNGソートするためには比較(関数・演算子)が必要だが、
template → ソート は発想が飛びすぎ。
Effective C++に載ってる、総称ポインタとtemplateを使った
Stackクラスはみた?
templateがなければ、あのエレガントさは実現できないでしょう。
(つまり、使用する型毎に派生させる必要がある)
008275>79
NGNG008380
NGNGも自動的にスクリプト側から使えるものとするね。
0084>81
NGNGただ値を保持するだけのクラスにしか使えないな
0085名無しさん@お腹いっぱい。
NGNG関数をオーバーロードするって考え方は出来ないのかね〜
0086>85
NGNG0087名無しさん@お腹いっぱい。
NGNG「template = 演算子のオーバーロード」とか
「template = コンテナクラス」と考えている人が多いな。
「template = アルゴリズムの継承」でしょ。
演算子オーバーロードは、アルゴリズムをスマートに記述するための
手段に過ぎないし、コンテナクラスは応用例に過ぎない。
さらに、javaもそうだけど、
templateがないまま汎用コンテナクラスを実装すると、
危険or効率の悪いダウンキャストが必要になる。
templateでラップすれば安全性がずっと高まる。
ちなみに、C言語にはqsortという関数があるが、
これは、オブジェクトのアドレスと比較関数を
パラメータとして、一般的な「ソート」を実現している。
このように、コンテナクラス程度の基本的なアルゴリズムのためなら、
compareとequalがあれば十分。さらにis-aもあれば言う事なし。
>それは同一ユニットでしか通用しないじゃん。
そうなの?知らんけど。で、
関数のオーバーロードは同一ユニットのみ
→ 演算子のオーバーロードがなければ使いものにならない
→ templateは価値が全く無い
になる訳ね。
仮にtemplateが導入されても「使わなけりゃいいじゃん」
templateのせいでコンパイル時間が2倍になったら嫌だろうけど、
それ以外に弊害はあるわけ?
誰も使う事を強制しているわけじゃないでしょうが。
何故そこまでして不用論を展開するのか、理由がわからないな。
旧バージョンでコンパイルできないから?
それとも、「今の仕様が最良」で、改変は認めたくないって事?
確かに言語仕様は複雑になってしまっているけどさ。
「Delphiが最良、改善点(劣る面)はない」
この考えで固定されている人があまりに多いから、
「デル厨は・・・」と言われるんだよ。<煽り
0088>87
NGNGどんな感じの文法と、実装になるのかな?
テンプレートだけ定義したユニットみたいなのが必要だよね?
でその記述方法は?
そして利用時の記述方法は?
・・・・具体性が無いと不安な人より。
0089名無しさん@お腹いっぱい。
NGNG>templateって言語機能としては強力だけどシンプルさが失われてしまう。
使う分には非常にシンプルだが?
まさか、キャストを多用してる方がシンプルだとかいう寝言は言わないよね?
確かに、<>の記述はうざい気もするけど、typedefや#defineもあるからうまく使え
ばそんなに問題にはならないと思うが。
あと、クラステンプレートの記述は確かにシンプルとは言い難いけど、関数テンプ
レートの記述はかなりシンプルだよ。
0090名無しさん@お腹いっぱい。
NGNGtemplate を導入するのは難しいかもしれないが、
Delphi の場合は template 導入しても、87が言うように
「使わない」っていう選択肢があるから、いいんじゃない?
0091名無しさん@お腹いっぱい。
NGNG知っていれば気楽に「テンプレートを」とはいうまい。
Java も、C++ より単純化した、パラメタライズド・オブジェクト
を導入するでしょ?
C++ テンプレートの処理系にとっての一番の問題は、
実体化されるまでコードを吐けないということだな。
こういった問題を、C++ では「すべてのコードが同じ
ヘッダーファイルを読み込む」ことを仮定して逃げている。
個々のソースごとにコードを生成し、「運がよければ」
リンカが重複コードをまとめてくれるだろう。という
戦略だ。
これは、.H を持たない Pascal にとってはきつい。
売りである、コンパイル速度を維持することは
難しいだろう。
0092テンプレート不要派
NGNGC++と同じマクロみたいなのが欲しいなら
単にプリプロセッサをかませばいい。
欲しい人が自分で作って公開したらいいんじゃないの?
ようは、ユニットの自動作成機能みたいなものじゃない。
言語に無理に組込んで貰う必要はないと思う。
その為にエディタとかが異常に重くなるよりはよほど良いのでは?
0093名無しさん@お腹いっぱい。
NGNGほんじゃ、ウィザード(エキスパート)を作ればいい訳だ。
0094名無しさん@お腹いっぱい。
NGNGうーん。#define 使ったトリックで、Generic Programing を
したくないからテンプレートが出てきたんであって、
それを逆戻りする必要性はないな。
0095>94
NGNGではなく、実コードに展開する為の方法を記述したライブラリ方式で実現する
事をもって マクロみたいなものと言ってるんでは?
0096名無しさん@お腹いっぱい。
NGNGuses <嵌めたいクラス名> in 'テンプレート定義ファイル'
とかやると 自動的にユニットが作られるみたいな感じかな?
0097名無しさん@お腹いっぱい。
NGNG例は関数ですがクラスにも応用できます。
#そういえば当時はresultなんてなかったな
max.int.pas
function Max(a, b: T): T;
[eof]
max.imp.pas
function Max(a, b: T): T;
begin
if a > b then
Result := a
else
Result := b;
end;
[eof]
int_max.pas
unit int_max;
interface
type T= Integer;
{$i max.int.pas}
implementation
{$i max.imp.pas}
end.
[eof]
使い方
uses int_max, chr_max;
var
n: Integer;
c: Char;
begin
n := int_max.max(10, 30);
c := chr_max.max('A', 'B');
end;
0098名無しさん@お腹いっぱい。
NGNG何でインデントが消えちゃうんだろ?
0099>98
NGNG0100名無しさん@お腹いっぱい。
NGNGスペースを に置換するという手もある。
コピペにはこっちの方が便利。
0101名無しさん@お腹いっぱい。
NGNG0102名無しさん@お腹いっぱい。
NGNG0103名無しさん@お腹いっぱい。
NGNG0104名無しさん@お腹いっぱい。
NGNG0105名無しさん@お腹いっぱい。
NGNG本を買えってこと?
0106名無しさん@お腹いっぱい。
NGNGDelphi 6 Developer's Guide
Osborne McGraw-Hill; ISBN: 0072129956
0107名無しさん@お腹いっぱい。
NGNGどうするんだ?
0108名無しさん@お腹いっぱい。
NGNGいらねー奴は使うなというのは反対。
Delphiの最重要キーワードである「最終的な生産性の高さ」という観点からみた場合、
# 好き・嫌い、ラクチン・面倒だけで議論してもしょうがないよね。
どこでもキャストは問題あり。
asが安全と言ったところで配布したアプリで例外出したらしょうがないでしょ?
可能な限りコンパイル時に検出したい。
コンテナクラスについては
>>75
>TObjectStackとかTObjectQueseとかから、property Itemと
>Add()だけオーバーライドした派生クラス作るし。
が妥当な意見。確かにこれやる度に野暮ったくってうんざりするけど、
増加するコード量・オーバーヘッドはわずかだし、検証も簡単でバグもでない。
0109名無しさん@お腹いっぱい。
NGNG># 好き・嫌い、ラクチン・面倒だけで議論してもしょうがないよね。
まぁ、楽チンってのは重要だよな。
楽チンだけれど、可読性が下がるとかあればまた別だけれどね。
TObjectList を継承する方法もあるが、
TList -> TMyObjectList とするより、
TList<TMyObject> とした方が楽だし読みやすいのではないか。
0110名無しさん@お腹いっぱい。
NGNGプロジェクトのソースを、バージョンごとに管理・・・。
CVS,RCSっぽいやつのDelphi版ってありませんか?
0111108
NGNG>TList<TMyObject> とした方が楽だし読みやすいのではないか。
まあそれは認めるし、(俺 as プログラムヲタ)の血が騒ぐ。
でも見てくれがよいという程度のメリットでは、
templateなんて大技が持ち込まれることは無いだろうね。
たぶんInpriseはそれを理解した上で>75の手法を取り入れたんじゃないかな。
# なんか議論が循環的になってきぞ
0112108
NGNG>楽チンだけれど、可読性が下がるとかあればまた別だけれどね。
"楽チン"は書こうかどうか迷ったんだけど、
やっぱりつつかれちゃったね。
生産性を下げるような超短期的な楽チンのお手本が>6。
いちいちローカル変数を宣言すべきか省略すべきか意識的に判断する必要があるし、
デバッガで参照できないし、コード補完を利用できないor2種類用意する必要があるし、
さらにはこんな書き方教科書に載ってないから新卒DEL坊が必ず聞きにくるというおまけつき。
んで最後にメソッドfooに参照を渡す必要がでてきてローカル変数を使うように書き直して一件落着。
これだけのリスクを冒してまで、数バイトのタイプをケチる必要ある?
頼むから上っ面だけのクレバーなコード書くのやめて > ウチのDEL坊s
話を戻すとPascalは元々冗長なコーディングをする言語であるから、
生産性を上がらないようなら、
無理して変なスタイル・機能を持ち込んだりしないで、
我慢して普通のコーディングをしてね。
というのが俺の考え。
0113名無しさん@お腹いっぱい。
NGNGEnterprise版にはTeamSourceというのが統合されてる。
単体でも確か売ってたと思う。
それ以外の外部の管理ツールは
例えばUnit1.pasとUnit1.dfmを
常にペアで扱う必要があって結構注意が必要。
# 以前Visual SourceSafeでpasだけ管理してひどい目にあった
だからプロジェクト単位・ディレクトリ単位で管理するのが楽。
0114109 as D厨
NGNGなるほど。
むやみに言語を拡張する必要がない(しないほうが良い)という意味では
template はいらないとは思う。
少なくとも導入するなら、 Eiffel の総称(制限つきの総称)
みたいなのを導入して欲しい。
・・・というか、template(%総称)って、コンテナ以外の使い道って
結構あるのかなぁ?
0115D使い
NGNG身近な例が他にないからなぁ。
とりあえず、>91さんの言うJavaのParameterized Objectかな?
勉強しよっと。参考ページとかないですかねぇ?
Templateに近いものが導入されたら、絶対にSTLもほしくなると思う。
どっちにしても肥大化は避けられないのね。
>>97 すごい!目から鱗!
>CVS
K2Editorの作者はCVS使ってるようだけど。どうなんだろ?
0116名無しさん@お腹いっぱい。
NGNGWinCVSはとても良い。半端だけどリファレンスもでた。
www.wincvs.com
アンチMS派はこれに統一されるんじゃないかな。
0117名無しさん@お腹いっぱい。
NGNGないと、キャストが増えてイヤーンな感じがする。
0118名無しさん@お腹いっぱい。
NGNG0119名無しさん@お腹いっぱい。
NGNGと、 Writeln みたいな、引数の数に制限ないのは自分では宣言できない
のも気持ち悪いのぉ。
0120>119
NGNG書くものだからです。もちろん、書いて間違いな位置は沢山ありますが
Pコード式の体系なら実際に手続きだったのかもしれません
引数の数については最近のDelphiならoverloadで対応可能かもしれません
しかしwritelnは型を自動判別する機能もありますから同じようにするには
全部の組み合わせを書かなければならない訳で、実際にやるのは苦しいかも
それよりオープン配列という便利なものがありますから無意味ですね。
まあこれはヘソみないなものですね。特に不要だけどついてる
0121名無しさん@お腹いっぱい。
NGNG>少なくとも導入するなら、 Eiffel の総称(制限つきの総称)
>みたいなのを導入して欲しい。
Object Pascalの仮想拡張文法によるサンプルコード希望。
# 昔メイヤー先生のOOP本読んだけど
# サンプルで使われてたEiffelの事は完全に忘れちゃってる
>>115
>Templateに近いものが導入されたら、絶対にSTLもほしくなると思う。
>どっちにしても肥大化は避けられないのね。
ライブラリの肥大化は大歓迎。ライブラリの貧弱なOOPLは役に立たない。
OOPはある意味ライブラリの効率的な作成・利用技術だからね。
逆に言語仕様の肥大化はこんな事になる。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=970844960
PL/I症候群てやつね。
>>117
goto 107
堂に入った堂々巡りだな。
仮にtemplate入れてもTStrings.ObjectsやTag,Dataプロパティの
キャストは消えないよ。それとも消えるの?よくわからん。
0122名無しさん@お腹いっぱい。
NGNGライブラリの使用者が意識して使う必要があるか?
という点が重要じゃないかな。
class GenericStack {
protected: // 実体を作らせない
GenericStack();
~GenericStack();
void push(const void *object);
void * pop();
private:
struct StackNode {・・・};
StackNode *Top;
};
class IntegerStack: public GenericStack {・・・}
継承して使うのが普通の考え方だけど、
template <class T>
class Stack: private GenericStack {
public:
void push(T *object) { GenericStack::push(object); }
T * pop() { return static_cast<T *>(GenericStack::pop()); }
};
インターフェースをそのまま利用可能にし、階層の知識は不要
キャストを使わずに利用でき、出力コードの増加はゼロ
generic.hライクなマクロでも実現できるけど、
その場合、型名を引数にしなければいけないね。
0123名無しさん@お腹いっぱい。
NGNG>goto 107
>
>堂に入った堂々巡りだな。
>仮にtemplate入れてもTStrings.ObjectsやTag,Dataプロパティの
>キャストは消えないよ。それとも消えるの?よくわからん。
Javaなんかでコンテナクラスを使用してると、ダウンキャストが
増えるんで、テンプレートがあればなぁ、と思うことがあるよ。
あ、Delphiってコンテナクラスが無いんだっけ?
0124名無しさん@お腹いっぱい。
NGNG実装したときのメリットとデメリットのトレードオフだから、
実際に実装されたモノを見ないと、大きさは計れない。
また、立場(設計側・使用側)により見解も異なる。
つーか、ここでうだうだ言っても、結局Inpriseの方針が全てだから・・
みんなそれは理解した上で言いたい事を言ってるだけだからね。
マクロとか、プリプロセッサは、
言語仕様に取りこまれるかどうかで生産性は大きく変わるでしょ。
自作のプリプロセッサをかけたソースを元にデバッグするとなんて、
修正しながらのテストが出来ないし、makeもMakefileから。
「ほぼ実現出来る」から「いらない」って単純に考えられるかなあ。
トレードオフと考えて判断するなら納得だけど。
例えば「C++にfinallyが欲しい」という意見があるけど、
デストラクタとマクロを使って似たような構文は実現出来る。
でも、それでも欲しいのは何故?
finallyが「あった方が便利」だからだと思うんだけど。
0125>122
NGNG自分で書くなら要らんように思うが?
自分で書く時に効率良く書きたいなら、>>97の方法で使いたい時ソースをインクルードでは駄目かな?
まあDelphiはC++のようにどこでも型定義出来る訳じゃないから難しいか。
何故反対するかというと、この機能を実現したとすると、今の usesで
使いたいユニットをリンクする仕掛けを踏襲するには、コンパイル済ユニット
に、その手の情報(コンパイルしてない情報)を持たせなければならない。
すると、元のユニットを修正すると、そのユニットを使うと宣言してる全てを
コンパイルしなければならない。
たとえば、コンポーネントがソース無しで提供される事は良くあるけど、
そのコンポーネントでテンプレートが使われていたら、その依存関係が
非常にややこしくならないか?
0126125
NGNG別のコンポBがAを使っていてソース無しで公開されいた。
AとBを同時に使ってCを作った。
ところがAがバージョンアップされた。
普通のライブラリならAを更新するだけで問題無い。
でもテンプレートライブラリだとBを再コンパイルしなければならないのでは?
0127220
NGNGおまけにジャックルーシェはゴミだし...
>>122
>階層の知識は不要
これはウソ。親クラスのインターフェースを知っとく必要があるでしょ。
class library利用者は最低限継承を理解してないとだめ。
実際は(データベース)コンポを使うだけという最下層があるんだけど。
>>123
その議論を今までえんえんとしてたの。>>64あたりから読んでね
現状は基底クラスであるTObjectのみしか保持できないコンテナライブラリのみある
おかげでダウンキャストをソース全域でやる必要がある。でも抜け道もある。>75
>>124
C++のfinallyは絶対必要。いくつかのバグが未然に防げる可能性が非常に高い。ブロックローカルなクラスなんてナンセンス。
あるいは>>12をサポートしてもいいかもしれない。生産性向上にはほとんど寄与しないけど。
ではなぜtemplateはだめでこっちは賛成なのか?
それは上記2つの改善は導入したところで全然副作用がないから。
templateは125,126の言うように、副作用がでかすぎる。
最悪VCL,コンテナライブラリの再設計が必要になる。
このコストはtemplateの導入メリットを遙かに上回る
#一日中コンテナクラスを宣言してるわけじゃないでしょ?
よって導入の必要性なし。これがトレードオフの結果。
...なんてのは、ここで言うまでもなくInpriseが判断した結果だと思うよ。
ここらへんのInpriseのエンジニアの徹底した現実主義に基づいた
判断力(サポートするアプリ・プラットフォームの範囲、
控えめでフラストレーションがたまるが強力な言語仕様、
実行速度などなど)はDelphiに関しては絶対的に信頼できるよ。
というか少なくとも俺はしてるの。いまのところ。
0128121
NGNGおまけにジャックルーシェはゴミだし...
>>122
>階層の知識は不要
これはウソ。親クラスのインターフェースを知っとく必要があるでしょ。
class library利用者は最低限継承を理解してないとだめ。
実際は(データベース)コンポを使うだけという最下層があるんだけど。
>>123
その議論を今までえんえんとしてたの。>>64あたりから読んでね
現状は基底クラスであるTObjectのみしか保持できないコンテナライブラリのみある
おかげでダウンキャストをソース全域でやる必要がある。でも抜け道もある。>75
>>124
C++のfinallyは絶対必要。いくつかのバグが未然に防げる可能性が非常に高い。ブロックローカルなクラスなんてナンセンス。
あるいは>>12をサポートしてもいいかもしれない。生産性向上にはほとんど寄与しないけど。
ではなぜtemplateはだめでこっちは賛成なのか?
それは上記2つの改善は導入したところで全然副作用がないから。
templateは125,126の言うように、副作用がでかすぎる。
最悪VCL,コンテナライブラリの再設計が必要になる。
このコストはtemplateの導入メリットを遙かに上回る
#一日中コンテナクラスを宣言してるわけじゃないでしょ?
よって導入の必要性なし。これがトレードオフの結果。
...なんてのは、ここで言うまでもなくInpriseが判断した結果だと思うよ。
ここらへんのInpriseのエンジニアの徹底した現実主義に基づいた
判断力(サポートするアプリ・プラットフォームの範囲、
控えめでフラストレーションがたまるが強力な言語仕様、
実行速度などなど)はDelphiに関しては絶対的に信頼できるよ。
というか少なくとも俺はしてるの。いまのところ。
0129名無しさん@お腹いっぱい。
NGNGそれは、つまりバイナリレベルで template が表現できない、
ってことだよね。
その考えが間違っていると思う。
確かに、 C++ の template をそのまま導入したら、
ソースが必要になるが、きちんと設計されていれば
バイナリのままで問題ないはず。
0130提案
NGNGテンプレートを実現するか的方向は如何? 非常に興味あります。
単に、継承を気軽に書く機能程度なら想像つくのですが・・・
0131>130
NGNGこんな感じかな?
新クラス名 Allocate 親クラス名 配給クラス名
例:
TFormsList Allocate TList TForm
機能としては 親クラスのTObjectを配給クラス名に呼び替えて使うだけ
0132名無しさん@お腹いっぱい。
NGNG実装論に突入しちゃうの?俺はもう飽きたから抜けるけど。
まとめ
・過去にTStackがボトルネックになって困ったる人いるの?
・それをvirtual使わない自前のTMyStackでリプレースして改善されたの?
・TObjectStack継承してタイプ数増えてバグ出てスケジュール遅れた人いるの?
・総称で充分じゃん、という議論はないの?
・templateいれたらinlineも入れるの?
・inlineいれたらinterfaceにコード書くの?
・コード展開したらさらに最適化弱くなるよ?
・上の入れても結局オプティマイザの貧弱さによる速度低下の方が大きくない?
# 関数呼び出しのオーバーヘッドすら問題になるような
# クリティカルなプロジェクトはそもそもBCB,Delphiじゃ無理
# てゆーか、どうしてC++であるBCBはDelphiより速くないの?
・コンパイラ・ライブラリの大改造より先にInpriseにやって欲しいことないの?
0133名無しさん@お腹いっぱい。
NGNGこれはウソだね。ごめんなさい。
0134130
NGNG0135130
NGNG実現出来ない機能は要らない的な方向みたいに感じたので・・・勝手に提案しました
0136ソース管理
NGNGCVSは若干、高機能すぎる気がしたのと、重かったりするのがちょっと・・・。
う〜んむ・・・ 簡単なのでいいんだよね・・・。
なんか、不毛な気もするけど、自分で作ってみる事にします。
どっかで作ってるの見かけたら、優しくしてね・・・。
0137名称未設定
NGNGバージョン名・日付などをディレクトリ名にして
WinDiffというのが簡単ですよ。
0138名無しさん@お腹いっぱい。
NGNGつーかCVSでないと、複数のファイルまとめてバージョンXXみたいな管理
やりにくいんだよね。RCSのstate使ってできなくもないけど面倒くさい。
ブランチ分けて-current, -stableみたいにできるのも便利だし。
0139名無しさん@お腹いっぱい。
NGNGブランチわかってない奴にプロジェクト引き渡したら、
データ壊しやがった。(バックアップはあったけど)
ツールは周りのレベルをよく見て使いすぎに注意しましょう。
>>135
>132は勝手に抜けただけなんだから、
勝手に続けちゃっていいよ。それが2chじゃん。
どうせならC++のSTLを1行も変えずに導入でき、
さらになるべくObject Pascal文法拡張を最小限に抑えるような
実装を話し合ってくれると面白いぞ。
0140名無しさん@お腹いっぱい。
NGNG0141>139
NGNGこの段階で既にpascalソースを吐くコンパイラを作れと同義かも
0142名無しさん@お腹いっぱい。
NGNGSTL移植&アップデートするより
コンパイラ・コンバータ作ったほうが楽じゃん<-暴論?
0143名無しさん@お腹いっぱい。
NGNG理由を述べよ
0144名無しさん@お腹いっぱい。
NGNGtype
TCollection(ItemType : TObject) = class
protected
FItems: array of ItemType;
FCount: Integer;
function GetItem(Index: Integer): ItemType;
procedure SetItem(Index: Integer; Value: ItemType);
public
procedure Add(Item: ItemType);
function IndexOf(Item: ItemType): Integer;
procedure Remove(Item: ItemType);
property Count: Integer FCount;
property Items[Index: Integer]: ItemType read GetItem write SetItem;
end;
使い方の例
type
TControlCollection = TCollection(TControl);
肝は、型引数として Delphi Class のみに限定するところ。
Delphi Class は実体としてはヒープ上のメモリブロックへの
ポインタでしかない。だからコンパイル時の型チェックさえ処理できれば
生成コードそのものはポインタのやり取りと RTTI で実装可能。
その代償として、TCollection(integer) は宣言できない。
0145>144
NGNGしてしまって、利用側で隠れて As 使うって事だよね?
0146名無しさん@お腹いっぱい。
NGNG実際には、コンパイラ側で最適化できる部分は多いので
暗黙の as はかなり削除できる。
0147名無しさん@お腹いっぱい。
NGNG0148名無しさん@お腹いっぱい。
NGNGDelphiアプリのボトルネックってどこなんでしょ?
個人的にはこんな感じだと思います
UI(人間) = DBコンポ >>>> 最適化の弱さ
>>> virtualメソッド呼び出し >= 普通のメソッド呼び出し
0149名無しさん@お腹いっぱい。
NGNG実行時のasは余計な気がする
EditCollection.Add( TEdit(Form1) )
とかできなくなっちゃうし(必要性云々は別として)
逆にこんなタコなコードをいちいちチェックするための
コストを支払う必要はないのでは?
ビルド時のチェックのみで十分だと思いますよ。
0150名無しさん@お腹いっぱい。
NGNGAssert(xxxx is Tyyyy)であると心得よ
asに頼りすぎちゃいかんよ
0151名無しさん@お腹いっぱい。
NGNG015229
NGNGpublishedメソッドを呼べることはわかりました。
publishedメソッドを検索・列挙して自動的に
全部(あるいはメソッド名でフィルタをかけて)呼ぶ
という事は可能でしょうか。
0153名無しさん@お腹いっぱい。
NGNG0154リンクされているのならね
NGNG0155名無しさん@お腹いっぱい。
NGNG0156名無しさん@お腹いっぱい。
NGNG0157名無しさん@お腹いっぱい。
NGNGあれをFormやPanelに描くにはどうしたらいいんですか?
ついでにその上にマウスカーソルをもっていくと
カーソルが変化するとうれしいです。
ヨロツク
0158名無しさん@お腹いっぱい。
NGNG例えばコンテキストメニューに"ファイル名をクリップボードにコピー"とか
追加してみたいです。たぶんDLL作る必要があるんだと思いますが。
0159名無しさん@お腹いっぱい。
NGNG>158
Delphiシェル本を読んで、DelphiデモのContextMenuを動かしたら
まあまあわかりますよ。
0160名無しさん@お腹いっぱい。
NGNGわからないです。
0161名無しさん@お腹いっぱい。
NGNG何をしたくて買ったのか思い出してください。
0162名無しさん@お腹いっぱい。
NGNGsar命令にしたい時ってどーしたらいいのでしょうか
というか符合付き右シフトなんですけど
0163名無しさん@お腹いっぱい。
NGNG0164名無しさん@お腹いっぱい。
NGNGうーん、それだと-1をsarしても-1なんだけど
-1 div 2 だと0になっちゃうんですよね〜
0165名無しさん@お腹いっぱい。
NGNGインラインアセンブラを使っては?。簡単だし。
0166名無しさん@お腹いっぱい。
NGNGfunction sar16(aVal: Integer): Integer; register;
asm
sar eax,16
end;
式の中だったんで面倒くさいんで、こんな関数でくるみました
0167名無しさん@お腹いっぱい。
NGNG#pragma comment(linker, "-section:Shared,rws")
#pragma data_seg("Shared")
HWND hTest = NULL;
#pragma data_seg()
ってDelphiでもやりたいんですけど。
どうやって書くの?
0168名無しさん@お腹いっぱい。
NGNG0169167
NGNGやっぱそうなっちゃうのね(;_;)
0170名無しさん@お腹いっぱい。
NGNGのつもりで
if v in [minValue, maxValue] then
と書いていて、バグの原因を突き止めるのに2時間掛った俺萎え
可読性よくしようとして逆に嵌まる見本みたいだったな〜
0171名無しさん@お腹いっぱい。
NGNGじゃないの?
0172名無しさん@お腹いっぱい。
NGNGその書きかたって、速度的には>=<=使うのと変わらないの?
0173名無しさん@お腹いっぱい。
NGNGただし集合型は要素数が256以下で0〜255
までの範囲しか取れない。
関係ないけど範囲チェックなら、自分は直感的に
if (minValue <= v) and (v <= maxValue) then
こー書く。逆判定なら、
if (v < minValue) or (maxValue < v) then
こーね。
0174170
NGNG>じゃないの?
そーです、てんてんにしなければいけなかったのです
速度的にはわがんねけど(ぉ
andとかor使うと、vを2回書かなくちゃいけないから
書き換えたときに片方だけ忘れるといやだと思ったのね
0175名無しさん@お腹いっぱい。
NGNGおまえら、なぜアセンブラ出力で確認しない?
0176名無しさん@お腹いっぱい。
NGNGコード補完機能ってマクロかなんかでないの?
0177名無しさん@お腹いっぱい。
NGNG集合演算ではcmp命令にならないようだ。
0178名無しさん@お腹いっぱい。
NGNG>if (minValue <= v) and (v <= maxValue) then
おれも!
0179名無しさん@お腹いっぱい。
NGNG無理だろー。型の情報をどっから持ってくるん?
0180176>179
NGNG(ctrl+jでwhilebをwhile do begin endに展開する機能。
Wzに類似の機能もあるけどどーも使いづらい)
# でもC++,Javaなどのコード補完はmuleのマクロでできるらしい
0181名無しさん@お腹いっぱい。
NGNGPascal構文を入れると、MLが見やすくてよいね。
0182名無しさん@お腹いっぱい。
NGNG定型文をクリップボードにコピーするソフトを
Delphiで自作すれば?あ、でもインデントが問題
になるね。
外部エディタはFree版EmEditorぐらいしか使ってないので
わかりませ〜ん。
0183ばかもの国津慎吾じゃないぞ
NGNGttp://www.sfdata.ne.jp/windev/iij/htdocs/msg00075.html
これを作れ!
0184D使いγ
NGNG0185D使いβ
NGNG新手の煽り?
0186D使いγ
NGNGにして代わりに自作のタスクトレイ(ステータスエリア)
に表示すれば済む話では?
0187名無しさん@お腹いっぱい。
NGNG21万?
0188D使いβ
NGNG0189183
NGNGはやくつくれつくれ、って。
Techスレだよ、Tech、
さっさとつくりなさいよ。
0190名無しさん@お腹いっぱい。
NGNG名前と型だけで勘弁してもらう方法ありませんか。
実装クラスでは単にフィールドに結び付けたいのに
いちいちメソッドにしなきゃいけないのってうざったいっす。
0191デフォルトの名無しさん
NGNG作られるのでメソッドは難しくないが、フィールドに結びつけるには
あまり効率よい方法はないので、メソッドで解決したほうが簡単ではあるまいか
>189 仕様が良く判らん。仕様を書きなさい
0192名無しさん@お腹いっぱい。
NGNG実行時に内部的にCanvasを生成して
Widht、Heightで、タスククロックのサイズ部分を横取りさせる。
内部Canvasに描画すると
TClockが描画するような感じになってくれるとよいでフ。
つまりTClockアプリが
巷にあふれんばかり登場するように作ってほしい。
誰が答えているのか、わかりそうなもんだな(w
0193名無しさん@お腹いっぱい。
NGNGってゆーか、自分で作れ阿呆。
0194名無しさん@お腹いっぱい。
NGNGあほっていうヤツがあほ
っていうか、作れない193はあほ?
0195デフォルトの名無しさん
NGNG解読すると、
1)名前はTClock
フォームにある時は非ビジュアルコンポーネント
プロパティ
Canvas
Width・Height
OnPaintイベント
2)実行時
常駐してる TrayClockWClass クラスを探しサブクラス化
という事ですか? ならば
任意のコントロールに対して同じ仕様のコンポーネントを
親コンポーネントとして作ればもっと応用が利きますね
0196名無しさん@お腹いっぱい。
NGNG有名なフリーソフトだと思うぞ。
0197名無しさん@お腹いっぱい。
NGNGいいと思うぞ。
0198名無しさん@お腹いっぱい。
NGNG(んなこと書くとまた1がしつこく上げてきそうだな。)
0199名無しさん@お腹いっぱい。
NGNG194の厨房的反応といい、VB-MLからの振りといい、
まず間違いなく煽りだろう。(ベクトルVB元気?)
0200名無しさん@お腹いっぱい。
NGNGをメモリまたはファイルに保存する最も短いコードはどんなんでしょう?
0201名無しさん@お腹いっぱい。
NGNG0202Del歴一週間
NGNG何という名前のコンポーネントなんでしょうか?
0203名無しさん@お腹いっぱい。
NGNG0204名無しさん@お腹いっぱい。
NGNG0205Del歴一週間
NGNGどうもありがとうございました。
一見しただけでは、わかりませんでした。
0206名無しさん@お腹いっぱい。
NGNGttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/6/aki/
0207名無しさん@お腹いっぱい。
NGNG0208名無しさん@お腹いっぱい。
NGNG0209183,192
NGNG21世紀も始まった。
いいかげんに、Delphiで
ttp://www.sfdata.ne.jp/windev/iij/htdocs/msg00075.html
を作れ。
TrayClockWClassは探し当ててハンドルもわかるが
キャプションを変更したりサブクラス化ができないぞ
さっさとコードを書け
ばかものおれは山城慎吾だぞ
0210デフォルトの名無しさん
NGNG山城慎吾ってのも厨房っぽくてものすごく
さむい。
0211デフォルトの名無しさん
NGNGTClockと同じようなソフトを作りたいんだと思うよ。
TClockはソースも公開しているから
やるきさえあれば、改造できそうだね。
http://homepage1.nifty.com/kazubon/tclock/indexj.html
それにしても、狂いっぷりがすごいね。
0212デフォルトの名無しさん
NGNGttp://www.chuosystem.co.jp/delphi/dev2-1-2.htm
これってどう思います。
俺はやりすぎじゃないかと思う。
0213名無しさん@一周年
NGNGVB使いとDel坊の戦争はどっちが勝利を収めたのですか?
0214デフォルトの名無しさん
NGNGかわいそうにそれくらいしか加われる話題がなかったのね。
Perlスレに行ってマンセーとでも叫んでれば?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG働きなさい。
学生だったら学割でラーニング版1万ぐらいで買えるだろ。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221ほり
NGNGvar
ToolBtn: TToolButton;
begin
ToolBtn := TToolButton.Create(Self);
ToolBtn.Parent := ToolBar1;
end;
0222ありがと
NGNGToolBarの専用メソッドをずっと探してました。
0223デフォルトの名無しさん
NGNG処理を行っているのですが、メインが終了するときOnClose()で
terminate,destroyしていますが、終了時にkernelが例外を起こして
しまいます。これは裏のスレッドが終了していないということなのでしょうか?
強制終了フラグを作ってtrueになると裏スレッドが終了するように
して、Close時に立てたりしてみたのですが(もちろんクリティカルつき)ダメでした・・・。
0224デフォルトの名無しさん
NGNGスレッドが終わるのまってみてください。
0225デフォルトの名無しさん
NGNG併用はできないということなんでしょうか?
(waitforはメッセージ受け取らないし、syncはメッセージ受け取るまで終わらない)
0226デフォルトの名無しさん
NGNGfunction IsUrl(s: WideString): Boolean
を実装してください。
0227D使い(久々)
NGNGTerminate()メソッドはスレッドオブジェクトのTerminatedプロパティを
Trueにしてるだけだから
スレッドのExecute()中でTerminatedプロパティを監視しておく。
スレッドはTerminatedがTrueになったら自分で終了(Execute()を抜ける)
メインスレッドは、
Terminte()して、
WaitFor()でスレッドが自分で終了するのを待って、
Destory()する。 (or FreeOnTerminate = True)
>waitforって、Synchronizeと衝突するとか読んだんですが
Synchronizeに突入する前にTerminated見れ。
0228デフォルトの名無しさん
NGNG0229D使い(久々)
NGNGわわ、Free() の間違い。スマソ
0231226>230
NGNGs := 'www.hoge.com';
if IsUrl(s) then
s := NormalizeUrl(s); // s := 'http://www.hoge.com/'
0232デフォルトの名無しさん
NGNG末尾が.comとか.co.jpとか.netとかで判定するのでは
駄目?(直IPアドレスな所もありますが。)
0233223
NGNG今日のお馬鹿・・・OnFormCreateで実行環境を初期化して、それが終わる前に
MMTimer走らせたらクラッシュ。マルチスレッドって難しいですね・・・。
0234奥さん、名無しです
NGNG231みたいな用途だとするとIsUrlという名前は不適切じゃないかな。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG手続きや関数でローカル変数って使いますよね?
そのとき割り当てたメモリっていつ解放してるんですか?
アプリケーション終了時には解放するんでしょうけど、
たとえば何時間も起動しっぱなしにしてる場合、無駄な領域が
塵も積もれば山となる的にどんどん増え続けてしまうものなんですか?
0237デフォルトの名無しさん
NGNG0238バッカーです
NGNG0239バッカーです
NGNG0240D使いβ
NGNG正確にはスタックポインタの位置を関数が呼ばれる前に
戻してます。スタックサイズはデフォルトで最少16K、
最大1MByte程なので関数の中で馬鹿でかい配列なんか
宣言するとセグメントフォールトなんか出たりします。
そのため通常はポインタやオブジェクト参照などの
スタック消費量の少ない変数を使用し、実オブジェクトは
ヒープ領域と呼ばれる別セグメントなどに動的に確保します。
それらは明示的に開放する必要があります。
ただし長い文字列型や動的配列、バリアント型などは自動的な
メモリー管理を行っているものが有ります。
0241236
NGNG馬鹿でかい配列などではなく、ただのIntegerやStringを使う度に気になって
いたんですが、神経質過ぎたみたいでお恥ずかしい限りです。
あと、もう一つ伺いたいんですが、Delphiの内部メッセージ(CM_DialogKeyなど)
についての説明が、ヘルプなどを見ても何一つ記述がありません。
コンポを自作している人はどうしてるんでしょうか?
解説本とかでいいものがあったらぜひ教えてください。
0242デフォルトの名無しさん
NGNG([検索]-[ファイル検索])
本は↓か、
ttp://home.impress.co.jp/books/programming/delphi4pbible/index.htm
↓の「Inside Delphi」がいいと思う。
ttp://www.ascii.co.jp/pb/tech/inprise/inprise.html
Webは定番だけど↓
ttp://www.asahi-net.or.jp/~HA3T-NKMR/
0243デフォルトの名無しさん
NGNGギコバシックの開発手伝ってやれE
正月ボケも治ってきたろ?
0244デフォルトの名無しさん
NGNGwhile True do
THeaderControl.Create(nil).Free;
でメモリが減りまくる
0245デフォルトの名無しさん
NGNGニュースグループでも報告があった。
FImageChangeLink
を開放してないらしい。
しかしなんかかっこいいな<while True do THeaderControl.Create(nil).Free;
0246236
NGNG亀レスごめん。取り敢えず「バイブル」の方だけ買ってきました。
が、よく解らない。と言っても、これはこれで良い本ですが。
「Inside Delphi」に期待しようと思います。まだ手に入るかな?
それと、中村さんのところは一応知ってました。レスどうもでした。
#ああ・・・こんなに苦労するくらいなら、
#おとなしくCでSDKやってれば良かった・・・かも知れず。
0247デフォルトの名無しさん
NGNGTCheckBoxで、Checkedプロパティ変更するたびに、
OnClickイベント起動されてうざいんだけど、
こんな風に、イベントハンドラを退避させるしかないのかなぁ。
var tmpEvent: TNotifyEvent;
tmpEvent := CheckBox.OnClick;
CheckBox.OnClick := nil;
CheckBox.Checked := True;
CheckBox := tmpEvent;
もっと簡単な方法ないノン?
0248デフォルトの名無しさん
NGNGprocedure TForm1.CheckBox1Click(Sender: TObject);
begin
if FProgramChanging>0 then Exit;
ほにゃら
end;
として
Inc(FProgramChanging);
try
CheckBox1.Checked := True;
finally
Dec(FProgramChanging);
end;
でどうよ? このテクはどのコントロールでも使えるよ。
0249デフォルトの名無しさん
NGNGどうやれば作れるの?Components[]は違うよね。
0251デフォルトの名無しさん
NGNGControls[] だ。
0252名無しさん@お腹いっぱい。
NGNG0253デフォルトの名無しさん
NGNGhttp://expo.nikkeibp.co.jp/netcom21/
ブース4515だ。逝ってこい。
0254デフォルトの名無しさん
NGNG片方のスレッドの処理が重く、Timerのスレッドまで圧迫して困っています。
(処理が重くなるとだんだんTimerが遅くなる)
解決法はないものでしょうか?
0255デフォルトの名無しさん
NGNG重いほうのスレッドのプライオリティを下げてみれば?
0256デフォルトの名無しさん
NGNG根本的な解決にならんが‥
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG「カイリックス」「キーリクス」「キゥリクス」?
0259turbo type D
NGNG0260254
NGNGこれが、MMTimerのInterval内で終わればいいんですが、遅いマシンだと
足を引っ張ってしまうって感じです。
sleep(0)を入れようにも、drawメソッド自体が重くて・・・。
やっぱり描画関数のソースを分解しないとダメでしょうか。
(プライオリティについては初めてですがやってみます)
0261デフォルトの名無しさん
NGNGスレッドのプライオリティでダメなら別のプロセスに分けてみたら。
タイマー用のプログラムを別に動かして本体の方にメッセージを投げるとか。
一応本体のプロセスのプライオリティは下げた方がいいかも。
0262デフォルトの名無しさん
NGNG0263turbo type D
NGNGDelphiにならないんだろう。いや、なってくれ頼むから。
適材適所の言語を覚えるのは何ら苦はない。
だがあきらかに
Delphiパスカルより劣ったC++を
Windowsプログラミングのために
覚えなければならないのは面倒だ。
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNGhttp://shop.borland.com/Product/0,1057,3-15-CQ100477,00.html
0266デフォルトの名無しさん
NGNGhttp://shop.borland.com/Product/0,1057,3-15-CQ100480,00.html
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGただでさえ糞なWindozeがさらに糞になるから。
>Delphiパスカルより劣ったC++を
VBより劣ったDelphiがC++に勝るわけないだろ。
0269デフォルトの名無しさん
NGNGどちらも放置決定。
0270デフォルトの名無しさん
NGNGメソッドや属性を入力していくとそれがそのままコードエディタ
に反映されたりするの。
GUIを作っている時はビジュアルデザイナとコードエディタの
2-Wayなんだけどクラス作る時はコードエディタだけなんだよね・・・
今のコードエクスプローラやコード補完でも十分に使えてはいるけど・・・
0271デフォルトの名無しさん
NGNG0272>270
NGNG0273デフォルトの名無しさん
NGNGなんなの?テスティングフレームワークって。
あと>>OCLってなに?
0274名無さん
NGNG賛成。
Linuxのディストリビューターになれば良いのに。
そしたらBorland流にOSをいろいろ発展させられるだろうに。
0275デフォルトの名無しさん
NGNGcorelとの合併はそれが目的だったんだけど…
corelの株が暴落しておじゃんに。
0276デフォルトの名無しさん
NGNG読み出すにはどのようなコードを書けば効率よくできるのでしょうか?
0277276
NGNG語句は五十音順、もしくはアルファベット順に並んでいる場合です。
0278デフォルトの名無しさん
NGNG目次をバイナリ検索して、ファイルの該当部分を読んで検索すればいい。
これを別のファイルで保存しとけば次の起動からは高速に起動できる。
それが許されないなら、ファイル全体をバイナリ検索。
0279278
NGNG検索中は隣り合う2ブロックを読み、最初にCRとか語句の区切りに使う単語迄を捨てる
まずファイル全体のサイズを調べて真中へんのブロックを読み 後は比較しながらバイナリ検索
0280276
NGNGどうもありがとうございます。
目次の作成の部分なんですが、具体的にはaで始まる語句、bで始まる語句
のファイルアドレスを、ファイルなどに書き出すということでしょうか?
0281not 278
NGNGまあ、それで間に合うならそれでいいけどアルゴリズムの本でハッシュを調べると
もっと効率的になるかも。あと一般的な手法としては辞書から検索木を作っちゃう
っていう方法もある。ここはDelphiだからしゃーないけどSTLを使うと楽ちん。
0282not 278
NGNG0283not 278
NGNG0284デフォルトの名無しさん
NGNG>のファイルアドレスを、ファイルなどに書き出すということでしょうか?
それでもいいけど、たとえば100単語毎に語句とそのアドレスを書くようにすれ
ばもっといいと思う。たとえば10万単語あっても目次は1000単語でいい。
で、アドレス間のファイルを(100単語文)一括で読む程度はどうせ
HDが一周するのに収まるだろうから大小はそれほど問題なし。
0285デフォルトの名無しさん
NGNGDBは使えない事情があるの?xBASEのファイルなんて
ダンプしたらまんまテキストのISAMファイルなんだけど・・・
0286デフォルトの名無しさん
NGNG先頭1文字の表をメモリ上に用意しておけば、もう
カンペッキ
0287デフォルトの名無しさん
NGNG辞書ファイルの更新が無い状態なら DBは必ずしも効率的でないぞ
中身はB木かその変形だからね
0288ななし
NGNGこれはどのようにやれば出来るのでしょうか。
なんかATOKとか関係してるみたい。ATOK用とMS-IME用とで別れてたので。
0289デフォルトの名無しさん
NGNGこんな漢字?
http://www.asahi-net.or.jp/~gv4j-sgur/narik/compo.htm
0291ななし
NGNG今そのページにあったコンポーネントを試してみました。
結果ですが、ユーザーによって入力された漢字なら読みを表示出来ますが、
クリップボードからの貼り付けだと、読みは表示できませんでした。
どなたかクリップボードからの貼り付けでもちゃんと読みを表示する方法をご存じないでしょうか。
0292デフォルトの名無しさん
NGNG意味解析までしなきゃ到底無理だぞ。
0293ななし
NGNGえっとでもそういうソフトが実際にあるんです。
↓です。
http://hp.vector.co.jp/authors/VA009883/
0294turbo type D
NGNG作者にメールしなさい。
0295デフォルトの名無しさん
NGNGhttp://kakasi.namazu.org/
0296デフォルトの名無しさん
NGNGユーザーによって入力された漢字はプログラムで比較的楽にとれるんだけど、
読みを解析するとなると急に大変になるぞ。
0297turbo type D
NGNGのソフトはそれほど大変に作られているようには見えないのだが
IMEの再変換を使っているんだろうな。
EmEditorでも再変換機能がある
どうやるんだっけ?
0298デフォルトの名無しさん
NGNGそれでもわからんなら作者に連絡しろ。
それから、デルファイ厨房逝って良し!
0299turbo type D
NGNGEmEditorの操作ではなくて
プログラミングでどうやるんだっけ。って事な。
作れないヤツにイって良し呼ばわりされる覚え無し
テメエが先首くくって氏ね.
0300デフォルトの名無しさん
NGNGとにかく頭にImm〜の付くものをヘルプで調べてみては?
英語のヘルプにしか無い様だが。(MSDNでも和訳は無い)
0301turbo type D
NGNG解説してるページどこかにないですか?
0302デフォルトの名無しさん
NGNGやっぱ自分でソース読んで直さなきゃダメ?
0303デフォルトの名無しさん
NGNG0304turbo type D
NGNG0305デフォルトの名無しさん
NGNGCreateURLMoniker でIMonikerを得た後にどうしたらいいのでしょう?
0306デフォルトの名無しさん
NGNG私もハッキリ言って判りません。
複数のインターフェースを呼び出さなければならないので面倒みたいです。
WinInet系の を使った方がDelphiでは一般的かもしれません。
Builderでの解説ですが、ここが参考になると思います。
http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/
0307305
NGNGありがとうございます。
MSDN見て非同期モニカが主流なのかと勘違いしていました。
どちらも日本語資料が見当たらなくて苦労しています。
これから勉強します
0308305
NGNG2桁くらい多くみつかりした。 306さんの情報のほかに
検索してみつかった情報です
猫でも
http://www.kumei.ne.jp/c_lang/sdk3/sdk_216.htm
InternetReadFile を使用してファイルを取り込む方法
http://www.microsoft.com/japan/support/kb/articles/J030/3/08.htm
VBで WinInet APIでHTTP上のデータを読む
http://www.geocities.co.jp/SilkRoad/4511/vb/wininet.htm
IE5.0付属の WININET.DLL には日付に関するバグがある
http://www.daifukuya.com/ffsync/
0309デフォルトの名無しさん
NGNGTClientSocket.Socket.ReceiveTextで受け取った文字列を
TMemo.Lines.Addでメモに貼っても上手く改行されません。
HTTPサーバから送られてくる文字列はCFかLFが欠けてる様で、
改行部分が黒い点「・」←こんな感じになってしまいます。
どうすれば良いんですか?
0310デフォルトの名無しさん
NGNG文字列を一文字ずつ調べてCFかLFが来たときそれが繋がってなかったら繋がるように置換する。
0311デフォルトの名無しさん
NGNGちゃんと繋がってるかいないか調べろよ。
UNIX系のサーバーだと改行コードがCFのみ(LFのみだっかたな?)
MACだとその逆。
WinNT系だとCF・LFになってる。
0312デフォルトの名無しさん
NGNG0313turbo type D
NGNG0314デフォルトの名無しさん
NGNGされてないないよ。
ヘッダ(HTTPが通信用に作った部分)は決まってるけど。
送信するデータ部分はテキストだろうがバイナリだろうがそのまま転送。
0315311
NGNGサーバーは関係ないや。
HTML作ったコンピュータの改行コードだった。
でも一般的にFTPがサーバー側の改行コードに変換する。
CGIプログラムのファイルの場合は文字コードも変えるんだっけ?
0316309
NGNG>>313さんの教えてくれた関数で問題が解決しました。
ところで、
スレッドオブジェクトを使ってプログラムを作っているんですが、
ExcuteメソッドからVCLのメソッドやプロパティを使う場合、
必ずわざわざ新しく別のメソッドを作って
Synchronizeで呼び出さないと駄目なんですか?
これってかなり面倒だと思うんですけど。
1つのメソッドの中に処理を全部詰め込んでも良いんですかね?
Executeの中はただWhileループと
Synchronizeによる呼び出しだけになっちゃいますけど。
0317turbo type D
NGNG本当は必ずじゃないはずだけどね。
0318turbo type D
NGNG間違ってたら許してね。
0319デフォルトの名無しさん
NGNGそれとも何か制約みたいなのがあります?
0320turbo type D
NGNG0321turbo type D
NGNG以下のコードをトレース実行したら落ちる。
なぜ?
マジレスキボーン
procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
Moji: String;
begin
SL := TStringList.Create;
try
SL.LoadFromFile(ExtractFilePath(Application.ExeName)+'Unit1.pas');
ShowMessage(sl.Text);
Moji := SL.Text;
finally
SL.Free;
end;
ShowMsg(Moji);
end;
procedure TForm1.ShowMsg(Str: String);
var
S: String;
begin
S := AnsiUpperCase( Str );
ShowMessage(S);
end;
0322デフォルトの名無しさん
NGNGどこまでは落ちずにトレースできるのか
くらいは書かないか?
0323デフォルトの名無しさん
NGNGがコピーされる。書き換えようとした時に初めてコピーが
作成される。(コピー・オン・ライト)
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNG後別になにもしていないので、メモリ内容は運良くそのままである。
0328デフォルトの名無しさん
NGNGそれは参照された側の方。
0329turbo type D
NGNG>>322スマソ
ShowMsgまでいったらトレースで落ちる
トレースしないと落ちない。
さっきから3回目のインストでようやく原因がわかりそう。
D5エンプラ版にUpdate当てたら落ちる。
Updateあてなきゃおちない!
なんだこりゃ。ふざけてる。訴えてやるーーー(wウソ
Delphiは参照コピーにはなっていないはず。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNGヘルプで「長い文字列」の説明よむべし。
0333turbo type D
NGNGprocedure TForm1.ShowMsg(const Str: String);
でテストやっていたがupdate前は正常動作だしupdate後は落ちる。
落かたはIDEフリーズproject1.exe終了できない
user32.dllマキコミ落ち。ウザ落ちだ。
もしかしてBCBLrnのUpdateを入れたからかも?
ああ、もう最悪。
0334turbo type D
NGNG読んだ、なるほど。
procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
Moji: String;
begin
SL := TStringList.Create;
try
SL.LoadFromFile(ExtractFilePath(Application.ExeName)+'Unit1.pas');
ShowMessage(sl.Text);
Moji := SL.Text;
finally
SL.Free;
end;
ShowMsg(Moji);
ShowMessage(Moji);
end;
procedure TForm1.ShowMsg(Str: String);
begin
Str := '参照?'
end;
と
procedure TForm1.ShowMsg(var Str: String);
begin
Str := '参照?'
end;
はなぜ結果が違うノ?
0335turbo type D
NGNGこんなエラーも出てくる
Assertion failure "(!" Unrecognized interface passed to ReleaseDbkInitf!")"
in ..\win32src\dbkcom.cpp at line 594
Continue execution?
なんじゃこれ。
0336デフォルトの名無しさん
NGNG下のは呼出し元の別名になってる。だから呼出し元の
変数の内容も変更できる。(ヘルプ「変数パラメータ」参照)
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG0339turbo type D
NGNG理解しました。
>>323の読み方が甘かった。
NT4SP5
このマシンが腐れなだけかも。......最悪。投げやり。
0340デフォルトの名無しさん
NGNGSP3に戻した事がある。M$よ、お願いだからパッチに紛れて
新しい機能付け足さないでおくれ。
0341デフォルトの名無しさん
NGNG新規作成・開く・ファイルに保存・印刷・切り取り・コピー・貼り付け・・・その他色々
を自分の作っているソフトにも使いたいんですが、どこにあるんですか?
他のソフトのボタン画像をキャプチャーする方法も考えたんですが、
皆さんはどうしてます?
DELPHIに付属してるボタン画像は変なので使いたくないんです。
0342turbo type D
NGNGお騒がせしてメンゴm○m
環境をリカバーするために
壊れたレジストリを必死で毎回インストールしてた。
0343デフォルトの名無しさん
NGNGDelphiMLで紹介されているRzBmp/glyphs!/RimrockSoftware
とtoolbar97に付属のもの
DelphianWorldで2種類数は少ない
以前、世界征服宣言サイトで配っていてコレハ今はwebには存在しない。
DatulaのカスタムツールバーD-Rascalで利用できるアイコン集
QXエディタのカスタムアイコン集作者3人で11種類
DelphianWorldのgifファイル全部
ぐらい持っている。
この程度あると
ツールバーのデザインに困るという事はなくなった。
が、他にいいものがあるのなら欲しい。
MSOfficeのツールボタン画像はMSDNでは最近見付からない
VBAマクロで抽出すればすべて取り出せる気がする。
0344デフォルトの名無しさん
NGNGHINST_COMMCTRLの中の、
IDB_STD_LARGE_COLOR,IDB_STD_SMALL_COLOR,IDB_VIEW_LARGE_COLOR,
IDB_VIEW_SMALL_COLOR。
0345デフォルトの名無しさん
NGNGを呼んでるんだから、SLの開放もへったくれもないんじゃない。ま、いいけど。
0346turbo type D
NGNGもっと内部の話じゃない?
オレみたいなデル厨には理解しなくてもいい部分だとオモワレ
0347デフォルトの名無しさん
NGNG0348turbo type D
NGNG>>321のコードで見事に落ちる。
何らかのセッティングによって落ちる模様。
もしくは変なコンポーネントか?
何を設定したらそうなるのかは全く不明だが。
0349デフォルトの名無しさん
NGNGそんな想定してなさそうな使い方しちゃ winは弱いよ。
やるなら動的にmemo乗ったフォームれ
0350デフォルトの名無しさん
NGNG同じ事考えたけど、結構大変だぜー。
結局派生じゃなくて、ソース改造した変種になっちまったぜー。
IHtmlDocument2にwriteして使う方が楽かもしれないぜー。
0351turbo type D
NGNG単なるテキストソース見るのにWinが弱いわけないよ。
そういう問題じゃない。
コンパイラの設定で"長い文字列"使うにしてるのだがそのあたりが
壊れているのだろうか。いずれにせよレジストリだけインストで
解決する問題のようだわ。
知ったかして、レジストリ弄ってた報い。すべては因果律のままに。
そんな所か。朝から浮津だmonazillaろう。
0352デフォルトの名無しさん
NGNG意味わからん。詳説キボン
0354デフォルトの名無しさん
NGNG落ちた壊れたとだけ言われても困るのは理解出来るよね?
こういう時は ShowMessageの記述されてるソース dialigsを
プロジェクトに追加してコンパイルgoするとVCL内部でも
ソースでバック出来るから自分で原因を探してくれ
やり方はShowMessageでマウス右ボタンから定義の検索
dialogsが表示されたらプロジェクトに追加
0355344
NGNGSDKのヘルプに書いてあるよ。TBADDBITMAPのところに。
Delphi 3でTImageと空のTToolBar貼り付けて書いてみたけど、
素直にTBitmap.LoadFromResourceIDでは読み込めないみたい。
uses
CommCtrl;
procedure TForm1.FormCreate(Sender: TObject);
var
tbab: TTBAddBitmap;
tbb: TTBButton;
himl: HImageList;
i: Integer;
begin
tbab.hInst := HINST_COMMCTRL; {-1。ハンドルじゃない}
tbab.nID := IDB_STD_LARGE_COLOR;
tbb.iBitmap := SendMessage(ToolBar1.Handle,TB_ADDBITMAP,1,LParam(@tbab));
tbb.idCommand := 0;
tbb.fsState := TBSTATE_ENABLED;
tbb.fsStyle := TBSTYLE_BUTTON;
tbb.dwData := 0;
tbb.iString := 0;
SendMessage(ToolBar1.Handle,TB_ADDBUTTONS,1,LParam(@tbb));
himl := SendMessage(ToolBar1.Handle,TB_GETIMAGELIST,0,0);
for i := 0 to ImageList_GetImageCount(himl) do
ImageList_Draw(himl,i,Image1.Canvas.Handle,i*16,0,ILD_NORMAL);
end;
0356デフォルトの名無しさん
NGNG1万5000以上あるね。
SunのJAVAの所
http://developer.java.sun.com/developer/techDocs/hi/repository/
だけ、User登録が必要のようだが
登録したらもっとたくさんのアイコンが手に入るのか??
>>354純粋にあのコードだけで落ちるんだから、
IDE(のレジストリ)が壊れようなんだよ。
トレスした瞬間にIDEごと落ちるのに
原因追求は無理。お騒がせしてスマソ
>>355試してみる。蟻が十
0357デフォルトの名無しさん
NGNGすげえ…。ありがと。
0358デフォルトの名無しさん
NGNG>結局派生じゃなくて、ソース改造した変種になっちまったぜー。
>IHtmlDocument2にwriteして使う方が楽かもしれないぜー。
ご親切に有難うございました。TParserクラスは名前は魅力的ですが使うのやめます。
IHtmlDocument2を理解しなきゃ...
0359turbo type D@monazilla
NGNG循環参照エラになっちゃった。
こういう場合どうすりゃいいんだっけ?アレアレ????
unit Board2ch;
interface
uses
..
Browser;
type
TNichSite = class;
TNichCategory = class;
TNichBoard = class;
TNichThread = class;
TNichResponse = class;
TNichSite = class
private
..
property WebBrowser: TNichWebBrowser read FWebBrowser write FWebBrowser;
end;
implementation
.......................................
unit Browser;
interface
uses
..
Board2ch
type
TNichBrowser = class
private
..
procedure NavigateThread(Thread: TNichThread);
end;
implementation
こんなのTechじゃないって?(藁
0360デフォルトの名無しさん
NGNG共通の先祖で互いに内包オブジェクトを宣言し、
キャストして使用すべし。
0361turbo type D@monazilla
NGNGべし...って出来ないから聞いてるのに。
>共通の先祖で互いに内包オブジェクトを宣言し、
>キャストして使用すべし。
出てくるクラスは全部TObject派生なんだけど。
もそっと具体的にタノンマス。
0362デフォルトの名無しさん
NGNGinterface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
Other: TForm;
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.FormShow(Sender: TObject);
begin
Other := Form2;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Other.Show;
end;
end.
------
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
Other: TForm;
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm2.FormShow(Sender: TObject);
begin
Other := Form1;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Other.Show;
end;
end.
0363turbo type D@monazilla
NGNGそりゃそうだけど納得いかないなあ。
まあ、いっか。
0364turbo type D@monazilla
NGNG>>362アリガトウ。
0365デフォルトの名無しさん
NGNG違うよ〜面倒だったから適当に書いただけだよ〜
君には以前何度か煽られたけど。 ま、同じD使いだしな。
0366デフォルトの名無しさん
NGNG設計がまずいからそんな事態になっちゃうんだろ。
データ部と表示部をまず完全に別にユニットに分けてみな。
0367デフォルトの名無しさん
NGNGいいんじゃない?
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNGあるいはすべてひとつのunitにまとめる。
これしかねーぞ。
邪道な回答としては
interface部ではTObjectとして保持して
implementation部でusesしてキャスト。
あるいはどっちかのクラスをimplementation部で宣言する。
0370turbo type D
NGNGあおり煽られアオアオオオ
>>366
オレも今までそう思っていて
その通りなんですが。きびしいのよ。
なんでだろーなんでだろーーー
なぜがなんでだろーーー
現状は相互参照をやめて実装してる最中(モナカ)。
>>369[ギャフン]
0371デフォルトの名無しさん
NGNGオブジェクトを作るとか。通信するオブジェクトが
1:nやn:mだったらこれがスマートだと思う。
1:1の限定された通信なら相互に参照を保持するのも
いいと思うけど。
0372デフォルトの名無しさん
NGNGつーか、使い方わかる人いる?
0373turbo type D
NGNG日本で10人くらいならいると思う。(藁
オラはわからん。(ヘヘヘ.......シクシクシクシク
0374ななし
NGNG教えてください。(あちらのスレで)
QuadrupleのDirectPlay機能での質問です。
0376turbo type [email protected](藁
NGNGhttp://piza.2ch.net/test/read.cgi?nofirst=true&st=142&to=142&bbs=tech&key=974446449
ここをみて
TWebBrowserをスクロールする方法はわかったのだけど
var
Doc: IHTMLDocument2;
y: Integer;
begin//
Doc :=
WebBrowser1.Document as IHTMLDocument2;
y := 100;
Doc.parentWindow.scroll(0, y);
スクロールしている現在の位置を取得する事が出来ない。
Doc :=
WebBrowser1.Document as IHTMLDocument2;
y := Doc.body.top;//<<ここでエラー
ShowMessage(IntToStr(y));
オセーテクレマンセ--
0377デフォルトの名無しさん
NGNGだべさ。
もしそれでも駄目なら、IHTMLElementにバインドする必要があるかも???
0378turbo type D@monazilla
NGNGオレ頭悪い事に前後みてなかったよ。
コード補完も出ないしね(ミグルシイイワケ)
関係無いけどリンク先
HTMLDocument := Browser.Document as IHTMLDocument2;
ここで変数名にHTMLDocumentを使うと
MSHTMLで定義されているからよろしくないね。
0379turbo type D@モナヂラドットオルグ(ワラ
NGNGTWebBrowserをスクロールさせる方法
usesにMSHTMLユニットを追加
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
y: Integer;
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
y:=olevariant(Doc).body.scrollTop;
ShowMessage('現在のスクロール位置は'+
IntToStr(y)+'だぞ(゚Д゚)ゴルァ'+#13#10+
'勝手にスクロルさせるから覚悟しておけ');
y := y + 100;
Doc.parentWindow.scroll(0, y);
end;
プレステ:
クスコってあれだよね。アレを広げる道具の事だよね?銀色の?
オシエテクレマン................ハズカシクテイエマセン
0380turbo type D@monazilla
NGNGえっと、DOS日付でも作成日でも更新日でもなんでもいいのですが
ファイルに日付情報をセットする方法と
同時にファイルを取得する方法を教えて欲しい。
いろいろ探したんだけどセットする方法がわからない。
何の種類の日付情報でもいいのだけど
書き込んだ内容を取得する事が出来るとよいのです。
よろしくお願いします。
0381turbo type D@monazilla
NGNG// ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄/ ̄
{
// 名前:turbo type [email protected](藁
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
聞いてアロエリーナ ちょっと言いにくいんだけど
聞いてアロエリーナ
ココカラノコードハ: ファイルの処理
SetFileDate ファイルに日付をセットする
GetFileDate ファイル日付を求める
GetFileSize ファイルサイズを求める
コウシン日ワ: 2001/03/02
ホカニ逝ットクコトハ:なにもなし
聞いてくれてありがと アロエリーナ♪
\________ _______/
|/
∧_∧
Ψ (∀・ )
□ (∩∩ノ)
// ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ }
procedure SetFileDate(FileName: String; DateTime: TDateTime);
var
FileHandle: Integer; FileDate: integer;
begin
FileHandle := FileOpen(FileName, fmOpenWrite);
if FileHandle > 0 then
FileDate := FileSetDate(FileHandle, DateTimeToFileDate(DateTime))
else
FileDate := -1;
FileClose(FileHandle);
if FileDate<>0 then
raise Exception.Create('ファイルに日付が書き込めなかったんじゃ(゚Д゚)ゴルァ');
end;
{ウエ(´Д`) homepage1.nifty.com/kens-hp/delphi.htm#Q03}
function GetFileDate(FileName: String): TDateTime;
var
FileHnd : integer;
intDosDate : integer;
datFileDate : TDateTime;
begin
FileHnd := 0;
Try
{ ファイルのハンドルを取得 }
FileHnd := FileOpen(FileName,fmOpenRead);
{ ファイルのタイムスタンプを取得 }
intDosDate := FileGetDate(FileHnd);
{ タイムスタンプを日付型に変換 }
datFileDate := FileDateToDateTime(intDosDate);
Result := datFileDate;
Finally
FileClose(FileHnd);
end;
end;
{ウエ(´Д`) homepage2.nifty.com\boheme\delphi\tips\tec0070.htm}
function GetFileSize(FileName: String): Integer;
var
Rec : TSearchRec;
intSize : integer;
begin
Result := 0;
{ ファイルの検索 }
if FindFirst(FileName, faAnyFile, Rec) = 0 then
begin
{ サイズの取得 }
intSize := Rec.Size;
{ KBに変換して表示 }
Result := intSize;
end;
FindClose(Rec);
end;
{ウエ(´Д`) homepage2.nifty.com\boheme\delphi\tips\tec0060.htm}
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG正規表現で検索するルーチンを自作するか、
もしくは、そういうライブラリを見つけてこれば可能。
というか、そういうコンポーネントがあるよ。
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGhttp://home1.infonia.ne.jp/~delphian/delphi/
http://delphi.icm.edu.pl/
http://www.torry.net/
0386デフォルトの名無しさん
NGNGなにかよい資料はないでしょうか。
資料はWindowsのものであれば、言語はDelphi以外でもかまいません。
ちなみに、FDelphiを見ろ!は聞き飽きました(藁
(見れねーっての!!)
0387デフォルトの名無しさん
NGNGDelphiに付いてくるInstall Shield Express使えよ。素人が
インストーラ作ると迷惑なんだよ。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG仕事なんじゃないの?
ま、そういう糞仕様は無視しましょう
0390デフォルトの名無しさん
NGNG仕事ならなおさらだ。
0391turbo type D
NGNG明日転職フェアに行こうかとオモイマフ
0392デフォルトの名無しさん
NGNGそれなりに事情がある会社ってことだ。
0393某厨房作者
NGNG0394デフォルトの名無しさん
NGNGGExpertsで間接的に、ってんじゃなくて。
0395turbo type D
NGNG>>393
Delphiで就職なんて存在するかな?
0396turbo type D
NGNGMLで聞いたら?
0397デフォルトの名無しさん
NGNGどのプロパティを使えばいいの?
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG>Delphiで就職なんて存在するかな?
まれにあるよ。
俺はDelphi使いじゃないんで見送ってるが。
0401デフォルトの名無しさん
NGNG「前の会社ではDelphiとC++Builderで開発していた」っていったら
Builderかよ顔されたよ…。
VisualC++使ったことないからなぁ…。
0402デフォルトの名無しさん
NGNGところでスレッドについて質問
TMyThread = class(TThread)
でコードは一切書かずに
procedure TForm1.FormCreate(Sender: TObject);
begin
FMyThread := TMyThread.Create(True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FMyThread.Free;
end;
こんな事しただけで
メモリリークが1回起きるのだけど、何これ?
0403デフォルトの名無しさん
NGNGゲーム系はなー。ビジネス系は存在さえ知らんと思われ。
>>402
FormDestroyが本当に呼ばれているかどうか怪しい。
0404402=turbo type D
NGNGメインフォームなので呼ばれているよ。
ブレイクするもの。
procedure TForm1.FormCreate(Sender: TObject);
begin
FMyThread := TMyThread.Create(False);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
FMyThread.Suspended := True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FMyThread.Free;
end;
で、このようにするとメモリリークしない。
マルチスレッドコーディングムズすぎ。(゚Д゚)ゴルァ
簡単にスレッドがコーディングできるサンプルとか
コンポーネントとかない?
0405デフォルトの名無しさん
NGNG「説明 Destroy メソッドはスレッドに終了を通知し,
スレッドがリターンするのを待ってから継承 Destroy
メソッドを呼び出します。」って書いてあるけど
スレッドが何か返すまで待ちぼうけしてるとか?
0406405
NGNGttp://homepage2.nifty.com/boheme/delphi/techdoc/dad0010.html
0408デフォルトの名無しさん
NGNG型(変数)
と
変数 as 型
とどう違うのですか?
そしてどちらが推奨されますか?
変数 as 型
はポインタ型だけみたいですけれど・・・。
0409デフォルトの名無しさん
NGNGthread := TTread.Create;
thread.Execute;
thread.Free;
のように一度Executeするとメモリリークしない
0410>408
NGNGは強制的にキャストする。
TForm(Buttom1).ShowModal
のような無茶苦茶なことができる。
当然アクセス違反などのエラーが発生する。
(Sender as TForm).ShowModalはSenderが実際に
TFormのインスタンスであった場合のみキャストできる。
TFormのインスタンスでない場合は例外が発生する。
以下のコードと大体同じ
if Sender is TForm then
TForm(Sender).ShowModal
else
raise Exception.Create('キャストエラー'); // いいかげん
0411408
NGNGありがとー。
ということはできるだけ as を使ったほうが良いってことですね。
全部 as でできれば文句ないのですけれど・・・。
0412デフォルトの名無しさん
NGNG破棄されたらマズイかも。
0413turbo type D
NGNGサンクス。多分同じ問題
疑問が晴れました。
0414デフォルトの名無しさん
NGNGさがせばあるね。かなりレベル高そう。
http://www.mediafusion.co.jp/html/recruit/index.html
0415デフォルトの名無しさん
NGNG(デストラクタが動いているかどうか?)
0416デフォルトの名無しさん
NGNGこれを使ってみそ>http://www.yks.ne.jp/~hori/MemCheck.html
0417turbo type D
NGNGhttp://www.sakaki.keiaikai.or.jp/convroom/webconv.exe/read?No=9666&Response_Root=9632
0418415
NGNGありがとうございます。
GetMemとFreeMemの呼び出された回数を利用しているんですね。
<ヒープの利用はすべてここに行き着くのか。
0419turbo type D
NGNGあんなところにそんな会社があるんだ。
でも、府内じゃなくて都内がいいな。(藁
0420turbo type D
NGNGprocedure of object;だけで引数付procedureが呼び出せなくて
結構不便。
procedure(AAA: String) of object;
なんかをSynchronizeで渡すのによい方法はないでしょうか?
現状は
begin
FItem := xxx
Synchronize(AAA);
end;
procedure AAA;
begin
BBB(FItem);
end;
こうしていて、少々不便なのです。
0421デフォルトの名無しさん
NGNGデッドロック->例外変換機能もってるTThreadラッパーコンポーネント持ってるよ。
発掘できたらあげるよ。
0422>
NGNG0423デフォルトの名無しさん
NGNGttp://www.asahi-net.or.jp/~nk2w-ishr/progdtl.htm#KThdComp
これかな?
0424turbo type D
NGNG>TThreadに存在するWaitForメソッドやSuspend,Resumeメソッドはこのコンポーネントではわざと実装しませんでした。
>これらは扱いを間違えるとメモリリークが発生したりデッドロックを引き起こしたりと多少危険な面があるからです。
とありますね、実感するわ。
シンクロナイズと逆に
メインスレッドから自作スレッド側の
オブジェクトや変数にアクセスするときは
一度Suspendしてアクセスすればいいみたい。
なんとなくそんな気がする。
0425Delphiをもってない人
NGNGSuspend,Resumeってスレッドを強制的に一時停止するんでしょ?
それって見るからにすごく危険な香りが。
そもそもSuspendやResumeをしなくてすむように書くべきだと思うんだけど…
………あるんだからしかたないけどね。
WaitForはスレッドが終了するまで待つの?
それはないと困ると思う。
0426>425
NGNGたとえばダウンロード・検索を
一時停止・再開するときなんかに普通に使うよ。
で、停止中にアプリを終了したときに
どうするかはアプリの責任。
ここではまるのはアプリの設計がいいかげんなだけ。
状態遷移図でも書いて、前もってあらゆるケースを洗い出しておけば、
バグもでにくくなるよ。
0427turbo type D
NGNGSuspended系はオレならユーザー側からは触れないようにしたい。
挙動が嫌すぎる。
ま、一時停止/再開には有用なのはわかるけど、初心者向けではない
かと。
0428turbo type D
NGNGmonazillaスレと重なりまくりですが、とりあえず質問はここで
してみるですわ。
WinInetでタイムアウトとか
ユーザーによるダイヤルアップ切断が行われた場合どうなるでしょうか?
よくわからないので対応してないんですが、やばい?
0429>428
NGNG例外投げる(=現在の処理を強制中断)のをサボると、
最悪の場合、処理が成功したようになって別のバグを誘発する。
例外を処理するのはアプリケーションの責任なんだけど、
仮にアプリが処理を手抜きしてもユーザーに通知されるので、
ユーザーがリトライor終了できる。
サブスレッドが例外投げるとどうなるのか知らないけど。
もしメインスレッドでその例外を補足できないとしたら、
synchronize+エラーイベントにするといいかも。
0430turbo type D
NGNGさぼってしまっていたので
どうなってしまうのかが知りたいのです。
例外発生せずに止まるのだろうか?>>WinInet.
それを補足するのは面倒だなあ...
0431デフォルトの名無しさん
NGNG□□
□□
□□
■■■■■
■■■■■
となってしまうんだけど
□□
□□
□□■■■
□□■■■
のようにalLeftが優先(?)されるようにはできない?
0432デフォルトの名無しさん
NGNG左のパネルを、alLeft
右のパネルを、alClient
右のパネルに、更にパネルを置いて、alBottom
0433432
NGNG○右のパネルの上に
0434turbo type D
NGNG0435デフォルトの名無しさん
NGNGうちの会社に来てもらいたいマジで>Delphi使い
土日休日無しで、こんな時間でも働ける(働かされる)環境ですが(泣)
0436デフォルトの名無しさん
NGNG俺は関数ジャンプとIDEのショートカット変更のためだけに使ってるけど(藁
0437turbo type D
NGNG話題になっていたので入れたけど
何が便利なのかがわからなくて放置してる。GExp
0438turbo type D
NGNG・・・・・・・・・・・・・(・∀・;)週休二日は欲しいな.........
0439turbo type D
NGNGんで、質問です。
WebBrowserでスクロールバー位置を取得変更する事は可能なのですが
どのタイミングで取得するとよいと思います?
俺的にはタイマーで取得したろうかと、ショボイ事しか思いつきません。
なんか、スクロールした時点で発生するイベントなどありますか?
よろしくぅ。
0440ヒロユキ@ギコナビ
NGNG質問です。
Delphi5でクールバー使ってるんだけど、TCoolBandのFixedをTrueにすると、
おかしな動作になります。
# TCoolBarにツールバー2つ、TAnime1つを乗せてます。
# んで、TAnimeの乗っているTCoolBandのFixedをTrueにしてます。
# Fixedが一つもないと正常なのですが・・・
おかしな動作って言うのは、ツールバーが乗っているTCoolBandのつまみを
捕まえたまま、上下に激しく動かすとTCoolBarのサイズが正常に変わらなくなります。
(CoolBarを一列にしても高さが2列分ある。描画がおかしくなる。)
コモンコントロールのバグなのか、Delphiのバグなのか、オレの頭がおかしいのかが
分からないので、みなさん、試してみてもらえないでしょうか?
DelphiのDemoについてくるCoolstufっていうブラウザでも再現します。
#エクスプローラで問題ないからVCLのバグかなぁ。
当方環境:
Delphi5 + Update
Windows2000pro
CommonControlVersion: 5.81.4522.1800
0441turbo type D
NGNGオレのところでもなるよ
2台のマシンで両方とも再現した。
>>440
バグだろうね。
0442デフォルトの名無しさん
NGNGバグです。
D4でもD5でもなります。
D4の時にバグを回避するためだけのコンポを作ったのですが、詳細を全く思い出せません(w
たしか、Fixedが絡むとBreakの数を誤判定するようになってたような気がします。
重要な変数がPrivateに隠されてたので、ちと邪魔くさい回避法を取ったことだけは覚えてる。
0443turbo type D
NGNG0444turbo type D
NGNG0445デフォルトの名無しさん
NGNGじゃあ適当に書いてみる。やったことないので空想。
でも、Delphi知らないのでDelphiに
PreTranslateMessageがあるかしらないが、あるなら、
その中で、
WM_LBUTTONUP
WM_MOUSEWHEEL
WM_KEYDOWN
その他、スクロールさせられそうなメッセージが飛んできた
ときにスクロール位置を保存する。てなかん字。
0446デフォルトの名無しさん
NGNGWM_MOUSEWHEELも来るナリ。
PreTranslateMessageってなに?
0447デフォルトの名無しさん
NGNGVCLのバグだったのですね。
たしかに、リサイズでOK。
Delphi6に期待しよう。
0448turbo type D
NGNG解決できなかったよ(゚∀゚)ゴルァ
だらかMLに情報を流してくれ。
0449コロスケD
NGNGPreTranslateMessage
コロスケもわからないなりー
messageは忘れてたナリ、ありがと。
0450デフォルトの名無しさん
NGNGこんなところに書いても誰もチェックしないよ。ML に流してもだめ。
日本語でいいから、US borland のバグ登録フォームに流しなさい。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGPreTranslateMessageはMFCのCWndのメンバ関数。
Win32のイベント配送メカニズムと、MFC固有ののイベント配送メカニズム
を分離して理解してないので、他の言語でいうとどうなるのかは知らん。
働きとしては、そのウインドウとその子ウインドウへのイベントディスパッチ
をするまえにいろいろ前処理する/できる。
でも、PreTranslateMessageとかOnKeyDownとかはMFCのイベントマッパ
の機能っぽいから、DelphiにはDelphiのイベント配送補助システムが
あるんだろう。
0453turbo type D
NGNG2chブラウザさんかな。
PreTranslateMessageはないけど
メッセージハンドラでフックしてみたら
全然取得できませんでした。
ホイールメッセージが
スクロール限界まで来たときにようやくはっせいする
VCLのTWebBrowser継承のメッセージハンドラではダメなのか...
サブクラス化でもしないと...
空想して実装したいなあ。
あと、WebBrowserでナビゲートした直後にスクロールバーを
動作させようと思ってもこれまたうまく動かない。
トホホホオホホホホオホオホホ
0454turbo type D
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG次のファイルを Navigateする直前に保存するのはだめ?
0457turbo type D
NGNGあ、それもらい!
スクロール位置を保存するのはそうするとして
復帰するほうなんだけど、んー。
とりあえず、Navigateが終わって即スクロールかましても動作しない!
0458turbo type D
NGNG0459turbo type D
NGNGTWebBrowserの履歴をGoBackせずに
URLを取得する方法はどうやるのでしょう。
IEなんかだと数段階戻るという事が実現できているので
出来そうなもんだが、やり方はさっぱり。
あと、履歴と関連づいたデータのポインタを保持させる事は
出来ないでしょうか。
履歴に関連したスレッドの情報を
保持させたいのだけど
どうも自分でコーディングしていたらバグでまくりなので
WebBrowser自体に処理を任せたいのです。
0460デフォルトの名無しさん
NGNGセキュリティーの関係で取り出せないと聞いた事がある
かちゅの作者も使ってるEmbeddedWbも多分自前で管理してると思う。
0461turbo type D
NGNGさんきゅう。そうか自前でやるとどうしてもバグがでる。
ちゃんとメッセージが流れてきてくれていたらいいのだが...
0462turbo type D
NGNGサンプルを作ってみた。
function TForm1.GetWebBrowserScrollPos: TPoint;
var
Doc: IHTMLDocument2;
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
Result.y:=olevariant(Doc).body.scrollTop;
Result.x:=olevariant(Doc).body.scrollLeft;
end;
procedure TForm1.SetWebBrowserScrollPos(Value: TPoint);
var
Doc: IHTMLDocument2;
begin
Doc := WebBrowser1.Document as IHTMLDocument2;
Doc.parentWindow.scroll(Value.x, Value.y);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Point1: TPoint;
begin
Point1 := GetWebBrowserScrollPos;
Form1.Left:= Point1.x;
Form1.Top := Point1.y;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetWebBrowserScrollPos(Point(Form1.Left, Form1.Top));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.yahoo.co.jp');
// while WebBrowser1.Busy do Application.ProcessMessages;
Button2Click(nil);
end;
ボタン3を押してもうまく動かない。
コメントアウトしている部分を追加しても実行していると変。
navigate後に正しくスクロール位置を復帰させるには
どうしたらいいでしょうか。
ちゃんとスクロールしてくれない。
0463turbo type D
NGNGuses MSHTMLも追加してください。D5pro以上です。
0464turbo type D
NGNGリファレンスカウンタについて
もう少し教えてください、誰か。
TInterfacedObjectの使い方も今ひとつわかりません。
0465デフォルトの名無しさん
NGNGじゃ、書いてみる。
ひょっとしたらNavigateした後、次のステートメントでスクロールしてないか?
Navigateは非同期動作なので、別スレッドを起動してすぐに関数から
戻ってくるけど、動作が完了するのはその後、OnNavigateCompleteイベント
が発生したとき。なので、NavigateCompleteを受けて関数呼ぶとよろし。
OnDocumentCompleteでもOK。違いはよく知らん。
0466turbo type D
NGNG感謝!!;
ありがとーー。
OnNavigateComplete2
とOnDownloadComplete
とっきどき誤動作しているみたいだけど
とりあえず、これでやってみるよ。
0467turbo type D
NGNGつーことで シツモソです。教えてくださいマソコ
WinInetのページをぐるっとまわって
どこかで見たので改善したつもりだけど自信ないです。
どちらが正しいのでしょうか。
hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hService := InternetOpenUrl( hSession, PChar(URL), nil, 0, 0, 0);
try
//適当に処理
finally
InternetCloseHandle( hService );
end;
finally
InternetCloseHandle( hSession );
end;
と
hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned( hSession ) then
begin
hService := InternetOpenUrl( hSession, PChar(Edit1.Text), nil, 0, 0, 0);
if Assigned( hService ) then
begin
//適当に処理
end;
InternetCloseHandle( hService );
end;
InternetCloseHandle( hSession );
end;
0468デフォルトの名無しさん
NGNGよって後者が正しいはず。
0469turbo type D
NGNGhSessionにnilが入っていてもInt..OpenUrlしてしまうし
例外吐かずにまずいッてことですね。
0470デフォルトの名無しさん
NGNG出来ません。妄想に浸るなボケ>>59
0471デフォルトの名無しさん
NGNG0472turbo type D
NGNGどうも動作しません。
自分自身を破棄する部分で
自分自身をnilにするのはどうしたらよいでしょうか。
procedure TRefObject.DecRefCounter;
で、Self:=nil を行なっているのですが
これが正常に動作しないために
if Assigned(FRefObject1) then
で正しく判断されません。
FreeAndNilやFRefObject1<>nilとしてもダメみたい。
違う方法でnilにも出来るけど、ちょっと気になったので。
教えてくださいな。
///////////////////////////////////////
unit Unit2;
interface
uses
Sysutils, Dialogs;
type
TRefObject = class(TObject)
private
FRefCounter: Integer;
public
constructor Create;
procedure IncRefCounter;
procedure DecRefCounter;
end;
TMyRefObject = class(TRefObject)
public
Name: String;
procedure Message(S: String);
end;
implementation
{ TRefObject }
constructor TRefObject.Create;
begin
FRefCounter := 0;
end;
procedure TRefObject.DecRefCounter;
begin
Dec(FRefCounter);
if FRefCounter<=0 then
begin
Self.Free;
Self := nil;
end;
end;
procedure TRefObject.IncRefCounter;
begin
Inc(FRefCounter);
end;
{ TMyRefObject }
procedure TMyRefObject.Message(S: String);
begin
ShowMessage(S);
end;
end.
//////////////////////////////////////////////
//-------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
FRefObject1 := TMyRefObject.Create;
FRefObject1.Name := 'リファレンスカウンタオブジェクト';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
FRefObject1.IncRefCounter;
FRefObject1.Message('あ');
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
FRefObject1.DecRefCounter;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if Assigned(FRefObject1) then
begin
Self.Caption := FRefObject1.Name;
TButton(Sender).Caption := '定義されてるよ'
end else
begin
TButton(Sender).Caption := '定義されてない';
end;
end;
0473デフォルトの名無しさん
NGNGIUnknown使えば?
0474デフォルトの名無しさん
NGNGむりなんじゃあ?DecRefAndNilみたいな手続き作るとか。
0475turbo type D
NGNGこのスレの先頭で出てるインターフェースの実装は
仕組みがいまいちわからなかったので使うの止めておきました。
>>474
かなり試したけど無理だったみたい。(藁
で、関数にしたところでクラス変数をvar渡ししないといけないので
二つのアプローチがあると思うが、どっちがいいと思います?
以下みてください。
長文ごめんよ。オレは2系列の方、FreeAndNilの実装と同じ方が
よいと思っているんですが。
unit Unit2;
interface
type
TRefObject = class(TObject)
private
FRefCounter: Integer;
public
constructor Create; virtual;
property RefCounter: Integer read FRefCounter;
end;
TRefClass = class of TRefObject;
procedure DecRefCounter1(var RefObj: TRefObject);
procedure DecRefCounter2(var RefObj);
procedure IncRefCounter1(var RefObj: TRefObject; RefClass: TRefClass);
procedure IncRefCounter2(var RefObj; RefClass: TRefClass);
procedure FreeRefObject1(var RefObj: TRefObject);
procedure FreeRefObject2(var RefObj);
(*--▽---------------------------▼--
var
FRefObject1: TMyRefObject;
1系列の使い方
IncRefCounter1(TRefObject(FRefObject1), TMyRefObject);
DecRefCounter1(TRefObject(FRefObject1));
FreeRefObject1(TRefObject(FRefObject1));
キャストが必要
2系列の使い方
IncRefCounter2(FRefObject1, TMyRefObject);
DecRefCounter2(FRefObject1);
FreeRefObject2(FRefObject1);
キャストは不要
//--▲---------------------------△--*)
implementation
procedure IncRefCounter1(var RefObj: TRefObject; RefClass: TRefClass);
begin
if RefObj=nil then
begin
RefObj := RefClass.Create;
end;
Inc(RefObj.FRefCounter);
end;
procedure IncRefCounter2(var RefObj; RefClass: TRefClass);
begin
if TRefObject(RefObj)=nil then
begin
TRefObject(RefObj) := RefClass.Create;
end;
Inc(TRefObject(RefObj).FRefCounter);
end;
procedure DecRefCounter1(var RefObj: TRefObject);
begin
if RefObj=nil then Exit;
Dec(RefObj.FRefCounter);
if RefObj.FRefCounter<=0 then
begin
RefObj.Free;
RefObj := nil;
end;
end;
procedure DecRefCounter2(var RefObj);
begin
if TRefObject(RefObj)=nil then Exit;
Dec(TRefObject(RefObj).FRefCounter);
if TRefObject(RefObj).FRefCounter<=0 then
begin
TRefObject(RefObj).Free;
TRefObject(RefObj) := nil;
end;
end;
procedure FreeRefObject1(var RefObj: TRefObject);
begin
while Assigned(RefObj) do
DecRefCounter1(RefObj);
end;
procedure FreeRefObject2(var RefObj);
begin
while TRefObject(RefObj)<>nil do
DecRefCounter2(RefObj);
end;
{ TRefObject }
constructor TRefObject.Create;
begin
FRefCounter := 0;
end;
end.
0476デフォルトの名無しさん
NGNGダイナミックキャストの方がいいのかも知れませんが。
0477turbo type D
NGNG0478デフォルトの名無しさん
NGNG0479turbo type D
NGNGえらいことになるんだけど...
その辺の防御とかどうやってやるのか、突っ込んでホシィ
でも、誰もリファレンスカウンタとか興味ない?
宇津田氏のう...
0480C++でごめんね
NGNGclass String {
StringRef *ref;
}
class StringRef {
int counter;
StringData *data;
}
class StringData {
char *str;
};
が一般的だと思う。そのまま書けば、こんな感じ。(試してないけど)
class StringData {
char *str;
public:
StringData(const char *s): str(new char[strlen(s)+1]) { strcpy(str, s); }
~StringData() { delete[] str; }
};
class StringRef {
int counter;
StringData *data;
public:
StringRef(const char *s): counter(0), data(new StringData(s)) {}
~StringRef() { delete data; }
void IncRef() { ++counter; }
void DecRef() { if (--counter < 0) delete this; } //delete出来なければ、String中で
}
class String {
StringRef *ref;
public:
String(const char *s): ref(new StringRef(s)) {}
String(const String& rhs) { ref->IncRef(); } //Assign
~String() { ref->DecRef(); }
const char *c_str() { return ref->data->str; }
}
この形をベースにして、
・メモリ上でStringDataとStringData.strをつなげる
=構造体の最後のサイズ0のメンバ(char str[0])に持たせる
・メモリ上でStringRefとStringDataをつなげる
=StringにDataを持たせ、Ref参照を*((StringRef *)Data-1)にする。
等の工夫をしているはず。
(この両方を実装すれば、c_str()は、ただのchar *と同じコストになる)
Accessor(String)と実体(StringData)以外の
カウンタ管理クラス(StringRef)自体は汎用性がある。
でも、実際に汎用性を持たせる(色々なxxxDataを扱う)ためには
templateか多重継承(両方かも)が必須になる気がする。
0481turbo type D
NGNG話が見えない....理解ロクなくてスマソ
0482デフォルトの名無しさん
NGNGMoreEffectiveC++に、汎用リファレンスカウンタの
はなしが長々と載ってるよん。
0483turbo type D
NGNGこれの使い方はこんな感じ。
FRefObject1 := TMyRefObject( IncRefCounter(FRefObject1, TMyRefObject) );
FRefObject1 := TMyRefObject( DecRefCounter(FRefObject1) );
FRefObject1 := TMyRefObject( FreeRefObject(FRefObject1) );
しかし、これも、邪魔なキャストばかり。
もっとエレガントな書き方がしたいのですが
テンプレートの使えないDelphiではしかたないのか...
type
TRefObject = class(TObject)
private
FRefCounter: Integer;
public
constructor Create; virtual;
property RefCounter: Integer read FRefCounter;
end;
TRefClass = class of TRefObject;
function IncRefCounter(RefObj: TRefObject; RefClass: TRefClass): TRefObject;
function DecRefCounter(RefObj: TRefObject): TRefObject;
function FreeRefObject(RefObj: TRefObject): TRefObject;
implementation
function IncRefCounter(RefObj: TRefObject; RefClass: TRefClass): TRefObject;
begin
Result := RefObj;
if RefObj=nil then
begin
Result := RefClass.Create;
end;
Inc(Result.FRefCounter);
end;
function DecRefCounter(RefObj: TRefObject): TRefObject;
begin
Result := RefObj;
if RefObj=nil then Exit;
Dec(Result.FRefCounter);
if Result.FRefCounter<=0 then
begin
Result.Free;
Result := nil;
end;
end;
function FreeRefObject(RefObj: TRefObject): TRefObject;
begin
Result := RefObj;
while Result<>nil do
Result := DecRefCounter(Result);
end;
0484turbo type D
NGNGオブジェクトのvar渡しだけ特殊な処理してくれてもいいのにな。
例えば上位クラスにキャストして扱ってくれるとか。
オレがしらないだけでやり方があるの?
FreeAndNilのHELP
警告 Obj が TObject またはその下位オブジェクトの
インスタンスでない場合は,
Obj に値を渡さないようにしてください。
とあるが、これを言語レベルで警告や禁止する方法は必要だろうに。
0485デフォルトの名無しさん
NGNG少し考えれば駄目だって分かるよね?
procedure CreateObj(var Obj: TObject);
begin
Obj := TObject.Create;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Obj: TObject;
Comp: TComponent;
begin
CreateObj(Obj); // これはコンパイル出来て当然として
CreateObj(Comp); // これはコンパイル通っちゃあかんだろ。
end;
で下のように書き換えるのはどうよ? 戻り値がPointer型だから
型チェックは出来ないけど。
interface
function IncRefCounter(RefObj: TRefObject): Pointer;
function DecRefCounter(RefObj: TRefObject): Pointer;
function FreeRefObject(RefObj: TRefObject): Pointer;
implementation
function IncRefCounter(RefObj: TRefObject): Pointer;
begin
InterlockedIncrement(RefObj.FRefCount);
Result := RefObj;
end;
function DecRefCounter(RefObj: TRefObject): Pointer;
begin
Result := nil;
if (RefObj<>nil) and (InterlockedDecrement(RefObj.FRefCount)<=0) then
RefObj.Free;
end;
function FreeRefObject(RefObj: TRefObject): Pointer;
begin
Result := nil;
RefObj.Free;
end;
0486turbo type D
NGNGんじゃ、これは通っちゃってもいいのかな?
通るけど。
procedure CreateObj(Obj: TObject);
begin
Obj := TObject.Create;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Obj: TObject;
Comp: TComponent;
begin
CreateObj(Obj);
CreateObj(Comp);
end;
0487turbo type D
NGNGPointerもいいんですが、
>>475
に上げた
procedure IncRefCounter1(var RefObj: TRefObject; RefClass: TRefClass);
procedure DecRefCounter1(var RefObj: TRefObject);
がキャストの厳しい言語として
あるべき姿なのかなあと、考えなおし初めてます。
だって、
procedure IncRefCounter2(var RefObj; RefClass: TRefClass);
procedure DecRefCounter2(var RefObj);
こっちだと、TRefObject派生じゃないものを
渡した時にどうしてもAccessバイオが出るし..
こういう実装は痛い気がする。
procedure IncRefCounter(var RefObj; RefClass: TRefClass);
var
Object1: TObject;
begin
try
if TRefObject(RefObj)=nil then
begin
TRefObject(RefObj) := RefClass.Create;
end;
Inc(TRefObject(RefObj).FRefCounter);
except
on EAccessViolation do
raise EConvertError.Create('リファレンスカウンタクラスではありません');
end;
end;
procedure DecRefCounter(var RefObj);
begin
try
if TRefObject(RefObj)=nil then Exit;
Dec(TRefObject(RefObj).FRefCounter);
if TRefObject(RefObj).FRefCounter<=0 then
begin
TRefObject(RefObj).Free;
TRefObject(RefObj) := nil;
end;
except
on EAccessViolation do
raise EConvertError.Create('リファレンスカウンタクラスではありません');
end;
end;
0488デフォルトの名無しさん
NGNGいい響きだ
0489turbo type D
NGNG0490( ゚Д゚)
NGNG0491デフォルトの名無しさん
NGNGtype
TDataObject = class(TObject)
public
Name: String;
procedure Message(S: String);
end;
TRefObject = class(TObject)
private
FRefCounter: Integer;
FDataObject: TDataObject;
procedure IncRefCounter;
procedure DecRefCounter;
public
function Getter: TDataObject;
end;
TMyObject = class(TObject)
private
FRefObject: TRefObject;
public
procedure Message(S: String);
property
property Item: TDataObject read FRefObject.Getter;
end;
MyInstance1 ┐
MyInstance2 ┼──→ RefInstance ──→ DataInstance
MyInstance3 ┘
この形にするのが基本。
TDataObjectをTRefObjectから派生させるなら、FDataObjectをnilには出来ない。
→カウンタを見てGetterがnilを返すしかない。
0492491
NGNGMyInstanceは常に(有効な)RefInstanceを持つ。
Refが持つDataはnil(無効)である場合もある。
0493turbo type D
NGNG土日はなにやら忙しいです。
で、>>491
で示されている方式が一般的にC++などで実装されている
リファレンスカウンタの仕組みなんでしょうか。
TDataObjectの生成/破棄などを
対になるTRefObjectのGetterを使って行えばいい?
そうすればTDataObject部分がどんなデータ構造でも
リファレンスカウンタの機能を付随させることが
できるわけか。
レスありがとう。勉強になりました。
サンプルを作って遊んでみるかな。
0494デフォルトの名無しさん
NGNGイースターエッグでOSごと固まりました。
Win2kが行方不明になったのこれが初めてで、ちとびっくり。
他の人はどうかな?
0495turbo type D
NGNG0496494>495
NGNGBorlandはWin2k対応パッチ(+ライブラリ)なんて
これっぽっちも考えてないんだろうな。。(やれやれ
0497turbo type D
NGNG2000は対応パッチとかいらないのでは?問題なく動くし。
2000固有の機能なんてつかわないし。
たしか、>>496のような発言してた人は
どこかで煽られていたような気がするぜ。
ところで、改めてC#のページみていたら
http://www.atmarkit.co.jp/fdotnet/csharptips/001skeleton/001skeleton.html
にてるなーDelphiそっくり!(藁
コンストラクタでButtonを生成する所がよいね。
0498デフォルトの名無しさん
NGNG変更されたら通知するAPIなかったっけ?
0499turbo type D
NGNGのへん?
Delphi広場へどぞ
0500turbo type D
NGNGこっちの方がいいかも
0501496>497
NGNGなんだかなぁ、ってことなのよ。
>498
ちと違うかも知れないけど、こんなのもあるよ。
http://backno.mag2.com/reader/BackBody?id=200101150630000000016258000
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGhttp://tokyo1.virtualave.net/
http://tokyo1.virtualave.net/
http://tokyo1.virtualave.net/
http://tokyo1.virtualave.net/
http://tokyo1.virtualave.net/
http://tokyo1.virtualave.net/
0504seven
NGNGMS-Excelを買ってきて、データをせっせと打ち込みましょう。
終わってみれば、ほら、「データベース」が完成してます。
それだけでは不満ですか?、さて、何が不満なのでしょう?
Delphi以外の問題は、他のスレッドでお願いしたいです。
プログラム以外の問題は、他の板でお願いしたいです。
>>503
針に餌が付いてないから、誰も食いつかないと思いますです。
0505turbo type D
NGNG朝早いのに、厨房駆逐ありがと(w
0506>502
NGNGでもlearningには付いてないよ。
0507turbo type D
NGNGもっとも簡単なサンプルを誰かおせーて!キボーン
ホットゾヌブラウザのソースで
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
const Text: WideString);
を見てもわかんない、
。°°(≧w≦)°°。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNGCREATE DATABASE DB名;
0510turbo type D
NGNGという文字列をヒント表示する方法がわかんないのです、>>508
0511デフォルトの名無しさん
NGNGマウスカーソルの左上に座標セットして
Showするだけじゃん。
0512turbo type D
NGNG0513ヒロユキ@ギコナビ
NGNGvar
p: TPoint;
ARect: TRect;
begin
FHint := THintWindow.Create(Self);
GetCursorpos(p);
p.x := p.x + 15; //なんとなく調整
p.y := p.y + 15;
ARect := FHint.CalcHintRect(Screen.Width, s, nil);
Rect.Top := ARect.Top + p.y; //なんかwinapiあったような…
ARect.Left := ARect.Left + p.x; //なかったっけ?Rectを一回で変更するやつ。
ARect.Bottom := ARect.Bottom + p.y;
ARect.Right := ARect.Right + p.x;
FHint.ActivateHint(ARect, 'ヒンート');
end;
あと、どっかに宣言。
FHint: THintWindow;
0514Dax
NGNGえっと、ホットゾヌブラウザはギコナビぱくりました!
やり方は >>513 ヒロユキ@ギコナビ氏が書いたとおりです。
ただ、ホットゾヌブラウザではタイトルの部分を着色するために
THintWindowをわざわざ継承して Paintメソッドをオーバーライドしてます。
ただヒントを出すだけなら継承せんでよかですよ。
0515seven
NGNGFormにStringGridを貼りつけて実行し、データをせっせと打ち込みましょう。
終わってみれば、ほら、「データベース」が完成してます。
それだけでは不満ですか?、さて、何が不満なのでしょう?
Delphi以外の問題は、他のスレッドでお願いしたいです。
プログラム以外の問題は、他の板でお願いしたいです。
0516ああもう下がりすぎ〜
NGNGもう勝手に名乗っといて勝手に消さないでくれる?
0517デフォルトの名無しさん
NGNGhttp://www.users.gr.jp/ml/delphi.asp
0518デフォルトの名無しさん
NGNGhttp://www.users.gr.jp/delphi/
0519デフォルトの名無しさん
NGNGhttp://www.users.gr.jp/ml/archive/Delphi/
0520デフォルトの名無しさん
NGNGないだろうなあ・・・
http://www.users.gr.jp/WebBoard/list.asp?ID=Delphi
0521デフォルトの名無しさん
NGNGボタンを離すと
----------------------
ここにコピー
ここに移動
ショートカットをここに作成
----------------------
キャンセル
----------------------
というメニューがでてきますが、これは何らかの方法で自分のアプリ
でもAPI等を使って表示&処理させられるものなのでしょうか?
それとも自分で自アプリ上でマウスボタンが離されたらそういう
メニューをだすようにゴリゴリ書くべきものなのでしょうか?
(あ、Delphiとはあまり関係なかった…)
0522デフォルトの名無しさん
NGNGエクスプローラからならこれ。
http://www.melander.dk/delphi/dragdrop/
0523デフォルトの名無しさん
NGNGレスどうもです。
実はDrag and Drop Component Suite使ってるのです。
でも上記のメニューがでないんだよなぁ。うーむ。
今色々探してますけど、OLEでごりごりやればだせそうな…。
もうちょっと修行してきます!
0524デフォルトの名無しさん
NGNG下によさげな参考リンクがいくつか。。。
早速修行します。
0525turbo type D
NGNG質問します。
AssignFileの使い方
try〜finally end
の使い方が今ひとつはっきりしません。
AssignFile(datF, FNAME);
rewrite(datF, 1);
try
blockWrite(datF, varA, sizeof(varA));
blockWrite(datF, varB, sizeof(varB));
finally
CloseFile(datF);
end;
これがいいのか、
AssignFileとrewriteなどもtry〜finally間に
入れた方がいいのかって事です。
monaUtils見てて気になったです。
よろしくおねがいします。
0526turbo type D
NGNGファイルのエラーが出た場合
例えば、ファイルが存在してなかったりする場合
どんな例外を発生させればいいのでしょう。
そもそも、何かの例外が出るという場合
何の例外を発生させるべきかという事が
全くわからないのですが、
例外コード一覧などという資料がどこかにありますか?
DateTimeToStringみたいなのを
自作したときに期待値以外のパラメータがきた場合
どんな例外を作成すればいいのかな。
0527デフォルトの名無しさん
NGNGおまえHelp読めよ…
0528turbo type D
NGNG0529turbo type D
NGNG例外のすべてなのですか?
0530デフォルトの名無しさん
NGNG例外を救ったのが、例外クラスというやつだと思う。
コードってのは番号とかのことだと推察するけど、
番号だと「似た/似てない例外」ってのを
把握するのがめちゃめちゃ面倒なんだな。
その点、例外の種類をクラス使って分類するようにすると、
継承ツリーに「似た例外」を当てはめれば良くなる。
すっきり。
つーわけで答え。
クラスツリーブラウザ(ご免正式名称忘れた)で
Exceptionクラスだかの下を一通り眺めろ。以上。
あとクラスだから当然、自作もなんぼでも可能ね。
これがコード(番号)だと、既存番号体系と矛盾せずに
新しい番号を付け加えるのが一苦労なんだよな。
例外クラスまんせー
0531turbo type D
NGNG>Exceptionクラスだかの下を一通り眺めろ。以上。
まあ、ご親切に。ありがとう。
モジュールエクスプローラというやつかな。
こりゃ便利です。すっかり忘却してました。
俺、例外クラスの概念は氏ってたけど
なんとなく例外コードとしてしか認識できていなかった。
なるほど、例外クラスマンセーものです。
0532turbo type D
NGNG0533デフォルトの名無しさん
NGNG外部I/Fのコントロールなのですが、仕様書には、
>object.inp Port As String, Pin As Integer
>(PortはPortAまたはPortBを指定)
とあって、inp('PortA',1); とかすると
"TOleEnumとSmallIntの互換性が云々"と出ます。
原因は何なのでしょうか・・・?
0534デフォルトの名無しさん
NGNG便乗感謝
0535デフォルトの名無しさん
NGNGを'foo', 'bar', 'baz'
に分割する方法はないですか?
最終的にTStringsにセットしたいのですが。
0536デフォルトの名無しさん
NGNG「正規表現」コンポーネントを使ってる。
文字列を切り刻んだりするのは「正規表現」が
一番強力なので、分割パターンがちょっとフクザツに
なったりする(かも知れない)状況では、迷わずコレ。
ま、フクザツでなくても、今時のCPUなら
処理コストを考える必要もさほど無いだろし。
正規表現って文法(?)が結構壊れてるんで、
覚えたり、まして読んだり(笑)するのは
ちょっと面倒だけど、どうせ正規表現自体を
そんなに長々と書くことは滅多に無いんで、
なんとかなる範囲です。
正規表現は、さくっと覚えておくと有利です。色々な場面で。
#あとunix畑と行き来しやすくなる(ぉ
bmRegExpとかいう正規表現コンポ集だと、
Awkコンポとかいうのがあって、
切り取る部分の正規表現(ここでは';')を与えると、
splitメソッド一発でTStringsに結果を出力してくれるよ。
0537デフォルトの名無しさん
NGNGあれ?モジュールだっけか?
継承図が出る奴は違ったと思うけど。
#御免。今手元にdelphiが無い環境なので、判らず。
まず継承図からException以下をなんとなく見る。
もし自分が今出したい例外にビンゴな「名前の」例外クラスがあったら
もうけものと思ってそれを使う。
ちょうどいいのが無かったら、できるだけ近そうな「名前の」例外を
選んで、それを継承して自分で好きな「名前の」例外を作る。
特に例外は、名前に拘るのが味噌だと思う。
例外Objectは実際にプログラムとして動くわけでもないんで、
#少なくとも、例外クラスに、意味のあるメソッドを書いたことが
#ないようなきがする(笑)
あるのはひたすら、「私はこう分類しました」という
名前のつけかただけ。ここで旨い名前をつけておけば
あとあと混乱しないで済むので、ちょっと気合入れて
名前を選ぶのをお勧め。
0538デフォルトの名無しさん
NGNGセミコロンをカンマに置き換えて
CommaTextに代入すればいいだけ。
0539デフォルトの名無しさん
NGNGそれ駄目。'a,b;c,d' とかいったデータで誤動作しちゃうよね。
0540>535
NGNGvar
i: Integer;
begin
Result := list;
list.Clear;
while s <> '' do
begin
i := AnsiPos(delimiter, s);
if i=0 then
begin
list.Add(s);
Exit;
end;
list.Add(Copy(s, 1, i-1));
s := Copy(s, i + Length(delimiter), High(Integer));
end;
end;
0541Del厨
NGNGじゃ、あんたからどーぞ。
というか経験でしか物を見られないのかね。幸せな頭だ。
人月の神話なんて信じている典型ドキュなんじゃないの?
数百人月で複数ベンダーでとかでえらぶって
実は優秀な奴にやらせたら十数人月でした。ってのは
よくある話。
コテハンだとしょうもない事言われるから、本当にさよならね。
フリーで仕事してまーす。って言っても信じてもらえんかね。(w
言っている事の反論じゃなくて
人の経験数とかで何かを決めようなんて
2chを読んでいる人間からはどう思われるかねえ。
ま、そう反論でもしないと自分の心を守れないのだろうから
哀れではある。
モナーシステム開発の部長だって
周りからはバカにされてるけど
部長には部長の主張があるわけだ。
せいぜい現実世界ではバカにされないようにな。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGすげー部長はいるね。さすがに@@@で部長になるだけはあるな、っての。
うちの部長は、まじで何やってるんだろ?
会った事無いし、出先に来ないし、納品すら課長までで関係無いし。
俺、自分で商談取ってくるから営業とも会ったことないし。
人月は?受注価格÷会社の人月です。
だから作業期間と一切関係無いです(鬱だし脳
っていうか681って????
0544デフォルトの名無しさん
NGNGhttp://mentai.2ch.net/test/read.cgi?bbs=prog&key=986993653
0545デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG若いねえ君も。焦りすぎは禁物だぞ。世の中そんなにスグ
には変らん。
0548デフォルトの名無しさん
NGNGVC++とWTLだと、特別なDLLなしで20kぐらいでダイアログ表示だけのexeが作れます。
Delphiだとどれぐらいですか? ランタイムDLLとか、OCXとか必要になります?
0549デフォルトの名無しさん
NGNGDelphiだってSDKできるだろ。
おまえは馬鹿か?
0550デフォルトの名無しさん
NGNG厨房相手にムキにならんでも。
0551548
NGNGDelphi使うんだったら、VCL使いたいべ?
0552>548
NGNG数kのアプリも簡単に作れます
0554548
NGNG機能のコアになる部分は大してサイズが変わんないだろ?
だから、フレームになる部分がどれぐらいのサイズになるか知りたいんだよ。
0555デフォルトの名無しさん
NGNGダイアログ表示したいだけなら
どれだっていーよ。
0556デフォルトの名無しさん
NGNGおまえみたいなやつがDelphi使いの品位を落とすんだよ。
黙っとけ。
0557548
NGNG今はVC++だけど、TurboPascal3.0から、初代のDelphiも使ってるんで、そこんとこよろしく。
0558デフォルトの名無しさん
NGNG>Delphiで作ったプログラムって、サイズどれぐらいですか?
空のフォーム1枚のアプリで285 KB (291,840 バイト)
メモリ使用量はタスクマネージャの表示で2720KB(仮想メモリサイズ 680KB)
ランタイム切り離すと
13.5 KB (13,824 バイト)
メモリ使用量は3,552KB(仮想メモリサイズ 1,012 KB)
ランタイムを切り離すと使用メモリが増えるのは
関係ないモジュールまで(動的に)リンクされてしまうためだと思う。
0559デフォルトの名無しさん
NGNGDelphiでも「特別なDLLなしで20kぐらいでダイアログ表示だけのexeが作れます」
0560549
NGNG「おまえは馬鹿か?>558」
>ランタイムを切り離すと使用メモリが増えるのは
>関係ないモジュールまで(動的に)リンクされてしまうためだと思う。
0561548
NGNGやっぱり適材適所で使うしかないかな。
kylixがでるから、Delphi系に全部移行しようかと思ったんだけど、
仕事によってはどうしても小さいプログラムにしなくちゃならなかったりするので。
もう一個教えて君で悪いんだけど、DelphiとC++Builderって、ソースコードを混在させたりとかできるの?
C++BuilderでVCLのソースを追っていったら、いきなりPascalになったんでビクーリしたよ。
0562デフォルトの名無しさん
NGNGぷぷー
スタティックリンクで必要ないDLLが使われなくなったら、
そうなるんじゃねえのかよ。ドヴァカ。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG>もう一個教えて君で悪いんだけど、DelphiとC++Builderって、ソースコードを混在させたりとかできるの?
>C++BuilderでVCLのソースを追っていったら、いきなりPascalになったんでビクーリしたよ。
Delphi/C++Builder共にC/C++形式のobjが生成可能なので一応可能です。
コンポーネントはDelphi->C++Builderのみ可能だったと思います。
ただ、あんまり突っ込んで試したことないけど。
>>560
>>ランタイムを切り離すと使用メモリが増えるのは
>>関係ないモジュールまで(動的に)リンクされてしまうためだと思う。
補足すると、例えばvcl50を静的にリンクするとスマートリンカが
vcl50の一部(この場合はTForm関連のみ)がリンクされ、
TButtonなどの使用していないコンポーネント部分のライブラリはリンクされない。
動的にリンクすると常にvcl50「全体」がリンクされるために
静的リンク時よりもメモリ使用量が増える。
というように理解してます。
0568>558,561
NGNGまさかDelphiはフォームのあるアプリしかつくれねぇとでも
思ってんのか?
馬鹿は逝け!
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG>vcl50の一部(この場合はTForm関連のみ)がリンクされ、
スマートリンカをもってしても、VCLを使う奴はでかいよね。
やっぱりあれだけ充実(笑)したOOP仕掛けを演出するには
それくらいのコスト(リンクされるものの多さ)を
払わないとならないんだろうな。
初めて(初代)delphiを触ったときは
Exeのでかさでびっくりした(TP7まで素朴に
スマートリンカ=小さいと思っていたので)けど、
まぁ時代がHDDを大きくしてくれた(笑)ので
あれでもいいやというか、そういう肩の力抜いた感じで
Borlandは先見の明あったと思う。
#あと、Exeがでかくなるせいか、ソースレベルでの流通が
#多かった感じする(^^;のが嬉しい。
0571デフォルトの名無しさん
NGNGぜんぜんサイズがちがってくるよねー。
DLLやEXE分割、パッケージを使った方が有利になる
トレードオフってどの位のもんだろう?
(分けたらわけたでメモリ共有がめんどそう。)
0572548
NGNG久しぶりにDelphiやるぜ〜。kylixも買うぜ〜。
あと、偉そうなこと逝ってるくせに実力ない厨房君たちは、せいぜいスキルアップに努めること。
DelphiはVBみたいに馬鹿でも使える、とか思われると腹立つんだよね〜。
0573名無しさん
NGNGVBは馬鹿でも使えるが、ソース見れば真性ヴァカか即わかるけどな。
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG馬鹿でも使えるってのはある意味すごいけど、
馬鹿を馬鹿のままにしておくってのはクソ言語。
まぁ言語というよりそいつのおかれた環境がクソなんだろうけど。
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG言語が人を育てるわけではないのだが・・・
例えばドキュソな上司が作ったコーディング規約で
ドキュソなコードしか書かせてもらえないというのは
良くありそうだ。サラリーマンプログラマの場合。
0578デフォルトの名無しさん
NGNG数十KByte削減できるぞ(藁
0579デフォルトの名無しさん
NGNGDelphi版つくれねぇかなぁ(w
って、テンプレートないからつれえか・・・。
0580名無しさん
NGNGぴゅう汰の日本語ベーシック
0581デフォルトの名無しさん
NGNG大人でそれを使うのは馬鹿っぽいが子供なら
天才かもしれんぞ。
0582名無しさん
NGNGオト ダス 1
0583Delphi5で
NGNG{$APPTYPE CONSOLE}
uses SysUtils;
begin
end.
をコンパイルすると40k。
uses SysUtils;を除いてコンパイルすると16k。
ついでに{$APPTYPE CONSOLE}外すせばDOS窓も出ないアプリが
つくれます。
厨房でごめん。
0585デフォルトの名無しさん
NGNGSysutils外すと実質使えるのはSystemユニットのみ
なのでこれで何が出来るかと言えば・・・なんだろ?
やっぱパケジかなあ。
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG言語は人を育てる。
上司も人を育てる。
ただし、育つといってもマイナス方向も有るようで(笑)、
ドキュな言語や上司に出会うと、しばしば人は
マイナス成長を遂げてしまう。
マイナス教師をうまく反面教師に転嫁できることを
祈っています。
0589デフォルトの名無しさん
NGNGhttp://www.excite.co.jp/world/url/body/?wb_url=http%3A%2F%2Fwww.santacruzsentinel.com%2Farchive%2F2001%2FApril%2F27%2Ftop%2Fstories%2F1top.htm&submit=%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=ENJA&wb_dis=2&wb_co=excitejapan
0590デフォルトの名無しさん
NGNG?ブラクラ?
0591Exciteの翻訳ページだよ
NGNGなんかBorlandが儲かってるって記事の日本語訳みたいだけどExciteの翻訳が
醜いからいまいちわかりづらい。原文見たほうが良いかもね。
0592デフォルトの名無しさん
NGNGの友人に聞きましたが、どこがどう教育用なのでしょうか?
0593デフォルトの名無しさん
NGNGいまじゃ当たり前だけど構造化記法を意識しはじめた
はしりではなかったかと。
Cより1年ぐらい早かったんだっけ?よくわからん。
0594デフォルトの名無しさん
NGNGだったのに対しPASCALはプログラムをお行儀よく書くための
言語として開発されたんじゃなかったっけ。
そのためカニはんかリッチのどちらかから
「PASCALはオモチャ」とのありがたい言葉を受けたらしい。
0595デフォルトの名無しさん
NGNG教育を目的に作られたから。
当初の目的と違った使われかたをするのは良くある事。
0596デフォルトの名無しさん
NGNGあまり答えになっとらんやん。
アレだ、学生がレポートで出してくるスパゲッティでパズルで
暗黙の型変換バシバシで自己改変なクソコードを読んで
採点するのに疲れた先生が考えたのがPASCAL。
型チェックが厳しく、ループ変数の制限が厳しく、ポインタの
概念を大幅に切り捨て、ライブラリはなかったことにして、
ともかく読みやすいコードを書くことを第一義に置いたものやね。
だから、素のPASCALはオモチャというのはまさにその通り。
TPやDelphiはちゃうよ。ボーランドが拡張しまくってるからね。
0597578
NGNG一度、修行にSysUtilsなしでアプリ組んだことあるよ。
アプリっつーかゲームでだけど。
ソース公開してるから、見た人驚いてるかも(いろんな意味で)
車輪の再発明になるから、そういうのが好きでない人の場合
あまり意味はない(藁
0598名無しさん
NGNGでもDelphiの方が、オブジェクト指向も若干わかりやすくない?
0599デフォルトの名無しさん
NGNGそりゃ、Delphiが既にPascalを元にした独自言語になってるから
だよ。
0600デフォルトの名無しさん
NGNGうんうん。オブジェクト指向の入門には最適なんだけどなー。
(C++の様に初心者の頭をこんがらかせる多重継承、演算子オーバロード、
テンプレートがない)
そういう意味で塚越氏の「Delphi オブジェクト指向プログラミング」
絶版は非常に残念。UMLなど取り入れて再版望む。
0601デフォルトの名無しさん
NGNGODBCの関数を呼びたいのですがODBCステートメントハンドルが必要です。
どうすればODBCステートメントハンドルを取得出来るのでしょう?
0602デフォルトの名無しさん
NGNGより「純粋」なOOPに近いよね。
TClassなんかも使える辺りが強力。
初心者だけじゃなくてもっとひろく使って欲しい感じ。
え?絶版?(t_t)
0603デフォルトの名無しさん
NGNGそんなこと言ってる奴は、きっとDelphi入門者なんだろうな。
0604デフォルトの名無しさん
NGNGじゃ何がいいの?
0607デフォルトの名無しさん
NGNG話にならん。OOPを強制させる、って趣向かな?
0608turbo type D
NGNGDelphiのクラスメソッドの事ですか?
どうでもいいけど、
JAVAのオブジェクト指向は変だと思うけど。
0609デフォルトの名無しさん
NGNGそうです。
ただし、 DelphiのClassMethodは、virtualに出来る
っていう辺りが、圧倒的なアドバンテージ(笑)。
これのおかげで、ファクトリー云々パターンなんてものを
使う必要がなくなるんだよね。
TClassまんせー
でも、別に難しい概念ってわけでもないから、
初心者にも熟練者にも美味しいと思うぞ、delphiのOOP仕様は。
0610デフォルトの名無しさん
NGNGdelphiのOOPの中で初心者向きじゃない面って、どこ?
0611turbo type D
NGNGstaticメソッドばかり記述してたら
オブジェクト指向ってなんだろうかと思う。
JAVA風クラスメソッドを作ってみました。
意味無いけど。
type
TInteger = class(TObject)
public
class function parseInt(Value: String): Integer;
end;
class function TInteger.parseInt(Value: String): Integer;
begin
Result := StrToInt(Value);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Caption := IntToStr( TInteger.parseInt('123456') );
end;
インスタンス化しなくてもいいというメリットはあるけれど
Delphiスタイルじゃないよね。
0612デフォルトの名無しさん
NGNGそうでもないよ。>>611みたいにすれば幾らでも抜け道なんざあるから。
あとは見た目の問題。Classを単なる名前空間もどきとして使うっていうアレね。
>>611
というか、あんまりクラスメソッド(Java風)のサンプルになってないのでわ?
このネタで思い出すのはどちらかというとJavaのIntegerクラス
(生intのラッパーObject)かな。ガベコレのないdelphiでやるのは
ちょっと度胸いるけどね(^^;;;
ああ。それで思い出した。delphiでヤな点といえば、
名前空間とClassの区別が構文上つけにくいこと。
ん?これはJavaも同じか。
しかしdelphiにはJavaみたいな階層化名前空間(笑)もないので、
ちょっとそういう面は弱いとは思う。Javaの名前空間は凶悪だもんな…
0613Dでなくてすまん
NGNG初心者は必ずはまる。
0614seven
NGNGこの本は、なぜかすいすいと読めました。kylix版での復活を望みます。
0615デフォルトの名無しさん
NGNGかなり古い本だが同氏が書いた
「ゲーム&&オブジェクト指向プログラミング」もなかなかいい。
TurboPascal時代に書かれたものだがTC++とTPの両方で
ソースが書かれているので両言語の表現の差が理解出来る。
0616デフォルトの名無しさん
NGNGhttp://www.clubepalm.com.br/PocketStudioEng.htm
http://www.pocket-technologies.com/products_examples.html
DelphiのIDEを利用してPalmOS用の画面をデザインしちゃうって製品らしい。
BorConでのお披露目もするらしい。
0617デル坊
NGNGう〜ん、これは面白いね!Palmware作りたいと思ってたけど、
今更コードウォーリアもなぁ〜、と思ってたんで楽しみ。
こんなことまでできちゃうんだね。パフォーマンスもいいみたい
だし、出たら速攻買います。
0618デフォルトの名無しさん
NGNGみなさんこんにちは。私は今、趣味でVB,VCを使っています。
別にMS信者でもなく、プログラミングが好きなのです。
他にも色々(JAVA、Perl、C、シェルスクリプト)とか勉強し
ています。そこで気になっているのがPASCALなのですが、
工学部の友人と話していると、大学に入って最初に受ける
プログラミングの講義が、
電子・電気系の工学科:アセンブラ、C
情報系の工学科:PASCAL
という具合なんですが、これはどう解釈すればよいので
しょうか?電子・電気系がアセンブラってのは分かるの
ですが。また、情報系の学生しかPASCALの講義がない
らしいのですが、これも不思議です。
私自身、PASCALについて何もしらないし、他言語と比較して
述べることは出来ないのですが、PASCALを勉強すれば
他言語と違う何を得ることができるのでしょうか?
情報系だけに講義があるので、何か狙いがあると思うのですが。
よろしくお願い致します。
0619デフォルトの名無しさん
NGNG電子・電気系はデバイス組込みが前提なのでC,アセンブラは
必然的でしょう。情報系はプログラムの基礎を学ばせる為に
PASCALが選択されていると思います。
アルゴリズムの学習が主でしょう。
趣味ですでにプログラミング経験があるなら楽勝でしょう。
ttp://www.google.com/search?hl=ja&safe=off&q=%8Du%8B%60+PASCAL+%8F%EE%95%F1%8DH%8Aw%89%C8&lr=
0620デフォルトの名無しさん
NGNG以前、どこかで見た気がするのですが
いざ探すとなると見つからないものですね。
0621>618
NGNGC使えりゃPascalなんて応用で覚えられるのにい。
授業で使うPascalの言語的な仕様がどの程度の物なのかわからないけど、
素のパスカルじゃあんまり役に立たないよ?
0622デフォルトの名無しさん
NGNGたぶんDelphiでもやるんだろ。
0623デフォルトの名無しさん
NGNG逆もまた然り。
なかまなかま。
0624デフォルトの名無しさん
NGNG逆もまた然り。
なかまなかま・・・んなわきゃない。
>>620
p2cならあるけど・・・逆ってあんまりいらなさそうな
http://www.google.com/search?hl=ja&safe=off&q=p2c+PASCAL+translator&btnG=Google+%8C%9F%8D%F5&lr=
0625624
NGNGhttp://www.google.com/search?hl=ja&safe=off&q=c2p+PASCAL+translator&btnG=Google+%8C%9F%8D%F5&lr=
0626620
NGNGさんくす>624氏
0627デフォルトの名無しさん
NGNGこいつが教師(のようだ)というのもなんか泣ける。
0628618
NGNG私は経済学部なもので。友人が工学部です、すいません。
>アルゴリズムの学習が主でしょう。
>主でしょう。
んー、なるほど。そういうことですか。情報学科の新入生でも
プログラミング未経験者がいるそうですから納得できます。
余談ですが、世界プログラミングコンテストってありますよね(つい先日知った)。
1位は中国の清華大学だったようです。日本は東京工業大が5位だったか!?
詳細に覚えてませんが。これは言語に何を使用しているのかな?
先日NHKで清華大学のコンピュータ学科に入学した少女のことを言ってましたが、
いましたがコンピュータが好きで好きでたまらないのに貧乏でパソコンが買えず、
ダンボールでキーボードを作って遊んでたというか、勉強していたらしい。
おそらく出力は少女の脳ということだろう。中国は凄い奴がいるもんだなあ
と改めて感じました。
0629デフォルトの名無しさん
NGNGハァハァ(´д`)
0630turbo type D
NGNGハァハァって。
想像力たくましいな。国語の成績がよくなりそうだ。
きっと単なるオタ少女だと思うよ........
0631turbo type D
NGNGもし
D2BCBやBCB2Dの変換ソフト見つけたら
教えてください。
他力本願だけどね。
VB2DやD2VBってのも広い世の中
作っている人いても不思議じゃないよなあ。
ないですかね。
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGそうだとしたら面白いな。
cat src | p2c | c2p | p2c ....
0634デフォルトの名無しさん
NGNG言語は選べるっぽい。
0635デフォルトの名無しさん
NGNGワラタ
イミネー(;´д`)
0636>627
NGNGDelphi初心者がうれしくてしょうがないって感じが出てていいと思うけど。
たぶん、Delphiに感動してるんでしょ
おれもはじめは感動したもん
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG持たないのかな。中村さんにNECの応対の悪さの話を言ったりとか、
個人で参加している達に失礼じゃないのか?
ところでかの人は「Closeメソッドで即アプリケーションは終了すべき」
という主旨の主張を繰り返しているけど、それ自体には問題ないの?
本当にその方が便利ならとっくにそういう仕様になってても良さそうな
もんなのにそうなっていないということは、都合があっての現在の仕様
だと思っているだけど。
0639デフォルトの名無しさん
NGNG人に物を教える立場に居続けると
自分の意見が正しい意見だとしか
考えられないようになるのじゃないのかな?
>ところでかの人は「Closeメソッドで即アプリケーションは終了すべき」
>という主旨の主張を繰り返しているけど、それ自体には問題ないの?
だよなあ、ループが終了せずに突然終了されたら
それこそ困りそう。
回避方法があるのならそれで対処してもらうほうが
よっぽど理にかなってる。
まあ、アプリケーションの起動と終了処理は
素人が手を出せないほど面倒になってるとは
この人は知るよしもないだろうな。
興味ある学生にはこのやり取りを印刷して配ってやればいいの。
0640デフォルトの名無しさん
NGNG>この件について必要だというのであればお応えしましょう。
>「Close の動作は仕様です。」
>理由については、すでに多くの方が述べられているとおりです。
>大野
おおのさん、ユーモアのある人だねえ。(藁
だけど Y.Okamoto の典型的厨房脳には
通じるかどうか。
玄なんとかみたいな寒い反応されたら嫌すぎだ。
0641デフォルトの名無しさん
NGNGあまりにも自己中心的なひどい言動が続いたので
2chに呼び出してみました。(藁
くるかな Okamoto 君
0642デフォルトの名無しさん
NGNGOhnoさんがトドメを刺そうとしている模様。
だけど、きっとY.Okamotoさんは勘違いしたままに違いない。
根本的にわからない、わかろうとしないと、あの文を読んだだけでは
納得いかないだろう。
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG> 要望を書いていただくのは自由ですが、コメントされている方々は、
> 今回の要望がナンセンスなものだということを詳細な理由をつけて説明されています。
> (これは、非常に嬉しいことです。この場を借りてお礼申し上げます)
いやあ、オオノさま、とどめをさしてくださいまして
ありがとうございます。
この場を借りてお礼を___
見ていて気分がイィd(・∀・)
厨房はどうして自分が厨房だという事に気がつかないのだろう。
え?「オマエモナー」ですか?、すいません逝ってまいります。(藁
0645デフォルトの名無しさん
NGNGMLも最近つまんなかったし。<こういう俺が一番くずだ。
0646デフォルトの名無しさん
NGNGヒッデェ(w
0647デフォルトの名無しさん
NGNG教師とはこうも傲慢な職業なのか。
自分の視野の狭さというものを感じることはないらしい。
やだやだ。
0648デフォルトの名無しさん
NGNG水野朋子?
0649デフォルトの名無しさん
NGNGhttp://homepage2.nifty.com/okamotoy/
http://web.kanazawa-u.ac.jp/~psy/Okamoto/y_okamoto.html
0650デフォルトの名無しさん
NGNGそういえばミヅノは英語教師でしたな。(藁
0651デフォルトの名無しさん
NGNGそうするとある程度はDelphiに詳しいと思うが
なぜCloseの仕様変更が不可能だという事すらわからないのだ。
心理学を学んでるって
そうするとわざと怒らせて他の人間の行動を
分析したりしてるのか?
ヤナ奴だなあ。コイツの書籍持ってなくてよかったよ。
0652デフォルトの名無しさん
NGNGDelphiに詳しいかもしれないけど、Windowsには詳しくなさそう。
実は後日「今までのは心理学の実験でした。お騒がせしました〜」
なんて投稿をするとか…。余計マズいか(w。
0653デフォルトの名無しさん
NGNG2chネラーのたちの悪さを存分に発揮しようぜ
0654デフォルトの名無しさん
NGNGなにするきだ?
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGあんまりVCLを使ってないんですね。
0657デフォルトの名無しさん
NGNG確かあの本しかそういう本はないので同じ本。
本書いている奴よりも、ネットの常連の方が
良識な人たちばかりでほっとした。
もっとも必要のないDelphi本著者として記憶しておこうっと。
0658デフォルトの名無しさん
NGNG岡本氏の主張を通したいならGUIアプリじゃなくて
コンソールアプリで学生達に授業すればいいのになあ?
それともNewsGroup活性化の為に一芝居打ったのだろうか?
中村氏や大野氏を引きずり出すのには成功してるし。
0659sage
NGNG同じメールアドレスだよ。
>>658
>それともNewsGroup活性化の為に一芝居
なんで彼がそんなことを?
だいたい,喧嘩が起きないと活性化しないコミュニティってなんだ?
0660( ´∀`)さん
NGNG>だいたい,喧嘩が起きないと活性化しないコミュニティってなんだ?
2ちゃんねる
0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNGprocedure TForm1.Button1Click(Sender: TObject);
var n : integer;
begin
repeat
n := StrToInt(InputBox('Set an integer... n = 0 for Close',
'N =', '0'));
case n of
0 : ;
1 : ShowMessage('Case - 1');
else ShowMessage('Case - else');
end;
until n = 0;
Close;
end;
0663デフォルトの名無しさん
NGNGhttp://www.borland.com/about/press/2001/del6released.html
0664デフォルトの名無しさん
NGNG0665turbo type D
NGNG0666デフォルトの名無しさん
NGNGですか。
http://www.drbob42.com/Delphi5/index.htm
0667turbo type D
NGNGhttp://www.excite.co.jp/world/url/body?wb_url=http%3A%2F%2Fwww.zdnet.com%2Feweek%2Fstories%2Fgeneral%2F0%2C11011%2C2712635%2C00.html&wb_lp=ENJA&wb_dis=3
読者の反応が怖いな,ある意味(藁
0668turbo type D
NGNG0669厨房
NGNG日本のサイトしか見てないんじゃないの?
0670デフォルトの名無しさん
NGNGやはり中村さん。
0671turbo type D
NGNG0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNGてっきりCodeGuardがあるもんだと思っていましたので
驚きました。結構便利に使っていたので残念でもあります。
Delphi6には無いんでしょうか。
0674672
NGNG実際CodeGuardの使い勝手はどんなもんなんですか?
0675デフォルトの名無しさん
NGNGのページに上がっております。ヒアリング出来る人どうぞ。
http://community.borland.com/
0676turbo type D
NGNG同意。教えてくださいな。
MemCheckと同じような感じなのかな。
0677turbo type D
NGNGある数値が素数かどうかを高速に求めるのはどうしたらよいでしょうか?
0678デフォルトの名無しさん
NGNGCodeGuard は,C++Builder で開発されたアプリケーション用の
ランタイムデバッグ機能を提供します。CodeGuard は,構文規則に
違反していないためにコンパイラに報告されないエラーを報告します。
CodeGuard は,ボーランドのラインタイムライブラリに加えて,
多くの Windows API 関数も追跡し,マルチスレッドアプリケーションを
完全にサポートしています。
CodeGuard には,次に示す 2 つの概念があります。
メモリとリソースの使用
CodeGuard が検査するのは,誤ったメモリの使用法,
不適切なメモリの割り当てまたは解放,無効なファイルストリームまたは
ハンドル,およびファイルストリームやハンドルの不適切な使用によって生じる
リソースリークなどです。CodeGuard は逆参照時にポインタを検査して,
ポインタの演算内容を確認します。メモリやリソースが解放される場合に,
ユーザーのプログラムがその解放されたメモリ領域やリソースにアクセス
しようとすると,CodeGuard はエラーを報告します。
関数の使用方法についての正当性
CodeGuard は関数の引数を調べ,関数の
戻り値によってエラーを報告します。また,関数呼び出しで使われている Windows リソースハンドルの
有効性を検査します。
CodeGuard の有効化と設定
CodeGuard は,静的なライブラリ(CG32.LIB)またはダイナミックリンク
ライブラリ(CG32.DLL)を使用します。これらのライブラリには,関数の引数と
戻り値を検査するラッパー関数が含まれています。CodeGuard は,
CodeGuard コンパイラオプションを有効にしてコンパイルした実行形式
ファイルのエラーだけを検出できます。
追加のランタイムオプションを設定するには,CodeGuard 環境設定
ユーティリティを使います。環境設定ユーティリティのマニュアルを
参照すれば,CodeGuard のエラーログの内容や,CodeGuard を効果的に
使う方法について理解することができます。
0679>677
NGNG値域が十分狭くて、何度も判定するなら
素数リストを生成して検索すればいいんじゃない。
0680turbo type D
NGNGピタゴラスの三角形という数学ロジックを見るプログラムを
作っているので値域が十分に広いので
素数リストの方法は
ちょっと厳しいですわ。
まあ、パフォーマンスにシビアな
ソフトではないので、
泥臭く計算する事にします。
サンクスコね。
0681デフォルトの名無しさん
NGNG”エラトステネスのふるい”を、ある数の平方根まで行うのは?
100までなら、100の平方根の10までの素数(2,3,5,7)に対して
ふるいをかける。あとは再帰。
0682turbo type D
NGNG0683turbo type D
NGNGなんかつおそうだ、
アルテミスの首飾りくらい強いのですか?(w
0684681
NGNGhttp://arch.arch.kumamoto-u.ac.jp/hagane/yamanari/joho2/kougi3.html
自分で検索くらいしてくださいよ・・・。
有名なアルゴリズムです。
0686デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/whatsnew/
0687turbo type D
NGNG2/3/5/7/11/13/17/19/23/29/31/37/41/43/47/53/59/61/67/71/73/79/83/89/97/101/
103/107/109/113/127/131/137/139/149/151/157/163/167/173/179/181/191/193/197
/199/211/223/227/229/233/239/241/251/257/263/269/271/277/281/283/293/307/
311/313/317/331/337/347/349/353/359/367/373/379/383/389/397/401/409/419/421
/431/433/439/443/449/457/461/463/467/479/487/491/499/503/509/521/523/541/
547/557/563/569/571/577/587/593/599/601/607/613/617/619/631/641/643/647/653
/659/661/673/677/683/691/701/709/719/727/733/739/743/751/757/761/769/773/
787/797/809/811/821/823/827/829/839/853/857/859/863/877/881/883/887/907/911
/919/929/937/941/947/953/967/971/977/983/991/997/
0688turbo type D
NGNG//素数リスト
procedure TForm1.SosuuList(Value: Integer);
var
SqrNum: Extended;
Limit, i, j: Integer;
SosuuList: array of Boolean;
begin
SqrNum := Sqrt(Value);
Limit := Trunc(Int(SqrNum));
if Value <= 1 then Exit;
SetLength(SosuuList, Value+1); //0..Limitまでの配列を用意
SosuuList[0] := False;
SosuuList[1] := False;
for i := 2 to Value do
begin
SosuuList[i] := True;
end;
for i := 2 to Limit do
begin
if SosuuList[i]=True then
begin
for j := 2*i to Value do
begin
if (j mod i) = 0 then
SosuuList[j] := False;
end; //for j
end; //if SosuuList
end; //for i
for i := 2 to Value do
begin
if SosuuList[i] = True then
begin
Form1.Memo1.Lines.Add(IntToStr(i));
end;
end; //for i
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SosuuList(1000)
end;
0689turbo type D
NGNG素数って計算するというよりかわ、
データとして保持しておけばいいものなのね。
考えてみたらあたりまえか。
0690デフォルトの名無しさん
NGNGはじめて気が付いた。
なんじゃこりゃ。(藁
http://www.borland.co.jp/about/column/
0691デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/whatsnew/
十日付の最新情報にあるよ。って今日じゃん。
せめてトップページにリンク書かないと
誰も知らないままなんじゃ…。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG案内が届いてD5にバージョンアップするとD6が無償!
一気に2バージョン揃えるチャ〜ンス(^ー^)
やってくれるぜBorland。
0694デフォルトの名無しさん
NGNG売上あがってるのかなあ
0695デフォルトの名無しさん
NGNGあと、ここも。
プログラマーの「VB離れ」が進む?
http://www.zdnet.co.jp/news/0105/15/e_vb.html
>なお,Evans DataはDelphiを独立した言語として認めていないため,同言語に関するデータは集めていない
こんな時代遅れの調査会社の
データが信頼に足るものなのかは疑問だが。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGD5が余っている。
すぐにお金が必要。
だと思うが。
0698デフォルトの名無しさん
NGNGこれなんかどよ?
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=16140
0699デフォルトの名無しさん
NGNGhttp://www2.big.or.jp/~osamu/Delphi/MyLibrary.htm
0700デフォルトの名無しさん
NGNGhttp://www.modelmaker.demon.nl/
0701デフォルトの名無しさん
NGNGのですが、どのように記述したら宜しいのでしょうか?
tipsサイト片っ端から探してみたのですが、何故かありませんでした。
Del職人の方のご教授をお願い致します。
0702デフォルトの名無しさん
NGNGマニュアル読もうやsage
0703>701
NGNG0704turbo type D
NGNG0705デフォルトの名無しさん
NGNGMLの転載だめ。
0706デフォルトの名無しさん
NGNG取得するには、どうしたらいいでしょうか?
FindWindow 指定アプリを取得
GetWindowThreadProcessId プロセスID取得
OpenProcess プロセス開いて
ReadProcessMemory メモリから読みこんで
closeHandle 閉じる・・・
読みこむ対象が数値であれば、出来ているのですが、
文字列になると動作しなくなります。
お願いします。
0707デフォルトの名無しさん
NGNG文字列って String 使ってる?
PChar 使ったらいけるんじゃないかな
0708706
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGデスクトップアイコンの位置を保存するときにハマったよ(^^;
NT系だと
GetWindowThreadProcessID
OpenProcess
VirtualAllocEx
// ここで文字列の取得とかいろいろ
ReadProcessMemory
VirtualFreeEx
CloseHandle
って流れでアイコンの位置・文字列を取ったことがある。
VirtualAllocEx/FreeEx してるとこだけ 706 のと違うな。
このへん試してみたらどう? > 706
0712デフォルトの名無しさん
NGNGそのネタしってる人は数人に絞られてるなあ
と感じる俺もマニアックかねえ(w
デスクトップアイコン位置保存のテクを知りたいといわれて
突然見知らぬ中国人から英語メールが山ほど来た時は
少々辟易した。
0714デフォルトの名無しさん
NGNG俺はフックで強引にやったけどな
0715デフォルトの名無しさん
NGNGそういうことで、711はやはりマニアックかと。
0716
NGNGぴーきゃら?
0717デフォルトの名無しさん
NGNG0718717
NGNGおぷ
0719717
NGNG0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722717
NGNG0723デフォルトの名無しさん
NGNG組み合わせで開発している人いますか?
今ちょっと試しているんですが
・DelphiのIDEとVSS両方起動
・フォームは*.dfm, *.pas両方をペアで管理
・ファイルをチェックアウトしたらIDEのファイルを
一度閉じてから再度開く(リードオンリー属性を解除するため)
といった点が面倒ですね。
なんか良い方法があったら教えてください
0724デフォルトの名無しさん
NGNG0725706
NGNGPcharの初期化が肝でした。
Buffer : Pchar;
Buffer := StrAlloc(256);
ですです。
ありがとうございました。
0726706
NGNG98SEでは、問題ないようです。
0727デフォルトの名無しさん
NGNGhttp://www.oreilly.co.jp/
0728デフォルトの名無しさん
NGNGhttp://www.oreilly.co.jp/reserve/delphi_s.gif
0729デフォルトの名無しさん
NGNG山猫
0730デフォルトの名無しさん
NGNGおお、実写版ギコが。
0731デフォルトの名無しさん
NGNG止めてくれよう。表紙見るたびに想像するじゃないか。(藁
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG|\
┌──────────┘- \
│ \
| 気のふれた方が >
│ /
└──────────┐- /
ヽ(´ー`).ノ |/
( へ)
く
- = ≡三 |\
- = ≡三 ┌──────────┘- \
_ = ≡三 │ \
― =三三 | います >
 ̄ = ≡三 │ /
- = ≡三 └──────────┐- /
(´ー`) - = ≡三 |/
( ヽ ヽ)
/ >
0736デフォルトの名無しさん
NGNG自覚しろよ
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGUMLクイックリファレンスと並べてみるとギコとモナみたいだぞ。
http://www.ohmsha.co.jp/data/books/contents/4-900900-90-7.htm
0740デフォルトの名無しさん
NGNGフリーのやつで。
0741デフォルトの名無しさん
NGNGコミュニティサイトのCode CentralでDelphiDocというのを
見かけた。まだ結構粗い。
あとPascal CentralにPasDocってのがある。
http://www.pascal-central.com/tools.html
0742デフォルトの名無しさん
NGNGのバカ、うぜえ。
http://www.sasjapan.com/index.html
0743デフォルトの名無しさん
NGNGIriaとかやってるよね?
0744デフォルトの名無しさん
NGNGなんか組み込み用のスクリプトでいいのないかなー。
ライセンス周りが緩やかなヤツで。フリーで商用OKとかのね。
自作するしかないのか?
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG【コンパイラ・スクリプトエンジン】相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981672957
0748デフォルトの名無しさん
NGNGが・ん・ば・れ
0749名無しさん
NGNGどっかにマシなチュートリアルないのかぇ
本買ったが、添付Helpとサンプル印刷しただけじゃん。鬱。
0750デフォルトの名無しさん
NGNGだめなんじゃないのか?>>749
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNGここに書かせてもらいます。
Delphi始めたばっかのビギナーです。ビギナーなので慣れるまであれやこれ
やと教えていただきたいことが出ると思います。そういう質問を受け付けて
いる、活発な掲示板のあるサイトご存知でしたらご紹介頂けないでしょうか。
Delphiはじめるなら、まずはここに行けという定番サイトというか。
VBでいえば
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html
ここみたいなところがあれば嬉しいです。よろしくお願いします。
0753turbo type D
NGNGURLは検索してちょ。
0754デフォルトの名無しさん
NGNGwinampとか、1%なのに・・・
なじょ・・・
0755turbo type D
NGNG0756デフォルトの名無しさん
NGNGオレおせっかいやきだからURLだしといてやるよ。
AboutDelphi(DelphiML)
http://www2.big.or.jp/~osamu/Delphi/
Delphi広場
http://www.sakaki.keiaikai.or.jp/
Delphiマンセー
0757デフォルトの名無しさん
NGNG0759turbo type D
NGNG0760名無しさん
NGNG楽しいなぁ。楽しいなぁ。
ATLでCOM作っていたときの苦しみがうそのようだ。
0761デフォルトの名無しさん
NGNGなじょ・・・
0762デフォルトの名無しさん
NGNGシュリープしてなからかな?
0763turbo type D
NGNGって意見が出てますね。
大賛成。
例のエクストリームプログラミングの
ユニット試してみたいな。
なんか乗り遅れちゃった感じ。
0764デフォルトの名無しさん
NGNGSleep(100);
0765デフォルトの名無しさん
NGNGそのプロセスと標準入出力でやりとりする
サンプルかコンポーネントってないですか?
0766デフォルトの名無しさん
NGNGでもね、75fpsぐらいだしてCPU使用率が3%なwinampってなんでしゅか?
でるFight!!じゃーむりのかなぁ。
0767デフォルトの名無しさん
NGNGぶひーん
0768デフォルトの名無しさん
NGNGSoniqueなんかだと、CPUバリバリ食ってるけど
winampの起動時に別のプロセスの使用率が高くなってないか見てみよう。
0769デフォルトの名無しさん
NGNGこんなこと言ってると他の環境でもきっとできないぞ。がんばれ。
0770デフォルトの名無しさん
NGNGbegin
beep;
beep;
beep;
end;
おとが3回なるよ!3回なるソフトちゅくったにょんー
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGどうすればいいでしょうか?
0773デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG早く寝なさいね。
0776デフォルトの名無しさん
NGNGほい。
ページの移転先に記事がないのでgoogleのキャッシュだけど
http://www.google.com/search?q=cache:gnUmbZHx8Zo:buin2gou.hoops.ne.jp/Delphi.html+Delphi+Canvas.TextOut+%83A%83%93%83%60%83G%83C%83%8A%83A%83X&hl=ja&lr=lang_ja
0777デフォルトの名無しさん
NGNGhttp://hp.vector.co.jp/authors/VA012950/AA/
776の移転先のページにあるライブラリのソースが参考になる。
http://members.jcom.home.ne.jp/buin2gou/DelphiTABM.htm
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGまたは使い方を解説してる書籍ってないですか?
0780seven
NGNG市販品では、だめですか?
エクセルクリエーター
http://www.adv.co.jp/products/Excelcrt/default.htm
0781横レス
NGNG>または使い方を解説してる書籍ってないですか?
無い。C++Builder5から使ったときは辛かった。Webで解説したり書籍出したら売れるかも。
>市販品では、だめですか?エクセルクリエーター
だめ。高速コンポーネントとして配布されているのに、市販ライブラリを通すと遅くなる。
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGageてもよい物なのかわかりませんので、sageさせていただきます。
Delphiって、マルチステートメントてっと出来ないモンでしょうか?
たとえば、ButtonClickイベントでユーザの入力を判定して、
入力が変な場合メッセージを表示してExit;したい場合、
if 〜 then
begin
messagebox(Handle, '入力変ですよん', nil, MB_ICONERROR);
exit;
end;
ってしなきゃいけないじゃないですか。
それを
if 〜 then messagebox(〜) : exit;
って書きたいんです。
もしくは、
if 〜 then
messagebox(〜): exit;
とか。
0784デフォルトの名無しさん
NGNGif 〜 then Begin MessageBox(〜); Exit End;
っていうかマルチステートメントなんて悪い習慣
早く忘れなさい。
0785デフォルトの名無しさん
NGNGそんなもんまとめてraiseしたれ。
try
if チェック1 then
raise Exception.Create('エラー1');
if チェック2 then
raise Exception.Create('エラー2');
Except
On E: Exception do begin
MessageDlg(E.Message, mtError, [mbOk], 0);
Exit;
end;
end;
0786デフォルトの名無しさん
NGNG>>784殿
あ、あれって悪い習慣だったんですか(^^;
簡潔になるから結構好きだったりするんですが。
しかし、やはりそうするか方法はないみたいですね。
>>785殿
なるほど、そういう手もありますね。
しかし、Except節で
On E: Exception do begin
MessageDlg(E.Message, mtError, [mbOk], 0);
Exit;
end;
二つのステートメントを begin..end; で囲っているあたり、
業が深いですな(^^;
0787デフォルトの名無しさん
NGNG糞みたいな概念、忘れなさい。
#ありゃBasicだったか?
pascal(やC)の「文」の概念を一度きちんと覚えるよろし。
強く推奨。くれぐれもきちんとだぞ。半端だと逆効果だ。
0788デフォルトの名無しさん
NGNG>>787氏
ご教授ありがとうございす。
検索してみたんですが、いまいち、マルチステートメントの悪と、
Pascal、C の「文」の概念を解説したサイトが見つけられないのですが…
もしご存知でしたら、ご教授下さい。
マルチステートメントは、HSPやVBをメインにしていた頃に使用していました。
0789デフォルトの名無しさん
NGNG久々に効いたよこの言葉。懐かしい。
昔Basic覚えたてのころ使ってた覚えが。
0790デフォルトの名無しさん
NGNG複数のステートメントを記述する為マルチステートメント
なるものが考案された。
しかし、ソースがごちゃごちゃして論理の流れが掴みにくく
なるし、しかもラベルの終端もコロンなもんだから
ステートメントをラベルと誤認するなどあまりいい事が
ない。メモリーが少なかった頃の遺物と考えていい。
0791デフォルトの名無しさん
NGNGprocedure errDayo;
begin
messagebox(〜);
exit;
end;
begin
if 〜 then errDayo;
これでどお?('-`)?
0792turbo type D
NGNGN88BASICはやったんだけどなあ。
0793デフォルトの名無しさん
NGNGそれ、Exit意味ないYO。
0794デフォルトの名無しさん
NGNGif (〜 ) messagebox(〜), exit;
ってのが出来た気がするが、DelphiのPascalはできなかった気が・・・。
そういや、みなさんブロックの終わりの行の最後のセミコロン付けてる?省いてる?
begin
hogehoge;
exit
end
こんなかんじに。
0795デフォルトの名無しさん
NGNGしかもメッセージ固定だし〜。こうすれば?
type
EMyError = class(Exception);
procedure ErrorPitcher(const msg: String);
begin
raise EMyError.Create(msg);
end;
procedure ErrorCatcher(E: Exception);
begin
MessageDlg(E.Message, mtError, [mbOk], 0);
end;
begin
try
if 条件1 then ErrorPitcher('エラー1');
if 条件2 then ErrorPitcher('エラー2');
if 条件3 then ErrorPitcher('エラー3');
except
on E: EMyErrorException do ErrorCatcher(E);
end;
end;
0796795
NGNG× on E: EMyErrorException do ErrorCatcher(E);
○ on E: EMyError do ErrorCatcher(E);
0798デフォルトの名無しさん
NGNGプログラム止めてどうするよ!
0799791
NGNG0800ぼぼ〜ん
NGNG0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGdelphiの文法のヘルプは如何?
>>794
ピリオド演算子な。棄却演算子とかいうんだっけか?
2項演算子で「演算子の左の式の値を単純に捨て、右の式の値を返す」
という「演算子」だ、たしか。
演算子だから「式」の中には好きに書けるわけだ。
for (s=1, t=2; hoge(s,t); s++, t++){}
なんて書いた場合も、
s=1, t=2
および
s++, t++
という「2つの」式が有ると見なされるわけ。
なんでもかんでも演算子ってところがいかにもC的。
よしあしはさておき、pascalとは随分雰囲気が違うわな。
0803デフォルトの名無しさん
NGNG使えてもプログラムがわかりにくくなるから滅多に使わないけど。
0804デフォルトの名無しさん
NGNGご教授ありがとうございます。
>>789氏
最初はHSP、次にVBとやっておりました。
ですので、マルチステートメントがあるのを当然かと
思っておりました。
>>790氏
>メモリーが少なかった頃の遺物と考えていい。
なるほど。ご教授ありがとうございます。
>>791氏
errDayo 中で Exit を使用しても errDayo を抜けるだけで、
意味無いように感じます。
と思ったら>>793氏でがいしゅつでした。(^^;
>>792氏
申しわけありません、N88BASICは名前を聞いただけで、
実際に触った経験はないので何とも…
>>794氏
自分は付けています。
省略したあと、その近辺を変更するとコンパイルエラー
の温床になってしまうので非常に煩わしいので。
>>795-796氏
なるほど。また一つ勉強させていただきました。
>>798-800氏
大変失礼で不躾な質問ですが、漫才でしょうか?
>>802氏
なるほど、Delphiヘルプですか。
見落としていました。まさに灯台もと暗しです。
一度じっくり読んでみようと思います。
>>803氏
「申し訳ない」というような書き込みとは思いません。
些細なこととはいえ、そのまま間違った知識を
広めるよりはよいと思います。
偉そうで申しわけありません。
0805まゆちゃん
NGNGがんばおー!
proceudre TForm1.Creare(Sender : TObject);
var
i : integer;
begin
for i := 1 to 10 do
begin
beep;
sleep(500); //おぼえたよ!すりーぷ!おしえてもらったよ!
end;
end;
音が10かい、休みながらなるよ!
0806デフォルトの名無しさん
NGNGなんじゃこれ?
0807デフォルトの名無しさん
NGNGvar i : integer;
begin
for i := 1 to 10 do
begin
beep;
sleep(i*100);
end;
end;
やはりこのくらいやらないと i が可哀相。
0808名無しさん
NGNGお前らFortranスレ逝け
0809デフォルトの名無しさん
NGNGもうバージョンアップもしないそうなんですが...
0810デフォルトの名無しさん
NGNGどうやったら良いんですかね?
いろいろ試してるんだけど良くわからんです。
0811デフォルトの名無しさん
NGNGここぞとばかりに煽りですか?
0812デフォルトの名無しさん
NGNGそういうのは無視しようYO!
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG激しく同意。
0816デフォルトの名無しさん
NGNG言うなって。荒れるから。
0817デフォルトの名無しさん
NGNG0818まゆちゃん
NGNGなんでも出来ることは、いいことだ!
あいであとこんじょーさ!
0819デフォルトの名無しさん
NGNGデフォルトだとCtrl+Shift+[数字]でマークして、Ctrl+[数字]でジャンプやつです。
これ、Delphi閉じちゃうと消えてしまうけれど
そうならないような、かわりになるものってあります?
もしくは、みなさんソースのマーク付けにどんな工夫しておられます?
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG>>819
コメントをある程度目立つように書く、
これくらいかな?
あとはブレークポイントを仕掛けっぱなしにしておくとか…
速度を考慮しなくていい場所なら、
if GetTickCount = 0 then
Application.ProcessMessage;
とでも書いて、ProcessMessages; に仕掛ける。
でもやっぱコメントかな?
0822819
NGNG・おしげなくTODO機能を使うとか、
(エディタにTODOリストをドッキングさせておいていつでも参照可能なようにしておく)
・無効状態にしたのブレークポイントを設置するとか、
(同様に、ブレークポイントリストをエディタにドッキングさせておく)
とか考えていたんですが、しおりと違ってショートカットで移動できないので
いかんせん常用できないんですよね(´д`;)
Delphiお得意の環境拡張でなんとかならないかなーと思っていたり。
0823740
NGNGこんなの発見しました。
『PASCAL仕様書作成』
指定されたディレクトリ以下にある *.pas ファイルを解析して、
仕様書を *.html ファイルに出力します。
http://www.lares.dti.ne.jp/~tkumagai/delphi/index.html
報告までに。
0824デフォルトの名無しさん
NGNGhttp://www.gexperts.org/
0825turbo type D
NGNG保存機能は是非欲しいですね。
Borlandに要求しおうぜ!
0826turbo type D
NGNG◆「Delphi 3 または 4 → Delphi 5」バージョンアップは6月20日まで
だって。
0827デフォルトの名無しさん
NGNGそれ実装したら、Delphi6 買ってくれる?
0828turbo type D
NGNGでも、しおりがどうして保存されないのかは
以前からナゾだったです。はい。
0829デフォルトの名無しさん
NGNGhttp://www.borland.com/
http://www.borland.co.jp/
0830デフォルトの名無しさん
NGNGIOTAEditView の BookmarkPos プロパティで読み書きできるよ.
アドイン作ってみたら?もうあるかも.
0831turbo type D
NGNGそんなスキルあらしません、(゚Д゚)
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGカスタマイズ無制限・ノンロイヤリティー。
0834デフォルトの名無しさん
NGNGTools API のソースのコメント、訳してよ・・・
あとサンプルコード、コンポーネントのテストで使ったものでも
いいから今の倍ぐらいにしてよ・・・
0835デフォルトの名無しさん
NGNG思い出して申し込んだ。Delphi6はCLXの絡みもあるから
買っておくかというところで。
0836デフォルトの名無しさん
NGNG自分でPascalに直すの面倒だよ。( ´Д`;)
あ、俺まだDelphi4なんだけど、Delphi5に付いてる?>DDKのヘッダ
付いてたら直ぐUpgradeするニョ。なるべく6月20日までに教えて・・(我侭
0837デフォルトの名無しさん
NGNGヘッダーということはインポートユニットにゃ?
ほいじゃついでにTASMも。
0838デフォルトの名無しさん
NGNG>Tools API のソースのコメント、訳してよ
これくらいなら今のスケジュールでも何とかなるかな.
0839デフォルトの名無しさん
NGNG某陸の人じゃ、無いよね?
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG細かいところは気にしないことにしましょう。
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGinline asmでMMXやらSSEやらを正式対応もとむー。
アドインで無理やり使うのもなあ。
0846デフォルトの名無しさん
NGNGDelphiって、IDEの環境がカスタマイズができると言っても難しすぎる。
というか、あまりにサンプルや解説が少ない。
よって、気軽にカスタマイズできない。
その辺なんとかならないだろか。
0848デフォルトの名無しさん
NGNGKylix 以降、MMX, SSE, 3DNow サポートしちょりまっせ。
0849デフォルトの名無しさん
NGNGパッケージグループを使って、アプリとパッケージをまとめて
ビルドかけたら?
0850デフォルトの名無しさん
NGNG逆にいうと、コンポーネントパレットに
「グローバルに」コンポを所属させたくない!という
希望を叶えることって出来ますか?
他のプロジェクトでも同じコンポをパレットに載せたくない。
載せられちゃう(少なくとも昔のverはそうだったよね)と
コンポのクラスをプロジェクトローカルに出来ない。
名前空間どころの騒ぎじゃなくなり、他のプロジェクトにまで
名前汚染をしちまう。つまり同じ名前の違うコンポを作れなくなる。
これ痛い。せっかくの(或る意味究極の)ライブラリ化技術なのに、
名前空間が制御できないんで事実上使い物にならない、つまり
「あるプロジェクトに属する」ライブラリを積極的にコンポ化
するというモチベーション(?)を、失ってしまう。
(コンポはプロジェクト非依存でないと「おかしい」という
考え方は、なんか変です。コンポの便利さを使える場面が
限定されてしまうってのは、技術的必然では無いはず)
あれって、最近では改善されましたか?
0851デフォルトの名無しさん
NGNG移動するんじゃないの?ここのプロジェクトのみで使うだけなら
コンポーネントとして独立させる必要は無いでしょ?
便利さとのトレードオフだと思うけど。
一つのプロジェクト内の複数のフォームで使い回すだけなら
フレームを使ったら?
0852デフォルトの名無しさん
NGNGそのプロジェクトで使用されるコンポーネントが自動で組み込まれ、
プロジェクトを閉じたときにアンインストールされる、
みたいな感じだよね?
確かに今のままだと不便なんだよな。
delphiで作られたツールのソース拾ってきても、
プロジェクト開く前に付属されてるコンポーネントを先にコンパイル、インストールして
自分の環境汚さなきゃいけない。うーむ。
自分でつくるものも、組み込む(人に渡すときには組み込ませる)手間が別途かかるので、
コンポーネント化しても、FormCreate時に動的生成ですませちゃう・・・。
0853デフォルトの名無しさん
NGNGuses(かusescomponent)すれば
パレットに並ぶようにして欲しいね。
ユニットはuses myunit in '..\old\myunit.pas'できるんだから。
constでもいいんですが、オブジェクトインスペクタで初期値を指定する
のも捨てがたいんですよ。
0855デフォルトの名無しさん
NGNG>オブジェクトインスペクタで初期値を指定する
>のも捨てがたいんですよ。
つーか、コンポーネントの利点ってこれにつきるような
自分でCreateしたらただのクラスじゃん
0856turbo type D
NGNG使ってると不便に思う事はみんな同じなんだな。
usescomponent案サンセー
Create時に自分で生成するの反対。面倒すぎ
既存コンポーネントとの
名前空間のぶつかりが気になるけど
Borlandなら出来るだろうし。
opentoolsApiも使いにくぃ。
0857デフォルトの名無しさん
NGNG>パレットに並ぶようにして欲しいね。
これができればコンポーネントの開発・デバッグもかなり楽になるね。
Delphi6にこれ実装しないとC#に移るぞ、ゴルァ!! > Borland
0858デフォルトの名無しさん
NGNG>コンポーネントとして独立させる必要は無いでしょ?
まさか。
コンポをパレットに並べたい(ぽとりぺたりするために)という欲求と
コンポを「常に」パレットに並べた(くな)い という欲求とは
全然別モノなんですよ。そこを理解できますか?
あなたの説が正しいとすると、同じことはコンポ以外にも言えるはず。
つまり、1つのプログラムの中のサブルーチンを
プログラマが自由にProcedure/Functionにする(分割する)
こともまた、駄目だってことになりますよ?
いちいちライブラリ化してProjectから追い出す必要がある、
という話になっちゃいますよ?
それ、受け入れられますか?コンポだって同じです。
>便利さとのトレードオフだと思うけど。
それ、違う。
トレードオフになっちゃうのは、たまたま今のDelphiの実装が
そういう風になっているせいに過ぎないっしょ。
Project従属コンポという概念は、どう考えても
「実装不可能」ではナイよね?
>フレームを使ったら?
フレームも悪くないけど、あれ「だけ」だと足りないんだよね。
あくまでコンポのサブセットだよあれって。
ん?そういや最近使ってないんで忘れたが、
Frameって自分でプロパティを追加できたっけか?
俺ぁ他のコンポへのポインタをプロパティとして持たせる
(DBコンポみたいな感じで)のが好きなんだが…
あと細かい話だけどFrameがWinControlっていうか
OSに直接認知されるObjectっていうか
Java畑でいうところの重量コンポーネントなので、
リソース食いすぎるという悩みも。
こないだFrame作って
いい気になってInstanceを100枚くらい貼ったら
win9xで動かなくなった(藁
まぁこの話はVCL全体のアーキテクチャの問題なんで
自作コンポの話とはちょっとズレルけど。
0859デフォルトの名無しさん
NGNGProjectごとに取捨選択できないのか?
0860デフォルトの名無しさん
NGNGdelphiの設定画面の一箇所で集約的に書かないとならない。
あの設計だと、プロジェクトごとに分散するという構成は
とりにくいと思われ。
直せ。きぼん>某陸
それからこの案で特許取るなよ(藁)>某陸
0861デフォルトの名無しさん
NGNGよかったと思う。
VCLコンポ自作の場合、その自作自体がプロジェクトにはならず
ソースが単体で存在するだけだよね。
あれやめて、VCLもProjectにするようにして、
VCみたいに依存関係を設定できるようにする、と、
きっと開発デバッグとかも楽になると思われ。
トレース実行が依存関係に基づいて隣のProjまで
飛んで行ってくれたりするし。
で、依存関係といっても一対多じゃなくて多対多にすると
幸せになると思う。コンポProjとアプリProjが
互いに複数どうしの依存関係を持つっていう。
幸いにしてコンポとアプリの依存関係は一方通行だから、
アプリ側を関係の終端とすることで、循環依存とかの問題は
解決できるんじゃないかと。
0862デフォルトの名無しさん
NGNGなんかいろんな事をぶちまけているので主張が読みとりづらいが
>トレース実行が依存関係に基づいて隣のProjまで飛んで行ってくれたりするし。
これ、当たり前にできるでしょ?
コンポーネントもパッケージという形のプロジェクトなんだが。
0863デフォルトの名無しさん
NGNGつーわけで、Borland様お頼み申し上げます。
C#がネェティブコンパイルできたらそっちにうつっちゃうよぉー。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGあそこはただの人工無能搭載FAQ検索エンジンだよ
知らなかった?
0866デフォルトの名無しさん
NGNG確かに
0867デフォルトの名無しさん
NGNG入れたり抜いたりはグローバルな動きをしますが、どのパッケージを使うか
はプロジェクト単位でコントロールできますから、たとえば Project1 は
Pack1.bpl の TButtonX をつかい Project2 は Pack2.bpl の TButtonX を
使う事ができます。
ってことではだめ?
0868デフォルトの名無しさん
NGNG>C#がネェティブコンパイルできたらそっちにうつっちゃうよぉー。
そのころにゃ CLR で動く Delphi があるんだろうよ。
0869デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=992504712
のスレで、こんなこと言っているヤツいますぜダンナぁ。
>
>39 デフォルトの名無しさん 2001/06/17(日) 16:18
>誰かDelphiのみで喰ってる人はいないの?
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNGVCかBCBをやったほうがいいのでしょうか?
0872デフォルトの名無しさん
NGNGせめて検索掛けようね?
お馬鹿さんじゃないんだからさ。
0873デフォルトの名無しさん
NGNGよくこの話題でるけどさ、ソースどこよ?(w
0874名無しのDelphi使い
NGNGhttp://216.239.35.100/search?hl=ja&safe=off&q=OpenToolsAPI&lr=lang_ja
日本語のページからOpenToolsAPIを検索しました。
約12件中1 - 10件目 ・検索にかかった時間0.04秒
http://216.239.35.100/search?hl=ja&safe=off&q=OpenToolsAPI&lr=
全言語のページからOpenToolsAPIを検索しました。
約157件中1 - 10件目 ・検索にかかった時間0.29秒
とりあえず急ぎの用事が目の前にあるのでこれにて失礼
0875デフォルトの名無しさん
NGNGうちの会社の仕事は半分くらいはDelオンリーだから
自分がそのチームに回されたら、たっぷり向こう1年くらいは
「Delのみで飯食う」状態になるね。俺も何度もそのプロジェクト
(のサブプロジェクト)に居たんで、該当する。
ちなみにそれ以外はUnixが多いかな。Linux+Kylixの出番が
来るかどうかはかなり怪しいけど、CUIも嫌いじゃないから、いいや。
むしろGUIでもVBやらされる(以前はそういう仕事もあった)よりは
ずっとマシだし。
個人的な好みだが、Delのみで飯食うとなると、やっぱり
しばらく後には自力でComponent書くくらいになって欲しいな。
BOCだかなんだかにお世話にならずに済むわけだわな。
安上がりだしスキルも上がるし。いいことづくめ。わーい。
0876デフォルトの名無しさん
NGNGちょっと気になるんですが…
Del厨房なリアル工房なので愚問とは思いつつ質問
させてください。
コンポーネント作るのにも難易度あると思うんだけど、
どの程度まれ作れれば大丈夫なのでしょうか?
目的にマッチしたメッセージハンドラとかを作って
プロパティ化、イベント化する程度でも大丈夫で
しょうか?
0877デフォルトの名無しさん
NGNGそういうスレは放っておくのが吉。
0878デフォルトの名無しさん
NGNGその程度の事はマニュアルに載っているのだけれども。
0879デフォルトの名無しさん
NGNG>うちの会社の仕事は半分くらいはDelオンリーだから
ほんとにそんな会社があるの?
あ、「半分くらいはDelオンリー」がポイントかな?
社員二人とか?
0880デフォルトの名無しさん
NGNGDelphi を貶めることが生き甲斐ですか?
0881デフォルトの名無しさん
NGNGそういう発言も放っておくのが吉。
0882turbo type D
NGNG相手にしない方がいいんじゃない?
>>876
とりあえず、そこまでわかれば
人の作ったコンポのソースが
読めるようになるので、よろしいのじゃないでしょうか。
マニアルには載ってるけどコンポ作成が出来ない
Del使いってのも沢山いらっしゃるでしょう。実際。
>>867
ユーザーフレンドリーではないような気が....
0883デフォルトの名無しさん
NGNGVCかdelphiをやろうか迷っているのですが
0884名無しさん
NGNGVisual C++も、終了します。
0885デフォルトの名無しさん
NGNGがいしゅつです(w
0886turbo type D
NGNGそういう話は聞いたことがありません。
とでも答えたらいいんでしょうか?
0887デフォルトの名無しさん
NGNG>>882氏
なるほど、ありがとうございます。
人のソースを読むことももっと勉強して置いて
損はなさそうですね。
もっと精進しておきます。
>>883の様な愚問(wが多いので、
次のスレを建てるときは>>1か>>2あたりに
FAQとして入れておくのはどうでしょう?
0888デフォルトの名無しさん
NGNGVCかdelphiをやろうか迷っているのですが
0889デフォルトの名無しさん
NGNGあなたの会話の中味はこれ以上バージョンアップされないという話は本当なのでしょうか?
0890883
NGNGただ知りたかっただけなのに.....
0891デフォルトの名無しさん
NGNGみんな親切です。
マジレスしちまった(ぉ
0892デフォルトの名無しさん
NGNG>ユーザーフレンドリーではないような気が....
文章で書くとめんどくさそうに聞こえるけど実際にやってみればわかるよ。
デフォルトのプロジェクトはほんとに最低限のコンポーネントしか
現れないようにして、必要に応じて追加していけばらくちん。
プロジェクトごとにユニット検索パスも変更できるし。
そりゃ、同名のユニット、パッケージをまぜこぜにするのはつらいけど
現状で不満はないが。
0893デフォルトの名無しさん
NGNG話を変えて,ショートカットキーで判らんことがあるんだけど,
`Ctrl+/' はショートカットキーとして無効なんすかね.
TMenuItem.ShortCut に割り当てても OnClick が呼ばれないんすよ.
これは Windows と,Delphi のどちらの仕様なんでしょう.
話題の,OpenToolsAPI でアンドゥに割り当てたかったんですけどね.
0896デフォルトの名無しさん
NGNGできるけど?すっぴんのフォームでやってみな。
0897D使いβ
NGNG俺もスラッシュだけは出来ない。他にセミコロンも駄目だった。
カンマやピリオドでは出来た。
キーボードが旧PC98のせいかなあ?
0898デフォルトの名無しさん
NGNGNEC98 キーボードでもできるけど?
----
Form に HotKey1, Memo1, Menu アイテムとして N1 をおいて
HotKey の OnChange に
N11.ShortCut := HotKey1.HotKey
MenuItem の OnClick に
Memo1.Lines.Add('test')
とやって、実行時に CTRL-/ を指定してみたら?
それでうまくいったら、プログラムに何かある。
それもだめならきっと OS に。
0899D使いβ
NGNGそのせいかあ?
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG自宅のDOSV Win95ではうまく行った???
あ、900行っちゃったね。次はしばらく相談室1本で行く?
0902デフォルトの名無しさん
NGNGボーランドも、ニュースサーバーなんかやめて、2チャンネル風のユーザーインターフェースを
持った Web 会議室を作ると面白いかな?
どうせ、匿名性という点ではメール、ニュースも似たもんだし。
0903880
NGNG最後の手段かと RegisterHotKey で試してみた.
procedure TForm1.FormCreate(Sender: TObject);
var
key: Word;
shift: TShiftState;
begin
ShortCutToKey(TextToShortCut('Ctrl+/'), key, shift);
if not RegisterHotKey(Handle, $00FF, MOD_CONTROL, key) then
ShowMessage('fail');
end;
procedure TForm1.Hotkey(var H: TWMHotkey); (* message WM_HOTKEY; *)
begin
ShowMessage('on Hotkey');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle, $00FF);
end;
これも駄目.キーボードか,Windows の問題かな?
一応環境,
DOS/V
OS WinNT 4.0
Keyboard PFU HHK Lite
0904デフォルトの名無しさん
NGNG作っちゃえばいいじゃん。
monazilla掲示板みたいなのただでできるんでしょ。
さびれたって誰も損しないだろうし。
0905turbo type D
NGNG2chで他の言語とも気軽に交流できる所がよいと思われ。
気軽過ぎてVBと争う事もしばしば?
あとーーー
Dマガの中村氏、髪伸ばしすぎだよ。
記事はinterfaceについてわかり易くてよいです。
ただinterface、っつう仕様が物事を複雑化しようと
するような方向であまり好きじゃない。
駄文だ............ウツ....
0906D使い
NGNGDelphi/Kylix Tech 2nd
http://piza.2ch.net/test/read.cgi?bbs=tech&key=993005709
タイトルが長くなっちゃいましたが。
レス数が900を超えています。1000を超えると表示できなくなるよ。