1 :
デフォルトの名無しさん :
01/09/21 10:27 Windows最強の開発環境とも言われるDelphiを学びたい初心者のためのスレッドです。
超初心者的な質問でも気兼ねなくしてみよう。
でも、最低でもgoogleで検索したり、FAQページ等で探してからね。
親切な中・上級者が答えてくれる…かもしれません。
過去ログ、参考リンクは
>>2 -10
2 :
デフォルトの名無しさん :01/09/21 10:28
3 :
デフォルトの名無しさん :01/09/21 10:28
これでDelphiに関しては初・中・上級と揃ったので、 これ以上はとり合えずスレを立てないようにしましょう。 乱立と言われてしまうので。
こんなものでしょうか?スレ建て初めてなんで、不備がないかちょっと心配…。 さて、僕も初心者なので、みんなで一緒にお勉強しましょー。
7 :
デフォルトの名無しさん :01/09/21 10:42
8 :
デフォルトの名無しさん :01/09/21 10:42
早速質問…。 Delギコスレとかで話題になっている、サブクラス化ってどういうことをやってるのか皆目見当もつかない…。 「既存のコントロールのWindowプロシージャを自前のものでのっとる」ってイメージでいいのかなあ?
Kylixへの移植もできるのかな?>サブクラス化
11 :
デフォルトの名無しさん :01/09/21 11:45
Delギコの悪影響を受けないで下さい
>>8 ,9
サブクラスとコールバック関数やメッセージと関係ありません。
また、Delphiの良いところは、コールバック関数やメッセージを綺麗に隠しているところです。
新しいクラスを作った場合、メソッドやプロパティの実装に以下の方法があります。 a)クラスがクラスを持っていて、持っているクラスに処理をやらせる・・・サブクラス b)クラスを派生する(スーパークラスの処理がはじめからくっついてる) ※そんなの知ってるよっていう突っ込みなしね
「a)」のサブクラスに処理を委託する場合、 クラスのメソッドやプロパティをコールするだけで良いのです。 Windowsのメッセージを使ったりするのは、 オブジェクト指向のメリットである隠蔽を台無しにするだけです。
ここで言ってるサブクラスというのは どっちかというとフックですね 本当なら継承して作ればいいんだけど(そういうふうにVCLは出来てるけど) A->B->C->Dと継承した後に Aのところで修正しなければ出来ないような 機能を追加したくなる場合がある。 すると B,C,Dも2重に作り直さなくちゃいけ ない。 そんな時に、Aの持ってるWindowsのメッセージの流れに割り込んで(つまりフックすれば) 実現出来てしまう場合がある つまり、本当ならイベントで定義出来るようになって欲しいような機能を無理やり後付け するようなイメージかな? ただ、イベントだと設計時には反応出来ないけど、サブクラスでフックした場合は設計時に も色々と出来て便利という事
∧∧
>>11 ナンカ カンジワルー
( ゚Д゚)
∪ |
〜 つ
∪"'
誰も、全部が全部サブクラス化しろなんていってないよーだ。
使う必要がある場合に使えばいいだけっしょ。
>>14 サンクス。その通りです。
VCLのサブクラスしかしらないので、サブクラス=フック
と思ってました。ちがうのかな。
16 :
デフォルトの名無しさん :01/09/21 12:11
>VCLのサブクラスしかしらないので、サブクラス=フック >と思ってました。ちがうのかな。 サンクスじゃねーだろ!サブクラス=フックは大間違い。
オブジェクト指向用語では サブクラスは継承して出来たクラスの方の事だけど Windows用語ではメッセージフックテクニックの事を指すという理解でいいんじゃないの? というか初心者スレにはその程度の理解でいいと思うが・・・
>>16 ∧ ∧ ムカムカ
〜′ ̄ ̄(#゚Д゚)つ
UU ̄ ̄U
______∧________________
>>14 にサンクスと逝ってるのは
> A->B->C->Dと継承した後に Aのところで修正しなければ出来ないような
> 機能を追加したくなる場合がある。 すると B,C,Dも2重に作り直さなくちゃいけ
> ない。
> そんな時に、Aの持ってるWindowsのメッセージの流れに割り込んで(つまりフックすれば)
> 実現出来てしまう場合がある
こういう事を説明してくれてるからだ
で、人の間違いを指摘して言いっぱなしかよ。
つまらん煽りするくらいなら、MLに帰れ(ワラ
19 :
デフォルトの名無しさん :01/09/21 13:11
煽りじゃないんだ
>>18 派生出来ないCOMや他アプリなんかへのメッセージをフックするなら、
メッセージフックプログラミングと言えよう。
VCLのクラスをそれぞれ派生させながら、
それらにフックを持たせるのは間違ったプログラミングなんだ。
読んでる人みんなに害があるぞ。
メッセージが綺麗に隠蔽されている(処理を変える場合は、 メッセージハンドラオーバーライド)ので、 それ以外のプログラミングに専念出来るのがDelphiなのに、 このスレを見た人が間違って、 フックをコードに取り込んだらどうするんだよ。 また、これらのコード見た初心者はDelphi使わなくなるよ。
∩ ∩
| ∪ | ネコ ハ ネコ ナリニ スナオ
| 〜
| ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|( ,,゚Д゚) <
>>19 -20 おっしゃること、わからずともないです。はい。
U U \________
VCL デハ アンナ コト シテナイ ノカナ
初心者スレっぽくないので、あっちでやらニャーかい?
確かにVCLでの正しいサブクラスの使い方は WndProc を override する事だと思う サブクラスに関係なくメッセージフックは確かに便利だ。 どちらかというとC++の多重継承を動的にやる感覚だな。 でも初心者は暫く遠ざかった方が賢明なのは確かだ
23 :
デフォルトの名無しさん :01/09/21 13:25
VBからDelphi6に移行しようと勉強中なのですが、 複数列のリストボックスに値をセットするには、どうすればよいのでしょうか? // 3列のリストボックスに値を追加 ListBox1.AddItem('あああああ,いいいいい,ううううう',ListBox1); 上の記述だと、1列目に'あああああ,いいいいい,ううううう'とセットされて 2列目、3列目に何もセットされません。 | も試しましたが同じでした。 何か区切り記号が必要なのでしょうか?
>>23 AddItemを使うのなら単にバラだ書けばいいだけ
ListBox1.AddItem('あああああ',nil);
ListBox1.AddItem('いいいいい',nil);
ListBox1.AddItem('ううううう',nil);
25 :
デフォルトの名無しさん :01/09/21 13:28
自分も初心者ですが。
>>23 AddItemを何度もやればいいとかそういうことではなく?
かぶった…。スミマセン。
27 :
デフォルトの名無しさん :01/09/21 13:30
>>23 どうしても一度にやりたいのなら
ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう';
これもありかも。最初は使わない方がいいけど。 ListBox1.Items.CommaText := 'あああああ,いいいいい,ううううう' # どうでもいいけどAddItemの第二引数にデフォルト値nilを設定して欲しい。
>>24 -27
>>28 ありがとうございました、早速、試してみました。
|ああああ|いいいい|うううう|
と言う具合に表示させたかったのですが、
ああああ
いいいい
うううう
と表示されます。
リストボックスのColumnsプロパティは2に設定していますが、
他に何か設定を変更しないとダメなのでしょうか?
>どうでもいいけどAddItemの第二引数にデフォルト値nilを設定して欲しい。
ご指摘の通り修正しました。
でも、何が違うのかわからないので、後から調べてみます。
m(__)mペコリ
>30 大きさを変えてみましょう
>>31 リストボックスを縦横に大きく広げてみましたけど、一緒でした。
大きさって、リストボックスの大きさですよね。
34 :
デフォルトの名無しさん :01/09/21 14:31
おぉ、嬉しいスレができてる! ほとんどのことはGoogleればわかるけど、本当に細かいテクは 探すのが難しいからねぇ。
>>33 ありがとうごいます、できました。
ちゃんと表示されて気づいたのですが、
リストを複数列に分けて表示するものなんですね。
てっきり、Accessのリストボックスみたいに、
1データを複数項目で表示させるものかと思ってました。
>35 もしかして オブジェクトインスペクタの Itemesをクリックした事がないとか?
>>35 複数列表示するものって、もしかしてListViewのことかな?
>>36 クリックしたことがありませんでした・・・
ここに書き込めたんですね。
VBでも同じ事はできたので、最初に探すべきでした。
>>37 VBには、リストボックスの複数行表示という機能がないので、
てっきり、ListViewとリストボックスの複数行表示は、
同じ機能なのかな・・と勘違いしてました。
ListViewは、ヘルプと書籍を頼りに、
なんとか思った通りに表示させることができました。
みなさん、親切に答えていただいて、ありがとうございます。
m(__)m
何度も質問ばかりですいません。 プログラムでDBを使用する場合、 それがスタンドアロン限定であれば、DBは何を選択されてますか? VBで開発していた場合は、基本的にはAccessのMDBを選択してましたが、 Delphiユーザーの皆さんはいかがなのでしょうか?
スタンドアロン限定ならParadoxでしょう 必要なら他のも使えるけど
>>41 Delphiに付属されているからですよね?
Paradoxを基本的に使用するってことで、勉強していきます。
私が使ってる、Delphi Personalには付いてないみたいですけど・・・
43 :
デフォルトの名無しさん :01/09/21 17:23
Paradoxってまだあるの? コーレルかどっかに売ったんじゃなかったっけ?
44 :
デフォルトの名無しさん :01/09/21 17:58
そもそもPersonalではデータベースできんのじゃないの? いや、自前なら可能か?
>>44 いろいろ探しましたが、できないみたいです。
Delphiユーザーの方は、どのエディションを使われているのですか?
Delphi 6 Professional と Delphi 6 Enterprise の違いって、
大きく影響する物なのでしょうか?
46 :
デフォルトの名無しさん :01/09/21 19:24
47 :
デフォルトの名無しさん :01/09/21 19:25
48 :
デフォルトの名無しさん :01/09/21 19:35
ここ、ぜんぜん初心者スレじゃない気が… ListBoxの話くらいかなぁ。 初心者ってのは 「1.Dephiのことを右も左も分からない」 + 「2.プログラミングさえよく分かってない」 人のことじゃないかな? 2.が分かる人は自力で何とかできる知恵があると思うのだが。 めんどくさがって初心者スレで聞くと一気にレベルがあがってしまうよ。 あと、データベースの話は中・上級スレの方がいいよ。
49 :
デフォルトの名無しさん :01/09/21 19:39
>>48 Del初心者の方がDBに話を振ったのでしゃーないだろ。
>>47 すいません、そうなんですね。
どうやってできるんですか?
調べたのですが、わからなくて
>50 できないっつーの 46のリンク先見てみな
>>48 >>49 ごめんなさい
DataBaseはSQL-Serverやmdbなど色々とVBの頃に使っていたので、
Delphiではどうなのかなと思ったのでした・・・
まだ、Delphiに触れて間もないので、質問を中級とかに
あげにくかったのでした。 m(__)mすいません
>>50 oo4oとかadoは使えると思われ
DOA(だっけ?)とかはTDataSet継承してるから
Personalだと使えないのか?
この際なんで聞いちゃいますが Delphi Proに標準でついてくるデータベースはいくつかありますが それぞれ特徴、性能、利点などを比較した表のようなものは無いでしょうか?
55 :
デフォルトの名無しさん :01/09/21 20:02
>>54 いくつかって・・・
IBの他にも何か付いてるの?
>55 TTableで扱えるデータベースの形式(dBase, Paradox, ...)のことです。
>>57 ,58
かわいそうに...
も少し放置 Play !
60 :
デフォルトの名無しさん :01/09/22 00:57
でも、こんなのでこのスレが下がったらいやだな。 とりあえず上の怪しいのは使わないように。 PSネットワークが出してる「わたしにもできるDelphi初心者奮闘記」 ってのを買ってみました。 まだちゃんと読んでないけど、この本の評判はどうでしょう?
61 :
デフォルトの名無しさん :01/09/22 04:02
ListBoxのマルチカラムはTABで区切る。
62 :
デフォルトの名無しさん :01/09/22 05:09
64 :
デフォルトの名無しさん :01/09/22 17:54
新スレになったからか盛り上がりませんな。 みんな初心者卒業? それとも挫折?
だからタイトルにパソナルを入れろっての。
あまりに初心者すぎて聞くのも恥ずかしい状態なんだな。
67 :
デフォルトの名無しさん :01/09/22 20:17
>>66 それでも良いから質問しなよ。
匿名の利点を最大に。
正直何を作ればいいのかわからない
69 :
デフォルトの名無しさん :01/09/22 20:41
70 :
デフォルトの名無しさん :01/09/22 20:45
それでは勇気を出して書いてみます。 メモ帳を作ってるんですが、テキストファイルを関連付けて テキストファイルのダブルクリックで立ち上げたり、ドラッグ& ドロップで立ち上げたりできるようにするやり方がどうしても わからないんです。 ドラッグ&ドロップのやり方とかいろんなTipsを見るんですけど それを実際にどうプログラムに反映させていいのかが謎で…。
71 :
デフォルトの名無しさん :01/09/22 20:45
コンポーネントつくってDelphianWorldに載せたい。 でもコンポーネントって難しい。 なんかいい本ないですか?
糞スレ。
74 :
デフォルトの名無しさん :01/09/22 20:58
>70 関連付けやDDで開いた場合ParamStr(1)にファイル名が入ってるよ。 既に開いているメモ帳にDDした場合はまた別の処理が必要になる。
76 :
デフォルトの名無しさん :01/09/22 21:01
77 :
デフォルトの名無しさん :01/09/22 21:02
>77 コンポーネント作成するにはOOP理解してないといけないから 単純なアプリ作成とは別次元の難しさがあると思うよ。 >71 開発者ガイド読め。じゃ駄目?
∧ ∧ / ( ゚Д゚)っ < .txtへの「関連付け」と |''U ̄| \exeアイコンへのDrag&Dropと | ̄ ̄| 起動済みのFormへのDrag&Dropとは / ゙ヽ 各々別の処理が必要なのだ。 ( ゚Д゚ ) 人____ノ ・関連付け >> レジストリの設定 ・exeアイコンへのD&D >> ParamStr ・FormへのD&D >> WM_DROPFILESを使う。 こんなんでDO?
質問の書き方が悪かったみたいです。 関連づけ自体はwinのフォルダオプションで手動でするのでも かまわないんです。 テキストファイルをダブルクリックしても、その内容が 書き込まれないで白紙の状態のメモ帳が立ち上がるのを なんとかしたいんです。なんか本当に基礎のところからわかってなくてすみません。
みなさんのレスによれば、どうやらParamStrってのの使い方を まず勉強する必要があることがわかりました。 ありがとうございます、がんばってみます。
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) <
>>80 それならParamStrでしょ。
し |つ \___________
〜| |
∪∪
コンポ作成本は2冊くらいしかない ・Delphiコンポーネントプログラミング ・Delphi & C++Builder即戦力コンポーネントライブラリ 上の方はオススメ  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ∧ ∧ 開発者ガイトは難しい (,, ゚Д゚) ノつ l⌒|⌒l 〜(._⊃⊃⌒⌒
84 :
デフォルトの名無しさん :01/09/22 21:31
>>84 うわっ、本家のサイトにそのものズバリ書いてあったんですね。
調べ方がまだまだ不十分でした。ありがとうございました。
xorって何よ?
88 :
デフォルトの名無しさん :01/09/22 23:36
Form間での参照・更新について質問です。 FormAのボタンをクリックした時に、FromBのエディットボックスに 'ABC'とセットしたいのですが、どのようにすればよいのでしょうか。 (参照はそれの応用と思ってます) VBと違って、オブジェクトを参照する場合は、 必ずCreateを行うことまでは判ったのですが、 具体的な方法がわかりませんでした。
[プロジェクト|オプション]フォームの自動生成の対象にFormBを指定して procedure TForm1.Button1Click(Sender: TObject); begin FormB.Edit1.Text := 'ABC' end; ってやればよい
>>87 なるほどそういうことか。
的確な回答をありがとうございます。
91 :
デフォルトの名無しさん :01/09/23 00:02
Delphiマガジンって本があるらしいけど、 初心者でも大丈夫かな?
92 :
デフォルトの名無しさん :01/09/23 00:59
>>88 サブフォームを作るとデフォルトでは「自動作成の対象」になっているから自分で
コンストラクタを呼ぶ必要はないよ。
「選択可能なフォーム」にした場合は次のように作ります。
// Application に破棄させる場合は
FormB := TFormB.Create(Application);
// 自分で破棄するときは
FormB := TFormB.Create(nil);
のような感じ。Application のところはメインフォームなどでもOK。
当然 var FormB: TFormB; をどこかで定義しておく。
93 :
デフォルトの名無しさん :01/09/23 01:09
94 :
デフォルトの名無しさん :01/09/23 02:35
作ったアプリケーションの設定をiniファイルに保存する方法で詳しく書かれているHPを教えてください。 初心者です。
95 :
デフォルトの名無しさん :01/09/23 02:38
96 :
デフォルトの名無しさん :01/09/23 02:51
>>94 初心者かどうかしらんが,保存したいアプリケーションの情報が何か
わかっているんだろうな?
97 :
デフォルトの名無しさん :01/09/23 03:52
オンラインヘルプで TiniFile を調べなさい。
>>94 自分で試しもしないで質問するのはだめな人間です。
少年よ、己から切り開け!
______ __________ / / . | / ∧_∧ / /. |< おはようモナー ( ´∀`;) / | \__________ | つ__/ | ┏(_ ヽ ──┐ │ ┗┳┛ ノ │ | ┴ ~└──┴─┘ >94 ヘルプ見るだけじゃかわいそうだからちょっとだけヒントを教える。 uses inifiles; ini:=TINIFile.Create('c:\ore.ini'); 読み込み ini.Read?????(); 書き込み ini.Write?????(); ini.Free; Read????の????の部分は置き換えてくれ。 ヘルプ見ながらガンバレ
99 :
デフォルトの名無しさん :01/09/23 09:29
100 :
デフォルトの名無しさん :01/09/23 10:08
>>97 そんなせこい事言うな。
ここは初心者スレ。おまけにアマが殆ど。
基本的にヘルプを使えるレベルではないと心得るべし。
101 :
Delモナ :01/09/23 10:30
>>マターリ101 サンクソ、登録した世 今日からオイラはdelマスターだ
103 :
INIファイルの使い方 :01/09/23 12:29
>>94 まずはUnit1.pasと同じディレクトリにMyLib.pasというファイルを作る
↓↓↓ここから
unit MyLib;
interface
uses
Windows, Classes, SysUtils, Inifiles;
var ini: TInifile;
implementation
initialization
// exeと同名のINIファイルを作成
// 例: 'c:\myapp\project1.exe' -> 'c:\myapp\project1.ini'
ini := TInifile.Create(ChangeFileExt(ParamStr(0), '.ini'));
finalization
ini.Free;
end.
↑↑↑ここまで
よく使うコードはどんどんMyLib.pas(名前は何でもいいけど)に放り込んでいけば
同じコードを何度も書かずにすむので楽になるよ。
で、これをフォームから呼び出す。
これはフォームの座標(Left, Top)とEdit1の内容を保存するサンプル。
↓↓↓ここから
unit Unit1;
interface
(中略)
implementation
uses
MyLib; // iniを使用可能にする
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
// INIファイルから読み出し
Left := ini.ReadInteger('Form1', 'Left', Left);
Top := ini.ReadInteger('Form1', 'Top', Top);
Edit1.Text := ini.ReadString('Form1', 'Edit1', Edit1.Text);
end;
procedure TForm1.FormHide(Sender: TObject);
begin
// INIファイルへ保存
if WindowState = wsNormal then
begin
// 最大化・最小化時は保存しない
ini.WriteInteger('Form1', 'Left', Left);
ini.WriteInteger('Form1', 'Top', Top);
end;
ini.WriteString('Form1', 'Edit1', Edit1.Text);
end;
end.
↑↑↑ここまで
104 :
Delモナ :01/09/23 12:47
∧_∧〃つ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)/ < 良スレの予感だモナー ( つ / \_____ | ⌒| | (__) (__)
105 :
デフォルトの名無しさん :01/09/23 14:24
94です。 答えてくださった皆さん、お返事ありがとうございます。 初心者スレとうたっておきながら、質問したら、ヘルプを読めというのは筋違いではないでしょうか? そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・
>61 その程度なら固定長配列&力技=コピペで十分 クラスbとbのインスタンス管理クラスを分けてもいいかも
調子にのんな>94 ここは初心者用スレだが厨房用のスレではない事を知れ、屑厨
>>94 λ
( ヽ / ̄ ̄ ̄ ̄ ̄
( ゚Д゚ )< Rubyはクソです。ゴミ箱逝きです。 いじょ
(____) \_____
ヽ(´ー`).ノ
( へ)
く
- = ≡三 λ
_ = ≡三 ( ヽ / ̄ ̄ ̄ ̄ ̄
(´ー`) = ≡三 ( ゚Д゚ )< この発言をコピペしていただければ幸いです。
( ヽ ヽ) - = ≡三 (____) \_____
/ > - = ≡三
109 :
デフォルトの名無しさん :01/09/23 15:10
そのような回答をしていると、このスレッドの存在する意味がないと思うのですが・・・
どうせ105は騙りでしょ。 ・・・本物だったらどうしよう
111 :
Delモナ :01/09/23 15:35
‖ ∧‖∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( -д-) < そんなにみんな怒るなモナー |''''''''''''') \____________ (( |∪| ∪ )) (_)_) >94 わざと人を逆上させるような事を言うのはやめなさい。 と言うか、もっと高度なことを答えたいと言うこと。 TIniFileも、Yahoo!で検索すれば大量に解説ページが出てくる。 自分で調べても分からない場合に聞くべき。 そういう意味では、自分で調べていない94の質問には「ヘルプ見ろ」 としか言えない。 俺はちょっとヒントをあげたけどね。 さあ、どんどん逝こう
こんな事でアゲるな。バカ。 どの製品にもついてくるヘルプに載っていることは質問するな。 「ヘルプを読め」と罵倒されるだけありがたいと思え。 2ch でちまちま説明するより、ヘルプをまとめて読んだ方が理解が早いはずだぞ。 どの分野でも、ある程度の基礎知識の存在を前提にしないと、毎度用語から説明しなきゃ いけなくなる。そんなことをしたくないし、する義務もないから、最低限ヘルプは眺めろ。 質問する前にざっと読め。 Ini ファイルやレジストリの存在を知らないのであれば、勉強不足と罵られても仕方はないが 誰かが「Ini ファイル/レジストリを調べろ」といってくれるよ。そしたらそれを調べろ。 ここは Delphi 初心者用ではあるが、教えて君部屋ではない。
∧ ∧ (,,゚Д゚) マターリ イコウゼ (| |つ 〜| | ∪∪ 「初心者です。詳しく教えてください」というセリフは どんな分野でもかなり嫌われるのでヤメレ 詳しく教えて欲しいという甘えを回答者に押し付けるような 感じがするのだ。 見知らぬ人間に、1〜100まで教える人はいないからね。 「初心者です、パソコンの購入方法教えてください。 パソコンのプロになれるまで詳しく教えてください」 って質問されたら誰だってイヤだろ? だから折れは他言語/他ツールBBSで質問するときは 絶対自分の事を"初心者です"なんて言わない。 質問している以上、自分が初心者だろうが初心者であるまいが 適切な回答なら理解できるから。 TIniFileって聞いたら、そのHELPは読もう それで、更に調べて「こうしてみましたが正しいでしょうか」と聞くとよろしい 元から初心者スレなんだから、初心者を表明せずとも 適度に質問するとよいでしょう。
Borland Delphi Personal「超」初心者なんでも教えてクレクレスレ がひつようだな
>どの製品にもついてくるヘルプに載っていることは質問するな。 ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ @' ― (,,゚Д゚) < それは言い過ぎだろう。 し― し-J \___________ イクラナンデモ >「ヘルプを読め」と罵倒されるだけありがたいと思え。 ナンデヤネン 罵倒されて喜ぶならマゾだろう。罵倒する方はサドか? MSDNに載っていることは質問するなとか ヨノナカに出回っている本にスコシでも書いている事は質問するなとか webに掲載されちる事はたとえそれがスワヒリ語の資料だったとしても質問するなとか そんなん言われたらイヤだな。 人によって、作れるものにもスキルの限界があるが 同じように調べることの出来る資料にも限界がある。 Halbow氏あたりに"DOM"の一言で済ます どこぞのダレカみたいには成田区内。 ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜''~(;゚Д゚) < しかし、なんで2chでこんな事かいてるんだ? UU'UU \________ ヒトトシテ ジョウシキノ ハンイデ ハナソウヤ ジンセイ ノ ショシンシャ ダッタラ ヤダナ
116 :
デフォルトの名無しさん :01/09/23 16:16
>>103 それをコンポーネント化すればもっとスマートになるよね。
コンポーネント仕様例)
・ini ファイル名は ParamStr(0) を元に拡張子を ini に変えたものにする。
・1フォームあたり1コンポーネントまでに制約。
・このコンポーネントを置いたフォームのデータは自動的に ini ファイルに保存・復元する。
・ウィンドウ位置、サイズ、表示状態など TForm 共通のデータをコンポーネント側で管理する。
・各フォーム固有の情報は OnFormLoad, OnFormSave みたいなイベントハンドラでやる。
ini ファイル例)
Project1.ini (Project1.exe の)
-- begin --
[Form1]
BoundsRect=10,10,100,100
WindowState=wsNormal
...
Form1CustomDataA=...
Form1CustomDataB=...
...
[Form2]
BoundsRect=20,20,200,200
WindowState=wsMinimized
...
-- end --
・当然アプリで他のセクション名も自由に扱えるようする。
ってな感じでどうよ?
説教くさい2ちゃんねらーは氏ねといいたい ウザかったら無視してりゃいいだろ
( ̄) ̄) / / / | ∧○∧ ゴォー | ( ´∀`) ー ∪ ∪ ー | ̄ ̄/ ー @─@ Del初心者のみんなはちゃんと調べてから質問しようモナー >116 DelphianWorldにIniFileのコンポーネントなかった?
120 :
Delギコ :01/09/23 16:39
∩ ∩ / // / | 〜 | ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ゴォー. |(,;゚Д゚) < にゃ・・・にゃーー ー U U \________ ー | ̄ ̄/ ー @─@ >DelphianWorldにIniFileのコンポーネントなかった? TEditorの作者の方のかな。使いやすそうだけど TIniとかTRegIniって ソンナニ面倒じゃないから使ったことない。 >・このコンポーネントを置いたフォームのデータは自動的に ini ファイルに保存・復元する。 沢山のFormを管理するときは非常に便利そうだね。
>>118 このくらいのコンポーネントなら特に難しくはないから、
まーどこかにゃあるだろうな。
「クラスの作りからは知っているけど、コンポーネントの作り方は知らない」
ってような人には勉強がてらやってみたらいいんじゃないかい。
122 :
Delモナ :01/09/23 17:15
四 | ∧_∧ 四 / ̄ ̄ ̄ ̄ /非L+( ´∀`) | < おばんですモナー |∞ / 〒 \|つ \____ 〕〔 U ‖ | | / 〕 /_‖_| | >116 確かに、練習用には良いかもね。コンポーネントって自分で作るようになると 色々応用範囲広がるし、何より楽できる。 ノートPC欲しい今日この頃
―――――――――――――――――――――― 番組の途中ですが、臨時ニュースです。 「Rubyはクソです。ゴミ箱逝きです。 いじょ 」 この発言をコピペしていただければ幸いです。 ___________ __________ ‖ \|________ ‖ | ON AIR.| ‖  ̄ ̄ ̄ ̄ ./ ̄ ̄θ Λ_Λ .../ //(´∀` )/| ./  ̄/⊂ ||_/ | ̄ ̄ ̄ ̄ ̄| ( ━┳┛ |_____| /ヽ」┘┻
>>116 >それをコンポーネント化すればもっとスマートになるよね。
公開はしていないけど実はもう作ってたりして。
それ使うと
>>103 のサンプルコードはこう書けるようになる。
procedure TForm1.Inifiler1Synchronize(Sender: TObject);
begin // 読み書き兼用イベントハンドラ。[Self.Name]セクションにアクセス。
with Inifiler1 do begin
Sync(Self); // Form1の形状保存
Sync([Edit1, Memo1, CheckBox1]); // それぞれ適切に保存
MyValuel := Sync('MyValue', MyValue); // Integer, Stringなど
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Inifiler1.LoadFromFile; // 読み出しモードでInifiler1Synchronizeを呼ぶ
end;
procedure TForm1.FormHide(Sender: TObject);
begin
Inifiler1.SaveToFile; // 書き込みしモードでInifiler1Synchronizeを呼ぶ
end;
125 :
デフォルトの名無しさん :01/09/23 20:24
―――――――――――――――――――――― 番組の途中ですが、臨時ニュースです。 「Rubyはクソです。ゴミ箱逝きです。 いじょ 」 この発言をコピペしていただければ幸いです。 ___________ __________ ‖ \|________ ‖ | ON AIR.| ‖  ̄ ̄ ̄ ̄ ./ ̄ ̄θ ∧_∧ .../ //(´∀` )/| ./  ̄/⊂ ||_/ | ̄ ̄ ̄ ̄ ̄| ( ━┳┛ |_____| /ヽ」┘┻
126 :
デフォルトの名無しさん :01/09/23 21:14
127 :
デフォルトの名無しさん :01/09/23 21:29
こんなプログラム作ったんですけど・・・ // 行番号(0から)を入力してボタン1を押したらその行を選択する procedure TForm1.Button1Click(Sender: TObject); var i,len: integer; col: integer; // ←目的の行番号 begin len:=0; col:=StrToInt(Edit1.Text); // ←行番号はEdit1で指定 for i:=0 to col-1 do begin len:=len+Length(Memo1.Lines[i])+2; // ←改行の分(+2) end; Memo1.SetFocus; Memo1.SelStart:=len; Memo1.Perform(EM_SCROLLCARET, 0, 0); Memo1.SelLength:=Length(Memo1.Lines[col]); end; Memo1.WordWrap=Falseならばこれで行の選択ができるが、 Memo1.WordWrap=Trueのときで一行が折り返されて複数行になるときにうまく選択できません 何か良い方法ありますか?
スペースが消えて見にくくなってしまいました すみません。
129 :
Delモナ :01/09/23 21:56
みなさんこんばんわんこそばモナー \________ _____/ ┏━┓ |/ ┛━┗ ( ´Д`) (]づ∀´]つ / / :ヽ| ´(__)_) 盛岡に行ってわんこそば食おうとしたら大渋滞に巻き込まれて 行けなかった過去がアル >127 Memoだと問答無用で行を切られるのでたぶんムリ。 RichEditだと大丈夫じゃない?やってないから分からないけど。 >126 やっぱり一々、TreeViewのアイテムを見ていくしか方法は無いかも。 速度的に問題が無いのならこのまま行きましょう。 俺としては、このルーチン以外でやる方法は思いつかないが。
>>129 > 速度的に問題が無いのならこのまま行きましょう。
うーむ、やはりそうですか…
結構悩みどころなんです。
Win3.1 タブの FileList や DirectoryList を使うと
簡単に、高速に実現できるのですが、ユーザにとっては
使いにくいUIです。
ShellTreeView を使うこの方法だと、UIは非常に
分かりやすくなるのですが、パスを指定してから
フォルダが開くまでのタイムラグが…
131 :
Delモナ :01/09/23 22:19
○ | \ [二二二] γ⌒ヽ(λ´∀`) 、∞ / ∩3\,,,,/[]つ□□ | Y__:_) \_〔__)__) サンタモナー。ボランティアでサンタやったことあるモナー。泣かれたモナー。 >126 ウィンドウズが用意しているものは結局遅いです。汎用性が高い分だけ速度が犠牲に。 自前で処理を書いちゃったほうが速くて使い勝手も作りこめば良くなります。 まあ、大変ですが、そこまでやる必要性があれば、やったほうがよろしいかと。
TSellTreeView使うとエラーがでるんですけどなぜですか?
>>129 回答ありがとうございます。
TMemo以外で試してみます。
134 :
デフォルトの名無しさん :01/09/23 23:28
エラーって、どんなメッセージがでるの? それを書かなきゃ相手にされないYO、YO、YO チェキラ
未定義の識別子だろ(藁
>>134 ObjctTypes読み込みエラー:プロパティが無いって言われるYO!
137 :
デフォルトの名無しさん :01/09/24 00:16
>>136 Sage る必要を感じないが...
TShellTreeView の間違い。ってつっこみはおいといて。
コンポーネント貼るだけでエラー?実行時?
138 :
デフォルトの名無しさん :01/09/24 00:16
>136 パッケージをインストールしていないって事か?
139 :
Delギコ :01/09/24 00:26
∧ ∧ /
(,,゚Д゚) <
>>126 ごめんね。
|⊃ ,⊃ \
〜| | ワルギハ ナインダヨ
∪∪
ヤッテミルカ
今だ!!140ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
Rubyはクソです。ゴミ箱逝きです。 いじょ  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
この発言をコピペしていただければ幸いです。  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
143 :
デフォルトの名無しさん :01/09/24 01:30
ブラウザ(あるいはダウンローダ)をデルファイで作る時に参考になる ページ、御存知無いですかね。
144 :
デフォルトの名無しさん :01/09/24 01:38
>>143 実戦あるのみ。
TWebBrowser と、その Navigate メソッドを参照のこと。
あ、「ブラウザはIE使ったりする方向で」って書くの忘れた…。
とりあえず、ありがとうござんす
>>146 ネスケって、まだ支持されてんですかね?
アレ作ってるとこって収入あるのかなぁ?
148 :
デフォルトの名無しさん :01/09/24 02:00
キーボードの入力をフックするのって、サブクラスかしないとだめ? っていうか、サブクラス化って何?
別にフック使えばいいのでは?
150 :
デフォルトの名無しさん :01/09/24 03:33
151 :
デフォルトの名無しさん :01/09/24 05:23
Delphi入門者にとっては入門書の存在しないDelphi6 Personalよりも 入門書から詳細なリファレンスまで出揃っている Delphi5 Learningの方が価値が高いのではないかな。 なのでBorland JapanはDelphi5 Learningの無償ダウンロードを検討すべきだね。
>>151 入門レベルなら、5でも6でも大差ないのでは?
それにしても Listbox1.Items[Listbox1.itemindex]; ってやるのが冗長だと思う。 Listbox1.selectedItem; とかにならない物だろうか もう一個のリストと比べるときに index:=Listbox1.Items.IndexOf(Listbox2.Items[Listbox2.Itemindex]); こんなコード見ていると頭が・・・ 誰か簡略化できるんなら教えてください・・・
154 :
Delモナ :01/09/24 07:13
∧_∧! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ __( ;´Д`)__< お、おはようモナー | 〃( つ つ | \_______ |\ ⌒⌒⌒⌒⌒⌒\ | \ \ \ |⌒⌒⌒⌒⌒⌒| \ |______| 夜はちゃんと寝ようね。健康に悪いぞ。 >151 D5とD6もほとんど変わらんが。D6の方が新しいから良いと思うが。 ネタ? >153 俺もそんなながーく書いている。 簡略化も何も、ぜんぜんマシじゃない? もっとヒドイのもあるぞ。たとえばこんなのとか。 BitBlt(BackImage.Canvas.Handle,X * 32, Y * 32, X * 32 + 32, Y * 32 + 32, TempImage.Canvas.Handle, ChipPos[ChipData[x, y]].X * 32, ChipPos[ChipData[x, y]].Y * 32,SRCCOPY); 32をrとか置いてやれば良いとは思うが、それでも長い。 複雑怪奇になるのは仕方ない。見やすいようにスペース入れるなり工夫すれば良いんじゃない?
つうかBorlandって会社なのか? 何かんがえてんだ?
156 :
ななしヘタぐらま :01/09/24 08:08
>>153 たしかにSelItemとかいうプロパティ,あってもいいですね.
TreeViewやListViewにはあるのに….
私だったら数行に分けてでも見やすくするほうを選ぶと思います.
>>89 教えてもらったとおりに、自動生成の対象にして
コーディングしたのですが、
「未定義の識別子:Form2」とコンパイルエラーが発生します。
他に何か原因があるのでしょうか
158 :
デフォルトの名無しさん :01/09/24 11:04
>>157 あれ?
コンパイルする時に
「未定義のForm2を参照しています。追加しますか?」
みたいなの出なかった?
159 :
デフォルトの名無しさん :01/09/24 11:51
>>153 with ListBox1 do
Hoge := Items[ ItemIndex ];
いやそれより SelItem を自分で追加した方が早いかもね・・・ まだ初心者でそこまで手が回らないなら関数を作りましょう function GetListSelItem( list : TCustomListBox ) : strings; begin if list.itemIndex <0 then abort; Result := list.items[list.itemindex]; end;
161 :
デフォルトの名無しさん :01/09/24 14:46
汎用にするのはヘタレだからこんな方法しか思いつかないけど function GetSelItem( list : TObject ) : string; begin if list is TCustomListBox then begin if list.itemIndex <0 then abort; Result := list.items[list.itemindex]; end; end; たしか、プロパティにItemIndexがあるかどうか検索してくれるようなのが無かったかな?
162 :
Delギコ :01/09/24 15:06
uses に TypInfo を追加して procedure TForm1.Button1Click(Sender: TObject); var i : integer; p : PPropInfo; begin for i := 0 to ComponentCount - 1 do begin p := GetPropInfo(Components[i].ClassInfo,'Caption'); if P <> nil then ShowMessage(Components[i].Name); end; end; ∧ ∧ /あるけど、お勧めしないです (,,゚Д゚) < 各クラス別に書いた方がよいかと・・・ |⊃ ,⊃ \ @| | ∪∪
163 :
デフォルトの名無しさん :01/09/24 18:25
日ソフの「Delphiへおいでよ!」が来月で終わるそうだ。 付録にもD6パーソナルは付いてなかったし、 どうも日ソフはDelphiを相手にしてないようだ。 これで各雑誌ともDelphiの連載は壊滅? どこか新たな連載始めるだろうか?
164 :
デフォルトの名無しさん :01/09/24 20:42
雑誌の Delphi 記事って全然役立たない内容ばっかだよね。 もっと1つ1つ実用性がある内容にしてほしいよ。 実際に雑誌みて参考にしている人っているのかな?
165 :
デフォルトの名無しさん :01/09/24 20:53
>>164 ページ数が限られてるのが問題なんでしょう。
また、プロ・上級者とアマ・初心者では「役立つ」レベルが違うので
難しいところ。
まだまだ貧弱な俺は「ふ〜ん」という感じで読んでる。
たまに「ほぉー」とか「へぇー」というのもあるけど。
166 :
Delモナ :01/09/24 21:08
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |\´ー`)/| < もっとデルファイの良さを知ってもらうモナー ○ \/ζ ○ \__________ | |旦 | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | どうしても知名度が低いから資料も少なくて連載もあんまり無いんだろうね。 俺もライブラリとか公開してるけど、そんなにたくさんは採用されていないし。 VBの限界を悟った人が大量に流れ込んでくることを期待age
167 :
デフォルトの名無しさん :01/09/24 21:13
Delphi使ってる人って新しい言語とかコンパイラを作れるの?
168 :
Delモナ :01/09/24 21:26
( ̄ ̄) ̄) | | | ( ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ < ネタかモナー? (υ´A´ )フゥ \____________ U U >167 別にデルファイ使っていなくても、作れる人は作れます。 俺も勉強してコンパイラみたいの作りたいよ。 ネタにマジレスはイヤだなあ。
いやネタじゃなくて、 Delphiプログラマーって 開発環境に頼りきったGUIプログラミングしか出来ないの? それじゃVB厨房と同じだね。
VC使っててもgcc使ってても開発環境に頼らざるを得ないと思うけど。 まさかGUIライブラリを一から構築しなきゃいけないとでも?
デルファイってプログラミングというより オーサリングやビルディングって感じだよな
メモ帳でpasファイルを書いてコマンドラインからコンパイルすればご満足? 苦行みたいだね。
173 :
Delモナ :01/09/24 21:39
∧ ∧ ==∧ ∧ ● ´∀`)==●) 〃==゚_●)=◎ | |=● =● ==つ =∪ (_)_) =● =⊂ ==∪ 167は煽り。無視進行で
>>167 は機械語が完璧に使えるのか。
すげえな。
175 :
デフォルトの名無しさん :01/09/24 21:56
前からデルファイ使ってる人は少なくともVB房のように 周りに流されないし、選択する目を持っている人です。 なんでVBにしたの?と聞けば 「使ってる人が多いから」とくるからね。
VBと対決してもフレーム合戦になるだけで不毛なので終了。 俺はVB、VC++、Delphiどれも使ってるし。
開発環境に頼り切らない方法も使えるし、非GUIもできるなんて みんな知ってる。アホがあおっても無駄。
178 :
デフォルトの名無しさん :01/09/24 22:04
Personal使ってみてるんだけど。 これってUDP使うコンポーネントってないの?
179 :
Delモナ :01/09/24 22:10
どうしてもコンパイルがとおらね〜。と思って見返したら、 for i = 0 to 10 なんて書いてた。鬱。エラーメッセージわかりにくいよう。
>179,180 おお、サンクス。早速見てみるわ。
あれ?Personal って Indy 入っていないんだっけ?
>>178 , 180
185 :
デフォルトの名無しさん :01/09/24 23:54
178,180じゃないけど。 入ってないと思う。 Personalインストールしたての勉強したてのホヤホヤ君だけど。
186 :
デフォルトの名無しさん :01/09/24 23:56
入ってないから言ってるんだろ178と180は。
TClientSockがあったような
188 :
デフォルトの名無しさん :01/09/25 00:00
>>178 Personal 使うということは Delphi ビギナーですね。
WinSock 使いましょう。
おれは Delphi 党だけど WinSock 使ってる。
189 :
Delphi ビギナー :01/09/25 00:04
>>188 Delphiで、WinSock使う場合、詳しい解説があるページ知りませんか?
191 :
Delphi ビギナー :01/09/25 00:10
>>190 うわー。まさにバッチリなページっすね。ありがとう!
つーか、検索すれば良かったな…。スマソ。
192 :
デフォルトの名無しさん :01/09/25 00:34
>>189 別に C 使った解説書とかで充分です。Pascalに置き換ればいいから。
ちなみにお勧め書籍は、
基礎系)
・WinSock による Windows ネットワークプログラミング (ISBN4-7561-1609-4)
・インターネットのための WinSock プログラミング (ISBN4-7741-0371-3)
ともにC/C++サンプルあり。
応用系)
・インターネットプログラミング (ISBN4-88135-305-5)
これらは WinSock 1.1 まで対応のため 2.2 の機能が使いたければ他書も必要です。
(1.1 で充分だと思うけど。)
・WinSock 2.0 プログラミング (ISBN4-7973-0688-2)
以上はおれ自身が持っているもからだから他にも良書があるかと思います。
ちなみに Delphi で WinSock を使う場合は WinSock ユニットを uses させます。
ただしこれは WinSock 1.1 のインポートユニットだから、2.2 の機能を使いたければ
C のヘッダファイルを元に自分でインポートユニットを作成する必要があります。
探せばネット上のどこかにあるとは思うけど。
193 :
Delphi ビギナー :01/09/25 00:41
194 :
デフォルトの名無しさん :01/09/25 15:00
「はじめてのDelphi 技術評論社」を一通り終わったあと 次に読むべき書籍はどのようなものが良いんでしょうか。 塚越氏の残り2冊の続編はどこを探しても無いみたいですね。 ヤフ億でもかなりの高値がついている様子。。。。。 書籍に関しては他スレで書籍ランキング等にリンクがされていて そちらも覗いたのですが、いまいち現状に合うものが分かりません。 アドバイスをお願いします。
195 :
デフォルトの名無しさん :01/09/25 16:51
TStringList 内にある任意の文字列のある行を探したいのですが ヘルプを見るとIndexOfは完全一致だそうで。 「部分一致を検索するには自分で文字列リストを繰り返し処理する 必要があります」 の意味がよくわかりません。 具体的にどのようにしたらいいのでしょうか?
196 :
デフォルトの名無しさん :01/09/25 17:24
>>194 自分の作りたいものに挑戦するべし。
何を作ったらいいか分からない、というのであれば、
TIPS本で色々な動作を試してみるのがよいかと。
197 :
デフォルトの名無しさん :01/09/25 17:44
OutputDebugStringの出力先はどこですか?
199 :
デフォルトの名無しさん :01/09/25 17:56
>>195 一行一行Pos関数使って調べろ、って事では。
>>195 for i := 0 to Mylist.count - 1 do begin
if AnsiPos('moji',Mylist.strings[i]) > 0 then begin
// 当たり
break;
end;
end;
こんな感じで自前でチェック白ってことかな
Personalにないんですが...
>>200 まさか本当にそうだとは。
ありがとうございました。
204 :
デフォルトの名無しさん :01/09/25 18:25
n := AnsiPos('moji',Mylist.text ); って得られらた n から EM_LINEFROMCHAR みたいに行位置が判ったらチョット便利かな?
>表示−デバッグ−イベントログ ないのはこっちです
>>204 Copy(MyList.Text,1,n)してMyList.Countするか
#13を数える
GExpertsのDebugWindowは? っていうかこっちもPersonalじゃ使えんのか・・・
208 :
初心者マン :01/09/25 23:27
なんで「:」を付けさせるの?「=」の前に。
>>208 いくらなんでもそれはないだろ
ヘルプ嫁ヘルプ嫁
210 :
デフォルトの名無しさん :01/09/26 00:13
>>209 そんなのヘルプに出てるの?
「代入文」の説明とかはあっても、
「:」をつける理由は書いてないような気がする。
なんで?と聞かれると区別するため、としか・・・
211 :
デフォルトの名無しさん :01/09/26 00:17
そういうの言い始めるときりないので、そのまま受け入れること。 C で = と == のように使い分けているのと同じだし、じゃ比較を == に したのはなぜ? といわれても、そう決めたから。としかこたえられまい?
212 :
初心者マン :01/09/26 00:21
そーそー。「決めたから」が答えだとは思うけど、 何かあんのかなー?と思ってね。
213 :
デフォルトの名無しさん :01/09/26 00:26
:= は数学界でも使われていたと思いますが。
214 :
デフォルトの名無しさん :01/09/26 00:28
:=は金物(私語)表現だろふ。 アルゴル系言語は印刷物上では→とか↑とかASCIIでない 記号を使うのだ。
どうもです。
216 :
デフォルトの名無しさん :01/09/26 00:48
何がだ(藁
217 :
デフォルトの名無しさん :01/09/26 01:07
インストールしたコンポーネントって削除出来ないの?
[コンポーネント|パッケージのインストール]でパッケージを削除するか、 パッケージ編集で目的のコンポーネントを削除して再構築。
219 :
デフォルトの名無しさん :01/09/26 01:13
タイマーセットしてカウントダウンさせたいんだけど その時間を表示させるにはどうしたらええの?
メーリングリストのカコログ見てたら マッサージや家事をやってくれるプログラムを作ろうとしている人 がいたんですができるんですか?
222 :
デフォルトの名無しさん :01/09/26 03:49
>220 10, 9, 8... でいいの? >221 インターフェースが用意されていれば出来る。
223 :
デフォルトの名無しさん :01/09/26 05:35
>>222 ういっす。
羅面大麻を作ろうかと。
ご教授お願いしまっす。
224 :
デフォルトの名無しさん :01/09/26 06:10
>223 TTimerでIntervalを1000にセットする。 OnTimer イベントで、Dec(残り時間(秒))し、 ラベルにでも残り時間を表示すれば良いのでは?
225 :
超初心者X :01/09/26 06:47
Delphiの開発環境はEDLINより使いやすいでしょうか? みんな、同じようなもんだって言ってますけど?
どうもです。
227 :
Delモナ :01/09/26 07:00
228 :
超初心者X :01/09/26 07:08
Delモナちゃん、もうすこし話広げてくれよ。 でも、厨房グラマが1日で作れるような メモ帳なみエディタって・・・Delphiキモ-イ
そんなIDEのエディタがなんて最高でなくてもさ、 初心者から上級者まで満遍なく トータルで 大きなストレスなく使える環境だって事が肝心だと思うよ とりあえず 編集+コンパイル&goがストレスなく出来れば十分さ
copy con でやってた身としては EDLIN は衝撃的な使いやすさだったが何か?
>>231 ネタだろ CP/MならED MS/DOSならEDLINは最初からあったじゃん!
EDITマンセー とりあえずあおりは無視の方向で
234 :
デフォルトの名無しさん :01/09/26 11:22
>>218 確かにコンポーネントの削除は初心者にはわかりづらい場所にあるな。
それと削除したいコンポを選択して削除すると普通は思ってしまう
ところが、何故かわざわざ削除画面が別に出てそこで新たに選択しなくては
ならないのはUIとして適切でないと思う。
あそこら辺は改良したほうが良いと思われ
>>確かにコンポーネントの削除は初心者にはわかりづらい場所にあるな。 初心者じゃないが、使い難い。
でるぴってよんじゃった、てへ
>>228 -229
あのエディタを短期間で作るなんて無理
フリーカーソルだから慣れるまで嫌われるだけであって・・・
239 :
Delギコ :01/09/26 15:24
>>234 ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) < コンポを右クリックして削除選んでミー
@/つ且~~ \___________
(__ _)
ダレモガ マチガウ UI カイゼンシテ クレ >>某
240 :
デフォルトの名無しさん :01/09/26 17:57
IDEでTABキー入力した後左カーソルで戻ると TABコードして戻らずに、TAB幅分のスペースとして戻る時があるんですが、 これってどういう条件のときになるの? ctrl + I でインデントするときもTABコードじゃなくて半角スペースが 挿入されて嫌なんですが。 どうもTABの扱いがおかしいきがします。
242 :
デフォルトの名無しさん :01/09/26 19:00
ラーメンタイマーな人です。 ラーメンが出来たって表示してビープ音ならして そのまま閉じたいのですが closeさせると即効で消えてしまって メッセージが見えません。ウェイト?のやり方を教えてくださいませ。
>>241 オプティマルフィルONにしても ctrl+I では半角スペースが
挿入されてしまいます。
テキストエディタ慣れしているとTABコードの間にカーソルが
入るのにすごく違和感を感じますが、これは慣れの問題なので
いいですが、インデントが半角スペースになってしまうのは
ちょっと困りものです。(TДT)
Timer1.Interval := 1000; ってやってイベントハンドラ内でclose
>>243 Ctrl+Iの挙動は俺もマイッタ。
結局、Tab文字は使わず全部半角スペースにすることにした。
でも半角スペースだといろいろ面倒なんだよなー。
246 :
デフォルトの名無しさん :01/09/26 20:28
>246 フォームが固まるから駄目
248 :
デフォルトの名無しさん :01/09/26 20:42
>>245 ちゃんとヘルプ読もうぜ
オプティマルフィルは並んだ空白をタブに置換してくれるもの。
タブをタブとして使うのは「タブ文字の使用」
インデントをホンとのタブにしたけりゃスマートタブもきらにゃいけないかな?
249 :
デフォルトの名無しさん :01/09/26 20:58
>>244 あいわかりもうした。
ってそっちではもうやったのでした。
なにか一命令で逝けるのかと思った。
>>246 ほうほう。
Sleepですな。
>>247 ほうほう。
固まるからダメと・・・。
250 :
Delモナ :01/09/26 21:43
∧_∧ ( `∀´) | つ、つ、 | _ |ヽヽ、./ ̄\ _ゝ_ ̄ヽヽ/ ;´ー| ヽ/二> (__)/ / _|======/_ _/ (_ノー―ゝ_)_)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 10/3まで緊張状態だモナー。辛いモナー。 >249 ムリにTTimer使わなくても出来る方法はある。 まあ、色々試すと勉強になって良いと思うよ。 i:=GetTickCount; while i+10*1000<=GetTickCount do begin Application.ProcessMessages; //ココにカウントダウンしたかったら適度に入れればヨシ If ((GetTickCount-i) div 1000)=0 then begin j:=GetTickCount-i; form1.Caption:=IntToStr(j); end; //ココにサウンド鳴らす関数でも入れれば。 //また1秒分でも待つようにして //閉じればヨシ Close; end; 適当だが、こういう方法もあるんでないかい? タイマーコンポーネントばかりに頼ると他の用途で使えないとき 困るかもしれない。 タイマーコンポーネントを使わないでアイドル時に自分で時間計測 するときには上のやつを知っておくと良いかも。 俺はゲーム関係を主に作ってるからビジネス系はちと弱い。
251 :
デフォルトの名無しさん :01/09/26 23:16
procedure Wait(const MSec:Cardinal; const AProcessMessages:Boolean=False ); var s:Cardinal; begin s:=GetTickCount; if AProcessMessages then while GetTickCount<s+MSec do Application.ProcessMessages else while GetTickCount<s+MSec do; end;
WinMain関数内でSleep使いましたが何か?
>250-251 イベント駆動なアプリケーションではイベントハンドラからすぐに抜けるのが基本。 安易にループまわしてApplication.ProcessMessages呼びまくっちゃ駄目だよ。 while True do Application.ProcessMessages;はCPUを100%使い切ってしまうはず。 # もちろんゲームなら許されるけど。
>>248 オプティマルフィルは空白のタブ変換でしたか。
あと「タブ間のカーソル移動」をオフにしたら移動がラクになりました。
しかし相変らず ctrl+I は半角スペースだ。
これはなんともなんないのかねぇ。
VBみたいに選択範囲でタブやるとインデントというほうが
Windows的だと思うのだが。
>>253 横道それるが、ゲームスレみてて思ったけど
CPU100%使い切るのはダメみたいに言うやつもいるんだよな。
まったくどうにかしてほしいよ。
256 :
デフォルトの名無しさん :01/09/27 00:04
パソナルにはTo-Do リストは無いの? ヘルプを見ると表示メニューにあると書いてあるんだが。
257 :
デフォルトの名無しさん :01/09/27 00:20
>>255 >CPU100%使い切るのはダメみたいに言うやつもいるんだよな。
将棋やフルスクリーンの3Dゲームはリソース100%使い切ってくれてかまわないけど
光栄三国志がCPU100%使い切るのは確かに納得いかないぞ(藁
おかげでUD Agent進まないし...
259 :
デフォルトの名無しさん :01/09/27 01:22
コーエーじゃなくて光栄の頃のなら100%ならんじゃないの。 5インチフロッピから読んでさ。 ゴリゴリ読み込んで遊ぶヨロシ。
260 :
デフォルトの名無しさん :01/09/27 01:43
>253 Application.HandleMessageはどぉ?
>260 それだと精度が低くて時間どおりにループを抜けられないような。 つーかなぜに空ループにこだわる? TTimerそんなにイヤか?
262 :
Del?? :01/09/27 02:34
263 :
デフォルトの名無しさん :01/09/27 02:43
数秒で強制的に閉じる程度ならsleepでもそんなに問題ではないな。 動かねえってあがきはじめた段階で閉じてしまうから。 その場合そのダイアログからはOKボタンやclose boxは消しておくと良い。 もっと長いスパンだったり、閉じる以外の目的で時間見るんであれば まずはTTimerとかを使うアプローチを考えたほうがいいが。
そーゆーデリカシーのないUIを作る人はVB使ってください。
>>264 対話目的(Dialog)ではなく、通知目的(Notification)だろ?
どんな実際的な問題があるってんだ?
SleepはCPUを占有するわけでもないしな。
それが分からないようでしたらあなたにはHSPがお似合いです。
>>266 HSPをバカにするな!お前は「ぴゅう太」がお似合いだ!
>267 あんたにはファミリーベーシックがお似合い。
270 :
デフォルトの名無しさん :01/09/27 03:37
ぜんぜん初心者スレっぽくないぞよ。
話を戻して(笑)、補足。 実際にsleepするのならその前にUpdateとProcessMessagesを 一回呼んで描画の更新の完了などはさせないといけない。 sleepする時間もせいぜい3秒以内が限度。 コードはこんな風になる。 NotifyDialog.Show; // モーダルにはしない NotifyDialog.Update; // 描画を完了させる指示 Application.ProcessMessages; // 描画の完了を待つ Sleep(2000); // 2秒 NotifyDialog.Close; // 閉じる また他に同時に別のウィンドウ操作できるようにしたいのなら そっちも固まってしまうのでこの手は使えない。 その上で、単機能タイマーの通知に限定した話だからこういう手も 十分使えるということ。まあ、初心者スレっぽくないか(笑) ところでそもそもの前提として、勝手に閉じるというUI自体が問題を はらんでいることは注意したほうが良い。 確実に知らせたいのなら、確認を示す意思表示としてボタンを 押させること。 そうでないと画面のそばにいなかった時にすでに終わったということ 自体を気づかないことがあるからな。
>>271 > ところでそもそもの前提として、勝手に閉じるというUI自体が問題を〜
あーならいまのままがいいですね。
確かにその方が親切ですし。
んで今度は時間が来たらウィンドを最前面に出してやりたいのです。
って教えて君ですな・・・調べてきまっす。
>>272 最前面に出すという行為も、何かユーザーが操作している
最中に出てくるとユーザーを邪魔することになってしまうので
問題があるんだよね。
そのために、Win98以降では従来の方法で最前面に出そうとしても
タスクバーで名前が点滅するだけに終わるように変更されている。
最前面に出す機能は、主に手前に置きっぱなしにするソフトに、
ユーザーの意思によって設定可能にするだけにしたほうが良い。
ということを言っておいた上で(笑)
従来の方法で最前面に出すだけならばFormStyleプロパティを
fsStayOnTopにしておくだけでOK。
274 :
デフォルトの名無しさん :01/09/27 06:13
データベースの質問です。 IBTableのfilterありますよね。 あれ使って日付型の項目からレコードの絞り込みしたいんですけど どうやったらいいんですか?
275 :
Delモナギコ :01/09/27 07:01
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜´ ( ´∀`)< かなり良い感じーモナーギコー uu u u \_______ 俺が変にGetTickCountとwhileでのループ技書いたから CPU処理%について論議が・・・・。みんなの言う通りだよね。 最近は、CPU処理の方にも気を使ってるつもり。でも使いまくり。 某エロゲーとかはつねに60%とかだから、どうやってるのかなあ とか考え込んでしまってもいる。 >274 データーベースは分からないので答えられない・・・。 他の人ヨロシク
自己レス こんな風に書いたら動きました。 I_DATE>'8 20 2001' AND I_DATE<'9 21 2001'
277 :
デフォルトの名無しさん :01/09/27 09:42
>>275 MAMEみたいなエミュレータをノートPCで走らせるとファンが回りまくりで
どうしようもない。CPUの使用率って制御できないものか私も知りたい。
278 :
デフォルトの名無しさん :01/09/27 10:28
別スレッド作ってそっちでSleepし、Sleepが終わったらメインスレッドに 終了コード投げて自分も終わるというのはどうだろうか。 …あほらしいか。
279 :
デフォルトの名無しさん :01/09/27 11:02
TMemoの内容をINIファイルに書き出したいと思いますが --------- gikogiko monamona --------- という内容を以下のように記述すると SL := TStringList.Create; SL.Text := Memo1.Text; iniFile.WriteString( 'CATEGORY', 'ITEM', TMemo1.Text ); ↓のように書き出されてしまいます。 --------- [CATEGORY] ITEM=gikogiko monamona monamona --------- 逆にこのINIファイルを読み込ませてTextプロパティに入れると 最初の行「gikogiko」しかMemo1に表示されてくれません。 どのようにしたらよいのでしょうか? また、Memo1の内容に「Name=Value」がある場合そのまま 書き出されてしまいますが、これは問題ないのでしょうか? INIファイルに同じ項目がある場合、読みだし時に誤動作しそうな・・・。 そもそもTMemo内容をINIファイルに書きだそうとするのが間違いですか?
280 :
デフォルトの名無しさん :01/09/27 11:03
>>279 iniFile.WriteString( 'CATEGORY', 'ITEM', TMemo1.Text );
じゃなくて
iniFile.WriteString( 'CATEGORY', 'ITEM', SL.Text );
ですね。
書き間違えすいません。
281 :
>>279 :01/09/27 11:27
>そもそもTMemo内容をINIファイルに書きだそうとするのが間違いですか? 間違いでしょう。一行に対する最大長制限もあるし,95/98/NT で微妙に動作が違うし。 ファイルの読み書きでしかないから速度も遅いしね。 .ini にはパスを入れるだけにするとか。
>>281 TMemoの内容だけ別ファイルに書き出すことにします。
ありがとうございました。
283 :
ラーメンタイマー :01/09/27 12:05
>>273 ほうほう色々とむつかしいんですな。
ならタスクバーをチカチカさせるだけでいいのかな?
まー実際にラーメンタイマーなんて使わないと思うし(笑)
284 :
デフォルトの名無しさん :01/09/27 12:36
ラーメンタイマー、 そもそも、なんで自動で閉じたいの?
285 :
デフォルトの名無しさん :01/09/27 12:49
INIファイルには、改行文字を含める事は出来ません。 そこで、制限の無い TMemIniFile を使う。 改行文字を含めず、引用符とカンマ区切りで1行1行を区別する。 with TMemIniFile.Create( '****.ini' ) do begin WriteString( ***, ****, Memo1.Lines.CommaText ); Flush; Free; end; with TMemIniFile.Create( '*****.ini' ) do begin Memo1.Lines.CommaText := ReadString( ***, ***, '' ); Free; end;
286 :
ラーメンタイマー :01/09/27 13:26
>>283 タスクバーじゃなくてタイトルバーだ(;´Д`)
>>284 連続で使う事はあまりないかなと思って。
でも263さんの言う通り 不親切なのでやめますた。
>>285 TMemIniFileですか。なるほどっ!
まさに思い通りのコトができました。
ありがとうございますっ!
288 :
デフォルトの名無しさん :01/09/27 21:33
オープンソースのソフトで、オブジェクト指向プログラミングのいいサンプルないですか? いくつかフリーソフトのソース見てみたんですが、結構手続き指向?を使ったものがほとんどなので。
>>288 Delphiスレでこういう質問をする意図が読めぬが、
これがDelphiのソースとしてそういうものを読みたいという要望なら、
DelphiのComponentのソース公開されてる奴を探して(いっぱい有る)
そのソースを読むとよかろうと思う。
Component作りは、OOPは避けて通れないので。
特に、1つの配布セットに、互いに関連の強い複数のComponentが
入ってる奴は狙い目だ。単体より「相互関係」を学ぶことに
色々と意義があるので。継承とか委譲とか色々。
拙作(内緒)は20個もゴミみてーなComponentが入っている。
ゆえに、さぞかしタメになるだろうな。わははははは。。。。。
290 :
Delモナ :01/09/27 22:41
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(|_(| ( ´∀`)< すげえ良い物見つけたモナー
(. .\ ⊂ )_\__________
(● ノ  ̄ノ ノ 川
'''|| (|__)ー|||川
(_(__) (_(__)
既出っぽいよーな気がするが、見たこと無いのでリンク
ttp://glscene.org/ にある
ttp://glscene.sourceforge.net/misc/CodeWarp.zip ってソフトは良いね。
コードエクスプローラーの代わりになるので非常に便利。
なんで、このソフトを発見できなかったのか悔やまれる。
リンクスレの「環境のことなら」のところにリンク張っておいてくれい。
>288
自分がオブジェクト指向でプログラムしてるのかそもそもよく分かっていない・・・。
まあ、結果良ければオッケーっと言うことで。
>289
ウチのコンポーネントは全然オブジェクト指向じゃないっぽいので
参考にならないかも・・・。関数をガンガンつけまくっているだけだし。
Del6のSampleタブにあるShellListViewを使いたいんですが、 使いかたはどこで調べればいいんですか? ヘルプに何も書いてないですよね?
292 :
Delギコ :01/09/28 01:01
∧ ∧ /
>>290 リンク先のアドイン
(,,゚Д゚) < モードレスで
U ,つ゛ \Formの位置調整が出来るようにしたいです。
〜| |
∪∪ モーダル & ScreenCenterは ツライッス
>>288 ホットゾヌなどは?大きすぎますか?
>>291 Sampleの中のものは伝統的悪しき週間により
HELPはつきません。ソースがあるので
それを見ながらガンバルしかないです。
ガンバルンバ!
ホトゾヌ依存コンポーネント多すぎてコンパイルできぬ・・・かなしい
具体的にはTUIWebBrowserのコンパイルでつまる・・・
295 :
デフォルトの名無しさん :01/09/28 09:24
TUIWebBrowserインストールしようとしたらrequires vclieのところでつまるし…。 パーソナルではインストールできないとか?
296 :
Delギコ :01/09/28 10:03
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (,,゚Д゚) < ホットゾヌは依存Compoが激少で | つ[|lllll]). \_ 折レは驚いていたけど… 〜| | ∪∪ タコタコ サイト シラベテミル タコタコの説明によるとD5まではTWebBrowserを継承していなかったから StdやLernでも利用できたみたい。 D5からComの継承が可能になったみたいで D6用のはTWebBrowserから継承しているみたいだけど・・・ PersonalはTWebBrowserないから不味そう__ 詳細わからないので、作者さまに要連絡がよろしいと思われ
297 :
デフォルトの名無しさん :01/09/28 10:55
298 :
デフォルトの名無しさん :01/09/28 11:13
ボタン操作などでTPageControl上にある特定のTTabSheetを 開けなくしたいのですが、Enableプロパティ、Visibleプロパティを 変更しても変化しません。 TCheckBoxとかTMemoとか他の要素はEnableをオフにすることで 使用不可状態にできたのですが、TTabSheetでは出来ないのでしょうか?
299 :
デフォルトの名無しさん :01/09/28 11:39
今だ!300ゲットォォォォ!!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
>>298 TabVisibleをFalseにしてみたらど・かしら?
MDIアプリケーションの子フォームを全て閉じるにはどうすればいいですか?
302 :
デフォルトの名無しさん :01/09/28 13:51
HELP に、そのまんま「例」としてのっているのですが。 ■VCL リファレンス TCustomForm.MDIChildren MDIChildCount, MDIChildren, Close 例 -------------------------------------- 以下のコードは,Form1 の MDI 子フォームをすべて閉じます。 var I: Integer; begin with Form1 do for I := MDIChildCount-1 downto 0 do MDIChildren[I].Close; end;
303 :
デフォルトの名無しさん :01/09/28 14:04
>>296 TWebBrowser って、IE のタイプライブラリからインポートしたものなんだけど。
Personal でもタイプライブラリのインポートはできると思ったが。
では質問。 何故Delphiが最強なの?
>>302 HELPにのってたんですか。探しが足りなかったです。
ありがとうございました。
∧∧ / ̄
>>303 サンク--スソデシタカ
@_(,,゚Д゚) < とりあえずD6Proではタイプライブラリトリコミして
⊂,,__つつ. \_ ソースをちょこっと修正してライプラリパスを通したりしてたら
TUIWebBrowserのインストは出来たよ。
タイプライブラリ取り込みの説明はTUIWebBrowserインストール説明の
D5のものを参考にしよう。
>>295 ちがうかな?
_
>>304 | ∧ ∧ コンパイルが早いから
| ( ゚Д゚)
| ⊂ | とか逝ってみる。
| ⊂__ノ@
| |
>>300 あ、TabVisibleでしたか。
ありがとうです。
309 :
デフォルトの名無しさん :01/09/28 17:12
単にDLLファイルだけが与えられている場合、どのようにしてこのDLLで定義されている関数名や型を知り利用するのでしょうか?
310 :
デフォルトの名無しさん :01/09/28 17:18
>>309 名前は知ることができますが、引数や戻り値の型や呼び出し規約は知ることができません。
適当に当てずっぽうで推測したり、逆アセンブルして解析したり、作者に訊いてみたり、あきらめたりするしかありません。
皆様ありがとう。 タイプライブラリのインポートは出来たみたいなんですがやはりTUIWebBrowserが インストールできません…。 どこが悪いのかも把握できてないんでもう少し調査してみます。 …他にもIEコンポを使えるようになるコンポーネントってあるんだろうか…。
パソナルってほとんどのコンポがインストできないよね
313 :
Delモナ :01/09/28 21:47
(>312)
\从//
\ヽ // ボン!
< >∧_∧
< l⌒l´∀` )
/ヽ ヽ つ
((( \_ ノ
\ ヽ
し''
>312
アンチデルファイ厨房、マジで消えてくれ。
とっととプログラム板から消えてくれ。
>311
IndyとかでIEコンポをいじれなかった?
Ieコンポだったらmonazillaを参照するといいかもネ。
ttp://members.jcom.home.ne.jp/monazilla/
314 :
デフォルトの名無しさん :01/09/28 21:59
つい最近はじめて見ました。結構ハマりますね。 質問なのですが、ユーザーがウインドウのサイズ変更、 最大化をできなくするにはどのようにしたら良いでしょうか?
ウィンドウがアクティブになってない時にキー入力を取得するにはどうすればいいんでしょむか?
317 :
デフォルトの名無しさん :01/09/28 22:18
>>317 そ、そうじゃなくて、、
ウィンドウが消滅しててバックグラウンドで動いていてあるキーを押すと
ひょこっとウィンドウが現れるように作りたんです
319 :
デフォルトの名無しさん :01/09/28 22:22
フック。
320 :
デフォルトの名無しさん :01/09/28 22:27
http://www.text2music.com/mine/delphi/2.html. このページを見ながら乱数発生器を作っているのですが、
「オブジェクトスペクターの上のタブ "Event" を選んで、その中の"OnCreate"をダブルクリックしてください。」
という説明がでてきました。
ところが、私のDelphi Personal には、OnCreate というものが見当たりません。
なぜでしょう?
ちなみに、上記の解説サイトを作っているのは、ひまわりの作者さんみたいです。
321 :
デフォルトの名無しさん :01/09/28 22:29
322 :
デフォルトの名無しさん :01/09/28 22:29
323 :
デフォルトの名無しさん :01/09/28 23:07
>>320 絶対あるはず。
左にあるオブジェクトインスペクタのコンボボックスからForm1を選ぶ。
そしてイベントタブのなかにOnCreateはある。
OnCreateならフォームをダブルクリックしたらすむんじゃないかな
325 :
デフォルトの名無しさん :01/09/28 23:15
>>323 ありがとうございます。
言われた通りにやったらできました。
コンボボックスに別のものが入っていたので表示されてなかったようです。
・∀・
>>318 > ウィンドウが消滅しててバックグラウンドで動いていてあるキーを押すと
> ひょこっとウィンドウが現れるように作りたんです
この用途なら RegisterHotKey が良い
>295 :デフォルトの名無しさん :01/09/28 09:24 >TUIWebBrowserインストールしようとしたらrequires vclieのところでつまるし…。 >パーソナルではインストールできないとか? パーソナル0円プログラミング派だけど、TWebBrowserインストールして ヘッポコブラウザ作って遊んでますが…。 つーか、スーパー初心者なんで、「TUIWebBrowser」と「TWebBrowser」は 別物?勘違いしてるかな?オレ。
見なさムありあとうございました。 なんとか方向性は見えてきましたハイ。
330 :
キティガイ :01/09/29 07:23
マッサージしたり料理を作ってくれるようなトータルライフサポートアプリケーションを作成したいのです。 しかし標準のコンポーネントではマッサージや料理ができません。 Delphiってだめですね〜。 VC++だと簡単にできるんですよね♪
>>330 おもろないぞ! やっぱ養殖もんはダメだねえ やっぱ天然 もんのキレが全く無い
332 :
チョコボーイ :01/09/29 07:50
関数 手続きが,まだ理解できません 税抜き 消費税 税込み と 3つの答えを DBEdit に 格納したいのです 別フォーム で作りたいです。 おしえてください、また なにか参考に出来るもの おしえてください
俺はクラスとオブジェクト指向が理解できてない。 でもアプリつくれるデルファイマンセー。 解ってないからコンポーネントなんかつくれんがな
334 :
デフォルトの名無しさん :01/09/29 10:10
>>333 Delphi使ってればそのうちなんとなくわかると思われ。
TButton とか TCheckBox とかがクラス。
Button1 とか Button2 とか CheckBox1 とかがオブジェクト。
335 :
デフォルトの名無しさん :01/09/29 10:13
>>332 税抜き、消費税、税込み、3つともわからんなら、どうやって求めるんだ。そもそも。
336 :
デフォルトの名無しさん :01/09/29 11:27
>>332 質問の意味が違ってたらごめん
var
Form1: TForm1;
//手続きの宣言
procedure aaa(zeinuki:Currency ; Zei_ritu:Single);
implementation
uses Unit2; //betuformのユニット名
{$R *.DFM}
procedure aaa(Zeinuki:Currency ; Zei_ritu:Single);
var
Zeikomi,Zei:Currency;
begin
//消費税の計算
Zei:=round(Zeinuki*(Zei_ritu/100));
//税込価格の計算
Zeikomi:=Zeinuki+zei;
//Betuformというフォームに張ってあるDBEditに表示する
//税抜きをDBEdit1に表示
Betuform.DBEdit1.text:=FloatToStr(Zeinuki);
//消費税をDBEdit2に表示
Betuform.DBEdit2.text:=FloatToStr(Zei);
//税込みをDBEdit2に表示
Betuform.DBEdit3.text:=FloatToStr(Zeikomi);
end;
//ボタンを1個張り付けて手続きを呼んでみる
procedure TForm1.Button1Click(Sender: TObject);
begin
//別フォームを表示
betuform.visible:=true;
//税抜き100000,消費税率は5パーセント
aaa(100000,5);
end;
337 :
Delギコ :01/09/29 14:14
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚) < TUIWebはTWebの変なところを改善している
し― し-J \___________
TWebBrowser
ショートカットキーがうまく動かなかったりしないかな?
>>314 GetMinMaxInfoという単語を調べるてヨシ
338 :
デフォルトの名無しさん :01/09/29 16:20
337のGetMinMaxInfoや70あたりに出てきたファイルのD&Dなどは Delphiのどうこう言うよりWindowsAPIとかShellの話になってきますよね その辺参考になる書籍、HP等ありましたら教えていただけると幸いです。
339 :
デフォルトの名無しさん :01/09/29 17:05
コンソールアプリケーションで “次の処理まで○秒待つ”という処理をさせたいんですが どう記述すればいいのかわかりません。 waitさせたいと言ったほうがわかり易いでしょうか。 ご教授お願いします。
340 :
Delモナ :01/09/29 17:36
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◯( ´∀` )◯ < 今日は色々あって楽しかったモナー \ / │ |⌒I、│ \__________ (_) ノ ∪ ∬ >339 251で書いてあることを使えばどう?
341 :
デフォルトの名無しさん :01/09/29 17:51
コンソールアプリならSleep(1000)で1秒止める、とかでいいんでねすか
342 :
チョコボーイ :01/09/29 21:06
>>332 改めて自分の質問を読んだら わかりずらかったです 済みませんでした。
336さんのお答えのような物を求めていました。
本当にありがとうございました。
335さん。 それぞれの求め方は分かるのですが、関数として別フォームで扱いたいと言うことでした。
たしかに伝わりずらかったと思います。 すみませんでした。
343 :
デフォルトの名無しさん :01/09/30 02:49
ActiveXコントロールってさ、勝手にフリーソフトとかでつかっちゃっても いいものなの?
そのコントロールのライセンスによるんじゃないの? 配布権とか。
>>340 -341
>>251 を見てみましたが、何が書いてあるのかさっぱりわかりませんでした。
なので、とりあえずSleepを使う事にします。
ありがとうございました。
346 :
デフォルトの名無しさん :01/09/30 09:57
すげえDelphi。 ネイティブだよネイティブなんだよ。 おいら感動して眠いよ。
フォームにfsStayOnTopってありますよね? あれ、ひとつだけフォーム表示してる時は機能してるんですけど、 二つ目のフォームを表示させると後ろにまわっちゃうんですが、 常に前に表示するにはどうしたらいいんでしょうか?
348 :
デフォルトの名無しさん :01/09/30 11:25
間違ってsageてしまった…
349 :
デフォルトの名無しさん :01/09/30 11:31
>>347 ShowModal で表示したときのこと?
それなら呼び出し元フォームが前になっちゃまずいよ。
>>349 言葉足らずですみません。そうですShowModalで呼び出した時です。
フォームが一個の時は常に手前に表示されるんですが二つ目のフォームを出したとき、
両方のフォームが他のウィンドウの後ろにまわっちゃうんです。
呼び出し元と呼び出したフォームの前後関係を変えないで、他のウィンドウより前に出したいんです。
351 :
デフォルトの名無しさん :01/09/30 12:41
>>350 SetWindowPos API 使えばいいんじゃないかな。
例えば Form2 を前面に表示させたければ、
SetWindowPos(Form2.Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE);
のように呼び出すとかして。
ただ常に前面で表示されている保証はないけど。
352 :
デフォルトの名無しさん :01/09/30 12:47
TStringGridって、直接入力できますか?
354 :
デフォルトの名無しさん :01/09/30 12:54
>>352 ObjectInspector で Options の goEditing を True にすればできる。
& goAlwaysShowEditor=Trueで常に入力キャレットが出ている状態にすることもできる。
ちゃんとヘルプ読んでるのかい?
このくらいのことはヘルプ見ればわかることだと思うよ。
355 :
デフォルトの名無しさん :01/09/30 13:43
>>354 まあ、初心者スレだから
>>352 でも、354の言うとおりだよ
必要なコンポーネントについてはヘルプに目を通して
何ができるのか把握することから始めましょう
>>353 -355
ありがとうございました。
これからは、きちんとヘルプ見ます。
>>351 できました。両方共最前面表示できました。
ありがとうございます。
今度はForm1がVisible=Falseになってる状態で同じ事をやろうとしたんですが、出来ません(;´Д`)
358 :
デフォルトの名無しさん :01/09/30 14:59
>>357 >今度はForm1がVisible=Falseになってる状態で同じ事をやろうとしたんですが、出来ません(;´Д`)
以下のようにするとOKだったよ。
・Form1.FormStyle を fsStayOnTop にしておく。
・Form2.FormStyle を fsStayOnTop にしておく。
・Form1.OnShow ハンドラを以下のように実装する
procedure TForm1.FormHide(Sender: TObject);
begin
Application.NormalizeTopMosts;
end;
・Form2.OnShow ハンドラを以下のように実装する
procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE);
end;
これで Form2.ShowModal する前に Form1.Hide しても前面に出るようになったけどね。
テストコード)
procedure TForm1.Button1Click(Sender: TObject);
begin
Visible := False;
Form2.ShowModal;
Visible := True;
end;
訂正 誤)・Form1.OnShow ハンドラを以下のように実装する 正)・Form1.OnHide ハンドラを以下のように実装する
>>358 おおっ!!出来ました。
ありがとうございますヽ(´ー`)ノ
Application.NormalizeTopMostsは気が付かなかったです…。
361 :
デフォルトの名無しさん :01/09/30 20:37
362 :
Delギコ :01/09/30 21:01
三本柱が一本になってしまった…。
>>363 誤爆?
ボーランド株式会社が Delphi/CBuilder を捨てて JBuilder に
傾いていることをいっているの?
>>362 やはり接続できない状態にも関わらず「接続できるよ」になってしまいます。
これってなにをもって「接続できるよ」って判定してるんでしょね?
やはりRASが動いているかどうかでチェックしたほうが確実っぽいです。
しかしその方法が見つかりません・・・
↑のほうでPersonalでTUIWebBrowserを使おうとしてた者ですが…。 タイプライブラリの取り込みがよくわからないままいろいろやってたんですが、 何とかTWebBrowserは取り込むことが出来ました。 ただ、Professional版とはクラス名とかが違う?ので、Pro向けに書かれたコンポとかはかなりソースを修正しないと インストールできないみたいです。これからチャレンジしてみます。 3行しかコードを書いてないのにブラウザもどきができてちょっと感動。
TUIWebBrowserのインストールにも成功しました。 コンパイル指令を書き換えて、要求するパッケージ名を書き換えたらできました。 これでパソナるでも色々遊べる〜。
パーソナル(無償DL版)と無償じゃないヤツの違いってのは、 シェアウェアを作っちゃダメ!ってことだけでやんしたか? 詳しい違いを書いてるページは御存知無いでしょーか?
369 :
デフォルトの名無しさん :01/10/01 01:21
>>368 残念ですが,パーソナルは有償版と無償版は全く同一です。
・印刷されたマニュアルがつくかどうか
・IE5.5 が収録されているかどうか
この二つ以外はバイナリも同じ。ライセンスも同じです。
パーソナルは有償版でも,それで利益を得てはいけません。
>>369 ありがとザマス。
あら、一緒ザマスか…。
なんか、まだまだ入手したてで全然分からんので遊んでるだけなんだけど、
「『Controls.pas』があらへん」って怒られますのんや。
で、無償版はファイルが足らへんのでは?と思いましたドスエ。
371 :
デフォルトの名無しさん :01/10/01 01:53
>370 Controls.pasは付いていませんよ。 Controls.dcuがあるフォルダへのパスを設定していないのでしょう。 普通にインストールすれば、問題無いと思うのですが。
372 :
D6マン :01/10/01 02:02
>>371 はれま!たびたびありがとザマス。
そーですか…。うーむ。やってみまふ。
どーもです。
373 :
デフォルトの名無しさん :01/10/01 03:33
>>366 TWebBrowser
TUIWebBroeser
のインストール方法教えてください。
374 :
デフォルトの名無しさん :01/10/01 03:49
TWebBrowser を用意してから TUIWebBroeser をインストールします。
TWebBrowserは コンポーネント>ActiveX コントロールの取り込み からでいいんでしょうか?
376 :
Delモナ :01/10/01 07:03
∧ ∧ ∧ ∧ (´Д`* ) (*´Д`) ( ) ./ |/ ̄ ̄ ̄ ̄∧ ∧ 〜(_ ∧ ∧ (´Д`*) /_(*´Д`)_/ (UU )〜 || ̄/ | ̄ ̄||/┌───────――― ||, (___ノ || < そうだモナー >375 / └───────―――
僕は今の時代のアプリケーションはアイコンが全てだと考えます。 どんなに性能の良いアプリケーションでもアイコンが悪いと糞以下の存在になると思います。 また、どんなに性能の悪いアプリケーションでもアイコンがよければすべて良しということになると思います。 そこで、カコ(・∀・)イイ!アイコンはどうやって作ればいいのでしょうか?
>377 カコイイアイコンが出来るまで、アイコンを描く。
TWebBrowserインストール方法。 タイプライブラリの取り込み、またはActiveXコントロールの取り込みを使ってMicrosoft HTML Object Library(Version 4.0) とMicrosoft Internet Controls( Version 1.1)を取り込む。 すると、コンポーネントパレットのActiveXページにScriptlet, WebBrowser_V1, WebBrowserというコンポーネントができるはず。 次に、TUIWebBrowserのインストール。 ダウンロードしたファイルのDelphi6のディレクトリをどこかライブラリパスの通っているところに置く。(置いたところに通す) 次にソースを修正する。 UIWebBrowserPG.dpkをエディタで開き、requires vcl, vclie; となっているがvclieを消す。 その上に{$IMPLICITBUILD OFF}というコンパイラ指令があるので、{$IMPLICITBUILD ON}と書き換える。 UIWebBrowserPG.dpkをDel6で開き、インストールボタンを押す。するとあちこちでコンパイルエラーがでるので、該当ソースの uses節の、ShellDocVWをShellDocVW_TLBと書き換える。すべて書き換え終わったらコンパイルが通ってインストール終了。 以上だったはずです。よくわかってない初心者の書くことなので鵜呑みにはしないでね。 詳しい人は捕捉してくれるとありがたいです。
あ、もちろん↑の記述はDelphi6 Personal版にインストールするときのことです。 Pro以上にインストールするときはソースの修正、タイプライブラリの取り込みは要らないはずです。
>>377 ・その1
ドット絵を学ぶ。
del付属のイメージエディタは激烈に使いにくいので、
ちゃんとしたドットエディタを使う。
・その2
画像加工を学ぶ
ドット絵がかけなくても、大きめに絵を書いて
フォトレタッチソフトで縮小してその後また加工して調整。
オレは、両方併用派
>>379 ありがたい。
pro版ユーザーだけどインストールできなくて困ってた
383 :
Delギコ :01/10/01 10:46
>uses節の、ShellDocVWをShellDocVW_TLBと書き換える。すべて書き換え終わったらコンパイルが通ってインストール終了。 ∧ ∧ / ( ゚Д゚) < Pro版ならIFDEF VER130を IFDEF VER140に変えると .=| |==U=U==.| |= \よさそうです。 | | | | | | | | ノU U. | | | | .| |
384 :
デフォルトの名無しさん :01/10/01 15:59
Del5ラーニングからDel6パーソナルへの移行はどんなメリット、(&デメリット)がありますか?
>>379 そんな面倒なことしなくても、アチキ、D6無償ザンスが、
インストール出来たんですが…?
はて?
それしないとインストール出来ないんじゃ、アチキにゃ入れられないっスよ。
>Delモナさん、366さん ありがとうございます。 TUIWebBrowserは「vclieが見つかりません!!!」 とか言われてインストールできなかったので、助かります。 vclieを消せばよかったのね。vclieって何のためのものなのかな?
387 :
D6マン :01/10/02 00:37
アチキの面目丸つぶれ(藁 おかしいなー?? 普通に入ったけど。何が普通かよく分からんが。 ま、いっか。 vclieってナニ?そんなこと言われなかったなぁ。
379の書いたとおりにしても「ShellDocVW_TLB.douが見つかりません」って怒られるんだけど… 何でだろう?
C:\Program Files\Borland\Delphi6\ImportsにShellDocVW_TLB.pasとかdcuとかはある? なかったらタイプライブラリの取り込みが出来てない。
「SHDocVw_TLB.pas」ってのはありますな。 dcuもありまふ。 不思議だ。
>>391 書き方が悪かったザマス。スマソでございます。
「vclieが無いわよアハン」とも言われないし、
何か複雑な書き換えもしなかったのに、インストール出来たのが不思議だと…。
つーか、不思議不思議言うてても意味無いので、アチキはこのネタはこれで終わりにしまッソ。
失礼おば。
393 :
デフォルトの名無しさん :01/10/02 02:07
Delphi6パーソナルをインストールしようとしたら インストーラーがページ違反(モジュールKERNEL32.DLL)してしまった。 インストールは続行出来そうなんだが、俺の環境が腐っているのか?
394 :
デフォルトの名無しさん :01/10/02 02:09
>>393 常駐全部外しても、それが出るんなら腐ってるのかもな。
>>393 どこら辺で落ちたんだ?
多くの製品が使っている Windows Installer なんだから環境の方に
問題があるんだと思う。
>>392 典型的な役に立たない通りすがり。
いや,2ch だし悪いとはいわないよ。
>>396 すいませんねぇ。役立たない通りすがりで。
アンタのくだらねーレスも同じってことで、ひとつ。
>394-395 おぉ、優しい方サンクス。 インストーラークリック一発でページ違反が2回。 その後、ファイルの保存場所を聞いてくる。 とりあえず常駐とっぱらってインストールしてみますです。m(__)m
>399 ファイルが壊れているのかもしれませんわ。
401 :
デフォルトの名無しさん :01/10/02 03:38
たぶん関係ないけど Win9x なら IME を MS-IMExxx に。
402 :
デフォルトの名無しさん :01/10/02 03:41
>>401 俺、ATOK。無事インストール。
>>393 もしDLしたヤツで、ファイル壊れてるんなら
今月号のテックウィンに付録で付いてるよ。
俺それでインストールして何事も無かったよ。
TListView の OnSelectItem イベントなんだけど、 これってクリックして選択した後に一回だけ起きる? 何か2回起きてるんだけど。 しかも、右クリックでも起きるし。
行間が空いていないメモ帳のようなものではなく、Outlook Expressの メール本文のように行間が空いているテキストエディタを作りたいのですが、 どうやればテキストボックスの行間を設定できるのでしょうか
>>403 一回目のは選択解除されたとき(Selected=False)
2回目のは選択されたとき(Selected=True)のイベント
StringGridのセル内文字列の左右中央寄せってどうすれば設定できますか?
現在レコード型を利用してファイルアクセスを行っています。 これをクラスにして見通しを良くしようと思うのですが (ファイルアクセスを行うのはこのクラスのみにしたい) どのように記述すればよいのでしょうか? クラスのprivate部にレコード型の定義を記述するとエラーが出るようなんですが...
>>400-402 常駐とっぱらって、Borlamdとベクターか数回ダウンするもクリック一発ページ違反へようこそ。
環境腐ってるみたいだ・・・逝ってきます。
アドバイスくれた方サンクス。
410 :
テックウィンから入れた人 :01/10/03 01:02
>>409 そっかー。残念。雑誌からインストール試してもダメなら
いよいよ環境がマズいかもね。
メモリ周りとかは?
>>406 レス有難うございます。確かに行間の設定は出来ましたが
プロポーショナルフォントが正常に表示されないのはちょっと・・・
もう少し自力で探してみます
412 :
デフォルトの名無しさん :01/10/03 01:23
>>407 TStringGridを継承してDrawCellをoverrideするところかも
procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
begin
if DefaultDrawing then
Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
inherited DrawCell(ACol, ARow, ARect, AState);
end;
このCanvas.TextRectで描画位置を調整するとよろしいかと・・・
文字列の巾・高さはCanvas.TextExtentで求めるべし
(あとは自分でバンバン)
追記(ここは初心者スレだった) やりかたが分からなければ「初心者にはちょっと早かった」ということで 納得しましょう 412のはコンポーネントを作るとういことだからね
1.DelphiからOLE使ってExcelにデータはく。 2.Excel閉じる。 3.1をもう一度する。→Delphiアボーン! ってなるんだけどどうすりゃいいの?
415 :
デフォルトの名無しさん :01/10/03 02:22
>414 Excelのバグでは?
>>411 >プロポーショナルフォントが正常に表示されないのはちょっと・・・
∧ ∧ /TEditorはギコペにも使われているから
(,,゚Д゚) < そんなこと無いと思うけど。
|つ つ \
@| |
∪∪ シラナイケド
418 :
デフォルトの名無しさん :01/10/03 13:05
右寄せStringGridの例だよ procedure TRightStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); var oSize : TSize; begin oSize:=Canvas.TextExtent(Cells[ACol, ARow]); Canvas.TextRect(ARect, ARect.Right-oSize.cx-2, ARect.Top+2, Cells[ACol, ARow]); end;
>412 ,>418 どうもありがとうございます。まだよく分からないレベルなんですけど、 わかるまでレス保存しておきます。
420 :
フリーカーソル無効化 :01/10/04 00:06
421 :
Cマニア(デル初心者 :01/10/04 00:19
Delphi パーソナルDLしてみた。 おー!?マウスをクリックするとHello world!の 文字列がたくさん(驚
422 :
デフォルトの名無しさん :01/10/04 07:34
わーい。 パソナルでもフリーカソル無効にできるようになたよ。
423 :
ななしヘタぐらま :01/10/04 07:40
>>404 海外モノですがTRichEdit98というコンポがあります.
Windowsのリッチエディット2.0をコンポ化したもので,
設定無しで行間があきます.
ただ,日本語処理では一部バグがあるようですし,
Delphi5以降ではソースの修正が必要かもしれません.
サイトの場所は失念したのですいませんが検索エンジンで探してみてください.
424 :
ななしヘタぐらま :01/10/04 08:23
>>407 WindowsのAPI,DrawTextを使う方法があります.
以下はTStringGridでCells[]の内容を右寄せ表示する例.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
// Rect を周囲1ピクセル縮小(Windows API)
InflateRect(Rect, -1, -1);
// デフォルトの描画を一部塗りつぶして消す
StringGrid1.Canvas.FillRect(Rect);
// Cells の描画(Windows API)
DrawText(StringGrid1.Canvas.Handle,
PChar(StringGrid1.Cells[ACol, ARow]), -1, Rect,
DT_NOPREFIX or DT_RIGHT);
end;
DT_RIGHTをDT_CENTERに変えるとセンタリングになります.
縦のセンタリングや下寄せ,ワードラップの機能もあります.
詳しくはAPIのヘルプを見てください.
編集画面でDrawTextにカーソルを移動してF1キー,
425 :
ななしヘタぐらま :01/10/04 08:26
>>424 補足.これはTStringGridのOnDrawCellイベントです.
426 :
デフォルトの名無しさん :01/10/04 13:11
質問させてください。 Delphi6Personalを使ってプログラミングを勉強しようと思うのですが、 その手の本が、まだ5までしか出ていませんよね。 過去スレを眺めてきたのですが、差はないから、という声もあがっていて、 Delphi5入門本で代わりになりそうかな、とも思ったのですが、 これから出るであろう、Delphi6入門本を待ったほうがいいのかな、とも思いました。 Delphi使いの方々に、どちらがいいのか聞いてみたいです。
入門時には何度も繰り返し反復して勉強しないと覚えられないので D5の本を買って、勉強して D6の本が出たらまた買って勉強して なんども同じような事を復習して学んだ方がいいと思います。 D6本を待つ必要はありません。 また、本当にD5とD6は差がないと思っていいです。  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ∧ ∧ ヒビ ベンキョウ (,, ゚Д゚) ノつl⌒|⌒l 〜(._[ ̄ ̄ ̄.]  ̄ ̄ ̄
428 :
デフォルトの名無しさん :01/10/04 13:31
質問なんすが・・・ DataType = array[0..7] of byte; TData = class Data : DataType; てなときに for i:=0 to 7 do data2[i]:=TMydata.data[i]; みたいなことができないのはなぜ? コンパイルは通るけど実行するとエラーになる???? わけわかめ
>>427 レスありがとうございます。
わかりました、まずはDelphi5入門本を買ってやってみることにします。
>>428 var TMyData:TData ;
なの?
TMyData:=TData.Create;
with TMyData do
try
for i:=0 to High(data) do data2[i]:=data[i];
finally Free;end;
431 :
デフォルトの名無しさん :01/10/04 15:38
感謝age
432 :
デフォルトの名無しさん :01/10/04 15:52
Delphiは入門本よりTips本の方がオモシロイNE!
433 :
デフォルトの名無しさん :01/10/04 16:18
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (,,゚Д゚) < 画像貼り込むと大きくなるんです(当然 U ,つ \____________ @| | ∪∪ 画像を無圧縮Bitmapでリソースに入れておくと 当然実行ファイルが大きくなっちゃいますが、 内部に圧縮画像として持たせる方法ってありますか?
434 :
デフォルトの名無しさん :01/10/04 16:38
type TStatus = ( A, B, C, D ); var Now : TStatus; みたいに定義してある状態で if Now in ( A, B ) then みたいにやることって出来ますか? if (Now = A) or (Now = B) then ってやるしかないのでしょうか?
>>434 inまで発見できてるのならもう一歩ですな。
if Now in [A,B] then
436 :
デフォルトの名無しさん :01/10/04 16:44
437 :
Delモナ :01/10/04 16:52
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< 久しぶりだモナー ( ) \_____ | | | (__)_) >433 DelphianWorldに[圧縮保存機能付イメージコンポ]ってのがあるから それを使うとPNG並に小さくなるよ。と言うかZLib使ってるからねえ・・・。
>>435 ()ではなく[]でしたか!
ありがとうございます。
EXEをUPXで圧縮というのは後ろ向きかな? リソースのbmpとかは圧縮効かないのかな?
>>435 度々すいません。
if Now in [A,B] then
の「A,B」の部分を引数としてもってくることは出来るのでしょうか?
start( [A,B] );
procedure start( var ST:??? );
begin
if Now in ST then
のような感じに・・・。
このへんってマニュアル読んでも見つからないので。
441 :
Delギコ :01/10/04 17:59
∧∧ / ̄ _(,,゚Д゚) < 集合型です 乙,,__つつ. \_ type TStatus = (A, B, C, D) TStatusS = set of TStatus; procedure start( var ST:TStatusS); begin if Now in ST then
>>441 うう、なんか順序型と集合型の使い方がわかんなくなりました。
type Status = ( A, B, C, D );
var Now : Status;
〜
という「現在の状態を記録するもの」を用意しておいて
Now := A;
現状を記録して
・現状が「A or B」なら実行
・現状が「A or B」でないなら実行
とやりたい。そしてこの条件は引数で指定したいわけです。
if 〜 else if 〜 よりか
case of 〜
のがスッキリした記述になるから順序(集合?)にしたんですが、
なんか stringで if 使ったほうがいい気がしてきました。(TДT;)
自分で書いててなにがなんだか。
443 :
デフォルトの名無しさん :01/10/04 20:14
>>442 集合型なら
type Status = set of (A, B, C, D);
でしょう。
>・現状が「A or B」なら実行
if Now = [A,B] then
...
>・現状が「A or B」でないなら実行
if not (Now = [A,B]) then
...
ちなみに型名の頭には T を付ける慣習があるので、
付けるようにした方が見やすいよいと思います。
あと集合型の名前の末尾は s が付くようにした方がよいでしょう。
Delphiで定義している集合型と列挙型の名前を参考にしてみれば
よいと思います。
444 :
デフォルトの名無しさん :01/10/04 20:35
ギコスレはレベル高いのでこちらで質問します。 よろしく
すいませんが質問です。 チュートリアルに 「コンポーネントパレットの[Additional]ページにある ActionManager コンポーネントを ダブルクリックして,フォームに配置します。このコンポーネントは非ビジュアルなので, フォームのどこに配置してもかまいません。」 って書いてあるんだけど、[Additional]には BitBtn、SpeedButton、 〜、ColorBox とあるんだけど、ActionManagerはありません。 これってどういうことなんでしょうか?
446 :
デフォルトの名無しさん :01/10/04 21:14
[Additional] に ActionManager あるよ。 pro版使ってるけど。
447 :
デフォルトの名無しさん :01/10/04 21:15
整数(Word)を実数(Extended)にキャストするには?
キャストなんて出来ないよ・・・
>>447 キャストの結果どちらをお望みですか?
1)整数の値をExtendedにしたいなら単に代入すれば大丈夫です
2)内部のビット情報をそのまま移動する abosolute で別の変数を同じアドレスにする
か record で case を使う
ただし、ビット幅が違うので無意味です
451 :
デフォルトの名無しさん :01/10/04 21:36
>>450 質問をいろいろ間違えてました。すみません。
Sec : Word;
x,y,r : Integer;
なときに、
x := r * Cos(2*Pi/(Sec/60) )
をやりたいのです・・・
x := floor(r * Cos(2*Pi/(Sec/60) ))でとおると思う人ー
453 :
デフォルトの名無しさん :01/10/04 21:44
ふーん x := r * Cos(2*Pi/(Sec/60) ) こういうのVBだととおるんだねー
>>453 すんません。Cでも通ります。ほんとすんません。
>>452 Truncというのを使うことにしました。
Floorは未定義とか言われて弾かれました。ごめんなさい。
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
@' ― (,,゚Д゚) < みんな面倒がって説明しないけど、
し― し-J \___________
>>445 超外出で、チュートリアルの記述ミスです。
なんとか自分で工夫してみてくれ。
458 :
デフォルトの名無しさん :01/10/04 22:31
>>456 ActionManagerはPro版とEnt版のみです
(Delphi6バージョンアップ案内の機能一覧より)
TImageでいろいろ書いたのをアイコンにしたいです。 やり方がわかったらここに書きます。
>>443 >>・現状が「A or B」なら実行
> if Now = [A,B] then
これは「A and B なら実行」になってしまうのではないでしょうか?
あと、 case でスッキリ書くことを目的とするならばやはり
集合じゃなくて順序になるんでしょうか?
しかし大きなヒントを得ることができました!
ありがとうございます。
ちなみに VBを使っていたクセで「intInteger、strString、prcProcedure」
みたいに型を頭に付けるようにしてます。
>>437 圧縮保存コンポ探してみるです。Thx!
だめだ・・・さっぱりわからないです。 TIconはファイルまたはストリームからしか設定できず、 TImageはそのどちらにも出力できないですよね?
464 :
デフォルトの名無しさん :01/10/04 23:29
hInstanceはvarのところに定義しなくても使えるようですがなんで?
465 :
デフォルトの名無しさん :01/10/04 23:32
>>463 TImage.Picture.SaveToFile(const FileName: string);
とか
TImage.Picture.Icon.SaveToStream(Stream: TStream);
とかあるけど・・・
466 :
デフォルトの名無しさん :01/10/04 23:39
>>464 定義済み変数のひとつです(所在はSysInit)
>>465 ありがとうございます。で、さっそく
iconStream : TMemoryStream;
Image1.Picture.Icon.SaveToStream(iconStream);
Application.Icon.LoadFromStream(iconStream);
として実行してみたところ、
ソースパスが見つかりません
Graphics.pas
といわれてしまいました。
ライブラリか何かを指定しなければならないのでしょうか?
>>466 定数じゃないんですよね。
その管理とかをしなくても、必要なときに使って問題ないんでしょうか?
469 :
デフォルトの名無しさん :01/10/05 00:14
>>468 全然問題ないです
VCLの中でも実際に使われています
(CreateWindowExとかで)
470 :
デフォルトの名無しさん :01/10/05 00:17
>>467 uses の中に Graphics が入っていないとか?
(Formを使っていれば自動的に書かれているはずですけど)
>>470 usesの中にはGraphicsは入ってました。
ここで無いと言われたGraphics.pasというファイルは、検索しても
確かにありませんでした。
ライブラリかなんかのソースだと思うんですけど、
Delphi6のPersonal版にはついてないんですかね。
で、ためしにコンパイルして実行してみたところ、
アイコンイメージが不正です
といわれてしまいました。
どこか致命的なミスがあるんでしょうね・・・どこでしょう。
472 :
ななしヘタぐらま :01/10/05 00:23
>>433 リソースって,リソースファイル?それとも設計時にイメージコンポにいれちゃうこと?
前者ならどんな種類のWindowsビットマップでも読み込めます.
イメージコンポはD5以後だとDIBやJPEGのイメージをそのままの形で格納するようになったようです.
ちなみにD5はRLEの読み込みができないバグがある.要アップデート.
違った・・・usesにGraphicsが入っていなければそのメッセージはでないものね 誰かHELP!
>>471 >アイコンイメージが不正ですといわれてしまいました。
Imageコンポーネントへ絵を読み込んだ時
オブジェクトインスペクタのPictureが(TIcon)となってないと駄目みたいですね
>>469 ありがとうございました。
これで気兼ねなく使えます(w
>>474 どもです。
Imageコンポーネントに絵を読み込んでるのではなく
自分でまるとか三角とかを描いてるんですけど
そういう場合はアイコンに出来ない、ということでしょうか?
477 :
Delモナ :01/10/05 00:45
>>477 参考になりました
イメージリストを使うとは思いつきませんでした
CreateIcon APIでしこしこやるしかないかと思ってましたけど
いずれにせよ初心者スレのレベルを越えてますね
>>477 ありがとうございます。
で、そこを参考にアイコンをまずビットマップに描き、そのあと
ico := TIcon.Create;
il := TImageList.CreateSize(bm.Width, bm.Height);
il.GetIcon( 0,ico );
Application.Icon.Assign(ico); ★
としてみたところ、変な四角がアイコンに設定されてしまいました。
ためしに★部分を
ico.SaveToStream(iconStream);
Application.Icon.LoadFromStream(iconStream);
としてみたところ今度はアイコンイメージが不正、となってしまいました。
う〜ん。あともう少しっぽいなぁ
>>478 私はまだDel2日目の初心者です。if文も書いたこと無いです。
CやJavaなら少しできるけど・・・
>>479 アイコンが本当に出来ていないのかどうか SaveToFileメソッドで
外部に保存して確認してみたところ、きちんと生成できていました。
というわけで、Application.Icon にアイコンを設定するところが
まずかったようです。
Personal版だから・・・なんてことは多分関係ないですね。
ico.SaveToFile('e:\tmp\test.ico'); Application.Icon.LoadFromFile('e:\tmp\test.ico'); のように、外部に一度保存したアイコンを読み込むようにしたら 設定できました。 できれば外部ファイルを使わないで済むいい方法を考えます。
これで最後の書き込みです。 il := TImageList.CreateSize(32, 32); il.GetIcon( 0,Application.Icon ); と、直接放り込んだらうまく行きました。ありがとうございました。
>>461 オレは状態の保持によく順序型をつかってますがなにか?
type
TStatus = (sYes, sNo, sMakura);
var
Status: TStatus;
Staus := sYes;
if Status in [sYes, sMakura] then begin
:
end;
case Status of
sYes: ;
sNo: ;
sMakura: ;
end;
他にもっとエレガントな方法ないかね。
>ちなみに VBを使っていたクセで「intInteger、strString、prcProcedure」
>みたいに型を頭に付けるようにしてます。
ハンガリアン記法はMSがよく使ってるけど、あまり言い評判はきかないね。
オレはPointer型のときにpつけるぐらいかな。
あとはVCLのソース風にしてる。
VCLって何?
>>485 Visual Component Library
ネタ?
487 :
デフォルトの名無しさん :01/10/05 18:37
TThread使っているのですが、あるスレッドではprocedure宣言がちゃんと 出来るのに、もうひとつのスレッドでは「未定義の識別子」と言われてしまいます。 type TMyThread = class(TThread) public procedure SetConfig(var S:String); // ここだと「未定義」 end; procedure SetConfig(var S:String); // ここだと通る 〜〜〜〜〜 procedure TMyThread.SetConfig(var S:String); begin 〜 end; 〜〜〜〜〜 procedure Foo; begin SetConfig('A'); end; のように書いてます。 しかしTMyThreadの定義の外に書いて、「TMyThread.」を消すと コンパイル出来るようになります。 これはどのような違いなのでしょうか。
488 :
デフォルトの名無しさん :01/10/05 20:09
>>487 説明がいまいちよくわからんのだが、
とりあえずスレッドの前に覚えることがたくさんありそうだな。
オブジェクト指向言語は初めてか?
クラスとかスコープとかメソッドとかわかるか?
なんかの参考書でもう少しObject Pascal勉強すれ。
位置から説明すると大変なので、とりあえずヒントを出しておくと。。。
スレッドのオブジェクトは生成してるか?
MyThread1 := TMyThread.Create(False);
とかしていてそのオブジェクトがスコープの範囲内なら
MyThread1.SetConfig('A');
でいける。がんばれ。
>位置から説明すると大変なので、とりあえずヒントを出しておくと。。。 一からだな。
>>488 説明ヘタですいません。(汗
とにかく実践してみてわからないとこがあったら調べるということをやってるので
スコープ、クラス、継承などは浅い理解しかありません。
TMyThread.Create(False);はしてあります。スコープという言葉をヒントに
procedure MyThread.ProcTest;
begin 〜 end;
procedure MyThread.Execute;
begin
ProcTest; // コンパイル通る
end;
なるほど。同じ MyThreadの範囲でなら大丈夫なのですね。
今作っているのが3つのUnitに別れてまして、
Unit1(MyThread1 を作成)
↓ スレッド起動
Unit2(MyThread2 を作成)
↓ スレッド起動
Unit3
そして Unit3 の中に MyThread2 の内容が書かれています。
Unit2 から MyThread2.ProcTest を呼び出すことは問題なし。
これは Unit2 内で MyThread2 を作成しているから、という理解でいいでしょうか。
問題となっているのは、 MyThread2.ProcTest を Unit1 から
呼び出そうとしている時だったのですが、MyThread2 は Unit2 から
作り出されるものだから Unit1 から見えない場所にある。
これがスコープ範囲外ということなのでしょうか。
そして
type TMyThread2 = class(TThread)
の定義外に書くということは TMyThread2 のものではなく、
プロジェクト全体のグローバルな関数になる。
正しい理解ではないかもしれませんが、なんとなくスコープというものが
わかったような気がします。
スコープとは・・・ unit ...; interface uses ...; type TFoo = class // デフォはpublic. procedure ...; private // クラス(実装部)の内側か,同一ユニットでのみアクセス可. procedure ...; protected // ほぼprivateと同様.但しユニット外からでもサブクラスであればアクセス可. procedure ...; public // どこからでもアクセス可. procedure ...; published // ほぼpublicと同様.実行時型情報を持たせるための物. property ...; end; var // 他ユニットからアクセス可. ...; const // 同上. ...; implementation var // ユニット内でのみアクセス可. ...; const // 同上. ...; procedure ...; var // 手続き,関数内でのみアクセス可. ...; const // 同上. ...; begin end; end. だいたいはこんなもんだと思うけど, 間違ってたら誰かつっこんでくれ.
492 :
デフォルトの名無しさん :01/10/07 00:59
TImageでアニメーションをさせようとしているのですが、 再描画の際にちらついてしまします。 これってどのようにしたら回避できるのでしょうか? for i := 0 to 10 do begin ImageList1.Draw( Image1.Canvas, 0, 0, i ); Image1.Refresh; end; googleって探してるのですが いまいちこれという回答が見つかりません。
Image1.DoubleBuffered := True;
495 :
ななしヘタぐらま :01/10/07 06:28
>>485 Visual Component Library(びじゅある こんぽーねんと らいぶらりー)の略.
ライブラリーっていうのはプログラミングの世界では
あると便利なプログラムの部品みたいなものを集めたもののこと.
あらかじめ用意されているものは特に基本ライブラリーといわれたりします.
VBとかだとエディットもボタンも言語の一部だけど,
他の言語ではたいてい,基本的な命令や関数以外は基本ライブラリーの形を取っています.
コンポーネントは説明不要ですよね.
エディットコンポ,ボタンコンポ,タイマーコンポ,…その他もろもろです.
ビジュアルというのはここでは
エディットやらボタンやらを実行時と同じイメージで
ポコポコ貼り付けられること.
びじゅあるべーしっく(VB)のびじゅあると同じ意味.
ただし『びじゅあるしぃーぷらすぷらす』(Visual C++)は
なまえこそびじゅあるですが実際は全くそんなことはないので要注意.
>>486 わからなくても無理はないと思うな.
最初に始めた言語がCとかなら別ですが
BASICやDelphiだったりすると
『基本ライブラリ』などという概念を意識することはないでしょうから.
※BASIC系だと意識しない,以前に全てが言語仕様なので
『基本ライブラリ』自体存在しない…はず.
496 :
デフォルトの名無しさん :01/10/07 07:04
Delphi6personalとそれ以外の違いは? ネット上のフリーのコンポーネントをインストールしようとして、 できないのが多い。 vclieとかfileutil.pasがないと怒られる
497 :
Delモナ :01/10/07 07:43
≡ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ≡( ´∀`)< JAVA勉強中だモナー ≡ ( つ=つ \_________ ≡| | |\ ≡(__)_)\ ≡ ◎ ̄ ̄ ̄ ̄◎ >492 俺は、Form.CanvasにBitbltで直に書き換えている。 バックバッファも自分で管理。面倒だけど自由度あがるしね。 >496 俺もコンポーネント作っているが、エディションに依存するような コンポーネントは書かない。そもそも使っているのがPersonalだからだけど。 作者に頼んで改良してもらうとかしてもらおう。 それでもダメなら問題個所を修正してしまうのが良いかと。
personalにないファイルを他人から貰うとやばいの? ていうかフリーのコンポーネントの中に、personalにないが他のエディションに 入ってるファイルを一緒に入れてるのがあったが。 ゴメン、Delphiは使い出したばかりでもっと勉強してから聞きます
>personalにないファイルを他人から貰うとやばいの? やばいよ。完全なライセンス違反。 Borlandユーザに犯罪者はいらん。
>>496 vclieってTWebBrowser関連?
それだったら上のほうで回避策が載ってる。
501 :
Delはじめて物語 :01/10/07 13:12
「はじめてのDelphi」にかいてある、 「ラベル」っつーのが、Del6personalには無いような気がするんだけど。 どこにあんの? わかんないんで、StaticTextとか言うやつで代用してる。 ま、それでいまんとこ問題ないけど。
[Standard]のAって書いてあるやつだよ。
503 :
Delはじめて物語 :01/10/07 13:20
鬱だ… こんなもんも見つかんなかったのか… 目の前じゃねーか…
504 :
Delはじめて物語 :01/10/07 13:24
ちなみに、 LabelとStaticTextって、どう言う風に使われるべきものなの? 「はじめての〜」やった限りでは、 同じように動いてんだけど。
>>504 >TStaticText はフォーム上にテキストを表示するウィンドウコントロールです。
>
>ユニット
>
>StdCtrls
>
>説明
>
>TStaticText コンポーネントは TWinControl から継承されているためにウィンドウハンドルを持っていることを除けば TLabel に似ています。
>ActiveX のプロパティページのように,コンポーネントのアクセラレータキーがウィンドウコントロールに属さなければならないときは,TLabel のかわりに TStaticText を使います。
506 :
デフォルトの名無しさん :01/10/07 15:08
Personal使っているんですが、 FormatMaskText ってないの? LightReport2 を組み込もうと思ったらFormatMaskTextが未定義ってでるんだよな・・・
class foo{ static int var; }; みたいなのはどうすればいいのでしょうか?
>>507 言語が違うということは,実装方法そのものを変えなきゃいけない。ということ。
「みたいなもの」を何をするために使うの?
その内容によって答えも変わる
>500 TUIWebBrowserの話です 上で思い切りガイシュツだった・・ おかげでインストールできました この板に感謝! ただpersonalだからか分かんないけど インストールできんコンポーネントが多いんだよね・・・ delphian worldにあったextmemoは速攻でインストールできたけど。 作るならリッチテキストエディタの当たりか? テキストエディタは多すぎるから
FAQだね。Delphiだとやけに長くなる。 property使わずにTFoo_Value変数に直接アクセスすれば簡単だけど。 interface type TFoo = class private class function GetValue: Integer; class procedure SetValue(const Value: Integer); protected property Value: Integer read GetValue write SetValue; end; implementation { TFoo } var TFoo_Value: Integer; // TFooで使いまわす共通の変数 class function TFoo.GetValue: Integer; begin Result := TFoo_Value; end; class procedure TFoo.SetValue(const Value: Integer); begin TFoo_Value := Value; end;
RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!! RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!RubyUzai!!
propertyという修飾子のところを勉強することができました。
ありがとうございます。
>>510 Delphiを触りだして2日目なので勘弁してください。
>>508
513 :
Delモナ :01/10/08 21:29
| |_∧ モナーッ |´∀`) | / | / |/ | みんな、元気にプログラミングやっているかモナー? 質問とか無いけど、無いことはいい事だ。 みんな悩んでいない証拠だからね。
人間悩むことをやめたら,それは堕落の始まりである(かもね).
515 :
デフォルトの名無しさん :01/10/09 00:08
コードの記述についての質問です。 例えば、変数を宣言する時の記述ですが 1.var i: Integer; // コロン(:)の右側に半角スペース 2.var i : Integer; // コロンの両脇に半角スペース 3.var i:Integer; // コロンの脇に半角スペース無し 4.var i : Integer; // 改行あり など、人によって記述がまちまちで、 どれを使えばいいのか、混乱してます。 “正しい記述”みたいなものはないんでしょうか。
516 :
デフォルトの名無しさん :01/10/09 00:10
比較的その手の規制が厳しい C に比べて
元が教育用言語のpascalなので、
極端な書き方さえしなければ 可読性を損なう事は少ないですから
あまり気にする必要はありませんよ
>>515
Del使いは現行Pascal(Borland独自)が標準化されてない点に ついてとか危惧したりしないの? 将来を不安がったり。 Borland無くなったら、それで終いよ?
519 :
デフォルトの名無しさん :01/10/09 00:37
>>518 プログラム言語は別に何でもいい
その時点でもっとも効率が良いと思われるツールを使うだけ
Del使いにはそういうスタンスの人が多いと思うけど
520 :
デフォルトの名無しさん :01/10/09 00:39
おまえらVCLが無いと、なんにも出来ないもんな。
521 :
デフォルトの名無しさん :01/10/09 00:40
Delphiスレ一つにしろっていっとろうが! そんなにDelスレ上げまくって楽しいのか?
522 :
デフォルトの名無しさん :01/10/09 00:40
何か作ろうとする度に、こういうコンポあります?とか言ってるもんな。
あっちのスレでまた始まってるよ はやくお戻り >520
525 :
デフォルトの名無しさん :01/10/09 00:43
早く某ランドが潰れないかなぁ
>>519 同意。EXEのみで動くという点でDelを使うことにした。
みなさん数学およびコンピューターサイエンスも忘れずに
528 :
デフォルトの名無しさん :01/10/09 02:39
>>522 車輪の再開発を出来るだけ避けたい、ということだから
むしろそういう姿勢は奨励されるのでは?
もちろん、無い時点であきらめる人はダメダメだと思うけどさ。
カーネルハッカが少ないか、ディストリビューションがないと何もできない のね、とか、そんな感じ。
530 :
デフォルトの名無しさん :01/10/09 11:50
MyThread.OnTerminate := procedure; みたいにイベント発生時のプロシジャーを指定しますが、 ここで引数を指定する方法はないのでしょうか。 MyThread.OnTerminate := procedure('A','B'); みたいに。 受け渡したいものは事前にグローバル変数に値を入れておいて、 それを読ませるとか素直にやるしかないのでしょうか。
TMyThreadのフィールドとして持たせればよい。 TMyThread=class(TThread) public a, b: Integer; end; MyThread.a := 10; MyThread.Execute;
>>531 ううむ、やはり引数指定は無理ですか。
教えたいただいたように
TMyThread内のpublicに記述してやるようにします。
533 :
名無しヘタぐらまさん :01/10/09 12:33
>>530 >>531 さんの方法でよいと思いますが
(フィールド変数はプロパティにしたほうがいいと思う)
もし引数を渡すイベントがほしいのでしたらそういうイベントを定義して,
継承したクラスに追加します.
以下は処理中の進行をあわせて発生するイベントの例.
TMyProgressEvent = procedure (Sender: TObject; Done, Count: integer) of object;
TMyJob = class(TObject)
private
FOnProgress: TMyProgressEvent;
protected
procedure Progress(Done, Count: integer); virtual;
public
procedure Execute; virtual;
property OnProgress: TMyProgressEvent read FOnProgress write FOnProgress;
end;
// 処理
procedure TMyJob.Execute;
var
i: integer;
begin
for i := 0 to 9999 do
begin
if (i mod 100) = 0 then
Progress(i + 1, 10000);
// 作業
end;
end;
// イベントハンドラが割り当てられていたらそれを呼び出す
procedure TMyJob.Progress(Done, Count: integer);
begin
if Assigned(FOnProgress) then
FOnProgress(self, Done, Count);
end;
534 :
Delはじめて物語 :01/10/09 13:18
Quick Startとかいう付属ドキュメント見てんだけど、 ActionMenuBarとかActionManagerとかActionToolBarとかが Personalには付いてないの? それ使いまくってるんだけど。 そんで見つかんなかったんで、 何か似てる感じのMainMenu,ActionList,ImageList,ToolBarを使ってんだけど。 これで代替可能なんでしょうか? ドキュメントで言うとおりの挙動にはしたけど。 何かだましだましやってる感じがしてるんで、ちゃんと知っときたいんです。
535 :
名無しさん :01/10/09 13:40
Delphi 6 Parsonal を使うにあたってすごくわかりやすいチュートリアルってどこかにありませんか? ヘルプのヤツって Personal 向けじゃないところがあって・・・
>>533 なるほど、イベントを自分で定義してしまうわけですか。
重要そうなので覚えておくことにします。
すいません、もうひとつ質問です。
例外処理についてなのですが
--------------------
procedure TMyThread.Execute;
begin
proc0;
proc1;
end;
--------------------
procedure proc0;
begin
try
〜処理〜
exception
ErrCode := 1;
end;
end;
--------------------
というコードで、proc0内部で例外を起こし ErrCode := 1; に入りました。
ここまではいいのですが、何故かその後 proc1 まで実行してしまうのです。
残りはパスして TMyThreadを終了し、メインスレッド内にあるエラー表示処理に
とばしたいのですが継続実行されてしまうのです。
http://www.nifty.ne.jp/forum/fdelphi/faq/00236.htm を見る限りでは exceptionを書かなければエラーフックしないので
素通りすると思っていたのですが。
ひょっとしてこれは TMyThreadというスレッドのルートで実行
しているからなのでしょうか?
>>536 「exception」→「except」ですね。
finally と 勘違いしてるように思うよ
>>536 エラー処理(except内部)が終ったらその次から実行されるから
その次の隠れたexitを実行して、return するのが正解
>>536 エラー表示処理というのがよくわかんないが勝手に想像して書くと。
procedure TMyThread.Execute;
begin
try
proc0;
proc1;
finally
エラー表示処理(同期処理すること)
end;
end;
procedure proc0;
begin
try
〜処理〜
exception
ErrCode := 1;
raise;// 例外再生成
end;
end;
「exception」→「except」 間違い。 コピペしたままだった。
>>539 ありがとうございます。わかりました、「raise」でした。
exceptの中を実行して「例外じゃなくなったよ〜」っていう
状態になってたのですね。
raiseで例外再生成することで思い通りの処理になりました!
>>541 わかってよかったな。
エラー表示は同期処理しろよ。
なんか書き込みがないな・・・
じゃあ書きます。 TListboxでhintを出しているのだが セル(?)を移動してもhintは更新されない・・・ メーリングリストの例でもいまいち理解しきれんかったので誰か教えて・・・ 実際aplication.cancelhintを使うタイミングも解らないし・・・ ヒントが出ているかどうか調べるプロパティがあれば処理できるんですが ヘルプ探しても見つからなかったもので・・・
546 :
デフォルトの名無しさん :01/10/11 01:26
sageてどうするよ・・・
547 :
デフォルトの名無しさん :01/10/11 02:02
>>545 VCL のヒントは、デフォルトではコントロール単位に定義されている。
マウスポインタをのっけると「私はファイル名一覧でござい」と出るわけだ。
リストボックスの場合、各行はそのままユーザーに見えているので、
(たとえばリストボックスにファイル名が出ているとして)
sample.txt を選択状態にして「sample.txt」というヒントが出ても
別にうれしくないよね?
どの状況でどのようなヒントを出すべきなのかはある程度状況が決定しないと
決められないので、そこまで VCL として対応きれない。
548 :
デフォルトの名無しさん :01/10/11 02:28
>545 WM_MOUSEMOVEでは?
自己レス 例ですが、こんな感じでできました。 マウス動かすたびにパパパっとヒントの文字列が変わる・・・感動だ procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin listbox1.Hint:= inttostr(listbox1.ItemAtpos(point(x,y),true)); Application.ActivateHint(point(x,y)); end; ヘルプ調べまくりー。 ヒントくれたおかげだかなんだかたどり着けました。 かまってくれてありがとうです。
550 :
デフォルトの名無しさん :01/10/11 11:42
スレッドの中からアプリケーション終了処理をさせようと 思ったのですが Application.Terminate; をやろうとすると未定義の識別子と言われてしまいます。 メインフォームのほうでは問題ないです。 スレッドの中からは終了させられないのでそしょうか?
551 :
デフォルトの名無しさん :01/10/11 13:04
>>550 Applicatoin が未定義なの?
Terminate が未定義なの?
>>551 未定義なのはApllicatironです。
情報少なくてすいません。(汗
>>552 あ、ヘルプのユニットのところに Formsって書いてありますね。
uses に Forms 追加で動作しました。
ありがとうございます。
スレッドからアプリケーション終了していいんか?
メインスレッド以外からApplication.Terminate呼ぶのはまずい。 中で呼ばれてるCallTerminateProcsで呼ばれる、登録されていた 終了関数の中に誤動作するものがあるかもしれない。 単にPostQuitMessage(0)するならそういう問題はなさそうだけど 今度はCallTerminateProcs自体が呼ばれない? メインウィンドウにWM_CLOSEをPostするとかが無難かな?
>>555 スレッド内で処理するデータの中に「これを読んだら終了しなさい」
というキワードを入れておいて、それを読んだら完全にアプリケーションを
終了させたいと思っています。
この場合は TThread.OnTerminate で指定されてる処理をする必要もないので
直接終了させても問題ないかなと思ったのですが、そうでもないのですか。
>メインウィンドウにWM_CLOSEをPostするとかが無難かな?
とは具体的にどのようにやるのでしょう?
Synchronize でやればそんな気にしなくていいように思うけど? >555
>>556 PostMessage( Handle, WM_CLOSE,0,0);
>>557 けど? と言われても。
確かにSynchronize使えばVCLのスレッドで実行してくれるので安全だね。
>>557 synchronize(CloseQuit);
procedure TMyThyread.CloseQuit;
begin
PostMessage(Application.Handle, WM_CLOSE, 0, 0);
end;
とやって確かに終了はしますが、アプリケーションエラーが
発生してしまいます。
例外を発生させて途中の処理を省きスレッドをで終了させ
メインスレッドで終了させたほうが安全でしょうか?
>>559 PostMessageを使うのならsynchronize使わないで
直接実行できるよ。
あと、スレッドはスレッドで自分で終了しないと…
>>559 560さんに追加するにゃ
555 さんが メインウィンドウにって書いてるにゃ
渡すハンドルは Form1.Handle にゃ
>>561 Form1.Handle でできました。
ありがとうございます!
>>557 ひょっとして、
PostMessage( Form1.Handle, WM_CLOSE,0,0);
やった場合って Form1 の OnCloseは実行されないのですか?
最後の状態が保存されないのでひょっとしてと思いまして。
パーソナルのパッケージ版を4800円で買えば正規登録ユーザになれるの? 将来アップグレードのときにProfessinal版が安く買えるようになるのかな。 だれか買った人いないですか?
>>563 PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
だけなら OnCloseも OnCloseQuery も呼ばれる
PostQuitMessage(0); やってると 呼ばれないよ
どっかでやってるとか?
>>565 そうですか。ありがとうございます。
もうちょっと原因を調べてみます。
「あめ猫」…20年前に流行った「なめ猫」を思い出した。(笑
PostMessageは綺麗じゃないな。 Form1にCloseByThreadメソッドみたいなの作っといて、 そのメソッドで全スレッド終わったか確認して、Form1自身を閉じれば良いじゃない。
>>567 type EExitApp = class(Exception);
〜スレッド内〜
raise EExitApp.Create('ExitApp');
例外作って「終了コマンド受けました」画面を出して
ちゃんと終了させるようにしました。
Delphiが持つ例外処理の考え方って素晴らしい。^_^
569 :
デフォルトの名無しさん :01/10/12 21:45
初心者質問で、すいません FormをCloseで閉じた後、Showで再表示すると 閉じる前に入力していた値が残ってしまいます。 これは、仕様なのでしょうか? Formを再表示すると、値をクリアしたいのですが、 どのようにすればよいのでしょうか・・・
570 :
Delあめ猫にゃ :01/10/12 21:55
あめ猫は消極的反対だにゃ ・・・ どっちでもいいけど・・・・
571 :
Delあめ猫にゃ :01/10/12 21:58
間違えた・・・
>>569 showは画面表示だけなんで実際には消えてない
だからOnShowイベント内部で初期化のコードを
Delあめ猫にゃ さん、ありがとうございます。 OnShowイベントに初期化のコードを書いて解決しました。 VBからDelphiに移ろうとしているのですが、 画面の初期化って面倒なんですね。 VBは画面が完全に消えるので、何にも考えてませんでした。 逆に、画面が残っているDelphiの利点ってあるのでしょうか? Delphiユーザーの方は、みなさん、初期化のコードを書かれている のですか?
>>572 正直消えない方が良い。
今日ずっとcloseしたらreleaseされると思いこんでて
どうやって処理しようかと考えていたが・・・ただShowすればいいだけだと今気がついた。
必ず消えるとなったら消えるだけだが、
消えないとなれば必要なときに消せるという選択ができるのでよい。
>FormをCloseで閉じた後、Showで再表示すると
>閉じる前に入力していた値が残ってしまいます。
create と release を使えば次呼んだとき必ず初期化されてない?
初期化コード書くよりは楽だと思うけど・・・どうだろ
>>572 おらの場合はVBの方が扱いにくい。
Unloadしてもメモリに残ってるし。
DelやBCB(つーかVB以外の言語)みたいに
表示のみなら.Show & .Hide
完全に初期化したいなら.Destroy & .Create(delete & new)
って明示的に宣言した方が管理しやすいと思われ
>>572 追加。
Show & Hideはツールボックスみたいなのを使うとき便利。
AdobeとかMacromediaのUIみたいなやつ。
Delphiって、Rubyみたいにオブジェクト指向プログラミングができますか?
>576 Rubyとはどんな言語なのか、見たことも触ったこともないのですが、 SmallTalkとは、ちょっと違っていて、C++/C#、Javaとはよく似ている オブジェクト指向言語を搭載しています。
578 :
デフォルトの名無しさん :01/10/13 03:52
SetWindowRgn を使ってリージョンは成功したのですが、 これを戻す方法がわかりません。 そんな方法ってありますか?
>>578 SetWindowRgnのhRgnパラメータをNULLにすればいいんでないの?
>>579 nilはダメだったのでウィンドウサイズのリージョン作って、戻したように
見せかけてみました。
で、また切り替えボタンでリージョン設定するとなんか形がおかしなことに。
リージョンって何回も変更できないのですか?
581 :
デフォルトの名無しさん :01/10/13 06:27
>580 nilはどうして駄目だったの?
>>581 SetWindowRgn(Handle, nil, True);
とやってみたのですが
[エラー] main.pas(574): 'HRGN' と 'Pointer' には互換性がありません
と言われてしまったのです。ううむ。
>582 そこでくじけないで nilがダメなら 0を試そうよ
584 :
デフォルトの名無しさん :01/10/13 15:36
dbExpressを利用してOracleに接続するアプリケーションを作成したのですが、 dbexpora.dllも一緒に配布するのが面倒です。 ヘルプを読んだところ静的リンクをすれば、単一のEXEだけで配布できて(・Д・)ウマーかなと思うのですが、 具体的にどうやればいいのかわかりません。 教えてください。
585 :
デフォルトの名無しさん :01/10/13 19:31
CSV形式のテキストファイル(カンマ、改行区切り)は、 どのように行えばよいのでしょうか?
>>585 CVSファイルに「何を」行うんですか?
分からんので読み書きの方法でも。
読むときは
TStringListのLoadFromFileで読んで、各行をさらに
行用のTStringListのCommaTextで分解、かな。
書くときも同様。SaveToFileで書くだけ
>>586 すいません、読み書きの方法を聞くつもりでしたが、
書き込みの時に、きちんと書いていませんでした。
m(__)mすいません
でも、つたない文章から読み取って頂いて助かりました。
ありがとうございます。
588 :
デフォルトの名無しさん :01/10/13 23:20
C++かじってからこっちに来ましたが、 var const a:Integer=100;{←ここだけ定数で} b:Integer;{←これは変数のつもり} とかやって10分ほど悩んだのは私だけでしょうか?
>>588 悩むのは勝手。
他人の思い込みを書き込まれても共感しないよ。
どこがおかしいのか2分間気がつかなかったよ
age
節ない。
>>583 「0」で戻せました。nilでダメだったと思考が止まってました。
ところでリージョンのデータって一度使用されると破棄されてしまうのでしょうか?
中村拓男氏の NkBitToRgn.pas を使って Bitmapから
リージョンデータを作成し、一度目はうまくいくのですが、
再度そのデータを使ってリージョンをきろうと思ったのですが
反映されてくれないのです。
private、public、protected のどこで定義してもダメでした。
>>593 APIマニュアル読めー。
一度設定すると所有権がOS側に移るので勝手に解放されるし、
もう自分で操作してはならない。
>>594 ありがとうございます。
ううーん、本格的に組むわけではないのですが
APIマニュアルとかやっぱり必要みたいですね・・・。
>>595 まずは Delphi 付属の日本語ヘルプを眺めてみることを勧める。
ネットワーク接続が気にならない環境なら、オンライン版 MSDN 日本語版。
ただし、こちらもすべての API が載っているわけではない。
何も最新の API だけを使いたいわけではないだろうし、Win98/Me で動かしたかったら
古いヘルプに載っている範囲の API を使うしかないんだし。
597 :
デフォルトの名無しさん :01/10/14 04:45
Tstringlistから空白行を削除したかったのですが while (stringlist.Items.IndexOf('') >0 ) do stringlist.Items.Delete(stringlist.Items.IndexOf('')); とやっても削除されなくて・・・ indexofだと空白は検索されないようですがいい方法ありませんですかね。 もう一つstringlist作って空白じゃなければaddってやるしかないかな・・・ どうも格好悪い気がする。
598 :
デフォルトの名無しさん :01/10/14 05:04
For i := stringlist.count - 1 down to 0 do if StringList[i] = '' then StringList.Delete(I); 動作確認とっていないけど、Sort していなければこれで十分では?
>>598 ありがとうございました。
downto なんて忘れてました・・・
stringlist.items.deleteの時は便利ですね。 indexOf に拘りすぎてたかな・・・
>0 だと 0 の時は入らないよ。
>598 その場合も空白は見つけられないよ。
えっ駄目!? いまほかのところを修正中だからまだ実験してないのでした・・・うーん・・・
ところで空白行ってどういう行? そのへんがあいまいな気がします。
604 :
デフォルトの名無しさん :01/10/14 05:46
>603 Length(s)=0であるような文字列s
やっぱり
>>598 で出来たようです。
初心者としてはでかいプログラムになってきたので把握が・・・1000行程度なのになぁ
>604 それなら while (stringlist.Items.IndexOf('') >0 ) do stringlist.Items.Delete(stringlist.Items.IndexOf('')); で最初の行以外はいけるとおもうけどな。 効率は悪いけど。 598でもOK。
607 :
デフォルトの名無しさん :01/10/14 06:00
For i := stringlist.count - 1 down to 0 do if StringList[i] = '' then StringList.Delete(I);
>>607 げ、操作ミス失敬。コードコピーしていじろうとしてたら送信してしまった。鬱
while (stringlist.Items.IndexOf('') >= 0 ) do stringlist.Items.Delete(stringlist.Items.IndexOf('')); でうまくいかない理由が知りたい。
>>609 ">="ならうまくいくっしょ。
">"だから先頭行が見えないだけ。
>>609 いや例えば
_index:=stringlist.Items.IndexOf('');
だと _index には必ず -1 が入ってるみたい
空白行があろうが無かろうが。
無意味に長くしてみたYO(アホ) firstEmpty := stringlist.IndexOf(''); if firstEmpty >= 0 then begin stringlist.BeginUpdate; (* 空行以外を前に詰める *) newCount := firstEmpty; for i := firstEmpty to stringlist.Count-1 do if stringlist[i] <> '' then begin stringlist[newCount] := stringlist[i]; Inc(newCount); end; (* 後ろを全部消す; 一発削除があればいいのに *) for i := stringlist.Count-1 downto newCount do stringlist.Delete(i); stringlist.EndUpdate; end;
613 :
デフォルトの名無しさん :01/10/14 06:41
>611 >_index:=stringlist.Items.IndexOf(''); >だと _index には必ず -1 が入ってるみたい それは、長さ0の行が無いという事です。
ありゃ、じゃあデバッグ用のshowmessage入れるところ間違えたかな・・・ ちょっと実験してくるYO。
StringList.IndexOfはEmptyStrに対応していなかったと思う。 検索文字がEmptyStrならforで頭からEmptyStrを探し 非EmptyStrならIndexOfの値を返すNULL文字対応IndexOf関数を作るとよさそう。
616 :
デフォルトの名無しさん :01/10/14 11:26
TStringGrid で任意の行を削除する方法はないのでしょうか?
嘘だった。StringsもStringListもIndexOfはEmptyStrにも対応しているな。
>>616 TStringGridのprotected属性にDeleteRowがあるので
継承して見えるようにしたらよいかも。
type
TOpenStringGrid = class(TStringGrid);
procedure TForm1.Button1Click(Sender: TObject);
begin
TOpenStringGrid(StringGrid1).DeleteRow(1);
end;
これだけ1行目が削除されるた。
618 :
デフォルトの名無しさん :01/10/14 12:48
>>617 ありがとうございます、行削除できました。
でも、RowCountを増やして行を追加すると、
削除した行が出てくるんですね。(^^;;)びっくり
私の技量では解決できそうもないので、
行を削除する前に、全ての項目値を消してから、削除するようにしました。
お陰で、削除ができました。
ありがとうございます。
IndexOfの挙動が記憶とどうしても違うので調べてみました。
function TCustomComboBoxStrings.IndexOf(const S: string): Integer;
begin
Result := SendMessage(ComboBox.Handle, CB_FINDSTRINGEXACT, -1, LongInt(PChar(S)));
end;
なんだよ、このソース!!(unit StdCtrls;)
ComboBoxのItemはIndexOfがAPIだからEmptyStrが誤動作していたのか。
(バグがあったのはComboBoxを使っていた時)
HELPみてもこんなのわからないよ
ListBoxについてもこのようなソースがあるので調べていませんが誤動作しているかも。
このような問題があるので注意です。
function TListBoxStrings.IndexOf(const S: string): Integer;
begin
if ListBox.Style in [lbVirtual, lbVirtualOwnerDraw] then
Result := ListBox.DoFindData(S)
else
Result := SendMessage(ListBox.Handle, LB_FINDSTRINGEXACT, -1, LongInt(PChar(S)));
end;
ComboBox.Itemsに対して
TCustomComboBoxStrings.IndexOf
ではなく
TStrings.IndexOfを実行させたいと思い
キャストしてみたのですがコンパイルエラーでうまく記述できません。
実際にはどのようにするのがよいのでしょうか?
>>618 StringGrid1.Rows(i).Text := '';
行の項目削除は上のように一行で済みそうです。
StringGrid.Selectionの選択範囲なども気にすると少々面倒になります。
考えてみてください。
620 :
デフォルトの名無しさん :01/10/14 15:58
質問ばかりで、すいません。 StringGridで固定行をクリックして、並び替えを行いたいのですが、 固定行をクリックした時に、コマンドボタンのように凹んだような 動作は可能なのでしょうか。
OwnerDraw でできます
>>621 回答ありがとうございます。
初心者なりに、OwnerDrawについて調べてみました。
デザインや色を変更するなんですね。
これで、クリックの際に凹凸(ボタンの様な動き)と描画するという
ことなのでしょうか?
HSPとどっちをやったらいいでしょうか?
>>624 はい。 HSPあきたらやってみます。
626 :
デフォルトの名無しさん :01/10/14 18:37
今日、何度も質問してますが、よろしくおねがいします。 m(__)m VBからdelphiに移行しようと勉強しているのですが、 どうやれば、VBよりも高い生産性を出せるのでしょうか? delphiのUnitとVBのグローバルモジュールの違いも、 よくわからない初心者なのです。 マニュアル片手に悪戦苦闘していますが、 delphiってスゴイって体験できる機能を使ってみないと、 いつまでもVBに留まってしまいそうなので・・・ 私と同じようにVBから移行された方は、 delphiのどの機能を使って高い生産性を得られているのでしょうか?
>>626 こないだまでちょろっとVBいじってみましたけど、
何かやるたびにDLLが必要という理由で離れました。
ローカルな環境だけならいいのですが、一般への配布を
考えると DLLのインストールって敷居が高いですから。
バージョン違いの問題とかもあるし。
>>627 回答ありがとうございます。
VBで受託開発をやってますけど、MS-Officのバージョン、
IEのバージョンで全く動作が異なり、私も何度も泣かされました。
配布する事を考えるとexeだけでの配布ができるというのは、
環境に影響されないので、とても魅力的です。
ただ、生産性について、まだ見えないことが多くて・・・
type TFunc = function: boolean of object; TTest = class function Func: boolean; : end; procedure TTest.HogeHoge; var p: Pointer; begin p := @Func; : end; エラー: 変数が必要です。 procedure TTest.HogeHoge; var p: Pointer; f: TFunc; begin f := Func; p := @f; : end; だと、オッケー。 こんなもんなの? 関数参照使えばいいんだけど、リストなんかの項目でPointerでないとダメだと思って下せえ。
630 :
デフォルトの名無しさん :01/10/14 20:27
あげ
p := @Func; だとFuncの返却値(boolean)のアドレスになってちまうから仕方ないのか。
>>626 >>627 一度、VB の事をすっかり忘れると良いと思うな。
VB でああやっていたのに.. と考えちゃうとそこから先に行かない。
VB に限らないけど。
あと生産性云々はコンポーネントを書き換えたり新しく作成できるようにならないと
分からないと思う。転がっているコンポをただ使うだけで満足できるのなら VB の方が
良いかも。
TMethod
>>626 おお、同士!
俺は取敢えずVB的でも良いから一つ作ってみる事にしたよ。
OOなんかはその次からって事で...
>>626 かなり語弊があるかもしれんが
従来のプログラムだと1から10までコーディングして、
OOの場合(VBも含むが)は既存のコンポの機能追加&改造
のみをコーディングするっていうイメージかな。
この辺の扱いを実践出来るようになると、生産性が大幅に上がるYO!
単純にTStringList、TIniFile、TRegIniFile、TListあたりから 使っていくと便利に思えるのではないでしょうか。 AnchorプロパティやConstrainプロパティなども便利かも。
637 :
デフォルトの名無しさん :01/10/15 01:28
>629 @@ はどぉ?
638 :
デフォルトの名無しさん :01/10/15 02:34
VBにDelphiのPanelに相当する部品ってあったっけ? フォームをデザインする際 PanelのAlignプロパティはかなり便利だと思うけど
639 :
デフォルトの名無しさん :01/10/15 03:01
>>619 >ComboBox.Itemsに対して
>TCustomComboBoxStrings.IndexOf
>ではなく
>TStrings.IndexOfを実行させたいと思い
>キャストしてみたのですがコンパイルエラーでうまく記述できません。
>実際にはどのようにするのがよいのでしょうか?
>
type
TIndexOfMethod = function(const S: string): Integer of object;
procedure TForm1.Button1Click(Sender: TObject);
var
P: TIndexOfMethod;
begin
P := ComboBox1.Items.IndexOf;
TMethod(P).Code := @TStrings.IndexOf;
Caption := IntToStr(P(''));
end;
640 :
デフォルトの名無しさん :01/10/15 09:11
「ヘルプ」の「トピックを検索」で 単語を入力しても一覧に現れないんです。 'ExtactFilePath' とか 'TString' とか。 そのくせ、エディタ上で TString と書いてから F1 を押すと ちゃんとヘルプが表示されます。 なんとかなりませんか。
仕様です
まずはバージョンを言いなさい
643 :
ななしヘタぐらま :01/10/15 10:25
>>640 綴り,間違ってるヨ.
"ExtractFilePath"
"TStrings"
ヘルプを見るときは正しく売っていたのかもしれませんし
原因が別にあるかもしれませんが
とりあえずもう一度挑戦してみては?
644 :
デフォルトの名無しさん :01/10/15 10:43
バージョンは Delphi6 Pro です。
>>644 さてはOSはWindows9x系だな?
646 :
デフォルトの名無しさん :01/10/15 11:25
>>645 ああ、そうそう Kylix ではなくて Delphi です。
どうすればよいのですか。
サポートに電話しろ。 次の書き込みは、電話してからね♥
648 :
デフォルトの名無しさん :01/10/15 11:48
>>626 APIを使うときにいちいち宣言する必要がない。
VBつかってたの2までだから今どうなのか知らないけど。
649 :
Delphi超絶技巧キボンヌ :01/10/15 17:24
>>639 わおぅ、わたしのような厨房には超絶技巧にしか見えん
650 :
ななしヘタぐらま :01/10/15 18:28
>>626 生産性という意味ならどちらも差はないと思います.
フォームを書くのに見ため通りに作れるし,
自分で書かなければならないコードも少ない.
生産性という売りはVBに対しての言葉じゃないと思う.
ただ,エラー処理という点ではどうですか?
VBは2しか知らないのですが
特にファイルを開く処理に失敗したときのエラー処理,
・デフォルトだとプログラムが終了してしまうので
エラー処理ルーチンを書かなければならない.
・しかも開く場所ごとに書かなければならない
(VBはローカルエラー処理はなかったでしょうか?でもそれなら発生場所ごとに分岐が面倒かも)
・エラー処理コードは結構長くてソースが汚い.なんのコードかわかりにくい.
でもDelphiだと
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
このままでOK.読み込みに失敗したらイベント待ちに戻ってくれる.
他のケースで処理ルーチンを書かなければならない場合もありますが,
その場合でもはるかに簡潔にわかりやすく書けますし,
挙動も確実です.
エラー処理でドツボにハマった経験はDelphiでは一度もありません.
ココハホントウニショシンシャスレナンデスカ?
652 :
デフォルトの名無しさん :01/10/15 19:32
>>651 Delphiは初めてだけど、他の環境ではかなりの経験がある
という人も混じっているようですね
プログラムの初心者はモナースレの方がいいのかも
653 :
デフォルトの名無しさん :01/10/15 19:42
もう1つ新しいDelphiスレッド立てようよ
Delphi Personalなんてものがあったんですね 今日登録してきました VisualC++によるWindowsアプリの開発で 自分の限界を知ってしまったので 大学入学を機会にプログラミングを止めてしまったのですが Del厨なるものを大量発生させるDelphiならば 案外楽しめるかもと思い、挑戦してみます
>>632 >>634 >>635 >>636 >>638 >>648 >>650 みなさん、レスありがとうございます。
TStringGridやTIniFileは昨日使って試しました。
かなり便利だと思います。
土日でdelphiに必死に触れてみましたが、生産性については、
よくわかりませんでした。
ですが、私と同じように移行された方がいらっしゃる事と、
いつまでもこのままでは、ずっとVBで悩まされ続けるので、
本格的にdelphiを習得しようと思います。
継承など便利な機能があるのは本から知りましたが、
まだ良さを理解できない初心者なので、
みなさんが言われるように、生産性ってのは
後から実感できるものかもしれません。
(開発するアプリによっても異なるでしょうし)
大変参考になりました。
ありがとうございます。
m(__)m
ちょくちょく質問を書き込むかもしれませんが、
よろしくお願いします。
がんばります。
656 :
Delはじめて物語 :01/10/15 22:04
汎用関数の作り方が分かりません。 付属ドキュメントにもなんも書いてない。 オーバーロードは書いてあるからあると思うんだが。 どうしたらいいんだろう。
なぜか突然クラスを理解できた。override と overload も。 これでやっとオブジェクト'思考'出来るようになったかもしれない parsonal にもクラス補完機能が欲しい
659 :
デフォルトの名無しさん :01/10/16 17:49
質問でつ。 当方VBしかやったことないんですが、移行(フリーのやつへ)は簡単ですか? 操作性が全然違かったりするのでせうか?
プロフェッショナルへの逝行は簡単です。コンポーネントが増えますから。 フリーのやつは、データベースコンポーネントがカットされてるので、 難しいのではないでしょうか。
661 :
デフォルトの名無しさん :01/10/16 18:18
662 :
Delはじめて物語 :01/10/16 23:04
汎用関数ないんじゃ、 どうやってそれと同じようなことすんの? やっぱそれなりに必要なもんだと思うけど。
663 :
デフォルトの名無しさん :01/10/16 23:16
そんな事するなよカッコわりーな
664 :
デフォルトの名無しさん :01/10/17 07:11
すれ立てるほどでもないスレから引っ越してきました。 MediaPlayerで音楽を聴くときに出てくるみょわーんとした 画像ありますよね。あの手のを作りたいのですが、 参考サイトとかありますでしょうか? あまり凝らないで良いです。 ソフトの背景に使いたいのです。
>>664 平滑化という処理判るかにゃ?
Pixels[X, Y] の四方八方の点から 例えば (中央*4+上+下+左+右)/8 みたいにゃ計算の事
オフスクリーンのビットマップTBitmapを2つ用意しといて交互に
これを繰り返すとモワーとなるにゃ
動かしたいなら重みを替えてみるにゃ 上の重みを大きくすると上に動くにゃ
中央にだんだん動くようにしたいなら 重みを中央に向くように変更しておくにゃ
|
| ∧
|⌒∂ にゃ
| ┃))
|ー ミ
|⊂)
|⌒) AA貼ると叩かれるかにゃ?
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ @' ― (,,゚Д゚)つ < AA貼るなゴルァ し― ∪ \____________________________
>>665 この手の処理はMMX使うと早いんだよね。
Del5じゃ使えなかった記憶があるんだけど、
Del6Perとかじゃどうなのかな…
>>666 ∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
( ) \_____
| | |
(__)_)
>>665 AAより「〜にゃ」口調の方がたたかれると思われ…
670 :
Delあめ猫にゃ :01/10/17 11:20
>>669 了解・・・でも時々は使わせて
ところで フォルダオプション->ファイルタイプで出来る関連付けをDelphiのコード
からやりたんだけど 手軽な方法は?
やりたいのは VC++,BCB4,Delphi5,Delphi6 とインストールしてるもんだから
マウス右クリックに open以外に openVC とかを増やしてるんだけど
これインストールの都度やるのメンドクサイ(入れてるフォルダも違うし)から
VBからだと Memo1.Lines.LoadFromFile('C:\autoexec.bat'); だけでも便利!と思ったんだがどうよ? ListBox1.Items.LoadFromFile('C:\\autoexec.bat'); とかも。
672 :
Delモナ :01/10/17 17:45
凵@ ∧_∧ / ̄ ̄ ̄ ̄ ̄ 刧 \(´∀` )< 久しぶりだモナー 刧刧凵@⊂\⊂ ) \_____ 刧刧刧 | |\| _刧刧刧刧凵Q(_(__)\______ \ モナー号 一世  ̄ / \_______________/ >667 MMXはインラインアセンブラ使うとき。 いくらなんでもアセンブラで書くのは大変でしょ。 俺は、Scanlineを使ってる。 でも、ボカシの処理はどうしても重くなるからアセンブラでやったほうが 良いと思うがやり方が分からないのでやっぱりScanLineでやってる。 重みなんていう考え方があったんだ。はじめて知った。 早速、試してみる。
>>670 はやっぱりレジストリでやるしかないみたい。
で、以下のようにして関連付けに追加は出来た
あと、Delphiのパスを自動的に取得出来ないかな
uses Registry;
function GetExtTypeName(ext:string):string;
begin
Result:='';
with TRegistry.create do try
RootKey:= HKEY_CLASSES_ROOT;
if OpenKey(ext, false) then begin
Result:=ReadString('');
CloseKey;
end;
finally Free;End;
end;
procedure AddExtAction(ext,actionName,exePath:string);
var typeName:string;
begin
typeName:=GetExtTypeName(ext);
if typeName='' then raise Exception.Create(ext+'が未登録');
with TRegistry.create do try
RootKey:= HKEY_CLASSES_ROOT;
if not OpenKey(typeName, false) then
raise Exception.Create(ext+'に'+typeName+'が未登録');
OpenKey('shell\'+actionName+'\command', true);
WriteString('', exePath+ ' "%1"');
CloseKey;
finally Free;End;
end;
使用例
AddExtAction('.dpr','openDelphi4','C:\Borland\Delphi4\BIN\Delphi32.exe');
∧∧____ / ̄ ̄ ̄ ̄ ̄ /ミ,,゚Д゚ミ ./\< Delphiパスはレジストリ決めうちかも。 /| ̄∪∪ ̄|\/ \_____ |____|/ トコトコ ,,,,∪∪,,, ,, HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\App の値がこれでした C:\Program Files\Borland\Delphi6\Bin\Delphi32.exe
>>674 だめだった D5 にゃ App なかった
Delphi32.exe のファイルを検索してパス名で処理しようかな
>>675 昼に
>>670 へのレス書き込もうとしたら書き込めなかった鬱。
>>672 >MMXはインラインアセンブラ使うとき。
>いくらなんでもアセンブラで書くのは大変でしょ。
確かに、漏れみたいにアセンブラ書くスキルがないと大変だけど、
ネットを探せばだいたいサンプルコードとかあるでしょ(w
雑誌でもいいし。
>>673 >Delphiのパスを自動的に取得出来ないかな
Del5Pro Update1。
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\5.0
の名前
App
にDelphi32.exeのフルパス発見。
>>677 >やっぱりDel6にはApp あったけど Del5には無かったよ
>>676 では Win2k SP2 + Del5 Pro Update1 で確認。
今、Win98 + Del5Pro(Update無) でも確認したけど、やっぱりあったよ。
間違えて消したか、何かの拍子に消されたか、
もしくはインストールに失敗して作成されてなかったか。
同じキーの RootDir って名前の値をとって、しっぽに '\bin\delphi32.exe'
の文字列を足す、いうのは?
漏れはやはり両方で存在を確認したけど。
もしくは実は HKEY_CURRENT_USER と HKEY_LOCAL_MACHINE の間違いだったとか?
とりあえず解決したならそれでヨシ、か。
>ところで、このスレ なんか常連専用スレになってない?
漏れは、Del猫引退(?)の後遺症かしらないが、
ここのところDelスレ全体が活気が少ない気がする。
確かに後遺症あるよね なんか話広げるようなレスは躊躇してしまうというか 答えだけしか書けないというか
680 :
Del初めて物語 :01/10/18 13:39
>>677 >ところで、このスレ なんか常連専用スレになってない?
そんないことないですよ。
結構頻繁に利用させてもらってます。
そろそろ新しいアプリに挑戦してみたいので
そしたらまたお世話になりたいと思います。
682 :
デフォルトの名無しさん :01/10/18 22:08
たまにバジョージョン情報ダイアログで
http://www. 〜 とか作者のサイトが書かれてて
それがwebへのリンクになっているラベルとかありますけど、
ああいうコンポーネントってDelphiではあるのでしょうか?
>>682 Del6だとTBrowseURLアクション
684 :
Delモナ :01/10/18 22:21
┏━━━━━━━━━━━┓
┃100モナ / ̄\ ∧冂∧ .┃
┃ | |( ´∀` )o ┃
┃ \_/ (∪ φ) ┃
┗━━━━━━━━━━━┛
Del6updateしたモナー。アップデートする前のDelでコンパイルしたEXEは
1301KBだったのに、update後では1200KBまで下がったモナー。
ふざけんじゃないモナー。Debugコードなんか入れて出荷するなモナー。
>682
俺は、TLabelで、カーソル変えさせて色を変えてアンダーバーをつけて、
クリック時に
ExecuteFile('
ttp://www.yahoo.co.jp/ ','', '', SW_SHOW);
みたいにやってるが。似たようなことでmailto:
[email protected] みたいなことも
出来る。
ただし、対象マシンで、ブラウザとメーラーがちゃんと設定されてないと出来ないが・・・。
>>683 残念。TLabel には Action プロパティないんだ。
>>685 Actionプロパティになくても
ActionListにBrowseURL標準アクションを追加して(BrowseURL1とする)
LabelのOnClickで
BrowseURL1.URL := Label1.Caption;
BrowseURL1.Execute;
するだけっしょ。
フォントとかカーソルとかもそれっぽくプロパティいじれば完了。
なるほど、いくつかやり方があるのですね。 勉強になります。
688 :
デフォルトの名無しさん :01/10/19 01:05
>>Delはじめて物語 汎用関数ってどういう関数のこと言ってる?
グローバルな関数・手続きの事だったりして。
C++のSTLみたいなのではなく?
691 :
del若葉3日目 :01/10/19 23:02
プログラムとは違うのですが、 同じ某ランドのc++Builderとdelphiは言語の記述以外に、 何が違うのでしょうか? delphiを必死に勉強しているのですが、 周りからは「何でc++builderじゃないの?」って聞かれました。 あまり詳しくないので、delphiの評判だけで選んだのですが、 皆さんは、どうしてdelphiを選ばれたのですか?
692 :
デフォルトの名無しさん :01/10/19 23:05
質問です。 stringgridで特定のセルの背景色を変えるにはどうしたら良いのでしょうか? brushというのを使っても変わってくれないのですが・・・
693 :
デフォルトの名無しさん :01/10/19 23:44
>>691 某ランドは、Turbo Pascalの昔から Pascalコンパイラの
コンパイル速度が速かった。
今でも、DelphiはC++Bより断然速い。
でもって、新技術の投入は通常まずDelphiで行われ、
それから数ヶ月たってからC++Builderのバージョンに反映される。
そもそも、C++Builderは歴史が浅い。
USではDelphiをVer.1から使っているような連中のコミュニティが活発で、
そこからサードパーティ製のコンポーネントなどが出ているが、
彼らの共通語はObject Pascal であってC++ではない。
C++の方が馴染みがあるというだけでは、
C++Builderのデメリットに勝てない。
かく言う自分は、元C++プログラマで、
GNU C++ => UNIX C / VB / VC++ => Delphi と移ってきたけど
Delphiが一番プログラミングが楽。
なれれば文法は気にならない。
新技術ってほどでも無い。 ただのマイナーチェンジ・・
>>692 OnDrawCellイベントでCanvasを使って塗る
質問です。 画面に画像のみを表示するプログラムを作りたいのですが、 新規作成→フォームを削除→project1.dprを編集 で、Image1:=TImage1.Create(?); のときの「?」の部分にオーナーコンポーネントが必要ということなので、 それも生成しようと考えたのですが、そこでもオーナーコンポーネントが必要ということなので、 もう、どうしたらよいのやら・・・
>>691 Borlandの好きなように拡張できるからだろ。拡張に変な制約がない。
C++は標準ゆえに言語仕様に手を加えることができない。
C++がCのしがらみもあって、現代的には複雑&低機能な言語仕様のままになってしまっている。
それに比べるとJava,C#,ObjectPascalなんかは「現代的な」機能を備えている。
グローバル関数があったり、GCがなかったりの違いはあるけどね。
698 :
デフォルトの名無しさん :01/10/20 00:26
ダイアログのコンポーネントが豊富だけど、なしてフォルダ選択は 標準で付けないの? 何か理由があるのだろうか? いろんなページでサンプル見たけど、「プラットフォームに依存しまっそ!」って 注意される「なんか古くさい形」のヤツ以外はけっこう複雑(オレには)な ことしないとダメなのねぇ。不思議。
SelectDirectory()じゃないのか?
700 :
デフォルトの名無しさん :01/10/20 09:23
旧版 SelectDirectory は、デスクトップなどの論理構造を再現できない。 新版 SelectDirectory は、デフォルトで開いているフォルダが指定できない。
701 :
デフォルトの名無しさん :01/10/20 09:28
>>696 TImage.Create(nil);
702 :
デフォルトの名無しさん :01/10/20 09:38
>>700 sFolder:='C:\なんたらかんたら';
FOptions:=[sdAllowCreate, sdPerformCreate, sdPrompt];
SelectDirectory(sFolder, FOptions, SELDIRHELP);
では?
ハヤオキスレ
フォームに、
Win 3.1タブにある
DirectoryListBox
DriveComboBox の2つを貼り付けて
DriveComboBox1.DirList を DirectoryListBox1 に
・・・・ていうのじゃダメですか?
>>698
Object Pascalの言語仕様的にいけてない所、改良・拡張してほしい点などは何かありませんか?
>>705 begin〜end を {〜} に変更して欲しい。
709 :
デフォルトの名無しさん :01/10/20 19:09
無料になったBorland Delphi 6 Personal 初めて使った方々、 使い勝手とかどうですか?
>>706 なんかそれやられたらPascalらしくないなあ。
C#にいっちゃうかも俺。(W
711 :
デフォルトの名無しさん :01/10/20 21:00
括弧はいやだ。なぜって? try 〜 finally 〜 end; が、 try{ 〜 } finally { 〜 } になってしまうではないか。 try{ finally } だと変だろ。 finally が finally begin の意味もかねているから、 begin が存在せず end だけがあっても違和感がないのだ。 括弧なんぞ利用すると、try , finally .. end に複数 命令を書くときはいつでも括弧でくくらなきゃいかん。
物事には始めと終わりがあるのです。
Delphi系スレッドだれかロギングしてる人いる?
google
715 :
名無しヘタぐらまさん :01/10/20 22:45
>>691 Delphiを選んだ理由.当時はまだC++Builderはなかった(笑)から.
私は元々仕事でもBASICを使っていたので
Cにこだわる理由はなかったのです.
「C++以外はなじめない」
とか
「C++でないといやだー」
「多重継承マンセー」
というのでなければ
Delphiのほうが良いのではないかと.
VBの実行とほぼ同じ感覚でコンパイルが終わってしまうのは驚異的.
>>698 全く同感.コンポーネントにして標準装備してくれればいいのにね.
結局自分でフォルダ選択コンポを作りました.
(まだバグ有りですが)
ちなみにフリーのフォルダ選択コンポがあったとおもいましたが
あれはフォルダの初期指定,出来たかなぁ..
>701 とりあえず、実行できました。 ParentにCanvasを持った何か指定しないと表示できないようです?
いろいろ意見レスどうもです。
やっぱり、そー思ってる人はいるんだ。
自分だけかと思った(^^;。
まだ始めたばかりなんで。つーか、無料にしたってのはやはり
大きいなぁ。スゲーぜ>ボー
無料じゃなかったら絶対関心持たなかったもんな。
>>715 コンポーネント自作っスか!スゴイっスね!
なかなか難しいこってす。ハイ。
>ちなみにフリーのフォルダ選択コンポがあったとおもいましたが >あれはフォルダの初期指定,出来たかなぁ.. できたよ。
SHBrowseForFolderでいいじゃん
720 :
デフォルトの名無しさん :01/10/21 03:25
721 :
デフォルトの名無しさん :01/10/21 03:28
>716 bitbltでハンドル使えば転送できるよ
>フォルダ選択コンポ m&i氏のサイトにたしかそんなコンポがあった記憶が…
だめ、もうわからん。 目的に似たことができるコンポーネント拾って使います。
結局、既存のコンポーネントを組み合わせて作っちゃいました<フォルダ選択
やり方のtipsの分かりやすいページがあったんで。
感謝感謝だなぁ<解説ページ
まだまだ分からんこと多いけど(^^;。
>>724 何が分からんのか、どのスレの人か書かんと分からんよ(笑
訂正。「レス」だ…。
728 :
デフォルトの名無しさん :01/10/22 17:37
FormのBorderStyleをbsNoneにしたときのフォームの移動でなんかいい方法ありませんか?
ボーダーが無いウィンドウをマウスで移動したいのなら、どこを つかんだら移動状態にしたいのかを考えてみなされ。
730 :
デフォルトの名無しさん :01/10/22 22:10
フォームをつかんだらってことで、OnMouseDown、Upで UpのときにTopとLeft変えて移動させてみたんですけど ボーダーをつかんで移動させるようにはいかないのかな?と・・・
731 :
デフォルトの名無しさん :01/10/22 22:13
ニフより if ssLeft in Shift then begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE or 2, MakeLong(X, Y)); end; をOnDownへ (ただし、上にはみ出さない?)
ニフチってまだ人いるの?
ニフ、まだまだいるよ。 FDELPHIもまだ結構書き込みあるよ。 あそこは優しい人が多いね。
735 :
デフォルトの名無しさん :01/10/22 23:58
>>728 「D6が無料になったんで勉強しだした者」なんですけど(^^;、
不定形リージョンについて解説してるページで解決できそーだと思うんですが、
どーでしょう?
※ここのスレって、どういう時にsage進行にしてるの?
| | | | | |
| |゜⌒/..| \ | ゜|
゜ ⌒// ..| ゜ \ ゜ |
| / / | | |ヽ゜ \⌒゜ |
| . ̄ ̄ ̄ ̄|| ̄ ̄ ̄ ̄
| ∧ ∧|| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ミ,,゚Д゚彡 < ずぶぬれた。寒い!
゜ | ミ∪ Φ \______________
| | .ミ ,, ミ | |
___.U..U____ ゜
http://www.borland.co.jp/qanda/delphi/d0002348.html だけどこれだとForm上にコントロールがあるとダメなので
例えばPanel1を押して動かしたいのなら
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.hwnd = Panel1.Handle)
and (Msg.message = WM_LBUTTONDOWN) then
begin
SendMessage(Self.Handle, WM_SYSCOMMAND, SC_MOVE or 2, 0);
Handled := True;
end;
end;
このようにしてもいいかも。
でも
>>732 さんの方法の方がもっともよさそう。
SendMessageをPanel1.Handleとしても面白い。
>>735 気ままにsage進行
∩ ∩
ミ ゙''゙〜
ミ∧,,∧ /
ミ,,゚Д゚彡 <
>>730 、Formのボーダー?
U U \そりは難しい・・・・・・
WM_NCLBUTTONDOWNひっかければいいと思われ
>※ここのスレって、どういう時にsage進行にしてるの? 会話が成立している間はsage 話し相手が欲しければage
740 :
デフォルトの名無しさん :01/10/23 21:33
基本的な質問ですみません。 宣言した関数を別のオブジェクトで呼び出すにはどうすればいいですか?
742 :
デフォルトの名無しさん :01/10/23 21:41
>>740 interface 〜 implementation の間で定義した関数類は
その xx.pas のファイル名を uses すると 使う事が出来ます
743 :
デフォルトの名無しさん :01/10/23 21:43
procedure TForm1.Button1Click(Sender: TObject); var moji:string; begin moji:='aiueo'; label1.Caption:= moji; end; procedure TForm1.Button2Click(Sender: TObject); var moji :string; begin label1.Caption:= moji; button1をクリックした後に同じ関数のmojiを使っているButton2を クリックしても結果が表示されないのですが・・
744 :
デフォルトの名無しさん :01/10/23 21:46
>>743 名前が同じでも メソッド内部に書かれた変数同士は独立です
メソッドの外に書くか、こういう場合は
クラスに書きましょう
付属のサンプルコードを良く見てみましょう
746 :
デフォルトの名無しさん :01/10/23 21:49
疑問1
>>743 のコードを見る限り、moji は関数ではない。
変数の事を、単に「関数」と呼び間違えただけなのか、それとも
関数を使おうとして、間違ったコードを書いてしまっただけなのか。
743 のコードが正しいならば、moji をグローバル変数にすれば
良いだけの話ではないか?
>>746 グローバル変数ですか?
N88-BASICしかやったことの無い自分は昨日
Delphiの無償版を入手したばかりで・・
ありがとうございました。
>>747 いや、だから クラスのメンバーに書きなさいって
というかまず、Delphi6\demos の下にある DPRを順に開いてみては
色々試してみては?
コードの一番上の変数宣言で出来ました。
>>748 ありがとうございます(__)
750 :
デフォルトの名無しさん :01/10/23 23:22
タブ型のメモ帳やブラウザなんかをつくるには TTabControlを使ってるのだと思うが やっぱりページごとの内容を配列で保存してるのかな?
TMemoのインスタンスをタブ毎に生成して TTabControl.Tabs.Objectsに対応するメモを代入しておく
>751 なるほど。 その場合、タブが1,2,3とあって2を閉じた場合うまくいきますか?
2を閉じる直前に (TTabControl.Tabs.Objects[1] as TMemo).Freeする インスタンスの管理はTTabControlが負うってことにしとけばいいよ
>753 その方法でやってみます どうもありがとうございました
755 :
デフォルトの名無しさん :01/10/24 22:22
ネット対戦のゲームつくりたいんですけどTClientSocketとTServerSocketをつかえばいいんですよね。 ヘルプはリンク切れ、グーグルはヒットせず……。 すいませんがTClientSocket等の基本的な使い方を教えてください。お願いします。 ひょっとして4800円のパッケージ版には説明書いてます?
>>755 ソケットとか TCP/IP の知識もってるの?
ないんなら DirectX つかえ
昨日のTTabControlの続きです。 ・ TMemoの親にTTabControlを指定して後処理をまかせる ・ タブを増やすときと減らすときにTabIndexに気を付ける(−1にならないように) ・ 同様にタブの数を0にしないように ・ 切り替え時(OnChange)にTabIndex以外のVisibleをFalseに と、いった感じに作ってみました。 そこで、新しくタブを増やすときに procedure TForm1.Button1Click(Sender: TObject); var Memo1: TMemo; begin : : タブ生成(Create) : TabControl1.Tabs.Objects[TabControl1.Tabs.Count-1]:=Memo1; としたのですが、これで問題ないでしょうか?
Memo1 := TMemo.Create(TabControl1); TabControl1.Tabs.AddObject('newtab', Memo1);
>>755 正直、コンポーネント(のヘルプ)に頼る必要性はないというか、
それ以前にソケットを意識せずにまともなもん作れんから注意ね。
761 :
デフォルトの名無しさん :01/10/25 21:48
あのぅ・・・、StringGridのスクロールバーがいつも同じ長さで マックみたいに使いにくいのですが あの長さをIEとか普通のアプリみたいに動的にするには どうすればいいんですか? それともできないのでしか?
>>761 Mac でも、サムの幅は変更できるぞ?というか今はほとんどそうだが。
763 :
デフォルトの名無しさん :01/10/25 23:17
>758 なるほど、そういうやり方がありましたか。
765 :
Delフサギコ :01/10/26 11:55
766 :
デフォルトの名無しさん :01/10/26 13:41
Kylix で C の system の代用になるものって あるのでしょうか? C++ Builder からの移植でそこでつまってしまって... Pascalって TurboPascal 6.0 以来..(^^;
768 :
デフォルトの名無しさん :01/10/26 14:52
>>767 おかげさまで通りました。
ありがとうございます。
769 :
デルファイの名無しさん :01/10/26 15:49
ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、 同じソース内のクラスで定義していない関数や変数はどうなんでしょう。 Create しなくても、インスタンスは存在してるんでしょうか。 また、複数、Create すると複数のインスタンスが出来るものと思っていますが、その場合は、 クラス定義外の関数は一つだけのインスタンスなんでしょうか。 Delphi を使い出してそこそこ長いんですが、そこんところがちょっと分かっていません。
>ところで、クラスで定義した関数群は、Create でインスタンスが生成されると言うことですが、 「クラスで定義した関数群」をメソッドだと仮定すると、「Create でインスタンスが生成される」 ことはありません。Create以前に存在し、複数のインスタンスを生成してもメソッドは1つしか 存在しません。 >同じソース内のクラスで定義していない関数や変数はどうなんでしょう。 >Create しなくても、インスタンスは存在してるんでしょうか。 意味がわからない。 >クラス定義外の関数は一つだけのインスタンスなんでしょうか。 「クラス定義外の関数」をメソッドではない手続き・関数だと仮定すると、コードは一つしか存在 しません。 コードとデータの違いがわかってないようですね。 通常、コードは実行時に変更されることはないので、複数持つ必要はありません。 自分の言葉でなくObjectPascal言語ガイドに定義されてる用語を使ってもらえると 理解しやすいんだけど。
771 :
デルファイの名無しさん :01/10/26 16:32
どうも意味不明なようですんません。。。 そしたら、コンポーネントなどの類も、uses で記述した時点でそのオブジェクトは 実行ファイルの中に組み込まれる、と言うことでいいんでしょうか?
>>771 D5で「アプリケーションの新規作成」で出来たプロジェクトをコンパイル。
実行ファイルサイズ 292,864 バイト
上のプロジェクトのuses節にmath、contnrs、mmsystemを追加してコンパイル。
実行ファイルサイズ 292,864 バイト
不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。
769とは別の話だと思う。
773 :
デルファイの名無しさん :01/10/26 17:13
すんません。。。説明が足りないですね。。。。 実は、今、コンポーネント作りにはまってるところでして、コンポーネント中の クラス定義のメソッドの類は、Create する事で使えるようになるけども、 そのソース中のクラス定義外(グローバルな?)の関数は、そのまま使えるじゃないですか。 >不要なユニット(手続き・関数・クラス等が呼び出されていない)はリンクされない。 とのことですが、このクラス定義外の関数はどうなのでしょう。 1.uses に記述した時点でリンク 2.実際に使用した時点でリンク のどちらなのでしょう。 また、interface 部で定義していない(つまりは他のソースでは利用できない) クラス定義外の関数はどうなのでしょうか。
スマートリンク。って用語で調べるとよし。
775 :
デフォルトの名無しさん :01/10/26 17:37
>>773 お願いだから用語を ObjectPascal に準拠しておくれ。
「クラス定義のメソッド」と言わないで単に「メソッド」で通じる。
また 「クラス定義外の関数」と言わないで単に「関数」で通じる。
とても初心者スレの内容じゃないな。 >とのことですが、このクラス定義外の関数はどうなのでしょう。 >1.uses に記述した時点でリンク >2.実際に使用した時点でリンク そこまでは知らないんだけど、恐らく関数やクラス単位でなくユニット単位でリンクするか どうか決めてると思うので2が正解じゃないかな。 >また、interface 部で定義していない(つまりは他のソースでは利用できない) >クラス定義外の関数はどうなのでしょうか。 これも同じだと思う。例えばinterface部に定義されたクラス等を他ユニットが参照して いればimplementation部もまるごとリンクされると思う。 interface部にクラスを定義、implementation部に関数を定義、他ユニットからそのクラスを 参照というプロジェクトを作る (1)クラスから関数を呼び出してコンパイル。 (2)クラスから関数を呼び出さないでコンパイル。 この(1)と(2)で出来た実行ファイルのサイズを比べてみればわかりそうな。
777 :
デフォルトの名無しさん :01/10/26 18:56
>>773 IDE 上でコンパイルするとソースコードの左側に行単位でちっちゃな○が
出たりでなかったりするよね。
それはその行がリンクされたかどうかを示しています。
778 :
デルファイの名無しさん :01/10/26 19:57
>>各位。ご回答ありがとうございます。
リンクに関してはそうでしたね。使われた時点でリンクされるんですね。
#昔、アセンブラやってたのでそれは分かります・・・
なんかいつのまにやら、質問の方向が変わってしまったようで、改めてお願いいたします。
>>769 の質問に戻りますが・・・・
コンポーネントなどでは、Createでインスタンスが生成されますが、そのクラスに
登録されていない関数のインスタンスはどういうタイミングで生成されるんでしょうか。
1.最初からすでに(恒久的に?)存在している。
2.使用する時点で生成される??
で、ここで、uses された時点で生成されるのか?と思っていたんですが、使用されない
限りはリンクされないので関係ないですね。
#先の質問は無駄ではなかった・・・・
また、そのコンポーネントが複数生成された場合は、インスタンスも複数生成されますが、
そういう登録外の関数のインスタンスは一つだけなんでしょうか。
>>778 たとえば、こんなユニットがある。
unit Unit1;
interface
uses windows, classes;
type
TMyClass = class(TObject)
protected
procedure Method1;
public
constructor Create; override;
destructor Destroy; override;
end;
implementation
procedure NoClassMethod1;
begin
//クラスの外の関数の処理
end;
{ TMyClass }
constructor TMyClass.Create;
begin
inherited;
end;
destructor TMyClass.Destroy;
begin
inherited;
end;
procedure TMyClass.Method1;
begin
//処理1
end;
end.
んで、別のユニットからこのUnit1がusesされ、
TMyClassが使われているとする。
で、コンパイルしたとき
procedure NoClassMethod1;
がリンクされているか、という質問だと理解した。
答えは、リンクされない=exeには含まれない。
関数が使われていない以上、コンパイル時には無視される。
だが、だからといって何でもかんでもusesしたままにしておくのはオススメしない。
initializationなどで使われていると、usesしただけでリンクされてしまうからだ。
(もっともわかりやすい好例はformsユニットだと思われ。一気に300Kは増える。)
長文&多分スマソ。漏れの理解が間違ってたら突っ込み歓迎。
× >長文&多分スマソ。 ↓ ○ >長文&駄文スマソ。 本当に駄文でウトゥだ(;´Д`)
∧∧ / ̄ ̄ ̄ ̄ ミ゚Д゚ミ< 関数のインスタンスという言葉が変です。 〜ミUUミ \____ ∪∪ 関数自体は処理がかかれているだけなので コンパイル時に決まった値を プログラム実行時、最初に確保されるに決まってるでしょう。 ただ、関数内でオブジェクトを生成するコードなどがあるばあい または関数内で構造体を設定する場合などは どうなるのでしょうね。 こういうときは関数内(で生成した)オブジェクトのインスタンスとか いうような言い方がいいかと思います。 関数内ローカル変数/ローカルオブジェクトなどは呼び出された時に 確保されているのかな... 関数を出た瞬間、破棄されるなら何も気にすることはないと思います。
>>778 「登録外の関数」とかいう変な言葉を使ってるから分からなく
なるんじゃないの?ただの関数だよ。Cなどと同じく。
クラスに属する「関数」はメソッド。それだけ。
関数もメソッドも静的に存在してるはず、だが、それがいつメモリ上に
ロードされるかはコンパイラしか知らなくていい。
783 :
デフォルトの名無しさん :01/10/26 20:46
>>778 >コンポーネントなどでは、Createでインスタンスが生成されますが、そのクラスに
>登録されていない関数のインスタンスはどういうタイミングで生成されるんでしょうか。
関数のインスタンスってのが全然意味が分からないんだが。
「インスタンス」以外の言葉を使って説明してよ。
>>781 >コンパイル時に決まった値を
>プログラム実行時、最初に確保されるに決まってるでしょう。
これも意味が分からない。関数はあくまでもコード(CPU命令列)だよ。
>関数内ローカル変数/ローカルオブジェクトなどは呼び出された時に
>確保されているのかな...
関数内のローカル変数はスタックに取られますので、関数に突入した時点で
確保されます。スタックなので当然退出時に自動的に解放されます。
ローカルオブジェクトとは object 型? class 型の事だったら自分で
Freeメソッドを呼ばない限り解放されない。
関数を動的に作る事も当然可能です。 しかし Delphi内部で実際にそれをやっているのは MakeObjectInstance だけです これはしかし関数を作るというより、関数からメソッドを呼び出す為の 非常に小さなコードを作るだけです
785 :
デルファイの名無しさん :01/10/26 22:07
リロードしたら、いきなりこのスレ、行方不明になるんだもん・・・・・ >関数のインスタンスってのが全然意味が分からないんだが。 すみません。私自身、あんまし意味が分かっていないようで。 // ソース1 procedure hogeproc1; procedure hogeproc2; ThogeUnit = class(TForm) ; ; ; がある時に、 // ソース2 var hoge1,hoge2:ThogeUnit; begin hoge1:=ThogeUnit.Create(Self); //←hoge1 のインスタンス(?)が存在している hoge2:=ThogeUnit.Create(Self); //←hoge1 とhoge2 のインスタンス(?)が存在している hogeproc1; hoge2.free; //←hoge1 だけ。 hoge1.free //←ない。 end; あ、インスタンスって、実行時リソースのようなもの?実行オブジェクトはインスタンス には含まれずに一つだけ?なのかな? そしたら、非常に納得のいく結果なのだが・・・・ #勝手に納得すいません・・・・
(゚д゚)ウマー
787 :
デフォルトの名無しさん :01/10/26 22:30
>>785 なんか中途半端な用語の使い方だなぁ。
あなた自身の理解を確認するためにも
・実行時「リソース」ではない「リソース」とは何?
・実行「オブジェクト」では無い「オブジェクト」とは何?
788 :
デルファイの名無しさん :01/10/26 23:08
すみませんすみません。 私の理解が怪しいというのは、すでに暴露されているように十分に自覚しております・・・ 今まで、漠然として、 hoge1:=ThogeUnit.Create(Self); とすると、hoge1 に、Thogeunit のオブジェクトもリソース(と言うよりメモリだな) もどこかからか(コレが重要)コピー/確保されるという理解でおりました。 で、それがインスタンスと称されると・・・ そうすっと、クラスに属してない procedure や function はどこから出てくるのかと、 不思議に思ったわけで。。。 すみませんすみません、こんなお馬鹿につきあっていただきまして、 ありがとうございます。。。
そんなに卑屈になるなよ 理解できたんなら良かったじゃないか
790 :
デフォルトの名無しさん :01/10/27 12:03
TRichEditにEM_AUTOURLDETECT送ってみたんですが まったく反応なしです。URLを検出するにゃどうすりゃいいんでしょう?
791 :
ななしヘタぐらま :01/10/27 19:31
>>769 DelphiのPascal言語はクラスの存在しない従来のPascal言語の上位互換になっていて,
クラスとは無関係の単独の関数・手続きや変数を持たせることができます.
これらはプログラムが始まってから終わるまで存在しつづけています.
これらは“クラスではない”ので“クラスの実体(インスタンス)”という形では存在しないのです.
792 :
タダD6の名無しさん :01/10/27 23:59
タダになったから始めた者なんですが、 「パッケージ再構築の、実行時パッケージを使って構築」って 具体的にどーゆー意味なんでしょうか? これにチェック入れるとexeのサイズが小さくなりますよね。 「使ってないモノはexeに入れないでコンパイルしますよ」って意味かと 思うんですが、違ってますか?どーもヘルプは読みづらい…。 読解力が無いとも思いますが…(^^;。 レスよろしくお願いします。
「実行時パッケージ」のヘルプを読むよろし
794 :
タダD6の名無しさん :01/10/28 00:40
>実際には,vcl と rtl は vcldb の Requires 節で参照されるため >vcl と rtl は入力する必要がありませんこのため,vcl と rtl が >[実行時パッケージ]編集ボックスに含まれているかどうかにかかわらず, >アプリケーションは同じようにコンパイルされます。 サパーリ分がんね(藁
∧,,∧ / ̄ @,,,ミ,,゚Д゚彡 < 自信ないんだけど ⊂,,,,,,,,,つつ. \_ >これにチェック入れるとexeのサイズが小さくなりますよね。 VBみたいにランタイムが必要なモードになるのじゃないかな。 他のマシンに実行時パッケージ(パッケージ=DLLと考えてよし) が入ってないと動かないexeかな。 チェック入れたことないからしらにゃい
796 :
タダD6の名無しさん ◆/ao0MelA :01/10/28 00:51
>>795 レスありがとうございます。
あ、「当たらずとも遠からず」ってとこでしょうか?
>>788 一言
>私の理解が怪しいというのは
わからないのならそれは構わない。誰でも通る道だから。それを理解しようと
質問してるわけでしょ?
質問するときは用語を統一してくれ。頭の中で考えている時は自分語でも
いいけど、他人に説明する時には一般的な用語に翻訳してほしい。コンポを
自作するレベルで用語をあわせられないなら先行きは暗い。
宿題:ObjectPascal言語ガイドを10回通し読み
>>796 使ってるモノもexeに入れないこともあるけどな。
>>792-796 Delphiのバージョンアップを考えると、通常はチェックを入れないほうが無難だよ。
以前、ネットワークもMOもない環境へフロッピーで入れていたとき
フロッピー1枚に収めるためにパッケージを別にしたことがあったけど
Delphiのバージョンを上げてコンパイルすると動かなくなった。
新しいバージョンの同等のファイルを入れてやるとちゃんと動くようになったけど
必要なファイルの調べるのが少し面倒だった。
結局、MOが使えるようになったのでチェックは外したよ。
>>800 みてふと思ったので押しつけTips。
UPX+(Lzh, Zip, RAR等のアーカイバ)は強力だよ。
単にEXEをLzh, Zip等で縮めただけより縮まる。
漏れ、回線が低速なので、EXEを公開する人はUPXと
他のアーカイバを併用してくれるとうれしい…
802 :
デフォルトの名無しさん :01/10/29 00:23
UPXって推奨なんスかねぇ?どーもうさんくさいんだよなぁ…失礼だけど(^^;。 あのそっけない配布元しか無いのかなぁ? 日本製は?
> 日本製は? ハァ?
>>802 >和製
昔PC-98用に diet などがあったね。
805 :
デフォルトの名無しさん :01/10/29 00:43
>>803 いや、予想通りのレスでナニだけど(藁
「日本製の、似たようなのが無いかいな?」ってこと。
804さんは分かってんじゃん。
分かってくださいよー。2つで十分ですよー。
808 :
デフォルトの名無しさん :01/10/29 17:43
別に圧縮しなくていいから ResHacker とかでリソース見られちゃうの防ぐ方法ってないですか?
>>808 別ファイルか暗号化(もしくは両方併用)したものにする。
やはり、そもそもリソース形式にしないのが手っ取り早いかな。
810 :
デフォルトの名無しさん :01/10/30 18:53
'を変数に代入したいんですけどどうすればいいですか? s := '''; なんてのはもちろんダメだったし……。 よろしくお願いします。
811 :
デフォルトの名無しさん :01/10/30 18:59
>>810 おしい。'を出すには、'x2書く。つまり、s := ''''
>>810 文字列がハッキリ分かるようにエディタの色設定をするといいよ
俺は背景に灰色を使ってる
>>813 追加
S:=''';
と
S:='''';
では ; の色が違うので判別できる
>>811-
>>814 なるほど、あと一個書けばよかったんですね(^^
これを機にエディタの色設定も凝ってみたいと思います。
ありがとうございました。
816 :
デフォルトの名無しさん :01/10/30 23:11
TListBoxのアイテム選択でマウスの右ボタンでも選択できるようにするには どうしたらよいでしょうか?
∫ _________ ∧,,∧ ∬ / ミ,,゚Д゚彡っ━~ < これでいい? _と~,, ~,,,ノ_. ∀ \ ミ,,,,/~), │ ┷┳━  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ .じ'J ̄ ̄| ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻ procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if [ssRight] = Shift then begin ListBox1.Perform(WM_LBUTTONDOWN, MK_LBUTTON , Makelong(X, Y)); ListBox1.Perform(WM_LBUTTONUP, MK_LBUTTON , Makelong(X, Y)); end; end;
シツモソ TShellListViewで特定の拡張子のファイルだけ表示させるには どうすればよかですか? プロパティにフィルターはなかったし・・
>817 左と同じ動きになりました! あとは、左右区別用フラグでもつけてと・・・
∧∧ /
>>818 〜''ミ ゚Д゚ミ < どなたかが2chで解決されてましたよ。
"UU'UU" \
//uses StrUtilsを追加
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
Ext:string;
begin
//フォルダは表示する
if AFolder.IsFolder then Exit;
Ext := ExtractFileExt( AFolder.PathName );
CanAdd := AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;
これで、jpg/bmpファイルだけ表示
ありがとうございやす でも単にその手続きを追加しただけではだめなのですね 追加だけではコンパイル通るのに実行はもとのまんまです これいかに? ヘタレですいません
>>821 ShellListViewのAddFolderイベントに割り当ててないとか?
いろいろいじってたらできました イベントにせていしなきゃならんのね アリガチョー
824 :
デフォルトの名無しさん :01/11/02 23:40
ActiveXをとりこんだコンポーネント使ってEXEを作ると、 出来たEXEには、そのDLLは入ってるの?それとも入ってないのかな? どちらでしょーか? うまく質問出来てるかな…。
一般に、Win標準ではないDLL、OCX等を使ったのなら、 EXEとは別にそのDLLを配布する必要があるかと。
>>825 ありがとうございます。やっぱり別途入手する必要(先方が)があるんですね。
827 :
デフォルトの名無しさん :01/11/04 00:01
memo(TStrings)にedit(String)を代入するには、 型の変換をどうすれば良いのでしょうか? ↓の場合はエラーが出てしまいます。 memo1.Lines:=StrToTStrings(edit1.text)
memo1.lines.text := edit1.text;
>>828 ありがとうございます。
ただ、この逆をするとエラーがでるのですが・・
edit1.Text.Lines := Memo1.Lines;
ストリングの変数に入りますね。 var a:string; begin a:=edit1.Text; label1.Caption:=a; end; ああ、ド素人の始めたばかりなのにレスしちゃった。てへ★
>829 まずあなたがやるべき事は、 エラーのヘルプを見る。 何というエラーが出ているのか書く。
>829 Edit1.TextはTStrings型じゃない。String。 TStringsには、直接代入するのは超初歩的ミス。 行を指定して代入するしかない。 Edit1.text:=Memo1.Lines[829が代入したい行]; 文字列を全て代入したければ、 Edit1.Text:=Memo1.Lines.Text; 変数・クラスの違いを勉強し直したほうがいい。 ちなみに、TStrings同士でコピーするには、Assignを使うのが良いです。 後は、初心者本からもっと上の本を買って勉強しながらやりなさい。 初心者本にも書いてある内容だと思うが、初心者スレなので一応説明したぞ。
VBのではよく掲載してありますが、 Delphiでコモンダイアログから取得したフルパスから ファイル名だけを抜き出すにはどうすればよいのでしょうか?
| ExtractFileName \____ ____ \/ ∧,,∧ V/ ミ,,゚Д゚ミっ8< ‖ __ (つ旦,,ノ _ ノ"ヽ .ミ,,,/~), | ミ ゚ー゚彡  ̄ ̄ ̄ .し'J  ̄ ̄| ━┳━ ニラ 茶 ノ オテイレ
835 :
ななしヘタぐらま :01/11/04 18:53
>>829 逆になっていませんよ〜.
逆はこうですよね.
edit1.text := memo1.lines.text;
ただし,memo1のテキストが2行以上になっていたり
1行でも最後で改行されていると
”・・”というゴミが入ってしまう.
>>830 始めたばかりであろうとなかろうと他人に教えるのは非常に良いことです.
それによって教える側も色々な意味で勉強になります.
Delphaiのバージョンアップを考えているんですけど 今4を使っていて大学と同じ6にしたいんですけど どのようにすればいいのか教えていただけませんか?
837 :
デフォルトの名無しさん :01/11/05 00:24
learning版ならダウンロード出来る。 雑誌のCDにも載っていた。
タイプミスしてた宇津氏。 Personalですな…
840 :
下っ端応援団員 :01/11/06 17:49
押忍!失礼します! DBLookupListBox で、選択されてるレコードがリストの トップに表示されるようスクロールさせたいのですが、 どうやるでありますか? 押忍!
841 :
デフォルトの名無しさん :01/11/09 01:19
あげ
842 :
デフォルトの名無しさん :01/11/09 01:34
前にコンポーネントの削除の仕方を教わったんですけど、 どーも何か理解出来てないんでもう一度(^^;。 「空じゃないと削除させないよ」って言われるんですけど、 この「空」ってどういう意味ですかね? 自分でインストールしたコンポーネントの話です。 レスよろしくお願いします。
∧,,∧ / ̄
>>842 \,,,,ミ,,゚Д゚彡 < パッケージ開いてプロジェクトから削除?
⊂,,,,,,,,,つつ. \_
>「空じゃないと削除させないよ」って言われるんですけど、
なんの事でっしゃろ?
えっと、何か公開されているコンポーネントをインストールしたとして、 それが不要(私の場合は使えなかった)とします。 それを削除しようとすると、「空の場合だけ削除出来る」みたいなことを言われるんですよ。 うまく伝わらないでしょうか(^^;。 うーむ…。
エラーメッセージは正確に書き写しましょう
>>843 とりあえず、
>パッケージ開いてプロジェクトから削除?
を当たってみます。ありがとうございました。
>>845 そっスね。
847 :
デフォルトの名無しさん :01/11/09 19:11
まん丸のフォームやボタンは作れますか?
・・・だけにしとこうかと思ったりもしたんだが、 やっぱり不親切かなぁと思わなくもなかったんで、帰ってきました。 CreateEllipticRegion で円形リージョン作って、 SetWindowRgn でフォームにセットすれば、丸いフォームになります。 ボタンも同様でいいけど、丸い枠は描かないといけないな。
________ ,ヘ ヘ /タイミングはどこでやるのがいいか知りませんが ミ,,゚Д゚ミ< ミ,,,,,,,,ミノ \Delフサスレの184をどうぞ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
851 :
デフォルトの名無しさん :01/11/09 20:34
Delphi6のpersonal版を使っています。 OggVorbisエンコーダのフロントエンドを作ろうと思うのですが、 自分のプログラムから他のプログラムを起動する方法を教えてください。
function ExecuteFile(const FileName, Params, DefaultDir: string; ShowCmd: Integer): THandle; これ使えばヨシ。 意味が分からんと言われたらアレだから一応例を書くと ExecuteFIle('c:\windows.notepad.exe','c:\windows','c:\windows\oreore.txt',SW_SHOW);
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < ExecuteFileって、自作関数かな? ,;゙ ミ \_____________ ミ. ミ /゛゛゛゛ ShellExecuteでこんな感じにどぞ uses ShellAPIを追加 TargetFileに該当ファイル名をフルパスで入れる var FileName, FilePath: String; begin FileName := ExtractFileName(TargetFile); FilePath := ExtractFilePath(TargetFile); ShellExecute( 0, 'open', PChar(FileName), nil, PChar(FilePath), SW_SHOW); end;
∧,,∧ /
>>853 修正
\,,,,ミ,,゚Д゚彡 < CreateProcessの方がいいのかもしれません
⊂,,,,,,,,,つつ. \ こんな感じでしょうか?
procedure ExecuteFile(ExeName, TargetFile: String);
var
si: TStartupInfo;
pi: TProcessInformation;
begin
FillChar(si, Sizeof(TStartupInfo), 0);
si.cb := Sizeof(TStartupInfo);
CreateProcess(nil,PChar(ExeName +' '+ TargetFile),nil,nil,
True,0,nil,nil,si,pi);
// 起動したプログラムの終了を待ちたい時はこの行を追加
// WaitForSingleObject(pi.hProcess, INFINITE);
end;
>854 FMXUtilsっていうライブラリを使ってるんです。
_________
∧,,∧ /
>>855 ミ;゚Д゚彡< なな、なんかかっこよいですね
ミつ つ \ >>FMXUtils
〜ミ ,, ミ.  ̄
∪∪
begin end begin end begin end....... もうイヤになっちゃう(藁
858 :
デフォルトの名無しさん :01/11/09 23:44
ファイルを比較するという処理を単純に TFileStreamを2つ使って、2つのファイルを交互に4バイトづつ読みとる というようにしてみたのですが、やたら時間がかかります。 高速化する方法ないですかね
CreateMappedFileを使う。
>859 即レスありがとうございます。 10kB読み込ませるには配列へのポインタを渡すのですか?
>860 CreateMappedBmpですか?
CreateFileMappingでしたごめんなさい
>863 CreateFileMappingでマッピングしてMapViewOfFileで読みとるということで よいのでしょうか?もう少し調べてみます。
FileMappingの使い方を勉強して アルゴリズムを変えることを検討、実践してみます。 どうもありがとうございました。
>>855 FmxUtilsをDel6でコンパイルできないのは自分だけだろうか・・・
(Constsが変わっているだのCopyFileのoverloadが曖昧と言われるだので)
それと、ExecuteFileの中身はShellExecuteだね
868 :
デフォルトの名無しさん :01/11/10 00:53
stringlistをpablicで使うことはできないのですか? 良く分からないからpablicにstringsの変数を作って、 それにstringlistのデータを一行タブコード一行……の形に変えて入れて、 procedureごとに、stringsからstringlistに戻しているのですが、 もっと良い方法がありそうな気がして。
Delスレで「アルゴリズム」はNGワードです(藁
質問の意味がよくわからないsage
pablicじゃ、コンパイルが通らないだRO!
>>868 pablic -> public。pas ファイル一から手書き100回の刑。
それはいいとして、差し支えない程度にコードを載せてみれ。
ぐ!googleでpablicが通ったので自信が無いまま書いてみれば・・・ 質問の目的は、publicレベルで文字列リストを宣言したいのです。 二つ以上のprocedureでstringlistを使うのですが、 中身のデータは同じなので、stringlistを共有したいのです。
>>868 コンストラクタで
FStringList := TStringList.Create;
し、デストラクタで
FStringList.Free;
しないと駄目。
TStringList.Textも見れ。
>>873 クラスを作ってそのフィールドにすればいいのではなく?
その procedure 群は グローバルじゃないとダメなのかな。
コンストラクタ、デストラクタ始めて知りました。 これで、楽にできると思います。多謝
おせーてください サンプルのShellListViewで選択したファイル名の取得はどうすればよいですか? ItemとかSelectedとかDetailsとかいじってみたがだめでした ソース見たけどどのぷろばてーか関数を使うのかよくわからんかった ものすごく単純なことだと思いますがよろしくご指導のほどお願い ヘタレでスマソ
879 :
デフォルトの名無しさん :01/11/10 16:31
880 :
デフォルトの名無しさん :01/11/10 16:47
delphiて本あまりないよねえ
訊き方間違えてごめんなさい。 出来るようになりました。 ありがとうご
882 :
デフォルトの名無しさん :01/11/10 17:27
すみません。質問なのですが、 Delphi6でコンパイルしようとすると 「[致命的エラー] ShlObj.pas(8): ファイル 'OLE2.dcu' が見つかりません] と表示されます。 Delphi6を起動してフォームしかない時にコンパイルしてこのエラーが出ます。 なぜでしょう?
>>880 んだねぇ。
6で無料版出来たんだし、増えてもいいのに。
>>878 shellListView1.SelectedFolder.PathName
>>882 環境オプションのライブラリで、$(DELPHI)\Lib
が抜けてるのかもよ
>>884 レスどうもです。
とりあえず環境オプションの方はちゃんと書いてありました。
それでとりあえず、Sourceフォルダの中からOle2.pasをLibにコピーして
コンポーネントのパッケージのインストールの設定の
「実行時パッケージを使って構築」をチェックして何とか使えるようになったのですが
この方法で問題とかないですかね?
886 :
デフォルトの名無しさん :01/11/10 18:32
Delphi 6 で作成したアプリを Windows XP で起動させても、 Luna スタイルが適用されず、一部が古いスタイルのままです。 Luna スタイルにする方法はありますか? Delphi のバージョンアップ待ちでしょうか。
887 :
デフォルトの名無しさん :01/11/11 00:38
>>886 それは VC で作っても同じだが。
manifest ファイルを作ってリソースに追加。
なお、Delphi6 Update1 は必須。
>>880 最近クソな技術本が多すぎるから一見そう見えるが
実は一つの会社が出してる製品でこれだけ出ているのは
多い方じゃないか?バージョンアップの方が早すぎ。特に海外で
出てる書籍は分量が多いので翻訳作業だけで半年かかりそう。
ところでせっかく雑誌に試用版や無料版つけるならついでに購入券
も付けて書店やコンビニのカウンターで支払い済ませば数日後自宅
に製品が届くとかすればもっと売れそうな気がするのだが・・・・
言語製品じゃ無理か?
889 :
デフォルトの名無しさん :01/11/11 01:27
begin〜endってのやめてほしい(条件分岐で自分で書いててワケワカメ)。 「:」とか「;」も、どーにかしてほしい。 ヘルプも、もすこしどーにかならんもんか。 サンプル、説明無さすぎ。 無料でもらったくせに、要望出すとこんなもんか。 タダだから、文句言えないけど。素人だし。
begin, endなんて表面の問題でしかないし、慣れればいいだけ。 {, }のほうが奇怪だ、ともいえるよな。 しかしmanifest...Del6Up1でもListViewが死ぬ。 comctrls.pas修正技はbpl分離には使えん。Up2はまだか(;´д`)。
892 :
デフォルトの名無しさん :01/11/11 01:32
試しに言語の歴史を辿ってみてください。 begin endを使う言語がいかに多いかわかります。 C++ Builderってソフトを選ばないあなたが不思議です。
893 :
デフォルトの名無しさん :01/11/11 01:32
仕様にどうこういっても仕方ないだろうが ダウンロードする前によく調べんかい
>>889 Begin, Endは元々が良くも悪くもPascalだからどうしようもないよ。
C++Builder使うのはどう?
俺は>889が「Delphiあればあんなソフトやこんなソフトが作れてウハウハだぜ」と 思いつつダウンロードしたはいいが、まともにプログラムなどしたこともなく いきなり作れるためしもなく、気に入らない目に付いたところを上げただけだと思われる。 だからたぶん、BorlandC++Compiler使っても同じ文句、いや、それ以上の文句を言う。 文字列変数がないとか。あと、角度とか。
まーた、どこにでもいる、自分の頭が悪いことを認められず、、 使っているツールに責任転嫁している馬鹿がでた。 begin〜end の使い方すら調べられない程度の頭なんだから、 プログラムなんか辞めた方がいいよ。プログラムする前に 勉強しなきゃいけないことがいくらでもあるはずだ。 馬鹿につきあっている方も馬鹿だな。こういうことも ネットワーク資源の無駄使いだ。ってことに気が付け。 そもそも彼は Delphi に不満があるのではなく、自分の 考えたとおりにおもちゃが動かなかったから泣き叫んでいる ガキでしかない。ガキに理屈が通るはずもあるまい? 泣いていれば、次の新しいおもちゃが手にはいると 思っているんだよ。
ではどっちもどっちという事でよろしいですね?
899 :
デフォルトの名無しさん :01/11/11 09:46
>>897 Copyright(C) by pcode
大人の身勝手な論理だ!
>>897 >馬鹿につきあっている方も馬鹿だな。こういうことも
>ネットワーク資源の無駄使いだ。ってことに気が付け。
みんなこう思ってるからあえて書かなかっただけ
ありゃ。思わぬ反響。 つーか「無料でもらったくせに、要望出すとこんなもんか。」の一文が 読めねーかな? アホ?「要望」って分からんのかな?「ここがもっと○○だったら もっといいかな?」ってことだよ。 理解できた?面白いな。こんなに反響があるとは思わなかったよ。 しかも、アホみたいに「文句あんなら使うなよ」ってヤツが。 「要望」と「文句」の区別(書いてあるにも関わらず)が付かないなんて…。 あ・ほ♥ って、書いてやると、今度は何て返すかな?
>>902 もっと落ち着いた日本語を書きましょう。
昨今の若者の乱れた日本語は嘆かわしいばかりです。
889は数年後自分の恥を知ることでしょう。
905 :
デフォルトの名無しさん :01/11/11 23:58
>>902 あんたそれ、
「Vicual C++で使える言語がC++じゃなきゃいいのに。」
って言ってるのとイコール。
906 :
デフォルトの名無しさん :01/11/12 00:13
私も889さんの意見に賛成です。
907 :
デフォルトの名無しさん :01/11/12 00:15
>>889 >「:」とか「;」も、どーにかしてほしい。
の意味が分からん。
908 :
デフォルトの名無しさん :01/11/12 00:18
>>907 代入演算子(:=)とelseの直前は";"が付かないことかな?
「なんで一行一行行末に";"を付けるんだ!BASICにはいらなかったぞ!」
とかなら最悪。
909 :
デフォルトの名無しさん :01/11/12 00:24
HSPじゃねーの? (ププッ
910 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 00:29
>>889 あれ,会社でレス入れたつもりが入ってない(泣).
条件分岐の記述のわかりやすさ,間違いにくさの点では
Pascal, C/C++ より QuickBASICやVBのほうが優れていると思う.
Pascal は基本的に複数の文のブロックは
なんでもかんでも begin 〜 end じゃないですか.
このために,わかっているだけでふたつの問題が起きます.
1.end を入れ忘れたときに発見しづらい.
2.case 文で行数が長くなってしまう.
1.
end を1か所入れ忘れるとコンパイラはず〜っと後ろのほうで
『endがないぞゴルァ』エラーを返してきてしまいます.
(しばしば最後の行がエラーだったりする)
begin 〜 end が何重にもなっていたり
さらにそれが何十行にもなっていると
どこに間違いがあるのか結構迷います.
QB/VBなら End If,End Select,End Sub といった具合に
ブロックの終わりの名前が区別されているので
わかりやすいしエラーが起きてもすぐに問題点がわかります.
問題のある行がエラーの起きた行の近くに存在するからです.
2.
case 文で条件ごとにブロックを使うと1か所につき2行多くなります.
例を書いたら改行が多すぎると叱られたので省きますが
10か所使ったら20行の差が出るのです.
911 :
デフォルトの名無しさん :01/11/12 00:32
>>910 } を1か所入れ忘れるとコンパイラはず〜っと後ろのほうで
『}がないぞゴルァ』エラーを返してきてしまいます.
(しばしば最後の行がエラーだったりする)
{ 〜 } が何重にもなっていたり
さらにそれが何十行にもなっていると
どこに間違いがあるのか結構迷います.
それ、ブロックを作る言語すべてにいえることでは?
lispやschemeなんて括弧しかないぞ
913 :
デフォルトの名無しさん :01/11/12 00:34
ごめん。ミス。
914 :
デフォルトの名無しさん :01/11/12 00:41
取りあえず、 「Pascal開発環境で改善してほしいところはPascalです。」 という「言語的田舎者発言」は二度と吐かないように。 どうしても実現したかったらBorlandじゃなくてもっとすごい学会にでも論文を提出しなさいな。 ここでこれだけ笑われたんです。学会に行けば一流のコメディアンになれますよ。
>>914 んーでも、自分の顔が気に入らなくて整形する人もいるんだし。
Borland も ノーマルの Pascal じゃ Delphi に使えないから Object Pascal 作ったんだし。
889 は自分の気に入るような言語を自作するといいんじゃないかな。
916 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 00:58
>>889 ヘルプがタコでサンプル,説明が無さすぎというのには同意.だと思うんだけど,
Delphi使いに限って賛同の声ってないんだよなぁ.
いつまでたっても改善されない理由はここにあるのかも.
すでにプログラミング経験が豊富な人間なら
すでにやりたいことが明確なので
これはこうすればいいのかな?って自分で進めていけるけど
プログラミング初心者だとサンプルが無いっていう時点で
そこで止まっちゃうんだよな.
>>894 タダなんだからとりあえず落として使ってみるのはアリだと思うんだけどな.
それにボーランドのサイトを見たって言語仕様のことなんてわからないし
情報を探すといってもこれはこれでスキルを要することだと思う.
プログラミング経験がそれなりにあれば
何をどうやって探せばよいかは見当がつくと思いますけど.
917 :
デフォルトの名無しさん :01/11/12 01:01
918 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 01:18
>>911 そのとおりです.C/C++にもいえることです.
だからなかなかわかってもらえないのでしょうけど.
「そんなものだろう」「なんでそんなことに不満を感じるの?」みたいな.
でも“この部分で”もっと優れた言語を知っている人間から言えば
「なんじゃこりゃ!?」「不便」ってなるわけです.
QBは何年も使っていましたがこの手の問題で迷った経験はないのです.
>>915 プログラミング初心者とかだったらどうするのですか?
プログラムを書く人間はみんな技術者だという発想に問題があると思うのですが….
>>918 初心者だったら気に入る文法の言語を使えばいいだけじゃないカナ。
文法的な不具合は慣れで解消されるよ。
Windows も慣れれば使いやすいのと同じで。
それが良いわけではないけども。
初心者そっちのけの雑談はフサスレでやるよろし そろそろ次スレの季節だね
>>918 あなたが単に最初の方に使ってQBに慣れたからでしょ。
QBは知らないがVBだと
・改行毎に"_"つける言語仕様が嫌でござる。
・callつけないと引数指定に括弧付けられない仕様は不便
なんとかしてくれ。
って言われてまともに相手できますか?
それにPascalの上位互換なのだから
どうしようもないって事はわかるでしょう?
>>914 禿げ同
サンプルが少ないとかHELPが不便というのは
MSに比して開発資金も人員も乏しいBorlandに求めるのは酷だと
みんな知っているから、FDelphiかDelphiMLかDelphi広場に逝ってよし・
>>915 プログラマ初心者なら初心者なりの使い方がある。
我慢して使うか、他の言語に乗り換えるか、だ。
そこまでして、Delphiを使うおうとする気が知れない。
VCL使いたければ、C++Builderもあるし。
そういや、俺もQBからの移行者だったんだが(数年前の話しな)、 GUIアプリ作りやすい、OOやりやすいぜマンセーって感じで、 あまり気にならなかったな。慣れるのは苦労したけどイヤじゃなかった。
ああ、それと、Delphi使うならDelphiだけ読めても駄目だぜ。 なんだかんだいって資料は少ないからさ。 C/C++読めた方(とりあえず書けなくても)が圧倒的に有利だよ。 だって、そこら変からコード拾って来れるし、回りのプログラマにも聞けるし。
初心者だからこそDelphiが向いているんだがなあ。 C++はできることが多すぎて戸惑う。
>>910 >1.end を入れ忘れたときに発見しづらい.
ブロックを先に書いてから中身を書けばそういうミスは殆ど無くなるよ。
C系でも同じ事だけどね。
>QB/VBなら End If,End Select,End Sub といった具合に
Pascalの次にヴィルトが作ったModula-2は必ず制御文はブロック終端
が必要になるんだっけ?
俺は長くなるブロックには次のようなコメント付けるよ。
end; { while }
1、begin〜end であって {} でない事について これは、C/JAVAのように {} に比べて1行に深いネストを書くのを防いで くれています。 一見 Cスタイルの方が楽そうでも、グループ開発になる と、インデントがどうたらこうたらコーデングスタイルが喧しくて、結局手間 の元。 それに、深いネストを書いてしまいそうになったら関数内関数にするとか 構造化するように自然に促してくれるメリットもありますしね 2、End If,End Case,End Procudure でない事について これがそんなに便利だと思えば、926さんのようにご自分でルールを作って それを検証するツールを作っておけばすむ事でしょう もともと深いネストを書かなければそもそも混乱の原因にならないと思います
928 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 17:36
>>921 QBは慣れるも何も最初から迷わなかったのです.
DelphiやCは慣れてもQBのレベルにはならなかった.
これは慣れればある程度解決する問題ですし,
Pascalの上位互換のだからというのも理解してるつもりなので,
ボーランドは言語仕様を変えるべきだとは全く思っていません.
Delphiはこの問題点を無視できるほど良いツールだと思いますし,
実際,Delphiを初めて以来,他のツールは一切使っていなかったりします.
929 :
ななしヘタぐらま ◆B18Bks.Y :01/11/12 17:37
>>889 話を脱線させてしまったので改めて建設的なレスを.
●セミコロン(;)について
文の終わりを示す記号.
BASICのように改行をもって文の終わりとすることもできるのですが
この場合はどんなに長い文でもひとつの行に入れなければなりません.
PascalやCでは『;』を文の終わりと解釈するので,
文を複数の行に分けてソースコードを見やすくすることができるのです.
(のちにBASICも行末に『_』を入れることで
ひとつの文を2行以上にかけるようになったようです.
VBは統合環境でも使えるのかな?)
● begin 〜 end について
詳しくは知らないのですが恐らくもともと
if (条件) then (文) ;
という文法があって then 以後に2つ以上の文を入れるためのキーワードとして
begin 〜 end が導入されたのではないかと.
case の各条件に続く文も恐らく同じだと思います.
これについては近代のBASICのほうがスッキリしていると思いますが
基本的な文法を変えちゃうとも今まで世界中の人が作ってきた
たくさんのソースコードがむだになってしまいますので
そう簡単には変えられないのです.
(Pascalは日本ではマイナーですが世界ではそうでもない)
●コロン(:)について
英語ではある事柄について,場合分けして説明するときに使うことがあります.
英語圏の方にはわかりやすいけど日本人にはさっぱりなのですが.
でも今の話でコロンを使う意味はわかっていただけたのではないかと.
C系では「;」は文の終わり Pascalでは「;」は文の区切り こればっかりはどうしようもないので慣れてください。 いろんな言語があります。慣れりゃどうってことないです。 Delphiに関しては豊富な標準コンポや豊富なオンラインコンポ、 スキルアップしやすい環境など、 初期の違和感を補って余りある利点があります。 もうちょっと頑張ってその段階まで到達しましょう。
>>929 930も書いてるけど微妙に意味が違うので、詳しくはヘルプの
「Object Pascal 言語ガイド」の「Object Pascal の文法」ってところを
見とけばよいよ。
でもなあ、俺もif then の後に<文>はあまりすぎじゃないね。
perlとかBASICの if then <文リスト>が好きだね。
932 :
デフォルトの名無しさん :01/11/12 21:57
まあ字面が気に入らなきゃC#かRubyでもやるこった
バカに説法したがるやつの集まりかよここは 正直、うんざり
構文を自分で作りたい奴にはlisp/schemeを薦める。 括弧だらけになるがな。
935 :
デフォルトの名無しさん :01/11/12 23:08
if(((((i = 0))))) then Pascalも負けませんよ♪
∧,,∧ / ̄
\,,,,ミ,,゚Д゚彡 < ここみて参考にしよーう
⊂,,,,,,,,,つつ. \_
http://member.nifty.ne.jp/h_kova/procomp.htm Pascal使いがC++/Java/VBを使うときも
いろいろ感じたりしますね。
それぞれいろいろあって、おもしろーいんじゃないですか?
関係ないけど、関数型言語って難しいです。
あと5分でダウソ終わります…
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,,,,ミ,,゚Д゚彡 < そういえば、俺もJBuilderダウソしなければ。 UU"""" U U \_______________
>関係ないけど、関数型言語って難しいです。 なんかいろんなものに手だしてるみたいだけど 全部撃沈してねーか? DUnitの使い方はマスターしたのか?(藁
>>939 単に新ものずきなだけだったり・・・
「温故知新」って言葉の意味も考えてみようね。
∧,,∧ /ばれたか。>新ものずき。 @,,,ミ,,゚Д゚彡 < いろいろやってたのしいよ。 ⊂,,,,,,,,,つつ. \ DUnitはザセーツ(ヤバッ
バイナリファイルの一部(ヘッダ)部分だけを抜き出すにはどうすれば 良いのでしょうか?
>>942 バイナリファイルのヘッダはバイナリファイルの数だけあります。
945 :
デフォルトの名無しさん :01/11/14 00:26
新規作成のダイアログってフォームだったんだね
DelphiがDelphiで作られている以上そうだろうね。
947 :
デフォルトの名無しさん :01/11/14 01:20
948 :
デフォルトの名無しさん :01/11/14 02:31
誰が私をポップアップしたかわかりますか?
ヘルプの TPopupMenu にのってますよ (^^ よく読めやゴルァ!
>>938 >そういえば、俺もJBuilderダウソしなければ。
JBuilderをDelphiで作ってくれれば、pro版買ってもいいかな。
今のJBuilderだと、Athlon 1.4GHz Mem512MB でも遅くてイライラするよ。
スクロールマウス対応してないし。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,ミ,,゚Д゚彡 < (男と女は)スレ違い〜♪ UU""" U U \_______________ と、思うですが、 >スクロールマウス対応してないし。 JBWheelというアドインがあるかと… ホイルマウスはピュアジャバが対応していないのちゃうかと、小一時間問い詰め… あと、ブレットだか、ビュレットだかという Java開発環境がDelphi製でどこか日本の会社が出していたような。
952 :
デフォルトの名無しさん :01/11/14 20:51
>あと、ブレットだか、ビュレットだかという >Java開発環境がDelphi製でどこか日本の会社が出していたような。 google で探せども見つからず… kylix でビルドして Linux 版とかいうのもあればいい鴨
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,ミ,,゚Д゚彡 < 俺の妄想だったかな。 UU""" U U \_______________ 全然見つからない…
FireBirdにIBXで接続するISAPIアプリケーションを作っています。 IBDatabaseをひとつのクライアント(WEBブラウザ) が開いてしまうと、他のクライアントが開けなくなってしまいます。 複数クライアントの同時接続はできないのでしょうか? Win2000+Delphi6Pro+IIS5.0です。
著作権侵害で訴えられたんじゃなかったけ?
>>955 と思われそうなほどDelphiと酷似しているね…
これとBorlandの関係はどうなっているのかな?
958 :
デフォルトの名無しさん :01/11/14 21:51
ワラタ ここまでパクるとなんだかすがすがしい。
ボーランドがうちの真似したニダ!
飛んでる人は何の意味ニダ?
963 :
リサイクラー :01/11/15 01:45
あーGoogleで探せばよかったですねー
自分で言っといて忘れてました。
Thanxです。
>>964-965
え〜ちょっと考えていたのと違ったようです。 相談室スレは初心者用でスタートしたと思ったんですが ほっておくとDelスレは際限なくレベルが上がっていくようで・・・ どう考えても初心者向けじゃないので、 初心者→このスレ(の後継) 初心者以外→相談室スレ マターリ→フサスレ な感じでいいですかね? ん?すると今と変わらないのか・・・
いいんじゃないんかな 統合スレってことで
統合しますか。
970 :
デフォルトの名無しさん :01/11/15 07:44
971 :
もったいないのでネタ :01/11/18 23:49
pcharを、「ぴーちゃー」って読んだっていいじゃないか。 pcharを、「ぴーちゃー」って読んだっていいじゃないか。
ピーキャラ♪ピーキャラ♪パッパパラパー♪ ピーキャラ♪ピーキャラ♪パッパパラパー♪
キャラ物系スレはランク・分類を乱すので廃止がよいな
977 :
小室カバーすんな。曲書けバカ! :01/11/19 00:30
休日のDelスレの下がりようといったら・・・
>977 立てていいよ。俺様が許可する
>977 現在Delphi関係のスレが3〜5あってその内1〜2スレしかまともに機能してないから どのみち建てても書き込みがないと思われ
時期的に
>>979 はMS厨の煽りのような気がするけどどう?
相談室スレとフサスレの2本立てで行きましょう。 過去スレ一覧のDelスレは書き込みが900超えのが多い。ネタスレは除いて。
(フサ)ギコがDelスレ私物化する前は きっちり棲み分けできてたのにまったく迷惑なこった
>>983 それよりTechがMLウォッチスレになったのが痛い(藁
MLウォッチスレを別に作れば? 裏 ML として機能するでしょ。 「ギコがDelスレ私物化」とはねぇ。話題を作れないからといってねたむことはないだろう?
ウォッチはネトヲチ板かマ板で。
>>983 あれだけ活動的に動いた&動かしたんだから評価されてしかるべきだな。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,ミ;゚Д゚彡 < ありゃ、叩かれてる? UU""" U U \_______________ いやあ、流星きれいっすね。 すいません、私物化しちゃって、 できれば、どこかの何かで貢献したいものですが… 貢献といえば、マ板off会でも、2chの存続とかで 例の閉鎖騒ぎの話題で結構、いろいろネタが出てまして P2P2chの進捗などを報告(誰に?)しなけりゃいけないことになってます。
pcharに1足すと二文字目が出てきますか?
992 :
デフォルトの名無しさん :01/11/20 21:50
1000!!
1000
1000!!
さっさと取れよ(ワラ
1000!!
千と千尋の!
千住のオバサン
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。