1 :
名無しさん@お腹いっぱい。 :
2000/10/11(水) 19:52 ちょっと内容が高度になりすぎてしまうTechスレじゃ質問しずらい とかはいりにくい人の為に DelphiのTips Q&A はこちら
2 :
1 :2000/10/11(水) 19:54
最近便利思った事と、ひっかかった事 ○TIPS1 コンポーネントを DBEditからDBComboBoxみたいに 後から変更したい。 ALT+F12を押して直接プロパテイを object DBEdit1: TDBComboBox のように書換えてしまいます。 再度 ALT+F12を押した後 保存しようとすれば、ソースコードも修正してくれます ○TIPS2 TIPS1のようにしたくて ALT+F12を押したが 「リンクされたモジュールで使われています」と怒られた場合、 TTableとかを他のユニットで使われている場合が多いです。 そんな事が起きないようにTTableとかは データモジュールユニットを作って そっちで用意するようにしましょう
3 :
転載 :2000/10/12(木) 14:21
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/12(木) 13:49 Delphiの仕様書自動作成ツールを探してます。 VBのは見るんですけど。 誰か知りませんか?
4 :
>3 :2000/10/12(木) 14:22
5 :
>4 :2000/10/12(木) 14:32
6 :
効率コード求む :2000/10/19(木) 15:30
遅いなあと吐かれたコードを見たら、当然文字加算関数が呼ばれていた。 CスタイルのPCHARを使うべきなのか? あるいは? /////////////////////////////////////////////// // エスケープシーケンスにエンコードをする function EncodeStr(s:string):string; var i:integer; begin Result:=''; i:=1; while i<=length(s) do begin case s[i]of #0..#8,#10..#12,#14..#31,'"','''',',': Result:=Result+'\x'+IntToHex(ord(s[i]),2); #9: Result:=Result+'\t'; #13: begin if (i+1 <= length(s)) and (s[i+1]=#10) then begin inc(i); Result:=Result+'\n'; end else begin Result:=Result+'\x'+IntToHex(ord(s[i]),2); end end; '\': Result:=Result+'\\'; else begin Result:=Result+s[i]; end; end; inc(i); end; end; // デコードをする function DecodeStr(s:string):string; var i:integer; begin Result:=''; i:=1; while i<=length(s) do begin if s[i]='\' then begin inc(i); case s[i] of 'x': try Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ; inc(i,2); except end; 'b': Result:=Result+#$08; 'a': Result:=Result+#$07; 'f': Result:=Result+#$0C; 'r': Result:=Result+#$0D; 't': Result:=Result+#$09; 'v': Result:=Result+#$0B; 'n': Result:=Result+#13+#10; else Result:=Result+s[i]; end; inc(i); end else begin Result:=Result+s[i]; inc(i); end; end; end;
7 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 16:09
一般論は別にして、このコードが遅いのは、結果の文字列の長さが定まらないことが 本質的原因。PChar にしてポインタ操作にしたとしても、文字列終端のポインタを 管理しないと、文字列末尾に文字を追加するたびに strlen 相当の操作を 行わなければならずコストは高い。文字列終端ポインタを使えば追加に対する コストは極端に低くなるけど、直感的ではないのでバグを誘発する 場合あり。(提示された程度のコードなら間違いはないと思うけど) それより、ポインタ操作に切り替えた場合は、結果文字列の長さあふれを どうやって回避するか。十分大きめに確保するか、あふれたら再確保するか。 メモリ管理は string に任し、文字型の配列とみなして、文字列終端インデックス を持たせるというのが、個人的なお勧め。クラスにしてしまえば 取り扱いも簡単。
8 :
効率コード求む :2000/10/19(木) 16:33
コメントありがとうございます
>>7 エンコードは最悪("の連続)でも元の4倍になるだけなので
渡された文字列からヒープに領域を確保し、PCHARで処理すれば
という感じで考えていました。
ただ格好悪いかなと・・・・
9 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 17:53
だから、setlength( Result, length(s) * 4 ) ってやって Result[ind] := xxx; って書けば、型チェックも効くし、実行時範囲チェックもできる。
10 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 22:57
毛ほども変わらんかもしれないが、IntToHexを使うよりCharのテーブル をつくったほうが速い。とにかくstring生成を控えるべき。
11 :
まとめ :2000/10/20(金) 01:27
・stringの生成を抑える・・・最重要 →結果の保持にstringの加算を使わず、Char型の配列と添え字にする。 ポインタなら(変数が減らせるので)なお良かも。 ・IntToHexの代わりに'012..9ABCDEF'のテーブルを利用。 ・条件分岐をする時、先に例外をはねる(' 'か'0'以下を別扱い)。 →非常にクリティカルなら、ctypeのように例外を全て配列参照にする手もある。 が、メモリアクセスが発生するので効果の程は不明。
12 :
効率コード求む :2000/10/20(金) 15:59
>>9 ありがとうございます 了解しました。その線で書いてみます
データベースファイルをCSVに変換して保存する時とかに使いそ
うなコードなのでみなさん同じようなコードをお持ちかと思ったのですが・・・・
なんだ。コードが欲しかっただけか。
14 :
名無しさん@お腹いっぱい。 :2000/10/21(土) 08:29
Delphi用のDecompilerどこかにないでしょうか? ご存知なら場所を教えてもらえると有り難いです。
16 :
名無しさん@お腹いっぱい。 :2000/10/22(日) 01:56
17 :
名無しさん@お腹いっぱい。 :2000/10/22(日) 02:08
15>16 納得できる説明だったら教えてやるよ。
18 :
14>17 :2000/10/22(日) 02:23
それでは恥を忍んでお話しします。 実は最近Delphiを始めたんですが、田舎住まいなため 解説本などが殆ど手に入らないんですよ。 それでもHelpや付属マニュアルと格闘して頑張っては いるんですが、実際的な手法などの情報が全くない所為か はたまた私のおつむの出来が悪すぎるのか、いまいち要領 を得ません。 で、他の人はどういうコーディングをしてるのか具体的に 見てみたかったんです。ダメでしょうか?
19 :
名無しさん@お腹いっぱい。 :2000/10/22(日) 02:30
>>18 Delphiで書かれたソフトでオープンソースのものもたくさんあるでしょ.
Wyvernとか,Apolloとか.他にもあるかな.
20 :
14 :2000/10/22(日) 02:39
>>19 あ、ありがとう。
「Delphi ソース」などで検索してもめぼしいのが
ヒットしなかったのでたいへん助かります。
さっそく探してみます。感謝です。
本だって、本気で欲しければ通販等で簡単に手に入れられると思ふ
22 :
14 :2000/10/22(日) 02:49
>>21 レスありがとうございます。
初心者にお勧めというとどんなのがありますか?
実は、アスキー出版局の「Delphi5オフィシャルコースウェア」
というのを取り寄せで買ってみたもののマニュアルと殆ど変わらない
内容だったので、それ以来注文で買うのを躊躇していたんです。
23 :
名無しさん@お腹いっぱい。 :2000/10/22(日) 02:55
>>14 一応、付属のサンプルは一通り目を通したんだよね?
24 :
14 :2000/10/22(日) 03:11
>>23 はい(C:\Program Files\Borland\Delphi5\Demosにあるやつですよね?)
というか今も頑張ってやってるところです。
でも、初心者には敷居の高いものも結構ありますよね。
ActiveXとかThreadsとかデータベース関連のものとかSockとか・・・
一通りコンパイルして動作とソースを見比べる程度のことは
したんですが、でもデモなのでエラー処理も省かれてるようですし。
だから最初は簡単なアウトラインプロセッサのようなもので一通り
どうやって出来ているのか見てみたかったんです。
で、逆コンパイラがあればいいな、と・・・。
楽しようなんて以ての外、と言われれば、それまでですが。
25 :
14 :2000/10/22(日) 05:27
ありがとうございました。 幾つか(というかいっぱい)見つけたので これから試してみます。
26 :
効率コード求む :2000/10/24(火) 14:58
こうやっておくと結構便利ですが type SQLExecProc =procedure(Fields:TFields ; var count:Integer)of object; function SQLExec(const sqls:string;Proc:SQLExecProc ):longint; var Query1 : TQuery; begin Result:=0; Query1 :=TQuery.Create(TMethod(Proc).Data); //何かの為にオーナを作っておく with Query1 do try DatabaseName:= MyDatabaseName ; SQL . Clear; SQL . text:=sqls; Open; first;//頭にカーソルを持っていって while not eof do begin Proc(fields,Result); next; end; finally close; free; end; end; これを使うために今、formのメソッドでやってもいいのですが、 type ESQLStr=class(TStringList) public procedure SQLProc(fields:TFields ; var count:Integer); end; とクラスを臨時に作って procedure ESQLStr.SQLProc(fields:TFields ; var count:Integer); begin append( format('%5.4d=%12s',[ fields.Fields[0].asInteger, fields.Fields[1].asString]) ); inc(count); end; こんなふうにやっています。 その都度作りたいスタイルが違うので、SQLProcをvirtualにして継承しても そんなにメリットが無いと思ったからです。 しかしドロップダウンリストのItemsのようにすでにあるTStringsに対して 同じようなやり方をしたいとしたらどうやればいいのでしょう?
27 :
効率コード求む :2000/10/24(火) 16:33
型可変オープン配列パラメータにVariant配列を渡して Format('%d,%s',varArray);と書けるなら一番簡単なんですが・・・ 作るしかないのかな・・・・
28 :
効率コード求む :2000/10/24(火) 22:36
という事で作りました。なんとか動きます。でも効率悪そう。うーん function VarFormat(const formats:string;const dt:array of Variant):string; var s,w :string; var i,n :integer; var arg :array of TVarRec; var Ext :array of Extended; var Cur :array of Currency; var str :array of AnsiString; begin s:=formats; w:=''; while s<>'' do begin n:=AnsiPos('%',s);//書式文字を探して if n<1 then break; for i:=n+1 to length(s) do begin if isDelimiter('duefgnmpsxDUEFGNMPSX',s,i) then begin w := w + s[i]; delete(s,1,i);//それまでを消して break; end; end; end; LowerCase(w); setLength(arg,length(w)); setLength(Ext,length(w)); setLength(Cur,length(w)); setLength(str,length(w)); for i:=0 to length(w)-1 do with arg[i] do case w[i+1] of 'd','u','x','p':begin VType:=vtInteger ;VInteger :=dt[i]; end; 'e','f','g','n':begin VType:=vtExtended;Ext[i]:=dt[i];VExtended:=@Ext[i]; end; 'm': begin VType:=vtCurrency;Cur[i]:=dt[i];VCurrency:=@Cur[i]; end; 's': begin VType:=vtAnsiString; str[i]:=VarToStr(dt[i]); VAnsiString:=Pointer(str[i]); end; end; FmtStr( Result , formats , arg); end;
Delphi-ML に流せよ。 borland.jp.public.delphi.preopen でもおもしろいかも。
30 :
>28 :2000/10/25(水) 08:50
別にどうせDBの為なんだからそれくらいのオーバヘッドいいんじゃないの? 3つも配列作らなくても同時には一つしか使わないんだから、共用体作って 1つの配列にまとめた方がいいかも それから金銭型と浮動小数点型は中身同じだから用意する配列は一つでいいと思う
31 :
効率コード求む :2000/10/26(木) 17:53
フォントとかブラシを一時的に変更して描画する時、保存する必要があるので
こんなふうなコードを考えました
with XX.Canvas do
with TBrush.Create do {一時的に作ったオブジェクトに}
try
Assign(Brush); {ここで保存して}
Brush.Handle:=GetStockObject(HOLLOW_BRUSH); {使いたいブラシを設定して}
・・・ブラシを使う処理・・・
Brush.Handle:=Handle; { ここで復元 }
except free; end;
しかし元に戻す時に Handleを使わなきゃいけないのはなんだかなあなのですが
うまい方法はあるでしょうか?
>>29 メーリングリストというのはよく判っていません。
というか自分のメールアドレスは携帯なので・・・
>>30 コメントありがとうございます。共用体というのを勉強してみます
32 :
名無しさん@お腹いっぱい。 :2000/10/26(木) 19:10
>>31 >というか自分のメールアドレスは携帯なので・・・
関係ない。
といいたいところだが、受け側に回ることを考えると厳しいかもしれない。
33 :
某ランド>31 :2000/10/26(木) 21:58
多少の改善でよければ、こんな感じの保存するだけのクラスを作る type TSaveGraphicsObject=Class(TObject) private TargetObj:TGraphicsObject; SaveObj:TGraphicsObject; public constructor Create(v:TGraphicsObject); destructor Destroy; override; end; constructor TSaveGraphicsObject.Create(v:TGraphicsObject); begin if v is TFont then SaveObj:=TFont. Create else if v is TPen then SaveObj:=TPen. Create else if v is TBrush then SaveObj:=TBrush.Create else SaveObj:=TGraphicsObject.Create; SaveObj.Assign(v); TargetObj:=v; end; destructor TSaveGraphicsObject.Destroy; begin TargetObj.Assign(SaveObj); SaveObj.Free; Inherited; end; そうすると、 with XX.Canvas do with TSaveGraphicsObject.Create(Brush) do {一時的に作ったオブジェクトに} try Brush.Handle:=GetStockObject(HOLLOW_BRUSH); {使いたいブラシを設定して} ・・・ブラシを使う処理・・・ except free; end; と保存と復元処理を隠せられる。 さらにやるなら interface すれば自動的にデストラクトされるけど 効率的処理からは離れるかもしれないね。
34 :
age :2000/11/05(日) 00:01
age
35 :
効率コード求む :2000/11/05(日) 08:53
>>33 ありがとうございます。interfaceの勉強をしています
36 :
名無しさん@お腹いっぱい。 :2000/11/07(火) 19:08
ゲームを作るためにDelphi購入を考えています。 Learning版だとこういう面で不便になってくる(Pro版では問題なくできる)ということ があったら教えてください。 Learning版とPro版の機能一覧が↓に乗っていますが、具体的にどう影響するのかが わからないので・・ www.inprise.co.jp/delphi/d5sku.html
Stdで何が一番不便って言うとVCLのソースが無いことか 良く知っている人ならCustom何とかまで戻って作ればいいけど それじゃこのコンポーネントちょっといじりたいって時 初心者には手が出ない
38 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 00:15
故あってデルファイ使うことになりました。 新規作成でフォームを作ると問答無用で Form1とかいう名前になります。 まあいいか、と、そのフォームのNameプロパティを FooFormとか自分の望む名前にしました。 「すべて保存」メニューを実行させると、そのフォームクラスの ソースが"Unit1.pas"などという名前でセーブされそうだったので セーブダイアログ(と言うのかどうか)に手動でタイプして "FooForm.pas"という名前でセーブしてもらおうとすると、 「すでにプロジェクトにある」とか言ってセーブさせてくれません。 「じゃあ」と思って、いったんそのフォームをプロジェクトから 削除して、再び新規作成したフォームをプロジェクトマネージャで 「名前を付けて保存」で"FooForm.pas"に保存しました。 このままでは当然クラス名やUnit名は変わらない(Form1のまま)ので フォームのNameプロパティを変えようとすると「FooFormは既にプロ ジェクトにある」とか言って変えさせてくれません。 なんとかクラス名とユニット名とファイル名を揃えたいんですが、 どうすれば良いのでしょう。 ---- FooForm.pas --------- unit FooForm; type FooForm = class(TForm) : : -------------------------- てな具合に。
俺が疑問に思うのはインストールすると VCLのソースがついてくる体験版の存在。
>>38 ユニット名とNameが同じだからだよ(糞
41 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 03:11
42 :
>38 :2000/11/08(水) 05:10
フォーム名(クラス名)とユニット名は同じ名前にはできません。 例えばFooUnitとFooFormのようにしてください。
43 :
>38 :2000/11/08(水) 10:27
同じ名前だと ユニット名.XX とした時と オブジェクト名.XXとした時にどう区別する? というかユニットもひとつのオブジェクトと考えた方がいいかも
44 :
>43 :2000/11/08(水) 12:36
>ユニットもひとつのオブジェクトと考えた方がいいかも オブジェクトというよりも名前空間(namespace)に 近いかもしれませんね
45 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 16:28
Windows2000上でntbackupみたく使用中のファイルをコピーするには どうしたらいいでしょうか?
46 :
名無しさんi486 :2000/11/08(水) 17:56
38はDelphiをなめてるので ねたです。
47 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 01:29
38です。 済みません、確かに皆様の「アホでぇこいつ」を呼び起こすような ことだったようで、言われる通りにUnitをFooFrmにクラス名をTFooFormに してあっさり解決しました。 でも嘘話という意味でのネタではないんです、ほんとに煮詰まってたのです。 ありがとうございました。 ところで、exceptとfinallyって同時に使えないんでしょうか。 Java感覚で try except finally end って書いたら、「(finallyのとこに)endが無いぞ」って怒られました。 「文」ということになっているせい?
48 :
>47 :2000/11/10(金) 01:37
独学(ですよね?)の最大の弱点は、人に聞けば5分で解決することを 自力で解決するまで先に進めないことですね。 try except finally endはサポートされていません。 現状では以下のように書くしかないですね。 try try ... except ... end finally ... end
VB.NETでは Try Catch Finally End Try って書き方するらしいぞ。 (ヘジルスバーグがVBにしてやるのはここまでで 後はC#に注力してるよーだが。)
50 :
名無しさん@お腹いっぱい。 :2000/12/08(金) 19:30
複数のバージョンのDelphiをインストールした時 DPRファイルのところでマウスの右ボタンクリックで 選択できるようにした INFファイルの書き方 をどこか で見かけたのですが、・・・・・すみません教えて下さい
そもそもDPRファイルから起動すると おかしくナラねえ?俺だけか。
ところで、山ほどDelphi関係スレがたちあがってるんだが Delphi使いってそんなに多いのか?
53 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 05:16
一応Delphi使い、というより厨房ですが・・。 で、ついでに質問ですがDelphiではなぜ呼び出してるところより 上にその関数がないといけないのでしょうか? それとコンテナクラスはありますか?ヘルプみても見つからないです。 TurboC++のTVectorとかTQueueみたいなのが使いたいです。
54 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 05:54
>52 そんなに多くないです。 ほとんどのスレは、一部のキティが考えも無く立てているだけでしょう。 仕事でもなかなか使えないし、プラットフォームも限定されるし。 あの環境で、gccみたいに中間コードを共通化して、上位の言語はユーザが 自由に選べる(c/c++/c#/oo-pascal/basic/asm/etc...)とかならもっと 普及していると思うんですが。(エディタは直して欲しいけど) 移植チーム側も、統合環境(GUI)とobjコードのnative実装だけで済んで移植も 簡単なのに。 そうしないのは、やっぱりコンパイルスピード落としたくないから?
55 :
名無しさん@お腹いっぱい。 :2000/12/09(土) 06:04
上位の言語部分と、下位のnative部分を別売りにするとかして 商売にならないかな?例えば、 Delphiセットの組み合わせ(上位oo-pascal 15,000円、下位win32 15,000円 -> 30,000円 C++builderセットの組み合わせ(上位c/c+++ 15,000円、下位win32 15,000円 -> 30,000円 両方購入する場合は 45,000円で済む。 とか。(わ
56 :
>53 :2000/12/09(土) 10:31
>ではなぜ呼び出してるところより 上にその関数がないといけないのでしょうか? これはC++でも同じですね。Cでも上に無いとマズイ事が多いです 単純にコンパイラが上から順にコンパイルしてるからでしょう。 ただ、実体まで書かなくても先に宣言しておけばいいです。 コンテナクラスはTListを応用します。 どうすればいいかはVCLを覗くといいでしょう。 ただ、高速なアルゴリズムが必要な場合は自分でアルゴリズムを実装する必要があります
57 :
>50 :2000/12/09(土) 10:40
とりあえずregeditでDelphiProjectを検索してShellに追加したら 解決すると思うけど? もし何度もインストールするような状況 だったら、レジストリ書出 で*.REGファイルを作っておけば これをインストールすればとりあえず可能。 [Software\Borland\Delphi]の情報からメニューが出るような 小さなプログラム作っておいてこれを dprに関連付ける方がスマートかな?
アヒャヒャ(゚∀゚)y─┛~~ まずいことが多い、つーか関数のプロトタイプ型宣言だろ。>56 教えるにしてもちゃんと調べとけ。
おや 良く単語をご存知で。 プロトタイプ宣言しなくてもCなら大丈夫な場合もありますよ int型サイズ=ポインタ型な環境なら面倒でやらない事も・・・誉められた事じゃないけど
60 :
D :2000/12/09(土) 15:36
forward宣言すればすむこと。 前方シャンショーのおかげで バカっぱやいコンパイラ速度を実現してるんじゃないの?
61 :
53 :2000/12/10(日) 00:02
>56,58,59,60 なるほど、プロトタイプ宣言(forward宣言?)ですか。 そういやDelphiではしたことなかったです。早速調べてみます。 コンテナクラスもTListってやつで実現できるんですね。 ありがとうございました。 正直マジレスもらえると思ってなかったので目茶苦茶嬉しいです。
62 :
他にもあるよ :2000/12/10(日) 00:09
TClassList TClassList は,クラスのリストを管理します。 TComponentList TComponentList は,コンポーネントを解放する際にそれ自体を更新してコンポーネントのリストを維持します。 TObjectList TObjectList は,(所有している)オブジェクトのリストを管理します。 TObjectQueue TObjectQueue は,オブジェクトの先入れ先出しリストを管理します。 TObjectStack TObjectStack は,オブジェクトの後入れ先出しリストを管理します。 TOrderedList TOrderedList は,シリアル順にアクセスしなければならないポインタの配列を管理します。 TQueue TQueue はポインタの先入れ先出し配列を保持します。 TStack TStack は,ポインタの後入れ先出し配列を保持します。
63 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 10:57
type hoge = record なんとか end; type phoge=^hoge; procedure func1( ph:phoge); と定義された関数の別名 procedure func2(var h:hoge); を作りたいのですが、巧い方法はありますか? procedure func2(var h:hoge);absolute func1; はダメみたいです
64 :
>63 :2000/12/12(火) 11:30
procedure func2(var h:hoge); begin func1(@h);end; は当然お気にめさないんだろなあ・・・・inline指令があればいいんだろけど あとは関数ポインタに代入する方法だけど、これもオーバーヘッドがあるからなあ
65 :
63 :2000/12/12(火) 18:26
>>64 Cだとこういうのはリンク前に幾らでも弄れるのでDelphiの
absoluteを使って簡単に出来るのかと・・・・
まあ出来なくても ご指摘通りそんなに困るわけじゃないけど・・
最近の Delphiマガジンの連載記事は面白くない気がします。 後期のD++に似てますが気のせいですか?
67 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 22:10
なんでvol8なん?
69 :
知りたい人。 :2000/12/17(日) 04:09
エクスプローラが死んだときに消えちゃうアイコン達を、 別のソフトで復活させるってのは出来ます? つまるところアイコン復活専用のソフトを作りたいんですが。 「常駐して状態を保存」とかじゃなくて非常駐で。
板違い。>69
71 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 04:41
>70バカ? 69は作りたいって言ってるだろ で、出来るかどうかっていうと非常に難しいんじゃないかな。 と俺は思フ
69には作れそうにないと思うが。(藁
73 :
名無しさん@お腹いっぱい。 :2000/12/17(日) 06:34
72には作れるんですか? UPキボーン
74 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 10:27
Delphiで使えるXMLのPaserってあります? 情報ほとんどみつかんないんすけど。
75 :
>74 :2000/12/18(月) 10:38
>74 エンタ版買え。
77 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 21:11
78 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 21:34
79 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 12:18
初級な質問なんですが、 '100'という文字列から100だけを抽出する方法を教えていただきたいのです。 Pos('''', '100') > 0 do '100'[Pos('''', '100')] := ''; では、だめなのですが、よい方法があるでしょうか? Pos('''', '100') > 0 do '100'[Pos('''', '100')] := ' '; これならできるんですが、スペースは入れたくないのです。
AnsiExtractQuotedStr 関数
>>80 ありがとうございます。
しかし、ヘルプを読んでも使い方がわからないっす。
申し訳ないのですが、例をのせていただけたらと思うのですが。
すみません。
82 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 13:40
すみません。自力でできました。
本当ありがとうございました。
>>80
83 :
名無しさん@お腹いっぱい。 :2000/12/26(火) 19:31
>>79 不思議なそのコードは象徴的な意味か?
とりあえず
delete(s,Pos('''', s) ,1);
84 :
79 :2000/12/26(火) 21:01
その方法もあるんですね。
初心者なもので色々な方法を知ったのでうれしいです。
ありがとー
>>83 79のコードはヘルプでpos関数というのを見つけて使ったので、僕にとっては不思議でもなんでも・・
ありがとうございました。
85 :
名無しさん@お腹いっぱい。 :2000/12/29(金) 08:33
まとめてage
87 :
名無しさソ :2000/12/30(土) 04:48
会社で、Delphiのことを”デルファイ”という人と、”デルフィ”という人がいますが、どっちが本当ですか? 教えてください。僕はデルファイと思ってました。
88 :
デフォルトの名無しさん :2000/12/30(土) 05:15
90 :
名無しさん@お腹いっぱい。 :2000/12/30(土) 07:59
前にボーランドのビルで行われたDelphiの説明会にいったら、 OHPのスライドでDelphiの説明をしてくれた。 しかしDelphiではなく、 Delphと全て書かれていた。 俺たちは笑いをこらえて、デルフって新製品ですかね?と 質問してあげたよ。
91 :
>>87 :2000/12/30(土) 14:14
日本語読みならデルポイ。web検索してみ。
92 :
デフォルトの名無しさん :2001/01/01(月) 22:44
>>86 だから MS XML Parser 使えってんだ
93 :
デフォルトの名無しさん :2001/01/01(月) 22:45
>>94 環境依存なんて・・・ちっちぇーこと気にすんなよ!
第一 MSXML + Delphi だと SAXがうまくいかん。
96 :
デフォルトの名無しさん :2001/01/08(月) 01:20
デルファイ5でアプリを作っているのですが、 ツールバーのListプロパティとShowCaptionプロパティをTrueに すると、Captionが無いボタンのサイズがスペース一個分だけ大きくなります。 VCLのソースを見たら文字列長が0の時はスペースを入れているのですが、 なぜそうやっているのかがわからないです。 このスペースって取ることは出来ないですか?それともコモンコントロール のバージョンによって違うのでしょうか? 当方環境 Windows2000pro Delphi5 Update1
97 :
デフォルトの名無しさん :2001/01/08(月) 09:59
Delphiでコンテキストメニュー(シェルメニュー)に独自メニュー 追加する方法教えれ。Delphiのシェル本買ったが、いまいち 分からんかった。サンプルコードとか公開してるとこ知りません か?
Delphi付属のDEMOをミロミロミロー
コンテキストメニューってポップアップメニューのこと?
エクスプローラノナー。
102 :
デフォルトの名無しさん :2001/02/03(土) 01:04
TPrinter(.Canvas.Font)の解像度ってScreenの解像度と同じなのかな やっぱGetDeviceCapsなのか
DeviceCapabilitiesを使おう
なんだ Printer.Canvas.Handleが有効になってなかったのか 結局CreateIC使ったけど '. LPT1:' 等が一々邪魔だね これってWindowsじゃなくてDelphiが付けてんのか
106 :
デフォルトの名無しさん :2001/02/17(土) 07:56
monazillaスレから D4でD5のテキスト形式のフォームを開く方法は 適当に新規にフォームを作り そこにソースとフォームをコピペします フォームはマウス右クリックかALT+F12で開いてコピペね それを保存してリネームすればOK
107 :
デフォルトの名無しさん :2001/02/17(土) 09:09
>>106 その手があったかー。俺はObjectTextToResource関数を使って
ゴリゴリ変換していたよ…
108 :
デフォルトの名無しさん :2001/02/17(土) 09:44
109 :
デフォルトの名無しさん :2001/02/17(土) 11:15
>>108 ObjectTextToResourceはVCLの関数。
110 :
デフォルトの名無しさん :2001/02/18(日) 11:07
111 :
デフォルトの名無しさん :2001/02/19(月) 06:56
戸堕くんの回答は毎度まとはずれで インターネットのゴミなので追放していただきたい。
外しているのでゴメンなさい。m(_~_)m
113 :
デフォルトの名無しさん :2001/02/21(水) 10:14
[Delphi:55078] 戸堕の投稿はフィルタでダウンロード拒否すべし
virtualとdynamicはどーちがうんですか? また、それぞれどう使い分けるべきなんですか? おしえてくらはい。
スピード優先かファイルサイズ優先か。 使い分けは適当。 全部virtualでいいんじゃないか? Delphiオブジェクト指向プログラミング とかいう本に載ってるよ。
116 :
ななし :2001/02/24(土) 16:59
Quadruple の DirectPlay での質問です。 チュートリアルのチャットに *画面をクリックするとある変数が増える。 *同時にその変数を発言として相手や自分に送信する ということ付けたそうとしました。 ところが相手の画面では別の文字(「・」とか)が出てしまいます。 ( player1 > ・ ) ( player1 > ・ になってしまう ) 自分の画面ではクリックするたびに増えた変数が表示されています ( player1 > 1 ) ( player1 > 2 のような感じで。) 自分で足した TForm1.ChatMemoMouseDown内の DDPD1.Send(DPID_ALLPLAYERS, @kazukazu,Sizeof(kazukazu)); があやしい気がするのですが…。 どなたかご教授お願いします。
117 :
114 :2001/02/24(土) 22:37
>>115 |スピード優先かファイルサイズ優先か。
|使い分けは適当。
これってプログラマが指定できてうれしいものなんですかね。
言語として明確な指針持っていないことの表れなだけであって、
プログラマに面倒な判断を押しつけてるだけに思えます。
この仕様は、C++と同じように実装指向であり、ほとんど必要性の
ないものだと思います。こういう言語仕様に疑問を持つ人というのは
いないのでしょうか?
俺はvirtual、1択だな。
ところでいつの間にかInpriseからBorlandに戻ってるな
120 :
デフォルトの名無しさん :2001/02/25(日) 15:41
>>117 いないよ。
どっちかに限定されているほうが不満が増えるでしょ。
121 :
デフォルトの名無しさん :2001/02/25(日) 16:54
'Mastering Delphi' の著者のサイトが無くなってる。 どこへ引っ越したんだろ?
>>120 例えばC++やJavaにはdynamicに相当するキーワードはないが、
それに対して文句言う奴なんていない。
あんた、まともに考えたことないだろ。
不満持つ奴なんていないよ。
ここで例にJAVAを出すなよ。(藁 C++がDelphiより機能がないだけ。 DelphiはC++よりも最強なんだから よわっちい言語と対比しないでね。
>>123 煽るなよ。同じDelphi使いとして恥ずかしいぞ。
>>116 kazukazuはどういう型になっているんだ?
Integer型か?string型か?
125 :
デフォルトの名無しさん :2001/02/25(日) 23:03
>>124 上のkazukazuは、たしかInt型でした。(まずい例をあげてしまいました)
この後String型とかにしてみたりしたんですが、ダメでした。
で、結局124さんの『型』をヒントにして
DDPD1.Send(DPID_ALLPLAYERS, PChar(kazustr),Length(kazustr)+1);
こんな感じにしてみたらうまくいったようです。
ありがとうございました。
お騒がせしました。
127 :
デフォルトの名無しさん :2001/02/26(月) 08:30
煽りにのるなよ。同じDelphi使いとして恥ずかしいぞ。 (wara
129 :
デフォルトの名無しさん :2001/02/26(月) 10:41
>>123 Delphiって言語名だっけ?(プ
>>129 google検索しても、これくらいしか見つからん。
「何ができる?」という情報しかないDelサイトのレベルの低さが伺えるな。
131 :
デフォルトの名無しさん :2001/02/26(月) 11:14
頭の弱い人はDelphi使わなくて結構です。さようなら。
あ、説明不足だったね。 dynamicとvirtualでここまで文句つけれる君は 白痴なんじゃないかと思ったわけ。 という事で白痴くんはさよなら。
自作自演の煽り屋さんは相手にするなよ。
>>132 別スレでバカみたいに Delphi擁護してんのおまえだろ。
自分が唯一できることが一番じゃないと不安でしょうがないんだろうな。(藁
>つけれる こんな言葉を使う時点で、 厨房度というか、普段のコミュニケーション能力というか、 そういうのが疑われるわけよ。
136 :
名無しサンプリング@48kHz :2001/02/27(火) 18:37
DelphiでXMとかITとかをならすにはどうしたら良いですか?
138 :
デフォルトの名無しさん :2001/02/27(火) 19:25
>>136 自力実装か既存のライブラリに頼るか2通りある。
さあ、どっちを選ぶ?
139 :
デフォルトの名無しさん :2001/02/27(火) 23:21
DelphiではHtmlをどうやってParseしますか? Parseクラスを自作?
140 :
デフォルトの名無しさん :2001/02/27(火) 23:30
>>135 イマドキテイドノヒクイツッコミダナ
オーマーエーモーナーーーーーーーー
142 :
デフォルトの名無しさん :2001/02/28(水) 14:25
静的メソッドと動的メソッドって なぜ異なっているのでしょうか?
>142 スレ違い?Delphiにstaticなんてあったっけ?
virtual, dynamic, override付かないメソッドはスタティック。 classメソッドだってあるよん。
145 :
デフォルトの名無しさん :2001/02/28(水) 16:07
>>143 仮想メソッド=virtual 指令付きメソッド
動的メソッド=dynamic 指令付きメソッド
静的メソッド=何も付いていないメソッド
>144 ホントだ、知らんかったサンクス。<classメソッド
>145 なるほどねー、俺ヘルプ読んでなかったわ。。。
ちなみにJavaでいうクラス変数はないので、ユニットローカル な変数(って言うのか?Implemantation部で宣言した変数) で代用すべしべし。(そんなに使う機会は無いと思うが。)
149 :
デフォルトの名無しさん :2001/02/28(水) 23:12
Unitごとの初期化、終了処理はinitialization, finalizationでやるんだけれど、 その中で一時的な変数(ループ用とか)使いたいときどうしたほうがいいのん? 例えば、 var i: integer; initialization for i := 0 to 10 do hoge[i] := i; end. なんか、varが外に出るのがいやなんだよなあ。 やるとしたら、 procedure Initialize; var i: integer; begin for i := 0 to 10 do hoge[i] := i; end; initialization Initialize; end. ぐらいかなあと。もっとスマートな方法ない?
150 :
デフォルトの名無しさん :2001/02/28(水) 23:47
>>148 クラスじゃないがユニットごとの変数が一番似てる
151 :
デフォルトの名無しさん :2001/03/01(木) 00:35
152 :
どっちでもい〜けど :2001/03/01(木) 09:33
前者のがデータ・コードサイズが小さくなりそう。
前者だとコード補完したときに var の下に関数が生成されるようです(´д`;) 駄目ジャーン。
[Delphi:55364] 素朴な疑問 - 他言語との比較 電波すぎ。
156 :
136 :2001/03/04(日) 11:00
136です 諸事情でレスできませんでした。すみません XMとかあつかうコンポーネントとかあるんですか?
158 :
turbo type D@モナヂラドットオルグ(ワラ :2001/03/05(月) 12:52
ライフゲームですなぁ。なつかすぃ〜
160 :
デフォルトの名無しさん :2001/03/05(月) 13:55
ライフゲームか、昔、ライフゲームでコンピュータ的動作させられるとかの記事読んだ事あるな Cなら練習がてら書いた事あるぞ。
コンピュータ的動作って‥‥フリップフロップから作るのか? グライダーでデータのやり取りするのか? なんか考えるだけで怖くなってきた
162 :
turbo type D@モナヂラドットオルグ(ワラ :2001/03/05(月) 15:38
ぁゃoぃソスアプにアプしたよ。 バイナリ付だからサイズででかくてごめんなすって。 いやあ、モナプロラで疲れていたので ガス抜きに作ったよ。(おいおい仕事しろよ(藁 2チャソ専用のアプ板が欲しいなあ。
163 :
turbo type D@モナヂラドットオルグ(ワラ :2001/03/05(月) 15:52
あ、動的配列が動作するDelphiだから D4以降対応かな。 ぁゃoぃは2chソス嫌ってるみたいだから URLは書くのやめとく。
>グライダーでデータのやり取りするのか? グライダー銃をうまく配置して、いろんなロジックを 行うっていうのを本で読んだこつあたよ
165 :
turbo type D@モナヂラドットオルグ(ワラ :2001/03/05(月) 16:10
ライフゲームみていて思い出した パソコン持っていなかった頃 友達の家のTOWNSで シムアースであそばしてもらっていた すごく面白かったよ。
すごいね〜 無限増殖パターンみてると 酔いそうだ。(w
教えて君なのでsageにて。初心者な質問でごめんなさい。 このライフをDelphiで作ろうとしたときに、標準のコンポーネントで作れます? 土木実験とか偏ったものしか組んだことないので、勉強として 面白そーだからチャレンジしてみよーって思ったのですが、出だしからわかりません。。。 すみませんが、教えてください。
169 :
168 :2001/03/05(月) 22:54
書き忘れました。 表示のメッシュ部分です。<出だし
170 :
デフォルトの名無しさん :2001/03/05(月) 23:37
CanvasとLineなんとかかPointなんとかで出来ると思います。 Delphi持ってないのでわかりませんが。
171 :
turbo type D :2001/03/06(火) 09:47
>このライフをDelphiで作ろうとしたときに >標準のコンポーネントで作れます? 標準以外のコンポーネントでどこに何を利用ればいいかな?(w ぁゃoぃソスアプというサイトを見つけて厨房ソースをDLしなさい。 ただし、あちらさんに削除される前に(藁 Booleanの2次元動的配列を用意して TImageにFillRectで四角を描画してる TImage.マウスアプで配列のTrue/Falseを変えてるんだよ。 マトモな質問ならsageんでよし 初心者でも厨房やデンパじゃなければ臆することはないですよ。 むしろ厨房やデンパなヤツは臆すること無いから困るのだが (つか、それは俺のことか、欝だ氏、、、)
172 :
turbo type D :2001/03/06(火) 09:50
読みきれてなかったスマソ >表示のメッシュ部分です。<出だし Canvasに書いた方が楽と思うけれど DrawGridを使う手もあり? Tスクロルボクスの上にTイマジ乗っけてもいいんじゃないかな。
173 :
turbo type D :2001/03/06(火) 14:13
174 :
168 :2001/03/06(火) 20:28
turbo type Dさんありがとうございます。 他の方のソースは勉強になりますね。 monazilla陰ながら応援してます。 ぜーんぜんスキルないもんで・・・
スキルないなら 具体的にどこがわからないって ガンガン聞いたらいいんじゃない? ネットで聞ける場所あるし。 2chで聞くと煽られるしまともなレスないから かなり辛いけど(w
176 :
名無しサンプリング@11.25kHz :2001/03/08(木) 00:51
非常に下らない質問で申し訳ない。一応2,3日調べた挙げ句書かせて頂きます。 testはHGLOBAL型 memcpy((char *)GlobalLock(test), "test", 4); こんな感じのC++のソースがあります。 ソース自体の意味は大体把握したのですが いざPascalで記述してみようと考えると、どのようにtest変数に'test'という文字列を渡すかわかりません。 どなたか助言お願いします(汗
Delphi で書くとこう。PChar型使ってポインタ得るのが味噌。 CopyMemory(GlobalLock(test), PChar('test'), 4);
178 :
デフォルトの名無しさん :2001/03/08(木) 05:49
>>177 PCharへのキャストはわざわざ明示せんでよい気がする。
180 :
名無しさん@お腹いっぱい。 :2001/03/10(土) 15:04
あげついでに。 with TFrmHoge.Create(Self) do こんな構文あったなんて知らんかったよ。ローカル変数いらんてのが 非常にキレイで◎ 初心者ですが勉強になります。
181 :
デフォルトの名無しさん :2001/03/10(土) 18:11
いいけど、定型的なデバックしない部分に利用しないと デバックに困る事になる それとそれ利用するときは try finallyと組み合せて使うべきだ with xx.Create do try finally free;end;
182 :
デフォルトの名無しさん :2001/03/10(土) 18:41
別にローカル変数ぐらいあってもいいけど...
>>181 ShowModalしか使えないぞ。
それにOnCloseでcaFreeにすると
必要ないのでは?
183 :
デフォルトの名無しさん :2001/03/10(土) 19:43
ボソ(-。-) あーあ、 情報局にまで飛んでいかなくてもいいのに。
情報局って、、、いつの時代の話ですか。
いや、ばれないようにね。 君なんとかとか俺なんとかとかわたしなんとかとか ゼイイン要らない
186 :
デフォルトの名無しさん :2001/03/10(土) 20:39
>>180 -182
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm1.Create(Owner) do
//Create(nil)やCreate(Self)も可
//Create(nil)で閉じる順番によってはメモリリークする
Show;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
187 :
デフォルトの名無しさん :2001/03/10(土) 22:19
procedure foo(const s: String); procedure bar(s: String); ってどう違うんでしょうか? TObjectならconstを使う理由もわかるのですが
188 :
180 :2001/03/10(土) 22:31
情報量不足でした。これをやろうと思ったのはShowModalの 時です。
>>187 関数名が違う
・・・つのはネタ
動作結果は一緒?
気にせんでよろし
procedure foo(const s: String); sは変更できない。しようとするとコンパイルエラーになる。 だけだろ(藁 コンパイル後の結果は置いておいて。
191 :
191 :2001/03/11(日) 19:07
StringGridを使用しているんですが、 Cells[i, j] := hogehoge っていう感じで、ループを回すと、 一回書くたびにInvalidate発生させてるみたいで描画が遅くなってしまいます。 たしかInvalidateの発生を抑制するようなメソッドがあったと思うんですが、 ご存知ないでしょうか。それとももっとスマートなやり方ってないもんでしょうか。
192 :
デフォルトの名無しさん :2001/03/11(日) 19:51
>>191 Leafel's note
ちらつきのない生活?
193 :
デフォルトの名無しさん :2001/03/12(月) 04:11
>187 >TObjectならconstを使う理由もわかるのですが って何ですか?
194 :
麻衣 :2001/03/12(月) 09:38
const obj:TComponent obj:=hoge.Create; はダメ obj.Tag:=1234; でもこれはOK const s:TStrings s[1]:='麻衣だよ〜'; もちろんこれもOK でも const s:string s:='1234'; はダメなのは当然だけど s[1]:='x'; もダメ
195 :
デフォルトの名無しさん :2001/03/12(月) 09:59
196 :
デフォルトの名無しさん :2001/03/16(金) 01:08
Winのプログラミングはあまり得意ではないのですが、 多少DelphiでWinのプログラムを組めるようになりました。 それで質問があるのですが、 プログラムでレジストリをあまり使いたくないので、 設定ファイル「*.ini」を利用したいと思います。 その設定ファイルを作成するに当たって 何かいい関数などありますか? それとも、入出力したい設定を自分でファイルオープン&読み書き させなければいけないのでしょうか。 Winのプログラミングをすると、何か楽な関数があるのではないか、と 期待してしまうのが怖いですね。
197 :
デフォルトの名無しさん :2001/03/16(金) 01:15
>>196 ラッパーでTIniFile,TRegIniFile,TMemIniFileやらがあるよ
TMemIniFileにしとけ
上にマンセー
200 :
196 :2001/03/17(土) 00:00
>>197 -199
サンクス。
あとで試してみますね。
でも、Windowいらないプログラムを作る方が多くて
実はさらっとRubyで書いちゃう俺はダメダメですか?
必要なければいいけど。 GUIあったらあったで便利だよ。
202 :
デフォルトの名無しさん :2001/03/17(土) 01:29
203 :
デフォルトの名無しさん :2001/03/17(土) 08:24
>>202 学習用のIDEみたいなの置いてるね・・・。
204 :
デフォルトの名無しさん :2001/03/19(月) 07:26
WebからHTMLソースを取得するにはどうしたらいいっぽいですか? TWebBrowserあたりを駆使するのかと思うのですがいまいちよく わかりませんでした。 頭分けてくださいよろしくおねがいします。
206 :
204 :2001/03/19(月) 18:17
・・・あんなに迷っていたのにやりたいことがすぐできました。 205さん、monazilla.orgさんに心から感謝します。 おもしろい物を作ってお役に立てるようがんばります。
207 :
デフォルトの名無しさん :2001/03/19(月) 21:22
unitを作成しているのですが、 interface部は、interfaceのくせにclassのprivateの部分まで宣言しなければいけませんよね。 まー、それは良いとして、実装でしか使わないようなクラスの宣言は implementation部で宣言したいのですが、interface部(のclassのprivate部分) で使っているのでinterface部で宣言するしか解決方法が思いつかないのですが、 他に何か良い方法があるのでしょうか?
208 :
デフォルトの名無しさん :2001/03/19(月) 21:50
>で使っているのでinterface部で宣言するしか解決方法が思いつかないのですが、 他に何か良い方法があるのでしょうか? それしかないと思います。 まあC++のクラス宣言と同じようなもんですね。 ちょっと変わった方法としては、protectedなメンバ関数だけ 実装したクラスと、それを継承してpublicなメンバ関数でラップ したクラスを作ってそちらだけ公開する手があります。
209 :
207 :2001/03/19(月) 22:36
>208 レスありがとうございます。 >まあC++のクラス宣言と同じようなもんですね。 ああ、そういえばそうですね。 (C++はあまり経験がないのですが、 ヘッダに記述してやらなければいけないってことですよね?) あ、でもstructはclassの中に隠せるのかあ。
しかしDelphi Techとの違いがわからん
211 :
デフォルトの名無しさん :2001/03/20(火) 20:58
212 :
1 :2001/03/20(火) 21:42
Techスレは夢や理想を語る場になってたので Q&A系はこちらと作ったのですが
213 :
デフォルトの名無しさん :2001/03/20(火) 21:54
あそこは夢や理想をを語る場だったのですか!
214 :
1 :2001/03/20(火) 22:54
いや Techの55付近から暫くの流れはね
215 :
君だよ。キミ :2001/03/20(火) 23:05
>>209 見えることと使えることは別。
implement 部以下を公開しなけりゃどちらにしろ再コンパイルできないんだから、
interface 部を編集したものをドキュメントとしてつければいいのだ。
コンポーネント/ライブラリの再利用者が必要としているのは、結局のところ
使用可能な Public なインターフェースだけなのだから。
216 :
209 :2001/03/20(火) 23:50
>215 access modifierがpublicなメソッドでも implement部を公開しなければ、良い、というようにとれるのですが、 どういうことでしょうか?
217 :
209 :2001/03/20(火) 23:57
ああ、いいたいことがわかったかも。 >コンポーネント/ライブラリの再利用者が必要としているのは、結局のところ >使用可能な Public なインターフェースだけなのだから。 それはわかるのですが、それならば使用可能部分以外は できれば見せたくないというわけです。 interfaceって名前がついているわけだし。 でも、簡便だから仕方が無いのかな。
.dcu配布すれば万事解決。
219 :
デフォルトの名無しさん :2001/03/21(水) 01:51
>217 ごめん。商業配布の話かと思っています。 うちは Private/Protected を削除するためのフィルターを使っています。 implement から下はばっさり削る。
220 :
デフォルトの名無しさん :2001/04/23(月) 09:01
DelphiでHTTPSを扱えるコンポーネントってないですか?
221 :
すいません :2001/04/23(月) 09:09
>>221 ハンドル名/通称を Halbow から paramag に変えたから
後始末してるんじゃないの?
223 :
turbo type D :2001/04/23(月) 10:26
>>671 >ムカツク仕事だと、家に帰ってきてもやる気ゼロだし。
>今はムカツク仕事だから、やる気ゼロ。
わかるーー。
愚痴りな.愚痴りな.
オレは仕事が忙しいと残業になっちまうから
スピード遅くなるのがくっきりわかるけど。
まーーーったく関係ないけど、
「こげぱん」って絵本、お勧めだよ。
ヤサグレ極限キャラに共感を覚える。
225 :
turbo type D :2001/04/23(月) 10:32
あり? 投稿先間違えた.(w
226 :
turbo type D :2001/04/23(月) 11:00
>どうもこの関数は挙動がおかしくないですか っていわれてもねぇ。どうおかしいか教えてくれてもいいと思うし, ソースも付いているから調べりゃいいのに。
APIがおかしいんじゃない? 確か特定フォルダアイコンを変更するような事をしていると そのフォルダは探索しないらしい 試してみたら確かに探索されない。
229 :
デフォルトの名無しさん :2001/04/23(月) 15:26
>>228 FindFirst, FindNext 関数はファイルシステム上のファイルを検索する関数だから
「マイコンピュータフォルダ」や「コントロールパネル」などの仮想フォルダは
当然引っかからないよ。って話じゃないの?
>確か特定フォルダアイコンを変更するような事をしていると
>そのフォルダは探索しないらしい
これどうやるの?
>>226 ディレクトリやファイルをトラバースするなら FindFirst系でOK。
ネームスペースオブジェクトを対象にするなら 226 のリンク先の
ようにする必要がある。
>>229 マドのテやKHIconMagicをインストールすると出来るようになる。
IE4以降かな。
232 :
229 :2001/04/24(火) 16:41
>>231 試してみたが、ちゃんと FindFirst系で引っかかったぞ。
ただ FindFirst でファイル属性に faDirectory のみを指定では駄目で
faAnyFile でうまくいった。これは、アイコン変更したフォルダに
システムファイル属性が付いているからだと思う。
結論から言うと
>>226 の情報はガセだな。
>>226 の人は faDirectory のみを
指定して検索したのだと思われるが、これだと隠し属性が付いたフォルダも
検索されないのでまずいよ。
では、フォルダだけを探索したい場合は Attrになにを指定したらいいのかな。faSysFileか? いままで、フォルダなら faDirectory 通常のファイルだけの探索なら faAnyFile - faDirectoryで うまく動いていたのだが。 faDirectory or faSysFile や faAnyFile - (faDirectory or faSysFile) とする必要がある? 詳しく調べてないので よかったら教えてください。
といいつつ、 自分でも気になったので調べたら そうみたいだ。 通常ファイルは faAnyFile and (not (faDirectry or faSyaFile)) と指定する必要があるんだね。
>>233 -234
前言撤回。faAnyFileで探索したあとDirectoryExistsで
調べた方がいい。少なくともオレはそうした。
236 :
229 :2001/04/24(火) 20:57
>>235 というか、TSearchRec.Attr を見ればディレクトリか判断できる。
if FindFirst('c:\*.*', faAnyFile, F)<>0 then
begin
if F.Attr and faDirectory<>0 then
//このファイルはディレクトリである
else
//このファイルはディレクトリではない
end;
インデントミスった… if FindFirst('c:\*.*', faAnyFile, F)<>0 then begin if F.Attr and faDirectory<>0 then //このファイルはディレクトリである else //このファイルはディレクトリではない end;
238 :
turbo type D :2001/04/24(火) 22:14
>>229 サンクス。229ので動作も確認.問題なしね。
239 :
デフォルトの名無しさん :2001/04/26(木) 06:17
質問です。 先に作ったボタンなどを、GUIであとからグループ化はできるのでしょうか? どうも、groupboxの上に乗ってくれない。 オブジェクトをカット&ペーストできればいいのですが。←これもできたりして・・・
>>239 Bottunを選択->切り取り->GroupBoxを選択->貼り付け
カットしてテキストエディタに貼り付けという事も よくやる。
ありがとうございました。 ポップアップになかったのでてっきり「無い」のかと思ってました。 まさかメニューに在るとは・・・初心者な質問で申し訳なかったです。
243 :
デフォルトの名無しさん :2001/05/02(水) 03:59
age
244 :
素朴な疑問なんですが :2001/05/04(金) 14:58
例えば TClassA = class .... end; のようにclassの後の継承先を省略すると自動的にTObjectからの継承になる わけですけど、それじゃTObjectって何を継承しているんでしょうか? TObjectのソース見たら TObject = class .... end; のようになってたのでTObjectはTObjectを継承してる???あれあれ??? って思ったんですが、ここら辺のことご存知の方いらっしゃいますか?
245 :
デフォルトの名無しさん :2001/05/04(金) 15:34
TObjectはなんも継承していないです。以上。
246 :
デフォルトの名無しさん :2001/05/04(金) 16:40
すいません教えてください。 DateTimePickerの日付を、別に作ったボタンで進めたり 戻したりするのは、どうすればいいのでしょうか? バージョンは、3.1です。
247 :
デフォルトの名無しさん :2001/05/04(金) 17:15
procedure TForm1.Button1Click(Sender: TObject); begin DateTimePicker1.Date := DateTimePicker1.Date +1; end;
248 :
素朴な疑問なんですが :2001/05/04(金) 17:36
>>244 ではTObject = classのclassはobjectとしても同じ意味なんですね?
249 :
turbo type D@モナぢら :2001/05/04(金) 17:56
>>248 それは古い記述方法ではないかしら?
TA = object
は今では使わないですよ
塚越なんとかさんのDelphiオブジェクト指向とかいう
本をよめば書いてるだけど、わすれてしまった。
250 :
デフォルトの名無しさん :2001/05/04(金) 18:00
>>248 違ってくるはずです。
THogeMoge = object
って、移植以外に使い道あるんだろうか?
251 :
turbo type D@モナぢら :2001/05/04(金) 18:03
252 :
デフォルトの名無しさん :2001/05/04(金) 19:14
>>247 どうもありがとうございました。
これで今日半日悩んじゃいました。
253 :
デフォルトの名無しさん :2001/05/04(金) 20:09
254 :
素朴な疑問なんですが :2001/05/04(金) 20:17
>>249 読みましたけどclassだけだとTObjectを継承するクラスになるのに対して
objectだと1からクラスが書けるとあったんですけど、そのTObject自身が
ソース見るとclassだけで記述されているんでどういうことなのか疑問に
思ったんですけど単にコンパイラの仕様なんですかね?
255 :
デフォルトの名無しさん :2001/05/05(土) 09:35
>>254 Systemユニットに記述されている内容は、コンパイラが特別扱いしていることが
多いんじゃないかな?素直にそういうものだと考えた方がよい。
256 :
デフォルトの名無しさん :2001/05/05(土) 16:18
age
257 :
デフォルトの名無しさん :2001/05/06(日) 01:05
何がわからんの?ln()が自然対数で、あとlog2とlog10が用意されてる。 対数チャートがどんなもんか知らんけど、y:=ln(x)/ln(a)とすれば yにxのaを底とした対数が代入される。これじゃ駄目なの?
>>258 それがわからなかったのじゃ...
いぢわるだなあ
260 :
66です :2001/05/06(日) 01:42
258さん、259さん、ご指導有難う御座います。 返事を何度も読み返して理解中なので、少し 考えさせてください。
261 :
257です :2001/05/06(日) 01:43
66じゃなかった、257です
262 :
>260 :2001/05/06(日) 06:00
>>260 って言うより数学がわかってないんじゃない?
258さんの式見てすぐに理解できないんじゃ
数学やり直したほうがいいよ。
っていうか対数ぐらい自分で調べろ!
Becky!2のプラグインの作り方を教えてください。
264 :
デフォルトの名無しさん :2001/05/06(日) 21:14
ageわすれ
265 :
厨房 :2001/05/09(水) 23:28
素朴な疑問です なぜ、型宣言でstringは小文字から書くのにIntegerは大文字なの?(VCLにおいて)
stringとIntegerは作った所が違う>265
267 :
デフォルトの名無しさん :2001/05/10(木) 00:03
ほんとかよ。(w
268 :
turbo type D :2001/05/10(木) 00:06
ようやく
Delphiオブジェクト指向読んできたよ。
>>254 object指令は静的オブジェクトを生成するんですね。
構造体じゃあるまいし
静的オブジェクトは使いにくいですよ。
というか、大文字小文字の区別がないんですね、Delphi。 そこらへん、嬉しいような嬉しくないような。 どうも気になって大文字小文字を気にしながら打ち込んでいるのですが、 ふと我に返ると「これって意味ないんかな」とか思って少し鬱。 かといって区別されるとそれはそれで困るんでしょうね。
270 :
デフォルトの名無しさん :2001/05/10(木) 07:31
>>265 Reserved words and directives should be all lowercase. This can be a bit
confusing at times. For instance types such as Integer are just identifiers,
and appear with a first cap. Strings, however, are declared with the reserved
word string, which should be all lowercase.
んー、じゃあどうしてIntegerのIは先頭大文字なのでしょ?
272 :
デフォルトの名無しさん :2001/05/10(木) 13:59
>>268 激しく同意。
静的なんていう名前がついているんでしたっけ。
名前すら完璧に忘れてた。
VCLに見放されているという点を差し引いても
旨み何にもないんだもん。使いたいと全く思わない。
TurboPascal7までのユーザーは
さぞかし苦労してたんだろうな…。
ん?触ったことないんですが、もしや
往年のOWLとかいう奴は
静的云々を使って実装されてたのでしょうか?
あと、TurboVisionも…静的だよね?(w
273 :
たま :2001/05/10(木) 18:19
フォームへのファイルのドラッグ&ドロップを 一番簡単に実装させる方法って何かありますでしょうか? 「ファイルドロップコンポーネント」というのを 使ってみたのですが、いまいちよくわかりませんでした。 delphi4です。
>一番簡単に実装させる方法って何かありますでしょうか? 「ファイルドロップコンポーネント」というのを 使うlコトです。(藁 スマソ。
275 :
デフォルトの名無しさん :2001/05/10(木) 20:17
印刷がうまくいかなくて困っています。 pagecontrol-tabsheet上のstringgridの印刷をしたいのですが、pages[i].painttoメソッドを用いると ウィンドウに表示されている部分しか印字されず、また非常に小さく印刷されます。(プリンタの解像度で印刷されている?) form.printscaleを変更しても同じでした。用紙いっぱいにstringgridを印刷したいのですが・・・。 helpを見ながら、他にもいろいろとメッソドを試したのですがダメでした。 初歩的な質問ですみませんが、どなたか教えていただけないでしょうか?
276 :
デフォルトの名無しさん :2001/05/10(木) 20:22
>>273 ホレ
//生成時パラメータの設定
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES;
end;
//ファイルのドロップ処理
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var FileName: array [0..MAX_PATH] of Char;
begin
DragQueryFile(Msg.Drop, 0, FileName, SizeOf(FileName));
try
//以下処理
// FileNameがドロップされたファイル名
:
:
finally
DragFinish(Msg.Drop);
end;
end;
これをForm1の宣言部に忘れずにな procedure CreateParams(var Params: TCreateParams); override; procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
280 :
デフォルトの名無しさん :2001/05/10(木) 23:02
質問 Delphiは初心者でもはじめれますか?
281 :
275 :2001/05/10(木) 23:33
>>279 レスありがとうございます。
表示にはOnDrawCellを用いています。
先ほど、コピーはあきらめて直接プリンタのキャンバスに描画を試みたのですが、
やはり、ウィンドウに表示されている部分(見えている部分)しか印字されません。
282 :
turbo type D :2001/05/11(金) 00:08
283 :
たま :2001/05/11(金) 01:23
>>277 -278
きゃぁ!すげぇありがとうございます!!抱いて!!
早速組み込んでみます。実はMP3プレーヤーを作っておりまして、
なんとかドロップできないかと3日3晩悩んでました。
まじありがとうございます。
>>280 vb、vcと挑戦してhelloworldで挫折した私でも、
始めて2日でとりあえずは動くMP3プレーヤーが作れました。
delphiって凄いなぁ。
>>281 OnDrawCellでバキバキに書いてるなら、
プリンタのデバイスコンテキストに自前で書くしかないっすね。
>先ほど、コピーはあきらめて直接プリンタのキャンバスに描画を試みたのですが、
>やはり、ウィンドウに表示されている部分(見えている部分)しか印字されません。
普通にやればいいんだけど、参考までにサッキあげたURLから
コンポ落としてソース見てみてください。それが一番参考になるんじゃないかな?
もしくはDelphi4プログラミング技法Vol1に印刷は詳しく載ってま〜す。
285 :
たま :2001/05/11(金) 01:55
>>277 -278
実装できました。ホントありがとうございます!!
初歩的(ですよね?)な質問にもかかわらず、親身にご解答下さった
[277-278]様、及び温かく見守ってくれたこのスレの方々に感謝。
>>284 いろいろとアドバイスありがとうございました。
そのようにやってみます。
288 :
たま :2001/05/11(金) 09:36
>>286 な、なんて便利な!
うっす!ありがとうございます!精進しますっス!
289 :
デフォルトの名無しさん :2001/05/29(火) 11:00
ペンとかフォントを一時的に保存して使いたいとき C++ならどこでも変数宣言出来るからいいんだけど・・・ 今こんなふうにやってるんだけど with TPen.Create do try Assign(Canvas.Pen); Canvas.Pen.Assign(DrawPen); みたいにペンを取り替えて ・・・ この間に描画・・・・ finally Canvas.Pen.Handle:=Handle; <=これが格好悪い free; end; これで何か問題あるのかな? それからもっといい方法ある?
290 :
デフォルトの名無しさん :2001/05/29(火) 14:54
送るメニューに登録できる専用のAPIが 合ったと思うのですが、忘れてしまいまして。 教えていただけませんか?
291 :
デフォルトの名無しさん :2001/05/29(火) 17:28
>>290 専用のAPIは最近使ったファイルに追加するやつじゃなかったけ?
送るに追加なら,
ショートカットを作って,Sendto フォルダに書き込む.
でインじゃない.IShellLink で調べてみれ.
293 :
290 :2001/05/30(水) 01:54
>>291 -292
どもども。これでもいいんだが、
SendToのみに作る専用のAPIがあったんだよ。
なんだったけなぁ。Googleで検索しても
出てこないんだよ。APIの名前さえ分かれば...
294 :
290 :2001/05/30(水) 02:01
やっぱ勘違いかもしれないなぁ。 IShellLinkでやりますわ。 お手数掛けました。
特殊フォルダのパス取得の事ではあるまいか?
296 :
名無しさん :2001/06/06(水) 21:30
DelphiXって、なんでリファレンス以外に実ソース解析しか理解する方法ないの? どっかにマシなチュートリアルないのかぇ 本買ったが、添付Helpとサンプル印刷しただけじゃん。鬱。
297 :
デフォルトの名無しさん :2001/06/07(木) 09:49
条件式が非常に多い場合、以下のような書き方をしているのですが、この場合、 コンパイラはショートサーキット評価のコードを生成しないのでしょうか? つまり、条件式1がすでにfalseでも、条件式2〜4も実行されるのですか? function test:boolean; var a,b,c,d:boolean; begin a=条件式1; b=条件式2; c=条件式3; d=条件式4; test:=a and b and c and d; end;
されなかったと思う。 MLではるか昔話題になっていたような。
function AAA: Boolean; begin ShowMessage('AAA実行された'); Result := False; end; function BBB: Boolean; begin ShowMessage('BBB実行された'); Result := True; end; function CCC: Boolean; begin ShowMessage('CCC実行された'); Result := False; end; function DDD: Boolean; begin ShowMessage('DDD実行された'); Result := False end; procedure TForm1.Button1Click(Sender: TObject); var Test: Boolean; begin Test := AAA and BBB and CCC and DDD; end; 適当に値変えて動かしてミソ
>>297 ヘルプの「ショートサーキット論理式評価」でも見てみな。
最後まで評価されるかどうかは、コンパイラ指令によって変わる。
つーか、DelphiML過去ログとか検索しようよ。
スマン。ここはMLじゃないから、過去ログみろってのは安易に言うべきでなかったか。
303 :
デフォルトの名無しさん :2001/06/10(日) 18:28
あげ
304 :
デフォルトの名無しさん :2001/06/12(火) 13:16
他アプリで反転表示(選択中)の文字列とかって 取得可能でしょうか?
305 :
turbo type D :2001/06/12(火) 13:54
がんばったら出来る。(藁 ToClipHyperってアプリではかなりがんばってる模様。 アクティブなWindowのハンドルに'Ctrl+C'送って クリップボード見るのが無難じゃないかな? 詳しくしらないから、がんばって。
306 :
turbo type D :2001/06/12(火) 13:58
GExpertsでフリーカーソル無効に出来る?
>>306 出来なかった気がする。
フリーカーソル嫌い?俺はマンセーなんだが。
308 :
305 :2001/06/13(水) 12:35
309 :
デフォルトの名無しさん :2001/06/13(水) 13:22
Array of char → Stringの変換って、できますか? NMUDPで送信したいんですが、Stringが使えないんですよね・・・。
311 :
デフォルトの名無しさん :2001/06/13(水) 16:22
VCLってDelphi?
312 :
デフォルトの名無しさん :2001/06/13(水) 16:42
>>311 VCL=Delphiではない。
簡単に言えば
ObjectPascal+VCL=Delphi
C+++VCL=C++Builder
C+++MFC=Visual C++
識者のツッコミは却下。
313 :
デフォルトの名無しさん :2001/06/13(水) 18:11
VCLってのはそれじゃあなんなんですか? 検索したらDelphiのページにしかつながらなかったので Delphiかと思ったのですが...
VCL=Visual Component Library 部品を組み立てるような感覚で、GUIなアプリケーションが作ることができるライブラリ。 こちらも識者のつっこみは却下。
Visual Component Library Delphi,BCBの使っているコンポーネントライブラリ。 KylixはCLX(Component Library for Cross Platform) Delphi6は両方のライブラリをサポート。
Visual C++の例も書いたのに・・・。
318 :
デフォルトの名無しさん :2001/06/13(水) 22:20
319 :
デフォルトの名無しさん :2001/06/13(水) 22:42
もうおなかいっぱいだよー 食べられないっすよー
>>318 横から戴いたYo!超超超イイ感じになったYo!大謝!
321 :
デフォルトの名無しさん :2001/06/14(木) 00:26
(゚Д゚)チョウ(゚Д゚)チョウ(゚Д゚)チョウ (・∀・)イイ! カンジ! (゚Д゚)チョウ(゚Д゚)チョウ(゚Д゚)チョウ(゚Д゚)チョウ (・∀・)イイ! カンジ!
322 :
デフォルトの名無しさん :2001/06/14(木) 01:01
>>318 サンクス。
いや、GExpersで出来るかどうかを知りたかったんだ。
一応それはチェキしてる〜♪
>>318 フリーカーソルマンセーなんで、
選択範囲のTab, Shift+Tabだけほしー。
Ctrl+Shift+I, Ctrl+Shift+Uでもできるけど、やっぱ直感的なほうが・・・。
>>320 &322
おっさん達、気持ちは若いな(´д`;)
>>324 気持ちだけだYO...(´д`;) ウチュダ....
326 :
デフォルトの名無しさん :2001/06/14(木) 11:30
汎用の数クラスを作って 後で複素数とかに拡張したくて type Inumeric = interface procedure mAdd( A, B: Inumeric ); // A+B procedure mSub( A, B: Inumeric ); // A-B procedure mMul( A, B: Inumeric ); // A*B procedure mDiv( A, B: Inumeric ); // A/B end; とやりかけたけど、どうやって実装すればいいの? TFloatNum = class(TInterfacedObject , ImNum) public num:Extended; procedure mAdd( A, B: ImNum ); ・・・略・・・ procedure TFloatNum.mAdd(A, B: ImNum); begin num:=(A as TFloatNum).num + (B as TFloatNum).num; end; じゃ駄目だけど、何か方法あるんだろうか?
327 :
326 :2001/06/14(木) 11:37
インターフェースに function getObj:TObject; を追加して function TFloatNum.getObj: TObject; begin Result:=self; end; procedure TFloatNum.mAdd(A, B: ImNum); begin num:=(A.GetObj as TFloatNum).num + (B.GetObj as TFloatNum).num; end; とやれば出来るけど・・・
328 :
デフォルトの名無しさん :2001/06/14(木) 16:22
>>326 Kylix/Delphi6 なら、部分的な演算子オーバーロードができるんだが。
330 :
デフォルトの名無しさん :2001/06/14(木) 16:35
332 :
デフォルトの名無しさん :2001/06/14(木) 18:39
がせ
333 :
デフォルトの名無しさん :2001/06/14(木) 18:41
334 :
デフォルトの名無しさん :2001/06/14(木) 19:15
335 :
デフォルトの名無しさん :2001/06/14(木) 20:00
>>334 procedure TForm1.Button1Click(Sender: TObject);
var
x, y : Variant;
begin
x := VarComplexCreate(0, 1);
y := x * x;
Label1.caption := y;
end;
で Label1 に '-1 + 0i' とでる。
336 :
デフォルトの名無しさん :2001/06/14(木) 20:43
337 :
デフォルトの名無しさん :2001/06/14(木) 21:45
>>326 asじゃなくてTFloatNum(A)じゃできない?
>まさか真似するわけにはいかんだろう。 いや、やっぱ他製品のいいところは取り入れてもらわねばねー。 って、OperatorOverloadingがいいかどうかは別として・・・。
340 :
326 :2001/06/15(金) 07:32
>>337 それは駄目でした。 結局
>>327 しか無いのかなあ・・・
複素数くらいは使いたいって気持ちはあるけど、それとは別に
326は数式処理の実装を分けたかったんだ。
どっちかいうとテンプレートもどきが欲しいなあ、でも
uses MyFormura TFormura(Extended) as TFloatFormura ;
みたいな感じにしたいとすると、型を拡張するには演算子も
オーバーロード出来ないと駄目か
>>340 コンパイルとおったよ?
>procedure TFloatNum.mAdd(A, B: ImNum);
このImNumってINumericとは違うの?
342 :
337 :2001/06/15(金) 08:49
age
343 :
326 :2001/06/15(金) 10:21
レスありがとう >337 それはコンパイルは通るけど、意味のない型変換みたいです。 実際にやっても、値は取り出せませんでした。 ImNum は Inumeric と同じです。 スミマセン
344 :
326 :2001/06/15(金) 11:36
345 :
デフォルトの名無しさん :2001/06/15(金) 12:45
Varientはある種テンプレートクラスの様な”何でも屋さん” だな。Delphi6で唯一言語強化点であるし、 (ユーザ型バリアントetc. VB.NETがバリアント排除しようとしてるの に逆行的・・・) 前者が実行時に、後者がコンパイル時に負荷かかる点が 違うけど。
346 :
337 :2001/06/15(金) 19:12
>>343 解決方法が思いつかないので、
インタフェースを継承したいんだったら、interfaceじゃなくて
classをつかったら?
参照カウンタが欲しいんだったら・・・。うーん。
347 :
326 :2001/06/15(金) 23:13
>>346 うーんクラスだとメモリ管理面倒かと思ったもんで
でも、ちょっとデバックしたり追加してたら
>>344 グチャグチャになってしまいました
なんか インターフェースに GetObject とか GetClassとか必要に
なっちゃうのは、これは自分の切り分けが下手なんだろうなあ・・・・
348 :
326 :2001/06/16(土) 17:12
349 :
326 :2001/06/16(土) 23:12
procedure の場合継承後に親を呼ぶのは inherited でいいけど、 function の場合どうやればいいんでしょう? type Tpapa = class(TObject) function func(hoge:double):double ;virtual; end; type Tchild = class(Tpapa) function func(hoge:double):double ;override; end; function Tchild.func(hoge: double):double ; begin Result:=Tpapa(self).func(hoge) ;とやっても 自分が呼ばれてしまいますよね
350 :
:2001/06/16(土) 23:20
Result := inherited func(hoge); だったような
Result := inherited func; でもいいだよな、確か。 実は、引数がいらない。
あ、もともと引数がないoverload関数があるとダメだねこりゃ 危険危険。
353 :
326 :2001/06/17(日) 07:08
>>350 なるほど。それでOKでした。
自分の親の時は引数あってもiherited だけでいいんだと思い込んで
inherited だけでは帰り値が互換性の無い型と出たんで
関数の時は違うんだと思い込んでました。
354 :
デフォルトの名無しさん :2001/06/18(月) 17:07
現在VBでプログラミングしているんですが、 delphiに転向しようかと思っています。 VBと比較して、実行速度とかはどんなもんでしょう。
357 :
354 :2001/06/18(月) 21:32
359 :
D使いβ :2001/06/18(月) 21:40
ラーニングだったら今のうちに買った方がいい。 Delphi6では最下位エディションでは商用アプリの ライセンスが付かなくなる恐れがある。 買ったら速攻ユーザー登録すればDelphi6のバージョンアップ 案内が届くかもしれない。
情報サンクスです。 とりあえず、今週末あたりラーニング買ってみようかと思ってます
D4Standard→D5Professionalバージョンアップの直販価格は33,600円。 D5Learning→D6Professionalも同じくらいになると思う。
下位エディション買って、なれたころ(不満がでたころ)に上位のに買い換えるのが吉かと。 オレもいまはPro版使ってるけど、6万もポーンとだしていきなり買ったわけじゃない。
なんかD使いの方ってsageで書く控えめな人多いですね。
某Delphi製ソフトのスレに入り浸っている人が多かったりして(w
365 :
turbo type D :2001/06/19(火) 10:38
じゃ、アゲます。
あーあ、今日も仕事か。欝だぁ
>>362 全く一緒。賢い消費者の買い方ですな。
キャンペーンを賢く利用して
フレッシュボランドキャンペでBCBLrn買ったら
Kylix買うとき-5000円になるので
正規にKylixが3万円以下で買える。
で得したキブーン。
しっかしKylixまだ買ってないんだよ。入れるマシソがないさ。
触る時間もないね。
あーあ、ウツだ。
Delphiマガジンの「アレイ外の何か」記事でも
熟読しておいた方がいいですか?
366 :
turbo type D :2001/06/19(火) 10:41
>>364 時間がなくなって脱落シチャータYO、(TДT)ゴ・・・ゴルァァァァァ__
ビンボーヒマナシってやだなあ。
368 :
デフォルトの名無しさん :2001/06/19(火) 12:20
DelphiからVBで作ったDLLって呼べるのでしょうか?
>>368 VBでDLLって作れるのでしたっけ?
煽りとかではなくて。
確か作れなかった気がする。
370 :
D使いβ :2001/06/19(火) 13:16
>>368 OLEオートメーションとしてレジストされていれば可能。
もちろん実行するマシンにもVBのランタイムが必要。
'SampleプロジェクトのMyClassクラスモジュール
Option Explicit
Public Sub Hello()
MsgBox "Hello"
End Sub
・コマンドプロンプトで作成したDLLをレジストリに登録
>REGSVR32 SAMPLE.DLL
・Delphi側からの呼出し。
uses ComObj;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
VBCls : Variant;
begin
VBCls := CreateOleObject('Sample.MyClass');
VBCls.Hello;
end;
>>354 丁度Cマガの今月・来月号でVB -> Delphi
の小特集やってる。
http://cmaga.zdnet.co.jp/detail/0107.html
371 :
D使いβ :2001/06/19(火) 13:21
>>369 VB5からActiveX DLLっていうのが作れる。
名前の通りCOMサーバ。
372 :
turbo type D :2001/06/19(火) 14:48
>>371 サンクス。
ActiveXDLLって、どちらかというとDLLというよりActiveXだったので
思い浮かびませんでした。作ったこともなかったりするし。
今月号のCマガ、Dマガみたいになってる。すごいね。
373 :
デフォルトの名無しさん :2001/06/19(火) 16:39
>>370 感激!(TT)どうもありがとうございます。
氏ぬほど助かりました。
氏ななくてもいいけど、不用になったら、 >Regsvr32 /u Sample.dll しときましょう。レジストリも限りある資源です。(わ
375 :
D使いβ :2001/06/20(水) 11:01
そーいや前から気になってたんだが、Variant型の変数に 続くメソッド名やプロパティ名って実行時に名前解決されて るんだよなー コンパイル時は単に無視してるだけ?
376 :
デフォルトの名無しさん :2001/06/20(水) 11:41
delphiが今後バージョンアップしないと別のスレの載っていたの ですが事実でしょうか?
>>376 コラコラ、デマ飛ばすんじゃない。
出所ぐらい書いとけ。
>>376 ひつこいけど、煽りなのか?
事実じゃありません。
現に米ではすでにD6は出ています。
Delphiマガジンという雑誌には
D6の内容が紹介されているよ。
"ひつこい"と"しつこい"って どっちが正しい日本語かって調べてみたら "ひつこい"は訛りなのだそうだ。
江戸っ子だね
382 :
デフォルトの名無しさん :2001/06/20(水) 14:40
>delphiが今後バージョンアップしないと別のスレの載っていたの >ですが事実でしょうか? というカキコに敏感に反応している人たちは本当にそうなりそうで 恐怖を感じて生活しているってことでいいですね
383 :
デフォルトの名無しさん :2001/06/20(水) 15:05
日本語版ではでないと聞いたのですがそれは本当なのでしょうか?
>>382 まあそう勝手に思っていればいいでしょ。
どの製品使ったところで抱く不安はどれも一緒。
そうなった時の為に1つの製品・言語に囚われず手広く
やってれば問題なし。
今後はネタスレじゃないんだから不毛な書込みは控えてね。
バージョンアップしないという話はネタなんだろうけれど、 Delphiって売れていないのか?
MSの製品と比較して売れてないとは思うが。
390 :
デフォルトの名無しさん :2001/06/20(水) 16:50
VBと比較しても売れてないかと思うが BCBと互角くらいか?
391 :
デフォルトの名無しさん :2001/06/20(水) 16:55
将来プログラマーとして働くにはdelphiよりVCをマスターした 方がいいのでしょうか? delphiではどんな仕事があるのでしょうか? マジレスお願いします。
>>391 俺は客先から言語の指定がないのでDelphiで仕事してるけど。
でも上司が「なぜDelphiなんだ? C++でやれ!」とうるさい。
そんなに文句があるなら自分でやりやがれ、このFortran厨が(w
全然参考にならんな。すまん。
>>391 なんでもいいんではないでしょうか。
仕事を始めてから覚えればいいんです。というか、仕事しないと
覚えられません。
>「なぜDelphiなんだ? C++でやれ!」 そんなこといわれると、「なぜC++なんだ? 」って聞き返したくなるなあ(w 慣れてる言語でやるのがいいのにさ。
395 :
デフォルトの名無しさん :2001/06/20(水) 17:40
>>391 VCでなくC++、C等、特定製品に依存しない部分を覚えるのがいいぞ。
DelphiはDelphiでいいと思うけどね。
>>393 同じく仕事で覚えた。
Z80ASM→N88BASIC→TurboC++→MS-C→LSIC-80→BorlandC++→C++Builder→Delphi
>>394 100人以上いる社員の中でソフトを書く人は2人しかいません。
だから後継者を考えるとメジャーな言語で統一した方がいいということです。
後継者にDelphiを覚えさせりゃいいだけ。俺が書く規模なんてたかがしれてる。
397 :
デフォルトの名無しさん :2001/06/20(水) 20:14
Delphiも使えるプログラマ、ならいいけど、
Delphiしか使えないプログラマ、になると痛いけどね。
RADでしか仕事できないようになっちゃうと潰しがきかないから。
>>396 さんのこと言ってるんじゃないですよ。一般論として。
399 :
デフォルトの名無しさん :2001/06/20(水) 21:08
delphiで配列データを描画したいのですが、 どのような方法がありますか? (アニメーションをさせてみたい)
(・∀・) 400!
>>399 書かれている意味が全くわかりません。こういう事ですか?
procedure TForm1.Button1Click(Sender: TObject);
const
Ary: array[0..9] of Integer = (1,2,3,4,5,6,7,8,9,10);
var
I: Integer;
begin
for I := Low(Ary) to High(Ary) do
begin
Form1.Canvas.TextOut(10, 10, IntToStr(Ary[I]));
Invalidate;
Sleep(500)
end;
end;
402 :
399 :2001/06/20(水) 21:22
>>401 あ、ちがうです。ピクセルに対応したRGB配列に従って
描画したいのです。
わかりにくくてすみません。
403 :
デフォルトの名無しさん :2001/06/20(水) 21:31
(゚Д゚)y─┛~~ 403!
404 :
デフォルトの名無しさん :2001/06/20(水) 21:37
405 :
399 :2001/06/20(水) 21:49
>>404 どうだと効率よいのですか?
イメージとしては、今3Dのrendering engineを作ろうとしているのですが、
そのためにRGBの配列に書き込んでそれをダブルバッファリングするなりして
描画したいのれす。
406 :
デフォルトの名無しさん :2001/06/20(水) 21:51
Cancas.Pixels[x,y] := TColor(Ary[I]); かな?TBitmapのScanLineプロパティの方が早そう。
407 :
406 :2001/06/20(水) 21:53
X Cancas -> O Canvas DelphiXの中のTDIBにもScanLineプロパティあります。
それともTImageListに格納しておいて一気に描画したほうが 早い?
409 :
デフォルトの名無しさん :2001/06/20(水) 22:05
余程フローに自身があるのならアレだが、 GL使うってのはNGなの?
>>398 オレ昔はDelしか使えなかったんですが
結局他言語の仕事が入ったら適当に出来るようになったんで、
本人さえ少しやる気だせば潰しなんてどこでも効くと思うよ。
でも
やっぱ慣れている&Delphiがいろんなことがやりやすい
ので
生産性とか考えると、普通の業務アプリ仕事では
Delphiしか使う気にならないんだけどね。
逆にRAD嫌いってのも相当、痛いよ。
Javaサーブレットに適当なテストプログラム動作させるときに
ある関数を作っていて
普通、JBでボタン作って一瞬でテスト可能&
トレース実行でデバッグ完璧なのに
JBの使い方知らない&当然GUIの作り方知らない
からってサーブレットごと稼動させてテストしちゃう人もいるし。
411 :
399 :2001/06/20(水) 22:40
>>406 ありがとうです。pixelは試してみましたが
毎回更新をかけているのか遅いのでダメです。(><
>>409 OpenGLやDirectXの方が実用的だとは思いますが、
勉強のためにpolygonやlineの描画から実装したいと思いまして。
412 :
399 :2001/06/20(水) 22:58
>>397 どこがカッコいいのかよくわかんないんですけど・・・。
>>398 ちょっと耳が痛いな。ダラダラ書けてしまう環境に慣れちゃってるので。
これでもC++ソース300本の独自ライブラリ構築とかやってたのに、
あの頃の勢いは一体どこへ。トシか?
>>410 一番楽に感じるのは何も考えずにソースデバッグが出来てしまう所。
BCBを選ばないのは、コンパイルが遅いのと、ANSI C++準拠なのに
標準的な書き方にとどまらない所。
414 :
デフォルトの名無しさん :2001/06/21(木) 01:07
時間が出来たので久々にプログラムでもやろうと思ってます。 で、現行の5を買っても6への無料アップグレードって出来ないんですよね? 待ったほうがいいですか? すぐに必要ではないのですが、 あまり待たされるのも嫌なので。
415 :
デフォルトの名無しさん :2001/06/21(木) 01:11
趣味でやるなら5と6はほとんど変わらないよ。 安定している5を買っちゃっていいと思うよ。
416 :
:2001/06/21(木) 01:42
>415 なんかそんな感じだね。 TListはどう変わるの?
>>410 >JBの使い方知らない&当然GUIの作り方知らない
お前も十分イタイ(藁
DelphiでWin32APIでゴリゴリゲーム作ってるおいらはどうなるんですか。
それでもやっぱRADツール使ってることになるんかな。
>>399 TBitmapのScanLineは激重ですのでご注意を〜。
たぶん自前DIBでやったほうがいいよ。
自分で読み直すとちょっと痛かったですな。スマソ 新しい物に対応する柔軟な頭を持つのは どこにいたって大切ですよね。
>>419 どもっす。DIBを使ってがんばりまっす。
422 :
デフォルトの名無しさん :2001/06/21(木) 15:03
今、ポインタを使ってる部分を function AddPtr(s:Pointer;d:Integer):Pointer; var sp:PByte absolute s; begin Inc(sp,d);Result:=s; end; みたいな関数作ってやってるんだけど、みんなはどうしてるの?
423 :
デフォルトの名無しさん :2001/06/21(木) 15:13
>>422 俺はループの中で Inc(PByte(s),d) とやってます。関数を使うと
オーバーヘッド最悪では?
424 :
422 :2001/06/21(木) 16:05
>423 そうなんだけど 特定の位置から切り出してコピーとか 連続コピーじゃない時には、そういう訳にもいかないし CopyMemory(dp+dindex , sp+sindex , dsiz); とか書きたい時 savedp::=dp; inc(dp,dindex); CopyMemory(dp+dindex , sp+sindex , dsiz); dp:=savedp; てな感じになるものなんだか
425 :
デフォルトの名無しさん :2001/06/21(木) 16:25
>>419 "そういうAPIを使うコンポ"を自作したりはするでしょ?
それとも全部ベタ書き?
例えば畑違いだが、MIDIのAPI(MCIじゃない)を使った処理を毎回アプリにごりごり書くより
MIDIコンポを一発作っておいたほうが、当然ながら楽なわけで。
しかも(どっかの言語処理系と違って)コンポ化しても処理効率なんて全然落ちないし。
(他のコンポへの)ポインタとかもプロパティにしちまえば、アプリ作成はめちゃ楽。
…っていう話かなと思うんですが、どうでしょう?
>>422 absoluteの使い方、はじめて見た。
ヘルプには説明これっぽっちも書いちゃいねえ。
type
ByteArray = array[0..High(Integer)] of Byte; // <--定義済みだけど。
PByteArray = ^ByteArray;
var
dp, sp : PByteArray;
dix: Integer;
begin
CopyMemory(dp[dix], sp[dix], dsiz);
でどう?
>>426 これではダメかい?
>既存の変数と同じアドレスを占有する新しい変数を作成するには,
>アドレスではなく既存の変数の名前を absolute の後に記述します。
言語ガイドより。
428 :
422 :2001/06/21(木) 16:48
>>426 おお、なるほど、 @dp^[dix] をそう書けるのですね?
次の疑問なんですが、
APIコール時によくある dwInstance : DWORD にSelfを渡したい時
やっぱりabsolute使った無理やりなコードになりがちなんですが、これも
綺麗に書く方法は?
DWORD(self)は駄目ですよね?
429 :
デフォルトの名無しさん :2001/06/21(木) 17:19
繰り返しでてる質問なんですが、Array[0..x] of CharとStringはキャスト不可能なんでしょうか?
430 :
デフォルトの名無しさん :2001/06/21(木) 17:20
>>424 そういうときは
CopyMemory(Pointer(Longint(dp)+dindex), Pointer(Longint(sp)+sindex), dsiz);
と書いている。
または
>>426 さんが書かれているように PByteArray を定義して
CopyMemory(@PByteArray(dp)[dindex], @PByteArray(sp)[sindex], dsiz);
でおっけー。
>>428 安易に absolute に頼るのやめましょうよ。ちなみに DWORD(Self) で良いのです。
ポインタのことをもっと勉強した方が良いと思います。
>>425 レスthanx。
自分の場合、APIを使うコンポはほとんど作ってません。
ノンMCIなMIDI再生ルーチン実装した際も、class(TObject派生)化のみで終わらせました。
いや、コンポーネントにするとインストールが面倒なので。
あと、ソース配布時も相手側が面倒ですし。
というかそもそも、非VCLアプリだと場合、コンポーネント貼り付けられませんです(藁
(フォームなんてないので)
陽子chanをいじめるな!
>>429 PCharにキャストしてからStringにキャストできないかな?
試してないんだけど。
>非VCLアプリだと場合、コンポーネント貼り付けられませんです(藁 わはは。まぁそれは有るか。 ただ、うざいならIDEにInstallせずに使うという手もあるわけで、 それはそれかなと。あと単なるCompositeパターンを組むレゴブロック (?)として使うという手もあり、つまり親子関係をテキトウに作っておけば 最後に消すときに頂点一発殺すだけで全部死ぬので楽、というメリットも。 そんなこんなでComponents[]プロパティを結構くだらない用途に一杯使ってみたり。 まぁ今ならCollectionとか使うほうが良いだろうけど、 時としてD1で動くコードも書かないとならないし(藁 そういやガイシュツだけど「Installが面倒」ってのは Delphiの鬱ポイントですな。 IDEにInstallするというスタイルにこだわりすぎ。
435 :
422 :2001/06/22(金) 09:51
>>430 ありがとうございます。了解しました。
複素数もどきの処理をしたいとき オブジェクト型を使うと
type THoge =Object
public
x,y:Integer;
procedure Add(d:THoge);
procedure Copy(d:THoge);
procedure data(re,im:Integer);
function toStr:string;
end;
function THogeAdd(const a,b:THoge):THoge;
begin
Result.Copy(a);
Result.Add(b);
end;
といちいち Createしなくていいので便利そうなんで使ってみたい
んですが、ヘルプに<オブジェクト型の使用はお勧めできません>と
あります。これは何か問題があるという事なんでしょうか?
クラス型を使うと、こういう時、誰が開放(削除)するかで悩んで
しまうんで、使いたくないんです。
それから、 THoge内のメソッドで
procedure Add(const d:THoge);
とconst を付けると 実装時に定義が以前と違うというエラーが出ます
>>433 Array of Charだとできるけど、Array[0..x] of Charだと駄目みたい。
Delphiって静的配列の扱いがいまいちよくわからない。
というか普通にポインターを使うことはできないんでしょうか?
>>435 こんなことできるの?知らなんだー。マジで?
439 :
422 :2001/06/22(金) 12:07
>436 c:Array of [0..n] of Char; への代入なら StrLcopy(@c,PChar(fromStr),High(c));
440 :
422 :2001/06/22(金) 12:13
忘れてた。 逆の文字列型への代入はそのまま Caption:=c; みたいに代入出来ますよ で、Object型の事なんだけど、資料が無いからよく判らない。 constructor destructorを定義してもC++みたいに、自動的に呼ばれる訳じゃない? みたい まあ複素数もどきの場合は無理にデストラクタ定義する必要はないけど Object型にClass型をメンバーに持たせたいような場合、 例外発生時に Class型メンバを解放する方法がないような・・・・ あ、だから<オブジェクト型の使用はお勧めできません>なのか?
441 :
デフォルトの名無しさん :2001/06/22(金) 12:14
パスカルってどんな言語だったんですか?
>>440 C++のstructみたいな感じなのかな・・・。
そういや、Object型ってTurboPascal時代のものじゃなかったっけ? 互換性のために残してあるとかどうとか
>>438 多分、Array[0..x] of Charにこだわるのは、NMUDPが引数に要求するからじゃない?
ずっと前に質問してた人が、確かそんな風なこと書いてたし。
>>436 俺が前にSntpClientを作った時は
TSntpData = packed record
(省略)
TransmitTimestamp : TSntpTime;
end;
SntpData : Array[0..47] of Char;
PSntpData : ^TSntpData;
PSntpData := @SntpData;
T3 := PSntpData.TransmitTimestamp
NMUDP.SendBuffer(SntpData, 48);
こんな感じで逃げたんだけど、今ならIndyを使うよ(w
どうしてもStringを使いたいなら、内容をStringからArray[0..x] of Charにコピーする
しかないと思うよ。キャストは無理臭い。
>>444 暗号関連で巨大な素数を得たい時に、無限桁数数値演算ユニットが欲しくなるけど
演算子オーバーロードが使えないから、なんだかブチャイク。
文字列の扱いで例外的に適用してるんだから、ついでにこれも標準で実装して欲しい。
>>446 Builderで実装されてる(C++だから当然か)から、出来ないはずはないんだけどね。
448 :
422 :2001/06/22(金) 12:47
>>448 面白いものがあるのですね。全然しらなかった。
伝説のギコBASICの末裔ですね。
無限桁数数値演算ユニット
には割り算の余り計算にバグがあったので修正必です
作者には連絡済みだけど忙しくて更新まだみたい。
必要があれば言ってください。
整数だけだけど、とてつもない数値を扱う場合かなり便利。
Delphi の ツールバーやメニュー で Explorer とかと同じように画面 サイズを縮めていったら [>>] をだすにはどうしたら良いですかね? コンポでも良いので教えてください。
452 :
デフォルトの名無しさん :2001/06/22(金) 18:38
>>450 えっと、Win32タブの右端にあるやつ(名前忘れた)。
おんなじアイコンしてるから分かると思うけど。
D4以上です。
454 :
422 :2001/06/22(金) 21:08
455 :
450 :2001/06/24(日) 01:56
私が得をする情報をタダでください。 それによって私は大変な恩恵に預かりますが、あなたには何の メリットもありません。 でも、いいじゃないですか? どうせ情報なんてタダでしょ? とても困っているので、情報を知っている人は私を助けなければ いけません。これは義務です。 初心者にも分かるように説明してください。 私は、ごく普通の人間なので、パソコンのわけの分からない知識は ありません。勉強するつもりもありません。時間の無駄です。 検索するなんて面倒です。どうしてそんな面倒な事するの? 知ってる人に聞けばいいじゃん。どうせタダだし。 マルチとか質問スレというのはヲタクのルールです。 私は普通の人間なのでヲタクのルールなど知ったこっちゃありません。 早く教えてください! 早く教えろ! 早く! これだけ言ってもまだ教えねーのか?!
456 :
デフォルトの名無しさん :2001/06/24(日) 02:46
いやだね〜♪
おれも教えたくないね〜♪
459 :
453 :2001/06/24(日) 07:28
私が得をする情報をタダでください。 それによって私は大変な恩恵に預かりますが、あなたには何の メリットもありません。 でも、いいじゃないですか? どうせ情報なんてタダでしょ? とても困っているので、情報を知っている人は私を助けなければ いけません。これは義務です。 初心者にも分かるように説明してください。 私は、ごく普通の人間なので、パソコンのわけの分からない知識は ありません。勉強するつもりもありません。時間の無駄です。 検索するなんて面倒です。どうしてそんな面倒な事するの? 知ってる人に聞けばいいじゃん。どうせタダだし。 マルチとか質問スレというのはヲタクのルールです。 私は普通の人間なのでヲタクのルールなど知ったこっちゃありません。 早く教えてください! 早く教えろ! 早く! これだけ言ってもまだ教えねーのか?!
>>459 ところで453というのはTypoかね?
いや単なる確認だが。
嵐に反応はしないこと。
>>461 ,463
お前ageるかsageるかどっちなんだよ(w
今時情報がタダだと思っている人間は日本から出て行け。 だからCD-ROM一枚なのに何十万もするの?何て言われたりするんだ…
>>454 バグはオレがすでに修正済みで作者にも連絡してます。
>>452 -453
PageScrollerではないと思う。
Explorerでポップアップするツールバーの事じゃないかな?
嵐がいるらしいのでsage
455,459は他のスレにもコピペされてる。反応するな。
468 :
422 :2001/06/25(月) 07:07
>>466 そうですか、でも100進法も10進と同じくらい書くのは楽ですよ。
メモリーの消費量は半分だし、計算も倍速い筈。
文字列との変換も100進だったら殆ど負荷にならないし
後は 小数点付き割算さえ書けばギコbasicでパイの計算とか
出来るようになる筈。
469 :
デフォルトの名無しさん :2001/06/25(月) 17:24
こんな 手続きって定義されてないんですか? procedure FreeAndSetNil(var obj:TObject); begin obj.Free; obj:=nil; end; 必要ですよね?
FreeAndNilという名でD5にはある。ちなみに自作するときは 引数は(var Obj)にして、関数内でキャストする必要がある。
>>469 , 470
Borland 身内のやらせっぽいな。
そんなしょうも無いやらせしないだろ。
473 :
469 :2001/06/25(月) 19:54
>470 ありがとう。 いちいち外で as TObject つけてた・・・・ソースみて納得 >471 うん。 自分で言うのもなんだけどこんな低次元でやらせって?
MLで検索すると 昔、「そういうのが欲しいなー」 と話題になっていて 新しい版でFreeAndNilが こっそり実装されていた、というお話があったはず いと、なつかしや
>>471 「おぉ、FreeAndNilだ。Delphi買おう!」って奴はいないだろ。
procedure MyFreeAndNil(var obj); var p: TObject; begin if TObject(obj) = nil then exit; p := TObject(obj); TObject(obj) := nil; p.Free; end; とりあえず,自分の使ってるのを。こんなんでどうよ。 問題は、TObject以外のものでも引数として渡せちゃうことかな。 (関数名は適当に読み変えてね)
477 :
デフォルトの名無しさん :2001/06/25(月) 23:32
>>470 >>476 なんでvar obj:TObject では駄目なんでしょうか?
駄目といえば。
case文でObject参照変数が使えないのは結構がっくりだった。
たしかにcase文は順序型にしろってことになっているが、
case文の本質(?)から考えるに、真に必要なのは
「識別型(こんな用語はPascalには無いが、判るべ?)」であって、
順序型は識別型の一形態(サブクラス?)に過ぎない。
というわけで、Object参照でcase文をやれるようにしてくれー。
478 :
デフォルトの名無しさん :2001/06/26(火) 00:39
>>477 is とかのRTTI演算子では駄目?
確かにif文の羅列になってしまいそうだけど・・・
>>477 Kylix で case 文、拡張されていなかったけ?
>>478 isはクラスがわかるだけ。Instanceを特定するものじゃないわけで。
case hoge of
Label1 .....
Label2 .....
なんてやりたかったわけね。
識別型と順序型の差は「範囲」という概念の有無なわけだけど、
ならば非順序型な識別型を使うときには
範囲指定が出来ないようになってりゃよいわけで…。
脱線だが。C言語のポインタが駄目なのは、ポインタを識別型として認める
だけならまだしも、順序型としてまでも認めてしまってる
(整数との加算なんて阿呆なことが出来るのはそのせい)
という点なんだろうな。
>>479 まぢ?ってことはD6もってこと?わーい。買おうっと。
479はどんな風に拡張されてかまでは言ってないし、D6で実装されているという保証もないぞー。
とはいえ、期待しちまうが。
483 :
デフォルトの名無しさん :2001/06/26(火) 12:47
VBで文字列がselect caseで使えるのはイイ感じ。 D6で拡張されるなら、そっちが先じゃないか?
> VBで文字列がselect caseで使えるのはイイ感じ。 俺はあれあんまり好かないなあ。 というか、JavaやRubyみたいにStringがObjectになってる言語だと、 selectの発動に「同一性」じゃなく「同値性」を使うというルールにすることで (つまり同値性を検出するメソッドを用意する義務があるということ) 統一的に語れるようになるんですっきりするんだが、 そうでない言語だと、どうしてもアドホックな文法拡張に走らざるを得ない んで、ちょっとうんざり。直交性ってのかな、あれが低くなる。 もとより(delphiというより)pascalは、そういう古典的言語の悪い面も 少しひきずりがちな言語なんで、これ以上増やさないことを希望。 言いかえれば、StringをObjectにするってのを希望。 そうすりゃ多少モダンになるので。 OOP拡張がそうであったように、他の部分も少しづつモダン化してほしいなあ。
485 :
turbo type D :2001/06/26(火) 14:24
equalsだっけ? StringをObject化はオレ反対。 あれ美しくない気がする。 モダンなの? そういえばC#って文字列はどうなっているのでしょうか? caseでオブジェクトを判定するのも違うと思うな。 >OOP拡張がそうであったように、他の部分も少しづつモダン化してほしいなあ。 いつか変化する時がくるんでしょうね。
486 :
デフォルトの名無しさん :2001/06/26(火) 14:57
>480 case で ケースリストになるのは 定数だけ 一方、Label1 Label2は変数だから、それを許すなら caseで変数を書くのを許さなければならない DynamicCase 文とか新設するのかな?
487 :
デフォルトの名無しさん :2001/06/26(火) 15:14
>>485 すべて同感。
ある二つのオブジェクトが同じインスタンスを指しているか判断する必要が
出るようなコーディングは駄目だと思います。
>>487 あ、オブジェクトが同じインスタンスを指しているか判断する
コーディングは時々必要かも。
でも、それを単なる文字列比較ではしたくないっす。
で、もう一つ。Javaの文字列で
StringクラスとStringBufferクラスがある変な構造もとてもイヤ。
StringBufferだけでいいと思う。高速化のためだけに出来たんだっけ?>>Stringクラス
Javaが美しい言語とはとても思えなかった。
>>486 DynamicCaseは検討する価値あるかも。
しかし、そういう基本部分での改変は無い方がいいという意見も多そうだ。
>>488 >オブジェクトが同じインスタンスを指しているか判断する
>コーディングは時々必要かも。
ええと。まず前提として、「Object」と「変数」は
厳格に区別してくれ。そうでないとこういう話題は
混乱するばっかりで話できないので。
上記を字面通り解釈したら意味不明だよ?
ObjectとInstanceは同義語だから。
もしかしてやっぱり、Objectじゃなくて「変数」と書きたかったのではなく?
で、そうだと仮定して。
必要です。断固として必要です。二つのObject型変数(=ポインタ)が
実は同じObjectを指しているかどうか?ってのは、OOP的には
ひじょーに大事な問題です。
昔の言語みたいに、情報をなんでもかんでもコピって持ち
必要になったら比較をする、ってのは、ダサイし、
「同一性が」重要な問題である場合には、他に解決手段はない。
>でも、それを単なる文字列比較ではしたくないっす。
ん、なんか話が合ってないな…
case文において「等しい」かどうかを評価するためのメソッドを
クラス(Stringも含めて)ごとに自由に定義すりゃいいんです。
どんぴしゃ同一ObjectじゃないとOKじゃないというクラスがあってもいいし
Stringが典型的だろうけど内容比較(つまり同値性)で評価するクラスもいい。
>StringクラスとStringBufferクラスがある変な構造もとてもイヤ。
>StringBufferだけでいいと思う。高速化のためだけに出来たんだっけ?
面食らうけど、別におかしくないとも思う。
というのは、StringBufferはStringを「所有」してると考えたら、
いいんじゃないの?ということ。
StringBufferの「内容」はStringであり、そいつが
「書き換わる」
ということは、内容であるStringオブジェクトが
「置き換わる」
ことと等価である、
という風に考えたら…どう?
>>489 失敬。
オブジェクト変数が同じインスタンスを指しているか判断するコーディングは必要かも。
って意味でした。
>case文において「等しい」かどうかを評価するためのメソッドを
>クラス(Stringも含めて)ごとに自由に定義すりゃいいんです。
やはり、DynamicCaseが必要かも。(ワラ
StringBufferとStringの見方/考え方は
オレには斬新でした。なるほど。
読んでいたJava初心者本がダメだったかな。
さっきの某DelのMLの投稿で「人工無能検索エンジン」に納得sage。
ところで真面目な話、Delphiのコードエディタに、 再変換対応が欲しいと思っているのは俺だけか? コメント書くときとか、Typoや誤変換で再変換できたら と思うことがよくあるのだが。
493 :
デフォルトの名無しさん :2001/06/26(火) 23:52
プログラム超初心者です Delphiの本って すごく少ないですよね。 みなさんどうやって勉強なさっておられるのですか? お勧めの本って ありますか? 切実です。 宜しく御願いします
Object Pascal言語ガイド
Delphi2.0J 32bitパワープログラミング(インプレス) ・・・初心者向けではないけどな。
>すごく少ないですよね そうか?本屋にいけば取り敢えず 両手で抱えきれない(某有名人が言うには、 それが読める限界量らしい)くらいの種類は 出てるように見えるが? ドキュソな本ばかり数あっても結局無駄だったり有害だったりよ。 自分の本選び目が十分鍛えられてる人なら そんなゴミの山の中から宝を見つけられるかもだが、 そうでないなら多いほうが却って不幸かも。
>>493 いきなりオブジェクト指向言語か。
Delphiでよかったな。
即レスが
>>494 は少々厳しいと思うが(w、
マジな話あれも悪くないと思われ。
VCLについてはDelphiのヘルプが一番、
いいと思う。ワンキーヘルプだしな。
あとDelphiには糞な参考書はVCほど多くないから、
ハズレをつかみにくいと思われる。
書店で読んでみて、サンプルコードが多く、
説明が丁寧か、オブジェクト指向について詳しく
説明しているかがポイントと思われる。
そのポイントで探せばよいのでは。
嘘こいていたら他の人フォロー頼む。
大分かぶった。少々ウトゥ。
>>499 確かに厳しいか。すまん(w
言語仕様をある程度把握してからしかその言語を使わないので。
CはK&R2版、C++はARMをまず買っちゃうんだよ。
Z80はニモニックとオペコードを叩き込むことからだったし(w
>>501 そーゆー姿勢の人のほうが好感持てるなあ。
いきなり体当たりってのは、
なんでもかんでもに適している方法じゃないはずだから。
半可通のまま突っ走るってのは滑稽だし傍迷惑だから
まず仕様をあたるってのが正解だと思われ。
>>498 すまそ。ドキュという単語で想定した対象(藁)は
とーぜんだがDel方面でわない。
YahooのDelphiに紹介されているユーザーの作ったページは とりあえず全部目を通そう。 なぜかsage進行なので、オレモ
>>502 でも今の時代はどうだろ、と思うよ。
DOSの時代だと言語仕様とわずかな関数さえ覚えればなんとかなった。
WindowsだとVCLなりMFCなりOWLなり(w)から入って、そこで必要な
言語仕様を覚えるというスタイルの方がいいんじゃないかな。少なくとも
職業プログラマとしてはそっちの方が実戦に投入しやすいかと。
でも、言語仕様をおろそかにすると、ソースにいきなり select〜fromなんか
書いちゃったりするんだよな(w
新人研修はしっかりやらないとダメです。
506 :
デフォルトの名無しさん :2001/06/27(水) 01:43
最近、Delphi6無料アップグレードキャンペーンに 釣られてDelphi4から5にupgradeしたんですが、ListViewの OnMouseUpイベントで右クリックだけ捕捉できないときがあるんですが、 これって対策あるんでしょうか? すばやくクリックしたりすると反応するみたいですが・・・・
なんか、ですがー、が多い文になってしまった・・鬱・・
>大型の本屋に行けば Delphi 関連書籍が結構あるので、簡単に読んでみてください。 東京近郊の恵まれた人の感想文だな。
510 :
デフォルトの名無しさん :2001/06/27(水) 03:15
大阪や神戸でもバッチリさ!
うちは田舎だから、ほんとDelphi本はほんと手に入りにくかったよ。 とりあえず、本屋まわりまくって、見つけた本を片っ端から買いあさったもんだ。
ちょっと質問。 SpeedButton+TabFocus持てるコンポって あったっけ? TButtonで代用しようとしたけどさすがに無理があった(w
>>513 ありがと。気が付かなかったよ。
パレットですぐ隣にあったのに。。。鬱打。
アマゾンテンコテンジェピー(.co.jp)があるよ。
>>514 ワラタ
>>515 アマゾンでいいだろ?
まさか仮面ライダーと間違える奴はいないだろうし。
自己レス
>>505 >新人研修はしっかりやらないとダメです。
Delphiを教えてもらったんじゃないのか・・・。
SQL、小文字で書いてあるとよくわからん
519 :
デル房 :2001/06/27(水) 19:28
しかしさぁ、Delphiマガジンって、どんどん糞になってくよなぁ。 今月出たやつなんか、「何か。」系ソフト?を作る記事だし。その上 サンプルソースのフォントが馬鹿でかい!これでページ数稼いでる。 だんだんD++みたくなってきた。創刊号から買ってきたが、さすがに もういらねーよ。まるで役に立たない。サイテー
Delphiマガジンって表紙に少女が載ってるやつ?
>>520 そうそう。最近は変わったけどね。でも考えてみたら、あの頃
から何かすでにおかしかったよな。結局そーゆーヲタが作ってる
雑誌なんだろうな。あーこわっ!こんなもん買ってた自分に鬱
>>521 買ったこと無いよsageヽ(´ー`)ノ
うーん、みんな困ってないのかー>右クリックイベント互換性 しょうがない、自分でVCLを解析すっか・・・ FilerにエクスプローラライクのOLE D&Dとコンテキストメニュー 付けてると、思いっきりひっかかるんだよね、これ。
>>519 そーすなんかいらないんだよな。ネットで配布するだけでOK。
今号の表紙をみてDelphi仕事人訪問に期待したんだけど、中村氏が語っている
所がほとんどなくてがっかり。
「何か。」はいいと思ったけどね。初代偽春菜からチェックしてる身としては。
断っとくけど、ヲタではないよ。作者の異常な開発スピードに感銘を受けただけ。
初心者です。質問させてクダサイ。 今回初めて仕事でDelphiを使ってます。(アプリ10本くらい) 各プロジェクトにデータモジュール1つで単純につくっていこうと思ってたんですが、 一緒にやってる先輩(Delphi歴俺と同じ)が 「データモジュールはシステム全体で1つがいい」と云って譲りません。 先輩の理由: ・一つにしておけばテーブルに変更等があった場合は変更が楽。(データモジュールだけ直せばいい) ・おなじTQueryの使いまわしがきく。 だそうです。また、その為に以下の制限をかけるらしいです。 ・動的にSQLを直すのは不可(全てプロパティ設定) ・WHERE条件が違えば、別TQueryにする。 俺の懸念事項→先輩の回答 TDataModuleバカでかくなりません?→別にいい それぞれのプロジェクトで不要な分までメモリくいませんかね?→それほどでもない 一人がいじってると他の人は使えないんじゃ・・・→DataModule直しは担当をきめる 取得する項目は?→SELECT * で全部引っ張るようにしておく 更新用SQLは?→INSERT用、MODEFY用、DELETE用ってつくっとけばいい TUpdateで更新したいときは?→それ用ってつくっとけばいい なんか昔、Delphi以外の開発でレスポンスのためにプログラムそれぞれのSQLを見直す のがすごい大変だったらしく、SQLは1元管理するべきだという主張を譲りません。 俺はDelphiでの開発経験がないので、先輩の主張でつくっていく事になったんですけど 俺はすごい不安なのです。(先輩も今回が初めて) 先輩方式で開発するのって正しいんでしょうか?
>>523 漏れはそれより、OSのポップアップメニューの扱いに困ったな。
W2kなんだけどさ、MouseDownでポップアップしたほうが素早く
動作しているように見えるじゃん。
それでMouseDownでポップアップさせていたんだけど、メニューに
フォーカスが移らないんだよね。
カーソルとか押してもメニュー選択できないし、ESCで閉じられないし。
で、サブクラス化とかはだめなん?
試してないから何ともなんだけど。
中村@NECさ〜ん、署名のメールアドレス違ってるよ〜。
528 :
デフォルトの名無しさん :2001/06/29(金) 00:01
>>525 質問するならせめてageたら?
データモジュールはあってもなくてもいいくらいだから
好きにしたら。
先輩の拘りは意味不明。
TQueryは必要最低限でよし。
>・WHERE条件が違えば、別TQueryにする。
いくつTQuery作る気?
529 :
506 :2001/06/29(金) 00:10
>>526 まだ、軽く自作のフリーソフトを再コンパイルしただけなんで、
まともにいじってないんだよね。一応、4万ステップぐらいある
コードだけど、特に問題なくコンパイラが通ったから、やたー、
とか思ったんだけどな(;´Д`) ぬかよろこび。
あと、これを直しても少し待てば到着するDelphi6でどーなるか
わからないので、あんまりいじる気がしないというのもあるが(w
530 :
デフォルトの名無しさん :2001/06/29(金) 00:12
>>525 >・一つにしておけばテーブルに変更等があった場合は変更が楽。(データモジュールだけ直せばいい)
この類の屁理屈は、かつて構造化言語が普及し始めたころに、
それに反駁する古典ドキュがグローバル変数を擁護するときに
使った屁理屈と、似ていると思う。
つまり、「どこでどう使いたくなるか判らないから、
全部みえみえにしとくほうがいいべ?」という理屈だ。
情報隠蔽がどれほど便利な概念か、まるでわかってない奴の意見、ですね。
さよなら、きみ。
というわけで俺も、その先輩=ドキュ、というほうに一票。
>一人がいじってると他の人は使えないんじゃ・・・→DataModule直しは担当をきめる
#ここでは「使える」てのは「ソースを修正できる」って意味だよね?
本末転倒もいいところだね。
そうやって恥の上塗りをし続け、
プロジェクトを加速的に破壊してくわけだ。
XPとまで言わなくても、ソースなんてのは
責任者一人に固定したら死ぬものだよ。
蛇足だがVSSかCVSお勧め。美しいコーディング作業スタイルを
導入して、ドキュ先輩を精神崩壊させてあげましょう。
ところで、これだけ綺麗に(=判りやすく)
自分とこの問題点を抽出できるなんて、
あなた、初心者だなんてのは謙遜でしょ?でしょ?
データベースって全然知らないんだけど。 TQueryって同時に使用する分だけでいいんじゃないの? >・WHERE条件が違えば、別TQueryにする。 なら、SQL文を文字列配列かなんかに入れておいて、都度TQueryにつっこめば いいような気がするけど。 なんでもかんでもポトリペタリするのは好きじゃないな。
関数つくってSQL投げたら
関数内部でTQuery作って更新して破棄するってのなら
まだわかるが、(無駄臭いけど)
ポトペタでTQueryを沢山貼り付けてるってのは
ゴミ以外になんでもないよな。
>>531 好きじゃない以前に531さんの方が正しいです。
533 :
デフォルトの名無しさん :2001/06/29(金) 12:30
フォームとデータモジュールのライフタイムはシーケンス図 などを書いてハッキリさせておこう。 画面数が増えてくると生成・破棄のタイミングがやっかいなのよ・・・ (プログラム開始時に作りっぱなしでいいのかな?)
534 :
デフォルトの名無しさん :2001/06/29(金) 14:38
TDatabaseやTSessionは一つのデータモジュールで管理すると便利 かもしれませんね。あと、共通で使う単純なクエリならまとめて おいてもいいと思います。 >・一つにしておけばテーブルに変更等があった場合は変更が楽。(データモジュールだけ直せばいい) Stored Procedureが使えるDBならSPにした方がいいんじゃないですか。 >取得する項目は?→SELECT * で全部引っ張るようにしておく データの転送量は問題にならないんですかね。
>取得する項目は?→SELECT * で全部引っ張るようにしておく 病気だよ。
ああ、いっぱいレスついてる。皆さんありがとうございます。
>>528 いや、sageが身についているので小心者なので・・・
TQueryいっぱいつくるです。トホホ
>>528 プログラマ2,3人の小人数なので・・・
なかなかに手強いのですよ。
Delphi初心者ですということで・・・
>>531 そうすると、プログム単位での修正になっていくのでイヤらしいです。
>>533 そうですよね。単純な仕様書だけではちと不安な部分もありました。
プログラム作成時に作りっぱなしです。
>>534 本当に汎用性のあるSQLだけまとめるように再度、意見はしてみます。
データ転送のトラフィックよりDB検索時間のほうが気になるらしいです。
先輩方式でつくっていくことになっちゃいました。
非常に作成が複雑になっています。
いまさら後にも引けないし、自分のおよぶ範囲で頑張ってみます。
失敗しないといいなぁ・・・
537 :
534 :2001/06/29(金) 16:03
>データ転送のトラフィックよりDB検索時間のほうが気になるらしいです。 インデックスページだけ読めばすむところをデータページまで 読まなきゃならなくなる場合もあるので、検索時間にも影響が 出ます。
「DelphiにはVBのInputboxのようなものはないんですか?」 と、聞こうとして 念のため、ヘルプで調べたらそのままズバリのものがあったことを知り 鬱になる一初心者。 「Inputbox」という名称がわからなかったんじゃー。 質問するために調べてはじめて知ったんじゃー
539 :
デフォルトの名無しさん :2001/06/30(土) 06:54
いま手に入る本を片っ端から買ったんですが、、、よぐわかりません〔泣〕。 「わかる人だけわかる入門書」ばかりな気がします。 皆さんはDelphiの前にちがう言語などやってられたのでしょうか? 超初心者には手に負えないもの、、でしょうか? 初カキです。
いきなり「Delphi32Bitパワープログラミング」とか買ったりせんかぎり大丈夫だと思うけど。 (おれは買ってしまった。DirectXの記事のために・・・) おれの場合、構造化BasicとC(少し)はやってたなー。 でも、超初心者でもなんとかなるもんだぜ。 とりあえず、ベーマガ買ってゲーム打ち込んで慣れてみるとか(w
>>539 マジレスしちゃいます。
俺はVBから入って、単純な整数演算でさえ遅い
VBに限界を感じてDelphiに入ってきた厨房です。
自分の場合、まずは自分がどういう物を作りたいのか、
を整理して、その中でさらに、UIを実装するには、
基本的なロジックはどう実装するか、とか目的を細分化し、
それぞれの目的を達成するにはどうすればよいか、
を調べて勉強してました。
んで文法とか言語仕様を覚えるのに参考書を買ったり、
それで分からなければ試行錯誤やヘルプを全文検索
したりとかしました。
とりあえず他の方のもっといい意見きぼーん。
542 :
539 :2001/06/30(土) 10:57
>>540 の方。
ありがとうございます。ベーマガですね。買ってみます。
>>541 の方。
ありがとうございます。目的の細分化。頂きます。やってみます。目的はRPGなんです。
すいません、いま調べたら「ご使用の前に」「クイックスタート」て言うのが出てきましたが、読んだほうがいい、、ですよね?
543 :
デフォルトの名無しさん :2001/06/30(土) 11:38
493です みなさん参考書の件 ありがとうございました とりあえず 秀和システムの 基礎から分かるDelphi5 を 買いました。 がんばってみます またなにかあったら 相談に乗ってください 本当にありがとうございました
>>542 君はまずそのRPGを作る前に、本屋に逝って
参考書を買って読むことを勧める。
識者の方よいDelphiの参考書情報きぼんぬ。
OSはW2kがいいと思う。フルテキスト検索とかあるし、
安定しているからな。開発中、保存する直前に
OSが例外0Eとかで落ちたら洒落にならない。
付属のマニュアルよりヘルプの方が検索性が高い。
マニュアルよりはヘルプをお薦めする。
状況感知型(名前忘れた、これであってるか?)の
ヘルプなので、使いやすいと思う。
コーディングはワンキーヘルプも使おう。
偉そうでスマソ。
546 :
turbo type D :2001/06/30(土) 14:25
作りたいものを作るのにはエネルギーが沸くけど 先が見えないと勉強がなかなか進まないよね。 昔TechWin氏に某ランドのオオノタンが 往年のハイドライドみたいなRPGを作るための 連載をやってたよ。 ありゃ、必読。解説はあまりなくてソースが中心だったけど どうにかバックナンバーを手に入れれるといいね。 国会図書館あたりでコピーさせてもらえるのかな
547 :
ソラン :2001/06/30(土) 18:51
業務システムを構築する事になったのですが、 例えば、売上入力とか入金入力とかって単位でexeを作成した 方が良いのでしょうか?それとも、1本のProjectで全てを記述 した方が良いのでしょうか、又は、もっと良い方法はありますか? 私は、サイズが大きくなって遅くなるのでexe=処理に分割した 方が良いと思うのですが、如何でしょうか? # 分割して作成するとしたら、exeだけで120本になります。
>>539 DOS時代Cをやってて、C++をやろうとしたが挫折。
WindowsでVBに手を出したが30分で使えないと判断。その代わりC++を
覚える大きな手助けにはなった。
C++Builderを買ったが小さいソフトを何本か書いただけで挫折。
Delphiに手を出したら、あまりのわかり易さに感動してメインの言語へ。
おかげでC++Builderも使えるようになった。
そんな感じです。
>>547 サイズが大きくなると遅くなるのですか? 分割したらその分のオーバー
ヘッドは確実に増えると思うのですが。
exeが120本って言われてもどんな規模なのかさっぱりわからない。
俺の方針は「そのプロジェクトにおいて」分割する理由があれば分割する。
「大きくなるから」ってのは普通分割する理由にならない。
>>547 分割したら120って、ちょっと分割しすぎでは…(焦)。
設計段階から見直したほうがいいのでは?
大体、分割するメリットはあるのか。549さんのコメントの通り、
分割した方がオーバーヘッドが増える。それでも分割するのは
それだけメリットがあるって事。
>>549 >>550 システムの内容は、販売管理+財務で、支店が30店舗、部課数
が25あります、各部課や支店のデータも連携させるって内容です。
(全ての入力画面や照会帳票の作表の種類が120種類って事です)
頻繁に使うプログラムってのは部課によって共通していたり、異な
ったりするので、120本全てのプログラム全ての部課が利用する
わけではありません、不要な処理まで1本のプログラムにすると
オーバーヘッドが大きくなるかな?って感じで個別に分割した方が
良いのでは?と私は考えていました。
それと、説明が不足していたのですが、部課の中には古いPCや
メモリが32MBってのも多くて小さい実行形式の方が良いかな?
ってのもありました。
取りあえず、設計の方はこれからなんで、やり直すって感じでも
ないのですが、検討してみます。ありがとうございました。
>>552 DB−WEBサーバ−GUI(HTML)−クライアントPC
554 :
デフォルトの名無しさん :2001/06/30(土) 22:16
>>552 某仕事のミドルウェアをCで作ったとき、モジュール数1000ちょいでしたが
全国で使用する為、LIB管だけで専属2人は必要でした。
開発効率だけ・実行環境だけで考えるとエライ目にあいます。
exeは適時分割すべきですが、むやみに似たロジックを別箇に分けると
環境構築時・アップデート時に玉砕します。
せめて動作の違いは引数で使い分ける等、工夫した方が良いです。
運用設計者と相談しましたか?
555 :
デフォルトの名無しさん :2001/06/30(土) 22:17
>>553 いやぁ、ネットに繋げられるとは限らんのじゃない?
>>555 >システムの内容は、販売管理+財務で、支店が30店舗、部課数
>が25あります、各部課や支店のデータも連携させるって内容です。
ネット接続を前提にしないと、連携が大変じゃない?
>>552 種類が120なのはわかったが120に分割しなければならない理由は?
個人的には設計・分析能力が全くないDQNマネージャーにしか見えないのだが。
>>552 まだ設計前の段階なのではないのかなと感じたが君は昔COBOLとかでシステムを
書いていたのか?正直モジュール分けは妥当ではないと思われる。
スペックの低いマシンが混在しているとの心配から分割したいと思って
いるのならば、553の方法を考慮した方が良いだろうと思われ。
理由は、ブラウザが動けばなんとかなるしアップデートにも楽に対応可能だ。
>>557 552みても分割したいって理由がわかんなかった?読みが浅いね。
557修行足りないな、逝ってよし。
そんなことより、みんなsageようね
>>558 なぜ選択肢が1本と120本しかないのかわからないが。
>>559 552は、「分割しなければならない!」といった書き方ではなく、
「分割した方が良いのか1本で作った方が良いのか」との質問でしょ。
彼にもわからないから聞いているのだろうし、分割したかった理由は、552に
書いてあるだろし、552の文書では1本にするとは書いていないようだが。
>> 552
個人的には、最近PHP+Cで同様のシステムを書いたことがあるが、Delphiで
書くよりもWebに関しては PHPの方が簡単であるとアドバイスを追加する。
>>547 に
>1本のProjectで全てを記述
># 分割して作成するとしたら、exeだけで120本になります。
と書いてあったらから 1本or120本 だと思った。
俺の読解力不足ということにしておいてくれ。
562 :
デフォルトの名無しさん :2001/07/01(日) 17:47
Delphi6 日本語版が待ち遠しいのですが、日本語版の情報はどこかで公開されていますか? 5 からの強化点が知りたいのですが。
www.borland.co.jp
564 :
デフォルトの名無しさん :2001/07/01(日) 21:59
Dlphiトライアル版で遊んでますが、いいですね。 VCほど難しくなく直感的、かつDLLも開発できるし、VBみたいにランタイム云々もないし。 で、買うなら今?それともver6がでるまで待ったほうがいいですか?
565 :
デフォルトの名無しさん :2001/07/01(日) 22:36
好きにしろ。
>>564 Learning版が20000円でProfessional版は68000円
>>361 を見るとD4Learning→D5Professionalバージョンアップが33600円。
D6でも同じだと仮定するとD5Learning版を買ってD6Professional版を買うと安くあがる。
参考までに。
D6Proは$999.00つーことで高くなるっぽいですね。 D6はWeb云々で特にエディタが使いやすくなることもなさそうなんで D5でいいかも。とりあえず英語ヘルプみながら60日過ごします。 どうもありがとう。
569 :
539 :2001/07/02(月) 03:55
>>544 の方、
>>545 の方、
>>546 の方、
>>548 の方ありがとうございます。
経過報告をいたしますと、どうも「クイックスタート」に知りたいことの大半が書いてあるようです。
基本中の基本が、売っている本に書かれていないのはそれが標準で付いてくるからですね。灯台下暗しでした。
クイックスタートをもういっかい丁寧に読んでからオンラインのチュートリアルに進もうと思います。ありがとうございました。
570 :
デフォルトの名無しさん :2001/07/02(月) 17:55
Delphi 6 の主な新コンポ TValueListEditor TLabeledEdit TColorBox TActionManager TActionMainMenuBar TActionToolBar TCustomizeDlg どんなものか、いまいち分からんのもある。
> TActionMainMenuBar いままで、オプションだったTMenuBar同等のもんってようやく標準になるのかな。
573 :
デフォルトの名無しさん :2001/07/02(月) 18:16
formにimageをくっつけてcanvasで描画した場合、 別にWM_PAINTに対するイベントハンドラを記述した覚えはないのに 他のwindowが覆ってもどうやっても描画内容が消えません。 なんで? 逆に再描画しないようにするにはどうするの?
575 :
573 :2001/07/02(月) 18:55
>>turbo type D ありがとう。ちょっとTImageとTPaintBoxを調べてみまっす。 なんかobject pascalってなれないなぁ。。 配列を引数に渡す時の挙動がどうもCとはぜんぜん違うみたい。。 配列名はアドレスってわけでもないみたいだし。。 call by valueとcall by referenceの思想の違いなんかなぁ。。
>>575 ポインタ使えないわけじゃないから、
Cみたいにポインタ渡しでもできんことないけど、やはりドロくさくなってしまう。
ここははやくObjectPascalに慣れてしまった方がいいかと。
どひー。Delphiマガジンをcbook24.comで注文して、今さっき届いたんだけど、 すごい安っぽい本やね、これは。内容はよさげなのだが・・・。
579 :
デフォルトの名無しさん :2001/07/02(月) 20:04
TListのようなサイズ不定の連想配列は今回もなし?>デル6 自動拡張される連想配列プリーズ、強く激しくプリーズ
>>578 そう、書籍は中身だ。
表紙に労力をかけなくてもいい・・・。
ついでに出来たら公開プリーズ
583 :
デフォルトの名無しさん :2001/07/02(月) 20:36
C言語における、 int arr[3]; int *ptr; ptr = &arr[1]; ptr[0] = 1, ptr[1] = 2; ってなことをobject pascalでやりたいのだけどどうすればいいの? var arr: array[0..3] of Integer; ptr: ^Integer; ptr := @arr[1]; ptr[0] := 1; ptr[1] := 2; だとだめなんだよ。。。たすけて!
ヘルプを見る気はないのか・・・。 ptr := @arr[1]; ptr^ := 1; Inc(Ptr); ptr^ := 2;
こんなんでも可。 type PIntArray = ^TIntArray; TIntArray = array [0..0] of Integer; var arr: array[0..2] of Integer; p: PIntArray; begin p := @arr[0]; p[0] := 0; // p[0] := でも可 end;
586 :
訂正 :2001/07/02(月) 20:57
× p[0] := 0; // p[0] := でも可 ○ p^[0] := 0; // p[0] := でも可
587 :
デフォルトの名無しさん :2001/07/02(月) 22:19
不正な浮動小数点演算命令というエラーは、どうやったら解決できるんですか? 実行してるときは、エラーでないのに、ステップ実行をすると不正な浮動小数点演算 命令と出ます。なぜなんですか?教えてください。
Pascalってポインタ駆使し始めるととたんに醜悪なコードになるんだよな。
589 :
583 :2001/07/02(月) 22:41
>>584 -586
ありがと〜。584の方法だとちょっと記述が冗長だし
585の方法だとわざわざtypeしないといけないのとarray[0..0]の範囲指定が気になったので
今回はもう、動的配列で逃げることにしましたです。
いやー、、ポインタが使いにくいね。delphiって。でもしょうがないのかな?
ポインタは危険だからあんまり無茶はさせないって設計思想なのかなぁ。。
またよろしくおねがいします!
>>589 そうだねぇ。C の場合にはポインタを使うことが前提だからね。
583 の例だと、伝統的 PASCAL 使いならアクセス用の関数/手続きを作っちゃうんじゃ
ないかな?そのほうが後で読んで意味がわかるし。
C くささから逃れたいのであれば、ばしばし必要な型を定義していくのが Pascal 流でしょう。
>>589 Delphi使い始めてからCのようなポインタを使わなくなった。
どうやって回避してるか・・・俺にもわからんのだよ、それが。
たぶん配列かTList系でやってるんだろうけど、書いてる時は全然意識してない。
元々のPascalにはポインタはなかったらしいから設計思想といやそうだろうね。
>>590 の最後、激しく同意。
593 :
583 :2001/07/02(月) 23:29
ついでにもうひとつ。 動的配列を割り当てるのにSetLengthを使ってるんだけど、 ・解放はどうなってるんだ? ・そもそもヒープに取られるのか、スタックに積まれるのか が気になっちゃいました。 newで割り当ててdeleteするなら分かりやすいんだけど。。 なんか参照回数を数えてて使われなくなったら解放するって GCみたいなことをやるって本には書いてあるけど。。 それならNewとかAllocMemとか要らないんじゃないか?と思ってみたり。 画を扱うのでメモリーは1MB以上欲しいのでスタックに積むとだめだし。 どうなってるんでしょ?
594 :
デフォルトの名無しさん :2001/07/02(月) 23:31
>>587 へんなところをアクセスしてない? 大体はそういう
単なるふつーのバグが原因。
他にFPUの例外が本当に出ていることもあるけど、これはマスク
をすれば直る。Set8087CWとかの項を読んでみそ。
595 :
583 :2001/07/02(月) 23:31
>>590 >C くささから逃れたいのであれば、ばしばし必要な型を定義していくのが Pascal 流でしょう。
・・・そうなんだ。肝に銘じてりっぱなdelphi使いになるように精進しまっす。
>>593 だからよう、ヘルプ見ろって。
>動的配列の割り当てを解除するには,配列を参照する変数に nil を代入するか,
>Finalize に変数を渡します。
NewとかAllocMemとかとは次元が違う。
あと、動的配列が実装されたのは結構最近の話。
597 :
デフォルトの名無しさん :2001/07/03(火) 01:48
New, AllocMemとかは、Cでいうmalloc, free、 SetLength, Finalizeは、C++でいうnew delete ってなことでよろしい?
>>597 SetLength ってのは,動的配列と,
文字列のための特殊なアロケータ
で,GetMem New と比べては遺憾
と思われ.
599 :
デフォルトの名無しさん :2001/07/03(火) 16:51
Win2000でDelphi4のクイックレポートがアドレス違反します。 デバッガで動作させるとファイルが書けませんエラーも出てるみたいです。
>>599 もしかして,ドライブの空き容量がないとか
602 :
599 :2001/07/03(火) 17:54
そんなことないです。容量あります。 クイックレポートはパッチあててるし。一緒に入れたBCB5が悪さしてますか?
クイックレポートいらない&つかいたくない。 Kylixも出たしもっとマシなのつくってくれ。
有難うございます。>603 でも実はまだうまくいってません。明日もう一度やってみます。 そうなんですが、昔作った社内ツールで...>クイックレポートいらない&つかいたくない。
NT/2000ではAutoexec.batじゃなくて, My ComputerのPropertyでした。
Delphiで作られた有名なソフトウェアって何?
609 :
login:Penguin :2001/07/04(水) 00:04
delphiってオブジェクト指向なの? えへへ。
610 :
login:Penguin :2001/07/04(水) 00:25
age
login:Penguinねぇ・・・・・・
>4 から 6 歳児むけ、Delphi 入門書。 ジョ・冗談だろ???
615 :
599 :2001/07/04(水) 09:20
動作しましたage。「TEMP=C:\TEMP」じゃなくて、「TMP=C:\TEMP」でした。 クイックレポートはソースコードついてないので困る(怒
>>615 99ダラーで買えるけど。ビザかマスターカード持ってれば。
Kylixはまだ印刷に関して統一的手法ってないのかしらん?
>>612 ドイツは子供も世界一ィィィ!!
>>618 すごいかっこいいネ。気合はいってんな。
あんたら,TKC って Windows の仕様を左右するほどの組織だよ。 Delphi の仕様のいくつかも,ここが要求,変更させている。 「わが国最大級の職業会計人集団」って言葉以上の圧力団体なんだよ。
大井のことかと思ったよ。
しかし、全国8200の税理、会計事務所のデータを10年間 保存ってInterBaseで大丈夫なのか?6.0って製品版 出たばかりなはずだが?
>あんたら,TKC って Windows の仕様を左右するほどの組織だよ。 >Delphi の仕様のいくつかも,ここが要求,変更させている。 詳細アボーン Delのどの辺?勝手な仕様変更はいやだけど。
626 :
デフォルトの名無しさん :2001/07/04(水) 19:40
ageとくか。
627 :
デフォルトの名無しさん :2001/07/04(水) 21:21
function DoLoop: Integer; label LOOP_START; asm MOV EAX, 0 MOV ECX, 9 LOOP_START: INC EAX LOOP LOOP_START // MOV @Result, EAX end; この関数の結果として9が返ってくることを期待しているのですが、 帰ってきません。 コメントされているところを有効にすれば当然9が返ってきます。 順序型の結果はAL, AX, EAXで返るんですよねえ・・・?
629 :
デフォルトの名無しさん :2001/07/04(水) 23:09
>>627 label キーワードでラベルを定義しているのがいけないんじゃない?
アセンブリ言語らしくラベル名に@LOOP_STARTを使ったらうまくいったよ。
どうやらPascal言語のlabelキーワードを使うと、asm-endブロックが
begin-endブロックで囲まれていると解釈されるみたいだね。
これでは戻り値が不定になるのは当たり前だね。
630 :
627 :2001/07/05(木) 00:09
>>628 CPUウィンドウは見ました。返り値はフレームから
読んでいたので不定のResultが返っているみたいです。
>>629 ありがとうございます。解決しましたぁ!
633 :
デフォルトの名無しさん :2001/07/06(金) 17:23
Delphi で hlink.h に定義されているインターフェースとか使う方法教えてください DelphiでOLEとかインターフェースってさっぱりわからんのです
634 :
デフォルトの名無しさん :2001/07/06(金) 20:29
時間の計測をしたいのですが、 Nowから得た終わりと開始のTDateTimeの差をとれば、 とりあえず経過時間の大小は比較できますか?
どのくらいの時間? msecならMMSystemをusesして、timeGetTimeでGO
636 :
634 :2001/07/06(金) 21:03
>>635 どうもです。
このMMSystemってなんですか?ヘルプでほとんど情報が出てこないのですが・・・。
MMSystem.pas のことね。
timeGetTimeはWin32APIっす。Delphiのヘルプでなく、Windows APIのヘルプ参照。
>>633 Delphi でなければ、OLE とか COM とかわかるのかい?
640 :
634 :2001/07/07(土) 01:03
>>637 , 638
どうもです。Win32 Programmer's Referenceで調べてみます。
ところで手続きや関数の値の渡し方はどのようになっているのですか?
引数の数が少ない場合はレジスタ(EAX, ECX)が使われるみたいですけれど、
そんな記述が見つかりません。
asmで手続きを記述していてどのレジスタなら使ってよいのかわからないので
困るのですが・・・。
>>640 HelpのObjectPascal言語ガイドで
[プログラムの制御]−[パラメータと関数の結果]−[パラメータの受け渡し]
を辿ってみ。
642 :
デフォルトの名無しさん :2001/07/07(土) 03:21
TListViewで、OwnerDataとCheckboxesをtrueにした場合、 チェックボックスが表示されないのですが、何か回避する方法は ないでしょうか?
643 :
デフォルトの名無しさん :2001/07/07(土) 03:42
644 :
デフォルトの名無しさん :2001/07/07(土) 12:14
>>643 最終的にはそうするとしても、バグみたいな仕様ですね。
OwnerDrawでこうなるなら理解できるのですが・・・。
>>644 ま、MS コモンコントロールの問題だからしょーがない。
... なんとなく、ComCtl32 を最新のにすると期待したとおりになるような
きがする。なんとなくね。IE5.5 をインストールしてみたらいいことがおきる
かも。
646 :
デフォルトの名無しさん :2001/07/07(土) 14:34
>>645 ありがとうございます。試してみましたが駄目でした。
それで自前で描画することはできたのですが、チェックボックスの部分を
クリックした場合にCheckの状態を変更したいのですが、良い方法が思い浮かびません。
何かメッセージを捕まえないといけないのでしょうか・・・。
647 :
デフォルトの名無しさん :2001/07/07(土) 19:50
>>646 Downした座標から、手前で決めろや
どこがチェックボックスなのかも手前で決めろや
checkedに手前で入れろや
VCLにして配布しろや(ワラ
648 :
646 :2001/07/08(日) 04:40
すみません。2chで質問した私が馬鹿でした。 あくまで雑談の場なのですね。
>>648 647のでいいのでは?ここで聞く前にML検索したよね?
>>649 ケッ、2ch にも検索無脳があらわれよった
調和級数を求めるプログラムがわかんないんですけど。 教えてくれませんか??
654 :
デフォルトの名無しさん :2001/07/09(月) 12:53
>なんかあったの? 嫌がらせ
調和級数っていうのがなんなのかがわかんないんですけど 逝ってよしですか?
658 :
デフォルトの名無しさん :2001/07/09(月) 14:20
>>654 へぇ。3年ぶりにメンテナンスしたと思ったら、ばっさり削除ですか。
1. Yahoo とはこんなものだ。
2. MS から嫌がらせの命令がとんだ
3. ほんとにこれしか Delphi の技術ページが存在しない。
正解は?
とりあえず苦情いれておくか。 元々Yahooにあったリンク先でも 生き残っている所は多数あったぞ
嫌がらせかヨ(´д`;) おのれYahoo!!...
ちょっとまて!!どうみても重要なところを抑えてないじゃんかよ > Yahoo!! 2件っていうから激選してるかと思ったら…
つまり登録件数が55件あるVBはDelphiの27.5倍エライというわけですか?
664 :
デフォルトの名無しさん :2001/07/09(月) 15:01
ワイロをサーファーに払うかどうかで決まります
666 :
デフォルトの名無しさん :2001/07/09(月) 19:56
668 :
666 :2001/07/09(月) 22:25
パッケージ版は4800円。 ネットからダウンロードする場合は無料と言うことだよ。 ついにDelphiも無料配布の時代が来たか。 ただし、商用アプリの作成はダメ。
商用アプリの作成はダメなんて言っても、exeにしちまえば 区別つかないんだろ? Delphi2.0の頃からずっとアップグレードしてきたが、 今後は無料版にするかな。 Delphiの無料版はあまりボーランドにとって良くないような 気がするな。
670 :
デフォルトの名無しさん :2001/07/09(月) 22:34
>>669 Kylix Open Editionと同じように区別付くようにするはず。
俺も無料板Delphiは本当にボーランドのためになるのか疑問。
今時コンパイラごときで金は取れないってことでしょ エンタープライズな顧客からガッポリ稼いで 利益をオープンソースコミュニティに投資するってとこかな
>>669 ライセンスだけは守ってね。みんなの Borland 何だから一人でおいしい汁を啜ろうなんて考えないで。
666なんですが、作業している間に騙られてる(笑)
ま、内容はあってるみたいだからあとは名無しで書き込むよ(w
んじゃ
>>668 サソ、
>>666 の引継宜しく(w
>>669 「無料版はあまりボーランドにとって良くないような 」といいながら自分は無料版かい。
せめて 4000 のやつかってあげなよ。
パワフルユーザは無料版なんか使わないから安心すれ。 実際の所、ほとんどの人はPro版なのでは?Lrnじゃ満足できないっしょ。 VCLソースもつかないんだろうし。
676 :
デフォルトの名無しさん :2001/07/10(火) 00:28
シェアウェアで小遣い稼ぎってのも商用使用になりますかね?
677 :
デフォルトの名無しさん :2001/07/10(火) 00:39
>>676 …よぉ知らぬが、多分なるんじゃないの?
ぞくにいう商用とぞくにいうシェアの間に
明確な線なんて引けないじゃん。
>>677 さん
そりゃそうですね。
レスどうもです。
679 :
デフォルトの名無しさん :2001/07/10(火) 00:51
商用は不可って、.exeが作れないとかではないですよね? (ソース配布のみとか・・・) フリーソフトならOKでしょうか?
起動すると10回に1回、ボーランドのロゴが表示されるとか。
個人情報を抜かれるとか。
682 :
デフォルトの名無しさん :2001/07/10(火) 02:09
>>681 いやすぎ(w
EXE生成できないようにしておくのが
正規ユーザに対しての礼儀だな。
じっさいJBuilderもパッケージ機能カットしてあるし。
683 :
デフォルトの名無しさん :2001/07/10(火) 02:13
>>682 何で礼儀なの?EXE生成するとどういう問題が?
商用利用できないってのはあくまでライセンスの問題であって 実際に商用配布できないようにexeに制限を加えるなんてことは やらないよ。
ただ、exeにしたらわからんから商用利用しちゃえってのはライセンス違反だから、 結局warez使ってんのとたいしてかわらんわな・・・。 とりあえず、フリーソフト作るのにはつかえるっちゅーことですな。
686 :
無料にするってのは・・・ :2001/07/10(火) 05:37
どういうことかって言うと、Linuxのように雑誌等にバシバシ載せられるってこと。 つまりDelphiの布教を一気に行えるってわけ。戦略的には多くの金のない学生に Delphiを浸透させて将来的にDelphiを主流派にしようって目論見では?
687 :
デフォルトの名無しさん :2001/07/10(火) 06:03
>>685 exeにしても無料版で作られたって分かるようにするはずだよ。
現にKylix Open Editionではそうなっているし。
>>687 なんだっけか。
exeに特定文字列とか埋めこんであるんだっけ?
チェックサムだかmd5だかで
そのへんのブロックのカイソを看視する…のかなあ…
即レスきぼんぬ。 MaskEditでIPアドレスを入力させるには、 どうマスク設定させればいいの? ちょっとせっぱ詰まってます。 一応検索しに逝ってきます。 ヘルプ見たけどよく分からなかった…
690 :
デフォルトの名無しさん :2001/07/10(火) 08:22
あげ忘れ。
691 :
デフォルトの名無しさん :2001/07/10(火) 08:28
>>689 答えじゃなくてすまんけど。
MaskEditとかの書式の文法って誰が考案したんだろうな?
というか、あーゆー所こそ、考案(=車輪の発明)せずに
正規表現あたりを採用しといてくれたら、
学習の手間が1つ減ったんだけどな(^^;
ちなみに正規表現だと、
[0-9][0-9]?[0-9]?\.
[0-9][0-9]?[0-9]?\.
[0-9][0-9]?[0-9]?\.
[0-9][0-9]?[0-9]?
(見づらくならんように故意に行を区切りました)
だな。
692 :
デフォルトの名無しさん :2001/07/10(火) 08:33
>>689 です。
あれはたしかに正規表現ではないと思われ(^^;
う〜む。
MLログにも、Delphian Worldにも無しか…
Googleでもうまく検索できなかったし…
いや正確にはあったんだが、Comctl32.dll
のバージョンアップを要求する物だったんで。
ユーザのこと考えるとそう言うのは使えなくって(^^;
ヘタレオンラインソフト作者な物で、Win9x〜の
全てのWin32環境で動くことを目標にしていたり。
693 :
デフォルトの名無しさん :2001/07/10(火) 09:10
DelphiからOracleへ接続する標準的な方法って何でしょうか? VBだとoo4oみたいな感じで。
099-099-099-099;1; こうかな?リテラル文字ってのは何かわからん。
695 :
デフォルトの名無しさん :2001/07/10(火) 09:55
>>693 エンプラ版ならBDE - SQL Link - Net8
プロ版ならBDE - ODBC - Net8
D6やKylixのエンプラ版ならDBExpressというのが
使えるらしい。
696 :
デフォルトの名無しさん :2001/07/10(火) 10:11
>>695 なるほど。ありがとうございます。
ADOとかではないんですね。
697 :
デフォルトの名無しさん :2001/07/10(火) 10:34
>>694 殿
なるほど。
大変参考になりました。
990\.990\.990\.990;1;
これでどうでしょうか。
これで大体望み通りの動作になりました。
ありがとうございます。
http://itpro.nikkeibp.co.jp/free/NC/NEWS/20010709/6/ ボーランドがDelphi新版投入
ボーランド(
http://www.borland.co.jp/ )は7月9日,ビジュアル開発ツールの新版
「Borland Delphi6」を発表した。7月25日に出荷開始する。同社の安藤由男社長は
「Delphi6で,ようやくVisual Basic(VB)に対するアドバンテージがそろった。今度こそ,
VBからDelphiへの乗り換え促進に本腰を入れる」と意欲を見せる。
Delphi6が持つVBに対するアドバンテージとは,以下の3点。第1に,Webサービスを
ビジュアルに開発できる。XMLやSOAP,WSDLに対応したWebサービスを作成するコ
ンポーネントを新たに搭載する。「Webサービスのビジュアル開発機能を実現した開
発ツールは,おそらく初めて。少なくとも,ここまで簡単に作成できるツールは存在し
ないはずだ」(大野元久 営業本部マーケティング部Delphiプロダクトマネージャ)。
>>695 ADO 経由で Oracle ってつながるの? Oracle がそんなドライバ出している?
出しているなら ADO 経由で使えるし、当然 OO4O もつかえる。
>>699 Oracle純正のADO(OLEDB)ドライバ、あるよ。
OTNにあったはず!
>>699 あ、oo4oはADOとは関係ないです、
702 :
デフォルトの名無しさん :2001/07/11(水) 11:20
初心者ですいません。 浮動小数点を整数型にダウンキャストするにはどうすればいいのでしょうか? ヘルプを見ても浮動小数点から整数型への変換はのってないようだし 標準関数もないようだし。。(文字を経由すればできそうだけど。。) 教えてください!
まずダウンキャストの意味を調べてから回線切って首吊って氏ね
RoundとかTruncとか。
705 :
702 :2001/07/11(水) 11:37
てへ。聞きかじった言葉は安易に使うもんじゃないね。 703さん。ありがとう。氏んでください。 704さん。どうもありがとうございます。
706 :
デフォルトの名無しさん :2001/07/11(水) 11:57
∧_∧ ( ・∀・ )ジー ( ) | | | (_)(_)
>>705 >ヘルプを見ても浮動小数点から整数型への変換はのってないようだし
ほう。で?
709 :
デフォルトの名無しさん :2001/07/11(水) 14:31
int i = 3.0;
710 :
デフォルトの名無しさん :2001/07/11(水) 17:09
なんのヘルプみたのか謎。 Delphiのヘルプじゃなくて、Windowsのヘルプでも見たのかな? それだったら、ないけど・・・
711 :
デフォルトの名無しさん :2001/07/11(水) 19:51
TMemo使って、 memo1.Lines[0] := '10,20,30,40,50,60,70,80'; memo1.Lines[1] := '10,20,30,40,50,60,70,80'; memo1.Lines[2] := '30,20,30,40,50,60,70,80'; memo1.Lines[3] := '10,20,30,40,50,60,70,80'; memo1.Lines[4] := '10,20,30,40,50,60,70,80'; memo1.Lines[5] := '10,20,30,40,50,60,70,80'; memo1.Lines[6] := '10,20,30,40,50,60,70,80'; memo1.Lines[7] := '10,20,30,40,50,60,70,80'; ってやっても2行目までしか表示されません。 なにが足りないのでしょうか?
712 :
デフォルトの名無しさん :2001/07/11(水) 19:59
var cc : integer; begin memo1.lines.clear; for cc := 0 to 7 do memo1.lines.append('10,20,30,40,50,60,70,80'); end;
713 :
デフォルトの名無しさん :2001/07/11(水) 20:09
>>712 ありがとうございます。
memo1.Lines[0] := '10,20,30,40,50,60,70,80';
memo1.Lines.Append('10,20,30,40,50,60,70,80');
memo1.Lines.Append('30,20,30,40,50,60,70,80');
memo1.Lines.Append('10,20,30,40,50,60,70,80');
memo1.Lines.Append('10,20,30,40,50,60,70,80');
memo1.Lines.Append('10,20,30,40,50,60,70,80');
memo1.Lines.Append('10,20,30,40,50,60,70,80');
memo1.Lines.Append('10,20,30,40,50,60,70,80');
で解決できました。
TStringsがリスト構造だから追加には気をつけなければならないって
ことでしょうか?
なにはともあれ、ありがとうございました。
714 :
turbo type D :2001/07/12(木) 16:47
ふー。疲れた。 PPAを使って 使用者が文字変換コードを書いて それにあわせてクリップボード文字列を 変換するというソフトを作りたいが時間がないです。 誰かつくって。 じゃなかった。作りかた教えて! そういえばPPAってStringReplaceないですよね。
715 :
turbo type D :2001/07/13(金) 10:06
うぅ、レスが無い....PPAって誰も使ってないです? 話題変え。 サーバーサイドプログラムには JavaやVBにしてもスクリプト似な実行環境が適しているのかも。 PPAってDelphiPascel似インタプリタだけど Delphiがもっとサーバーサイドで活躍するには 本格的なスクリプト/インタープリタな実行環境を整えて いく事が大切なのではなかろうか。などと考えてみたり。。
716 :
デフォルトの名無しさん :2001/07/13(金) 10:33
DelphiでPascalコンポーネントってなんか屋上屋な気が... それにあの利用規約もなんだかね Perl/Python/Ruby組み込みコンポーネントってないのかな
717 :
デフォルトの名無しさん :2001/07/13(金) 10:40
>>turbo type Dさん
ちゅーぼー たいぷ でぃー と読んでしまいました('-`;
ごめそなさい
>>716 さん
PHPが抜けてますよ!('-`
718 :
デフォルトの名無しさん :2001/07/13(金) 10:59
719 :
デフォルトの名無しさん :2001/07/13(金) 11:00
delphi6お知らせがいま届きました。いいにおいだにゃ〜。
721 :
いっそ、次はDturboで。 :2001/07/13(金) 11:16
>>718 ゼンゾエン知らないのですが
PPA的に使えますか?
オレが今(労力を極力減らして)つくりたいのは
function Userさん作成関数(S: String);
begin
{ここをテキストでユーザー側でコーディングさせたい}
end;
Clipborad.AsText := Userさん作成関数(Clipboard.AsText);
こんな処理をするプログラムなんです。
functionの中身をRubyで
記述するのでもいいんですが....
722 :
デフォルトの名無しさん :2001/07/13(金) 11:22
「何か。」もホットゾヌもかちゅ〜しゃも使ってるうちにメモリ使用量が どんどん増えてくんだけど、Delphiにはメモリリークを免れ得ない構造的 な欠陥でもあるの?
PPAは利用規約がイヤスギ。あんなの使えるかっつーの。
725 :
デフォルトの名無しさん :2001/07/13(金) 11:48
じゃないと思うけど
>>722 最小化すると解放される仕組みになっているらしい。
727 :
Dturbo :2001/07/13(金) 12:35
PPA.pasの規定は厳しいみたいだけどDLL自体は普通かも。
>>724 オレはそんな程度の認識、PPA.pasは今のところはいらないし。
PPA.DLLは
自作のフリーソフトなどにこん包する場合も規定の
> Project-PPAメンバーに断りなく配布/再配布/転載/雑誌収録する事を認めていません。
に当てはまるのだろうか?
728 :
デフォルトの名無しさん :2001/07/13(金) 13:29
>>721 PPA的とはどのような感じ?
> Clipborad.AsText := Userさん作成関数(Clipboard.AsText);
この行はDelphiで書くの? PPAで書けるの?
> functionの中身をRubyで
> 記述するのでもいいんですが....
関数にしなきゃならんわけじゃないよね? それなら APL でいけると思う。
究極的には組み込みRubyだけど,実行時ライブラリを使う必要がある。
729 :
デフォルトの名無しさん :2001/07/13(金) 13:41
>>728 でけた。
procedure TForm1.Button1Click(Sender: TObject);
var
Lines: TStringList;
begin
Lines := TStringList.Create;
try
Apollo1.Script.LoadFromFile('clip.rb');
with Apollo1.Params do
begin
Clear;
Add(Clipboard.AsText);
end;
Apollo1.Execute(Lines);
Clipboard.AsText := Lines[0];
finally
Lines.Free;
end;
end;
# clip.rb
$KCODE = 's'
s, = ARGV
print s.downcase
脳内インデントは勘弁
731 :
turbo type D :2001/07/13(金) 14:44
そういうときにスクリプトで 半角スペースx2>>全角スペースとすると いいのに。
コピペには半角スペース2個→ のほうがよさげ ClipBoard.AsText := StringReplace(ClipBoard.AsText, ' ', ' ', [rfReplaceAll]); 別スレより
ミスった、鬱だ・・・ ClipBoard.AsText := StringReplace(ClipBoard.AsText, ' ', ' ', [rfReplaceAll]);
&nbsp;だとかちゅーしゃのHint表示で&nbsp;が そのまま表示されるので美しくないっす 最新版で直っているかどうかはしらないですが。
テスト
begin
for i := 0 to 10 do
Nanashi;
end;
>>735
結論。最新版(2.101)で治ってない(´д`;)
つーわけで、かちゅーしゃ板に要望だしとこ。
2chだけのためにアプリ1つ入れる(インストールする)という感覚がわからん。。。
使ってみりゃ分かる・・・。
740 :
デフォルトの名無しさん :2001/07/13(金) 18:37
>>724 >PPAは利用規約がイヤスギ。あんなの使えるかっつーの。
何がどう駄目なのか、ppa_122.lzh の PPA_COMP.HLP を見てみた。
「利用」規定は、まぁあんなもんじゃないか?
それを使ったアプリには、ヘルプとかの同梱を義務付けてる
ってのは、実利的(?)にもそんなに悪くなさそうだ。
だが、PPA.PASの扱いのほうが痛いな。
>[PPA.PASの配布条件]
>1) Project-PPA(PPA-ML)に参加し、積極的にPPA開発に寄与すると約束する。
>2) 1)が不可能な場合、Project-PPAに決められた金額(\10,000)を送金する。
>1)の場合、一定期間、開発に寄与できなかった場合には最新版ソースの配布を中止します。
>2)の場合、「スポンサー扱い」で開発の寄与に関係なく、最新版ソースを提供します。
開発寄与をどんなに頑張っても、たかが(!)10000円の寄付に
劣る(永世権の有無を見ろ)ってのはどうよ?
ってのもさることながら、問題は、次だ。
>[PPA.PASの利用規定]
(略)
>3)「明らかにPPAを模倣したインタプリタコンポーネント/ユニット/OCX/ActiveX/DLL/EXE」、
>またはそれらを搭載したアプリケーションの配布を禁じます。
「利用」とは何か?が問題になる。自作物をオプソにしない限り
「利用」したかどうかなんてのは他人には判らんだろう。
あと「模倣」の定義も問題になる。Pascalインタプリタってのは
すごく「一般的な」作品じゃないか?作ってくれたのは偉いが
オリジナリティという意味では他を排するに値するもんじゃないだろ。
つまり、 PPA.PASをひとたびgetしてしまった人は、
以降永遠に(わら)、Pascalインタプリタユニットを
自作して他人に配布することが、できなくなるわけだ。
たとえそれが「PPAの実装に呆れて、ずっとマシなものを
ゼロから作り直そう」と思い立った結果だとしても、だ。
あるいは、たとえそれが、「全然別のPascal処理系のソースを
どっかから持ってきてコンポ化したもの」だったとしても、だ。
というわけで、まじめにコンポ作りの志のある人は、
PPA.PASはgetしちゃ「いけない」!
>>738 正直、webブラウザで見る気がうせる。
>>740 いやゆる感染系ライセンスですな。ヒデェや。
743 :
デフォルトの名無しさん :2001/07/13(金) 18:51
>>702 Delphiのヘルプはわかりにくいからなぁ.
慣れると勘が働いてなんとか使いこなせるようになるけど.
>>739 2ch方面は初心者ですけど
スレッド見に行くたびに待たされるのがイヤなので
かちゅ〜しゃ入れました.もう戻れません.
745 :
デフォルトの名無しさん :2001/07/13(金) 19:30
>>740 俺も規約を最初に読んだときは引いたよ。
「明らかにPPAを模倣した…」が「明らかにPPAに変更を加えた…」だったらば
少しはマシだったのだが。
PPAはあきらかに僕が昔作ったインタプリタの模倣です。 ただちに配布を中止してください。
オプソでScriptPascal作る?
ぜひギコPascalにしてやってくれ。
751 :
デフォルトの名無しさん :2001/07/13(金) 21:32
ギコPascalをみんで作ろう
752 :
751 :2001/07/13(金) 21:33
入力ミスった。すまそ。「みん」>「みんな」
753 :
デフォルトの名無しさん :2001/07/13(金) 21:42
PPAなんか見んで作ろう!
754 :
デフォルトの名無しさん :2001/07/13(金) 22:34
誰かベース作ってうぷして
delphiフリーで出して欲しくなかった。。 こういうスレッドやメーリングリストで初心者質問が飛び交う事態になる気がする。 personal版4800円でパッケージのみで十分じゃないか。むちゃくちゃ安いんだし。
756 :
デフォルトの名無しさん :2001/07/13(金) 23:09
たしかに
757 :
デフォルトの名無しさん :2001/07/13(金) 23:38
Delphi厨房を大量生産する危機かもね。
758 :
VB厨房 :2001/07/13(金) 23:42
やったぜ。 これでDelphianの仲間入りだ! バシバシ質問するよ。
>758 ML逝け
マジメにやってればVB厨よりかは遥かにレベルウプできるのえ Delphi厨房が増えても問題は少なくなる。 あと、ユーザーが増えてBorlandがつぶれなくなればヨロシ。
>あと、ユーザーが増えてBorlandがつぶれなくなればヨロシ。 けど、全員無料版しか使わなかったら、いないジャン。 Personal 4800円だって、CD-ROM / マニュアル / 初期サポート代でしょ。 店頭価格ってことは、店のマージンを考えりゃ収入は 2000 円くらいか? どう考えたって開発費の元が取れるとは思わない。 フリー版使って、よいなと思ったら、いくらか寄付するシステムなんてどうだ?
多分760はもっと長いスパンで見ていると思うよ。 Delphiにトライする人が増える -> 普及する -> 業務とかでもフツーに使われるようになる てな具合に。
763 :
デフォルトの名無しさん :2001/07/14(土) 00:33
フリー版使って、よいなと思ったら、グレードアップするんじゃないの?
764 :
デフォルトの名無しさん :2001/07/14(土) 00:55
少なくとも俺はアップグレードするね!・・・・と思うね! BCB4PROユーザーだけれども。
わかってる人は、VCLソースのないフリー版は価値なしと思うだろうけど、 フリー版使うのはこれからわかる人だからねぇ。
766 :
デフォルトの名無しさん :2001/07/14(土) 02:01
えんたーを買います('-`
767 :
デフォルトの名無しさん :2001/07/14(土) 02:26
>>761 マニュアルはPDFかヘルプのみと思われ。
まあ、マニュアルはいらんけどな
二重投稿スマソ このスレですね。 以下をDelphiで記述するには? ※インデントは全角空白 while( (c = getc(fr)) != EOF ) { do { r = rand() / ( (RAND_MAX+1U)/256 ); }while(r >= 256); putc(c^r,fw); }
770 :
デフォルトの名無しさん :2001/07/14(土) 08:01
>769 2重投稿すんな。どっか逝け
771 :
デフォルトの名無しさん :2001/07/14(土) 08:24
まあpersonal版CD-ROM付きの Delphi入門書は確実に1ダースぐらい出るだろ。
>>769 Delphiでコンパイル出来るようにしてあげたよ。下のコードを
例えばButton1Clickに挿入して下さい。
(*while( (c = getc(fr)) != EOF )
{
do
{
r = rand() / ( (RAND_MAX+1U)/256 );
}while(r >= 256);
putc(c^r,fw);
}*)
774 :
デフォルトの名無しさん :2001/07/14(土) 11:29
>>744 >>745 そそ。GPLなら縛るのは実装までだけだ
(というかオプソ文化なら模倣はむしろ奨励だ)が、
PPAはアイデアすら縛っている。
#ドイツあたりだと、こういう理不尽なライセンスは
#自動的に無効にされたりするかもらしい。浦山鹿。
アイデアを縛るものといえば特許もあるが、
PPAのはライセンスなので、
特許みたいに年限が(長すぎるとは言え)あるという
わけでもない。
まぁ著作権としての年限は有るのかな。だとしても作者死後50年。悠久。
ひどい話だ。何様だ。
Pascal発明者ですらこんなこと言ってないぞ。
>>749 >
http://www.torry.net/tools_compilers.htm ぎゃはは。既に有りましたって奴か。
つーわけでみんな、PascalScriptが欲しければ
そっちへ行ってしまおう!(勿論、自作/模倣もおっけー(わら
というわけでだ、turbo氏よぉ、 いつかソースを読みたくなった時に困らない (VCLソースが無いと困るという人がこれだけ多いことからも 類推できるように、それは案外早く来るはずだ)ために、 今からPPAから離れておいたほうがいいんじゃねーのか? もっと安全なライセンスの奴に移行しちゃえ。 しかし本当に色んなPascalコンポがあるんだな。驚き。 まぁ有り触れたアイデアだからねえ…
なにより痛いのは、あのライセンスだと、 「ボクはコンポ作る気概なんかありませんよー」という カワード君しか、ソースを読めない、ということになる点だ。 ソースを読むというコンポ作り野郎の当然の嗜みを、 やりたい奴にはソースが読めず、 やりたいと思わない奴にだけ読めるわけだ、 あのライセンスでは。 要するにFREE(無料じゃなく自由)ソフト作る連中の 「邪魔」をしてるようなもんだ。 うざすぎ。もしやこいつゲイツの親戚か?(わら
777
778 :
turbo type D :2001/07/14(土) 15:39
なるほどなあ。 確かにそのライセンス・ 作った当人らはあまり意識してなかったと思うが 利用者側にしてみれば痛々しいですね。 海外ものは2バイト文字の扱いが不安だけど PPAだって2バイト文字にあまり対応してないみたいだし この際他のを考えるかな。 むしろ、詳しい方もいらっしゃるようだし Rubyいってまおか(w ただ、ライセンスたたきの為にPPA紹介したわけじゃなかったのに 結果的に作者の人々には申し訳ないことをしてしまった。 シェアウェアソース(シェアードソースではなく)的なものなら 喜んで金払うのに、惜しいコンポだ>>PPA
779 :
turbo type D :2001/07/14(土) 15:40
それにしても暑いっすねー。 昨日は暑すぎて安ワインガブのみしてたら気分悪くなって、遅レススマソ。 いろいろ紹介してくれてサンクスYO
そういやrubyのライセンスはどうなん? PPAの代わりに使えそう?
781 :
デフォルトの名無しさん :2001/07/14(土) 20:12
>結果的に作者の人々には申し訳ないことをしてしまった。 そういう意味の心配のしかたは、しなくていいよ。 「欠点」を引きずったままのソフトを、 それでも「良いよ」と薦めるほうが、かえって悪い。 伝染性ライセンスが問題ならば尚更のこと。 そういう意味ではFREE(等)ソフトもまた弱肉強食だ。 欠点があればDLして貰えなくなるだけ。 DLして欲しければ欠点を無くせばいいんだ。それだけ。 逆に、欠点以外の理由で人気が左右されるのは悲しいんで、 それについてはきちんと心配してあげるべきだとは思うが。 ま、こんな欠点抱えたままじゃどうよ?という話を 作者氏にフィードバックしてあげたりすると 喜ばれるだろうな。 というか、欠点を指摘されて逆切れするような人なら 未来は無いから作品ごと見捨てたほうがいい(たまにいるんだよな だから、もしある一定以上の肯定的感情をPPAに対して持っているなら、 教えて(=いさめて)上げるのが良策だし、そうでないなら さくっと去るのもまた道。
783 :
HIRO :2001/07/16(月) 02:59
こんにちわ〜HIROです 現在、Active Formを用いて付くっているのですが… Delphi 5 なので署名するために別にTool(sigincode.exe)をダウンロードしてきた のですが… それには Internet Explorer 5.0用として…ま、いっかと思いダウンロードした のですが実行できないんです。 Internet Explorer は、5.5を使っているのでこのせいかと思い… バージョンを以前のに戻しましたが…プログラム開始エラーとなる。 そのエラーは 「このWindowsに対するCPU用にコンパイルされていません。 製造元に連絡して、新しいバージョンを入手してください。」 というものです…。 CPUが悪い?? ん〜と、ペンティアムの初期のものだけど…関係ないような気はしますし… もはやファイルの実行方法が間違っているのでしょうか? そのまま実行という形ではダメなのでしょうか? Delphiで参照して実行するものなのでしょうか? ie5.0 や Win2000 で試しましたが…実行できず… 正しいやり方があるのでしたら教えていただけないでしょうか? Delphi 4だったらこのようなツールは必要なかったんですよね?
日高徹のゲームプログラミング本って数出てないんですか? 数年前にパラパラと立ち読みしたっきり。 古本屋でも一度もお目にかかれていません。
>>784 新日本プログラミングの人のですね。
確かに最近、本屋でもみないけど。
それはそうと、あれって正直役に立つのかなあ。小細工系ばっかだからさ。
有馬さんの「遊びのレシピ」の方がいいようなな気もするけど。
あっついねー。
>>782 丁寧な説明ありがと。非常に参考になりました。
作者にメールしてみるよ>>何人かの人もその方がいいでしょ。
いつになるかはわからんけど。
その時はとりあえず、ROMって匿名にしておいてと
言っておくね。荒れるとヤだし。
787 :
デフォルトの名無しさん :2001/07/16(月) 10:29
>>785 買ったけど、初心者にはいいかもね。いろいろと分かって。
そして、その本がダメだということも分かる(ワラ
788 :
デフォルトの名無しさん :2001/07/16(月) 20:44
TQueryを使ってローカルデータベースを更新するプログラムを作りたいのですが、 DBGridからデータを入力する際に、すでに同じデータが登録されていた場合、 例外により強制終了してしまいます。主キーの列なので当然なのですが、もう一度適切な データ入力を行ってもらうためにはどのようにすればよいのでしょうか?
try〜except調べてみ。
790 :
デフォルトの名無しさん :2001/07/16(月) 22:54
Delphi6も出ることですし、今のうちに勉強して置きたいのですが 何かお勧め本があったら教えてください。
「はじめてのC」って女性店員にレジ撃たれたくないのは漏れだけ?
エロ雑誌と一緒に購入せよ>791
794 :
デフォルトの名無しさん :2001/07/16(月) 23:55
Object Pascal言語ガイド と Object Pascal リファレンスブック (アンク) どっちがいいかにゃ〜?
それは読んだことないけど、別のアンクの本を買ってえらい目にあった。 だから言語ガイドの方をお勧めする。
>>794 -795
アンクの本は普通。
言語本なのであれでDelphiが使えるようになるかといえば疑問だけど。
>>788 TQueryの BeforePostで別Queryつかってチェック。
もしすでにあったらサイレンと例外でPostさせない。
798 :
デフォルトの名無しさん :2001/07/17(火) 16:58
int64の帰り値をインラインアセンブラで返したいんだけど、 どうやればいいの? function getRDTSC: int64; var d:Integer absolute Result; asm DW $310F //RDTSC //EDX,EAX を int64で返したい end;
799 :
デフォルトの名無しさん :2001/07/17(火) 17:21
色変換をして画面に表示するプログラムをつくってます。 640x480程度の大きさの画ならうまく行くのですが、 1920x1080の大きな画だとなぜかHBITMAPが取得できません。。 なぜでしょうか? --classのメンバ変数-- Y: array of Byte; U: array of Byte; V: array of Byte; RGB: array of Byte; ---------------------- procedure TForm1.FormCreate(Sender: TObject); begin SetLength(y , 1920 * 1080 ); SetLength(cb, 1920 * 1080 div 2); SetLength(cr, 1920 * 1080 div 2); SetLength(rgb, 1920 * 1080 * 3 ); end; // 画を表示する procedure TForm1.Display; var hbmp: HBITMAP; P: PBITMAPINFO; begin // 画面表示 yuv2rgb; // 色変換 // BITMAPINFO の初期化 {初期化してます。} P := @m_bmi; hbmp := CreateDIBitmap(Image1.Canvas.Handle, P^.bmiHeader, CBM_INIT, @m_rgb[0], P^, DIB_RGB_COLORS); if 0 = hbmp then begin ShowMessage('HBITMAPの取得に失敗しました。(in Display function)'); Exit; end; //画面に描画 Image1.Picture.Bitmap.Handle := hbmp; end;
800 :
798 :2001/07/17(火) 17:59
今、なんとか動くコードは function getRDTSC: int64; var ret:array [0..1] of integer absolute Result; begin asm push EDX; DW $310F //RDTSC MOV DWORD ptr ret+4,EDX MOV DWORD ptr ret,EAX pop EDX; end; Result:=Result+0; //なぜかこの無駄なコードを入れないとDel5がコンパイル時暴走する end;
801 :
798 :2001/07/17(火) 18:05
ありゃ? 余分なもの全部取ったら function getRDTSC: int64; asm DW $310F //RDTSC end; コンパイル時の暴走も無くなったし 余分なスタックフレームも作られなくなったぞ?
802 :
798 :2001/07/17(火) 18:09
>>799 Windows 95/98:作成できるビットマップのサイズは、最大 16MB です。
803 :
デフォルトの名無しさん :2001/07/17(火) 18:09
function getRDTSC: Int64;
asm
DW $310F //RDTSC
end;
が正解。Int64 型のときは、戻り値はeax,edxに格納されます。
ところで absolute 使うのやめようよ。
>>800 の例だと
function getRDTSC2: Int64;
begin
asm
DW $310F //RDTSC
MOV DWORD ptr [Result+4],EDX
MOV DWORD ptr [Result],EAX
end;
Result := Result + 0; //なぜかこの無駄なコードを入れないとDel5がコンパイル時暴走する
end;
でいいはず。
804 :
799>802 :2001/07/17(火) 18:22
>Windows 95/98:作成できるビットマップのサイズは、最大 16MB です。 ありがとうございます。(知りませんでした。。) でも1920x1080のRGBだから6,220,800 Byteってことで大丈夫のはず。。 しかもNT4だし。。 いま、 CreateCompatibleBitmapでメモリーデバイスコンテキストのHBITMAPを取得し、 (これはうまく行った。) SetDIBitsで画の情報を打ち込もうとしたら、今度はこの関数で失敗。 はぁ。。困った。。
805 :
798 :2001/07/17(火) 18:32
>>803 ありがとう。 たぶんmov Result,EAX は最初に試した筈だけど
何故かエラー(バグか?)になるもんだから、absolute付けてさらに
って調子で 上塗りしていったみたい。
>>804 判らないけど、GetLastErrorしてFormatMessageして
どういう理由でエラーになるか調べてみたら?
806 :
798 :2001/07/17(火) 18:35
つまりは SysErrorMessage を呼び出すといいよ
807 :
799 :2001/07/17(火) 20:27
>>799 ちょっとテストしてみました。
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(y, 720 * 480); //1920 * 1080 );
SetLength(u, 720 * 480 div 2); //1920 * 1080 div 2);
SetLength(v, 720 * 480 div 2); //1920 * 1080 div 2);
SetLength(rgb, 720 * 480 * 3); //1920 * 1080 * 3 );
end;
として、bitmapの大きさを720x480にすると
CreateDIBitmapでビットマップハンドルが返ってきて
画もそれらしいのが出力されます。
今度は、
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(y, 1920 * 1080 );
SetLength(u, 1920 * 1080 div 2);
SetLength(v, 1920 * 1080 div 2);
SetLength(rgb, 1920 * 1080 * 3 );
end;
に戻して、bitmapの大きさはさっきと変わらず、720x480にすると、
CreateDIBitsでこけます。
この結果から、大きな領域を持つ動的配列が悪さをしているように感じますが、
どうなんでしょうか?
このテストでぴんと来た方、どうぞ教えてください。。
808 :
799 :2001/07/17(火) 20:29
>>807 の 「CreateDIBitsでこけます。」
誤:CreateDIBits
正:CreateDIBitmap
809 :
デフォルトの名無しさん :2001/07/17(火) 21:00
>>805 mov Result,EAXがコンパイルエラーになったのは
EAXが32bitなのに対し、Resultが64bitだからじゃないかな?
>>807 Windows API はたまにRTLライブラリで確保されたメモリポインタを
受け付けないことがあります。動的配列の代わりにGlobalAllocPtrを
使ってはどうでしょうか?
810 :
798 :2001/07/17(火) 21:13
>>809 >mov Result,EAXがコンパイルエラー
あ、これは確かに DWORD ptr つけないとサイズが
合わないというエラーになる。
でも、DWORD PTR つけても今度は 単にコンパイルエラーと
表示されるんだよ。
最後の Result;=Result +0;のおまじない付けずに試してみて
811 :
799 :2001/07/17(火) 21:23
>>809 さん、どうもありがとうございます。
GlobalAllocPtrってのが分からないのですが、(ヘルプにのってなかった)
AllocMem関数でヒープを割り当てればいいってことですよね?
(メモリ割り当ての関数がいっぱいあってよくわからない。。
AllocMem, GetMem, New, SetLength...)
ところで、ポインタを得るのはいいんですが、Cと違ってObjectPascalの
ポインタは配列のように扱えないので非常に不便です。
なんとか、array of Byte型の動的配列にキャストする方法はないのでしょうか?
PByteArray型がそれっぽいんですが、どうもコンパイルが通らないです。。
>Cと違ってObjectPascalのポインタは配列のように扱えないので非常に不便です。 なら、C を使えば?無理して丸を四角に押し込むこともあるまい。 C でもポインタと配列は異なるものなのだから、よい機会なので二つをはっきり弁別できる 体を作っておくと、死ぬまで有効に使えるよ。
813 :
デフォルトの名無しさん :2001/07/17(火) 22:20
814 :
デフォルトの名無しさん :2001/07/17(火) 22:33
813のリンクに type TIntArray = array[0..9999] of Integer; PIntArray = ^TIntArray; ってあるけど、15,000*4Byte分のメモリを割り当てて 9999を超える要素にアクセスするのは大丈夫なのかなぁ。。
最近、ここはMLより高度だ 勉強になる
だって ML の主メンバーがこっちに.... 以下自粛。
817 :
デフォルトの名無しさん :2001/07/17(火) 23:15
>>810 確かに内部エラーが出るね。このスレの上の方でも出ていたけど
beginブロックの中にasmブロックがあるコードでは
コンパイラが処理しきれないことが多いのかも。
>>811 GlobalAllocPtr 関数とは Windows API の GlobalAlloc 系命令を
呼び出してメモリブロックを確保する関数です。GetMemやAllocMemは
Delphiの関数ですね。
使い方はこうかな?
var
P: Pointer;
begin
P := GlobalAllocPtr(GMEM_MOVEABLE, 1920*1080*3); // 確保
if P=nil then OutOfMemoryError; // 確保できていない場合エラーにする
try
// P をいじっていじっていじりまくる
finally
GlobalFreePtr(P); // 解放
end;
end;
>>814 大丈夫です。極論すると TIntArray = array[0..0] of Integer; でも
いいんですが、それでは不便なことがありますので 0..9999 とかを
使うのが普通です。
array[0..High(Integer) div sizeof(Integer)-1] of Integer
>>818 うっかり実体を確保すると、崩壊するよ。
元から範囲チェックをしない。と決めているんだからどんな数字を使っても同じ。
ただ、0とか1くらいは含んでいないと、コンパイル時にエラーになる。
9999がいいところかな。
ふつーにGlobalAlloc/Free呼べないの?
>>817
9999ならうっかり実態確保してもいいのか?
Inc()とかDec()とか使えば無理矢理ポインタ演算も出きるし、 結構速度的なチューニングでもいけるよ、Delphiって。
>>816 マジですか?
MLは堅苦しい雰囲気が漂ってるので、こっちの方がイイ!
>>819 範囲チェックしないんですか>ObjectPascal。
どうにも不安だったのですがおかげで夜も安心です。
ただいちいちtype宣言書くのが面倒ですね。
>>821 じゃぁ999で。
825 :
デフォルトの名無しさん :2001/07/17(火) 23:48
>>824 プロジェクトオプションのコンパイラ項目でチェックできるように出来るよ。
または{$RANGECHECKS ON}の行をユニットの先頭に挿入する。
>>825 ほうほう、逆に危険地域へのアクセスを防ぐこともできるってことですね。
まじDelphiいいなぁ。
>>826 Cはその辺のことを一切面倒を見ない代わりにスピードを追求している。
配列アクセスが多くなると効いてくる Javaでも配列の範囲チェックを以下に省略するかが最適化のネックの1つ
話がかみ合っていないな...
つーか何の話してるのかわからん
俺は0..0派だな。
PByteArray = ^TByteArray;
TByteArray = array [0..0] of Byte;
でCみたいに配列風にアクセスするときはキャストする・・・と。
つか別に0..0でも不便じゃないけど・・・。
>>811 >GlobalAllocPtr
Win32APIのヘルプにのってるかと。
>>815 なんかMLは最近、DB話と初心(以下自粛
834 :
799 :2001/07/18(水) 08:33
みなさん、ありがとうございます。
>>817 さんの方法でうまくいきました。即ち、
win32のGlobalAllocPtr関数を使う方法です。
delphiのAllocMem関数を使ってみましたが、だめでした。。
謎ですな |:3=(
837 :
818 :2001/07/18(水) 10:49
>819 >うっかり実体を確保すると、崩壊するよ。 2Gの配列確保したら絶対動かない。9999で半端に動くよりはよっぽどまし。 0..9999だと10k以上のバッファを扱えない(Byteの場合)。 それに9999ってソースに書くのなんか恥ずかしい。 >833 >TByteArray = array [0..0] of Byte; >つか別に0..0でも不便じゃないけど・・・。 0..0だとn[3]のように定数でアクセスするとコンパイル時にはじかれる。 type IntArray = array[0..High(Integer) div sizeof(Integer)-1] of Integer ; PIntArray = ^IntArray; ByteArray = ... って一通りの型作ってお気に入りunitい放り込んどけば汎用的に使いまわせるよ。
838 :
799 :2001/07/18(水) 11:13
>>835 -836
SetLength関数を使って動的配列の領域を確保するとHBITMAPを取得できない
という問題に対し、AllocMemで領域を確保しても同様にだめであった。
しかし、GlobalAllocPtr関数を用いて領域を確保するとHBITMAPを取得できた。
という意味です。
>>837 なるほーど。定数のときに不都合が・・・。参考になるわ。
そういやsysutilsみるとあからさまに上限とって宣言してあるね
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte;
PWordArray = ^TWordArray;
TWordArray = array[0..16383] of Word;
あ、sysutilsの上限じゃねー。ソマソ High(Integer) div sizeof(Byte)-1 <> 32767じゃん
>TByteArray = array [0..0] of Byte; 最後の要素だけ可変長な構造体を記述するときには 0..0 も有効。 source の下,検索してごらん。
sage たつもりだったのに...
843 :
デフォルトの名無しさん :2001/07/18(水) 15:10
Delphiから文字列を暗号化する場合何が良いですか? インストールCDにこっそりそういうDLLが隠されてないですか?
Companion CD みた?
>>841 いやまあそれは知ってるよ。
TLogPalette弄ったときにWinodws.pas見たら、構造体の最後[0..0]になってた覚えあるしな。
BCB5のCDは見たけど英語だったので読まなかった>844
>>846 せっかくヒントもらったんだから見ようぜ。
いや、俺も英語だから見なかったくちだけど(w
848 :
デフォルトの名無しさん :2001/07/19(木) 10:28
849 :
デフォルトの名無しさん :2001/07/21(土) 02:12
850 :
デフォルトの名無しさん :2001/07/21(土) 02:36
a氏がんばれ。 というか、PPAの人たち ライセンスの事について、ここの住人が何を問題にして いるのかを全く理解していないと思われる。 自分達の視点ではなく あのライセンスを利用する側の視点で見て欲しいものだ。 a氏はOpenSource主義のようだけど 別にその主義じゃない人としてもあのライセンスは困るだろう。 「XMLパーサーを作りたい」という人に対して 「模倣になるからソースは見ない方がよい」とは、なんて いい加減な...
851 :
デフォルトの名無しさん :2001/07/21(土) 03:14
>例えば、PPAのMLの264で
>
>
http://village.infoweb.ne.jp/~skonishi/index.html >
>のページの管理者の方がppa.pasを参考にしてXML Parserを
>書いてみたいと言っていて、それに対してDEKOさんが
>268の投稿で「模倣」の条項があるからそれは止めた方が
>良いと言っています。
>ここで、仮に上の管理者の方がppa.pasを見ていた場合、
>管理者の方がXML Parserを公開することが
>PPAのライセンス違反になる可能性があります。
>
>こういう事が可能性として考えられるライセンスは
>私的にはマズイと思うのですが、
>どういう意見をお持ちでしょうか?
852 :
デフォルトの名無しさん :2001/07/21(土) 03:17
>>740 に対して
---------------------------------------------------------------------------
-----
http://piza.2ch.net/test/read.cgi?bbs=tech&key=971261573 ...ここの掲示板で思う存分書けばいいのにねぇ。
じゃあ書こうっと(笑)。お邪魔します。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=971261573&st=740&to=740&nofi rst=true
まず質問です。
この文の「主張(=getしちゃいけない云々)」はともかくとして、
「事実」は間違っていますかいませんか?
つまり、PPAのライセンスを遵守すると、
>つまり、 PPA.PASをひとたびgetしてしまった人は、
>以降永遠に(わら)、Pascalインタプリタユニットを
>自作して他人に配布することが、できなくなるわけだ。
という事態になる、という解釈(だな)は
正しいですか間違っていますか?
---------------------------------------------------------------------------
-----
1907. Re^2: ほぅ、面白いじゃないの(^ー^) DEKO [URL] 2001/07/19 (木) 03:57
うーむ、匿名なら2ちゃんねるとなんら変わらないではないですか(^^;
#いたずらするようなヒマもなければ#技量もないのでご心配なく。
>(前略)という事態になる、という解釈(だな)は>正しいですか間違っていますか?
半分正解です。
誰も「Pascalインタプリタ作っちゃダメ」なんて書いていません。短絡はやめましょう。第一Pascalインタプリタなんてヴィルト先生の本読めばすぐ作れますってば。
>まじめにコンポ作りの志のある人は、 >PPA.PASはgetしちゃ「いけない」!
これは正解かも。まっとうな「Pascalインタプリタ'コンポーネント'」を作るのであればPPAなんか参考にすべきではありません。Pascalで記述されたyaccやlexは存在しますので、そこから始めるべきでしょう。
#外国製のコンポーネントを薦めるならともかく#「getしちゃいけない」なんてよく言えるものだ。
>つまり、PPAのライセンスを遵守すると、
解釈は合っています...なんでこんなライセンスになったのかはPPA-MLログを参照してみて下さい。
#ソースコードの取得に$99必要な「QuickReport」は?#なんてな質問はヤブヘビですかね(^^; 持ってますけど。
853 :
デフォルトの名無しさん :2001/07/21(土) 04:20
TreeViewの表示をカスタマイズしようと思い、CustomDrawItemイベント を書いたのですが、フォントがでかく表示されてしまいます。 以下は最低限の再現するソースです。 解決方法はありますでしょうか? ちなみに、TListViewでも同じです。 procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var ARect: TRect; begin DefaultDraw := True; ARect := Node.DisplayRect(True); TreeView1.Canvas.TextOut(ARect.Left, ARect.Top, Node.Text); end;
>>PPA なんつーか、2ch(匿名)だからってへんに反発くらってる感じがして残念。 いや、それ以前に態度を変えるつもりはないようだから、 2chは口実にすぎないのかもしれないけれど。 しかしa氏ら、キレないでよく頑張ってるなー。
855 :
デフォルトの名無しさん :2001/07/21(土) 08:19
PPA潰しのコンポーネントに期待
856 :
デフォルトの名無しさん :2001/07/21(土) 09:09
>>853 DemoのCustomDrawをみると
DefaultDrawをTrueなのにフォントを描画しては
いけないようです。
それにフォントを変更する場合は
TreeView.Fontあたりを変えた方がいいらしい。
(そらそうだ)
あまりOwnerDrawってやったことないけど
OwnerDrawする場合はイメージや
左側の罫線部分すべて描いた方がよさそう。
というか、VCLのデフォルト機能として
貧弱なんだよなあ。
Demoの
procedure TCustomDrawForm.TVCustomDrawItem(
の if cdsSelected in State then
をコメントアウトすると幸せになるかも
857 :
856 :2001/07/21(土) 09:28
TextOutの直前に TreeView1.Font.Size := TreeView1.Canvas.Font.Size; これをするといいのかも知れない。
CustomDrawでTreeView1.Canvas.Fontは全然効きません。 まだ理由はわからんけど。 あとVCLにバグがあって、文字を透過描画する際に SetBkMode(TreeView1.Canvas.Handle,TRANSPARENT) をやらんを駄目です。
859 :
853 :2001/07/21(土) 15:18
>>856 >>857 >>858 ありがとうございます。
一旦、DisplayRectで取得した領域を背景色で塗りつぶし、
SetBkMode後に描画したら、ちゃんと表示できました。
しかし、SetBkModeを使えばいいなんて何処で調べるの?スゴ杉。
しかし、1つのNodeに複数の色を使おうとすると、最後に
セットした色で全て描画されてしまう現象が起きてしまいました。
例)
TreeView1.Canvas.Font.Color := clWindowText;
TreeView1.Canvas.TextOut(Rect1.Left, Rect1.Top, 'あいうえお');
TreeView1.Canvas.Font.Color := clBlue;
TreeView1.Canvas.TextOut(Rect2.Left, Rect2.Top, 'かきくけこ');
上のようにすると、「あいうえお」まで青で描画されてしまう。
もう、面倒なのでBitmapなどに描画後、貼付するなどの手段を
試していこうと思います。
>>859 漏れ書いたんだけど
>CustomDrawでTreeView1.Canvas.Fontは全然効きません。
コレな
ソース追ってるが、原因はわからん。意外にTreeView自体のバグかも。
861 :
デフォルトの名無しさん :2001/07/22(日) 13:13
もうちょっと具体的にやりたいことを書いて サンプルをアゲてみてくれい。 TreeNodeの文字にグラデーションでも付けたいの?
カンファはどーだったんかね?
863 :
デフォルトの名無しさん :2001/07/22(日) 15:32
>>861 TreeNodeの右側に文字列を追加したいのです。
Becky(メーラ)のツリーのような感じです。
フォントサイズは、Node、追加文字列ともに同じ大きさですが、
色は、Nodeは黒。追加文字列は青などにしたいです。
また、Nodeを選択しても、追加文字列は反転しません。
と、いうのをカスタムドローでやったら、大きいフォントで
描画されたり色が反映されなかったりしたわけです。
現在は、一旦TBitmapに描画してからNode.CanvasにDrawしています。
多少ちらつきますが、一応上手く表示されています。
本当は、Node.Canvasに直接描ければいいんだけど。
864 :
デフォルトの名無しさん :2001/07/22(日) 15:43
IEのプロクシを外部から変更させたいんだけど. レジストリの パス HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ キー ProxyServer を変更するだけじゃIEが認識しないんすけど, 何か通知メソッドかなんかありますか?
865 :
デフォルトの名無しさん :2001/07/22(日) 16:13
WM_SETTINGCHANGE
866 :
865 :2001/07/22(日) 16:16
めんどくさいのでHWND_BROADCASTで送ってしまいましょう。(おせっかい?)
867 :
デフォルトの名無しさん :2001/07/22(日) 16:43
delphiってもうバージョンアップしないって本当ですか? 買っても将来性がないんですよね。 他の買った方がいいですよね。
放置。
つーか、定期的に同じ内容で書き込んでるやつがいるな。
VBの次はDelか?おいおい。
871 :
デフォルトの名無しさん :2001/07/22(日) 18:23
デルファイってターボパスカル?ってのを使ってるんですよね。 どんな言語なんですか?
872 :
デフォルトの名無しさん :2001/07/22(日) 18:31
>>863 やりたいことは理解できたのですが
うーん、わかりません。
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect: TRect;
FontBuffer: TFont;
begin
DefaultDraw := True;
FontBuffer := TFont.Create;
try
FontBuffer.Assign(TreeView1.Canvas.Font);
TreeView1.Canvas.Font.Assign(Label1.Font);
TreeView1.Font.Size := Label1.Font.Size;
NodeRect := Node.DisplayRect(True);
TreeView1.Canvas.Font.Color := clGreen;
TreeView1.Canvas.Font.Color := clRed;
TreeView1.Canvas.TextOut( NodeRect.Left, NodeRect.Top, Node.Text);
TreeView1.Canvas.Font.Color := clBlue;
TreeView1.Canvas.TextOut( NodeRect.Right, NodeRect.Top, Node.Text);
TreeView1.Canvas.Font.Assign(FontBuffer);
finally
FontBuffer.Free;
end;
end;
文字が全部、これで赤で描画されるんだよね。
なんだこりゃ?
TreeView1.Canvasに何か値をセットすると
あとあとまで変な動作するのか?
DefaultDraw := Falseでも
文字描画がおかしいな。
いわゆるInplaceEditだっけ?TreeViewが持っているEditの描画が
邪魔しているのか??全然わからないわ。
力になれんでスンマソ・
867の煽りって今まで何度でたっけ 何が悔しくて詰まらんカキコするんだろう?
867ってもうバージョンアップしないって本当ですか? 飼っても将来性がないんですよね。 他の飼った方がいいですよね。
>>875 コボラーが仲間を求めて彷徨ってるに100ルピー
>>871 ネタっぽいけど一応。
Delphiでは、ObjectPascalという言語を採用しています。
Delphiの前身がTurboPascal(これもObjectPascal)なので勘違いされたのかと。
>>878 えらいなー。
880 :
デフォルトの名無しさん :2001/07/22(日) 19:51
TFrame の Anchors て何かやらないとダメなの? 他のコンポみたいに、alRightとしてみ右枠に引っ張られないんだけど
881 :
デフォルトの名無しさん :2001/07/22(日) 19:52
これからDelphi6について勉強しよう とおもってるんだが。 初心者にお薦めの一冊があれば 教えてください。
>>881 習うより慣れろで いきなり触り倒してみるのが誰にでもお勧め出来る
学習方法だけどさ、
この一冊はキミの事知らないと何ともいえないね 自分で探すか、
キミの事ある程度知ってる人に選んでも貰えよ
>>863 procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
var
NodeRect: TRect;
FontBuffer: TFont;
begin
DefaultDraw := True;
FontBuffer := TFont.Create;
try
FontBuffer.Assign(TreeView1.Canvas.Font);
NodeRect := Node.DisplayRect(True);
TreeView1.Canvas.Font.Color := clRed;
TreeView1.Canvas.TextOut( NodeRect.Left, NodeRect.Top, '');
//Textoutしたという事実だけあればOK
TreeView1.Canvas.Font.Assign(FontBuffer);
finally
FontBuffer.Free;
end;
end;
procedure TForm1.TreeView1AdvancedCustomDraw(Sender: TCustomTreeView;
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
NodeRect: TRect;
BrushBuffer: TBrush;
i: Integer;
begin
BrushBuffer := TBrush.Create;
try
BrushBuffer.Assign(TreeView1.Canvas.Brush);
TreeView1.Canvas.Brush.Color := TreeView1.Color;
for i := 0 to TreeView1.Items.Count-1 do
begin
if not TreeView1.Items[i].IsVisible then continue;
NodeRect :=
TreeView1.Items[i].DisplayRect(True);
TreeView1.Canvas.Font.Color := clBlue;
TreeView1.Canvas.TextOut(NodeRect.Right, NodeRect.Top, TreeView1.Items[i].Text);
TreeView1.Canvas.Font.Color := clBlack;
end;
TreeView1.Canvas.Brush.Assign(BrushBuffer);
finally
BrushBuffer.Free;
end;
end;
イベントを変えてみた。
Advancedじゃなくても同じ動作
一応実現したのであとは任せていいかな?
なんだこりゃ 結論はTreeViewのバグなのか?
テストコードががちがちに入ってるので コードぐちゃぐちゃだから削ってね。 要はCustomDrawItemで描画したものは テキスト領域として扱われるらしいという事と TreeViewItemの右側に描画したい場合は CustomDrawイベントを使えって事。 それさえわかれば 若干のバグっぽい所には目をつぶれる。 だけど、それがわかる前がすごいダルイぞ(゚Д゚)ゴルァ 往々にしてOwnerDrawはだるいので嫌いだ。
889 :
881 :2001/07/22(日) 23:24
>>866 駄目だ.wParamに何くわせりゃいいのか判らん.
鬱出汁脳
ずいぶんと 脳から汁が出ているみたいだな。
深雪じゃないか。さすが戸田さん
さぁ。恒例の戸田の門前払いに新参者の岡田がかみついた。 まぁどうでも良いけど,戸田市って自前の実行時パッケージによるアプリケーション配布の 経験きっと無いんだろうな
896 :
デフォルトの名無しさん :2001/07/23(月) 09:45
>>880 >TFrame の Anchors て何かやらないとダメなの?
ダメみたいね。 設計時はちゃんと動くから気付かないけど
PPA使いたくなくなった・・・・・・・・・・・・・・・・・・・・・・・・・
>>896 実行時でも動く。
何か設定が違うのかな?
object Form1: TForm1
Left = 272
Top = 161
Width = 452
Height = 221
Caption = 'Form1'
Color = clBtnFace
Font.Charset = SHIFTJIS_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = 'MS Pゴシック'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 12
inline Frame21: TFrame2
Left = 16
Top = 24
Width = 377
Height = 153
Anchors = [akRight, akBottom]
inherited Memo1: TMemo
Width = 377
Height = 112
end
inherited Panel1: TPanel
Top = 112
Width = 377
end
end
end
899 :
デフォルトの名無しさん :2001/07/23(月) 11:05
戸田ってやつのレスは過去ログを検索してるときうざい
>>898 もちろんいつも必ずそうなるんじゃないけど
ちょっと複雑な事やった時なる時があるよ。
そうですか。 実はオレも似たような不具合に出会った事があるので TFramesは使わないことにしてます。
あつものにこりてなますをふく。 羹の熱いのにこりて、冷たい膾をも吹いて食う。 一度失敗したのにこりて無益な用心をする。 羹に懲りたる者あえを吹く
羹がなんだかわからない子供も多いんだろうね。
サパーリワカラン(;´д`)
漢字のお勉強 羹 あつもの 汁物など火を通した熱い料理の古称 雑煮 韲 あえ さしみ あえもの 膾 なます 大根にんじん を細く切って酢あえにした食品 薄く細く切った生の魚肉を酢にひたした食品
5秒で忘れる鶏頭(・∀・)
>>906 勉強になります。よもやdelスレで国語の知識をつけられるとは。
900越えたけど、新スレ建てる? それともあんまり違いがないのでTechに合流しちゃう?
チンカスだと思ってた
>>850 >自分達の視点ではなく
>あのライセンスを利用する側の視点で見て欲しいものだ。
なんかあれは凄いなあ。
ライセンスとは他人に付きつけるものなのに、
何をどう付きつけてるのかアヤフヤな状態のままだし、
そのくせ自分の権利権利って言うし、
>「XMLパーサーを作りたい」という人に対して
>「模倣になるからソースは見ない方がよい」とは、なんて
>いい加減な...
ええ。めちゃめちゃいい加減ですね。
結局、(あの作者の自己責任に基づく)「模倣」の定義が
あやふやのまま。あれで人を縛ろうなんて御都合すぎ。
ケース倍ケースで都合よく解釈して運用しようと
思ってる(というか無意識(または確信犯の演技?))という手合いかも。
いや、あと数日くらいは希望を捨てずに待つべきなのかも。
それにしても、模倣の判定基準としてソースのコピぺを持ち出す
っていう解釈を、生まれて初めて聞きました。
それ、なんか違うぞ。
本気で思ってるのか、苦し紛れなのか…
>>852 あの1907は、なめてるか、
「文句言われるなんて想像もしてなかったので」
はちゃめちゃな受け答えをしてるか、どっちか、かな。
ここの元記事を読んだんだろうに、出来る出来ないという質問事項を
どうやったら技術習熟度の話だと思えるのやら…
皮肉で返してる積もりなのなら、ありゃ空振りして自分の顔に当たってるよ。
うーん。現段階では確定は出来ぬが推測として、
単にソース公開する「根性」が無いだけなんじゃないかな。
根性といっても別に活動しないとならない事柄が有る訳じゃなく、
単に「変な要求を他人にしない(自由を奪わない)」という
自分を律する方向だけなんだがな。何も足さない何も引かない。
漏れなら、ソース(=けつのあな?)まで公開しちまった状態で
なお人様相手に空威張りするなんて、恐くて出来ません。
>>855 いちいち作ったりするまでもなく、既に一杯あるわけですから(わら
>>906 え?すると古代中国にもあの「なます」が有ったの?
あの、紅白な彩りで少しだけ目出度い雰囲気なんで、
おせち料理に入れたりするあれだろ?
a氏ですか?、お世話様です。 最初にDEKO氏にメールしたのはオレです。 こういう事はあまりいいたくはないけど "PPAは使わない"という判断を下せる十分な理由が出来ました。 オレには得るものはあったので、感謝しています。 PPAの人たちやa氏に得るものはあったのだろうか。 主張は賛成反対それぞれあるが双方に悪い事したよ。 都合よくポヂティブに考えたら、ライセンスの実際の運営の際の 難しさ・問題点を洗い出したともいえるかな。 あの来扇子は結局の所 『ぼくらのお仲間になるのならソースみせたげるよ。』 という事を目的にしたものなのだろうね。 > 結局、(あの作者の自己責任に基づく)「模倣」の定義が > あやふやのまま。あれで人を縛ろうなんて御都合すぎ。 > ケース倍ケースで都合よく解釈して運用しようと > 思ってる(というか無意識(または確信犯の演技?))という手合いかも。 激しく同意。 ああいうソースライセンスと、一連の受け答えで出てくる答えが 「結局の所、ライセンスを使いたいのですか?」とか 「使う側の権利ばかり主張して作るものの権利は守らなくていいの?」とか だとしたら 全くわかっていないとしかいいようが無い。 自分たちを客観視する事も出来ないというのは 大変かわいそうに思えました。 >>つまり、仮にギコPascalなるものが存在していて そのソースライセンスがPPAと同様のものだとすれば PPAの方々はその存在はわかっていても見ることが出来ないわけであり しかも見た途端にPPAには参加できそうにもなくなるので 非常に迷惑こうむるはずだが それを想像できないというのはかわいそう。 お仲間だけに見せたいソースなのなら 世間一般に対してライセンスと称して公表しないでもらいたい。 マナーの問題だと思うが、ソースライセンスを取得したいと思って 見ている利用者に対して大変失礼だ。 完全ソースクローズドコンポーネントや ソースが高額なコンポーネントの方が 遥かに安心だと感じています。 非常に残念ですが他のインタプリタコンポの利用を考えてみます。 アポロかな?
913 :
デフォルトの名無しさん :2001/07/24(火) 12:02
このスレは今期限りで終了させていただきます。 新しいスレは絶対に立てないでください。
914 :
デフォルトの名無しさん :2001/07/24(火) 12:14
どの言語使いか知らんがいやがらせか?
>>863 は
結局問題を解決できたか?
Becky風TreeView描画コード書いた。
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
DefaultDraw := True;
TreeView1.Canvas.Font.Color := clBlue;
TreeView1.Font.Color := clRed;
TreeView1.Font.Size := 15;
end;
procedure TForm1.TreeView1CustomDraw(Sender: TCustomTreeView;
const ARect: TRect; var DefaultDraw: Boolean);
var
NodeRect: TRect;
i: Integer;
begin
DefaultDraw := True;
TreeView1.Canvas.Font.Color := clGreen;
for i := 0 to TreeView1.Items.Count-1 do
begin
if (not TreeView1.Items[i].IsVisible) then continue;
NodeRect := TreeView1.Items[i].DisplayRect(True);
TreeView1.Canvas.TextOut(NodeRect.Right, NodeRect.Top, '('+IntToStr(i)+')');
end;
TreeView1CustomDrawItem(nil, nil, [], DefaultDraw); //※
end;
※のコードが無いと
Label1のフォントにItalicなどしている場合
TreeView1.Items[0]番の右項目(上の例では'(0)')の
初期描画位置がどうしてもずれる
なぜだ!教えてくれ。
917 :
デフォルトの名無しさん :2001/07/24(火) 12:57
変な嫌がらせ厨がいるみたいだ。
919 :
917 :2001/07/24(火) 13:08
>>918 スレが乱立してるから人気のないスレは統合していった方がいいでしょ。
それをいやがらせなんて言うなんて最悪だよ。
もうくんなよな!
なんで、単独で900超えるレスがあるのに
>>917 の
***すれ立てるまでもない質問はここで 第3刷***
に統合されなきゃいけないんだよ。
おまえがもうくるな。
よしよし、荒れてきました(w
922 :
1 :2001/07/24(火) 14:03
test
倉庫入り防止age
Delギコは?
無事終了したスレは倉庫に入れるのが筋では。 part1000ができる頃にはDelphiで板が全部埋まっちゃうよ。
別に上げんでも
そのうちながれていくから別に立てんでもいいかと