DELモナーがどんな厨房疑問でもやさしく答えます。 DELモナは時に私であり、時には別の人。 他のスレに書き込んで罵倒される前に、まずここで質問しよう。 ∧ ∧ ( ´∀`)( )
Delギコはどこに逝きましたか?
これってDelギコスレのPart5? それとも別系統?
Delギコいなくなってから、険悪ムードがただよってる。 昔はあのスレ居心地よかったのにねえ。 最近は見る気もしないヨ。
5 :
デフォルトの名無しさん :01/10/15 11:41
ギコスレとは別でいいんじゃない? 一緒にすると、また荒らされそう。
Delギコ来てからから、険悪ムードがただよってる。 昔はDelスレ居心地よかったのにねえ。 最近は見る気もしないヨ。
*やさしい* は「やさしく答えてくれる」という意味でも有り 「あまり難しい質問には答えられない」という意味でも有りマする。
初心者スレはもうあるんですけど・・・
このスレのタイトルには 初心者 と書いてないような。
それって、 タイトルが違うんだから、似たような趣旨のスレ立ててもいいだろ という主張ですか?
いくらなんでもスレ建て過ぎだろう。
ニセモノ カコワルイ
13 :
デフォルトの名無しさん :01/10/15 13:27
Delphi6 Pro 「ヘルプ」の「トピックを検索」で 単語を入力しても一覧に現れないんです。 'ExtractFilePath' とか 'TStrings' とか。 そのくせ、エディタ上で TStrings と書いてから F1 を押すと ちゃんとヘルプが表示されます。 なんとかなりませんか。
だからサポートに電話しろって
>>13 それはOSの問題だから、簡単な解決方法はWindows2Kに開発システムを移動するとか
ヘルプを自分で小さくするとか
16 :
デフォルトの名無しさん :01/10/15 14:30
Windows 98/ME における Windows ヘルプインデックスの制限 Windows 95,98,および Millennium の Windows ヘルプエンジンは, [トピックの検索]ダイアログの[キーワード]タブに 16 ビットのリストボッ クスを使用しているので,32,767 語を超えるキーワードを表示できません。こ の制限値を超えるエントリがある場合,[キーワード]は空白になります。これ らのいずれかのオペレーティングシステムを使用している場合,ヘルプイン デックス制御ファイル (Delphi6.ohi) に変更が加えられて,[キーワード] 表示からいくつかのヘルプファイルが除外されていることに気がつくことで しょう。この変更は,ほかのヘルプシステム機能 (たとえばファイルの相互リ ンクや〔F1〕キーによるアクセス) には影響しません。さらに,":Index" エン トリの前にコメントを示すセミコロンを追加したり削除することで,インデック スを拡張したりほかのヘルプファイル参照を追加または削除できます。ただし, .OHI ファイルを編集する場合は,キーワード表示が空にならないように, WinHelp ビューアの制限に注意してください。 (readme.txtから抜粋)
>>17 文章にメリハリが無く、ただ翻訳しただけの文体です。
技術文書なのですから、原因と結果、対策をはっきり分けて書きましょう。
>>18 Borland japanにいってください。
20 :
デフォルトの名無しさん :01/10/15 15:41
インデックスを2つに分けるにはどうすればよいですか。
IDE 終了後、Help\delphi6.ohx を Delphi6.ohi に上書きコピー。 そのあと Delphi6.gid を削除。.gid は隠し属性が着いているので ちゃんと削除すること。 その後 IDE を起動すればよし。
>>21 インデックスからキーワードが全て消えました…
Help\*.gid ちゃんと消したか?
24 :
ななしヘタぐらま :01/10/15 18:59
>>17 なにぃ!?
ということは,Win9x系の環境では
[F1]キーでのヘルプはできるけど
自分でキーワードを打ち込んでは使えない
ってことですか?
だとしたら最悪(泣).
Delphi6への移行はコンピュータを更新するまでナシだなぁ.
>24
じゃなくて、ヘルプのキーワードが大きすぎるとwin9xはタコだから表示出来ないけど、
ohiはテキストファイルだから
自分で
必要なの選んでねって事。
自分でやるの嫌なら ohx って拡張子であんまり使いそうもないの消しといたから
それコピーして使ってねってのが
>>21 さんの説明
26 :
デフォルトの名無しさん :01/10/15 20:19
ん?ヘルプのキーワードリストって *.ohi に入ってるんですか? てっきり文章中でキーワード属性にした単語を 自動収集しているのかと。見てみよう。
メモ: .GID/.Fxx これらのファイルはヘルプによって自動的に生成されるファイルです。 GID は General Index ファイルを示し, Fxx ファイルは,全文検索を実行したときに生成されるファイルです。 ヘルプシステムの設定を変更したり,更新する場合は,これらのファイルを 削除することをお勧めします。
OpenHelp使えばそういう作業ラクなのに…(ボソ
>28 でも D6PersonaiにはOH.exe は付いてないし…(ボソ ボソ
ちゅーか開発にWin9xは不便すぎるだろ。。。NT系に移行しようよ。
>>28 & 29
Personal は元からヘルプが少ないからキーワード表示できるし…(ボソ ボソ
>>31 買いましょう。
金がない?
放送大学に入ってアカデミックパック買い漁れ!!
以上。
34 :
デフォルトの名無しさん :01/10/16 00:27
初心者スレ見てもぜんぜん意味がわからない私は初心者失格ですか?
36 :
デフォルトの名無しさん :01/10/16 01:31
kylixとDelphiを統合して欲しいと思ってるんですがダメですか? 過去にDelギコで何回か質問させてもらってるんですが全てDelphiの質問じゃなくてkylixでした。 「でもkylixです」って答えると他のスレにとばされるし、、 偽ってすいません。
37 :
デフォルトの名無しさん :01/10/16 01:55
Del猫が可愛くて、一匹飼いたいのですが、 どこで売っていますか?
>>37 こういうネタ野郎は、この板には必要無いと思うがどうよ?
でも可愛いし、、 ダメ?
ヒドイイイイイイイイイ!
41 :
デフォルトの名無しさん :01/10/16 02:11
そのうちカルピスウォーターのボトルキャップに付くんだ・・・
俺買うよ・・・
∧ ∧ |1匹300円|
⊂  ̄ ̄つ゚Д゚)つ|____|
| ̄ ̄ ̄ ̄| || / ̄ ̄ ̄ ̄ ̄
|____| || ∩_∩ <今なら逝きのいいギコが1匹300円だよ~
G|___| \_____
( ・∀・)∩
⊂ ノ
) _ (
(_) (_)∧_∧ ∧_∧ ∩_∩
∧_∧ ∧_∧ ∩_∩ (∀` ) ( ) ( )
( )( ) ( ) ( ∧_∧( ) ∧_∧
( ∧_∧( ) ∧_∧ ( )∩_∩ ( )
( )∩_∩ ( ) ( )( )(
逝きのいいギコ パート2
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=999763206
Delあめ猫にゃ可愛い!
駄スレ
47 :
こたえてくらはい :01/10/16 04:37
Del6セットアップするときにMSのインストーラー(msi) 突っ込まれるけど、その直後の再起動で凍って以来、 Windows98SEが再起動できない(途中で凍る)。 インストール直後の再起動でロゴに戻ったまま黙り込む。 MSのパッチ(シャットダウンサプリメント他、サービスパック も手当たり次第)いれて、WindowsFAQのサイトにある対策全部 やったけどダメ。 なお、シャットダウンは可能。 他にこんな人いる?
>>47 ∧ ∧
( ´∀`)( とりあえず、Del6消して再インストールするモナー )
var I: Integer; S: TStringList; begin
50 :
ななしヘタぐらま :01/10/16 09:30
>>25 とりあえず何とかなるわけですね.
でもMMX Pentium 200MHzだとつらいかなぁ.
>>30 うちPC-9821なんですよ.
会社の予算がないからしばらくがまんですね.
51 :
デフォルトの名無しさん :01/10/16 13:47
Delphi6 Pro のキーワードが多すぎるだけ? 例えば1つの巨大なヘルプを2つに分割って不可能かしら? ヘルプ内でリンクがある場合は無理かな。
>>47 >その直後の再起動で
ってことは Windows Installer のインストールに失敗しているよ?
まさか.... NEC 98 かい?
53 :
デフォルトの名無しさん :01/10/16 14:03
TList を継承して TMyType 型を格納するリストを作ったとします。 TMyType = class(TList) ... public property Items[ Index:Integer]:TMyType read .. write .. ; default; property Last:TMyType read .. write .. ; end; Items プロパティは上書きされているにもかかわらず警告が出ませんが、 Last プロパティはばっちり警告が出ます 「 Last の最宣言のため基本クラスのメンバーが隠蔽されました」 プロパティには overload 識別子をつけられませんが、なぜでしょうか。プロパティはオーバーロードする事は出来ませんか?
54 :
デフォルトの名無しさん :01/10/16 15:29
Lastって、もともとプロパティじゃなくてメソッドでは? メソッドとプロパティは別物だからダメなのでは。 よって procedure Last: TMyType; overload; とすればよいのでは。
>54 でもそれじゃ 代入 出来ない
TMyType = class(TList) と継承する一番のメリットは ○TListを渡せる場所に TMyTypeList を渡せる でも、Lastに書き込みたい程の変更が必要なら TListのリスト管理機構を利用したいだけだと思う TMyType = class list:TList; とTListのメンバーを持たせて、 Listに似たインターフェースを被せたら いいんじゃないの?
SetLastメソッドつくれば?  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ マターリ ミ,,゚Д゚彡∬ 〃 つ旦O ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
>>56 なるほど、どうせオーバーライドするならそちらのほうが
スマートそう。
ありがとう。
59 :
デフォルトの名無しさん :01/10/16 17:46
質問でつ。 当方VBしかやったことないんですが、移行(フリーのやつへ)は簡単ですか? 操作性が全然違かったりするのでせうか?
60 :
デフォルトの名無しさん :01/10/16 17:48
>>59 テメエで考えろカス
人に聞かないと何にもできねえのかゴミ野郎
∧ ∧ ( ´∀`)( ここは、モナーのスレなのでモナー以外は答えてほしくないのれす )
Σ(゚Д゚)ス、スマソ
63 :
デフォルトの名無しさん :01/10/16 20:12
>その直後の再起動で >ってことは Windows Installer のインストールに失敗しているよ? >まさか.... NEC 98 かい? はうう、普通のDOS/V(P3B-F+PIII)です。 以前インストールは一発で完璧に終わりました。 HDDを交換して同じ環境を作ろうとして失敗。 違いと言えばソフトの導入の順番ぐらいですが...悲しい。 Kylixなら考えられない事態です。
64 :
デフォルトの名無しさん :01/10/16 21:38
エディタや環境の操作性はかなり異なると思う。 あとPASCALの文法ね。 Caption とか Top, Left などのプロパティ名は 大体一緒だし、代入演算子が違う事を除けば Form1.Caption := 'きゃぷしょん'; 等という風に、VBをやっていれば直感的に意味はわかる。
>>64 なんかDel6のはVBモードみたいなのが
あるらしいけど。
(まだPersonal試してないのでゴミン)
エディタに関して言えばVBみたいに
いたれりつくせりではないと思う。
(VBはやりすぎって感もある。
個人的にはVCのエディタぐらいが好きだな)
多分がいしゅつかもしれないけど、VBのデバッグで、
カレント実行プロセスをドラッグにより自由に元に
戻せたり、進ませたりできるなんて、
最初ぶっ飛んだよ。
インタプリタのなせる技なんだろうね。
スマソ >なんかDel6のはVBモードみたいなのが >あるらしいけど。 -> なんかDel6の操作についてはVBモードみたいなのが あるらしいけど。
VBからの移行で一番辛かったのは 妙に T で始まる名前が多い事だった。 はじめは、画像一枚表示するにも一苦労だ。 TGraphcis とか TBitmap とか TCanvas とか。 あと、一番最初から意味不明のコードがかかれていることね。 VBは白紙状態のソースコードから始まっていたから、 自分が書いた部分以外の事は気にする必要は無かった。
Helloのソースはowlmainより長いからなあ まあ空のForm程の機能は無いが
VBからの移行か…
すくなくともVB->VC++ほとドラスティックな変化はないから、
安心して(・∀・)イイ!!
あと、VBでは <= =< どちらでもよかった(勝手に修正してくれる)けど、
Delにはそれがないので注意。
とりあえず、文法とクラスの扱い。これがわかれば、あとは
芋蔓式に理解できると思われ。
>>67 漏れは最初、フォームの名前、ユニットのファイル名、
プロジェクトファイル名の決め方でかなりとまどったよ(w
最初、フォーム名が T~ としなきゃ逝けないのかと思ったね(w
>>67 Delも白紙から書くことも可能。
問題は、VBがいくらかコードを隠していると言う点であり、
その方が、初心者は入りやすいということだ(慣れるとどうでもいい)。
TGraphicsとかTBitmapは・・・確かに。
オレもあれを理解するまで一苦労した。
オブジェクト指向がわかってきた後、ようやく
TGraphicsやらTBitmap関係がわかってきた気がする。
>あと、VBでは <= =< どちらでもよかった(勝手に修正してくれる)けど、
>Delにはそれがないので注意。
GExpertsをインストールすればできるよ。
インストール直後だと、;=→:=ぐらいしかないけどユーザーで設定できるので、結構便利。
GExpertsは、他にも
標準で割り当てがないメニューのショートカットを割り当てたり、
エディタを拡張する(ショートカットで範囲選択した行の先頭にコメント入れたり)機能があったり、
かなり有用。今の環境に物足りない人は入れてみるべし。
http://www.gexperts.org/
gexpertsあげ
ミスったage
あげられたついでに、gexpertsで他にどんなことができるか書いてみるか。 ・エディタのタブを複数行にしたり、フラットボタンにしたり(どうでもいいか)出来る。 ・エディタのウインドウにツールバーを配置できる(場所は、上下左右いずれか) 解像度が低くて、エディタを最大化して使う人にはいいかも。 ・インクリメンタルサーチ可能な関数リストがある。 ショートカット一発、数文字入力ですぐに関数に飛べるのでこれは重宝してる。 setTextという関数でもTextと入力するだけでいいという、部分検索も可能。 他にも山ほど機能があるんだけど、使ってない(使えない(藁))
75 :
デフォルトの名無しさん :01/10/17 22:52
_____ /_ | /. \ ̄ ̄ ̄ ̄| / / ― ― | | / - - | ||| (6 > | | | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | | ┃─┃| < 正直、Delphi飽きた || | | | \ ┃ ┃/ \________ | || | |  ̄  ̄|
76 :
デフォルトの名無しさん :01/10/18 00:21
デルハイのえらい人教えてください。 大文字小文字と全角半角、ひらがなカタカナを区別しない文字列検索はありますか? こんなの↓ xxAnsiPos('ア', 'あいうえお'); //trueになる
77 :
デフォルトの名無しさん :01/10/18 01:16
えらくはないが・・・ アルファベットの大文字小文字はAnsiUpperCaseを使えば 統一して比較できるから、あとは全半角と仮名はLcMapString を使えばいいとおもう。
今日はDelphiスレが上がっていないのはなぜなのでしょう?
試験勉強でそれどころじゃないんです
81 :
デフォルトの名無しさん :01/10/18 17:35
> ダウンロードファイル > >このアップデートファイルは、Delphi 6 のためのアップデートファイルです。 >Enterprise 版、Professional 版、Learning 版すべてにご使用いただけます。 >※重要 「Delphi 6 Enterprise 60日トライアル版」には適用できません。 って、D6のLearningってなんじゃいヽ(`Д´)ノ !!
全 SKU 対応
∧ ∧ ( ´∀`)( ここは、モナー専用なのれす )
>>84 いいじゃん別に。
君がこのスレ立てたとしても、持ち主になったわけじゃないんだからね。
>>86 うわっっっ!!!直ってる!!!!!びびったよ(´д`;)
関係者ですか?
89 :
デフォルトの名無しさん :01/10/18 20:33
Delphi 6 Update Pack 1 Whistler serverで動かすと画面が出てこないです 俺だけ?
XP Pro での動作は確認していますが?
>>90 Server のビルド番号は?
92 :
デフォルトの名無しさん :01/10/18 23:04
>>90 Update1 当てる前だと問題なかった?
サンクス 今手元にないのでわからないのですがMSDNについてきたベータ版です Delphi6使うのは普通に使えてます おかしいのはアップデートのプログラムの方です 起動するとSetup.exeが裏(タスクマネージャ)で実行して表に画面が出てこないです
MSDN ベータだとだいぶ古いですね。 普通の InstallShield アプリですから、問題が出るとしたら OS の 問題でしょうか。
OSは標準インストールです Setupが途中で止まってるのか画面がShowしてないだけかもしれません どっちにしてもこの環境は今週までなので他の環境にセットします ちなみに ComCtrls.pasのTSubItemsは procedure TSubItems.Clear; begin inherited Clear; FImageIndices.Clear; end; が治ってないようです 追加しないとFImageIndicesがクリアされません
96 :
デフォルトの名無しさん :01/10/19 00:16
( ´V`) 良い書き方を思いついたのれす。 変数宣言を見なくても、変数の型が一発で分かるのれす。 全変数の初期化なんぞも簡単にできるのれす。 例) type TInt = (Age); TDbl = (Height, Weight); TStr = (LastName, FirstName); var int:array [TInt] of Integer; dbl:array [TDbl] of Double; str:array [TStr] of string; begin Write( 'LastName > ' ); ReadLn( Str[ LastName ] ); Write( 'FirstName > ' ); ReadLn( Str[ FirstName ] ); Write( 'Age > ' ); ReadLn( Int[ Age ] ); Write( 'Height(cm) > ' ); ReadLn( Dbl[ Height ] ); Write( 'Weight(kg) > ' ); ReadLn( Dbl[ Weight ] ); WriteLn( Format('%s %s %d Years old. %f kg, %f cm',[ Str[LastName], Str[FirstName], Int[Age], Dbl[Weight], Dbl[Height] ])); end.
スレ立てたの私。ちなみに、1以外のモナーは全部私以外の人ですよ。 モナーと書いたのは、単にギコは既出だからという理由であって、 真意は「AA容認スレ」及び、たとえ厨房でも「罵倒はしない、やさしく諭す」という方針にしたかったから。 いや、それだけ。 さらば。DELギコ降臨を望む。
>>96 ハンガリアン表記をより凶悪に推し進めただけのトリッキーコードにしか見えない…。
全ての変数に接頭辞つけるやつは変数宣言を読むのがそんなに辛いんだろうか。 Delphiならフィールドに F 付ければ十分だと思う。
ひゃくばんげっちゅ
101 :
Del初心者 :01/10/20 15:00
DelphiとVC++って、どう違うんですか? あと、コンパイラ型ですか?記述はCに近いのですか?
>>101 Delphiはコンパイラ型です。
記述は C や Basicと同じ種類の方式です。 LISPと比べるならばですが
Delphi と VC++は似てるのは、単に Windows用のネイテブコンパイラである
事くらいで、違う事の方が多く違いはあげられません
103 :
Del初心者 :01/10/20 15:57
>>96 面白いかも
実行時型情報に入るようにプロパティに登録して、変数名=値をファイルに書き出す
ようにしたら便利かも・・・・
でも、それローカル変数でやると最適化が効かないかもしれない
105 :
デフォルトの名無しさん :01/10/21 18:31
Rar形式で圧縮かましたいです。 Rar用の圧縮・展開ルーチンを収めたDLLあるかとぞんじます。 使い方を教えれ。エレ。エレ。エレ。 おねがいします。
107 :
デフォルトの名無しさん :01/10/22 01:13
質問です。 下の様なコード実行するとnew()でエラーが出るんですが ヘルプ見る限り問題ないように思うんですが何処がおかしいのでしょうか? サパーリ分かりません‥‥鬱だ‥‥ pFILE_DATA = ^FILE_DATA; FILE_DATA = record FileName: String; Size: Integer; Date: String; end; function AddFileList( const fileName: String): Integer; var NewItem: pFILE_DATA; begin new(NewItem); NewItem^.FileName := fileName; { 以下略 } end; それとファイルのリストを保持する場合、TListに格納して変更があった時にUI側のListViewを更新するのと 直接ListViewに格納してそこから値を取り出すのとでは(Delphiでは)どちらが一般的なんでしょうか?
108 :
デフォルトの名無しさん :01/10/22 01:17
>↑ どんなエラーば出るの?
「Variants.pasが見つからねぇぞゴルァ(゚Д゚)」 です。。 Personalなんで手も足も尻尾も出ません。(泣
とりあえずパッチ当てたら?
111 :
デフォルトの名無しさん :01/10/22 01:28
>107 ん~、そのエラーが new(NewItem); の行で発生するのかな?
>>109 ソースがないのでソースコードを追ってのデバッグができないというだけ。
さっくり無視(I)すれ。
∧,,∧ / usesにVariantを追加するのかな? ミ,,゚Д゚彡 < U U \ ~ミ ミ ∪∪ 某NewsGroupeでこんな投稿があります、"Delphi6 の ライブラリが全てデバッグ版!?" デバッグ版だとVCLソースをトレースしようとするので ソスなしのPersonalはUp1のインストは必須です
>>111 さいです。
上下にMessageBox()はさんで確認(藁してます。
>>113 現在40%(泣)メタル線返せ~<みかか
>>114 ン?実行時に出るのか?
レスを読む限りコンパイルエラーになりそうだが。
とりあえずアップデートして解決。 エラーの原因はむしろMessageBoxのhwndにCの感覚でNULLを入れてたのが不味かった模様‥‥ ‥‥逝ってきます‥‥
>99 つーか、『識別子定義の表示』があるからなあ。型わかるし。 まあ、マウスでしかポップアップされないから、それがイヤなんだろうけど # ていうか、この機能はキーボードからも出来てほしい・・・
>>117 キーボードからできるとして、どのキーに割り当てればよいと思う?
もうほとんどの組み合わせが使われてしまっているしね。
119 :
デフォルトの名無しさん :01/10/22 10:31
質問です。 デバッグの際、特定のコードで発生する例外では止めないようにするには どうしたらよいのでしょうか? 意図的に例外を発生させていて、例外を発生する状態の方がむしろ正常なのです。 調べてもよく分からないので・・・よろしくお願いします。
>>119 ツール -> デバッカオプション で止めないように出来ます
興味があるのですが、
常に例外を発生させるようなコードというのはどういうものでしょう?
オプション設定で無視する例外を設定出来るYO!
>>119 まず常に例外を発生させるコーディングスタイルは
見直すべきと思われ。
どういうコードか書けばここに居る人が教えてくれるかもよ。
あ、もし例外が発生したときをシミュレートしてコードから 意図的に例外を発生させ、耐障害性とかエラー処理を テストしてるんだったらごめん。
>>120-121 ありがとうございます
>常に例外を発生させるようなコードというのはどういうものでしょう?
オフコンにFTPでファイルを送るのですが
オフコン側ではそのファイルを処理してから消去します。
オフコンがそのファイルを未処理の場合はファイルを送ってはいけません。
そこで
「FTPで前に送ったファイルをGETしてみて
失敗した場合(ファイルがない場合)にのみ処理を続ける」
という具合にしてみたわけです。
例外ってスピード速いし、普通に使って問題無いんだYO! 例外じゃなく、戻り値でエラー判断なんかやってるコードが問題だと思われ。
>>124 それは 失敗した場合に例外を自分で出してるんだよね?
そういう用途ならAbort でいいんじゃない
Abortならデバッカにひっかからないし
>>125 >例外ってスピード速いし、普通に使って問題無いんだYO!
そんなに早いもんだったのか、知らんかったよ。
>>119 サソ、スマソ。
なんかどっかで実行中のプログラムの例外を補足して
ログとるツールがあったような記憶があって(曖昧でゴメソ)、
それで気持ち悪いなぁとか思ってね。
>例外じゃなく、戻り値でエラー判断なんかやってるコードが問題だと思われ。
だけど、Win32APIとかは戻り値でしかエラーの有無を判定できないと思われ…
>>127 サイレント例外は気がつきませんでした。
ありがとうございます。早速やってみます。
自分で例外発生させているなら 継承した例外を発生させてIDEにそれを無視させるとか VCLが発生させる例外なら ブレークポイント2つで上下はさみ その間だけ例外ムシさせる方法があるぞよ  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ ミ,,゚Д゚彡∬ 〃 つ旦O ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
131 :
デフォルトの名無しさん :01/10/22 11:47
>それとファイルのリストを保持する場合、TListに格納して変更があった時 >にUI側のListViewを更新するのと >直接ListViewに格納してそこから値を取り出すのとでは(Delphiでは) >どちらが一般的なんでしょうか? 俺ならば、UpdateFileList みたいなメソッドつくっておいて、 リスト内容を更新するたびにそれを呼び出す。
132 :
デフォルトの名無しさん :01/10/22 11:50
ちゃうちゃう。 IDE内から実行しているから、例外でややこしいことになるのよ。 コンパイルして、エクスプローラから直接実行ファイルを 実行するようにすれば、何の問題もない。
133 :
Delphi6 Enterprise の自慢 :01/10/22 12:05
いやあ、多機能っていいね! コンポーネントいろいろついてくるし!
_________
∧,,∧ /
>>131 ミ,,゚Д゚彡< TListなどにて内部データ構造を格納しつつ、
ミつ つ \ そのItemをListViewのTListItem.Dataと関連付けるのがいいかも
~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
U U チョット手間かニャ
>>130 Indyが出す例外なので
> VCLが発生させる例外なら
> ブレークポイント2つで上下はさみ
> その間だけ例外ムシさせる方法があるぞよ
これを試してみます。
ありがとうございました。
136 :
デフォルトの名無しさん :01/10/22 13:25
256色のBMPファイルを使いたいです。 1.256色のBMPファイルからパレットを取得する方法(pal[256]という変数に取得したい。) 2.他のBMP画像を読み込み、上記1で取得したpal[256]のパレットにする方法。 が、知りたいです。 ご存知の方がいたら教えてください!
137 :
デフォルトの名無しさん :01/10/22 13:33
procedure ParettoWoToru(var Paretto:array [0..255] of TColor; ABitmap:TBitmap); var p:PByteArray; x,y:Integer; begin for y:=0 to ABitmap.Height-1 do begin p := ABitmap.ScanLine[y]; for x:=0 to ABitmap.Width-1 do Paretto[x] := p[x]; end; end;
>>135 Indy が出す例外は、原則 IdException.pas で定義されている EIdException から
継承された例外クラスを使っている。だから「言語固有の例外 - 無視する例外の種類」
に EIdException を追加すれば、Indy 固有の例外で IDE が停止することは無くなる。
>>137 パレットってなんだか知っている?
Paretto -> Palette
140 :
デフォルトの名無しさん :01/10/22 13:43
パレット。256色モード時に色情報を格納。 各ピクセルにはパレット番号を格納。 それがなにか。
>>138 ありがとうございます。うまく行きました。
137 はネタのつもりだろうか?
143 :
デフォルトの名無しさん :01/10/22 16:07
136です。
>>137 ネタですか?ネタですよね!?
ネタでなければ、プログラムがバグっている&やろうとしていることが
違うと思います。
自分としては、
>>140 と同じ意味でパレットという言葉を使っています。
で、フルカラーモードで、256色ビットマップを扱うときに、
1.256色のBMPファイルからパレットを取得する方法(pal[256]という変数に取得したい。)
->BMPのファイルを読んで画面に表示して、その画像のパレットを変数palに代入したい。
というのをどうやるのかが、知りたいです。
よろしくおねがいします。
GetPaletteEntries あとは TNkDIB のソースでも見れ.
>>118 識別子の上でCtrl+Space。
関数の引数を見る(=補助情報を得る)のと同じ感覚で使いたい。
メンゴ。Ctrl+Shift+Spaceだ。
147 :
デフォルトの名無しさん :01/10/23 02:23
つーかさ、ならば256色時に Scanlineを使って得られる値はなんなのさ。
148 :
デフォルトの名無しさん :01/10/23 02:28
それよりちょっと聞いてくれよ。 入力支援に1行ヒントってないものかね。 THoge = class .... procedure Hoge(x:Integer);{$HINT '引数 x をつかって~する'} てな風に書くと、 入力支援時、リストに procedure THoge.Hoge(x:Integer) 引数 x をつかって~する つーふうにでてくると。
やるなら普通にコメントでいいんでは。 VCだと struct foo{ int bar; // hoge ←hogeがTIPヘルプで表示 } ってできる
150 :
デフォルトの名無しさん :01/10/23 02:53
>>147 パレット番号
「ならば」とは何に対して言っているのか?
152 :
デフォルトの名無しさん :01/10/23 03:39
>>151 >ネタでなければ、プログラムがバグっている&やろうとしていることが
>違うと思います。
それなら変数名とか関数名だけで判るようにしとく方がいいと思うのは・・・俺が年寄りなった証拠?
155 :
デフォルトの名無しさん :01/10/23 07:50
>>154 いや、それでも分かりにくい場合ってあるでしょ?
>154 ライブラリとかにあると嬉しいかも。
157 :
デフォルトの名無しさん :01/10/23 11:16
>>144 GetPaletteEntries調べてみたのですがVBの解説しか
みつからなかったです。Delphiのヘルプにもないところをみると
APIか何かなのでしょうか?
パレット詳しい方いたら、教えてほしいです。
160 :
デフォルトの名無しさん :01/10/23 12:45
D6パーソナルって DsgnIntf 無いの? 自作のコンポD6で使いたいんだけど ヘルプにあるWinEditors ユニットも無いし DesignEditors.ini なんてのがdocディレクトリにあるけど?? D5Proの時からDsgnIntfが変な所にあるなと思ってたけど、 なんかコンポーネントはコンパイル済みにしないとダメって事になったのかな? それともD6パーソナル無料化の為に わざと不便にしてるのかな?
161 :
デフォルトの名無しさん :01/10/23 13:52
インターフェイスが分かってるようで理解できてないような、そんな 気がする今日この頃。 凡庸画像フォーマットを実現するには、 TCustomImage = interface public procedure LoadFromFile(~); procedure SaveToFile(~); procedure CopyFrom(~); property Pixels[x,y]:Integer ~; end; みたいなインターフェイスを作ってやれば、 内部でどのような画像の表現方法を取っていても、 呼び出して利用するほうのコードを変更する必要はないということですか。 たとえば、これまでビットマップだったものを 処理速度の向上を理由に、配列にいろ情報を格納するように変更した TPixelArrayImage なんて形式に変えても、利用するほうの コードは変更する必要がないと。
>>160 Delphi4 の時から、デザイン時ライブラリを分割してね。って書かれているのに
いまだにこういう質問が出てくるとは..
Help 読みなさい
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < 自分で体感しないと知らないものです
ミ つ且~~ \___________
~ミ,,,,,, ,,ミ キビシイッス
>>162 さん
プロパチエヂタまでこだわって作っている人は少なそう。
こだわらなくてテキトに作っている人はD6になったとたんつまづーきますね。
フサも2週間前くらいに思いっきりツマヅイタ
>>160 さん、とりあえず、Personalはつらそう……
ご検討を祈ります。
プロパティエディタ系コード(uses Designなんとか)
は実行時コンポーネントコードとは別ユニットにしましょう。
あと、TEditorの作者さま...
プロパティエディタ問題なんとかしてください。
フサの勘違いかもしれないけど、
思いっきりD6DsgnIntf問題にひっかかってません?
>>162 スマン。奇数時しかバージョンアップしない不良ユーザなもんで
ヘルプってこれだよな?
>DSGNINTF.DCU は Delphi に付属しなくなりました。したがって,コンポーネント開発者は
>設計時コードを実行時コードとは別のユニットに分離することを考える必要があります。
>実行時コードでは,それらのユニットを参照しないようにしてください。
>それが不可能な場合は,\source\toolsapi\ ディレクトリにある DSGNINTF.PAS をコンパイル
>することが可能です。ただし,この方法は一時の間に合わせとして提供されるもので,
>将来のリリースでは提供されない可能性があります。
>また,ライセンス契約の条項により,インプライズ社が所有するソースコードに基づく DCU
>を配布することは,そのコードがどのように提供されたかに関係なく,
>許可されないことに注意してください。
設計時ユニットと別けるってのは、単にプロパティエディとかを別ユニットに別けろって事だよな?
てことは、どっちにしたって、コンポソースがプロパティエディタを使う場合はパーソナルだ
けじゃ使えないって事だな・・・まあそんな制限無いと無料で配れないか・・・
使ってみて便利だったらバージョンアップしようかと思ったけど、俺はVer7まで待つわ
>>コンポソースがプロパティエディタを使う場合はパーソナルだ けじゃ使えないって事だな どうしてそういう結論になる?設計時パケージに分離してそっちで designide60.bpl を必須パッケージとして指定すればおわり。 Personal でもコンポ作成/インストールできるって。
>>165 うーん。方法があるのか?
DSGNINTFで使ってるのは RegisterPropertyEditor だけだから
これを別ユニットにして、別に設計時パッケージに入れろって事だよな?
自分のコンポーネントをuses して、RegisterPropertyEditorしてる
だけのソースを作ってみてプロジェクトファイルを弄ってみたけど、
やっぱりコンパイル出来ない。
スマン。どうやってコンパイルしたらいいか教えてくれ
167 :
デフォルトの名無しさん :01/10/23 15:29
最近VCLってつかわないよ。だからEXEサイズ60kbyteいかだ D6personalよりD5learningのほうが使用権が自由でよいなぁ
perl使えよ
169 :
デフォルトの名無しさん :01/10/23 15:36
IndyってフリーなのにどうしてD6personalに入れないかなぁ? Windowsの場合非同期ソケットのほうがいいのわかってるのに 今非同期ソケットやってるのってICSとFastnetだけ、SynapseもIndyも スレッド使いすぎだ というよりなんか似たようなコンポーネントがごちゃごちゃしすぎだD6
>>166 >やっぱりコンパイル出来ない。
エラーはなんと?
あ! もしかして、設計時コンポ無くても実行ファイルは作れるだろうという意味か? そういう意味なら確かに作れたよ。
エラーは当然 DSGNINTF が無い。 で、これを消せば RegisterPropertyEditor が無いが出るよ
>>171 そうだね。多分すでに正解を手にしていると思う。
「設計時コンポ」ではなく「設計時パッケージ」ね。
設計時パッケージは IDE のみが使う。プロパティエディタも IDE のみ。
実行時パッケージおよびコンポーネントのユニットは設計時パッケージやデザイン用
ツールとは分離できる。
>>173 そこまでできているのなら、分離した設計時パッケージに
designide を追加すれば designide60.bpl が DSGNINTF を
提供してくれる。
デザインパッケージの実コード。
登録やプロパティエディタを定義。
unit x;
interface
implementation
uses DesignIntf, MyComp;
begin
RegisterPropertyEditor( TypeInfo(TMyComp), TMyComp, 'Caption', nil); // nil にはプロパティエディタのコードが入るはず。
end.
Package1.dpk の部分
requires
rtl,
designide;
contains
x in 'x.pas';
end.
>.174 ありがとう! 出来たよ。 dpkを開いて requires の下に rtl, designide, vcl: と挟んで入れたらコンパイル出来た。 いやホントありがとう
しかし、今度はD5でコンパイルできなくなった DsgnIntf/DsgnIntfを切り替えるのは {$IFDEF }でいいとして designide と dsnide50 はどうやったらいいんだろ? まあ別名で作ればいいか
*.dpk だけはコンパイラバージョンごとに分けることを勧める。 幸い今後は DLL 名とパッケージ名が分離しパッケージ名には バージョン番号が含まれなくなったから、今回だけですむ。はずだ。
>>169 Synapse のどこにスレッドが使われてる?
>>169 Indy は「スレッドが使えるんだ。ブロッキングで何が悪い?」という思想だから
スレッド使いすぎという批判は筋違い。
[666] スマソ、誤送信
見る見るうちにモナー下がっちゃった。 やっぱり踊って歌える ギコのほうが人気高いんね。
182 :
デフォルトの名無しさん :01/10/24 06:50
sage
184 :
デフォルトの名無しさん :01/10/26 11:12
あげ
185 :
デフォルトの名無しさん :01/10/26 16:38
Delphi5か6安売りしてるところはありますか?イクラですか?
186 :
デフォルトの名無しさん :01/10/26 16:58
>>185 Delphi6 は www.borland.co.jp からタダでDLできま。
187 :
デフォルトの名無しさん :01/10/26 17:09
ビジュアルスタジオエンタープライズエディションロクテンレイの アカデミックばんはさんまんごせんほどでかえるからマイクロソ フトマンセー ボーランドはくがくせいにはきびしい成り
データベースコンポが無いよう
>>186 学生であの膨大なVisualStudioは酷だよ。学生は根気が無いんだから
>>187
>>187 Professionalが3万で買えるだろ。
BorlandのEnterpriseと比較するならMSDNじゃないと。
単純比較はできんが。
190 :
デフォルトの名無しさん :01/10/26 21:22
191 :
デフォルトの名無しさん :01/10/26 21:44
アクティブデスクトップのように、 ウィンドウの位置を ←手前 奥→ タスクバー>デスクトップのアイコン>ウィンドウ>壁紙 の位置に持っていくことは出来ませんか。
192 :
デフォルトの名無しさん :01/10/29 01:46
スレッドを使っているのですが、スレッドからVCLを触る場合はSynchronizeをつかいますよね。 逆にVCL側からスレッドを触るにはどうすればよいのでしょうか。 スレッド側からSynchronizeでポーリングしなければならないのでしょうか。 それとも、ふつうにスレッド(のメンバ)を使っていい、、、わけないですよね。
Indyのソケットを使っているのですがスレッドに渡したソケットをメインスレッド側からも使ってイイ のかなということです。Indyの実装によるのかな
194 :
デフォルトの名無しさん :01/10/29 15:48
まったくの初心者なものでつかぬことをお伺いしますが、 あるレコード型の中のフィールドに、 そのレコード型自身を指すポインタを指定するにはどうしたら良いんでしょうか? Cで言えば、 struct CELL{ int value; struct CELL *before; struct CELL *next; }; みたいなことをやりたいんですが、これをそのままやろうとすると 「~型の宣言が完了していません」とコンパイラに怒られてしまいます。 まさか「汎用のpointer型を使うしかない」なんてことはないと思うんですが…
195 :
デフォルトの名無しさん :01/10/29 15:50
>>194 CELL = record; // コレ
PCELL = ^CELL;
CELL = record
value: integer;
before: PCELL;
next: PCELL;
end;
こんな感じ?
あるいは最初からクラスにするとか type TCell = class public Value: Integer; Prev, Next: TCell; end;
197 :
デフォルトの名無しさん :01/10/29 16:03
>>195 、
>>196 早速のお答え、ありがとうございます。
レコード型で
>>195 のようなforward宣言をしようとしても
コンパイラが受け付けてくれないので、
どうやらforward宣言が効くのはクラスだけみたいです。
ボーランドとしては、レコード型なんか使わずにクラスを使えってことなのかな…
とにかく、どうもありがとうございました。
198 :
デフォルトの名無しさん :01/10/29 16:15
CELL = record; // コレ それいらない。 >PCELL = ^CELL; >CELL = record forward しなくてもこれでコンパイルできるでしょ? Borland 以前、原典の Pascal から、^でポインタ型を定義するときだけ 未定義の型に対する参照が許されるんです。
PCell = ^TCell; TCell = record ・・・ がDelphiらしいかな・・・クラスとレコードの区別がつかんけど
200 :
デフォルトの名無しさん :01/10/29 21:36
おねがいです、以下の仕様で最速の実装をしてください。 なお、宿題とは関係ありません。自分で書いたコードもあります。 要望があれば公開します。 私が作ったコードでは、1024*786*24BITで 15-20秒ほどかかります { Source で指定された画像を Scale 倍したものを Dest に描画する。Dest のサイズも同時に設定される。 拡大縮小時には線形補完を用いて、そこそこ高画質にする。 Source は 24Bit カラーである事を前提とする } function Zoom(Source,Dest:TBItmap; Scale:Extended);begin if Scale = 1 then Dest.Assign( Source ); Exit; end; Dest.Width := Floor( Source.Width * Scale ); Dest.Height := Floor( Source.Height * Scale ); { なんたらかんたら } end;
>>200 >最速の実装をしてください
が、ちと気に入らないが・・・。
>自分で書いたコードもあります。
とのことなので、まず自分のソースをあげてみよう。
そこから悪いところを直していけば勉強にもなる。
202 :
デフォルトの名無しさん :01/10/29 22:12
始めまして、私、Delphi3を使用しているのですが、 Delphi5 と Delphi6 にアップグレードしようしているのですが、 Delphi3→Delphi5 Delphi5→Delphi6 以上のように移行するにあたって、それぞれのメリット、 追加されたものがあれば、教えてください。
204 :
デフォルトの名無しさん :01/10/29 23:50
>>200 ブロックに分けて、テーブルを使うのはどぉ?
205 :
デフォルトの名無しさん :01/10/29 23:54
テーブルというと、ピクセルの重なり具合というか、 ピクセルの色がどの程度影響しているかという指数というか、 そういう奴をテーブルにするという事ですか?
206 :
デフォルトの名無しさん :01/10/30 00:07
例えば、 1,2,3,4 5,6,7,8 って分けて、1で計算したのを2以降で使うようにするの。
>>203 揚げ足とり敵に細かいところを責めてみるか
・SetPixels、GetPixels、ComplementedBrightRGB等のループ内
各関数をインライン展開して、オーバーヘッドを抑える
・Canvas.Pixels[x,y]やScanLine[y];は重いので使わずに、
bit列へのポインタもらって自力で描いたり書いたり読んだりする
# Canvas.Pixels[]など、速度が必要なときに使うのは論外中の論外!!
・浮動小数点は比較的重いので、固定小数点にする
# 最近はあまり意味ないかもな
208 :
デフォルトの名無しさん :01/10/30 06:57
>>207 おお、どうもありがとう
早速修正したいとおもいます。
ところで…
>ScanLine[y];は重いので使わずに、
>bit列へのポインタもらって
今まで ScanLine[y] っていうのは y 行の
ピクセルデータへのポインタを得るものだと思っていたのですが、
そうではないという事ですか?
210 :
デフォルトの名無しさん :01/10/30 07:44
あの混線時にダウソしたけどになやっていいかわかりません。 とりあえず5もくならべのつくりかた教えて。 いままでエディタ+コマンドラインでコンパイルという ことしかやってません。
さ、三目並べにしておけ・・・ というかまずはTmemoを使ってメモ帳作るところから始めた方が良いようなー 3目並べならTlabel のCaption使うだけで作っても良いかも。
212 :
デフォルトの名無しさん :01/10/30 11:19
Delphi4 or 5を叩き売りしてる店無いかな?age
5目並べは、画面にTStringGridを貼り付けて ○●を入れて貰って 後はなんとか頑張る
215 :
Sock2に挑戦 :01/10/30 14:54
すいませんサーバサービスで質問です。 WSAEventSelect()によって非同期によるクライアント待ちをする場合、 accept()実行後、 WSAEnumNetworkEvents()でFD_ACCEPTが成功したかどうか調べたいんですが、 その際、本来accept()の戻り値であるsocketハンドルは どうやって取得すればいいのでしょう? それとも WSAEnumNetworkEvents()によってFD_ACCEPTを確認してから accept()を実行するのでしょうか?
>>209 TBitmap自体、内部的にDIB使ってるけどScanLineの連続呼び出しはやっぱ重い。
検証用に、無理やりTBitmap継承してScanline使わないようにしたクラスが手元にあるんだが、
不完全だしさらすのいやだからなあ(笑
どうしてもっていうなら、さらし用のつくってみるけど。
いや、でも確実に速くなるよ。
ピクセルへ書き込み及び情報取得部分だけでも公開してくれませんか? 最低限のことさえ教えていただければ、自力でなんとかします。
ありゃ。さらし用のTBitmap派生クラスを作ってみたが、速度はちっとも変わらんだ。 おかしいな・・・。
221 :
デフォルトの名無しさん :01/10/30 23:46
∧ ∧ ( ◎_◎) ( ) 24bitではなく32BITにしてあるのは、ダブルワードの インクリメントでちょうど1ピクセル分移動できるようにするためですか。
222 :
デフォルトの名無しさん :01/10/31 00:04
>>219-220 左上からなめるようにスキャンする場合は
効率が良いかもしれないけど、ランダムに
アクセスするような場合ってどうよ?
>222 それも、キャッシュするだけでちょいっと速くなるけど やっぱ遅くなるね。ぼかしで広い範囲指定した日には地獄。
上げたコード、メモリ解放してないや。最悪ヽ(`Д´)ノ
>>221 そんなところで。
>>222 気持ちほど速くなる(藁
つーことは、今回の件ではあまり高速化には貢献できないことになりますか。
225 :
デフォルトの名無しさん :01/10/31 12:55
完全に2次元配列に入れてから処理をすれば…
227 :
デフォルトの名無しさん :01/10/31 22:53
DHCPサーバーからDNSサーバーのアドレスを取得したいんですけど、 出来ればサンプルが欲しい…。どなたか情報お持ちでないでしょうか?
228 :
デフォルトの名無しさん :01/10/31 23:43
Scanline プロパティが遅いのは、GDIFlush API を呼び出したりと いろいろコストがかかる処理しているからだね。 俺は ScanLine から次のラインへのオフセットを計算して 以後それを使って高速化している。 var ScanLinePtr0: Pointer; ScanLineOffset: Longint; Y: Longint; P: Pointer; begin { 画像の任意のラインのポインタを計算するための準備 } ScanLinePtr0 := Bitmap.ScanLine[0]; if Bitmap.Height>1 then ScanLineOffset := Integer(Bitmap.ScanLine[1])-Integer(Bitmap.ScanLine[0]) else ScanLineOffset := 0; { 各ラインのポインタを求める } for Y:=0 to Bitmap.Height-1 do begin P := Pointer(Integer(ScanLinePtr0)+ScanLineOffset*Y); // 取得したポインタPを使ってとりあえず何かしよう end; end;
>>228 これはいいこと聞いた。感謝上げ。
…したいんだが荒らし、批判その他避けで下げ。
230 :
デフォルトの名無しさん :01/11/01 08:35
ネットワーク関係に困ったらIndyを使え。 何でも入ってるしソースから盗むこともできる
>228 ポインタの使い方が分からん。参考例全文をきぼん。 Delphi向けのポインタの詳しい解説サイトってないのかな。
>232 ありがと
Delphi6 Enterprise 60日トライアル版を入手できるWebサイトはありませんか?
235 :
デフォルトの名無しさん :01/11/11 11:00
自分で作ったプログラムから、 他のアプリ(たとえば、かちゅ~しゃ)を終了させるのってどうしたらいいの?
WM_CLOSE
>>235 Windows終了時にかちゅーしゃ終了させるアプリ作ってる?
需要あるから公開キボンヌ。
kill@cygwin
んーぐらい自分で作れドアホウ
>>236 |うぇーん、どうしたらいいかわからないモナー
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д⊂ヽ
⊂ ノ
人 Y
し (_)
Googleで調べたら、
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
ってすると、自分自身を終了できるけど、
Self.Handleのとこの変え方(?)がわかんない・・・。
こういうのの使い方ってどうやって調べるの?
>>237 2ch依存しすぎてるんで、
一定時間したら強制終了させられたらいいかな、と。
>>238 cygwin(?)だと、一定時間後とかってできないですよね?
>>239 できたら代わりに作ってください。お願いします。
241 :
デフォルトの名無しさん :01/11/11 14:06
>>240 EnumProcessとかFindWindowとか
できましたー。 FindWindowを使って、 FindWindow(nil,'かちゅ~しゃ'); ってしたらできました。 (こんな方法で良いのか、わからないけど・・・) あとはタイマーつけて頑張ります。 この度はありがとうございました。
「かちゅ~しゃ」フォルダも引っかかるかも
,--、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ■■-っ < んなこたーない ´∀`/ \_____ __/|Y/\. Ё|__ | / | | У.. |
>>242 むしろ、
FindWindow('TKatjushaMainForm', nil);
のほうがいいかも…
皆様のおかげで無事完成いたしました。 かちゅ~しゃ起動・終了の代わりに、 このソフトで起動・終了をさせなくちゃいけなかったり、 色々と使いづらいところもありますが、満足なできになりました。 ありがとうございました。
∧,,∧ / ̄
\,,,,ミ,,゚Д゚彡 < sageでゴメンなさい。
⊂,,,,,,,,,つつ. \_
かちゅのパスが取得できていないみたいですので
http://homepage1.nifty.com/beny/tips/other10.html これみて、かちゅ起動時には
フルパスを自動取得できたらいいなあ。
>>248 NTだとそれじゃフルパスが取得できないんだよねw
∧ ∧ ソデシタカ ミ ゚Д゚彡 ジョウホウ サンクスコ ~ミ,,,,uuミ
>>250 EnumProcesses
EnumProcessModules
GetModuleFileNameExA
を組み合わせて作る。
たしかこれ併用して9x/NTどちらでも
プロセスをフルパスで列挙可能な非VCLがあったんだが…
コンポのソースに書いてあったURLに飛ぼうとしたら404、
MSDNの検索でも結果に飛ぼうとしたら、んなページねぇぞゴルァ言われた…
具体的なURLは出せないスマソ。
>>251 BorlandのQ&Aで見た記憶がある。
C++用だったかも。
254 :
デフォルトの名無しさん :01/11/22 15:06
初心者質問なのですが、よろしくお願いします。 フォームを表示させる場合に、自動的に画面の中央に 表示させたいのですが、コーディングしないとダメなのでしょうか?
>>255 Form の Position プロパティのヘルプを読め!
>>256 Positionプロパティだったんですね、了解です。
ListViewコントロールをレポート形式で表示させているのですが、 データを追加するにはどうすればよいのでしょうか? ヘルプにはAddItemにリンクが張られてなかったのですが・・・
259 :
デフォルトの名無しさん :01/11/23 22:05
260 :
デフォルトの名無しさん :01/11/23 22:22
>>258 質問者がどこで引っかかっているのかがわからないが...
ListView1.AddItem(Item: String; AObject: TObject);
または
with ListView1.Items.Add do
begin
Caption := 'XX';
end;
こんな書き方は? Items.AddItem は第一引数の扱いが難しいから
あまり勧めない。
素直にこうすれば? Item: TListItem; Item := ListView1.Items.Add; Item.プロパティ := 値;
262 :
デフォルトの名無しさん :01/11/24 04:57
263 :
デフォルトの名無しさん :01/11/24 05:45
最近Delphi6Parsonalをダウンロードしました。 そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、 読込方法しかわからず、書き込み方法がわかりません。 DelphiMLとか、WebでWin32APIとか検索したんですが、どうにも見つかりません。 知っている方、教えていただけませんか?
>そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、 ∧,,∧ / (,,,,,,,ミ,,゚Д゚彡 < 実は、かなり調べたけどフサにはわからなかったんだな。 ⊂,,,,,,,,,つつ. \ もしかしてBATファイルで設定できないでしょうか? そしたら、テキストファイルとしてBATを作成して実行して削除すれば いいのかも....
拾得 #define ENV_MAX 256 //特に根拠のない数字 char EnvOfTmp[ ENV_MAX ]; GetEnvironmentValiable( "TMP" , EnvOfTmp, ENV_MAX ); 設定 SetEnvironmentValiable( "TMP", "C:\Windows\Temp" ); ∧,∧ ,:: / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡っ━'~ | 改めて調べたらいきなりわかった。 ミ∪ ~,ノ < BCBコードは訳しておくれ。 ミ '' ミ \____________ し'~し' 今は亡き、BCBサイト[ARAHIQS]のTipsですす。 試してないので、動作確認よろしう。
>>260 サンプルソースで理解できました。
ありがとうございます。
>>265 ありがとうございます!
早速試してみたんですが、未定義の識別子:'SetEnvironmentValiable'
と言われてしまいました。
現在GetEnvironmentValiableの方は動いております。
何か、Usesに加えたりすれば解決するのでしょうか?
268 :
名無しヘタぐらま ◆B18Bks.Y :01/11/24 20:04
>>258 文字列リストのObjectsプロパティのような
関連するデータへの参照ということでしたら
>>261 さんの方法でもできますです.
レポート形式ということなので蛇足ながら
2つ目以降の列の設定のコードの例もあげるです.
procedure TForm1.Button1Click(Sender: TObject);
var
NewItem: TListItem;
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := 'なんとか';
NewItem.Data := FMyNantokaObject; // データへの参照.
NewItem.SubItems.Add('さぶ1');
NewItem.SubItems.Add('さぶ2');
NewItem.SubItems.Add('さぶ3');
end;
∧⊂ヽ, /
ミ゚Д゚,ミ,ノ< ハニャーン
ミ⊃ ,ミ \
ミ, ,,ミ
>>267 、あら、見つからないですね。ガセかしら。
⊂,,,ノ
∪
Windows.pasにはこんな風にかかれてるけど。
function SetEnvironmentVariable(lpName, lpValue: PChar): BOOL; stdcall;
>>265 ValiableじゃなくてVariable。lとr間違ってる
>>270 間違っていました(汗
修正したら動くようになりました!
フサギコさん、270さんありがとうございました。
272 :
デフォルトの名無しさん :01/11/30 14:03
初めて書き込みます。 現在テキストエディタを製作中なのですが、 作業中にTabを押してもメモ帳のようにカーソルが移動しません。 これはやはりOnKeyPressでそれ相応の処理をさせないと いけないのでしょうか?(空白を入れる、など) 一通りTipsを探し回ってみたのですが、それに近い答えが見つからなかったもので…。 お願い致します。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,ミ,,゚Д゚彡 < WantTabs UU""" U U \_______________
フサギコさん有難うございます。解決致しました。 まさかプロパティだったとは…。 もう少し勉強してからお邪魔致します。 厨な質問申し訳ございませんでした。
275 :
Delフサギコ :01/12/01 04:40
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,ミ,,゚Д゚彡 < そんな恐縮せんでも、 UU""" U U \_______________ ガツガツ質問して、盛り上げてくれたらいいのでは? MLとか、広場とかでやられるより ここで質問したほうがよくない?
>>275 それは>1だからいえることで、イパーソジソには禁句と思われw
277 :
HSP厨房 :01/12/01 08:12
Delphiを解説している、本はない?
278 :
デフォルトの名無しさん :01/12/01 08:52
Delphi6パーソナルでフォームを透明にするコンポーネントってありませんか?
>>278 おもいっきし TransparentColor とか AlphaBlend とかいうプロパティがあると思うけど
280 :
デフォルトの名無しさん :01/12/01 17:08
272です。タブキーの件ではお世話になりました。
引き続きテキストエディタに関しての質問です。
読み取り専用ファイルを開いて[上書き保存]の処理をさせた時に、
「読み取り専用なので保存出来ません」と言った内容の警告を出したいと思っております。
とりあえず自分が考えたのは、
1)読み込んだファイルの属性を変数Ftype(仮)に格納
2)ダイアログを使用しない[上書き保存]の処理の際にFtypeの値を参照し、
それぞれの処理に分岐させる
と言う感じの処理です。
OpenDialog等でファイルを開いた時に対象ファイルの属性を取得したいのですが、
取得する場合はどうすればいいのでしょうか?
>>276 さん、フサギコさん
ありがとうございます。まだDelphiを始めて間もないですが、
自分なりに努力してやって行こうと思っております。
ご迷惑をお掛けするかも知れませんが宜しくお願いします。
>>280 ExtractFilePathでファイルがあるフォルダを取得して
FindFirst、FindNextをループさせて頑張る。
>>280 他にもあるかもしれないけど FileGetAttr
人に聞くのも一つの解決法かもしれないけど、ヘルプを引く癖をつけた方がいいよ。
このFileGetAttrという関数を覚えていたのではなく、ヘルプを開いて、「VCLリファレンス」
「ルーチン一覧(カテゴリ別)」、「ファイル管理ルーチン」と辿って見つけた。約1分。
>>280 を書いて、俺がたまたま読んで、このレスを書くまで約30分。この差は大きい。
Delphiのヘルプって使いづらいとか言われてるから、慣れるまで時間がかかるかも
しれないけどね。俺は他の言語をほとんど使ったことがないのでよくわからないけど。
>>281 FindNext って、あんたワイルドカードを含んでいるわけじゃないんだから、
ファイル名が確定している状態で FindFirst に渡せばそのファイルの属性が取れる。
>>280 あと、ReadOnly のファイルに上書きしたい。という欲求が出てきてもおかしくないから
「開いたときの属性」ではなく「保存時の属性」で判断したほうが自然。
実際に書き込もうとしてみてエラーが出てから 原因を表示しても良し。
>>281-285 の皆様、ご教授ありがとうございます。
282さんの解説して下さったFileGetAttrで処理する事に致しました。
対応としてはメモ帳と同じように、読み取り専用のファイルの場合は
[名前を付けて保存]の処理に移動させるようにしたいと思います。
>>282 さん
ご注意頂き申し訳ございませんでした。
これからはヘルプ、Tips等を参照してから質問するかどうかを判断したいと思います。
今回のように基本的なことはすべてヘルプで解決出来そうなので…。
お邪魔致しました。
>>286 「質問うぜー」とかって意味じゃないよ。
調べる手段を複数持っていた方が解決が早くなるときもあるから
そういうことを勉強するのも大切って話。
インテリマウスで何個スクロールするか、一画面スクロールするか、 みたいな設定を自作のコンポのスクロールに反映させたいのですが。 現在は、WM_WHEELlを受信したときWM_VSCROLLに置き換えて1単位ずつ雨後貸しています。
雨後貸しって何?
291 :
デフォルトの名無しさん :01/12/02 05:39
>>279 遅くなってスミマセン。ありがとうございます。
しかしそれはwin98じゃできないみたいです。
雨後貸=動かし こんな2ch用語あったか?
Delphiって、どういう意味ですか?
297 :
デフォルトの名無しさん :01/12/02 06:05
>>295 わかりました。どうも、ありがとうございました。
298 :
デフォルトの名無しさん :01/12/02 06:31
どるふぃん。
299 :
デフォルトの名無しさん :01/12/02 07:16
M$Wordのマスコットってイルカじゃなかったですか?
300get
301 :
デフォルトの名無しさん :01/12/02 08:36
Delphiは古代ギリシャの町の名前。 ボーランドはギリシャが好きらしく、 Midas (手に触れるものすべてを黄金に変える力を 与えられた王)などのソフトがある。
そして Delphi で Oracle(神託) を受ける
comp.lang.delphiってないの?
305 :
デフォルトの名無しさん :01/12/03 10:39
アイコン選択ダイアログボックスってどうやって実装するの? アプリによってUIがまちまちなんで全部自前で作らないと駄目なのかな
>>305 SHChangeIconDialog を使う。
307 :
デフォルトの名無しさん :01/12/03 19:49
Delphi6Parsonalをインストールした。 でDEMOSにあるサンプルを見たが、どれが何だかわからん、ヘルプに説明無いし。 どっか説明してるとこあったら教えてくださいませ。
ツールボタン用のbmp画像がたくさんあるサイト知りませんか? 絵心がないもので...。
>308 別のDelスレにレスがあるよ
XPのカコイイボタンやタブコンはどうすれば使えるんですか?
311 :
デフォルトの名無しさん :01/12/05 14:50
312 :
デフォルトの名無しさん :01/12/05 16:38
別のソフトの最大化を無効にしたいのですが、無理でしょうか? SetWindowLongで無効にするだけだと、Userの操作での最大化は防げても プログラム自体がShowWindow辺りで最大化するのは防げませんでした。 何かヒントなどありましたら教えてください。お願いします。
CBTProcフック プロシージャは、 次のような場合にシステムが呼び出す、 アプリケーション定義またはライブラリ定義のコールバック関数です。 ・ ウィンドウがアクティブにされたり、 作成されたり、 破棄されたり、 アイコン化されたり、 最大化されたり、 移動されたり、 サイズ変更されたりする前 ・ システム コマンドが完了する前 ・ システム メッセージ キューからマウス イベントやキーボード イベントが削除される前 ・ キーボード フォーカスが設定される前 ・ システム メッセージ キューを同期させる前 フック プロシージャが返す値により、 Windowsがこれらの操作のいずれかを許可するかまたは許可しないかが決まります。コンピュータ ベースのトレーニング (CBT) アプリケーションは、 システムから有用な通知を取得するために、 このフック プロシージャを使います。
>>312 強引な方法だが、KERNEL32.DLL以外で、
対象アプリが起動時に読み込むDLLのラッパを作成。
そのラッパDLL内部で最大化したくないウィンドウをサブクラス化する。
そして最大化のメッセージを拾ったらそれを捨てる。
イメージとしてはWinMXに対するchime、かちゅ~しゃに対する
Katjusha Extenderな感じだね。
これでどうだろう?外部からあれこれいじるのはあまりスマートに
実装できないし…(少なくとも漏れはスマートに実装する方法は知らない)
こうやって内部に侵入した方が(・∀・)イイ!と思われ。
>>313 システムフックって開発/デバック時、
Windowsや他のアプリにDLL掴まれて再構築とか
出来なかったりして面倒だし、最悪システム全体に
悪影響及ぼすから、あまりスマートとは思えないスマソ。
312くらいのことだったら始めはdllなしで組んで、グローバルじゃなくて スレッドに掛けるようにすればという所感。
色々とありがとうございます。 サブクラス化かフックということになるのですね。 詳しく調べて実験してみようと思います。
Magic of Delphi どこ逝ったの
320 :
デフォルトの名無しさん :01/12/07 10:48
すいません。 Delphi4が1000円で売っていたのですが 今、持っているDelphi6Personalをそのまま使用したほうがいいでしょうか? それとも買いですか?
Delphi4 の何なのかわからないと答えようがない Pro以上なら買いだ
>>320 Client/ServerかProfessionalなら買い。Standardなら不要。
VCLソースが入っているかどうか判断の基準。
実際に使うのはDel6PersonalでDel4のVCLソースを参考にするという
使い方がいいと思う。
しかしユーザー登録してバージョンアップできるから \1000ならやっぱり買いだ
>>320 正規ライセンスがついていれば買い。
もちバージョンアップが前提。
325 :
デフォルトの名無しさん :01/12/09 13:07
>309 どのスレかだけでも教えて
>326 見つけました。ありがとうございます。
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,,,,ミ,,゚Д゚彡 < 他にアイコン画像のいいサイトがあったら報告してね。
UU"""" U U \_______________
Delphiお役立ちサイト(コピペ)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
329 :
( = ゚ ω゚ ) :01/12/09 16:09
助けてください 2つ目のフォームを追加し、その名前を aa.pasなどとして保存し、 1つ目のフォームの uses に aa.pasを追加して 実行(コンパイル)すると、 usesの中にある Forms に対して Forms.pasはどこにあるの?指定して というエラーメッセージが出てしまう。 コンパイルされない・・・・ フォーム一つだけならこんなことならずにコンパイルできるのに フォームが1つのプログラムしか作れなくて困ってます。 助けてぇ
∩ ∩ ミ ゙''゙~ ミ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < そんな風にならないけど… U U \________ 関係ないと思うけど、D6?Personal? Updateはあてましたか?<<大切なのでアテテください
331 :
( = ゚ ω゚ ) :01/12/09 16:22
D6personalだよぉぉ
332 :
( = ゚ ω゚ ) :01/12/09 16:26
2つのフォームのプログラムなら Form1(Unit1.pas) Form2(Unit2.pas) をつくって、 メインフォームであるForm1のusesに Unit2を追加するだけで良いの? それから両フォームで使用する変数って 値が変化せずにちゃんと引き渡されるのかな なんか変数が初期化されちゃうんだけど(0になる)
∩| ミ ゙''゙゙゙つ ミ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < で、とりあえずウプデト1は当てた? U U \当ててないなら、大切だから当ててチョよ。 Form1のusesっていうのは interface節ですよね。 今回の問題とは関係ないと思うけど implementationにもusesできますので 区別しておきましょう。 >メインフォームであるForm1のusesに >Unit2を追加するだけで良いの? [ファイル(F)]-[ユニットを使う(U) Alt+F11] するといいんじゃない。 >それから両フォームで使用する変数って >値が変化せずにちゃんと引き渡されるのかな >なんか変数が初期化されちゃうんだけど(0になる) 詳しくは Delphiテクニックマスター集中講義 谷尻かおり(谷尻 豊寿 監修) 技術評論社 \2,718 ISBN4-7741-0305-5 このあたりの本に載ってるんだけど… ここでは教え切れない面も多いので 変数スコープに関して書いている書籍を調べた方がいいです。 両フォームで変数を共通に使うよりも Formのメンバーにアクセスする方がいいんだけどなあ....
334 :
( = ゚ ω゚ ) :01/12/09 16:43
フサギコちゃん、ありがとうございます なんかうまくいかないから、初めからやり直してる。 今のところ問題なくいってるよ Form1,2を別々に作ってから、 後でプロジェクトの追加でForm1にForm2を追加すると おかしくなっちゃうんだ。 でもこれだと、前に作ったformが全て使えない事になってしまうぅぅ。 updateは今DL中です。 Formのメンバーってなんですか?
336 :
( = ゚ ω゚ ) :01/12/09 18:44
変数宣言の仕方が良く判らないのですが private tt: integer; ←(1) public ss: integer; ← (2) end; var rr: integer; ← (3) この(1)で宣言したttは、このフォーム内でのみ使用 (2)のssはどのフォームでも使用可能ということですよね? どのフォームからでも、ssの値を参照したり、 値を代入したりできるのですよね? ここでは var はいらないのですか? (3)のrrはこのフォーム内のみで使用可能らしいのですが 何故privateのところで宣言しないのでしょう? (1)と(3)にはどんな違いがあるのですか?
337 :
( = ゚ ω゚ ) :01/12/09 18:59
ここからソース張ります
>>336 >(1)と(3)にはどんな違いがあるのですか?
(1)はフォーム(=クラス)ローカル
(3)はユニット(=ファイル)ローカル
いまはたまたま一ユニット一フォームなんで違いが目立たないだけ
といっても今の知識じゃわからないだろうから
とりあえず(1)を使うべし
339 :
( = ゚ ω゚ ) :01/12/09 18:59
unit YaMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, YaTask, Menus; type TMainForm = class(TForm) TPNameBox: TEdit; (中略) TaskOrder: TMemo; procedure TaskStartBtnClick(Sender: TObject); procedure O1Click(Sender: TObject); procedure S1Click(Sender: TObject); procedure X1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var MainForm: TMainForm; PresentTP: String; TAD, AAD: array[1..100] of Integer; implementation {$R *.dfm} procedure TMainForm.TaskStartBtnClick(Sender: TObject); begin TAD[1] := 5; AAD[1] := 9 TaskForm.ShowModal end;
340 :
( = ゚ ω゚ ) :01/12/09 19:00
次にサブフォーム(YaTask) unit YaTask; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TTaskForm = class(TForm) (中略) Label1: TLabel; procedure FormCreate(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var TaskForm: TTaskForm; implementation {$R *.dfm} procedure TTaskForm.FormCreate(Sender: TObject); begin label1.Caption := IntToStr(TAD[1]) end;
(1) の上に class ってあるでしょ?それが違い。 とりあえずマニュアル読めや。同じ言葉は同じ意味を持つようにしないとコミュニケーション できないからな。 マニュアル読んで、わからなかったらそこを聞け。
342 :
( = ゚ ω゚ ) :01/12/09 19:04
YaMainのvarで宣言してグローバル変数になってる筈の TAD[1]が、YaTaskの方で 未定義の識別子 TAD って出てしまう。 どーしたらいいの? ベーシックしか使った事無いんだけど Delphiがこんなにややこしいとは思わなかったよ フォームの追加とか本の通りにやってるのに エラーがでまくって全然コンパイルできない 個々のフォームは文法エラーとか解決してるのに 泣けてくるよぉ
>>342 BASIC のことを一度完全に忘れろ。
共通データはフォームとは別のユニットに切り離すのが定石 uses YaData; interface PresentTP: String; TAD, AAD: array[1..100] of Integer; implementation end. ってユニット作ってから両フォームからuses YaDataする
345 :
( = ゚ ω゚ ) :01/12/09 19:12
Form1でXという変数に'5'を代入して Form2でXの値をYに代入するには、 Form1とForm2にどんな文章が必要なのですか? XとYはどこで宣言すれば良いのですか? とりあえずこれだけ知りたいです。
346 :
( = ゚ ω゚ ) :01/12/09 19:13
↑ Form1、Form2じゃなくて Unit1、Unit2かな
347 :
( = ゚ ω゚ ) :01/12/09 19:15
>>344 さん
YaDataで宣言した変数は、
YaTask,YaMainで宣言無しでいきなりしよう出来るのですか?
>>342 誰でも使えるように「許可」する。
ってのと
誰でも使える物を「使用」する。
ってのは本来別の作業。
未定義エラーがでたユニットに,TAD を定義したユニットを
[ファイル | ユニットを使う] で追加。
もし「追加できない」と言われたら,未定義エラーがでたユニットの
'uses' 節を確認し,TAD を「使う」場所より上の uses 節で
TAD を「定義」しているユニットが現れるように修正。
349 :
( = ゚ ω゚ ) :01/12/09 19:21
unit YaData; interface PresentTP: String; TAD, AAD: array[1..100] of Integer; implementation end. これでコンパイルしようとしたら 3行目をさして 宣言が必要な場所に識別し PresentTPがありますってエラーがでたよぉ・・・・
>>349 いい加減にしろ。そのエラーに対して F1 ヘルプを読め。
エラーがでたら思考停止か?ボケ?
「宣言が必要な場所に識別子」があるんだよ。
352 :
( = ゚ ω゚ ) :01/12/09 19:38
>>350 のエディタの作製は読んだけど
2つのユニットで変数をやりとりするって話は出てこないのでは?
>>348 の方法で2つユニットで共通の変数を使用できる様になったけど
こんどはユニットごとでその変数を初期化してしまう・・・
ユニット1で代入した値がユニット2ではゼロになってる。
D6personalですよ。
マニュアルにユニット間での変数共用に付いて解説してるページ、ありましたか?
まあでもnamespaceってのは、BASICERには結構分かりづらいかもね。 これでもみて悩んでちょ↓ unit A; interface type TALPHA = class private fMember1:Integer; public fMember2:Integer; procedure Func; end; var gVar:Integer; implementation var Var2:Integer; procedure Func2; begin //使えるもの:Var2,gVar //使えないもの:fMember1,fMember2,Func,FuncB end; procedure TALPHA.Func; begin //使えるもの:fMember1,fMember2,Var2,gVar,Func2 //使えないもの:FuncB end; end. unit B; interface implementation uses A; var Alpha:TAlpha; procedure FuncB; begin //使えるもの:gVar,Alpha.fMember2,Alpha.Func //使えないもの:Var2,fMember2,Func2 end;
あなたは DelphiML に入って質問するといいよ みんな親切に答えてくれるよ 特に戸田って人が。
>>353 ネームスペース,っていうよりスコープの概念が欠落しているというか。
いいんじゃないの?コンパイル時とリンク時の2段階ある C/C++ で悩むより
1段階ですむ Delphi で可視性を学んだ方が楽だと思うよ。
BasicってVB? VBでも構造体があるでしょ? Formクラスで宣言してるのは構造体の定義みたいなもの だから、実際には変数として定義しないといけない。 var Form1:TForm1; ってあるところが実際の定義だから クラス内でxxx:integer; とか定義したのは クラスの外からは Form1.xxxで参照しなければいけない。 ただ、クラスの場合は定義しただけじゃ実体がまだ出来てないのが構造体と違う所。 構造体じゃない所で varで定義してるのが変数。 interface で定義したら グローバル 他の ファイルから見える implementation で定義したらローカル 他のファイルからは見えない
>>339 PresentTPやらTADやらAADをTMainFormのパブリックメンバにして
TMainForm = class(TForm)
public
PresentTP: String;
TAD, AAD: Array[1..100] of Integer;
end;
unit YaTaskのimplementation部でuses YaMainして
unit YaTaskからは、TMainForm.TAD[0] := 3; とかした方が楽だと思うが?
>>352 フォーム同士でやりとりする場合は
直接公開するよりメソッドにするか プロパティにする方がいいよ
もしかして、「宣言」、「定義」、「識別子」とかいう意味からして理解してない? とりあえずObjectPascal言語ガイド通し読み10回の刑に処す。
360 :
( = ゚ ω゚ ) :01/12/10 00:27
>>360 読んでてもつまらないかも知れないが、基本は大切だ。頑張れよ。
Delモナはどこへ逝きましたか? 「Delフサギコの *やさしい* Delphi質問スレ」になってますな。
>>362 どうでもいいじゃないか。
どうせ匿名掲示板なんだし。
>>354 ∧ ∧
( ´∀`)( 中村ってオッサンも答えてくれるよ。仕事してないのかな? )
365 :
デフォルトの名無しさん :01/12/10 16:26
Delphiのエンタープライズ版とプロフェッショナル版は 具体的に何が違うのでしょう? どっちを買った方がいいですか?
366 :
味噌醤油醸造株式会社 :01/12/10 16:31
367 :
デフォルトの名無しさん :01/12/10 16:37
>>366 ありがとうございます。
参考にさせていただきます。
エンプラ版は個人で買うには高すぎるような.... 大人買いを超えるブルジョ-ア買いが必要  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ∧,,∧ ミ,,゚Д゚彡∬ 〃 つ旦O ~ミ,,,n,,n[ ̄ ̄ ̄.]  ̄ ̄ ̄
369 :
デフォルトの名無しさん :01/12/11 00:54
Delphiでアプリを作ると、どうしてあんなにファイルサイズがでかくなるのでしょうか? Upxとかを使って圧縮するほかに、ファイルサイズを小さくするテクニックってありませんか?
>>370 なるほど、ありがとうございます。
やっぱり、VCLを使うかぎり重くなるのは仕方ないんですね。
直APIか・・・
VCL -> でかい ってのは都市伝説に近いものがある。 そりゃ、API のみ呼び出しでけりがつくプログラムならそっちが小さいが、 ある程度のプログラムになるとみな同じ。
ファイルサイズと重いと混同してる
>>371 WinアプリのExeはどれも数メガ単位。
VBなんかはExeが小さくても超重いし、メモリ不足がすぐ起きる(ナンデ?って感じ)。
Delphiだとフォーム一枚のときはExeが大きく感じるが、
それからフォームをどんどん増やしていってもそれからは余り大きくならない。
らんたいむが思いの?
375 :
デフォルトの名無しさん :01/12/11 15:29
>>374 Delphiはランタイム使わなくてスタティックリンクしたら良いYO!
Delphi&VCLって重いっていうより高速って話なんだけど。
VBのランタイムなら重いしメモリを一杯積んであっても自己メモリ不足エラーを起こす。
>>375 でもランタイム配布面倒だYO!
高速かはわからんが、少なくともVCアプリと同等レベル、
もしくはそれを前後するかと思われ。
だったコード次第でどーにでもなることだし。
で、重いっていうより、コードサイズがでかくなるんだよな>ランタイム
>VBのランタイムなら重いし
そうそう、VCLの比じゃないよな、あのサイズは。
ちょっとしたツール作ってFDに入れたとき、Delphiなら
ランタイムを気にしないで(・∀・)イイ!!から(゚д゚)ウマー
375はランタイムやめて、スタティックリンク使えと書いてるZO!
>>376
Σ(゚д゚lll)ガーン よく見てなかった…鬱氏 逝ってきます…
オマケにレス番間違えた…今すぐ逝こう…
ちゃっちゃとな。
381 :
デフォルトの名無しさん :01/12/11 21:59
Windows2000で動いていたOLEでWORDを動かすソフトが、 XPにしたら動かなくなってしまいました。 呼び出し先が呼び出しを拒否しました、ってどういうことだろう・・・。 この場合、WORDの設定が悪いと考えるべきでしょうか?
>>381 Windows XP 上の Office XP ? それとも Office 2000 ?
Windows 2000 の上で動いていたときの Word と
動かなくなった XP 上の Word と
二つのワードは同じ版?
>>382 WORDはWindows2000で動いていたのと同じ、Office2000シリーズの物を
WindowsXPにインストールしたのです。
Word.Applicationでバージョンも指定していないので、問題ないと思うのですが・・・。
>>383 XP でセキュリティが厳しくなったのかねぇ。
手元の .net server には Office 入れていないので
テストできないから、すぐには答えられないけど。
とりあえず dcomcnfg とかわかるなら、動かしてComponent Service / Computer の
プロパティの Default COM Security をチェックしてみたら?
385 :
デフォルトの名無しさん :01/12/12 00:09
直API でミニサイズのEXEを作るのは ちょっと面倒なので、どなたか TTinyForm クラスを作ってくれませんか?
なんでそこまでexeのサイズにこだわるんだ? サイズが大きくて具体的にどんな問題があるのかいってみ
>385 どこが面倒なの?
>387 アフォ?
>>386 ウィルスのサイズが360KBもあるとダサイじゃん。
>388 アフォですが、何か?
お前のウィルスは、律儀にフォーム表示しながら動作するのか?
オー、ユーザーフレンドリーダネ
世界最初のウィルスコンストラクションキットが Delphi の先祖の TurboPascal せいだった。 ってことを覚えている人がどれだけいるか。
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~′,,,,,,,,,,ミ,,゚Д゚彡 < 元々しらへん UU"""" U U[大阪弁]_______________
>>385 halb○wさんのページに行くといいよ(知ってるか
>>385 直APIでよく作るけど、TForm並みのものを作るのはかなり面倒。
TFormってそれ自体独立してなくて、VCLがいろいろからんで来るから余計。
ていうか、そこまでするならVCL使った方が早いよ。
何とかって言うウィルスはDelphi製で、感染するとファイルサイズが360KBぐらい増えるそうだ。
>>397 それでも今の時代じゃ 360KB 増えても気付かないだろうな・・・
399 :
デフォルトの名無しさん :01/12/13 00:26
普通にクリックできて、ドラッグもできて、 表示する画像も指定できて、フラットスタイルにできる スピードぼたんなのって何かないですか?
TSpeedbutton
401 :
デフォルトの名無しさん :01/12/13 00:52
>>400 TSpeedbuttonをドラッグさすのって、
MouseMovwのとこにざくざく自分でコードかかんかったら
駄目なんかな
漏れにはボタンをドラッグするという意味が分からないのだが・・・
403 :
デフォルトの名無しさん :01/12/13 00:58
ドラッグするのなら、クリックは出来ないと思う。
>>402 あれじゃないの?MS-Officeのツールバーみたいに
カスタマイズできるやつ。
MS-Officeのツール場は知らないけれど、多分それっ。
クールバーを一つずつとか
>406 ナイスアイディアで賞。
408 :
デフォルトの名無しさん :01/12/13 16:21
スレ違いを覚悟で質問。 Delphi6付属の InstallShield Express Borland Limited Edition で、 ひとつの*.msiだけ配布すればいいようなビルドはできますか? どーやっても、*.msiと*.cabのふたつができてしまいます。
理屈の上では RefCount が増減しなければ問題ない。 けど、文字列型の管理は目に見えないところで行われるから、気をつけたほうがいいよ。
411 :
デフォルトの名無しさん :01/12/13 23:17
TFileOpenWithが標準アクションの追加ダイアログに表示されません。 何か条件があるんでしょうか?
412 :
デフォルトの名無しさん :01/12/14 06:55
TThreadの質問なんですが、Synchronizeメソッドがどうなっているのか 知ろうと思い、ソースを眺めてみましたが、スレッドを作るときに ダミーっぽいウィンドウを作りそのウィンドウにメッセージを送って Synchronize引数の関数を実行しているようにしか見えないのですが、 こんなんでメインスレッドとの同期が取れているのですか?
>>412 メッセージは電話のように割り込みで送られるわけではなく、
メールをチェックするように、来てるかなと問い合わせますよね?
414 :
デフォルトの名無しさん :01/12/15 23:28
プログラムの実行中に動的に作成したフォームを、プログラムの途中で 解放してやっても、タスクマネージャで見ると使用メモリ量が減らないのは 何故ですか? ちゃんと解放されていないのでしょうか? 普通に Free メソッドを呼び出しているのですが・・・
メモリマネージャ
バスケ部のマネージャー
秘密戦隊ゴレンジャー
ハイチュウ食べたいんじゃー
Delphi に限らず、ほとんどの言語処理系は実行時ライブラリ側で メモリ管理を行います。そのため、メモリブロックを開放したからといって その時点ですぐに OS にメモリが返却されるとは限りません。
タイガー炊飯ジャー
寄せて上げるブラジャー
>>415-421 ありがとうございます・・・
では解放したメモリをOSに返却するにはどうすればようのでしょうか?
常駐するタイプのアプリを作っていて、できるだけメモリを節約したいのですが。
NewInstanceをオーバーライドするとか? フォーム自身が使うメモリは大した事ないと思うのですが。 InstanceSizeで見れるのか?
メモリマネージャをWin32API直叩きするようにすげ替える。 詳細はヘルプにある。
426 :
デフォルトの名無しさん :01/12/16 00:45
返却には返却カードをお持ちください。 またのご利用をお待ちしております。
427 :
デフォルトの名無しさん :01/12/16 00:50
428 :
デフォルトの名無しさん :01/12/16 11:14
Del6Proの開発者ガイド 30-3 に XML コンポーネントの話が載っているけど、 そんなのどこにも見当たらない。Enterprise 版のみの機能?
430 :
デフォルトの名無しさん :01/12/17 16:57
全てのキーボード入力(Alt+Ctrl+Del含む)をロックするにはどのように したらよいのでしょうか? 初心者質問ですいません。
>>428 Delphiヘルプ - Delphi6の新機能 - XMLのサポートを見ると
タイトルが
「XMLのサポート(Enterprise 版)」
となっているのでそうかも
開発者ガイド 30-3の記述どおり、Ent版の[Internet]ページにはある
432 :
デフォルトの名無しさん :01/12/17 17:53
CLXアプリケーションで新規作成したとき、 var p:Tpoint; rgbcolor:Tcolor; begin if button =mbleft then begin GetCursorPos(p); p := image1.ScreenToClient(p); rgbcolor:=image1.Canvas.pixels[p.X,p.Y]; ・・・ のように イメージ上のクリックした点の色データを収得したいのですが、 pixelsがcanvasにみつからないんです。 なにか、ほかの方法ってありますか?
Del6のパーソナルだとデータベースに接続できないので、 Professional版を買いました。 Professional版でもSQL-ServerやOracleに接続できるのでしょうか? それとも、Delphiユーザーでデータベースを使われる方は、 Enterprise版を買われているのでしょうか・・・(泣 初心者質問ですいません。
434 :
Delモナー :01/12/17 19:10
435 :
デフォルトの名無しさん :01/12/17 21:12
StatusBarの1つのパネルをクリックすると、 それに対した処理ってどういう風にやったらいいですか? OnClickはStatusbarにしかなく、 StatusBarのどこをクリックしても同じになっちゃいます。 Moon Browser や Netscapeの、アイコンクリックで オンライン・オフラインの切り替えができるようなものです。
436 :
デフォルトの名無しさん :01/12/17 21:18
>>433 personalでもADOを使えばできる。
437 :
デフォルトの名無しさん :01/12/17 21:36
>>385 OpenGLかdirectを使えばformより表現力があってfilesizeは50kbyeくらい
サンプル豊富
あとKol+MCKというのを使うとビジュアルで開発できてファイルサイズは50kbyteで
ADOにも対応
あと基本だけどdelphi3を使えば基本コードは180kbyte、まだ現役でd5やd6と合わせて使う人は多い
D5とかd6で関数を作ってd3でアプリを作るのが手っ取り早いのかも
もっともWin32APIベースでもテンプレート作っちゃえばあとは楽じゃない?
delphiはBCBやVCよりもAPIベースのアプリ書きやすいと思うが
direct → DirectX
>>434 >>436 回答ありがとうございます、少しホッとしました。
質問ばかりで申し訳ないのですが、
SQL LINKは、教えて頂いた接続方法と何が違うのですか?
どちらを使う方が良いのでしょうか?
>>435 OnMouseDownかOnMouseUpで位置からパネルを算出、
それにより該当処理、でどうよ?
>>440 ありがと
なんだか大変そうだけど頑張ってみる
>>441 uses
CommCtrl;
function WhichPanels(SB:TStatusbar;x,y:integer):integer;
var
i:integer;
r:TRect;
pt: TPoint;
begin
result := -1;
pt := Point(x,y);
for i := 0 to SB.Panels.Count-1 do begin
SendMessage(SB.Handle,SB_GETRECT,i,LPARAM(@r));
if PtInRect(r,pt) then result := i;
end;
end;
procedure TForm1.StatusBar1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ret:integer;
begin
ret := WhichPanels(Statusbar1,X,Y);
if ret <> -1 then
Label1.Caption := 'You Clicked Panels of '+IntToStr(ret);
end;
>>442 こういうのがさらりと出てくるのカコ(・∀・)イイ!!
>>443 そらもう Borland 直営サポートサイトですから。
>>442 ありがとーーーーすごいです。
神!!!って感じでうs
無事に実装?することができました。
自分でやってたら、無理とあ諦めてたかも・・・
446 :
デフォルトの名無しさん :01/12/19 00:40
他のアプリケーションを操作したいんですけど、どうすればいんでしょうか?
>>446 マウスイベントとキーボードイベントを使え。
お願いです。 Command パターンを使った例を教えてください Object Pascal で。
>>448 例なら他の言語のでもいいんじゃない?
Java 読めないとか?
451 :
デフォルトの名無しさん :01/12/20 04:19
>>449 そーです
Undo とか実装する時に使うんだったかな
TQUERYコンポーネントを使ってデータベースの内容を DBGridに表示するのですが、ユーザーからの条件入力によって、 絞り込みを行うにはどうすればよいのでしょうか?
>>453 試してみます。
>>454 フィルタ・・・ すいません、まだ初心者なので、よくわからないのです。
SQLを何度も書き換えなくても、Delphiらしい便利な機能があるんですね。
フィルタってどんな感じで使う物なのですか?
456 :
デフォルトの名無しさん :01/12/20 19:49
文字列変数に ' を代入するには、どうすればよいのでしょうか?
>>456 'を2つ並べる。つか、色々試してみると聞くより早く解決すると思われ。
>>457 ありがとうございます。
そうですね、色々試してみます。 m(__)m ぺこり
>>455 Query.SQL.Append('SELECT * FROM HOGE');
として
Query.Filter := 'HOGE1=1';
とかSQLのWHERE以降を入れて
Query.Filtered := true;
つーかHelp読め。
Magic of Delphiはどこに逝ったの?
461 :
デフォルトの名無しさん :01/12/21 00:55
>>460 あ、探してる人がいた(^^;。
二つ検索でひっかかるけど、どっちも無いんだよねー。
移転or新装開店中なんかしらん?
462 :
デフォルトの名無しさん :01/12/21 08:09
「かしらん」て何語だよ!!
かしらん 〔連語〕(「かしらぬ」の変化した語) 1 文末に付いて、終助詞的に用い、疑いや問いかけの気持を表わす。…だろうか。かしら。*滑・浮世床‐初「あれでもすむ事かしらん」 Kokugo Dai Jiten Dictionary. Shinsou-ban (Revised edition) ゥ Shogakukan 1988/国語大辞典(新装版)ゥ小学館 1988
|| ∧||∧ ( / ⌒ヽ | | 462| ∪ / ノ | || ∪∪ オタしか使ってるのを見てなかったので オタ用語だと思ってました。 ご迷惑おかけしました。
かしらん 〔「か知らぬ」の転。近世江戸語以降の語〕 (副助)意味・用法は「かしら」に同じ。 「あの人はどこ―へ行ってしまいました」「毎日商(あきねえ)から帰りにはの、何―竹の皮へ買つて来ての/滑稽本・浮世風呂 2」 (終助)意味・用法は「かしら」に同じ。 「どこへ行ったの―」「バスにしよう―」「あれでもすむこと―/滑稽本・浮世床(初)」 〔江戸語では男女ともに話し言葉として用いたが、現代語では主として女性に用いられる。 また、現代語では「かしら」の形が一般に用いられる〕→かしら(副助・終助)
466 :
デフォルトの名無しさん :01/12/21 10:03
>移転or新装開店中なんかしらん? 「かしらん」じゃなくて、「新装開店中なんか、しらん?」じゃないの?
|| ∧||∧ ( / ⌒ヽ | | 462| ∪ / ノ | || ∪∪ お願いです。 もうそっとしておいてください。
>462 逝くこたぁないだろ。生きろ。 一生十字架背負ってな。
469 :
デフォルトの名無しさん :01/12/21 11:00
Pixels[x,y]の読み書きがやたら遅いんだけど どうすりゃいい?
>469 ビットマップに読み込んで 行毎に処理
Magic of Delphi のめぼしい記事は全部回収したので オレとしては消えてもらってもィィ!!
472 :
デフォルトの名無しさん :01/12/21 11:24
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delphi
473 :
デフォルトの名無しさん :01/12/21 11:26
VBからDelphiに乗り換えようとして勉強している Del初心者です。よろしくお願いします。 日付型変数で、1日後、1ヶ月後、1年後を取得するには どうすればよいのでしょうか? 年が変わったり、うるう年だったりとか面倒なので、 VBのDateAddやDateSerialみたいな関数を探してみたのですが、 見つけきれなくて、ここに書き込んでみました。 よろしくおねがいします。
DBGridにデータを表示する際に、 日付とか書式を設定して表示するにはどうすればいいのでしょうか
「なのかしらん?」の「なんかしらん」です。 昔の本にはよく、この表現が出ますな。 で、どーなったんだろう?<Magic of Delphi
478 :
delhpi :01/12/21 23:18
479 :
デフォルトの名無しさん :01/12/21 23:50
救いは .com .uk .ru とかも出てくる所ですね. "exploler" とかだと .jp しか出てこない 同じ日本人として恥ずかしい……
D++って何ですか?
良く考えてみたら普通に足せばいいですね。 明日の日付=Date+1; でした。あとIncMonthっていう関数もあるみたいです。
484 :
デフォルトの名無しさん :01/12/22 00:18
485 :
Magic of Delphi :01/12/22 00:24
486 :
デフォルトの名無しさん :01/12/22 00:41
>>485 トップページしか見られない。ダメダメだよ?ん。
487 :
デフォルトの名無しさん :01/12/22 02:08
D++って何ですか? D++って何ですか? D++って何ですか? D++って何ですか? D++って何ですか?
生きているって何ですか? 人を愛すって何ですか? 僕はなんのために、毎日飯食って糞しますか?
>D++って何ですか? _________ ∧,,∧ / ミ,,゚Д゚彡< 日本初のDelphi雑誌じゃなかった? ミつ つ \ 編集者がバックレてしまって廃刊になったとか... ~ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ U U MLのログで罵り合いがあったような ヨクシラン シリタクモナイ
>>475 >>483 で答え出てましたが
一応、つことで。
 ̄ ̄∨ ̄ ̄ ̄
∧,,∧
ミ,,゚Д゚彡
ミ つ[ ソウス ]).
~ミ ,, ミ
∪∪ 1年後は12ヵ月後にしてしまおう
procedure TForm1.Button5Click(Sender: TObject);
var
Ago1Month: TDate;
begin
//現在日を表示
DateLabel1.Caption := DateToStr(Date);
//5日前を表示
DateLabel2.Caption := DateToStr(Date - 5);
//1ヶ月前を表示
Ago1Month := IncMonth(Date, -1);
DateLabel3.Caption := DateToStr(Ago1Month);
end;
∧,,∧ /
>>482 ミ,,゚Д゚彡 < Decode/EncodeDateだと
U U \実在しない日付の場合、例外が出てやばいよ。
~ミ ミ
∪∪ 12月32日とかね。
関係ないが、身の回りでは [ ] は強めの発音 (1) 「[デ]ルファイ」 デを強く発音し、ル、ファイと弱くなる。 (2) 「デ[ルファイ]」 デを弱めに発音し、ルファイ はデよりも少し強めに。 (3) 「[デ]ルフィー」 の3通りの読み方に分かれた。 俺も含め最も多いのは (1) だった。 辞書で見たら デルポイ とかでてたけどどうよ。
そういえば デルファー って呼んでたやつもいたな。
でるふぁい - Delphi でるふぉい - Delphi でるふぃ - 出るふぃ
でるふぁいは打たれる
関係ないレスかもしれんが、
>>495 は文章を入力してるときに
自分で「おもしろい! これはワラタをGETできる!」と思ってるの?
デルファ[イ]
>>496 某ページにあるネタなんだから一々けちつけないの…
499 :
ななしヘタぐらま ◆B18Bks.Y :01/12/22 17:17
>>491 Decode/EncodeDateで例外を出しちゃうバグは私も経験アリです.
おかげでIncMonth関数を覚えました.
デ[ル]ファイ
ネ タ ニ マ ジ レ ス カ コ ワ ル イ
でるふぉ[え]ーーーで正解
503 :
delhpi :01/12/22 23:05
delhpiは何て読もうか? デルフピ? カワイイ。
inc(D)
505 :
名無し募集中。。。 :01/12/23 02:08
よく「DLLのいらないアーカイバ」ってあるけど、 アレって、どーゆー仕組みなんだっけ? 昔、そんなスレあったけど、結局どーだったのか忘れた(結論見てないだけかも?)。 どーやってるの?
>>507 自前で圧縮・解凍の処理を書いてるに決まってんだろ
>>508 ありがとう。やっぱりそうなんだ!すごいなぁ。
面倒なだけでさして凄くもないと思うが。 仕様が分かってるのだし。
>>510 いやぁ、アッシからするとスゴイでやんス。
まだヒヨッコなんで。デルファイの。
>>507 じゃあDLLはどうやって作ってんだ?ということを考えれば一目瞭然。
でも面倒なだけっつっても対応形式増えると馬鹿にならんなー。
だいたいCなので、CコンパイラでObjファイルを作ってリンクするのが簡単。
514 :
デルフピ :01/12/25 23:53
ほうほう。難しくてよく分からんけど(^^;。
ん、もしかして、作る側でなくて使う側の人かな?
いや、作る方ですが…。まだまだ始めたばかりダスんで。
DLLをリソースに入れて、アドレス検索して呼び出してるなんて事はないのかな
>>482 >>491 遅い返事ですいません。
親切にありがとうございました。
皆さんの様に、Delphiをバッチリ使えるように、
早く若葉マークを取りたいです・・・(泣
Delphiユーザーの方って、親切な人が多いですね。 また、初心者質問をするかもしれませんけど、 宜しくお願いします。 m(__)m ペコリ
>>517 リソース内のWinAPI呼び出しがうまく行かないと思うYO!
>>517 グローバル変数が使えないので、メモリマネージャの初期化に失敗する。
スタックだけでやるしかなYO!
なるほど、エクスポートだけじゃなくてインポートも自分が解決しなくちゃいけないのか・・・ という事は ・・・結局逆アセしてリンクした方がマシか
526 :
デフォルトの名無しさん :01/12/29 18:00
delphi6のファイルサイズにむかついている人は何で少ないのですか? D3→D5はかろうじてがまんしたしWinAPI使えばどうにかなったけれど フォームだけで 180k(D3)→280k(D5)→360k(D6p1) D6だとフォームすら使っていないOpenGLアプリが 700kbyte→1.1Mbyteです。 なんかうまいてないですか??
Del6をCPU1GHz, HDD100GB, MEM512MBのPCで使って まったくむかつきませんが何か?
>>526 とりあえず
1)UPX で圧縮する うまくゆけば1/3くらいになるぞ
これはホントにお薦め
2)D6は編集だけに使って配布する時はD3で
まあ実際にはD3は厳しいだろうからD4で
>>526 メインアプリはAPIベースで作ってるのでむかつきません。
ちょっとまって、フォームすら使っていないOpenGLアプリがなんでそんなにデカイの? ま、フォーム使って無くても、コンポーネント使っただけでアウトなんだろうけど。
気になってOpenGLの簡単なの作ってみたら13KByteにしかならんかったZO!!
>527 Del6をPentiumPro200MHz、HDD 1.2+1.0+3.2+20GB、MEM128MBのPC-9821で使って まったくむかつきませんが何か?
533 :
デフォルトの名無しさん :01/12/30 00:14
クラスのインスタンスへのポインタってどうやって取得すればいいのかな。 strList := TStringList.Create; ShowMessage('$' + IntToHex(Integer(@sl))); とかじゃ駄目だよねぇ。。
ShowMessage('$' + IntToHex(Integer(@strList))); 2行め、でした。
>>528 UPX 等のバイナリ圧縮は糞。
はっきりいって無駄な抵抗。
1Mbps以上出るようになってバイナリサイズは気にならなくなったw どうせフロッピーなんざ使わんし。
>>535 先生!UPXの何が糞かさっぱりわかりません!
圧縮するメリットはあると思うよん。 でも、圧縮されたファイルしか配布してないソフトは却下だな。
540 :
デフォルトの名無しさん :01/12/30 01:41
厳しいねぇ<却下 どーもUPXって、怪しくて使ってないけど。 日本の「同じ様な仕組みのツール」も開発されないもんかね。 フリーで。 って、前もどこかで同じこと書いたな。
UPXかー。
APIベースで組んでて小さいのをさらに小さくする(見た目のインパクト)のに使ってるよ。
大き目のアプリ組むでも100KByteくらいに抑えられるのがいいね。
>>539 いやだったら、upxで解凍できるだろ?
>>540 そういやDOS時代はあったね。
542 :
デフォルトの名無しさん :01/12/30 10:10
>>528 D3復活は考えた。フリーコンポーネントをベースにする場合はD3がベストかも
痛いのはDword問題のみだがこれは結構タイプライブラリーとかにも影響する。
D5learningがあるのでこれがメインになりそう...
>>530 >>531 そりゃWindowsだけ宣言してやればいいけれどsysutilesとclassesを使う場合
必要なものだけ取り込まないとだめみたいだ。
バイナリーサイズ気にならないというけれど
バージョンアップやdll分散考えた場合200kbyteと400kbyteの差は大きいのでは?
あと別スレにあったkolというのを使ってみたがD6のばあいこれはよさそう
どうしてもコンポーネントにこだわるならばdll化してdfmファイルを圧縮して
リソースに入れて読み込ませるのも一案かも...
あと調べたらADO関連はボーランド純正とフリーのものとデータ更新時に最悪10倍くらい
速度が違ってくるし
普通の計算はもちろんのこと
アセンブラでSSEで組んだ場合D5よりもD6のほうが乗算が遅めになるみたいだし
どうもソース編集をD6でやってD5でコンパイルというのが道筋みたい
ちなみにDCC32だけ使うでライブラリーが全部自前のときって
出来上がりのアプリを業務用や営利で使っても法的に問題ない気がする。
汎用性のためのラッパーなのに
結局はクラスを使わないでWinAPIを使ったほうがDelphiのバージョン間での
互換性が高いのってなぜ...
あとUPXだけどこんなん使うならば自己解凍式EXE使ったほうが無難じゃない?
543 :
デフォルトの名無しさん :01/12/30 10:12
Delph6:Delphi5=WindowsXp:Windows2000 成り立つ?
PersonalをDL中です! がんばります 有難う>Borlandたん
C#>>>>>>>>>>>>>>>>>>>>>>>Delphi
>>542 sysutilsはよいとしてclassesはなぜいるの?
upxはまあほとんどキモチの問題だろ。
自己解凍式exeは意味不明。自己解凍して自動実行してくれるならupxでいいし。
ただ小さくするってんならまさに普通の圧縮形式でいいし。
配布の事を考えてでしょ。 でもzipよりもupxの方が小さくなるという事はよくあるね。 ところでdel関係スレを上げまくっているのは同一人物?
>>534 クラスのインスタンスははじめからポインタだよ。
ShowMessage('$' + IntToHex(Integer(strList)));
でよいのでは?
ShowMessage('$' + IntToHex(Integer(strList))); じゃなくて ShowMessage('$' + IntToHex(Integer(strList),8)); ね
>>545 マジレスはカコワルイそうだが
> C#>>>>>>>>>>>>>>>>>>>>>>>Delphi
これはそもそも比較できないのでは? Delphi.NET ができたら
比較できるでしょ。でも、.NET 上では、なんで開発しても中間
コード生成であほくさいでしょ。
.NET 自体がダサい。
C#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Object Pascal
552 :
Delphian :01/12/30 14:49
>>551 悔しいがその通りだ。
C#がうらやましい…。
なんだこのクソ芝居は
>553 君も冷静かつ公正にC#/.NET評価してみれば その価値を理解できるよ。
C#か…。 かねてから凄いといううわさは聞いていたが。 そろそろDelphiは終了かな。
Delphi は Borland が生きてる限り終了ということはない。 C# は、言語的には Jaba と VB を足して2で割ったような感じ。 .NET でなかったら、スカな言語です。 Delphian なら Delphi.NET で十分。 .NET は5年後、MS でさえ忘れているかもしれないよ。
速度のアドバンテージは完全消滅なんだよね?>C#
適材適所だろ。 ま、実際問題速度的なものを見るとDelphiでいいんだけど、 言語だけ見ればC#は確かにいいね。 C#-.netとIDEがあれば、浮気しちゃうかも。
C#:Delphi=Delphi:VB 成り立つ?
C#ってMLでは不気味なほど話題にならんな 信者のすくつだからか?
>>561 うーん。ここ2chだから平気でC#の話題出してるけど、
Delphi専門のMLだとチョットマズイ気がする
>>562 >Delphi専門のMLだとチョットマズイ気がする
なんでだよ~VBは平気で叩いてるくせに
誰かC#>>>>Delなメール投げて袋叩きになる勇者はいないのか(藁
Delphi の ML なんだから C# の話題を出しても、怒る前に困ると思う。 users.gr.jp は C# の ML も持っているんだからそちらに誘導されるだけでは?
565 :
パスカル触ってみた人 :01/12/30 21:15
free pascal 入れてみました。 program stringtest uses sysutils; var pc:pchar; i:integer; begin pc:=getmem(1000*sizeof(char)); pc:='123456789012345678901'; writeln('strlen='+inttostr(strlen(pc))); {この結果は21なるほど21文字あります} pc:=reallocmem(pc,strlen(pc)); writeln('pc='+pc); for i:=0 to strlen(pc)-1 do writeln(pc[i]); writeln(pc[strlen(pc)]); {あれ?アクセスできるなあ} writeln(pc[strlen(pc)+1]); {これがアクセスできてしまうのはどういうこと?} writeln(pc[100100]);{さらにこれさえ、できてしまう不気味でしょうがない.} freemem(pc) end. なんかおれ馬鹿なんでしょうか? デルファイではどうなりますか?
ソースの先頭に{$r+}って入れてみるとか
567 :
パスカル触ってみた人 :01/12/30 21:25
やっぱり最後の不気味な三行は実行されます 改行が3つ表示されました。
? Delphiでも実行できるけど?
569 :
パスカル触ってみた人 :01/12/30 21:45
そうなんですか?何でなんだろう? pcはポインタでメモリ割り当てないと 使えないですよね? あるわけもないpc[100100]にどうしてアクセス できるのかがよくわからないんです。
570 :
パスカル触ってみた人 :01/12/30 21:57
reallocmemを取り除いたらちゃんとaccess violationがでるようになりました. pcharのサイズを調節するにはどうしたらいいんでしょう?
571 :
パスカル触ってみた人 :01/12/30 22:19
{$r+} program stringtestbak; uses sysutils; var pc:pchar; i:integer; begin pc:=getmem(1000*sizeof(char)); pc:='123456789012345678901'; freemem(pc); end. とおもったら上のソースを実行してもアクセスバイオレーション がでるようになった。 だめだ俺にはパスカルはわからない.
565のはfpcのメモリマネージャーがある程度一度にOSからメモリを 受け取っているのかもしれない(ソースを読めば分かるのかもねー、あははー) 571のはpc:='......';が、pcがGetMemでもらったポインタじゃなくて リテラルをさすポインタに変更する危険なコードだとおもう。 ちなみにDelphiだと565のは通らないんじゃないのかね。
573 :
パスカル触ってみた人 :01/12/30 22:59
ああ、なるほど、constのアドレスを代入しようとする事 になるんでしょうか それを開放しようとして怒られるみたい。 571のpc:='...'の部分はポインタとしてのpcに何かしら他の {$r+} program stringtestbak; uses sysutils; var pc:pchar; tmpp:pchar; i:integer; begin pc:=getmem(1000*sizeof(char)); tmpp:=pc; pc:='123456789012345678901'; if pc=tmpp then writeln('equal') else writeln('not equal'); freemem(tmpp); end. ならエラーはでませんでしたやっぱり等しくなかったです. まだ文字列のコピーの方法がわかりませんが 本もヘルプもないのでデルファイでやってみます。
574 :
何だろう君 :01/12/30 23:34
なんで、メモリリークって発生するの? 勝手にアプリケーションの方で正常終了したら 解放すればいいんじゃないの? freeしないとダメなヤツとかの話ね。
getmemだのallocmemだののヒープメモリは自分で解放しないとダメちん
576 :
何だろう君 :01/12/30 23:59
何故ゆえに? もしくは 「勝手に解放しない仕様にした」のは何故? もしかして「アホまるだし」な質問してる?
GCをキーワードに調べてみろ
あ、GCだけだとGraphics Contextとかも引っかかっちゃうかも。 garbage collectionとかメモリ管理とか。
>>574 アプリケーションが正常終了したらまともな OS ならメモリはちゃんと開放されるぞ。
だからとはいえ長時間(何週間, 何ヶ月)走りつづけるプログラムとかもあるんだからそれだけじゃ困るだろ。
そうでなくても毎秒 MB 単位で漏れたりしたら数分ともたんだろ。
580 :
何だろう君 :01/12/31 00:18
なんだか「へりくだった」CGギャラリーがひっかかるみたい。 garbageって、ごみくずって意味? そー書いてあったけど…。 まぁ、「そうすることに意味がある」ってことにしときます。 くどくなりそーなんで。 答えてくれた人、どーもです。 あ、ヒープってのも意味分からんな。検索してみよう…。
あれま、すれちがい…。 えーと、finallyでfreeするstringlistとかは…? でもま、だいたい分かりました<理由 どーもです。
GCといったらゴッド・チャイルドでしょう。
583 :
デフォルトの名無しさん :01/12/31 01:06
つまり、VirtualAllocで確保したメモリはプロセス終了時に 開放されるって事?
PVの鬼束ちひろさんは怖い。普段は割とカワイイ。
585 :
デフォルトの名無しさん :01/12/31 01:30
reshackerで英語のアプリを日本語に翻訳して wdiffで日本語化パッチを作ろうとしても 「ファイルをオープンできません」と出ます。 どなたか対処法をしらないでしょうか? ヘルプファイルは目を通しており、やり方にミスは無いかと思います 差分ファイルを保存する際の拡張子は WDF or EXEのどちら? 当方 WIN98SEです。95じゃないと動作しないという落ちでしょうか?
>パスカル触ってみた人 ポインタがわかってないのをパスカルのせいにしないで。 言語で禁止してくれるのを頼りにしすげると、ワナにはまりますよ。 わかってると思うけど、コンパイルが通ったからって必ずしも上手く実行されるとは限らないので。
ごめんなさい別にパスカルのせいにしたつもりはないんです。 パスカルがわからないんじゃなくてポインタがわからないでした。 ただ、571は今見るとおかしいですがそのときは本当にわからなかったんです。 565は文字列の配列のインデックスってどうなっているのか とか自分の中で混乱する部分を調べて アクセスしてみてエラーを出して確認したかったんです
そうそう、アクセスしてもエラーがでるかどうかってのは不確定だから 混乱するんだよね。上手くいっているように見えてそれは単なる偶然。 そういや、Cの実験室って本でポインタ周りをとことん実験して調べてて面白かったな。 今見ると当たり前のことが書いてあるんだけど、 ポインタの理解があやふやだったころは目からウロコだった。
Delphi6パーソナルで テキストエディタを作っているのですが ActionManagerコンポーネントがありません。 どうすればよいのでしょうか?
age
ageる世
>>589 ないのであきらめましょう。
ActionManagerがなくてもなんとかなります。
それかpro版を買うか
>>589 > Delphi6パーソナルで
> テキストエディタを作っているのですが
> ActionManagerコンポーネントがありません。
> どうすればよいのでしょうか?
入ってないよ!!<ActionManager
BorlandのFAQに入ってないことは書いてあったけど、
俺も迷った(w
つーか、俺も今ヘルプのチュートリアルやってるけど、
そこで止まってる
メインメニューは作れたけど、
そこからオープンダイアログを開く方法がわかんね。
procedure TForm1.Open1Click(Sender: TObject);
begin
end;
このbeginとendの間に何か書けば良いと思うんだけど
どう書いたらよいんでしょう?
動作確認しないで流し書きするけど // オープンダイアログを開く if OpenDialog1.Execute then begin // ファイルが選択された場合 // テキストファイルとして読み込む Memo1.Lines.LoadFronFile(OpenDialog1.FileName); end;
595 :
デフォルトの名無しさん :01/12/31 09:40
>>593 結局抜かして先に進めということでしょうか?
>>594 > // オープンダイアログを開く
> if OpenDialog1.Execute then begin
> // ファイルが選択された場合
> // テキストファイルとして読み込む
> Memo1.Lines.LoadFronFile(OpenDialog1.FileName);
>
> end;
出来た出来た♪コンパイルしようとしたら
Memo1のところで未定義の識別子ってでて来たけど、
これはMemo1をちゃんと定義してやればおっけーってことですよね?
その部分をコメントアウトしたらコンパイルは通って思ってた挙動を
してくれました。ありがとう。
>>595 抜かすと言うか別の方法を考える。
どう操作したって壊すことは無いんだから
いろいろクリックしまくってみるとか
protectedってどんな時に使うのか、ず~~~~っと疑問だったんだけど 他人が作った、あまり出来が良いとは言えないTLabel系コンポーネントを 継承してみて、初めて使い方が理解できたよ(笑 改めて見るとTCustomLabelって凄い!良く練られてる。
598 :
Delphiの初心者 :01/12/31 15:17
すいません。いきなりですが質問で~す。 FindDialogの使い方教えてください。
FindDialog はダイアログが出るだけですから自分で検索部は作って下さいね
600 :
デフォルトの名無しさん :01/12/31 23:20
つーか、申し訳ないけど、もう「メモ帳」の類と、 「メモリークリーナー」の類はいらないと思う。
公開するかどうかは別にして del入門でメモ帳クローンは避けて通れないでしょ。
602 :
デフォルトの名無しさん :01/12/31 23:25
delphiでメモ帳作りたいんだけれど WIN32APIでエディットコントロールのセルまではわかるんだけど コンポーネント見たく背景色を指定するのはどうしたらよいのでしょう。 とりあえずブラシは一つ作っているのですが あとListvewとかの背景色もきぼーん kol使うというのは無しで
ActionManagerとか言う前に、もっと勉強することたくさんあるぞ。 質問する前に検索して探すことをお勧め。 いっぱい書いてくださってるぞ<delphiの先輩方
604 :
Delphiの初心者 :02/01/01 00:18
↑の方のを聞くと質問しにくいんですが(笑) 検索について詳しく書いてあるページとかありますか?
605 :
デフォルトの名無しさん :02/01/01 00:22
606 :
Delphiの初心者 :02/01/01 00:25
すいません。説明不足でした。テキストエディタなどを作る際の検索です
>>606 604のURLで足りませんか?「delphi FindDialog」とかで。
「Magic of Delphi」が、最初に参考にするページとしてはベストだと思う。 つーか、「フリーで入手して説明書(?)が無くて何から学べばいいんじゃい?」 って人には。オレがそう(藁 でも、ただいま停止中。つーか、アドレスが使えなくなってる。
609 :
Delphiの初心者 :02/01/01 00:48
う~ん… またあしたさがしています。ありがとうございました。
>>610 あれれ。いつの間にジヲに?
つーか、もうオレは全部見たから。
ひとつのOSでDel6ProとPer両方入れることってできる? Proで作ってPerでビルドできるか確認したいんだけど
614 :
デフォルトの名無しさん :02/01/01 02:15
淫乱アセンブラ
615 :
デフォルトの名無しさん :02/01/01 10:08
>>606 AFEDITのソースって結構参考になるのでは?
コンポーネントでなければなおよかったのだけど
>>612 ひとつのOSでというかおかしくなるからやめたほうがよい
Per版用にHDDを買って切り替えたほうが無難では?
delphi6をWin2Kにインストールしたんだけど
通常使用するのは当然管理者権限じゃないんだけれど
管理者権限で許諾とったのに未許諾になってしまったのは切れた
つまりdeelphi自体全体的にフェールセーフにはできていない
許諾もソフトでとるんじゃなくて郵便でとんないとアプリとして管理できない
もしもボーランドが文句いわないのだったら
朝インストールして許諾とって夕方アンインストールしてもいいと思っている。
>>600 勉強用途のソフトと使ってもらおうと思って公開するのは別でしょ。
以前はそれを間違えて、勉強用に作ったあまりにありふれて不完全なものを
公開してシェアウェアにしていたものがいたが、
ま、最近はそういう人はそんなにいないだろ。
# 2ch見てる人ならなおさら
617 :
デフォルトの名無しさん :02/01/01 11:44
>>616 どーい
勉強用の場合おんなじテーマのもののほうがスピードとかの差がわかっていい。
極端なのがhello worldだと思うけれど
日本の場合IMEという厄介なものがあってエディタ関係というのは奥が深いと思う
ただ開発途上のものとか動作テストレベルのものでも
いろんな環境で見てもらうという意味では公開してもいいんじゃないかと思う。
シェアウェアにしても売れなきゃいいんだけど
コントロール並べただけで著作権がありますなどという奴もいるからなぁ。
というか著作権や特許のあるもの使っててGPLとか抜かす奴もいるし
618 :
デフォルトの名無しさん :02/01/01 12:55
GPLって何?
619 :
デフォルトの名無しさん :02/01/01 13:21
>>618 GNU GENERAL PUBLIC LICENSEの略
早い話がこのソースやライブラリーを使ったソフトを公開するときは
全ソースを公開しなくちゃだめってライセンスで
GPLを使ったら必ずGPLのライセンスをつけてGPLで出さないといけない。
dllにして制御すれば本体はよいというのがLGPL
ソース公開しなくても商用でもOKというのがMPL
とりあえずアプリケーションがフリーでも商品でもライブラリーがMPLか完全にふりーのものであれば
特許関係がクリアされているものならば問題なく使える
GPLで作ると例えばできのいい有料のコンポーネントなどを使って一部分だけ
GPLのものという形ができないのでオープンソースにも向かないと
折れは思う。
さんくす
Pascalもろくに解からない厨房です。型チェックがきびしすぎる 文字 → ASCIIコード、の変換はどうやるの? Delphiの入門書には載ってない。StrToIntは使えないし・・・ 取りあえずアセンブリ機能を使ってこんな事やってます。 var Character: Char; AsciiCode: Byte; begin asm MOV AL, Character MOV AsciiCode, AL end;
>>621 (;´д`)
AsciiCode := Ord(Char);
Delphiの文字列ってなんかややこしくないですか?
C文字列との互換を考えると最初はやっかいだけど、 Stringだけ使ってれば簡単じゃない?
まあ初期の設計思想からはずれて便利さを追求した結果 多少歪で半端な仕様になっちゃってるからね 文句たれずに覚えちゃえばあとはどってことない
Delphi内だけで完結するならいいけど、 そうでないなら面倒かも。 Cのchar*やら、C++のstringやら、Delphiのstringやらどれかになれすぎていると、 逆に戸惑うな。
char*は論外だろ
ごめん、なぜ?
pcharより長い文字列が気持ち悪いです。 {$H-} で頑張ってる人いますか?
end; (;なのでまたprocedureかなんかで再開しろ)
WideStringの方が楽 はやく標準にしろ!!
>>632 Unicodeやだ!!VBじゃねえんだから。
WideStringはUnicodeじゃなくって2バイト文字列 s: WideString; s:='感じ';Writeln(s[1]); // '感' ってこと
635 :
デフォルトの名無しさん :02/01/02 01:47
Strings.IndexOf が大小文字を区別するのかしないのかでまようんだよな。 ソースコード見たらAnsiSameText 使ってたから区別しないって分かったけどさァ Strings.IndexOfText Strings.IndexOfStr って区別してほしかったナ☆
636 :
デフォルトの名無しさん :02/01/02 01:53
全てのクラス型に使えるような procedure SaveClassToFile(Filename:string; obj:TObject); procedure LoadClassFromFile(Filename:string; obj:TObject); 関数作れませんかね。 ポインタを格納している場合は、その実体までさかのぼって 保存してくれるような。
無理でしょう。ただ ・すべてのフィールドに対してプロパティを宣言する ・すべてのプロパティをpublishedにする ・レコード型、ポインタ型は使わずクラス型で置き換える ・配列は使わず、TList型にする 等々守れば出来るかも知れませんが……
638 :
デフォルトの名無しさん :02/01/02 03:20
>>634 WideStringってウニコードでしょう?
634 は自動的に変換が行われている事を知らないのでしょう
>>630 PascalやBasicになれていれば長い文字列の方を選ぶのでは?
そりゃ俺だって、実行速度が必要なところでは仕方なくpchar使うけどさ。
長い文字列って便利だからつい 文字列以外にバイナリ保存先に使っちゃわない?
LongStr1, LongStr2: String; LongStr1 := 'TestString'; LongStr2 := PChar(@LongStr1[4]); こんな感じの使い方を良くやるんだけど、コスト高いんだろうか? PCharで統一した方が良い?気にする必要なし? あと長い文字列の場合 if Length(LongStr1) > 0 then Result := Length(LongStr1) div 3; と、した場合(Length(LongStr1)が2回)と Len := Length(LongStr1); if Len > 0 then Result := len div 3; と、した場合(Length(LongStr1)が1回)でコストは違う?違わない?
643 :
デフォルトの名無しさん :02/01/02 10:37
delhiのstringは実質的に可変長バイナリなので レコードの動的配列などをDelphi3で使う場合は便利です。 というかINT64が使えてCardinalが32bitならばD3最強なんだが... (D5,D6のTstream 32bitだし)
644 :
デフォルトの名無しさん :02/01/02 10:47
>>642 明示的にsetstringすればいいんじゃない?
>>644 SetString(LongStr2, PChar(@LongStr1[4]), Length(LongStr1) - 4);
こんな感じかな?なんか余計にコストが掛かりそうな気が・・・・
なんで copy 使わないの?
1.LongStr2 := PChar(@LongStr1[4]); 2.SetString(LongStr2, PChar(@LongStr1[4]), Length(LongStr1) - 4); 3.LongStr2 := Copy(LongStr1, 4, Length(LongStr1) - 4); 4.LongStr2 := RightStr(LongStr1, Length(LongStr1) - 4); む~ん、色んなやり方があるもんだ。 私的には4.が読みやすくて良さ気だけど・・・・・
:= Copy(LongStr1, 4, High(Integer));
LongStr2 := LongStr1; // 参照カウントが増えるだけで高速 Delete(LongStr2, 1, 3); // ここで初めて最初の3文字が削除されたコピーが作成される
650 :
デフォルトの名無しさん :02/01/02 13:59
マジ質問です。 エクセルのような表計算ソフトを作りたいのですが、 どのような手順でやればいいかわかりません。 使用するコンポーネント、コード等を教えてください。 環境はdelphi 5 proです。
TStringGrid に表計算機能を付加するコンポーネントが Delphian World にあったと思う. 以上
Excel埋め込め
ActiveXタブにある F1BOOK は Excel互換のデータを読めますよ
654 :
デフォルトの名無しさん :02/01/02 16:47
あのですね、仮想テキストファイル(自分が命名)を実現するクラスを作りたいのです。 簡単に言えば、レジストリエディタのように、ツリー構造で ディレクトリもどきとファイルもどきが存在し、 テキスト形式のファイルで保存できるというものです。 ディレクトリの名前変更やファイル移動、コピーなどを実装したいのです。 スマートに実装する方法は無いものでしょうか。 [\c\windows\temp] tempfile1="aefawef" tempfile2="apweofawef" [\c\windows] system1="pokokp" system2="pppp" という感じで保存できるように。
XML
TREEもどきでバーチャルINIファイルに保存してください
簡単にやるなら TTreeView で SaveToFile, LoadFromFile TreeItem.Data に属性持たせとけばよさそう そのまま表示できるのでデバッグも楽ちん XML も良いアプローチ.
>>654 文字列の改行とかヤバイ文字をエンコードデコードしてそのまま
レジストリに書き出せば?
function EncodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
while i<=length(s) do
begin
case s[i]of
#0..#31,'"','''',',','&','%':
Result:=Result+'%'+IntToHex(ord(s[i]),2);
else begin
Result:=Result+s[i];
end;
end;
inc(i);
end;
end;
function DecodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
while i<=length(s) do
begin
if s[i]='%' then
begin
try
Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
except end;
inc(i,3);
end else begin
if not(s[i] in[#$0d,#$0a]) then
Result:=Result+s[i];
inc(i);
end;
end;
end;
659 :
デフォルトの名無しさん :02/01/02 17:35
xmlってHTMLもどきじゃないんですか? そんなに複雑なことも簡単にできるの?
660 :
デフォルトの名無しさん :02/01/02 17:43
てゆうか、Del6Pro にXMLコンポーネントは 付いてないですよね…はあ。
>>659 HTML は 「Web用の文書」 を書くための言語。
XML は 「何らかの言語」 を書くための言語。
自分で好きな言語を定義できる。
狭義ではデータ構造の定義でもいい。
>>660 msxml 使えば?
どやってつかうの?>msxml
664 :
デフォルトの名無しさん :02/01/02 18:16
MSXMLってコンポーネントのことですか? 探してもみつからないけど、MSXMLっていう Delphiからでも使えるライブラリがあるんですか
665 :
デフォルトの名無しさん :02/01/02 18:17
>XML は 「何らかの言語」 を書くための言語。 >自分で好きな言語を定義できる。 >狭義ではデータ構造の定義でもいい。 あ、そうなんだ。 てっきりHTMLの後継者だとおもっていた。 さっそくXMLの雑誌を買ってこよう。
666 :
デフォルトの名無しさん :02/01/02 18:19
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, Chartfx3; type TForm1 = class(TForm) Chartfx1: TChartfx; Button1: TButton; procedure Button1Click(Sender: TObject); procedure TForm1.Button1Click(Sender: TObject); var i: byte; begin for i:=1 to chartfx1.NValues do chartfx1.Value[i]:=i; chartfx1.Refresh; end; ってなときにぼたん1押しても値が変わりません なにがわるいんでしょうか へたれな質問ですまそ
データを変更する部分はOpenDataExとCloseDataで囲ってあげてください。
668 :
デフォルトの名無しさん :02/01/02 19:06
XMLってSGMLの2の舞になりそうな気がするんだけどな.... チャンク構造のバイナリファイルのほうがよいとおもふよ。折は データベースでも何でもチャンク構造がよい 参考フォーマットとしてはPNGがよいな。 あとXMLは確かTorryにフリーとシェアと両方あったと思う。 タイプライブラリーでXML関連のを読み込んでもいいけれどでもソースのある奴は やっぱ参考になるね、 コンポーネントは極力ボーランドのものじゃないほうが実行時バイナリと 開発時バイナリが分離されていて効率がよいように思える。
669 :
デフォルトの名無しさん :02/01/02 19:57
すいません、チャンク構造ってなんですか
>668 すみません、 >SGMLの2の舞 ってなんですか?
>>669 個別のデータ要素のタイプにかかわらず、要素の枠としてのフォーマットを統一して格納する方式。
たとえば種別(4文字程度)、サイズ、データ実体という組で一つのチャンクとして定義して、それに
則って読み書きするだけで汎用のリーダー/ライターが書け、知らない種別は無視しても
読み続けられるために後から種別が増えても下位互換性を保つようにできる。
さらにチャンクの中にさらにサブチャンクとして並べたりもすることでこの構造をツリーにすることもある。
バイナリの画像や音声フォーマットはチャンク形式を採っているものが多い。
XMLはこの考え方をテキストベースに置き換え、チャンクのフォーマットにあたる部分も
別途定義・記述するようにしたものといえるかな。
ぐっちゃぐっちゃ何でもかんでも取り込んで記号化したふり したものなんか見たくも無い
>>669 671に補足すると、Windowsでは昔からRIFF形式ってのに使われてるよ。
で、RIFF形式ってのはWAVやAVIに使われてる。
>>671 丁寧なフォロー あんがとー
htmlが成功したのは自己完結型だからだと思うんだけど
XMLは例えばXML__type**みたいなのがきっちり決まっていればいいんだけど
一歩間違えるとただの暗号になっちゃう
仮にXMLを実装するとしても自己完結型か明示的に文法ファイルを指示したい
あと脱線しちゃうけれどMP3ファイルにRIFFヘッダーつけただけでACM APIで
再生できるのでDirectSoundでMP3をやる場合はありがたい
>>674 何かよくわからんが、普通 XML は DTD か XML Schme で文法を定義する。
最近は階層構造のiniファイルとしてXMLの構造のみ使わせてもらってる DTDやSchmeはよくわからんのとめんどくさいしほかとの連携もないのでパス 印刷する時はxslで見やすいようにしてIEで表示
>>671 wavやaviなんかそのたぐいだね。
確かにバイナリデータを扱うのが前提ならチャンクはらくだ。
679 :
デフォルトの名無しさん :02/01/03 10:41
LeftStrとかRightStrて日本語を1文字として数えてるようなんだけど これを止めさせることって出来ないんでしょうか? S := 'C:\テスト\dir\';LeftStr(S, 8); とかすると、Sに'C:\テスト\d'が返ってきて迷惑ヽ(;´Д`)ノ8byteトリダシタイノー
>697 copy(s,1,8) ではダメ?
>>680 copyも日本語を1文字と数えるようで同じ結果が返ってきたです。
>>680 681は間違いで、ちゃんとできました!大々的に感謝です。
嘘こいてんじゃねえゴルァ!
というか それ8byteで切ったら、後困らんのかい?
685 :
デフォルトの名無しさん :02/01/04 00:45
Delphi6+up1で外部ツールを起動するとき カーソル位置の単語$CURTOKENって展開されなくない?
-s$CURTOKEN みたいにスペースを入れないと駄目なようで -s $CURTOKEN としたらOKでした。が、これではツール側が認識しない...
そうそう、スペース入れないと展開されない仕様はなんとかならないかな。 俺もツール登録するときに困った口。 たしか結局batファイル経由にしたけど。
688 :
デフォルトの名無しさん :02/01/04 10:19
Win2KにD6-pro入れて使用許諾とってからアップデートしたんだけど ほかのユーザーでは未許諾になっちゃう。 これってどうすれば直る?
>688 許諾を取った時のユーザで6.0のレジストリを保存して それをマウス右ボタン->結合でやってみたら? 色設定とかもそれで移せるからさ
690 :
デフォルトの名無しさん :02/01/04 19:06
>>689 あんがと それでやってみます。
確かバイナリのデータが入っているのでそれかな?
でるファイてvcより簡単で 作成したアプリも高速らしいけど 本当ですか? 当方vbより乗り換えようと思うのですが 周りにユーザがいないのでふんぎりがつきません 長所、短所おしえてください 当方の使用用途はげーむせいさくです あと、製作用のエディター どうでしょ
とりあえずはpersonalただなんで、試してみたらどうでしょうか? delphiが向いてるのはエディター制作ですが、これならpersonalの ライセンスでもOKだと思います。
すでに C++ や Win32API の知識があるのなら、 Object Pascal や Delphi 流のアプリの組み方を覚えなくて良い分 VC++ の方が簡単かもしれません。 GUI を作ることと、既存のコンポーネントを利用して出来る範囲に限って言えば VB と同じくらいに簡単で VB 以上の表現力を持っています。 それ以上のことをしたいならば、オブジェクト指向や Delphi におけるプログラミングテクニックを学ばなければいけませんが、 これは VC++ においても状況は変わらないでしょう。
>691 VC++にしなさい。 ゲーム作成に一番よく使われていて、就職にも困らないよ。
両方やってみたらいいんじゃないの? Delphi知ってる事が荷物になるわけじゃないし C++がそんなに難しい言語って事でもないし 片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね
DelphiでWindowsプログラミングの基礎を掴んで、VCへ移行。 これ最強。
>片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね ただの二度手間
>>696 ただし、Windows依存とそうでないものが区別できなくなるという危険も伴う、諸刃の剣。
文字列の可変長多重配列ポインタを関数に渡すの面倒臭いんで すぐDelphiに逃げちまうな 悪い癖だ(w
まあ、おまえら素人はバッチファイルでも作ってなさいってこった
別のサブルーチンに飛ばすにはどう書けばいいのでしょうか? (TForm1.Button1ClickからTForm1.Button2Clickに飛ばすというような) 探したんだけど見つからない…
VirtualTreeViewの使い方がサパーリわかりません。 サンプルソース、ワケワカメだし… ネットで解説ページを探してみても、それらしいのは見つからないし… これはサンプルを読めるようになるか、市ねって事でしょうか?
VirtualTreeViewじゃねえや、VirtualListViewだ… やっぱり死のう…
>>701 Button2Click(sender);
じゃないのか?
∧,, ∧
ミ。_。彡 ペコッ
~ミ,,,U U,,ミ 且~~ あけましておめでとうございます。
∧,,∧ / ̄
ミ,,゚Д゚彡 < Button2Click(nil)でもいいよ
ミ つ且~~ \_
~ミ,,,,,, ,,ミ
日本Delphi振興会
・SenderのないprocedureからSenderを持つprocedureを呼ぶ。
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm#sender
707 :
デフォルトの名無しさん :02/01/06 20:58
>>707 高速コンパイルこそが唯一にして不可侵の Delphi 最大の利点に同意
これに慣れると他の物が使えない諸刃の剣
俺もPascal知らなかったからBCB使ってたけど、試しにDelphi使ってみたら コンパイル速度に驚愕。それ以来ほとんどDelphiだなぁ。
マシンスペックが上がったらコンパイル速度は 差が縮まると思っていたが、いまだに開いている。 友人のVCユーザは未だにうらやましがっている。 Javaの実行速度が問題なくなるくらいまでは(w しばらくはDelphiのコンパイル爆速神話は続くと思われ。
712 :
デフォルトの名無しさん :02/01/07 13:16
>>711 Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁
Geforceのコードは使っていないけれど
Pickingのサンプルとかあるのでよろしい。
Quake2というよりすでにMD3ファイルローダはできてるようだ
あとDelphi3DとかGLSCENEなんかもよいのだが...
713 :
デフォルトの名無しさん :02/01/07 13:24
許諾コードって何回取得してもチェックしてないんだと。 だから毎日クリーンインストールして取り直してもOK あとD6の製品版は不良品だけど作っちゃったから10/18のパッチはあてないんだと.. そんなんが日本の法律でOK? あとライセンスでは1台のPCといっているけれど 向こうの認識は1台のPC、1つのOSでデュアルブートで常時1台しか動いていないけれど OSは違うというのはだめだけれども記述に誤りがあるという認識らしい。 ということで基本的に不正コピーしなければボーランドのライセンスは 法的根拠が何もないし、罰則もない ボーランドに法律関連を扱う部署や品質管理の部署はないみたいなので 訴訟の心配もない、個人情報の搾取も会社レベルではやってない ということでプロ版かって再インストールとかで二の足踏んでいる人は 安心してアンインストール再インストールできると思います。 逆に将来性が薄いのでただだからといういってPersonal版やるくらいなら freePascalにいったほうが良いです。
許諾コードって? 普通は許諾一回取ったら再インストールしてもレジストリから復元するんじゃないの? そんなメンドクサイ事しないでしょう
715 :
デフォルトの名無しさん :02/01/07 16:47
>>714 基本的にWindows2000ではいまだに許諾コード取得のバグがあるそうで
管理者権限以外では許諾コードをユーザーごとに取り直さないといけないそうです。
それにやってないけれどアンインストールして情報残っていたらアンインストールとはいえないのでは?
基本的にWin2KやWinXpでDelphiを使うのは無理っぽいのでWin-MeのHDDにしようと思うのですが
許諾は何回とっても関係ないという情報は特に初心者向きだと思うのでこのスレに書きました。
あと未許諾でコンパイルしても特に影響はないそうです。
>>715 みんな黙ってるだけで、
レジストリのどこにソレがあるかくらいは判ってると思われ
Delphi6の初心者向け勉強サイトで いいところ知ってる人いる? グーグルで検索しても何年も昔の しかもあまり詳しくないのしか出てこないYO! プリーズ!
初心者向けって いったい どこが判らないのよ?
どこがわからないと言うか なにもわからないのが現状・・ 一番初歩の初歩から学びたい今日この頃・・
720 :
デフォルトの名無しさん :02/01/07 19:04
Delphi、どこで買ったらいいの?
一ヵ月後に俺が作ってやるから待ってろw
本気で激しく希望!! つーかいいサイト知らない?
本買え
>>717 じゃ今から やってみたげるから
ファイル(F)->プロジェクトを開くで
Demos\doc\TextEdit\ のTextEdit.dprを開いてみて
>>724 開いた!
ボタンが1つ出てきた!
あっちなみにPesonalね!
まずコンパイル&goしてみよう やり方は判る? プレイボタンみたいなのか 実行->実行(F9)ね
実行できたけどこれは一体? RichTextファイルを開くもの? 自分で作るには?
じゃ、それを終了して MDIFrame.pas を開いてみよう 方法は、表示->ユニットの表示とか表示->プロジェクトマネージャから選択ね
最初は画面に文字を書いてみよう F12 を押して TextEdiorと書かれたフォームを手間に持ってきて フォーム内のグリッドの中央をクリック F11を押してオブジェクトインスペクタを出し イベントをクリック OnPaintというのを探してクリック その右の空白の 部分をダブルクリック これで以下のような状態になる筈 なった? procedure TFrameForm.FormPaint(Sender: TObject); begin end;
このプログラムの意味がサパーリ・・ Object Pascalだっけ?
つぎは その間に procedure TFrameForm.FormPaint(Sender: TObject); begin Canvas.TextOut(20,20,'こんにちは'); end; と1行入力して 実行してみよう
ちっちゃくこんにちはって出てきた!! これはテキストを表示させるものらしい?
ごめんアナウンサー見たいんで落ちます でぁでぁ
procedure は手続きを定義しますという意味 TFrameForm.FormPaint は手続きの名前。 ドットが間にあるから、これは手続きでもメソッドと呼ばれるもので TFrameFormというクラスの FormPaintと いうメソッドを定義しますという意味 意味判らんでも覚えてね で、(Sender: TObject); は引数。 とりあえず無視してOK begin ~ end; はブロックで、 この間が関数の本体になるわけ 追加した Canvas.Text の意味とかは そこにキャレットをあわせて F1を押して調べてね
>>717 サイトでなないが
ヘルプ-Delphiヘルプ-チュートリアル:テキストエディタアプリケーション
では駄目か?
おおぉーー! 難しいがなんとなく理解! 感謝感謝!こんな感じで他のもできる? ちなみに733は贋物!
>>735 サンクス!気づかなかった!
これでいいもの作ってみんなにあげるから待っててくれ!!
次に717は 「すみません、ActionManagerが見当たらないんですが…」 と言う
たぶんね。 >717 ActionManagerの代わりに StanderdタブにあるActionListを使います しかし \Program Files\Borland\Delphi6\Source\Vcl\ActnRes.pas はどうしようか?
>>712 > Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁
本当だ(w
readme.txtにDelphi5ってかいてあるけれど、それでも60KByteなんていかねって。
upxで圧縮も解凍も出来ないところから、何か別のexe圧縮使っているとみた。
【アクションマネージャにアクションを追加する】まで来たら 【イメージリストにイメージを追加する】まで2ページ飛ばして 1、ファイル->新規作成->フォーム 2、オブジェクトインスペクタ-> Name欄をForm2から StandardActions に 3、フォームの上でマウスの右ボタンでテキストで表示を選ぶか ALT+F12 4、ファイル->開く-> ファイルの種類を全てのファイル(*.*) にして Lib\ActnRes.dfm を開く 5、編集->全て選択(ctrl+A) の後コピー(Ctrl+C) 6、タブでUnit2.dfmを選び、編集->全て選択(ctrl+A) の後貼付(Ctrl+A) 7、ALT+F12でフォームを表示 8、あとは、HELPに書いてあるようにImageList1をコピーする まだActionListもついでにコピーする そしてこのページからActionManagerを ActionList1 コンポーネントと読み替えます 【メニューの追加】 ActionMainMenuBar も無いので StanderdにあるMainMenuを使います これを貼り付けてダブルクリックして適当にメニューを追加し ここのメニューのActionプロパティに設定してゆきます
しかし、ホント D6パーソナルには D5 のチュートリアルを付けるべきじゃないのか?
743 :
デフォルトの名無しさん :02/01/07 23:21
つーか、こんなこと、どっかチャットでやらんか?普通。
>744 スマン 1回やってみたかんだ というか1回やったら記録残るから2回やらんでいいしと
746 :
デフォルトの名無しさん :02/01/08 02:49
あのー、「ソースファイルがみつかりません:classes.pas」、っていうダイアログが出るんですが、 どうすればいいんでしょう? ちなみに日経ソフトウェア2月号の郵便番号検索を初めてパソ版で作ってるんですが・・・
747 :
デフォルトの名無しさん :02/01/08 04:41
749 :
デフォルトの名無しさん :02/01/08 23:21
例外出すとワケワカメなヤツのソース要求されるヤツじゃないの?
>>746 アレ、直らんのかな?
最初は「ハァ?」って思う。
例外なら「例外よ♥」って出てくれ。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < だから、パッチ宛ててってば。 ミ つ且~~ \ dcuがデバッグ版らしいので ~ミ,,,,,, ,,ミ パソナるなのにソースを要求されるようだ と、ボランドNEwsGで報告があたよ.
FileNameの文字列をフルパスじゃなくて、ファイル名だけ欲しい場合は どうすればいいですか?
>>751 たぶん
ExtractFilename(パス付きファイル名); string で返ってくる。
ExtractFileName
756 :
デフォルトの名無しさん :02/01/09 07:30
32ビットCRCって何ですか? Delphiで生成するファイルのとある番地から番地までのデータにとある計算(32ビットCRC?)を施して 4バイトのチェックサム値をとある番地に格納したいのですが定番の方法ってあるのでしょうか? できればソース付だと大変うれしいです。
ZLibにCのソースがあったと思うYO!
クラスのインスタンスを生成してほんのちょこっとだけ処理したいときって、 なんか簡単にかけないもんですか? たとえば、ファイル作って、何か書き込みたいときに TFileStream.Create(FileName, Mode).Write(Buf, SizeOf(Buf)) って一行でさくっと書いた場合、メモリ解放されないよね? with TFileStream.Create(FileName, Mode) do begin try Write(Buf, SizeOf(Buf)) finally Free; end; end; ってちゃんと書かないとだめですか?
classではなくobject使え Create/Destroyしなくても使える
>759 それを1行に書いたらいいんじゃないのか? with TFileStream.Create(FileName, Mode) do try Write(Buf, SizeOf(Buf)) ;finally Free; end; じゃあインターフェース型を作るってのは? 変数宣言が要るからダメか?
with TFileStream.Create(FileName, Mode) do try Write(Buf, SizeOf(Buf)) finally Free; end;
764 :
デフォルトの名無しさん :02/01/09 09:57
>>756 PNG関連のルーチンを探せばZlibにCRC32がついている。
完全なPASCAL版もあるけれどD6ProについてくるGLDPNGのように
Cでコンパイルしたobjファイルを$Lでインクルードしたものも多い
CRC32は初期化と終了処理が必要なのでそれを知らないと結果が異なってしまう
ZlibのC版は継続的にファイルを流し込めないけれど一回呼び出せば
ちゃんと初期化と終了処理をするので値としては基本
765 :
デフォルトの名無しさん :02/01/09 10:01
SysutilesやClassesって宣言して使っているときと 同じフォルダーにおいて再コンパイルするときだと 再コンパイルしたときのほうがEXEのファイルサイズが大きくなるのだけれど なんでだろう。 例えばWIN32APIベースで windows,messages,sysutilesとすると 関数何も使わなくても40kbyteだけど ソースをつけるかsysutiles2とかリネームしていれると80kbyteになっちゃう この差は何?ちなみに初期化ルーチンははずしてみましたけどおんなじです。
>>756 CRCの計算そのものはすごく簡単です
CRC32(ITU-T76ですか?)の規格を持っていないので
procedure crc(dt:byte;var crc:integer);
var w,i:integer;
begin
for i:=0 to 7 do begin//dtにバイトを渡す場合 32bitを渡すなら 定義を変更して下さい
w:=((dt xor crc) and 1)*$xxxxxxxx ;//ここに規格にあるビット位置を1にした2進数を入れ
dt := dt shr 1;
crc:= crc shr 1; //シフト方向は規格により違うんであわせて下さい
crc:= crc XOR w;
end;
end;
初期化と終了があります。初期化でcrcを-1にし終了で反転したりの処理が規格書にあるかと
それと上のコードは遅い方法です。バイト単位に計算したテーブル検索にすると8倍高速になります
自分専用の規格なら $EDB88320 くらいが適当かと
>>765 同じフォルダに置くからでは? 元々あるフォルダのをプロジェクトに入れてみたら?
Delphi6 PersonalにUIWebBrowserをインストしようと思ったら、 vclieってのが無いって言われたんですが、personalにはインスト不可能なんですか?
インストーラーで レジストリから個人情報(良く使うメーラのアドレスとかプロバイダのIDとかFTPの履歴とか) ひっこ抜いて暗号化して実行ファイルに埋め込んでしまう。 (解凍しながら特定の位置に埋め込む) それとは別の暗号キーでレジストリに書き込む。 これを実行ファイルではレジストリの方の値をランダムに作ったIDと称してメールで送らせる それに対して パスを発行 もし IDとパスの両方が掲載されたら、掲載した奴はIDから突き止められるから 教唆=共同不法行為として請求可能 クラックされても、実行ファイルにIDが埋め込まれているから同じ
770 :
デフォルトの名無しさん :02/01/09 12:21
誤爆失礼
773 :
ビープ音が消えない :02/01/09 13:17
TEditを使って、文字列を入力するモノを作っています。 エンターキーを押したときのビープ音を消したいのですが上手くいきません。 OnKeyDownハンドラの中で以下のような処理を行っています。 if Key = VK_RETURN then begin if ssCtrl in Shift then //処理A else //処理B Key := 0; end; Key := 0にすればビープ音が消えると思ったのですが、消えてくれません。 OnKeyPressハンドラで同じことをやるとビープ音は消えるのですが、 Ctrlキーの押下判定が出来ないのでOnKeyDownの方で処理を行えれば よいのですが、音を消すにはどうしたらいいでしょうか?
774 :
デフォルトの名無しさん :02/01/09 13:29
イベントハンドラでやるからだめなんでしょ
>>773 イベントハンドラの前に、
KeyDownていうメソッドがコールされてて、
その中で、OnKeyDownがAssignされてればOnKeyDownをコールするとなってる。
だから、KeyDownをオーバーライドして、下のようにしたら?
if not 殺す処理の場合 then
inherited;
>>773 key:=0 の代わりに abort; 入れてみたら?
うまくいったら教えてね
776 :
ビープ音が消えない :02/01/09 14:40
ありがとうございます。今回、EnterとCtrl+Enterの区別がつき なおかつビープ音を消すという事ができればよかったので 以下のようにしました。 OnKeyDown if Key = VK_RETURN then begin if ssCtrl in Shift then //処理A else //処理B //Key := 0; end; OnKeyPress if (Key = Char(VK_RETURN)) or (Key = #10)) then Key := #0; 打算的な解決方法なので、さらに研究してみたいと思います。
777 :
デフォルトの名無しさん :02/01/10 09:33
Delphi3で作ってたプログラム IE5.5SP2入れたらファイルの書き込みで ファイル壊れるようになった。どーなってるのさ?
>>777 と言われてもなあ・・・再現性のあるテストコード作ってみてよ
779 :
デフォルトの名無しさん :02/01/10 10:01
そのままだと長いし解り難んで、単純なコード作ってみる。 (でもGetMemで確保しFileWriteで書き込んでるだけなんだけどさ)
780 :
デフォルトの名無しさん :02/01/10 10:26
TfilestreamとTmemorystreamでやってみてどう?
>>757 >>764 >>766 色々な情報と関連する背景やキーワードやヒントや場所、
そしてソースコードまで教えていただきまして
みなさん、本当にありがとうございました。
この情報を元にさらに勉強して自分のものにしたいと思います。
感謝しています!!
782 :
デフォルトの名無しさん :02/01/10 10:55
TabControlとPageControl どちらを使えば良いのか迷っています。 わからないならとりあえずこっちを使っとけ、とかあります? それぞれの特色というかメリットとデメリットがあれば教えてください。
TabControl 全てのページに同じコントロール(というか一つ)が配置される。 A boneのスレ表示部分とか。 PageControl 各ページに異なるコントロールを配置できる。 各種設定ダイアログとか。 とりあえずTabControlの動作を確認して希望の動作でなければ PageControlを使ってみれ。
784 :
デフォルトの名無しさん :02/01/10 11:24
なんとなくイメージ湧きました。
TabControlの方がシンプル
PageControlの方がゴージャス
という感じでしょうか?
TabControlは各ページを統一して管理しやすいが
逆に制限も多い
PageControlは色々細かいこともできるが
いちいち各ページを別々に設定せにゃならんくて
面倒くさい
というイメージをしたのですが
おおよそ当たってます?
>>783 のアドバイス通りまずTabControlから使ってみます。
どうもありがとう!
>>777 どのフォルダに書こうとしてるの?
権限ちゃんと取得してる?
テスト結果ぐらいつけろ
>>784 TabControl はタブの外見だけ。ページ切り替えたときの処理は自分で書かないとだめ。
PageControl はページ切り替わったときに中のコントロールも切り替わってくれる。
789 :
デフォルトの名無しさん :02/01/12 02:26
ドラッグドロップが出来ません。 某サイトのTipsをそのままコピペしてコンパイルしましたがダメでした。 コンパイルエラーはありませんでした。 私の勘違いを指摘してください。 -------------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private 宣言 } procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin // Drag&Drop の許可 DragAcceptFiles(Handle, true); end; procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); var Count: integer; FileName: array[0..255]of Char; begin // ドロップされたファイル数 Count := DragQueryFile(msg.Drop, $FFFFFFFF, nil, 255); Caption := 'ドロップ総数='+IntToStr(Count); //ドロップされたファイル名を得る DragQueryFile(msg.Drop, 0, FileName, 255); // ドロップされたファイルを開く Memo1.Lines.LoadFromFile(FileName); // ドロップ処理の終了 DragFinish(msg.Drop); end; end. --------------------------------------------------------------------
検索していくつものサンプルを試したけど 大体同じような事が書かれているので トンでもない勘違いをしてそうなんだけど 見当がつかない~ このサンプルたちは基本の基本が書かれているだけで 単体では動かなくて実装するには別にコードを書かないと ならないのでしょうか・・・(泣)
OnCreate がちゃんとコールされているか確認してみましょう. それでも動かない場合,常駐しているソフトを1つずつ消してみましょう.
あ・・・・・う、動きました OnCreateがコールされていませんでした(大汗) ばかばかオレのばかーーーー 神様ホトケ様ねこま様ーーー テレホ内に解決できてマジうれしいです! ひと晩中もんもんとしてました。 本当に感謝いたします!!!
ListViewってメインアイテムは常に左端ですか?
>>793 メインアイテムっちゅーか、TlsitItemのCaptionで設定する項目、
ここはどうしても左寄せになるっぽい。
漏れはここに数字いれて、右寄せしてインデックス表示したかったけど、
どうしても右寄せできなくって、オーナドロー面倒になって、0で埋めた(w
>>793-794 設計時にはそのままじゃ出来ない(コンポ作らなければ)けど、
FullDragをtrueにして
SendMessageで
LVM_GETCOLUMNORDERARRAY
LVM_SETCOLUMNORDERARRAY
を使えば、いけるよ。かちゅとかでも使ってるはず。
C++でwindows.hのマクロを使えるなら
ListView_GetColumnOrderArrayとかでも可。
>>795 お、これは(・∀・)イイ!こと聞いた、サンクス。
>ListView_GetColumnOrderArray
CommCtrlをUsesしてみ、使えるよ。
@Del5ProUp1 on Win2kProSp2
>>794 うんおれも親のアイテム(?)をインデックス表示にしたいと考えてました。
でその次に実用上のメインアイテムを持ってきたかったのだけど
実際はSubItems扱いで選択もEditCaptionも出来なさそうで。
結局TListViewで可能なのはエクスプローラ詳細表示と同等なのかなと。
SubItemsをユーザー入力で編集したければストリンググリッド使うしかない
のかな?と思いはじめていました。
>>795-796 試してみます、アリガト。
TabSetのTabs[2]を消してTabs[3]をTabs[2]に…というようにして、 最後の行だけ消したいのですが、Tabの数を獲得出来ますか? というか、指定の行をすっかり消せればいいのですが・・
799 :
デフォルトの名無しさん :02/01/13 01:55
>>798 TabSet1.Tabs.Count で全タブ数。
TabSet1.Tabs.Delete(TabSet1.Tabs.Count - 1); で最後のタブ削除
Delphiの場合、TTabSetやTComboBox、TListBoxなどの各アイテムは
TStringsから派生したオブジェクトになっています。
ですので、AddやDelete、CountなどTStringsで定義されているのは使えるので
TStringsのヘルプを見て、どのようなメソッドがあるか確認してみるのが良いでしょう。
800 :
デフォルトの名無しさん :02/01/13 05:38
プリンタポートに25ピンのパラレルケーブルで接続された外部機器 (プリンタではない)をプリンタポートモードをEPPモードで制御したくて 手始めにその対象機器を制御するソフトを動作させてる裏で どういう情報のやり取りがあるのか取得してログに記録する 感じのツールを作ってみようと思っているのですが、 この用途に向いたDelphiのVCLなんて都合の良いものあります? 外部機器の制御は経験がなく基本がわかっていないと思います。 まずはここから勉強しとけ、などありましたら宜しくどうぞ。 ・AT互換PC ・Win9x(Me) です。
801 :
デフォルトの名無しさん :02/01/13 14:42
全てのクラス型に使えるような procedure SaveClass(AFileName:string; AObject:TObject); procedure LoadClass(AFileName:string; AObject:TObject); 関数作れませんか。ポインタを格納している場合は、 その実体までさかのぼって保存してくれるよな。 procedure SaveClass(AFilleName:string; AObject:TObject) var Stream:TStream; begin Stream := TStream.Create; AObject.SaveToStream( Stream ); Stream.SaveToFile( AFileName ); Stream.Free; end; とか。
TMoge = class; THoge = class Moge: TMoge end; TMoge = class Hoge: THoge; end; (´-`).。oO(となっていたらどうするんだろ)
>>801 あなた以前にもここで聞いてなかった?
できっこないよ
804 :
デフォルトの名無しさん :02/01/13 18:24
$APPTYPE が CONSOLE なときに、 標準エラー出力に流す方法を教えてください。
>>802 べつにどうにもならないと思う。
普通にコンパイルが通ってハイ終わり。
>>804 if IsConsole then
Writeln(ErrOutput, 'hogehoge');
809 :
ErrOutput :02/01/14 00:43
しらなんだ、ありがとう。 これで今夜ぐっすり寝られる。
810 :
デフォルトの名無しさん :02/01/14 00:49
if IsWet then Insert(slowly, 'yourcock');
>AObject.SaveToStream( Stream ); を if AObject is THoge then begin Stream.Write(THoge(AObject).Buffer^, THoge(AObject).BufferSize); Stream.Write(THoge(AObject).Name[0], Length(THoge(AObject).Name)); ... end else if AObject is TFoo then begin ... end else ... と直せばできるYO!
812 :
デフォルトの名無しさん :02/01/14 21:06
上位バイトと下位バイトを分割するにはどうすればスマートですか? 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00 たとえばこの0B番地のデータ4Cを4とCに分けて それぞれ別々の変数に格納するような感じ
813 :
デフォルトの名無しさん :02/01/14 21:08
あう、ズレたよ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00
814 :
デフォルトの名無しさん :02/01/14 21:09
ゴメソ。今度こそ ---- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00
815 :
デフォルトの名無しさん :02/01/14 21:11
だめだあ・・・でも意味は通じるよね?
上位"バイト"とかいうと、それはバイトより大きな単位の中の上位にある1バイトのことになるが。 16進数一桁なら上位ニブルとかいう。 で、ダンプをずらずらと書く必要はまるでないように見受けられるが。繰り返しかかれるのはうざい。 で、aに1バイト入っていて、a_hiに上位、a_loに下位を入れたいだけなら a_hi := (a shr 4) and $0f; a_lo := a and $0f; でよろし。
>>816 うざい書き方して申し訳ないでしたm(__)m
素早いレスありがとうございました!感謝します!!
あう、上位ニブルと表現しないといけないのか、勉強になりました。 おー素晴らしいーーshrってこういう時に使うのですね。 いろいろ勉強させてもらいました、重ね重ね感謝します
divで良くない?
たとえば?
div は遅いだろ
元に戻すには逆にshlすればいいの??
>>819 普通はこういうとき(bit演算)はシフト演算を使います。
ちなみにdivだと符合が考慮されてイヤーンな結果になる恐れアリ。
ていうかdivだとshrじゃなくてsarになるね
岡本さんへ。 IsConsole は、.EXE に "Console モード" のフラグを1ビットつけるだけです。 このフラグがつくと .EXE 起動時にコンソールが開きます。 このフラグはコンパイル/リンク時に確定するものなので、 プログラムがコンソールから呼び出されたかどうかとは関係ありません。 わかったかな?
MLのLogに残らないと、見た人が信じちゃって困るから、フィードバックせな。 ま、本人見てれば訂正してくれるか
>>830 そんなの義務じゃないんだから命令するな。
インターネットの情報を頭から信じると戸田みたいになるぞ。
おろ、けっこうMLとココって見る人と書く人かぶってるのね って当然か。MLの情報にはとてもお世話になっているんだけど 投げる前にすげー緊張するし退会しちゃったよ これでいいのか、ほんとにこの内容で大丈夫か、って何回も読み直してから 投げてた(ワラ
>>832 あそこは「サロン」です。技術情報メーリングリストではない。
■[サロン]の大辞林第二版からの検索結果 サロン [(フランス) salon] (1)客間。応接室。 (2)(フランスで)上流婦人がその邸で催す社交的な集まり。 (3)(ホテル・客船などの)談話室。大広間。サルーン。 (4)酒場。 (5)〔ルーブル宮のサロンでフランス-アカデミーの展覧会が開かれたことから〕 現存作家による公式の美術展覧会。 なるほど。「Delphi 談話室」メーリングリストというわけか。 それでもいいんじゃない?
こっちじゃないのか? サロン 1 [(インドネシア) saron] インドネシアの打楽器。青銅板を鉄琴のように並べたもの。一セットが一オクターブを受け持ち、四つの異なる音域のものがある。ガムランの高音部の旋律を受け持つ。
>>827 IsConsole 質問者が納得しそうだよ!?
>>836 今見た。戸田ちゃんがでてくることを(ちょっと)期待しているんだけど
このままいくかな?
元質問者は TERRY か。Delphi-ML 以外の Delphi 系メーリングリストでは
回答者側に回っているんだけどなぁ。
838 :
デフォルトの名無しさん :02/01/15 22:06
上下位ニブルではなく上下位バイト(?)に分けるのはどうするの? 6053hをリトルインディアン(?)で5360にする方法。 上のshrのレスを応用しようとしてあえなく挫折 よろしくお願いします
839 :
デフォルトの名無しさん :02/01/15 22:16
俺は最近、広場のHotkeyから目を離せないよ!!
>>838 a := $6053
b := Hi(a) + Lo(a) shl 8;
>838 swap($6053) 癖があるからhelpをみてから使ってちょ
>>839 Hotkey 本人さんですね?宣伝ご苦労様。
844 :
デフォルトの名無しさん :02/01/15 22:49
>>840 >>841 ありがとうです
shl, swap, 両方調べて使わせてもらいます
各変数に代入するなら shl
ただひっくり返すだけでいいなら swap なんですね
みんな、 Delphiでどんなものをつくっているか 簡単におしえてくれ
ファイルの先頭行を取得する関数を作りたいのですが、 下記の方法よりも速く処理する方法はありませんか? function TForm1.LoadText(FileName:String):String; var F:TextFile; S:String; begin AssignFile(FileName); Reset(F); Readln(F,S); CloseFile(F); Result:=S; end;
_________
∧,,∧ /
>>839 ミ;゚Д゚彡< おれも、おれも・・・
ミつ つ \
~ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪∪ フリー談話室で......
849 :
デフォルトの名無しさん :02/01/16 00:00
わ…ビクーリ…。お…オレも(藁
ここで、この名前が出るとは…。
前から「痛いなー… 痛いよHotちゃん…」って思ってたから
>>848 のレス見て(その先は見てなかった)、今、苦笑いと共にビクーリしてる。
なんてゆーか、「ツワモノ」って感じだよな。
何歳なんだろう?
>>847 と、言うか遅いのか?
API直呼び出しするとか。
ウザ
>>847 必要充分に速いと思うけど、どういうのを期待してるの?
ガリガリのアセンブラコード?キャッシュの効く読み込み?
853 :
デフォルトの名無しさん :02/01/16 00:08
>>847 その行の先頭に行の長さを入れておけば、
一行の取得は簡単で速くなるよ。
854 :
デフォルトの名無しさん :02/01/16 00:29
Hotちゃん、1回「すごくまともな怒られレス」返されて、 「反省してんのか?それ?」ってレス返して、しばらく自省中なのかと 思ってたら、もう新しいレスこいてるYO!ビクーリ!
MDI子ウィンドウの切り替えをWinXPで行うとスキンがちらつきますよね。 あれはどうにかして回避できないのですか?
856 :
デフォルトの名無しさん :02/01/16 00:54
win95へOSを変え(略)
Pちゃん以上のつわものとお見受けした。 彼のハンドル、「ほっとけい」から来てるのかと 思って黙殺してるのだが。
>>857 どうやら黙殺されてると思ってないみたいよ。
平気でマルチポストしてるし。
つーか、答えてほしいなら最低限、誤字は見直せよ(藁
広場ってどこ?
863 :
デフォルトの名無しさん :02/01/16 09:22
ストリームに以下みたいに書くとエラーになってしまいます。 ---------- var M : TMemoryStoream; begin M.Write($4649,2); end; ---------- 変数を経由しないで直接データを書くのは無理ですか?
参照渡しだからねえ
865 :
デフォルトの名無しさん :02/01/16 10:25
TIdHTTP を使ってプログラムを書いてるんですが、リクエストタイムアウトの 実装方法がよくわかりません。どなたかご存知の方、教えていただけないでしょうか。 Get や DoRequest を実行するとそれが完了するまでスレッドがブロックして しまうので、一定の時間で歯止めをかけたいのです。 Delphi6 + Indy8.0.25(標準添付) です、よろしくお願いします。
866 :
こだわり派 :02/01/16 18:18
実数型のRealとDoubleってどっち使った方がいいの? どっちも同じらしいが正直、気になる。
double
Real
Real はコンパイラスイッチで 6 byte 実数と 8 byte 実数に切り替わる。 6byte実数は FPU が無かった時代の遺物。 あとはマニュアル読め。その上でわからないところを聞きなさい。
Extended
ツールバーで使える 16x16 or 16x15 のサイズのビットマップファイルを 公開されているよいサイトはないでしょうか。 探し方が下手なのか、ググルで探してみてもみつからないのです。 宜しくお願いします。
873 :
デフォルトの名無しさん :02/01/16 23:24
>>866 Extended つかっとけ
VCL はだいたいそうなんだから
談話室、落ちてる? Hotちゃん…。
そのファイルがWindowsで使用中かどうか調べるのってどうやるんですか?
書き込みモードでオープンでよかったっけ? その直後に使用されたらかなわんが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538 ∧.,,∧ /
>>872 ミ.,,゚∀゚彡< ここの3よみーな
ミ つ目(ミ . \
~ミ,,O,,,,,,つ
あるフォルダに存在する拡張子のないデータ(例:アイコン) を検索する処理を行いたく PathFileExists関数を使い,検索してみたところ 拡張子がないのでそのデータがフォルダ内に 存在していても戻り値がfalse(データが存在しない)に なってしまい,困っています。 FindFirstも使ってためしてみましたら駄目でした。(T_T) 何か良い検索方法がありましたらよろしくお願いします。
>>880 アイコンって、普通、拡張子あるだろ(例:hoge.ico)?
エクスプローラの設定がまずいのかな?
エクスプローラ → フォルダ オプション → すべてのファイルとフォルダを表示する
はずしていたらごめんなさい。
>>881 それがないんですよ。
渡されたデータなんですが普通のショートカットだと
ちょっと違うみたいで・・・・・・・・
業務アプリケーション(どこかの会社の)ショートカットだと
思うのですが・・・・・・・・・・・
>>881 エクスプローラの設定はきちんとなっています。
通常Microsoft等のショートカットのプロパティを 見ると全般,ショートカット,セキュリティにタブがわかれて いますがこの業務アプリケーションの場合は全般,セキュリティ,概要 にわかれていて拡張子がわかりませんでしたが, DOSコマンドでそのショートカットを検索した所 拡張子がわかり,PathFileExistsで拡張子つきのパス名に した所うまくいきました。
PathFileExists関数って何処にあるのでしょう?
あなたの脳内にのみexists
>>885 Shlwapi.dll にあると思いますが
FileExists関数を使った方がいいでしょう
Google
>>887 どうしてFileExists関数の方が良いのでしょうか?
>>885 <shlwapi.lib> はテキストファイルではないので
#include で 取り込むことはできません。
これは shlwapi.dll を暗黙で使うためのインポート
ライブラリなので リンカに渡す必要があります。
C++Builderではリンクに使う指令があります
#pragma link "shlwapi.lib"
とソースファイル中に書くことによってリンカに
渡されます。
ただ、このままだと"shlwapi.lib"へのパスが
正しく張られていないので
[プロジェクト|オプション][ディレクトリ/条件]
の[ライブラリパス]に
$(BCB)\Lib\PSDK
を追加してください。
関数と言う響きでHELPしか確認しませんでした
>>886-888 お騒がせしてすいませんでした、逝ってきます・・・・
||←LANケーブル
Λ||Λ
( / ⌒ヽ < Delphiと思ってレスしちゃたーよ
| | Del|
∪ 亅|
| | |
∪∪
>>889 PathFileExists は LPCTSTR を渡さなければならないからです
Delphi内部で使うぶんにはAnsiStringで渡せる FileExistsが便利でしょう
TSTRを使いたい理由があるなら別でしょうけど
>>892 ありがとうございます。
勉強になりました。m(_ _)m
>>776 恐れすだけど
if (Key = #10) and (GetKeyState(VK_CONTROL) < 0) then
Key := #0;
で駄目?ssShift求めるルーチンにまんまあるんだけど。
まんまじゃないか
自己レスです。 その後、ソースコード調べてみましたが、まっとうな方法では実現不可能のようでした。 別のスレッドで時間を計ってスレッドを強制的に止めてしまうしかなさそうです。 ちなみに Indy9 ではちゃんとサポートされてました。乗り換えるとなると変更が大きく なりそうなので悩みどころです。
>>897 IdAntiFreeze は用途がちょっと違いますね。
使えば画面は固まらなくなりますが、読んだ関数から帰ってこないのは一緒
なんです。
shellTreeViewの.アイテムのTextプロパティの動作が変なのですが… 例えば、 for i:=0 to ShellTreeView1.Items.Count-1 do showmessage(ShellTreeView1.Items[i].Text+' '+IntToStr(i)); とすると、なぜかIntToStr(i)の部分が表示されないんです。(特別なフォルダだけ表示されるようですが) どうにかしてまともに動作させる方法はないんでしょうか?
900 :
そすぃんさ :02/01/18 01:03
ちょっと前にD&Dのサンプルが動かないってレスがありましたが、 便乗質問いいですか? よくネット上で紹介されてるD&Dサンプルソースの、「どのあたり(仕組み)」で、 手続きが動作するのでしょう?(意味不明ですか?) 「message WM_DROPFILES;」の所をコメントにすると動作しないけど、 宣言すると動作する…。ハテ…?
>>900 TObject.Dispatch
の
JMP ECX
では?
>>901 レス、どーもです。うーむ…。もすこし自分で調べてみます。
>>899 確認しないでコメントするが、commuinty.borland.com にある、修正パッチを
当ててからテストしたほうが吉。
>>900 動いているサンプルコードの一部をコメントアウトすると動かなく
なるのはあたりまえだろ。「message 指令」をヘルプでよく見るように。
VCLオブジェクトでメッセージを捕まえてイベントハンドラを記述する
一般的な方法だよ。メッセージ指令をコメントアウトすると、メッセージを
捕まえられなくなるので動作しないのは当たり前。
906 :
デフォルトの名無しさん :02/01/18 10:52
TMemIniFileを使って Iniファイルの読み書きをしようとしてるんですが、 書込みがファイルに反映されないケースが発生して困ってます。 いろいろ突き詰めた結果、TOpenDialog.FileName を読んだ場合にのみ 現象が再現することを確認しました。どう関係があるのかがさっぱり、、、 procedure TMainForm.OpenBtnClick(Sender: TObject); begin if OpenDialog.Execute then PathEdit.Text := OpenDialog.FileName; // *1 end; procedure TMainForm.WriteIniFile; var ini: TMemIniFile; begin ini := TMemIniFile.Create('Sample.ini'); try ini.WriteString('TEST', 'Path', PathEdit.Text); finally begin ini.UpdateFile; ini.Free; end; end; end; ↑こういったコードです。*1 の部分を通らなければIniファイルの書き込みが 成功するんですが、通るととたんにダメです。デバッガで追った感じでは両者 とも同じ道を辿っているようなんですが。。。 どなたか、こういうケースをご存知の方いらっしゃいませんか?
補足です。 TMemIniFile じゃなくて、TIniFile を使うときちんと動いたりします。 環境は Delphi 6.0 (SP1) です、よろしくお願いします。
自己レスです。
>ini := TMemIniFile.Create('Sample.ini');
の個所でファイル名指定をフルパスでやるとうまくいくようになりました。
フルパス指定しなくてもカレントフォルダとかに出来るはずだと思ってたんですが、、、
ちなみに
>>906 の *1 の個所を通らないように実行するとカレントディレクトリに
ファイルが作成されていたのですが。
よくわかりませんが、動いたのでヨシとします。
お騒がせしました。
カレントフォルダがOpenDialogで変更されちゃうというオチ?
>>908
kylixもここ?
>>909 OpenDialog で開いたフォルダを見てみたら、、、、ありました、Iniファイル。
鬱だ氏のう。。。
>ini.UpdateFile; >ini.Free; ここには誰もつっこまないのか?
はじめまして。 Formの<最小化・最大化・閉じる>ボタンを非表示にしたく Helpを引いたのですが,最小化・最大化を非表示にする方法は解ったのですが(下記) BorderIcons = ( TBorderIcons() = BorderIcons ) >> biMinimize >> biMaximize; 閉じるボタンについてを探す事ができませんでした。 どなたか閉じるボタンを非表示にする方法を教えて下さい。
>>913 こういったコードっていうから慌てて書いたんでしょ
>914 そのコードでシステムメニューを外せば閉じるボタンも一緒になくなるよ。
>916 ありがとうございます。m(_ _)m
>>913 ありゃ、そこもまずいっすか。
例外が発生した場合でも問答無用で UpdateFile するのがやばいかな。
もう少し考えます。
919 :
デフォルトの名無しさん :02/01/18 21:09
TFontをLOGFONT構造体(TLogFont)に変換する効率の良い方法は無いですかいのう? 逆ならすぐに解ったのだが・・・。
>>854 「Delphi 広場」復旧。
だれ?Hotkey に 2ch を教えた人。
玄みたいにならないといいが
921 :
デフォルトの名無しさん :02/01/18 21:52
FastnetのSMTPコンポーネントなんですが、サブジェクトで全角使うと 文字化けします。 本文は大丈夫なんですが。。。 なんか対策あります?
>>919 ちなみに逆ってどうやるのよ。
まさか各フィールドを代入すんじゃないだろうね。(笑)
CreateFontIndirect() でのハンドルを代入するとか?
解決。922スマソ。
>>923 それでやっていたら最初から質問しなかったとおもう。
逆は
Font.Handle := CreateFontIndirect(LOGFONT);
でやっているが、何か問題ある?
>>925 うん、オレもそうしてる。
問題があるとすれば、TFont のハンドルに代入しても、LOGFONT の内容が
TFont のプロパティーの値に反映されないことかな。すくなくとも、オレの時は
そうだったが。どうよ?
漏れの場合は問題なかった。 うろ覚えなので適当に再現したけど、こういう使い方をしたような。 procedure TForm1.Button1Click(Sender: TObject); var NFont:TFont; LogFont:TLogFont; begin NFont := TFont.Create; try SystemParametersInfo(SPI_GETICONTITLELOGFONT,SizeOf(LogFont),@LogFont,0); NFont.Handle := CreateFontIndirect(LogFont); Label1.Font.Assign(NFont); finally NFont.Free; end; end; ちなみにDel4Pro。
>>927 あ、そういうふうに描画だけで使うんなら、問題ないね。
Assign() で入れ替えてしまうわけね。なるほど。勉強になった。アリガト。
オレが言ってたのは
Label1.Font.Handle := CreateFontIndirect(LogFont);
の場合、もともとの Font のプロパティーにハンドルの内容が
伝わらない、ということだよ。描画はOKなんだけどね。
うん、でも Assign() だと元が free される直前にコピーがつ
くられるから、このほうがよいね。たぶん。
ついでですまんが Labe1.Font.Name 、Style、Charset なんかで
LogFont の内容とプロパティーが同じになってるか、確かめてくれ
ないかなぁ。
>このほうがよいね。たぶん。 Assign()のほうがよいね、って意味ね。
あの.. VCL ソースお持ちでは無いの? でコードを見る分にはちゃんと反映されているはずですが。 どなたか追試してみたら?929 の「問題」は存在しないことが わかると思います。
はいよ
procedure TForm1.Button1Click(Sender: TObject);
var
NFont:TFont;
LogFont:TLogFont;
begin
NFont := TFont.Create;
try
SystemParametersInfo(SPI_GETICONTITLELOGFONT,SizeOf(LogFont),@LogFont,0);
NFont.Handle := CreateFontIndirect(LogFont);
Label1.Font.Assign(NFont);
with NFont do
Label1.Caption := Name+'/'+IntToStr(Height)+'/'+IntToStr(Charset);
with Label1.Font do
Label2.Caption := Name+'/'+IntToStr(Height)+'/'+IntToStr(Charset);
with LogFont do
Label3.Caption := lfFaceName+'/'+IntToStr(lfHeight)+'/'+IntToStr(lfCharSet)
finally
NFont.Free;
end;
end;
結果
http://cgi.members.interq.or.jp/green/katu4/imgboard/img-box/img20020118231820.png ちなみにこれは家にあるDel6Personal
VBでは同種のコントロールにインデックスを付けて一緒に扱えますが、 Delphiにはそういうのあります? あれってソースの使いまわしができて楽なんですが。
>>933 ソースの使い回しはいくらでも出来ますが、どういう方法でやるかは、やりたい内容に依る。
>>933 単なるイベントの使い回しなら、このようにやる。
Label1,Label2,Label3がフォーム上にあったとする、
Label1~Label3をクリックした時同じイベントを割り当てたいとすれば、
Label1のOnClickを定義して、Label2,3にもLabel1OnClickを割り当てる。
どのLabelがイベントを発生させたかを知るには、
VBではIndex仮変数を使うところだが、Delphiでは代わりに(Sender as TLabel)を使う。
procedure TForm1.Label1Click(Sender: TObject);
begin
Form1.Caption := (Sender as TLabel).Caption;
end;
とやれば、
Label1をクリックすればForm1.CaptionはLabel1.Caption,
Label2をクリックすればForm2.CaptionはLabel2.Caption,
と同価になる。
>>931 ソース見るのさぼってたのね。すまぬ。>>特に919
SetHandle → GetFontData でまた Handle から GetObject()
して、TLogFont を取得して、それからプロパティー部分を代入
してから、FontManager に渡してるわけね。
だとすると、919 のコードのように TFont のインスタンスを
作って、それの Handle に代入してから、Assign() するより
直接、CreateFontIndirect() の 返値を Handle に代入した
ほうがよいみたいだね。うーむ。
VBの例では、 たとえば複数あるテキストボックスのフォントサイズを これまた複数の(対応する)スクロールバーで変化させる場合‥‥ Private Sub HScroll1_Change(Index As Integer) text1(Index).Font.Size = HScroll1(Index).Value あんまりいい例じゃありませんが、 配列化しておくとこの種の記述が一カ所で済むもので‥‥。
あ、書いてるうちに別のレスがついてた‥‥。
では、イベントの取得ではなく、 ループ(カウンタ)を使って複数のlabelやtextなどに対して同じ処理を一括して行う場合はどうなりますか。
>>940 インデックス参照できる用に拡張したクラスをひょいと再定義して
それを使う。
942 :
デフォルトの名無しさん :02/01/19 00:07
外部プロセスを起動して、そのプロセスの標準入出力を Stream で取り出すような ライブラリ、あるいはコンポーネントってありませんか? 結構需要があると思うんですが。。。
あれ?VB.NETじゃコントロール配列なくなるんじゃ なかったっけ?
>>940 procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i := 0 to ControlCount-1 do
if Controls[i] is TLabel then
(Controls[i] as TLabel).Caption := 'Changed!';
end;
そろそろ新スレの時期ですな。
>>938 その質問は今まで200回くらい見たきが...
∧,,∧ /
ミ ゚Д゚ミ ∫< TEditの配列作ることもできるし
.(ミ ミっ-~ \ FindComponentでもいいし
~ミ,,⊃ミ⊃
なんでもござれです。
>>946 またギコが爆弾発言して途中退場しそうだから難しそうだな。
ネタキャラなしにしようぜ。
広場の方が仮再開したようだ。Hotな活躍がまだまだ見られる。
950 :
デフォルトの名無しさん :02/01/19 01:02
どーも2ちゃんねらじゃないフリして、ここの人がHotちゃんに レスしてるよーな気がしてならない。
>949-950 お前らにはDelよりHSPのが合ってそうだな。 一回試してみろよ。きっと気に入るよ。
>951 お前にはDelよりN88BASICのが合ってそうだな。 一回試してみろよ。きっと気に入るよ。
>>950 みんな見てると思うぞ。
実際役立つTipsも有るし、ネタが有る所は見るんじゃないかな・・
俺は役立ちそうなスレ片っ端からwgetしてNamazuしてる
# 繋いじゃうと何かと無駄な時間が・・・(笑
>>950 最近のレスといえば、H と q だけど、ご両人はあそこでは古株
だろう? だれのこといってんの?
もっともご両人ともここ見てるってことはあるよな。
もうよさない?
もうやめようよ。
∧,,∧
>>948 ミ,, 彡 フサ次スレは辞めときますかねえ....
ミ ミ
ミ~,, ミ
∪ ∪
細く長く生き延びたいな...
>>957 オレはフサギコのキャラ好きだよ。
でも、このごろフサさん、忙しそうであまり出現しないんだね。
ちょっと、あのスレ、廃れ気味だよね。
がんばって、細く長く続けるのには異議なし! です。
1000
960 :
デフォルトの名無しさん :02/01/19 02:36
2バイト文字1バイト文字混在の文字列の文字数は var S : String ; I : Integer ; begin I := Length(S) ; end; てな具合ですが、バイト数を求める版Lengthってありますか?
おれのヘルプだとLength()バイト数を返す、って書いてあるけど
WideStringに放り込め
963 :
デフォルトの名無しさん :02/01/19 02:45
// 2バイト文字を2個としてカウントするのでバイト数がわかる I := Length(AnsiString(S)); // 2バイト文字を1個としてカウントするので文字数がわかる I := Length(WideString(S));
>>962 そうすると元のバイト数がわかるんですか?信じられない!
2で割ると文字数が分かるってのは知ってるが。
すみません思い込み勘違いでサンプル間違ってました。 960のコードだと961さんがおっしゃるようにバイト数が求められました。 Lengthで文字数、バイト数ともに求められたのですね。 ありがとうございました。
Delのバージョンによってヘルプは違うYO! 以前はあたかも文字数を返すような説明だった記憶が・・・
>>967 アメ公には1バイトも1文字も同じ。連中にとっては Length は“常に”文字数を返すんだよ。
>>964 MBCS / 1バイト2バイト混在文字列の場合、「2で割ると文字数」とはならないぞ
>>968 964 は 962 へのレスであることが分からんのか?
970 :
デフォルトの名無しさん :02/01/19 19:38
FlashGetでAlt+↑↓するとリストのアイテムを↑↓に移動できますが それを実現したいのですが、TListViewで配列の要素をPOPしたりPUSHしたり SHIFTしたりってどうするの?TListViewのメソッドには無いですよね?
971 :
デフォルトの名無しさん :02/01/20 22:03
>>942 自己レスです
結局 Delphian World に登録されてる「CosoleApplication リダイレクト実行ユニット」
てのを改造して使いました。
stdin, stdout, stderr を string で受け渡しできます。
後で見つけたんで使わなかったんだけど、Torry's Delphi Pages に登録されてる
「DOSCommand v.2.0」ってのも良さそうでした。
>「DOSCommand v.2.0」ってのも良さそうでした。 ソース見るかぎり全然良さそうじゃない
973 :
デフォルトの名無しさん :02/01/21 00:06
975 :
デフォルトの名無しさん :02/01/21 10:20
uses 節って unit の interface部、implementation部、両方に書けるけど どういう風に使い分けてますか? そもそもどうして2箇所に書けるようになってるんだろう。。。 混乱してます、誰かヒント下さい。
循環参照を回避できる
977 :
デフォルトの名無しさん :02/01/21 10:44
>>976 なるほど、ありがとうございます。
ちょうど 975 を書いた後に循環参照でコンパイル出来ないトラブルに
当たってたところでした。
片方を implementation部に移しても問題ない場合は循環参照を回避
できるけど、両方の unit が interface部で互いを参照しちゃってるような
場合はどうしようもないんですね。
こういう場合は同一 unit に入れとけってことなんでしょうな。
なかなか Pascal も難しい。
>両方の unit が interface部で互いを参照しちゃってるような場合 こういう場合は「自分の設計が悪い」と思い込むことにしてます。 本当に設計が悪いのかは別にして。
相互に参照しあう場合はもう一段階 抽象化するといいと思う クラスの参照なら TObjectを受け入れるようにするとか
1000
ああ、困ったねえ 1000盗鳥がやってきた。 次のスレどうするの? それとも相談室に統合? MLウオッチネタはどこにいけばいいのよ?
>こういう場合は同一 unit に入れとけってことなんでしょうな。
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~′,,,,,,,,,,ミ,,゚Д゚彡 < ちゃうがな。
UU"""" U U \_______________
>>978-979 さんでガイシュツですが
抽象化って呼ぶのかどうかしらませんが
Unit1とUnit2で同じ型やクラスを使いたいなら
新しくUnit3を作ってそこに記述するといいです。
Unit3からはUnit1やUnit2の定義は参照しないように。
フサは自作でも他作でも
interfaceのusesは汎用クラスライブラリ
implementationのusesはそのアプリだけの処理ユニット
として使い分けてます。
汎用クラスライブラリ的にコードを書くと
ソースがきれいになりますよ。
>>981 >MLウオッチネタはどこにいけばいいのよ?
マ板に作って!
1000
>>978 >>両方の unit が interface部で互いを参照しちゃってるような場合
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
>本当に設計が悪いのかは別にして。
設計が悪いかどうかは別にして、複数のユニット/クラスの依存関係が強い
ことは明らかだから、ひとつのユニットに押し込むか依存関係が強い部分を
抜き出してひとつユニット/クラスをこしらえる。
早い時期にやっておいたほうが跡で困るより楽だよ。
>>983 つくるなら、ML に特化しないスレタイトルをキボンヌ
1000
988 :
デフォルトの名無しさん :02/01/21 23:13
usesにmmSystemとwindowsは記してある // 1トラック目から最後までを再生し procedure TForm1.Button1Click(Sender: TObject); var mpp: MCI_PLAY_PARMS; begin // 再生を終えたら MM_MCINOTIFYメッセージを送る mpp.dwCallback:=DWORD(hWnd); mpp.dwFrom:=MCI_MAKE_TMSF(1, 0, 0, 0); mciSendCommand(wDeviceID, MCI_PLAY, MCI_FROM or MCI_NOTIFY, DWORD(@mpp)); end; というのをやったらhWndのところで'エラーが出ました。 カッコの部分がおかしいというのですがhWnd(???)とするのでしょうか? でもHWNDに引数はいりませんよね?
hWndってなに?Handleのこと?
>>989 コールバック用のハンドルです。
Handle: HWND~っていうやつじゃないから
手続きの外に cbHandle: THandle と定義しておいて
mpp.dwCallback:=DWORD(cbHandle); とすれば良いのですね。
>>978 >こういう場合は「自分の設計が悪い」と思い込むことにしてます。
そうっすね。Delphi、素人なんでよくわかんないんですが、クラス設計とは別に
unit設計のような作業が必要で、相互依存関係のあるクラスは同じ unit に入る
ように設計する必要があるのかなと感じています。
>>979 >相互に参照しあう場合はもう一段階 抽象化するといいと思う
手っ取り早くコンパイルを通すにはこれが簡単ですね。
俺も最初はこれをやってみました。片方の参照ををスーパークラスで定義して、
実際使う際にダウンキャストするってことですよね。
ただ、コンパイラの都合でクラス設計をいじるのは気持ちが悪い気もするです。
>>982 >フサは自作でも他作でも
>interfaceのusesは汎用クラスライブラリ
>implementationのusesはそのアプリだけの処理ユニット
>として使い分けてます。
なるほど、参考になります。
>>985 仰る通りだと思います、急がばまわれですね。
992 :
DELモナー :02/01/22 06:44
∧ ∧ / ヽ ./ .∧ / `、 / ∧ 993 /  ̄ ̄ ̄ ヽ l::::::::: .l |:::::::::: -=・=- -=・=- | .|::::::::::::::::: \___/ | ヽ::::::::::::::::::: \/ ノ
994
Hotkey995age!
Hotkey996age!
今だ!997ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
今だ!998ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
今だ!999ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
∧ ∧ / ヽ ./ .∧ / `、 / ∧ 1000 /  ̄ ̄ ̄ ヽ l::::::::: .l |:::::::::: -=・=- -=・=- | .|::::::::::::::::: \___/ | ヽ::::::::::::::::::: \/ ノ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。