モナーの *やさしい* Delphi質問スレ

このエントリーをはてなブックマークに追加
1DELモナ
DELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 ∧ ∧
( ´∀`)(    )
Delギコはどこに逝きましたか?
これってDelギコスレのPart5?
それとも別系統?
Delギコいなくなってから、険悪ムードがただよってる。
昔はあのスレ居心地よかったのにねえ。
最近は見る気もしないヨ。
5デフォルトの名無しさん:01/10/15 11:41
ギコスレとは別でいいんじゃない?
一緒にすると、また荒らされそう。
Delギコ来てからから、険悪ムードがただよってる。
昔はDelスレ居心地よかったのにねえ。
最近は見る気もしないヨ。
71:01/10/15 11:42
*やさしい*
は「やさしく答えてくれる」という意味でも有り
「あまり難しい質問には答えられない」という意味でも有りマする。
初心者スレはもうあるんですけど・・・
このスレのタイトルには
初心者
と書いてないような。
それって、

タイトルが違うんだから、似たような趣旨のスレ立ててもいいだろ

という主張ですか?
いくらなんでもスレ建て過ぎだろう。
ニセモノ カコワルイ
13デフォルトの名無しさん:01/10/15 13:27
Delphi6 Pro
「ヘルプ」の「トピックを検索」で
単語を入力しても一覧に現れないんです。
'ExtractFilePath' とか 'TStrings' とか。
そのくせ、エディタ上で TStrings と書いてから F1 を押すと
ちゃんとヘルプが表示されます。

なんとかなりませんか。
だからサポートに電話しろって
15Delあめ猫にゃ:01/10/15 13:34
>>13
 それはOSの問題だから、簡単な解決方法はWindows2Kに開発システムを移動するとか
 ヘルプを自分で小さくするとか
16デフォルトの名無しさん:01/10/15 14:30
>>15
そういう問題なの?
17名無しさん:01/10/15 14:58
Windows 98/ME における Windows ヘルプインデックスの制限
Windows 95,98,および Millennium の Windows ヘルプエンジンは,
[トピックの検索]ダイアログの[キーワード]タブに 16 ビットのリストボッ
クスを使用しているので,32,767 語を超えるキーワードを表示できません。こ
の制限値を超えるエントリがある場合,[キーワード]は空白になります。これ
らのいずれかのオペレーティングシステムを使用している場合,ヘルプイン
デックス制御ファイル (Delphi6.ohi) に変更が加えられて,[キーワード]
表示からいくつかのヘルプファイルが除外されていることに気がつくことで
しょう。この変更は,ほかのヘルプシステム機能 (たとえばファイルの相互リ
ンクや〔F1〕キーによるアクセス) には影響しません。さらに,":Index" エン
トリの前にコメントを示すセミコロンを追加したり削除することで,インデック
スを拡張したりほかのヘルプファイル参照を追加または削除できます。ただし,
.OHI ファイルを編集する場合は,キーワード表示が空にならないように,
WinHelp ビューアの制限に注意してください。
(readme.txtから抜粋)
>>17
文章にメリハリが無く、ただ翻訳しただけの文体です。
技術文書なのですから、原因と結果、対策をはっきり分けて書きましょう。
19名無しさん:01/10/15 15:09
>>18
Borland japanにいってください。
20デフォルトの名無しさん:01/10/15 15:41
インデックスを2つに分けるにはどうすればよいですか。
IDE 終了後、Help\delphi6.ohx を Delphi6.ohi に上書きコピー。
そのあと Delphi6.gid を削除。.gid は隠し属性が着いているので
ちゃんと削除すること。
その後 IDE を起動すればよし。
>>21
インデックスからキーワードが全て消えました…
Help\*.gid ちゃんと消したか?
24ななしヘタぐらま:01/10/15 18:59
>>17
なにぃ!?
ということは,Win9x系の環境では

[F1]キーでのヘルプはできるけど
自分でキーワードを打ち込んでは使えない

ってことですか?
だとしたら最悪(泣).

Delphi6への移行はコンピュータを更新するまでナシだなぁ.
25Delあめ猫にゃ:01/10/15 19:54
>24
 じゃなくて、ヘルプのキーワードが大きすぎるとwin9xはタコだから表示出来ないけど、
  ohiはテキストファイルだから
  自分で
  必要なの選んでねって事。

 自分でやるの嫌なら ohx って拡張子であんまり使いそうもないの消しといたから
それコピーして使ってねってのが >>21さんの説明
26デフォルトの名無しさん:01/10/15 20:19
ん?ヘルプのキーワードリストって *.ohi に入ってるんですか?
てっきり文章中でキーワード属性にした単語を
自動収集しているのかと。見てみよう。
メモ:
 .GID/.Fxx これらのファイルはヘルプによって自動的に生成されるファイルです。
GID は General Index ファイルを示し,
Fxx ファイルは,全文検索を実行したときに生成されるファイルです。
ヘルプシステムの設定を変更したり,更新する場合は,これらのファイルを
削除することをお勧めします。
OpenHelp使えばそういう作業ラクなのに…(ボソ
>28 でも D6PersonaiにはOH.exe は付いてないし…(ボソ ボソ
ちゅーか開発にWin9xは不便すぎるだろ。。。NT系に移行しようよ。
>>30
ください
>>28 & 29
Personal は元からヘルプが少ないからキーワード表示できるし…(ボソ ボソ
>>31
買いましょう。

金がない?
放送大学に入ってアカデミックパック買い漁れ!!
以上。
34デフォルトの名無しさん:01/10/16 00:27
初心者スレ見てもぜんぜん意味がわからない私は初心者失格ですか?
35 :01/10/16 00:46
>>34 安心しろ、まだデルファイの話はでてない
36デフォルトの名無しさん:01/10/16 01:31
kylixとDelphiを統合して欲しいと思ってるんですがダメですか?

過去にDelギコで何回か質問させてもらってるんですが全てDelphiの質問じゃなくてkylixでした。
「でもkylixです」って答えると他のスレにとばされるし、、

偽ってすいません。
37デフォルトの名無しさん:01/10/16 01:55
Del猫が可愛くて、一匹飼いたいのですが、
どこで売っていますか?
>>37
こういうネタ野郎は、この板には必要無いと思うがどうよ?
39一応フォロー:01/10/16 02:09
でも可愛いし、、
ダメ?
4037:01/10/16 02:11
ヒドイイイイイイイイイ!
41デフォルトの名無しさん:01/10/16 02:11
そのうちカルピスウォーターのボトルキャップに付くんだ・・・
43 :01/10/16 02:20
俺買うよ・・・
      ∧ ∧  |1匹300円|
⊂  ̄ ̄つ゚Д゚)つ|____|
  | ̄ ̄ ̄ ̄|     ||           / ̄ ̄ ̄ ̄ ̄
  |____|     ||    ∩_∩ <今なら逝きのいいギコが1匹300円だよ〜
                 G|___|  \_____
                  ( ・∀・)∩
                 ⊂     ノ
                  ) _ (
                 (_) (_)∧_∧  ∧_∧  ∩_∩
∧_∧  ∧_∧  ∩_∩      (∀`  ) (    ) (    )
(    )(    ) (    )      ( ∧_∧(    ) ∧_∧
( ∧_∧(    ) ∧_∧        (    )∩_∩ (    )
 (    )∩_∩ (    )        (    )(    )( 
逝きのいいギコ パート2
http://piza2.2ch.net/test/read.cgi?bbs=mona&key=999763206
Delあめ猫にゃ可愛い!
46駄スレ:01/10/16 03:59
駄スレ
47こたえてくらはい:01/10/16 04:37
Del6セットアップするときにMSのインストーラー(msi)
突っ込まれるけど、その直後の再起動で凍って以来、
Windows98SEが再起動できない(途中で凍る)。
インストール直後の再起動でロゴに戻ったまま黙り込む。
MSのパッチ(シャットダウンサプリメント他、サービスパック
も手当たり次第)いれて、WindowsFAQのサイトにある対策全部
やったけどダメ。
なお、シャットダウンは可能。
他にこんな人いる?
48Delモナー:01/10/16 04:48
>>47
 ∧ ∧
( ´∀`)( とりあえず、Del6消して再インストールするモナー )
 var
  I: Integer;
  S: TStringList;
 begin
50ななしヘタぐらま:01/10/16 09:30
>>25
とりあえず何とかなるわけですね.
でもMMX Pentium 200MHzだとつらいかなぁ.

>>30
うちPC-9821なんですよ.
会社の予算がないからしばらくがまんですね.
51デフォルトの名無しさん:01/10/16 13:47
Delphi6 Pro のキーワードが多すぎるだけ?
例えば1つの巨大なヘルプを2つに分割って不可能かしら?
ヘルプ内でリンクがある場合は無理かな。
>>47
>その直後の再起動で
ってことは Windows Installer のインストールに失敗しているよ?
まさか.... NEC 98 かい?
53デフォルトの名無しさん:01/10/16 14:03
TList を継承して TMyType 型を格納するリストを作ったとします。

TMyType = class(TList)
...
public
 property Items[ Index:Integer]:TMyType read .. write .. ; default;
 property Last:TMyType read .. write .. ;
end;

Items プロパティは上書きされているにもかかわらず警告が出ませんが、
Last プロパティはばっちり警告が出ます
「 Last の最宣言のため基本クラスのメンバーが隠蔽されました」

プロパティには overload 識別子をつけられませんが、なぜでしょうか。プロパティはオーバーロードする事は出来ませんか?
54デフォルトの名無しさん:01/10/16 15:29
Lastって、もともとプロパティじゃなくてメソッドでは?
メソッドとプロパティは別物だからダメなのでは。
よって

procedure Last: TMyType; overload;
とすればよいのでは。
>54 でもそれじゃ 代入 出来ない
56Delあめ猫にゃ:01/10/16 15:43
TMyType = class(TList)  と継承する一番のメリットは

○TListを渡せる場所に TMyTypeList を渡せる

でも、Lastに書き込みたい程の変更が必要なら
TListのリスト管理機構を利用したいだけだと思う

TMyType = class
list:TList;

とTListのメンバーを持たせて、 Listに似たインターフェースを被せたら
いいんじゃないの?
57Delフサギコ:01/10/16 15:47
SetLastメソッドつくれば?

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    マターリ
  ミ,,゚Д゚彡∬
   〃  つ旦O
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
5853:01/10/16 16:42
>>56
なるほど、どうせオーバーライドするならそちらのほうが
スマートそう。
ありがとう。
59デフォルトの名無しさん:01/10/16 17:46
質問でつ。
当方VBしかやったことないんですが、移行(フリーのやつへ)は簡単ですか?
操作性が全然違かったりするのでせうか?
60デフォルトの名無しさん:01/10/16 17:48
>>59
テメエで考えろカス
人に聞かないと何にもできねえのかゴミ野郎
61Delモナー:01/10/16 18:33
 ∧ ∧
( ´∀`)( ここは、モナーのスレなのでモナー以外は答えてほしくないのれす )
Σ(゚Д゚)ス、スマソ
63デフォルトの名無しさん:01/10/16 20:12
>その直後の再起動で
>ってことは Windows Installer のインストールに失敗しているよ?
>まさか.... NEC 98 かい?
はうう、普通のDOS/V(P3B-F+PIII)です。
以前インストールは一発で完璧に終わりました。
HDDを交換して同じ環境を作ろうとして失敗。
違いと言えばソフトの導入の順番ぐらいですが...悲しい。
Kylixなら考えられない事態です。
64デフォルトの名無しさん:01/10/16 21:38
エディタや環境の操作性はかなり異なると思う。
あとPASCALの文法ね。

Caption とか Top, Left などのプロパティ名は
大体一緒だし、代入演算子が違う事を除けば

Form1.Caption := 'きゃぷしょん';

等という風に、VBをやっていれば直感的に意味はわかる。
>>64
なんかDel6のはVBモードみたいなのが
あるらしいけど。
(まだPersonal試してないのでゴミン)

エディタに関して言えばVBみたいに
いたれりつくせりではないと思う。
(VBはやりすぎって感もある。
個人的にはVCのエディタぐらいが好きだな)

多分がいしゅつかもしれないけど、VBのデバッグで、
カレント実行プロセスをドラッグにより自由に元に
戻せたり、進ませたりできるなんて、
最初ぶっ飛んだよ。
インタプリタのなせる技なんだろうね。
6665:01/10/16 22:25
スマソ
>なんかDel6のはVBモードみたいなのが
>あるらしいけど。
->
なんかDel6の操作についてはVBモードみたいなのが
あるらしいけど。
VBからの移行で一番辛かったのは
妙に T で始まる名前が多い事だった。
はじめは、画像一枚表示するにも一苦労だ。

TGraphcis とか TBitmap とか TCanvas とか。

あと、一番最初から意味不明のコードがかかれていることね。
VBは白紙状態のソースコードから始まっていたから、
自分が書いた部分以外の事は気にする必要は無かった。
Helloのソースはowlmainより長いからなあ
まあ空のForm程の機能は無いが
69( ´∀`)さん:01/10/17 05:21
VBからの移行か…
すくなくともVB->VC++ほとドラスティックな変化はないから、
安心して(・∀・)イイ!!

あと、VBでは <= =< どちらでもよかった(勝手に修正してくれる)けど、
Delにはそれがないので注意。

とりあえず、文法とクラスの扱い。これがわかれば、あとは
芋蔓式に理解できると思われ。


>>67
漏れは最初、フォームの名前、ユニットのファイル名、
プロジェクトファイル名の決め方でかなりとまどったよ(w
最初、フォーム名が T〜 としなきゃ逝けないのかと思ったね(w
>>67
Delも白紙から書くことも可能。
問題は、VBがいくらかコードを隠していると言う点であり、
その方が、初心者は入りやすいということだ(慣れるとどうでもいい)。

TGraphicsとかTBitmapは・・・確かに。
オレもあれを理解するまで一苦労した。
オブジェクト指向がわかってきた後、ようやく
TGraphicsやらTBitmap関係がわかってきた気がする。
>あと、VBでは <= =< どちらでもよかった(勝手に修正してくれる)けど、
>Delにはそれがないので注意。
GExpertsをインストールすればできるよ。
インストール直後だと、;=→:=ぐらいしかないけどユーザーで設定できるので、結構便利。

GExpertsは、他にも
標準で割り当てがないメニューのショートカットを割り当てたり、
エディタを拡張する(ショートカットで範囲選択した行の先頭にコメント入れたり)機能があったり、
かなり有用。今の環境に物足りない人は入れてみるべし。
http://www.gexperts.org/
gexpertsあげ
ミスったage
7471:01/10/17 21:28
あげられたついでに、gexpertsで他にどんなことができるか書いてみるか。

・エディタのタブを複数行にしたり、フラットボタンにしたり(どうでもいいか)出来る。

・エディタのウインドウにツールバーを配置できる(場所は、上下左右いずれか)
 解像度が低くて、エディタを最大化して使う人にはいいかも。

・インクリメンタルサーチ可能な関数リストがある。
 ショートカット一発、数文字入力ですぐに関数に飛べるのでこれは重宝してる。
 setTextという関数でもTextと入力するだけでいいという、部分検索も可能。

他にも山ほど機能があるんだけど、使ってない(使えない(藁))
75デフォルトの名無しさん:01/10/17 22:52
     _____
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < 正直、Delphi飽きた
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|
76デフォルトの名無しさん:01/10/18 00:21
デルハイのえらい人教えてください。
大文字小文字と全角半角、ひらがなカタカナを区別しない文字列検索はありますか?
こんなの↓
xxAnsiPos('ア', 'あいうえお'); //trueになる
77デフォルトの名無しさん:01/10/18 01:16
えらくはないが・・・
アルファベットの大文字小文字はAnsiUpperCaseを使えば
統一して比較できるから、あとは全半角と仮名はLcMapString
を使えばいいとおもう。
今日はDelphiスレが上がっていないのはなぜなのでしょう?
試験勉強でそれどころじゃないんです
>>78
これのダウンロードに忙しいとか。
ftp://ftp.borland.co.jp/pub/delphi/delphi6update1.exe
81デフォルトの名無しさん:01/10/18 17:35
>>80
それって personal 用?
> ダウンロードファイル

>このアップデートファイルは、Delphi 6 のためのアップデートファイルです。
>Enterprise 版、Professional 版、Learning 版すべてにご使用いただけます。
>※重要 「Delphi 6 Enterprise 60日トライアル版」には適用できません。
って、D6のLearningってなんじゃいヽ(`Д´)ノ !!
全 SKU 対応
84DELモナ:01/10/18 17:59
 ∧ ∧
( ´∀`)( ここは、モナー専用なのれす  )
>>84
いいじゃん別に。
君がこのスレ立てたとしても、持ち主になったわけじゃないんだからね。
>>82
さんきゅ。うっかりミス。今直します。
>>86
うわっっっ!!!直ってる!!!!!びびったよ(´д`;)
関係者ですか?
>>87
天網恢恢疎にして漏らさず
89デフォルトの名無しさん:01/10/18 20:33
>>86
えぇっ!
Delphi 6 Update Pack 1
Whistler serverで動かすと画面が出てこないです
俺だけ?
XP Pro での動作は確認していますが? >>90
Server のビルド番号は?
92デフォルトの名無しさん:01/10/18 23:04
>>90
Update1 当てる前だと問題なかった?
9390:01/10/18 23:12
サンクス
今手元にないのでわからないのですがMSDNについてきたベータ版です
Delphi6使うのは普通に使えてます
おかしいのはアップデートのプログラムの方です
起動するとSetup.exeが裏(タスクマネージャ)で実行して表に画面が出てこないです
MSDN ベータだとだいぶ古いですね。
普通の InstallShield アプリですから、問題が出るとしたら OS の
問題でしょうか。
9590:01/10/18 23:42
OSは標準インストールです
Setupが途中で止まってるのか画面がShowしてないだけかもしれません
どっちにしてもこの環境は今週までなので他の環境にセットします

ちなみに
ComCtrls.pasのTSubItemsは
procedure TSubItems.Clear;
begin
inherited Clear;
FImageIndices.Clear;
end;
が治ってないようです
追加しないとFImageIndicesがクリアされません
96デフォルトの名無しさん:01/10/19 00:16
( ´V`)
良い書き方を思いついたのれす。
変数宣言を見なくても、変数の型が一発で分かるのれす。
全変数の初期化なんぞも簡単にできるのれす。

例)

type
 TInt = (Age);
 TDbl = (Height, Weight);
 TStr = (LastName, FirstName);

var
 int:array [TInt] of Integer;
 dbl:array [TDbl] of Double;
 str:array [TStr] of string;
begin
 Write( 'LastName > ' );
 ReadLn( Str[ LastName ] );

 Write( 'FirstName > ' );
 ReadLn( Str[ FirstName ] );

 Write( 'Age > ' );
 ReadLn( Int[ Age ] );

 Write( 'Height(cm) > ' );
 ReadLn( Dbl[ Height ] );

 Write( 'Weight(kg) > ' );
 ReadLn( Dbl[ Weight ] );

 WriteLn( Format('%s %s %d Years old. %f kg, %f cm',[
  Str[LastName],
  Str[FirstName],
  Int[Age],
  Dbl[Weight],
  Dbl[Height]
 ]));

end.
 
971:01/10/19 00:25
スレ立てたの私。ちなみに、1以外のモナーは全部私以外の人ですよ。
モナーと書いたのは、単にギコは既出だからという理由であって、
真意は「AA容認スレ」及び、たとえ厨房でも「罵倒はしない、やさしく諭す」という方針にしたかったから。

いや、それだけ。



さらば。DELギコ降臨を望む。
>>96
ハンガリアン表記をより凶悪に推し進めただけのトリッキーコードにしか見えない…。
全ての変数に接頭辞つけるやつは変数宣言を読むのがそんなに辛いんだろうか。
Delphiならフィールドに F 付ければ十分だと思う。
ひゃくばんげっちゅ
101Del初心者:01/10/20 15:00
DelphiとVC++って、どう違うんですか?
あと、コンパイラ型ですか?記述はCに近いのですか?
>>101
Delphiはコンパイラ型です。
  記述は C や Basicと同じ種類の方式です。  LISPと比べるならばですが

Delphi と VC++は似てるのは、単に Windows用のネイテブコンパイラである
事くらいで、違う事の方が多く違いはあげられません
103Del初心者:01/10/20 15:57
>>102
ありがとうございます。
104Delあめ猫にゃ:01/10/21 10:10
>>96 面白いかも

 実行時型情報に入るようにプロパティに登録して、変数名=値をファイルに書き出す
ようにしたら便利かも・・・・

でも、それローカル変数でやると最適化が効かないかもしれない
105デフォルトの名無しさん:01/10/21 18:31
Rar形式で圧縮かましたいです。
Rar用の圧縮・展開ルーチンを収めたDLLあるかとぞんじます。
使い方を教えれ。エレ。エレ。エレ。

おねがいします。
ここで調べたら?
http://www.csdinc.co.jp/archiver/index.html

圧縮ルーチンは優良だと思ったけど。
107デフォルトの名無しさん:01/10/22 01:13
質問です。
下の様なコード実行するとnew()でエラーが出るんですが
ヘルプ見る限り問題ないように思うんですが何処がおかしいのでしょうか?
サパーリ分かりません‥‥鬱だ‥‥

pFILE_DATA = ^FILE_DATA;
FILE_DATA = record
FileName: String;
Size: Integer;
Date: String;
end;

function AddFileList( const fileName: String): Integer;
var
NewItem: pFILE_DATA;
begin
new(NewItem);
NewItem^.FileName := fileName;
{ 以下略 }
end;

それとファイルのリストを保持する場合、TListに格納して変更があった時にUI側のListViewを更新するのと
直接ListViewに格納してそこから値を取り出すのとでは(Delphiでは)どちらが一般的なんでしょうか?
108デフォルトの名無しさん:01/10/22 01:17
>↑
どんなエラーば出るの?
109107:01/10/22 01:20
「Variants.pasが見つからねぇぞゴルァ(゚Д゚)」
です。。

Personalなんで手も足も尻尾も出ません。(泣
とりあえずパッチ当てたら?
111デフォルトの名無しさん:01/10/22 01:28
>107
ん〜、そのエラーが new(NewItem); の行で発生するのかな?
>>109
ソースがないのでソースコードを追ってのデバッグができないというだけ。
さっくり無視(I)すれ。
113Delフサギコ:01/10/22 01:39

  ∧,,∧     / usesにVariantを追加するのかな?
 ミ,,゚Д゚彡  <
  U  U    \
〜ミ  ミ
  ∪∪

某NewsGroupeでこんな投稿があります、"Delphi6 の ライブラリが全てデバッグ版!?"
デバッグ版だとVCLソースをトレースしようとするので
ソスなしのPersonalはUp1のインストは必須です
114107:01/10/22 01:45
>>111
さいです。
上下にMessageBox()はさんで確認(藁してます。

>>113
現在40%(泣)メタル線返せ〜<みかか
>>114
ン?実行時に出るのか?
レスを読む限りコンパイルエラーになりそうだが。
116107:01/10/22 03:05
とりあえずアップデートして解決。
エラーの原因はむしろMessageBoxのhwndにCの感覚でNULLを入れてたのが不味かった模様‥‥

‥‥逝ってきます‥‥
>99
つーか、『識別子定義の表示』があるからなあ。型わかるし。
まあ、マウスでしかポップアップされないから、それがイヤなんだろうけど
# ていうか、この機能はキーボードからも出来てほしい・・・
>>117
キーボードからできるとして、どのキーに割り当てればよいと思う?
もうほとんどの組み合わせが使われてしまっているしね。
119デフォルトの名無しさん:01/10/22 10:31
質問です。

デバッグの際、特定のコードで発生する例外では止めないようにするには
どうしたらよいのでしょうか?
意図的に例外を発生させていて、例外を発生する状態の方がむしろ正常なのです。

調べてもよく分からないので・・・よろしくお願いします。
>>119 ツール -> デバッカオプション で止めないように出来ます

興味があるのですが、
常に例外を発生させるようなコードというのはどういうものでしょう?
オプション設定で無視する例外を設定出来るYO!
>>119
まず常に例外を発生させるコーディングスタイルは
見直すべきと思われ。
どういうコードか書けばここに居る人が教えてくれるかもよ。
あ、もし例外が発生したときをシミュレートしてコードから
意図的に例外を発生させ、耐障害性とかエラー処理を
テストしてるんだったらごめん。
124119:01/10/22 10:49
>>120-121 ありがとうございます

>常に例外を発生させるようなコードというのはどういうものでしょう?
オフコンにFTPでファイルを送るのですが
オフコン側ではそのファイルを処理してから消去します。
オフコンがそのファイルを未処理の場合はファイルを送ってはいけません。

そこで
「FTPで前に送ったファイルをGETしてみて
 失敗した場合(ファイルがない場合)にのみ処理を続ける」
という具合にしてみたわけです。
例外ってスピード速いし、普通に使って問題無いんだYO!

例外じゃなく、戻り値でエラー判断なんかやってるコードが問題だと思われ。
126119:01/10/22 10:57
>>122-123 レスありがとうございます
>>125 フォローしていただきありがとうございます
>>124 それは 失敗した場合に例外を自分で出してるんだよね?
   そういう用途ならAbort でいいんじゃない

Abortならデバッカにひっかからないし
>>125
>例外ってスピード速いし、普通に使って問題無いんだYO!
そんなに早いもんだったのか、知らんかったよ。
>>119サソ、スマソ。

なんかどっかで実行中のプログラムの例外を補足して
ログとるツールがあったような記憶があって(曖昧でゴメソ)、
それで気持ち悪いなぁとか思ってね。

>例外じゃなく、戻り値でエラー判断なんかやってるコードが問題だと思われ。
だけど、Win32APIとかは戻り値でしかエラーの有無を判定できないと思われ…
129119:01/10/22 11:04
>>127
サイレント例外は気がつきませんでした。
ありがとうございます。早速やってみます。
130Delフサギコ:01/10/22 11:35
 自分で例外発生させているなら
 継承した例外を発生させてIDEにそれを無視させるとか

 VCLが発生させる例外なら
 ブレークポイント2つで上下はさみ
 その間だけ例外ムシさせる方法があるぞよ

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,,゚Д゚彡∬
   〃  つ旦O
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
131デフォルトの名無しさん:01/10/22 11:47
>それとファイルのリストを保持する場合、TListに格納して変更があった時
>にUI側のListViewを更新するのと
>直接ListViewに格納してそこから値を取り出すのとでは(Delphiでは)
>どちらが一般的なんでしょうか?

俺ならば、UpdateFileList みたいなメソッドつくっておいて、
リスト内容を更新するたびにそれを呼び出す。
132デフォルトの名無しさん:01/10/22 11:50
ちゃうちゃう。
IDE内から実行しているから、例外でややこしいことになるのよ。
コンパイルして、エクスプローラから直接実行ファイルを
実行するようにすれば、何の問題もない。
133Delphi6 Enterprise の自慢:01/10/22 12:05
いやあ、多機能っていいね!
コンポーネントいろいろついてくるし!
134Delフサギコ:01/10/22 12:06
         _________
  ∧,,∧   / >>131
 ミ,,゚Д゚彡<  TListなどにて内部データ構造を格納しつつ、
  ミつ つ  \ そのItemをListViewのTListItem.Dataと関連付けるのがいいかも
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U  チョット手間かニャ
135119:01/10/22 13:12
>>130
Indyが出す例外なので
> VCLが発生させる例外なら
> ブレークポイント2つで上下はさみ
> その間だけ例外ムシさせる方法があるぞよ
これを試してみます。
ありがとうございました。
136デフォルトの名無しさん:01/10/22 13:25
256色のBMPファイルを使いたいです。
1.256色のBMPファイルからパレットを取得する方法(pal[256]という変数に取得したい。)
2.他のBMP画像を読み込み、上記1で取得したpal[256]のパレットにする方法。
が、知りたいです。
ご存知の方がいたら教えてください!
137デフォルトの名無しさん:01/10/22 13:33
procedure ParettoWoToru(var Paretto:array [0..255] of TColor; ABitmap:TBitmap);
var
 p:PByteArray;
 x,y:Integer;
begin
 for y:=0 to ABitmap.Height-1 do
 begin
  p := ABitmap.ScanLine[y];
  for x:=0 to ABitmap.Width-1 do
   Paretto[x] := p[x];
 end;
end;
>>135
Indy が出す例外は、原則 IdException.pas で定義されている EIdException から
継承された例外クラスを使っている。だから「言語固有の例外 - 無視する例外の種類」
に EIdException を追加すれば、Indy 固有の例外で IDE が停止することは無くなる。
>>137
パレットってなんだか知っている?
Paretto -> Palette
140デフォルトの名無しさん:01/10/22 13:43
パレット。256色モード時に色情報を格納。
各ピクセルにはパレット番号を格納。

それがなにか。
141119:01/10/22 13:45
>>138
ありがとうございます。うまく行きました。
137 はネタのつもりだろうか?
143デフォルトの名無しさん:01/10/22 16:07
136です。

>>137
ネタですか?ネタですよね!?
ネタでなければ、プログラムがバグっている&やろうとしていることが
違うと思います。

自分としては、>>140と同じ意味でパレットという言葉を使っています。

で、フルカラーモードで、256色ビットマップを扱うときに、
1.256色のBMPファイルからパレットを取得する方法(pal[256]という変数に取得したい。)
->BMPのファイルを読んで画面に表示して、その画像のパレットを変数palに代入したい。
というのをどうやるのかが、知りたいです。
よろしくおねがいします。
144ねこま:01/10/22 16:28
GetPaletteEntries

あとは TNkDIB のソースでも見れ.
145117:01/10/22 23:19
>>118
識別子の上でCtrl+Space。
関数の引数を見る(=補助情報を得る)のと同じ感覚で使いたい。
146117:01/10/22 23:21
メンゴ。Ctrl+Shift+Spaceだ。
147デフォルトの名無しさん:01/10/23 02:23
つーかさ、ならば256色時に
Scanlineを使って得られる値はなんなのさ。
148デフォルトの名無しさん:01/10/23 02:28
それよりちょっと聞いてくれよ。
入力支援に1行ヒントってないものかね。

THoge = class
 ....
 procedure Hoge(x:Integer);{$HINT '引数 x をつかって〜する'}

てな風に書くと、
入力支援時、リストに

procedure THoge.Hoge(x:Integer) 引数 x をつかって〜する

つーふうにでてくると。
やるなら普通にコメントでいいんでは。
VCだと
struct foo{
 int bar; // hoge ←hogeがTIPヘルプで表示
}
ってできる
150デフォルトの名無しさん:01/10/23 02:53
>>149
DELでそれできる?
151ねこま:01/10/23 03:01
>>147
パレット番号

「ならば」とは何に対して言っているのか?
152デフォルトの名無しさん:01/10/23 03:39
>>151
>ネタでなければ、プログラムがバグっている&やろうとしていることが
>違うと思います。
153117:01/10/23 06:27
>>149
すごく(・∀・)イイ!
それなら変数名とか関数名だけで判るようにしとく方がいいと思うのは・・・俺が年寄りなった証拠?
155デフォルトの名無しさん:01/10/23 07:50
>>154
いや、それでも分かりにくい場合ってあるでしょ?
156 ◆YxrNykuM :01/10/23 09:42
>154
ライブラリとかにあると嬉しいかも。
157デフォルトの名無しさん:01/10/23 11:16
>>144
GetPaletteEntries調べてみたのですがVBの解説しか
みつからなかったです。Delphiのヘルプにもないところをみると
APIか何かなのでしょうか?
パレット詳しい方いたら、教えてほしいです。
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=3

// パレットの色を取得
GetPaletteEntries(bm.Palette, 0, PalSize-1, pal.palPalEntry);

ってところか?

GetPaletteEntries に関しては
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_getpaletteentries.htm
ここを。
159117:01/10/23 12:06
>>154
本末転倒なの
160デフォルトの名無しさん:01/10/23 12:45
D6パーソナルって DsgnIntf 無いの?

自作のコンポD6で使いたいんだけど ヘルプにあるWinEditors ユニットも無いし
DesignEditors.ini なんてのがdocディレクトリにあるけど??

D5Proの時からDsgnIntfが変な所にあるなと思ってたけど、
なんかコンポーネントはコンパイル済みにしないとダメって事になったのかな?
それともD6パーソナル無料化の為に わざと不便にしてるのかな?
161デフォルトの名無しさん:01/10/23 13:52
インターフェイスが分かってるようで理解できてないような、そんな
気がする今日この頃。

凡庸画像フォーマットを実現するには、

TCustomImage = interface
public
 procedure LoadFromFile(〜);
 procedure SaveToFile(〜);
 procedure CopyFrom(〜);
 property Pixels[x,y]:Integer 〜;
end;
みたいなインターフェイスを作ってやれば、
内部でどのような画像の表現方法を取っていても、
呼び出して利用するほうのコードを変更する必要はないということですか。

たとえば、これまでビットマップだったものを
処理速度の向上を理由に、配列にいろ情報を格納するように変更した
TPixelArrayImage なんて形式に変えても、利用するほうの
コードは変更する必要がないと。
>>160
Delphi4 の時から、デザイン時ライブラリを分割してね。って書かれているのに
いまだにこういう質問が出てくるとは..

Help 読みなさい
163Delフサギコ:01/10/23 14:26
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  <  自分で体感しないと知らないものです
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ キビシイッス>>162さん

プロパチエヂタまでこだわって作っている人は少なそう。
こだわらなくてテキトに作っている人はD6になったとたんつまづーきますね。
フサも2週間前くらいに思いっきりツマヅイタ

>>160さん、とりあえず、Personalはつらそう……
ご検討を祈ります。

プロパティエディタ系コード(uses Designなんとか)
は実行時コンポーネントコードとは別ユニットにしましょう。


あと、TEditorの作者さま...
プロパティエディタ問題なんとかしてください。
フサの勘違いかもしれないけど、
思いっきりD6DsgnIntf問題にひっかかってません?
164160:01/10/23 14:43
>>162 スマン。奇数時しかバージョンアップしない不良ユーザなもんで

ヘルプってこれだよな?
>DSGNINTF.DCU は Delphi に付属しなくなりました。したがって,コンポーネント開発者は
>設計時コードを実行時コードとは別のユニットに分離することを考える必要があります。
>実行時コードでは,それらのユニットを参照しないようにしてください。
>それが不可能な場合は,\source\toolsapi\ ディレクトリにある DSGNINTF.PAS をコンパイル
>することが可能です。ただし,この方法は一時の間に合わせとして提供されるもので,
>将来のリリースでは提供されない可能性があります。
>また,ライセンス契約の条項により,インプライズ社が所有するソースコードに基づく DCU
>を配布することは,そのコードがどのように提供されたかに関係なく,
>許可されないことに注意してください。
設計時ユニットと別けるってのは、単にプロパティエディとかを別ユニットに別けろって事だよな?
てことは、どっちにしたって、コンポソースがプロパティエディタを使う場合はパーソナルだ
けじゃ使えないって事だな・・・まあそんな制限無いと無料で配れないか・・・

 使ってみて便利だったらバージョンアップしようかと思ったけど、俺はVer7まで待つわ
>>コンポソースがプロパティエディタを使う場合はパーソナルだ
けじゃ使えないって事だな

どうしてそういう結論になる?設計時パケージに分離してそっちで
designide60.bpl を必須パッケージとして指定すればおわり。

Personal でもコンポ作成/インストールできるって。
166160:01/10/23 15:28
>>165
うーん。方法があるのか?
DSGNINTFで使ってるのは RegisterPropertyEditor だけだから
 これを別ユニットにして、別に設計時パッケージに入れろって事だよな?

 自分のコンポーネントをuses して、RegisterPropertyEditorしてる
だけのソースを作ってみてプロジェクトファイルを弄ってみたけど、
やっぱりコンパイル出来ない。

 スマン。どうやってコンパイルしたらいいか教えてくれ
167デフォルトの名無しさん:01/10/23 15:29
最近VCLってつかわないよ。だからEXEサイズ60kbyteいかだ
D6personalよりD5learningのほうが使用権が自由でよいなぁ
perl使えよ
169デフォルトの名無しさん:01/10/23 15:36
IndyってフリーなのにどうしてD6personalに入れないかなぁ?
Windowsの場合非同期ソケットのほうがいいのわかってるのに
今非同期ソケットやってるのってICSとFastnetだけ、SynapseもIndyも
スレッド使いすぎだ

というよりなんか似たようなコンポーネントがごちゃごちゃしすぎだD6
>>166
>やっぱりコンパイル出来ない。
エラーはなんと?
171160:01/10/23 16:06
あ!
 もしかして、設計時コンポ無くても実行ファイルは作れるだろうという意味か?
  そういう意味なら確かに作れたよ。
172160:01/10/23 16:08
エラーは当然 DSGNINTF が無い。
 で、これを消せば
RegisterPropertyEditor が無いが出るよ
>>171
そうだね。多分すでに正解を手にしていると思う。
「設計時コンポ」ではなく「設計時パッケージ」ね。

設計時パッケージは IDE のみが使う。プロパティエディタも IDE のみ。
実行時パッケージおよびコンポーネントのユニットは設計時パッケージやデザイン用
ツールとは分離できる。
>>173
そこまでできているのなら、分離した設計時パッケージに
designide を追加すれば designide60.bpl が DSGNINTF を
提供してくれる。

デザインパッケージの実コード。
登録やプロパティエディタを定義。

unit x;

interface

implementation

uses DesignIntf, MyComp;

begin
 RegisterPropertyEditor( TypeInfo(TMyComp), TMyComp, 'Caption', nil); // nil にはプロパティエディタのコードが入るはず。
end.


Package1.dpk の部分

requires
 rtl,
 designide;

contains
 x in 'x.pas';
end.
175160:01/10/23 16:45
>.174 ありがとう! 出来たよ。

dpkを開いて requires の下に
 rtl,
 designide,
 vcl:
と挟んで入れたらコンパイル出来た。 いやホントありがとう
176160:01/10/23 16:53
しかし、今度はD5でコンパイルできなくなった

DsgnIntf/DsgnIntfを切り替えるのは {$IFDEF }でいいとして

  designide と dsnide50  はどうやったらいいんだろ?
まあ別名で作ればいいか
*.dpk だけはコンパイラバージョンごとに分けることを勧める。
幸い今後は DLL 名とパッケージ名が分離しパッケージ名には
バージョン番号が含まれなくなったから、今回だけですむ。はずだ。
>>169
Synapse のどこにスレッドが使われてる?
>>169
Indy は「スレッドが使えるんだ。ブロッキングで何が悪い?」という思想だから
スレッド使いすぎという批判は筋違い。
[666]
スマソ、誤送信
見る見るうちにモナー下がっちゃった。
やっぱり踊って歌える ギコのほうが人気高いんね。
182デフォルトの名無しさん:01/10/24 06:50
しかし >>174 の情報は重要だからアゲ 
183s:01/10/24 07:24
sage
184デフォルトの名無しさん:01/10/26 11:12
あげ
185デフォルトの名無しさん:01/10/26 16:38
Delphi5か6安売りしてるところはありますか?イクラですか?
186デフォルトの名無しさん:01/10/26 16:58
>>185
Delphi6 は www.borland.co.jp からタダでDLできま。
187デフォルトの名無しさん:01/10/26 17:09
ビジュアルスタジオエンタープライズエディションロクテンレイの
アカデミックばんはさんまんごせんほどでかえるからマイクロソ
フトマンセー
ボーランドはくがくせいにはきびしい成り
188185:01/10/26 17:17
データベースコンポが無いよう>>186
学生であの膨大なVisualStudioは酷だよ。学生は根気が無いんだから>>187
189通りすがり:01/10/26 18:00
>>187
Professionalが3万で買えるだろ。
BorlandのEnterpriseと比較するならMSDNじゃないと。
単純比較はできんが。
190デフォルトの名無しさん:01/10/26 21:22
D6 Shell コントロール修正版発表記念上げ。

http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=16739
191デフォルトの名無しさん:01/10/26 21:44
アクティブデスクトップのように、
ウィンドウの位置を

←手前  奥→
タスクバー>デスクトップのアイコン>ウィンドウ>壁紙
の位置に持っていくことは出来ませんか。
192デフォルトの名無しさん:01/10/29 01:46
スレッドを使っているのですが、スレッドからVCLを触る場合はSynchronizeをつかいますよね。
逆にVCL側からスレッドを触るにはどうすればよいのでしょうか。
スレッド側からSynchronizeでポーリングしなければならないのでしょうか。
それとも、ふつうにスレッド(のメンバ)を使っていい、、、わけないですよね。
193192:01/10/29 02:06
Indyのソケットを使っているのですがスレッドに渡したソケットをメインスレッド側からも使ってイイ
のかなということです。Indyの実装によるのかな
194デフォルトの名無しさん:01/10/29 15:48
まったくの初心者なものでつかぬことをお伺いしますが、
あるレコード型の中のフィールドに、
そのレコード型自身を指すポインタを指定するにはどうしたら良いんでしょうか?
Cで言えば、

struct CELL{
  int     value;
  struct CELL *before;
  struct CELL *next;
};

みたいなことをやりたいんですが、これをそのままやろうとすると
「〜型の宣言が完了していません」とコンパイラに怒られてしまいます。
まさか「汎用のpointer型を使うしかない」なんてことはないと思うんですが…
195デフォルトの名無しさん:01/10/29 15:50
>>194
CELL = record; // コレ
PCELL = ^CELL;
CELL = record
value: integer;
before: PCELL;
next: PCELL;
end;

こんな感じ?
あるいは最初からクラスにするとか
type
  TCell = class
  public
    Value: Integer;
    Prev, Next: TCell;
  end;
197デフォルトの名無しさん:01/10/29 16:03
>>195>>196
早速のお答え、ありがとうございます。
レコード型で >>195 のようなforward宣言をしようとしても
コンパイラが受け付けてくれないので、
どうやらforward宣言が効くのはクラスだけみたいです。
ボーランドとしては、レコード型なんか使わずにクラスを使えってことなのかな…
とにかく、どうもありがとうございました。
198デフォルトの名無しさん:01/10/29 16:15
CELL = record; // コレ
それいらない。

>PCELL = ^CELL;
>CELL = record
forward しなくてもこれでコンパイルできるでしょ?
Borland 以前、原典の Pascal から、^でポインタ型を定義するときだけ
未定義の型に対する参照が許されるんです。
PCell = ^TCell;
TCell = record
 ・・・
がDelphiらしいかな・・・クラスとレコードの区別がつかんけど
200デフォルトの名無しさん:01/10/29 21:36
おねがいです、以下の仕様で最速の実装をしてください。
なお、宿題とは関係ありません。自分で書いたコードもあります。
要望があれば公開します。
私が作ったコードでは、1024*786*24BITで
15−20秒ほどかかります

{ Source で指定された画像を Scale 倍したものを
Dest に描画する。Dest のサイズも同時に設定される。
拡大縮小時には線形補完を用いて、そこそこ高画質にする。
Source は 24Bit カラーである事を前提とする }

function Zoom(Source,Dest:TBItmap; Scale:Extended);begin
 if Scale = 1 then
  Dest.Assign( Source );
  Exit;
 end;

 Dest.Width := Floor( Source.Width * Scale );
 Dest.Height := Floor( Source.Height * Scale );

 { なんたらかんたら }

end;
>>200
>最速の実装をしてください
が、ちと気に入らないが・・・。
>自分で書いたコードもあります。
とのことなので、まず自分のソースをあげてみよう。
そこから悪いところを直していけば勉強にもなる。
202デフォルトの名無しさん:01/10/29 22:12
始めまして、私、Delphi3を使用しているのですが、
Delphi5 と Delphi6 にアップグレードしようしているのですが、

Delphi3→Delphi5

Delphi5→Delphi6

以上のように移行するにあたって、それぞれのメリット、
追加されたものがあれば、教えてください。
203200:01/10/29 23:13
ウプしてみました。
もともと TBitmapEx というクラスのメソッドだったのですが、
関係有るメソッド、関数だけを取り出して一つのユニットに
まとめました。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004364661&res=1
204デフォルトの名無しさん:01/10/29 23:50
>>200
ブロックに分けて、テーブルを使うのはどぉ?
205デフォルトの名無しさん:01/10/29 23:54
テーブルというと、ピクセルの重なり具合というか、
ピクセルの色がどの程度影響しているかという指数というか、
そういう奴をテーブルにするという事ですか?
206デフォルトの名無しさん:01/10/30 00:07
例えば、
1,2,3,4
5,6,7,8
って分けて、1で計算したのを2以降で使うようにするの。
>>203
揚げ足とり敵に細かいところを責めてみるか
・SetPixels、GetPixels、ComplementedBrightRGB等のループ内
 各関数をインライン展開して、オーバーヘッドを抑える
・Canvas.Pixels[x,y]やScanLine[y];は重いので使わずに、
 bit列へのポインタもらって自力で描いたり書いたり読んだりする
 # Canvas.Pixels[]など、速度が必要なときに使うのは論外中の論外!!
・浮動小数点は比較的重いので、固定小数点にする
 # 最近はあまり意味ないかもな
208デフォルトの名無しさん:01/10/30 06:57
>>207
おお、どうもありがとう
早速修正したいとおもいます。

ところで…

>ScanLine[y];は重いので使わずに、
>bit列へのポインタもらって

今まで ScanLine[y] っていうのは y 行の
ピクセルデータへのポインタを得るものだと思っていたのですが、
そうではないという事ですか?
>207
自分で読み書きってことはCreateDIBSectionを使うってことなのかな?
ttp://www.sm.rim.or.jp/~shishido/dibsec.html

俺、Scanline使って遅いなあとか思ってたけど、これ使えばもっと速くなるかな。
(でも、ScanLineでもかなり速かったような気もするんだが。)
どのくらい速くなるのか解説きぼん
210デフォルトの名無しさん:01/10/30 07:44
あの混線時にダウソしたけどになやっていいかわかりません。

とりあえず5もくならべのつくりかた教えて。

いままでエディタ+コマンドラインでコンパイルという
ことしかやってません。
さ、三目並べにしておけ・・・
というかまずはTmemoを使ってメモ帳作るところから始めた方が良いようなー

3目並べならTlabel のCaption使うだけで作っても良いかも。
212デフォルトの名無しさん:01/10/30 11:19
Delphi4 or 5を叩き売りしてる店無いかな?age
5目並べは、画面にTStringGridを貼り付けて
 ○●を入れて貰って
後はなんとか頑張る
五目並べについては↓で丁度やってる

おまえら、五目並べ作ってみろよ!!!
http://pc.2ch.net/test/read.cgi/prog/1004278856/l50
215Sock2に挑戦:01/10/30 14:54
すいませんサーバサービスで質問です。

WSAEventSelect()によって非同期によるクライアント待ちをする場合、
accept()実行後、
WSAEnumNetworkEvents()でFD_ACCEPTが成功したかどうか調べたいんですが、
その際、本来accept()の戻り値であるsocketハンドルは
どうやって取得すればいいのでしょう?

それとも
WSAEnumNetworkEvents()によってFD_ACCEPTを確認してから
accept()を実行するのでしょうか?
>>209
TBitmap自体、内部的にDIB使ってるけどScanLineの連続呼び出しはやっぱ重い。
検証用に、無理やりTBitmap継承してScanline使わないようにしたクラスが手元にあるんだが、
不完全だしさらすのいやだからなあ(笑
どうしてもっていうなら、さらし用のつくってみるけど。
いや、でも確実に速くなるよ。
2172000:01/10/30 20:07
ピクセルへ書き込み及び情報取得部分だけでも公開してくれませんか?
最低限のことさえ教えていただければ、自力でなんとかします。
218216:01/10/30 21:32
ありゃ。さらし用のTBitmap派生クラスを作ってみたが、速度はちっとも変わらんだ。
おかしいな・・・。
219209:01/10/30 21:42
>216
ScanLineをキャッシュすれば、多少は速くなる。
ttp://homepage1.nifty.com/beny/tips/dib02.html

まあ、ScanLineの方が分かりやすいし・・・。
220216:01/10/30 21:57
あ、できたできた。
と思ったら>>219とほぼおなじじゃーん。
ガーソ。

一応あげとく。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004364661&res=2
221デフォルトの名無しさん:01/10/30 23:46
 ∧  ∧
( ◎_◎)
(    )
24bitではなく32BITにしてあるのは、ダブルワードの
インクリメントでちょうど1ピクセル分移動できるようにするためですか。
222デフォルトの名無しさん:01/10/31 00:04
>>219-220
左上からなめるようにスキャンする場合は
効率が良いかもしれないけど、ランダムに
アクセスするような場合ってどうよ?
223209:01/10/31 07:09
>222
それも、キャッシュするだけでちょいっと速くなるけど
やっぱ遅くなるね。ぼかしで広い範囲指定した日には地獄。
224216:01/10/31 08:41
上げたコード、メモリ解放してないや。最悪ヽ(`Д´)ノ

>>221
そんなところで。

>>222
気持ちほど速くなる(藁
つーことは、今回の件ではあまり高速化には貢献できないことになりますか。
225デフォルトの名無しさん:01/10/31 12:55
完全に2次元配列に入れてから処理をすれば…
★解決した問題はこちらへ★

2chで解決したDelphi質問をFAQ収集するスレ
http://pc.2ch.net/test/read.cgi/tech/1004501183/
227デフォルトの名無しさん:01/10/31 22:53

DHCPサーバーからDNSサーバーのアドレスを取得したいんですけど、
出来ればサンプルが欲しい…。どなたか情報お持ちでないでしょうか?
228デフォルトの名無しさん:01/10/31 23:43
Scanline プロパティが遅いのは、GDIFlush API を呼び出したりと
いろいろコストがかかる処理しているからだね。

俺は ScanLine から次のラインへのオフセットを計算して
以後それを使って高速化している。

var
 ScanLinePtr0: Pointer;
 ScanLineOffset: Longint;
 Y: Longint;
 P: Pointer;
begin
 { 画像の任意のラインのポインタを計算するための準備 }
 ScanLinePtr0 := Bitmap.ScanLine[0];
 if Bitmap.Height>1 then
  ScanLineOffset := Integer(Bitmap.ScanLine[1])-Integer(Bitmap.ScanLine[0])
 else
  ScanLineOffset := 0;

{ 各ラインのポインタを求める }
 for Y:=0 to Bitmap.Height-1 do
 begin
  P := Pointer(Integer(ScanLinePtr0)+ScanLineOffset*Y);
  // 取得したポインタPを使ってとりあえず何かしよう
 end;
end;
>>228
これはいいこと聞いた。感謝上げ。

…したいんだが荒らし、批判その他避けで下げ。
230デフォルトの名無しさん:01/11/01 08:35
ネットワーク関係に困ったらIndyを使え。
何でも入ってるしソースから盗むこともできる
>228
ポインタの使い方が分からん。参考例全文をきぼん。
Delphi向けのポインタの詳しい解説サイトってないのかな。
>>231
http://user3.allnet.ne.jp/tadnakam/Delphi/delphi4/pascal/Pointer.htm
多分Cのポインタが分かっていれば、それと同程度に理解できるのでしょうが。
というわけでCのポインタ
http://member.nifty.ne.jp/maebashi/programmer/pointer.html
>232
ありがと
Delphi6 Enterprise 60日トライアル版を入手できるWebサイトはありませんか?
235デフォルトの名無しさん:01/11/11 11:00
自分で作ったプログラムから、
他のアプリ(たとえば、かちゅ〜しゃ)を終了させるのってどうしたらいいの?
WM_CLOSE
>>235
Windows終了時にかちゅーしゃ終了させるアプリ作ってる?
需要あるから公開キボンヌ。
kill@cygwin
んーぐらい自分で作れドアホウ
240235:01/11/11 13:33
>>236
    |うぇーん、どうしたらいいかわからないモナー
     ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧
     ( ´Д⊂ヽ
    ⊂    ノ
     人  Y
    し (_)
Googleで調べたら、
 PostMessage(Self.Handle, WM_CLOSE, 0, 0);
ってすると、自分自身を終了できるけど、
Self.Handleのとこの変え方(?)がわかんない・・・。
こういうのの使い方ってどうやって調べるの?

>>237
2ch依存しすぎてるんで、
一定時間したら強制終了させられたらいいかな、と。

>>238
cygwin(?)だと、一定時間後とかってできないですよね?

>>239
できたら代わりに作ってください。お願いします。
241デフォルトの名無しさん:01/11/11 14:06
>>240
EnumProcessとかFindWindowとか
242235:01/11/11 15:28
できましたー。
FindWindowを使って、
 FindWindow(nil,'かちゅ〜しゃ');
ってしたらできました。
(こんな方法で良いのか、わからないけど・・・)

あとはタイマーつけて頑張ります。
この度はありがとうございました。
「かちゅ〜しゃ」フォルダも引っかかるかも
      ,−-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなこたーない
    ´∀`/    \_____
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
>>242
むしろ、
FindWindow('TKatjushaMainForm', nil);
のほうがいいかも…
246235:01/11/12 13:24
皆様のおかげで無事完成いたしました。
かちゅ〜しゃ起動・終了の代わりに、
このソフトで起動・終了をさせなくちゃいけなかったり、
色々と使いづらいところもありますが、満足なできになりました。
ありがとうございました。
247235:01/11/13 18:24
ちゃんとできたような気もするのでageてみました
http://members.tripod.co.jp/RtFchs/KatjuClose_1113.lzh
248Delフサギコ:01/11/15 21:54
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < sageでゴメンなさい。
⊂,,,,,,,,,つつ.   \_

かちゅのパスが取得できていないみたいですので
http://homepage1.nifty.com/beny/tips/other10.html
これみて、かちゅ起動時には
フルパスを自動取得できたらいいなあ。
>>248
NTだとそれじゃフルパスが取得できないんだよねw
250Delフサギコ:01/11/16 09:26
    ∧ ∧  ソデシタカ
    ミ ゚Д゚彡  ジョウホウ サンクスコ
  〜ミ,,,,uuミ
251249:01/11/16 11:40
>>250
EnumProcesses
EnumProcessModules
GetModuleFileNameExA

を組み合わせて作る。
たしかこれ併用して9x/NTどちらでも
プロセスをフルパスで列挙可能な非VCLがあったんだが…

コンポのソースに書いてあったURLに飛ぼうとしたら404、
MSDNの検索でも結果に飛ぼうとしたら、んなページねぇぞゴルァ言われた…
具体的なURLは出せないスマソ。
>>251
BorlandのQ&Aで見た記憶がある。
C++用だったかも。
253235:01/11/19 17:01
あぁ、サパーリわからん( ; ´д`)
>>248で上げられてるのを、どう使ったらいいのかわからないレベル・・・)
レベル的に無理そうだし、OpenDialogでの取得で落ち着きます。
http://members.tripod.co.jp/RtFchs/KatjuClose_1119.lzh
254デフォルトの名無しさん:01/11/22 15:06
初心者質問なのですが、よろしくお願いします。
フォームを表示させる場合に、自動的に画面の中央に
表示させたいのですが、コーディングしないとダメなのでしょうか?
>>255
Form の Position プロパティのヘルプを読め!
257255:01/11/23 21:06
>>256
Positionプロパティだったんですね、了解です。
ListViewコントロールをレポート形式で表示させているのですが、
データを追加するにはどうすればよいのでしょうか?
ヘルプにはAddItemにリンクが張られてなかったのですが・・・
259デフォルトの名無しさん:01/11/23 22:05
>>258
VCL ソースを読んだら?
260デフォルトの名無しさん:01/11/23 22:22
>>258
質問者がどこで引っかかっているのかがわからないが...

ListView1.AddItem(Item: String; AObject: TObject);
または
 with ListView1.Items.Add do
 begin
  Caption := 'XX';
 end;
こんな書き方は? Items.AddItem は第一引数の扱いが難しいから
あまり勧めない。
261_:01/11/24 02:01
素直にこうすれば?

Item: TListItem;

Item := ListView1.Items.Add;
Item.プロパティ := 値;
262デフォルトの名無しさん:01/11/24 04:57
>>261
おなじじゃん...
263デフォルトの名無しさん:01/11/24 05:45
最近Delphi6Parsonalをダウンロードしました。
そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、
読込方法しかわからず、書き込み方法がわかりません。
DelphiMLとか、WebでWin32APIとか検索したんですが、どうにも見つかりません。
知っている方、教えていただけませんか?
264Delフサギコ:01/11/24 08:11
>そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、

   ∧,,∧   /
(,,,,,,,ミ,,゚Д゚彡 < 実は、かなり調べたけどフサにはわからなかったんだな。
⊂,,,,,,,,,つつ.   \
 もしかしてBATファイルで設定できないでしょうか?

 そしたら、テキストファイルとしてBATを作成して実行して削除すれば
 いいのかも....
265Delフサギコ:01/11/24 08:18
拾得
#define ENV_MAX 256 //特に根拠のない数字
char EnvOfTmp[ ENV_MAX ];
GetEnvironmentValiable( "TMP" , EnvOfTmp, ENV_MAX );

設定
SetEnvironmentValiable( "TMP", "C:\Windows\Temp" );

   ∧,∧     ,::  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡っ━'~  | 改めて調べたらいきなりわかった。
  ミ∪  ~,ノ    < BCBコードは訳しておくれ。
   ミ  '' ミ       \____________
   し'~し'

今は亡き、BCBサイト[ARAHIQS]のTipsですす。

試してないので、動作確認よろしう。
266258:01/11/24 11:01
>>260
サンプルソースで理解できました。
ありがとうございます。
>>265
ありがとうございます!
早速試してみたんですが、未定義の識別子:'SetEnvironmentValiable'
と言われてしまいました。
現在GetEnvironmentValiableの方は動いております。
何か、Usesに加えたりすれば解決するのでしょうか?
268名無しヘタぐらま ◆B18Bks.Y :01/11/24 20:04
>>258
文字列リストのObjectsプロパティのような
関連するデータへの参照ということでしたら
>>261さんの方法でもできますです.
レポート形式ということなので蛇足ながら
2つ目以降の列の設定のコードの例もあげるです.

procedure TForm1.Button1Click(Sender: TObject);
var
NewItem: TListItem;
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := 'なんとか';
NewItem.Data := FMyNantokaObject; // データへの参照.
NewItem.SubItems.Add('さぶ1');
NewItem.SubItems.Add('さぶ2');
NewItem.SubItems.Add('さぶ3');
end;
269Delフサギコ:01/11/24 20:39
  ∧⊂ヽ, /
  ミ゚Д゚,ミ,ノ< ハニャーン
  ミ⊃ ,ミ  \
  ミ,  ,,ミ    >>267、あら、見つからないですね。ガセかしら。
  ⊂,,,ノ
    ∪
Windows.pasにはこんな風にかかれてるけど。
function SetEnvironmentVariable(lpName, lpValue: PChar): BOOL; stdcall;
>>265
ValiableじゃなくてVariable。lとr間違ってる
>>270
間違っていました(汗
修正したら動くようになりました!
フサギコさん、270さんありがとうございました。
272デフォルトの名無しさん:01/11/30 14:03
初めて書き込みます。

現在テキストエディタを製作中なのですが、
作業中にTabを押してもメモ帳のようにカーソルが移動しません。
これはやはりOnKeyPressでそれ相応の処理をさせないと
いけないのでしょうか?(空白を入れる、など)
一通りTipsを探し回ってみたのですが、それに近い答えが見つからなかったもので…。

お願い致します。
273Delフサギコ:01/11/30 16:12

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < WantTabs
  UU""" U U   \_______________
フサギコさん有難うございます。解決致しました。
まさかプロパティだったとは…。

もう少し勉強してからお邪魔致します。
厨な質問申し訳ございませんでした。
275Delフサギコ:01/12/01 04:40

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < そんな恐縮せんでも、
  UU""" U U   \_______________
ガツガツ質問して、盛り上げてくれたらいいのでは?

MLとか、広場とかでやられるより
ここで質問したほうがよくない?
>>275
それは>1だからいえることで、イパーソジソには禁句と思われw
277HSP厨房:01/12/01 08:12
Delphiを解説している、本はない?
278デフォルトの名無しさん:01/12/01 08:52
Delphi6パーソナルでフォームを透明にするコンポーネントってありませんか?
>>278
おもいっきし TransparentColor とか AlphaBlend とかいうプロパティがあると思うけど
280デフォルトの名無しさん:01/12/01 17:08
272です。タブキーの件ではお世話になりました。

引き続きテキストエディタに関しての質問です。
読み取り専用ファイルを開いて[上書き保存]の処理をさせた時に、
「読み取り専用なので保存出来ません」と言った内容の警告を出したいと思っております。
とりあえず自分が考えたのは、

1)読み込んだファイルの属性を変数Ftype(仮)に格納
2)ダイアログを使用しない[上書き保存]の処理の際にFtypeの値を参照し、
 それぞれの処理に分岐させる

と言う感じの処理です。
OpenDialog等でファイルを開いた時に対象ファイルの属性を取得したいのですが、
取得する場合はどうすればいいのでしょうか?

>>276さん、フサギコさん
ありがとうございます。まだDelphiを始めて間もないですが、
自分なりに努力してやって行こうと思っております。
ご迷惑をお掛けするかも知れませんが宜しくお願いします。
>>280
ExtractFilePathでファイルがあるフォルダを取得して
FindFirst、FindNextをループさせて頑張る。
>>280
他にもあるかもしれないけど FileGetAttr

人に聞くのも一つの解決法かもしれないけど、ヘルプを引く癖をつけた方がいいよ。
このFileGetAttrという関数を覚えていたのではなく、ヘルプを開いて、「VCLリファレンス」
「ルーチン一覧(カテゴリ別)」、「ファイル管理ルーチン」と辿って見つけた。約1分。
>>280を書いて、俺がたまたま読んで、このレスを書くまで約30分。この差は大きい。

Delphiのヘルプって使いづらいとか言われてるから、慣れるまで時間がかかるかも
しれないけどね。俺は他の言語をほとんど使ったことがないのでよくわからないけど。
>>281
FindNext って、あんたワイルドカードを含んでいるわけじゃないんだから、
ファイル名が確定している状態で FindFirst に渡せばそのファイルの属性が取れる。
>>280
あと、ReadOnly のファイルに上書きしたい。という欲求が出てきてもおかしくないから
「開いたときの属性」ではなく「保存時の属性」で判断したほうが自然。
実際に書き込もうとしてみてエラーが出てから
原因を表示しても良し。
>>281-285の皆様、ご教授ありがとうございます。
282さんの解説して下さったFileGetAttrで処理する事に致しました。
対応としてはメモ帳と同じように、読み取り専用のファイルの場合は
[名前を付けて保存]の処理に移動させるようにしたいと思います。

>>282さん
ご注意頂き申し訳ございませんでした。
これからはヘルプ、Tips等を参照してから質問するかどうかを判断したいと思います。
今回のように基本的なことはすべてヘルプで解決出来そうなので…。

お邪魔致しました。
287282:01/12/02 01:03
>>286
「質問うぜー」とかって意味じゃないよ。
調べる手段を複数持っていた方が解決が早くなるときもあるから
そういうことを勉強するのも大切って話。
インテリマウスで何個スクロールするか、一画面スクロールするか、
みたいな設定を自作のコンポのスクロールに反映させたいのですが。
現在は、WM_WHEELlを受信したときWM_VSCROLLに置き換えて1単位ずつ雨後貸しています。
>>288
そうですか。
雨後貸しって何?
291デフォルトの名無しさん:01/12/02 05:39
>>279
遅くなってスミマセン。ありがとうございます。
しかしそれはwin98じゃできないみたいです。
雨後貸=動かし
こんな2ch用語あったか?
これの再現かと思ったのに・・・。
http://yasai.2ch.net/test/read.cgi?bbs=win&key=994872359&st=316&to=323
Delphiって、どういう意味ですか?
>>291
あきらめろ。
>>294
イルカ。
297デフォルトの名無しさん:01/12/02 06:05
>>295
わかりました。どうも、ありがとうございました。
298デフォルトの名無しさん:01/12/02 06:31
どるふぃん。
299デフォルトの名無しさん:01/12/02 07:16
M$Wordのマスコットってイルカじゃなかったですか?
300get
301デフォルトの名無しさん:01/12/02 08:36
Delphiは古代ギリシャの町の名前。
ボーランドはギリシャが好きらしく、
Midas (手に触れるものすべてを黄金に変える力を
与えられた王)などのソフトがある。
302-:01/12/02 10:58
そして Delphi で Oracle(神託) を受ける
303なんで:01/12/02 15:54
comp.lang.delphiってないの?
305デフォルトの名無しさん:01/12/03 10:39
アイコン選択ダイアログボックスってどうやって実装するの?
アプリによってUIがまちまちなんで全部自前で作らないと駄目なのかな
>>305
SHChangeIconDialog を使う。
307デフォルトの名無しさん:01/12/03 19:49
Delphi6Parsonalをインストールした。
でDEMOSにあるサンプルを見たが、どれが何だかわからん、ヘルプに説明無いし。
どっか説明してるとこあったら教えてくださいませ。
308sage:01/12/04 12:24
ツールボタン用のbmp画像がたくさんあるサイト知りませんか?
絵心がないもので...。
>308
別のDelスレにレスがあるよ
XPのカコイイボタンやタブコンはどうすれば使えるんですか?
311デフォルトの名無しさん:01/12/05 14:50
>>310
まにふぇすとを用意する。
312デフォルトの名無しさん:01/12/05 16:38
別のソフトの最大化を無効にしたいのですが、無理でしょうか?
SetWindowLongで無効にするだけだと、Userの操作での最大化は防げても
プログラム自体がShowWindow辺りで最大化するのは防げませんでした。
何かヒントなどありましたら教えてください。お願いします。
313無断転載:01/12/05 20:11
CBTProcフック プロシージャは、 次のような場合にシステムが呼び出す、 アプリケーション定義またはライブラリ定義のコールバック関数です。

・ ウィンドウがアクティブにされたり、 作成されたり、 破棄されたり、 アイコン化されたり、 最大化されたり、 移動されたり、 サイズ変更されたりする前

・ システム コマンドが完了する前
・ システム メッセージ キューからマウス イベントやキーボード イベントが削除される前
・ キーボード フォーカスが設定される前
・ システム メッセージ キューを同期させる前

フック プロシージャが返す値により、 Windowsがこれらの操作のいずれかを許可するかまたは許可しないかが決まります。コンピュータ ベースのトレーニング (CBT) アプリケーションは、 システムから有用な通知を取得するために、 このフック プロシージャを使います。
>>312
強引な方法だが、KERNEL32.DLL以外で、
対象アプリが起動時に読み込むDLLのラッパを作成。
そのラッパDLL内部で最大化したくないウィンドウをサブクラス化する。
そして最大化のメッセージを拾ったらそれを捨てる。

イメージとしてはWinMXに対するchime、かちゅ〜しゃに対する
Katjusha Extenderな感じだね。

これでどうだろう?外部からあれこれいじるのはあまりスマートに
実装できないし…(少なくとも漏れはスマートに実装する方法は知らない)
こうやって内部に侵入した方が(・∀・)イイ!と思われ。
>>313
システムフックって開発/デバック時、
Windowsや他のアプリにDLL掴まれて再構築とか
出来なかったりして面倒だし、最悪システム全体に
悪影響及ぼすから、あまりスマートとは思えないスマソ。
312くらいのことだったら始めはdllなしで組んで、グローバルじゃなくて
スレッドに掛けるようにすればという所感。
317312:01/12/05 21:21
色々とありがとうございます。
サブクラス化かフックということになるのですね。
詳しく調べて実験してみようと思います。
Magic of Delphi どこ逝ったの
>>318
閉鎖
320デフォルトの名無しさん:01/12/07 10:48
すいません。
Delphi4が1000円で売っていたのですが
今、持っているDelphi6Personalをそのまま使用したほうがいいでしょうか?
それとも買いですか?
Delphi4 の何なのかわからないと答えようがない
Pro以上なら買いだ
>>320
Client/ServerかProfessionalなら買い。Standardなら不要。

VCLソースが入っているかどうか判断の基準。
実際に使うのはDel6PersonalでDel4のVCLソースを参考にするという
使い方がいいと思う。
しかしユーザー登録してバージョンアップできるから
\1000ならやっぱり買いだ
>>320
正規ライセンスがついていれば買い。
もちバージョンアップが前提。
325デフォルトの名無しさん:01/12/09 13:07
>309
どのスレかだけでも教えて
>>325
フサギコ
>326
見つけました。ありがとうございます。
328Delフサギコ:01/12/09 15:16
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < 他にアイコン画像のいいサイトがあったら報告してね。
  UU"""" U U    \_______________
Delphiお役立ちサイト(コピペ)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
329( = ゚ ω゚ ):01/12/09 16:09
助けてください
2つ目のフォームを追加し、その名前を aa.pasなどとして保存し、
1つ目のフォームの uses に aa.pasを追加して
実行(コンパイル)すると、
usesの中にある Forms に対して
Forms.pasはどこにあるの?指定して
というエラーメッセージが出てしまう。
コンパイルされない・・・・
フォーム一つだけならこんなことならずにコンパイルできるのに
フォームが1つのプログラムしか作れなくて困ってます。
助けてぇ
330Delフサギコ:01/12/09 16:19
 ∩ ∩
 ミ ゙''゙〜
 ミ∧,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ,,゚Д゚彡 < そんな風にならないけど…
 U U   \________

関係ないと思うけど、D6?Personal?
Updateはあてましたか?<<大切なのでアテテください
331( = ゚ ω゚ ):01/12/09 16:22
D6personalだよぉぉ
332( = ゚ ω゚ ) :01/12/09 16:26
2つのフォームのプログラムなら
Form1(Unit1.pas)
Form2(Unit2.pas)
をつくって、
メインフォームであるForm1のusesに
Unit2を追加するだけで良いの?
それから両フォームで使用する変数って
値が変化せずにちゃんと引き渡されるのかな
なんか変数が初期化されちゃうんだけど(0になる)
333Delフサギコ:01/12/09 16:37
 ∩|
 ミ ゙''゙゙゙つ
 ミ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ,,゚Д゚彡 < で、とりあえずウプデト1は当てた?
 U U    \当ててないなら、大切だから当ててチョよ。

Form1のusesっていうのは
interface節ですよね。

今回の問題とは関係ないと思うけど
implementationにもusesできますので
区別しておきましょう。

>メインフォームであるForm1のusesに
>Unit2を追加するだけで良いの?
[ファイル(F)]-[ユニットを使う(U) Alt+F11]
するといいんじゃない。

>それから両フォームで使用する変数って
>値が変化せずにちゃんと引き渡されるのかな
>なんか変数が初期化されちゃうんだけど(0になる)

詳しくは

Delphiテクニックマスター集中講義 谷尻かおり(谷尻 豊寿 監修)
技術評論社 \2,718 ISBN4-7741-0305-5

このあたりの本に載ってるんだけど…
ここでは教え切れない面も多いので
変数スコープに関して書いている書籍を調べた方がいいです。


両フォームで変数を共通に使うよりも
Formのメンバーにアクセスする方がいいんだけどなあ....
334( = ゚ ω゚ ):01/12/09 16:43
フサギコちゃん、ありがとうございます

なんかうまくいかないから、初めからやり直してる。
今のところ問題なくいってるよ
Form1,2を別々に作ってから、
後でプロジェクトの追加でForm1にForm2を追加すると
おかしくなっちゃうんだ。
でもこれだと、前に作ったformが全て使えない事になってしまうぅぅ。

updateは今DL中です。

Formのメンバーってなんですか?
335ソース貼れ:01/12/09 16:51
336( = ゚ ω゚ ):01/12/09 18:44
変数宣言の仕方が良く判らないのですが
private
tt: integer; ←(1)
public
ss: integer; ← (2)
end;

var
rr: integer; ← (3)

この(1)で宣言したttは、このフォーム内でのみ使用
(2)のssはどのフォームでも使用可能ということですよね?
どのフォームからでも、ssの値を参照したり、
値を代入したりできるのですよね?
ここでは var はいらないのですか?

(3)のrrはこのフォーム内のみで使用可能らしいのですが
何故privateのところで宣言しないのでしょう?
(1)と(3)にはどんな違いがあるのですか?
337( = ゚ ω゚ ):01/12/09 18:59
ここからソース張ります
>>336
>(1)と(3)にはどんな違いがあるのですか?
(1)はフォーム(=クラス)ローカル
(3)はユニット(=ファイル)ローカル
いまはたまたま一ユニット一フォームなんで違いが目立たないだけ
といっても今の知識じゃわからないだろうから
とりあえず(1)を使うべし
339( = ゚ ω゚ ) :01/12/09 18:59
unit YaMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, YaTask, Menus;

type
TMainForm = class(TForm)
TPNameBox: TEdit;
(中略)
TaskOrder: TMemo;
procedure TaskStartBtnClick(Sender: TObject);
procedure O1Click(Sender: TObject);
procedure S1Click(Sender: TObject);
procedure X1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
MainForm: TMainForm;
PresentTP: String;
TAD, AAD: array[1..100] of Integer;


implementation

{$R *.dfm}

procedure TMainForm.TaskStartBtnClick(Sender: TObject);
begin
TAD[1] := 5; AAD[1] := 9
TaskForm.ShowModal
end;
340( = ゚ ω゚ ):01/12/09 19:00
次にサブフォーム(YaTask)

unit YaTask;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TTaskForm = class(TForm)
(中略)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
TaskForm: TTaskForm;

implementation

{$R *.dfm}



procedure TTaskForm.FormCreate(Sender: TObject);
begin
label1.Caption := IntToStr(TAD[1])
end;
(1) の上に class ってあるでしょ?それが違い。

とりあえずマニュアル読めや。同じ言葉は同じ意味を持つようにしないとコミュニケーション
できないからな。

マニュアル読んで、わからなかったらそこを聞け。
342( = ゚ ω゚ ):01/12/09 19:04
YaMainのvarで宣言してグローバル変数になってる筈の
TAD[1]が、YaTaskの方で
未定義の識別子 TAD
って出てしまう。
どーしたらいいの?
ベーシックしか使った事無いんだけど
Delphiがこんなにややこしいとは思わなかったよ
フォームの追加とか本の通りにやってるのに
エラーがでまくって全然コンパイルできない
個々のフォームは文法エラーとか解決してるのに
泣けてくるよぉ
>>342

BASIC のことを一度完全に忘れろ。
共通データはフォームとは別のユニットに切り離すのが定石
uses YaData;
interface
PresentTP: String;
TAD, AAD: array[1..100] of Integer;
implementation
end.
ってユニット作ってから両フォームからuses YaDataする
345( = ゚ ω゚ ):01/12/09 19:12
Form1でXという変数に'5'を代入して
Form2でXの値をYに代入するには、
Form1とForm2にどんな文章が必要なのですか?
XとYはどこで宣言すれば良いのですか?
とりあえずこれだけ知りたいです。
346( = ゚ ω゚ ):01/12/09 19:13

Form1、Form2じゃなくて
Unit1、Unit2かな
347( = ゚ ω゚ ):01/12/09 19:15
>>344さん
YaDataで宣言した変数は、
YaTask,YaMainで宣言無しでいきなりしよう出来るのですか?
>>342
誰でも使えるように「許可」する。
ってのと
誰でも使える物を「使用」する。
ってのは本来別の作業。

未定義エラーがでたユニットに,TAD を定義したユニットを
[ファイル | ユニットを使う] で追加。

もし「追加できない」と言われたら,未定義エラーがでたユニットの
'uses' 節を確認し,TAD を「使う」場所より上の uses 節で
TAD を「定義」しているユニットが現れるように修正。
349( = ゚ ω゚ ):01/12/09 19:21
unit YaData;
interface
PresentTP: String;
TAD, AAD: array[1..100] of Integer;
implementation
end.

これでコンパイルしようとしたら
3行目をさして
宣言が必要な場所に識別し PresentTPがありますってエラーがでたよぉ・・・・
無意味にアゲるな。
使っている環境をかけ。D6 Personal だっけ?
マニュアルは目を通したか?読んでいないならそう書け。ただで教えを求めているのだから
少しは恥をさらせ。

D6 Personal のクイックスタートには例の問題があるから,
Delphi 5 クイックスタート・アップデートファイル
ftp://ftp.borland.co.jp/pub/delphi/d5onlinedocup/D5DOCTET.zip
を入手して最低限の知識を付けろ。
ここにでてくるプログラムの意味を理解できるようになったら出直してこい。
>>349
いい加減にしろ。そのエラーに対して F1 ヘルプを読め。
エラーがでたら思考停止か?ボケ?

「宣言が必要な場所に識別子」があるんだよ。
352( = ゚ ω゚ ):01/12/09 19:38
>>350 のエディタの作製は読んだけど
2つのユニットで変数をやりとりするって話は出てこないのでは?
>>348 の方法で2つユニットで共通の変数を使用できる様になったけど
こんどはユニットごとでその変数を初期化してしまう・・・
ユニット1で代入した値がユニット2ではゼロになってる。
D6personalですよ。
マニュアルにユニット間での変数共用に付いて解説してるページ、ありましたか?
まあでもnamespaceってのは、BASICERには結構分かりづらいかもね。
これでもみて悩んでちょ↓
unit A;
interface
type
TALPHA = class
private
fMember1:Integer;
public
fMember2:Integer;
procedure Func;
end;
var
gVar:Integer;
implementation
var
Var2:Integer;
procedure Func2;
begin
//使えるもの:Var2,gVar
//使えないもの:fMember1,fMember2,Func,FuncB
end;
procedure TALPHA.Func;
begin
//使えるもの:fMember1,fMember2,Var2,gVar,Func2
//使えないもの:FuncB
end;

end.

unit B;
interface
implementation
uses
A;
var
Alpha:TAlpha;
procedure FuncB;
begin
//使えるもの:gVar,Alpha.fMember2,Alpha.Func
//使えないもの:Var2,fMember2,Func2
end;
あなたは DelphiML に入って質問するといいよ
みんな親切に答えてくれるよ
特に戸田って人が。
>>353
ネームスペース,っていうよりスコープの概念が欠落しているというか。

いいんじゃないの?コンパイル時とリンク時の2段階ある C/C++ で悩むより
1段階ですむ Delphi で可視性を学んだ方が楽だと思うよ。
BasicってVB? VBでも構造体があるでしょ? Formクラスで宣言してるのは構造体の定義みたいなもの
だから、実際には変数として定義しないといけない。

var Form1:TForm1; ってあるところが実際の定義だから
クラス内でxxx:integer; とか定義したのは クラスの外からは Form1.xxxで参照しなければいけない。

 ただ、クラスの場合は定義しただけじゃ実体がまだ出来てないのが構造体と違う所。

構造体じゃない所で varで定義してるのが変数。
interface で定義したら グローバル 他の ファイルから見える
implementation で定義したらローカル 他のファイルからは見えない
>>339
PresentTPやらTADやらAADをTMainFormのパブリックメンバにして
TMainForm = class(TForm)
public
PresentTP: String;
TAD, AAD: Array[1..100] of Integer;
end;

unit YaTaskのimplementation部でuses YaMainして
unit YaTaskからは、TMainForm.TAD[0] := 3; とかした方が楽だと思うが?
>>352
フォーム同士でやりとりする場合は
 直接公開するよりメソッドにするか プロパティにする方がいいよ
もしかして、「宣言」、「定義」、「識別子」とかいう意味からして理解してない?
とりあえずObjectPascal言語ガイド通し読み10回の刑に処す。
360( = ゚ ω゚ ):01/12/10 00:27
>>359
はぁぁい
只今読んでおります。
>>360
読んでてもつまらないかも知れないが、基本は大切だ。頑張れよ。
Delモナはどこへ逝きましたか?
「Delフサギコの *やさしい* Delphi質問スレ」になってますな。
>>362
どうでもいいじゃないか。
どうせ匿名掲示板なんだし。
>>354
 ∧ ∧
( ´∀`)( 中村ってオッサンも答えてくれるよ。仕事してないのかな?   )
365デフォルトの名無しさん:01/12/10 16:26
Delphiのエンタープライズ版とプロフェッショナル版は
具体的に何が違うのでしょう?
どっちを買った方がいいですか?
366味噌醤油醸造株式会社:01/12/10 16:31
367デフォルトの名無しさん:01/12/10 16:37
>>366
ありがとうございます。
参考にさせていただきます。
368Delフサギコ:01/12/10 19:25
エンプラ版は個人で買うには高すぎるような....

大人買いを超えるブルジョ-ア買いが必要

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,,゚Д゚彡∬
   〃  つ旦O
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
369デフォルトの名無しさん:01/12/11 00:54
Delphiでアプリを作ると、どうしてあんなにファイルサイズがでかくなるのでしょうか?
Upxとかを使って圧縮するほかに、ファイルサイズを小さくするテクニックってありませんか?
370ねこま:01/12/11 00:59
>>370
なるほど、ありがとうございます。
やっぱり、VCLを使うかぎり重くなるのは仕方ないんですね。
直APIか・・・
VCL -> でかい
ってのは都市伝説に近いものがある。

そりゃ、API のみ呼び出しでけりがつくプログラムならそっちが小さいが、
ある程度のプログラムになるとみな同じ。
ファイルサイズと重いと混同してる>>371

WinアプリのExeはどれも数メガ単位。
VBなんかはExeが小さくても超重いし、メモリ不足がすぐ起きる(ナンデ?って感じ)。

Delphiだとフォーム一枚のときはExeが大きく感じるが、
それからフォームをどんどん増やしていってもそれからは余り大きくならない。
らんたいむが思いの?
375デフォルトの名無しさん:01/12/11 15:29
>>374
Delphiはランタイム使わなくてスタティックリンクしたら良いYO!
Delphi&VCLって重いっていうより高速って話なんだけど。

VBのランタイムなら重いしメモリを一杯積んであっても自己メモリ不足エラーを起こす。
>>375
でもランタイム配布面倒だYO!


高速かはわからんが、少なくともVCアプリと同等レベル、
もしくはそれを前後するかと思われ。
だったコード次第でどーにでもなることだし。

で、重いっていうより、コードサイズがでかくなるんだよな>ランタイム


>VBのランタイムなら重いし
そうそう、VCLの比じゃないよな、あのサイズは。
ちょっとしたツール作ってFDに入れたとき、Delphiなら
ランタイムを気にしないで(・∀・)イイ!!から(゚д゚)ウマー
375はランタイムやめて、スタティックリンク使えと書いてるZO!>>376
378375:01/12/11 16:30
Σ(゚д゚lll)ガーン
よく見てなかった…鬱氏
逝ってきます…
379376=378:01/12/11 16:31
オマケにレス番間違えた…今すぐ逝こう…
ちゃっちゃとな。
381デフォルトの名無しさん:01/12/11 21:59
Windows2000で動いていたOLEでWORDを動かすソフトが、
XPにしたら動かなくなってしまいました。
呼び出し先が呼び出しを拒否しました、ってどういうことだろう・・・。
この場合、WORDの設定が悪いと考えるべきでしょうか?
>>381
Windows XP 上の Office XP ? それとも Office 2000 ?

Windows 2000 の上で動いていたときの Word と
動かなくなった XP 上の Word と
二つのワードは同じ版?
>>382
WORDはWindows2000で動いていたのと同じ、Office2000シリーズの物を
WindowsXPにインストールしたのです。
Word.Applicationでバージョンも指定していないので、問題ないと思うのですが・・・。
>>383
XP でセキュリティが厳しくなったのかねぇ。
手元の .net server には Office 入れていないので
テストできないから、すぐには答えられないけど。

とりあえず dcomcnfg とかわかるなら、動かしてComponent Service / Computer の
プロパティの Default COM Security をチェックしてみたら?
385デフォルトの名無しさん:01/12/12 00:09
直API でミニサイズのEXEを作るのは
ちょっと面倒なので、どなたか TTinyForm クラスを作ってくれませんか?
なんでそこまでexeのサイズにこだわるんだ?
サイズが大きくて具体的にどんな問題があるのかいってみ
>385
どこが面倒なの?
>387
アフォ?
>>386
ウィルスのサイズが360KBもあるとダサイじゃん。
390387:01/12/12 00:16
>388
アフォですが、何か?
お前のウィルスは、律儀にフォーム表示しながら動作するのか?
オー、ユーザーフレンドリーダネ
世界最初のウィルスコンストラクションキットが Delphi の先祖の TurboPascal せいだった。
ってことを覚えている人がどれだけいるか。
394Delフサギコ:01/12/12 07:17
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < 元々しらへん
  UU"""" U U[大阪弁]_______________
>>385
halb○wさんのページに行くといいよ(知ってるか
>>385
直APIでよく作るけど、TForm並みのものを作るのはかなり面倒。
TFormってそれ自体独立してなくて、VCLがいろいろからんで来るから余計。
ていうか、そこまでするならVCL使った方が早いよ。
何とかって言うウィルスはDelphi製で、感染するとファイルサイズが360KBぐらい増えるそうだ。
>>397
それでも今の時代じゃ 360KB 増えても気付かないだろうな・・・
399デフォルトの名無しさん:01/12/13 00:26
普通にクリックできて、ドラッグもできて、
表示する画像も指定できて、フラットスタイルにできる
スピードぼたんなのって何かないですか?
TSpeedbutton
401デフォルトの名無しさん:01/12/13 00:52
>>400
TSpeedbuttonをドラッグさすのって、
MouseMovwのとこにざくざく自分でコードかかんかったら
駄目なんかな
漏れにはボタンをドラッグするという意味が分からないのだが・・・
403デフォルトの名無しさん:01/12/13 00:58
ドラッグするのなら、クリックは出来ないと思う。
>>402
あれじゃないの?MS-Officeのツールバーみたいに
カスタマイズできるやつ。
405401:01/12/13 01:07
MS-Officeのツール場は知らないけれど、多分それっ。
クールバーを一つずつとか
>406
ナイスアイディアで賞。
408デフォルトの名無しさん:01/12/13 16:21
スレ違いを覚悟で質問。

Delphi6付属の InstallShield Express Borland Limited Edition で、
ひとつの*.msiだけ配布すればいいようなビルドはできますか?

どーやっても、*.msiと*.cabのふたつができてしまいます。
409828:01/12/13 17:37
http://pc.2ch.net/test/read.cgi/tech/993005709/828
より移転。

828 :デフォルトの名無しさん :01/12/13 13:59
変な質問でごめんなさい。
DllとExeでstringの受け渡しをする時、RefCountを0にしないように気をつければ
BorlandMM.dllを使わなくても大丈夫ですか?
理屈の上では RefCount が増減しなければ問題ない。

けど、文字列型の管理は目に見えないところで行われるから、気をつけたほうがいいよ。
411デフォルトの名無しさん:01/12/13 23:17
TFileOpenWithが標準アクションの追加ダイアログに表示されません。
何か条件があるんでしょうか?
412デフォルトの名無しさん:01/12/14 06:55
TThreadの質問なんですが、Synchronizeメソッドがどうなっているのか
知ろうと思い、ソースを眺めてみましたが、スレッドを作るときに
ダミーっぽいウィンドウを作りそのウィンドウにメッセージを送って
Synchronize引数の関数を実行しているようにしか見えないのですが、
こんなんでメインスレッドとの同期が取れているのですか?
>>412
 メッセージは電話のように割り込みで送られるわけではなく、
メールをチェックするように、来てるかなと問い合わせますよね?
414デフォルトの名無しさん:01/12/15 23:28
プログラムの実行中に動的に作成したフォームを、プログラムの途中で
解放してやっても、タスクマネージャで見ると使用メモリ量が減らないのは
何故ですか?
ちゃんと解放されていないのでしょうか?
普通に Free メソッドを呼び出しているのですが・・・
メモリマネージャ
バスケ部のマネージャー
秘密戦隊ゴレンジャー
ハイチュウ食べたいんじゃー
Delphi に限らず、ほとんどの言語処理系は実行時ライブラリ側で
メモリ管理を行います。そのため、メモリブロックを開放したからといって
その時点ですぐに OS にメモリが返却されるとは限りません。
タイガー炊飯ジャー
寄せて上げるブラジャー
422414:01/12/16 00:11
>>415-421
ありがとうございます・・・

では解放したメモリをOSに返却するにはどうすればようのでしょうか?
常駐するタイプのアプリを作っていて、できるだけメモリを節約したいのですが。
NewInstanceをオーバーライドするとか?
フォーム自身が使うメモリは大した事ないと思うのですが。
InstanceSizeで見れるのか?
メモリマネージャをWin32API直叩きするようにすげ替える。
詳細はヘルプにある。
>>422 ワロタ、あんた強者だよ。
426デフォルトの名無しさん:01/12/16 00:45
返却には返却カードをお持ちください。
またのご利用をお待ちしております。
427デフォルトの名無しさん:01/12/16 00:50
 
428デフォルトの名無しさん:01/12/16 11:14
Del6Proの開発者ガイド 30-3 に XML
コンポーネントの話が載っているけど、
そんなのどこにも見当たらない。Enterprise 版のみの機能?
429828:01/12/16 15:28
>>409-410
ありがとうございました。
うまくいきそうです。
430デフォルトの名無しさん:01/12/17 16:57
全てのキーボード入力(Alt+Ctrl+Del含む)をロックするにはどのように
したらよいのでしょうか?
初心者質問ですいません。
>>428
Delphiヘルプ - Delphi6の新機能 - XMLのサポートを見ると
タイトルが
「XMLのサポート(Enterprise 版)」
となっているのでそうかも

開発者ガイド 30-3の記述どおり、Ent版の[Internet]ページにはある
432デフォルトの名無しさん:01/12/17 17:53
CLXアプリケーションで新規作成したとき、

var
p:Tpoint;
rgbcolor:Tcolor;
begin
 if button =mbleft then begin
 GetCursorPos(p);
 p := image1.ScreenToClient(p);
 rgbcolor:=image1.Canvas.pixels[p.X,p.Y];
・・・
のように
イメージ上のクリックした点の色データを収得したいのですが、
pixelsがcanvasにみつからないんです。
なにか、ほかの方法ってありますか?
Del6のパーソナルだとデータベースに接続できないので、
Professional版を買いました。
Professional版でもSQL-ServerやOracleに接続できるのでしょうか?

それとも、Delphiユーザーでデータベースを使われる方は、
Enterprise版を買われているのでしょうか・・・(泣

初心者質問ですいません。
434Delモナー:01/12/17 19:10
>>433
ADOExpressで接続できる。
435デフォルトの名無しさん:01/12/17 21:12
StatusBarの1つのパネルをクリックすると、
それに対した処理ってどういう風にやったらいいですか?
OnClickはStatusbarにしかなく、
StatusBarのどこをクリックしても同じになっちゃいます。

Moon Browser や Netscapeの、アイコンクリックで
オンライン・オフラインの切り替えができるようなものです。
436デフォルトの名無しさん:01/12/17 21:18
>>433 personalでもADOを使えばできる。
437デフォルトの名無しさん:01/12/17 21:36
>>385
OpenGLかdirectを使えばformより表現力があってfilesizeは50kbyeくらい
サンプル豊富

あとKol+MCKというのを使うとビジュアルで開発できてファイルサイズは50kbyteで
ADOにも対応

あと基本だけどdelphi3を使えば基本コードは180kbyte、まだ現役でd5やd6と合わせて使う人は多い
D5とかd6で関数を作ってd3でアプリを作るのが手っ取り早いのかも

もっともWin32APIベースでもテンプレート作っちゃえばあとは楽じゃない?
delphiはBCBやVCよりもAPIベースのアプリ書きやすいと思うが
438437:01/12/17 21:37
direct → DirectX
>>434 >>436
回答ありがとうございます、少しホッとしました。

質問ばかりで申し訳ないのですが、
SQL LINKは、教えて頂いた接続方法と何が違うのですか?

どちらを使う方が良いのでしょうか?
440素人考え:01/12/17 22:37
>>435
OnMouseDownかOnMouseUpで位置からパネルを算出、
それにより該当処理、でどうよ?
441435:01/12/18 07:55
>>440
ありがと

なんだか大変そうだけど頑張ってみる
>>441

uses
CommCtrl;

function WhichPanels(SB:TStatusbar;x,y:integer):integer;
var
i:integer;
r:TRect;
pt: TPoint;
begin
result := -1;
pt := Point(x,y);
for i := 0 to SB.Panels.Count-1 do begin
SendMessage(SB.Handle,SB_GETRECT,i,LPARAM(@r));
if PtInRect(r,pt) then result := i;
end;
end;

procedure TForm1.StatusBar1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ret:integer;
begin
ret := WhichPanels(Statusbar1,X,Y);
if ret <> -1 then
Label1.Caption := 'You Clicked Panels of '+IntToStr(ret);
end;
>>442
こういうのがさらりと出てくるのカコ(・∀・)イイ!!
>>443
そらもう Borland 直営サポートサイトですから。
445435:01/12/18 19:45
>>442
ありがとーーーーすごいです。
神!!!って感じでうs

無事に実装?することができました。
自分でやってたら、無理とあ諦めてたかも・・・
446デフォルトの名無しさん:01/12/19 00:40
他のアプリケーションを操作したいんですけど、どうすればいんでしょうか?
>>446
マウスイベントとキーボードイベントを使え。
お願いです。 Command パターンを使った例を教えてください
Object Pascal で。
>>448
デザインパターンの一種?
>>448
例なら他の言語のでもいいんじゃない?
Java 読めないとか?
451デフォルトの名無しさん:01/12/20 04:19
>>449
そーです
Undo とか実装する時に使うんだったかな
TQUERYコンポーネントを使ってデータベースの内容を
DBGridに表示するのですが、ユーザーからの条件入力によって、
絞り込みを行うにはどうすればよいのでしょうか?
>>452
SQLでお好きなように。
>>452
またはフィルタ使うとよろしい。
>>453
試してみます。

>>454
フィルタ・・・ すいません、まだ初心者なので、よくわからないのです。
SQLを何度も書き換えなくても、Delphiらしい便利な機能があるんですね。

フィルタってどんな感じで使う物なのですか?
456デフォルトの名無しさん:01/12/20 19:49
文字列変数に ' を代入するには、どうすればよいのでしょうか?
>>456
'を2つ並べる。つか、色々試してみると聞くより早く解決すると思われ。
>>457 ありがとうございます。
そうですね、色々試してみます。 m(__)m ぺこり
>>455
Query.SQL.Append('SELECT * FROM HOGE');
として
Query.Filter := 'HOGE1=1';
とかSQLのWHERE以降を入れて
Query.Filtered := true;

つーかHelp読め。
Magic of Delphiはどこに逝ったの?
461デフォルトの名無しさん:01/12/21 00:55
>>460
あ、探してる人がいた(^^;。
二つ検索でひっかかるけど、どっちも無いんだよねー。
移転or新装開店中なんかしらん?
462デフォルトの名無しさん:01/12/21 08:09
「かしらん」て何語だよ!!
かしらん
〔連語〕(「かしらぬ」の変化した語)
1 文末に付いて、終助詞的に用い、疑いや問いかけの気持を表わす。…だろうか。かしら。*滑・浮世床‐初「あれでもすむ事かしらん」

Kokugo Dai Jiten Dictionary. Shinsou-ban (Revised edition) ゥ Shogakukan 1988/国語大辞典(新装版)ゥ小学館 1988
       ||
     ∧||∧
    ( / ⌒ヽ
     | | 462|
     ∪ / ノ
      | ||
      ∪∪
オタしか使ってるのを見てなかったので
オタ用語だと思ってました。
ご迷惑おかけしました。
かしらん

〔「か知らぬ」の転。近世江戸語以降の語〕
(副助)意味・用法は「かしら」に同じ。
「あの人はどこ―へ行ってしまいました」「毎日商(あきねえ)から帰りにはの、何―竹の皮へ買つて来ての/滑稽本・浮世風呂 2」
(終助)意味・用法は「かしら」に同じ。
「どこへ行ったの―」「バスにしよう―」「あれでもすむこと―/滑稽本・浮世床(初)」
〔江戸語では男女ともに話し言葉として用いたが、現代語では主として女性に用いられる。
また、現代語では「かしら」の形が一般に用いられる〕→かしら(副助・終助)
466デフォルトの名無しさん:01/12/21 10:03
>移転or新装開店中なんかしらん?

「かしらん」じゃなくて、「新装開店中なんか、しらん?」じゃないの?
       ||
     ∧||∧
    ( / ⌒ヽ
     | | 462|
     ∪ / ノ
      | ||
      ∪∪
お願いです。
もうそっとしておいてください。
>462
逝くこたぁないだろ。生きろ。





一生十字架背負ってな。
469デフォルトの名無しさん:01/12/21 11:00
Pixels[x,y]の読み書きがやたら遅いんだけど
どうすりゃいい?
>469 ビットマップに読み込んで 行毎に処理
Magic of Delphi のめぼしい記事は全部回収したので
オレとしては消えてもらってもィィ!!
472デフォルトの名無しさん:01/12/21 11:24
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delphi
473デフォルトの名無しさん:01/12/21 11:26
>>473
ありがとう( `∀´)
475Del若葉まーく:01/12/21 18:35
VBからDelphiに乗り換えようとして勉強している
Del初心者です。よろしくお願いします。

日付型変数で、1日後、1ヶ月後、1年後を取得するには
どうすればよいのでしょうか?

年が変わったり、うるう年だったりとか面倒なので、
VBのDateAddやDateSerialみたいな関数を探してみたのですが、
見つけきれなくて、ここに書き込んでみました。

よろしくおねがいします。
DBGridにデータを表示する際に、
日付とか書式を設定して表示するにはどうすればいいのでしょうか
477461:01/12/21 23:11
「なのかしらん?」の「なんかしらん」です。
昔の本にはよく、この表現が出ますな。

で、どーなったんだろう?<Magic of Delphi
478delhpi:01/12/21 23:18
http://www.google.com/search?q=delhpi&hl=ja&lr=
↑「ウェブ全体から検索」
http://www.google.com/search?hl=ja&q=delhpi&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
↑「日本語のページを検索」
このネタ、もうあった?自分も一回書いちゃったことがあるんだけど、
検索ひっかかるんで…。たくさんあるねぇ…。
479デフォルトの名無しさん:01/12/21 23:50
救いは .com .uk .ru とかも出てくる所ですね.

"exploler" とかだと .jp しか出てこない
同じ日本人として恥ずかしい……
D++って何ですか?
481           :01/12/22 00:02
Magic of Delphiはどこに逝ったの?
この所為でしょう http://www.allnet.ne.jp/info/index.html
作者の別のページ http://hp.vector.co.jp/authors/VA003670/
がんばってリニューアルして欲しいよ
delphiのページってなぜか.ruが多いよね。全然読めんが。
>>475
DataAddはないと思うんですが、日付計算はEncodeDate, DecodeDate
を良く使いますね。
DecodeDate(Date, y, m, d);//今日取得
明日の日付=EncodeDate(y, m, d + 1);
ッてな感じです。
>>476
http://kova.cside2.jp/bbs/cyclamen.cgi?log=db&tree=r87
483482:01/12/22 00:14
良く考えてみたら普通に足せばいいですね。
明日の日付=Date+1;
でした。あとIncMonthっていう関数もあるみたいです。
484デフォルトの名無しさん:01/12/22 00:18
ははぁ…。なるほど。サンクス>>481
485Magic of Delphi:01/12/22 00:24
486デフォルトの名無しさん:01/12/22 00:41
>>485
トップページしか見られない。ダメダメだよ?ん。
487デフォルトの名無しさん:01/12/22 02:08
D++って何ですか?
D++って何ですか?
D++って何ですか?
D++って何ですか?
D++って何ですか?
生きているって何ですか?
人を愛すって何ですか?
僕はなんのために、毎日飯食って糞しますか?
>>488
カート・ヴォネガットの本でも読みな。
490Delフサギコ:01/12/22 05:44
>D++って何ですか?
         _________
  ∧,,∧   /
 ミ,,゚Д゚彡<  日本初のDelphi雑誌じゃなかった?
  ミつ つ  \ 編集者がバックレてしまって廃刊になったとか...
〜ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  U U  MLのログで罵り合いがあったような

ヨクシラン シリタクモナイ
491Delフサギコ:01/12/22 05:56
>>475
>>483で答え出てましたが
一応、つことで。

 ̄ ̄∨ ̄ ̄ ̄
  ∧,,∧
 ミ,,゚Д゚彡
  ミ つ[ ソウス ]).
〜ミ ,, ミ 
  ∪∪   1年後は12ヵ月後にしてしまおう

procedure TForm1.Button5Click(Sender: TObject);
var
 Ago1Month: TDate;
begin
 //現在日を表示
 DateLabel1.Caption := DateToStr(Date);

 //5日前を表示
 DateLabel2.Caption := DateToStr(Date - 5);

 //1ヶ月前を表示
 Ago1Month := IncMonth(Date, -1);
 DateLabel3.Caption := DateToStr(Ago1Month);
end;

  ∧,,∧     />>482
 ミ,,゚Д゚彡  < Decode/EncodeDateだと
  U  U    \実在しない日付の場合、例外が出てやばいよ。
〜ミ  ミ
  ∪∪  12月32日とかね。
関係ないが、身の回りでは

[ ] は強めの発音
(1) 「[デ]ルファイ」 デを強く発音し、ル、ファイと弱くなる。
(2) 「デ[ルファイ]」 デを弱めに発音し、ルファイ はデよりも少し強めに。
(3) 「[デ]ルフィー」

の3通りの読み方に分かれた。
俺も含め最も多いのは (1) だった。

辞書で見たら デルポイ とかでてたけどどうよ。
そういえば デルファー って呼んでたやつもいたな。
494IME2002:01/12/22 14:10
でるふぁい − Delphi
でるふぉい − Delphi
でるふぃ − 出るふぃ
でるふぁいは打たれる
関係ないレスかもしれんが、>>495は文章を入力してるときに
自分で「おもしろい! これはワラタをGETできる!」と思ってるの?
デルファ[イ]
>>496
某ページにあるネタなんだから一々けちつけないの…
499ななしヘタぐらま ◆B18Bks.Y :01/12/22 17:17
>>491
Decode/EncodeDateで例外を出しちゃうバグは私も経験アリです.
おかげでIncMonth関数を覚えました.
デ[ル]ファイ











でるふぉ[え]ーーーで正解
503delhpi :01/12/22 23:05
delhpiは何て読もうか?
デルフピ?
カワイイ。
inc(D)
505名無し募集中。。。:01/12/23 02:08
>>505
デ[ル]ファイで決定と。
507デルフピ:01/12/25 00:36
よく「DLLのいらないアーカイバ」ってあるけど、
アレって、どーゆー仕組みなんだっけ?
昔、そんなスレあったけど、結局どーだったのか忘れた(結論見てないだけかも?)。
どーやってるの?
>>507
自前で圧縮・解凍の処理を書いてるに決まってんだろ
509デルフピ:01/12/25 01:07
>>508
ありがとう。やっぱりそうなんだ!すごいなぁ。
面倒なだけでさして凄くもないと思うが。
仕様が分かってるのだし。
511デルフピ:01/12/25 02:37
>>510
いやぁ、アッシからするとスゴイでやんス。
まだヒヨッコなんで。デルファイの。
>>507
じゃあDLLはどうやって作ってんだ?ということを考えれば一目瞭然。
でも面倒なだけっつっても対応形式増えると馬鹿にならんなー。
だいたいCなので、CコンパイラでObjファイルを作ってリンクするのが簡単。
514デルフピ :01/12/25 23:53
ほうほう。難しくてよく分からんけど(^^;。
ん、もしかして、作る側でなくて使う側の人かな?
516デルフピ:01/12/26 00:07
いや、作る方ですが…。まだまだ始めたばかりダスんで。
DLLをリソースに入れて、アドレス検索して呼び出してるなんて事はないのかな
518Del若葉マーク:01/12/26 13:07
>>482 >>491
遅い返事ですいません。
親切にありがとうございました。

皆さんの様に、Delphiをバッチリ使えるように、
早く若葉マークを取りたいです・・・(泣
519Del若葉マーク:01/12/26 13:10
Delphiユーザーの方って、親切な人が多いですね。

また、初心者質問をするかもしれませんけど、
宜しくお願いします。 m(__)m ペコリ
>>519
そんなことは無い。by 吐駄
>>517
リソース内のWinAPI呼び出しがうまく行かないと思うYO!
>>517
グローバル変数が使えないので、メモリマネージャの初期化に失敗する。
スタックだけでやるしかなYO!
523517:01/12/27 08:37
なるほど、エクスポートだけじゃなくてインポートも自分が解決しなくちゃいけないのか・・・

という事は ・・・結局逆アセしてリンクした方がマシか
WordApplicationやCreateObjectでWord.Applicationを指定すると、
「呼び出し先が呼び出しを拒否しました」とか言われるのですが、どうしてでしょうか。
Excelの場合はそんなことないようです。

ttp://www.dm4lab.to/~usa/dekigoto/200110c.html

ここの人と似たような状態なのですが、解決策がわからず・・・。
Word側にSP2までは当ててみました。
526デフォルトの名無しさん:01/12/29 18:00
delphi6のファイルサイズにむかついている人は何で少ないのですか?
D3→D5はかろうじてがまんしたしWinAPI使えばどうにかなったけれど
フォームだけで
180k(D3)→280k(D5)→360k(D6p1)
D6だとフォームすら使っていないOpenGLアプリが
700kbyte→1.1Mbyteです。

なんかうまいてないですか??
Del6をCPU1GHz, HDD100GB, MEM512MBのPCで使って
まったくむかつきませんが何か?
>>526 とりあえず

1)UPX で圧縮する うまくゆけば1/3くらいになるぞ
  これはホントにお薦め

2)D6は編集だけに使って配布する時はD3で
  まあ実際にはD3は厳しいだろうからD4で
>>526
メインアプリはAPIベースで作ってるのでむかつきません。
ちょっとまって、フォームすら使っていないOpenGLアプリがなんでそんなにデカイの?
ま、フォーム使って無くても、コンポーネント使っただけでアウトなんだろうけど。
気になってOpenGLの簡単なの作ってみたら13KByteにしかならんかったZO!!
>527
Del6をPentiumPro200MHz、HDD 1.2+1.0+3.2+20GB、MEM128MBのPC-9821で使って
まったくむかつきませんが何か?
533デフォルトの名無しさん:01/12/30 00:14
クラスのインスタンスへのポインタってどうやって取得すればいいのかな。

strList := TStringList.Create;
ShowMessage('$' + IntToHex(Integer(@sl)));

とかじゃ駄目だよねぇ。。
ShowMessage('$' + IntToHex(Integer(@strList)));
2行め、でした。
>>528
UPX 等のバイナリ圧縮は糞。
はっきりいって無駄な抵抗。
1Mbps以上出るようになってバイナリサイズは気にならなくなったw
どうせフロッピーなんざ使わんし。
>>535
先生!UPXの何が糞かさっぱりわかりません!
圧縮するメリットはあると思うよん。
でも、圧縮されたファイルしか配布してないソフトは却下だな。
540デフォルトの名無しさん:01/12/30 01:41
厳しいねぇ<却下
どーもUPXって、怪しくて使ってないけど。
日本の「同じ様な仕組みのツール」も開発されないもんかね。
フリーで。
って、前もどこかで同じこと書いたな。
UPXかー。
APIベースで組んでて小さいのをさらに小さくする(見た目のインパクト)のに使ってるよ。
大き目のアプリ組むでも100KByteくらいに抑えられるのがいいね。

>>539
いやだったら、upxで解凍できるだろ?

>>540
そういやDOS時代はあったね。
542デフォルトの名無しさん:01/12/30 10:10
>>528
D3復活は考えた。フリーコンポーネントをベースにする場合はD3がベストかも
痛いのはDword問題のみだがこれは結構タイプライブラリーとかにも影響する。

D5learningがあるのでこれがメインになりそう...

>>530 >>531
そりゃWindowsだけ宣言してやればいいけれどsysutilesとclassesを使う場合
必要なものだけ取り込まないとだめみたいだ。

バイナリーサイズ気にならないというけれど
バージョンアップやdll分散考えた場合200kbyteと400kbyteの差は大きいのでは?

あと別スレにあったkolというのを使ってみたがD6のばあいこれはよさそう

どうしてもコンポーネントにこだわるならばdll化してdfmファイルを圧縮して
リソースに入れて読み込ませるのも一案かも...

あと調べたらADO関連はボーランド純正とフリーのものとデータ更新時に最悪10倍くらい
速度が違ってくるし
普通の計算はもちろんのこと
アセンブラでSSEで組んだ場合D5よりもD6のほうが乗算が遅めになるみたいだし

どうもソース編集をD6でやってD5でコンパイルというのが道筋みたい

ちなみにDCC32だけ使うでライブラリーが全部自前のときって
出来上がりのアプリを業務用や営利で使っても法的に問題ない気がする。

汎用性のためのラッパーなのに
結局はクラスを使わないでWinAPIを使ったほうがDelphiのバージョン間での
互換性が高いのってなぜ...

あとUPXだけどこんなん使うならば自己解凍式EXE使ったほうが無難じゃない?
543デフォルトの名無しさん:01/12/30 10:12
Delph6:Delphi5=WindowsXp:Windows2000
成り立つ?
PersonalをDL中です! がんばります 有難う>Borlandたん
C#>>>>>>>>>>>>>>>>>>>>>>>Delphi
>>542
sysutilsはよいとしてclassesはなぜいるの?

upxはまあほとんどキモチの問題だろ。
自己解凍式exeは意味不明。自己解凍して自動実行してくれるならupxでいいし。
ただ小さくするってんならまさに普通の圧縮形式でいいし。
配布の事を考えてでしょ。
でもzipよりもupxの方が小さくなるという事はよくあるね。
ところでdel関係スレを上げまくっているのは同一人物?
>>534

クラスのインスタンスははじめからポインタだよ。

ShowMessage('$' + IntToHex(Integer(strList)));

でよいのでは?
549548:01/12/30 12:32
ShowMessage('$' + IntToHex(Integer(strList)));

じゃなくて

ShowMessage('$' + IntToHex(Integer(strList),8));

>>545

マジレスはカコワルイそうだが

> C#>>>>>>>>>>>>>>>>>>>>>>>Delphi

これはそもそも比較できないのでは? Delphi.NET ができたら
比較できるでしょ。でも、.NET 上では、なんで開発しても中間
コード生成であほくさいでしょ。

.NET 自体がダサい。
C#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Object Pascal
552Delphian:01/12/30 14:49
>>551
悔しいがその通りだ。
C#がうらやましい…。
なんだこのクソ芝居は
>553
君も冷静かつ公正にC#/.NET評価してみれば
その価値を理解できるよ。
C#か…。
かねてから凄いといううわさは聞いていたが。
そろそろDelphiは終了かな。
Delphi は Borland が生きてる限り終了ということはない。

C# は、言語的には Jaba と VB を足して2で割ったような感じ。
.NET でなかったら、スカな言語です。

Delphian なら Delphi.NET で十分。

.NET は5年後、MS でさえ忘れているかもしれないよ。
速度のアドバンテージは完全消滅なんだよね?>C#
>>556
Jaba?
適材適所だろ。

ま、実際問題速度的なものを見るとDelphiでいいんだけど、
言語だけ見ればC#は確かにいいね。
C#-.netとIDEがあれば、浮気しちゃうかも。
C#:Delphi=Delphi:VB
成り立つ?
C#ってMLでは不気味なほど話題にならんな
信者のすくつだからか?
>>561
うーん。ここ2chだから平気でC#の話題出してるけど、
Delphi専門のMLだとチョットマズイ気がする
>>562
>Delphi専門のMLだとチョットマズイ気がする
なんでだよ〜VBは平気で叩いてるくせに
誰かC#>>>>Delなメール投げて袋叩きになる勇者はいないのか(藁
Delphi の ML なんだから C# の話題を出しても、怒る前に困ると思う。
users.gr.jp は C# の ML も持っているんだからそちらに誘導されるだけでは?
565パスカル触ってみた人:01/12/30 21:15
free pascal 入れてみました。
program stringtest
uses sysutils;
var pc:pchar; i:integer;
begin
pc:=getmem(1000*sizeof(char));
pc:='123456789012345678901';
writeln('strlen='+inttostr(strlen(pc)));
{この結果は21なるほど21文字あります}
pc:=reallocmem(pc,strlen(pc));
writeln('pc='+pc);
for i:=0 to strlen(pc)-1 do
writeln(pc[i]);
writeln(pc[strlen(pc)]); {あれ?アクセスできるなあ}
writeln(pc[strlen(pc)+1]); {これがアクセスできてしまうのはどういうこと?}
writeln(pc[100100]);{さらにこれさえ、できてしまう不気味でしょうがない.}
freemem(pc)
end.
なんかおれ馬鹿なんでしょうか?
デルファイではどうなりますか?
ソースの先頭に{$r+}って入れてみるとか
567パスカル触ってみた人:01/12/30 21:25
やっぱり最後の不気味な三行は実行されます
改行が3つ表示されました。

Delphiでも実行できるけど?
569パスカル触ってみた人:01/12/30 21:45
そうなんですか?何でなんだろう?
pcはポインタでメモリ割り当てないと
使えないですよね?
あるわけもないpc[100100]にどうしてアクセス
できるのかがよくわからないんです。
570パスカル触ってみた人:01/12/30 21:57
reallocmemを取り除いたらちゃんとaccess violationがでるようになりました.
pcharのサイズを調節するにはどうしたらいいんでしょう?
571パスカル触ってみた人:01/12/30 22:19
{$r+}
program stringtestbak;
uses
sysutils;
var
pc:pchar;
i:integer;
begin
pc:=getmem(1000*sizeof(char));
pc:='123456789012345678901';
freemem(pc);
end.

とおもったら上のソースを実行してもアクセスバイオレーション
がでるようになった。
だめだ俺にはパスカルはわからない.
565のはfpcのメモリマネージャーがある程度一度にOSからメモリを
受け取っているのかもしれない(ソースを読めば分かるのかもねー、あははー)
571のはpc:='......';が、pcがGetMemでもらったポインタじゃなくて
リテラルをさすポインタに変更する危険なコードだとおもう。
ちなみにDelphiだと565のは通らないんじゃないのかね。
573パスカル触ってみた人:01/12/30 22:59
ああ、なるほど、constのアドレスを代入しようとする事
になるんでしょうか
それを開放しようとして怒られるみたい。
571のpc:='...'の部分はポインタとしてのpcに何かしら他の
{$r+}
program stringtestbak;
uses
sysutils;
var
pc:pchar;
tmpp:pchar;
i:integer;
begin
pc:=getmem(1000*sizeof(char));
tmpp:=pc;
pc:='123456789012345678901';
if pc=tmpp then writeln('equal')
else writeln('not equal');
freemem(tmpp);

end.
ならエラーはでませんでしたやっぱり等しくなかったです.
まだ文字列のコピーの方法がわかりませんが
本もヘルプもないのでデルファイでやってみます。
574何だろう君:01/12/30 23:34
なんで、メモリリークって発生するの?
勝手にアプリケーションの方で正常終了したら
解放すればいいんじゃないの?
freeしないとダメなヤツとかの話ね。
getmemだのallocmemだののヒープメモリは自分で解放しないとダメちん
576何だろう君 :01/12/30 23:59
何故ゆえに?
もしくは
「勝手に解放しない仕様にした」のは何故?
もしかして「アホまるだし」な質問してる?
GCをキーワードに調べてみろ
あ、GCだけだとGraphics Contextとかも引っかかっちゃうかも。
garbage collectionとかメモリ管理とか。
>>574
アプリケーションが正常終了したらまともな OS ならメモリはちゃんと開放されるぞ。

だからとはいえ長時間(何週間, 何ヶ月)走りつづけるプログラムとかもあるんだからそれだけじゃ困るだろ。
そうでなくても毎秒 MB 単位で漏れたりしたら数分ともたんだろ。
580何だろう君:01/12/31 00:18
なんだか「へりくだった」CGギャラリーがひっかかるみたい。
garbageって、ごみくずって意味?
そー書いてあったけど…。
まぁ、「そうすることに意味がある」ってことにしときます。
くどくなりそーなんで。
答えてくれた人、どーもです。
あ、ヒープってのも意味分からんな。検索してみよう…。
581何だろう君 :01/12/31 00:21
あれま、すれちがい…。
えーと、finallyでfreeするstringlistとかは…?
でもま、だいたい分かりました<理由
どーもです。
GCといったらゴッド・チャイルドでしょう。
583デフォルトの名無しさん:01/12/31 01:06
つまり、VirtualAllocで確保したメモリはプロセス終了時に
開放されるって事?
PVの鬼束ちひろさんは怖い。普段は割とカワイイ。
585デフォルトの名無しさん:01/12/31 01:30
reshackerで英語のアプリを日本語に翻訳して
wdiffで日本語化パッチを作ろうとしても
「ファイルをオープンできません」と出ます。
どなたか対処法をしらないでしょうか?
ヘルプファイルは目を通しており、やり方にミスは無いかと思います
差分ファイルを保存する際の拡張子は WDF or EXEのどちら?
当方 WIN98SEです。95じゃないと動作しないという落ちでしょうか?
>パスカル触ってみた人
ポインタがわかってないのをパスカルのせいにしないで。
言語で禁止してくれるのを頼りにしすげると、ワナにはまりますよ。
わかってると思うけど、コンパイルが通ったからって必ずしも上手く実行されるとは限らないので。
ごめんなさい別にパスカルのせいにしたつもりはないんです。
パスカルがわからないんじゃなくてポインタがわからないでした。
ただ、571は今見るとおかしいですがそのときは本当にわからなかったんです。
565は文字列の配列のインデックスってどうなっているのか
とか自分の中で混乱する部分を調べて
アクセスしてみてエラーを出して確認したかったんです
そうそう、アクセスしてもエラーがでるかどうかってのは不確定だから
混乱するんだよね。上手くいっているように見えてそれは単なる偶然。

そういや、Cの実験室って本でポインタ周りをとことん実験して調べてて面白かったな。
今見ると当たり前のことが書いてあるんだけど、
ポインタの理解があやふやだったころは目からウロコだった。
Delphi6パーソナルで
テキストエディタを作っているのですが
ActionManagerコンポーネントがありません。
どうすればよいのでしょうか?
age
591age:01/12/31 09:26
ageる世
>>589
ないのであきらめましょう。
ActionManagerがなくてもなんとかなります。

それかpro版を買うか
>>589
> Delphi6パーソナルで
> テキストエディタを作っているのですが
> ActionManagerコンポーネントがありません。
> どうすればよいのでしょうか?

入ってないよ!!<ActionManager
BorlandのFAQに入ってないことは書いてあったけど、
俺も迷った(w
つーか、俺も今ヘルプのチュートリアルやってるけど、
そこで止まってる

メインメニューは作れたけど、
そこからオープンダイアログを開く方法がわかんね。

procedure TForm1.Open1Click(Sender: TObject);
begin

end;

このbeginとendの間に何か書けば良いと思うんだけど
どう書いたらよいんでしょう?
動作確認しないで流し書きするけど

// オープンダイアログを開く
if OpenDialog1.Execute then begin
 // ファイルが選択された場合
 // テキストファイルとして読み込む
 Memo1.Lines.LoadFronFile(OpenDialog1.FileName);

end;
595デフォルトの名無しさん:01/12/31 09:40
>>593
結局抜かして先に進めということでしょうか?
>>594

> // オープンダイアログを開く
> if OpenDialog1.Execute then begin
>  // ファイルが選択された場合
>  // テキストファイルとして読み込む
>  Memo1.Lines.LoadFronFile(OpenDialog1.FileName);
>
> end;

出来た出来た♪コンパイルしようとしたら
Memo1のところで未定義の識別子ってでて来たけど、
これはMemo1をちゃんと定義してやればおっけーってことですよね?
その部分をコメントアウトしたらコンパイルは通って思ってた挙動を
してくれました。ありがとう。

>>595
抜かすと言うか別の方法を考える。
どう操作したって壊すことは無いんだから
いろいろクリックしまくってみるとか
protectedってどんな時に使うのか、ず〜〜〜〜っと疑問だったんだけど
他人が作った、あまり出来が良いとは言えないTLabel系コンポーネントを
継承してみて、初めて使い方が理解できたよ(笑
改めて見るとTCustomLabelって凄い!良く練られてる。
598Delphiの初心者:01/12/31 15:17
すいません。いきなりですが質問で〜す。

FindDialogの使い方教えてください。
FindDialog はダイアログが出るだけですから自分で検索部は作って下さいね
600デフォルトの名無しさん:01/12/31 23:20
つーか、申し訳ないけど、もう「メモ帳」の類と、
「メモリークリーナー」の類はいらないと思う。
公開するかどうかは別にして
del入門でメモ帳クローンは避けて通れないでしょ。
602デフォルトの名無しさん:01/12/31 23:25
delphiでメモ帳作りたいんだけれど
WIN32APIでエディットコントロールのセルまではわかるんだけど
コンポーネント見たく背景色を指定するのはどうしたらよいのでしょう。

とりあえずブラシは一つ作っているのですが
あとListvewとかの背景色もきぼーん kol使うというのは無しで
ActionManagerとか言う前に、もっと勉強することたくさんあるぞ。
質問する前に検索して探すことをお勧め。
いっぱい書いてくださってるぞ<delphiの先輩方
604Delphiの初心者:02/01/01 00:18
↑の方のを聞くと質問しにくいんですが(笑)
検索について詳しく書いてあるページとかありますか?
605デフォルトの名無しさん:02/01/01 00:22
>>604
http://www.users.gr.jp/query.asp
http://www.google.com/
「検索について」が何を示すのか分かりませんが、この辺とか。
google知らないとかってのは無いですよね?
最初のURLはメーリングリストの過去ログですが、ちょっと使いづらいかも。
606Delphiの初心者:02/01/01 00:25
すいません。説明不足でした。テキストエディタなどを作る際の検索です
607605:02/01/01 00:29
>>606
604のURLで足りませんか?「delphi FindDialog」とかで。
608605:02/01/01 00:33
「Magic of Delphi」が、最初に参考にするページとしてはベストだと思う。
つーか、「フリーで入手して説明書(?)が無くて何から学べばいいんじゃい?」
って人には。オレがそう(藁
でも、ただいま停止中。つーか、アドレスが使えなくなってる。
609Delphiの初心者:02/01/01 00:48
う〜ん… またあしたさがしています。ありがとうございました。
611608:02/01/01 00:59
>>610
あれれ。いつの間にジヲに?
つーか、もうオレは全部見たから。
ひとつのOSでDel6ProとPer両方入れることってできる?
Proで作ってPerでビルドできるか確認したいんだけど
613何だろう君:02/01/01 01:46
http://pc.2ch.net/test/read.cgi/tech/1001442200/のスレの38あたりに
同じようなこと書いてますね<メモリの解放
先読めば良かった。すんずれいしました。
614デフォルトの名無しさん:02/01/01 02:15
淫乱アセンブラ
615デフォルトの名無しさん:02/01/01 10:08
>>606 AFEDITのソースって結構参考になるのでは?
コンポーネントでなければなおよかったのだけど

>>612 ひとつのOSでというかおかしくなるからやめたほうがよい
Per版用にHDDを買って切り替えたほうが無難では?

delphi6をWin2Kにインストールしたんだけど
通常使用するのは当然管理者権限じゃないんだけれど
管理者権限で許諾とったのに未許諾になってしまったのは切れた
つまりdeelphi自体全体的にフェールセーフにはできていない
許諾もソフトでとるんじゃなくて郵便でとんないとアプリとして管理できない

もしもボーランドが文句いわないのだったら
朝インストールして許諾とって夕方アンインストールしてもいいと思っている。
>>600
勉強用途のソフトと使ってもらおうと思って公開するのは別でしょ。

以前はそれを間違えて、勉強用に作ったあまりにありふれて不完全なものを
公開してシェアウェアにしていたものがいたが、
ま、最近はそういう人はそんなにいないだろ。
# 2ch見てる人ならなおさら
617デフォルトの名無しさん:02/01/01 11:44
>>616 どーい
勉強用の場合おんなじテーマのもののほうがスピードとかの差がわかっていい。
極端なのがhello worldだと思うけれど
日本の場合IMEという厄介なものがあってエディタ関係というのは奥が深いと思う

ただ開発途上のものとか動作テストレベルのものでも
いろんな環境で見てもらうという意味では公開してもいいんじゃないかと思う。

シェアウェアにしても売れなきゃいいんだけど
コントロール並べただけで著作権がありますなどという奴もいるからなぁ。
というか著作権や特許のあるもの使っててGPLとか抜かす奴もいるし
618デフォルトの名無しさん:02/01/01 12:55
GPLって何?
619デフォルトの名無しさん:02/01/01 13:21
>>618
GNU GENERAL PUBLIC LICENSEの略
早い話がこのソースやライブラリーを使ったソフトを公開するときは
全ソースを公開しなくちゃだめってライセンスで
GPLを使ったら必ずGPLのライセンスをつけてGPLで出さないといけない。
dllにして制御すれば本体はよいというのがLGPL

ソース公開しなくても商用でもOKというのがMPL
とりあえずアプリケーションがフリーでも商品でもライブラリーがMPLか完全にふりーのものであれば
特許関係がクリアされているものならば問題なく使える
GPLで作ると例えばできのいい有料のコンポーネントなどを使って一部分だけ
GPLのものという形ができないのでオープンソースにも向かないと
折れは思う。
620618:02/01/01 15:07
さんくす
621Del歴3日(:02/01/01 20:04
Pascalもろくに解からない厨房です。型チェックがきびしすぎる
文字 → ASCIIコード、の変換はどうやるの?
Delphiの入門書には載ってない。StrToIntは使えないし・・・

取りあえずアセンブリ機能を使ってこんな事やってます。
var
Character: Char;
AsciiCode: Byte;
begin
asm
MOV AL, Character
MOV AsciiCode, AL
end;
>>621
(;´д`)

AsciiCode := Ord(Char);
623Del歴3日(:02/01/01 20:17
>>622
ありがとう(;_;)
624文字列…:02/01/01 20:59
Delphiの文字列ってなんかややこしくないですか?
C文字列との互換を考えると最初はやっかいだけど、
Stringだけ使ってれば簡単じゃない?
まあ初期の設計思想からはずれて便利さを追求した結果
多少歪で半端な仕様になっちゃってるからね
文句たれずに覚えちゃえばあとはどってことない
Delphi内だけで完結するならいいけど、
そうでないなら面倒かも。
Cのchar*やら、C++のstringやら、Delphiのstringやらどれかになれすぎていると、
逆に戸惑うな。
char*は論外だろ
ごめん、なぜ?
630文字列…:02/01/01 23:44
pcharより長い文字列が気持ち悪いです。
{$H-}
で頑張ってる人いますか?
631ウィルス職人:02/01/01 23:55
end;


(;なのでまたprocedureかなんかで再開しろ)
WideStringの方が楽
はやく標準にしろ!!
>>632
Unicodeやだ!!VBじゃねえんだから。
WideStringはUnicodeじゃなくって2バイト文字列
s: WideString;
s:='感じ';Writeln(s[1]); // '感'
ってこと
635デフォルトの名無しさん:02/01/02 01:47
Strings.IndexOf が大小文字を区別するのかしないのかでまようんだよな。
ソースコード見たらAnsiSameText 使ってたから区別しないって分かったけどさァ

Strings.IndexOfText
Strings.IndexOfStr

って区別してほしかったナ☆
636デフォルトの名無しさん:02/01/02 01:53
全てのクラス型に使えるような

procedure SaveClassToFile(Filename:string; obj:TObject);
procedure LoadClassFromFile(Filename:string; obj:TObject);

関数作れませんかね。
ポインタを格納している場合は、その実体までさかのぼって
保存してくれるような。
無理でしょう。ただ
・すべてのフィールドに対してプロパティを宣言する
・すべてのプロパティをpublishedにする
・レコード型、ポインタ型は使わずクラス型で置き換える
・配列は使わず、TList型にする
等々守れば出来るかも知れませんが……
638デフォルトの名無しさん:02/01/02 03:20
>>634
WideStringってウニコードでしょう?
634 は自動的に変換が行われている事を知らないのでしょう
>>630
PascalやBasicになれていれば長い文字列の方を選ぶのでは?
そりゃ俺だって、実行速度が必要なところでは仕方なくpchar使うけどさ。
長い文字列って便利だからつい 文字列以外にバイナリ保存先に使っちゃわない?
LongStr1, LongStr2: String;
LongStr1 := 'TestString';
LongStr2 := PChar(@LongStr1[4]);
こんな感じの使い方を良くやるんだけど、コスト高いんだろうか?
PCharで統一した方が良い?気にする必要なし?

あと長い文字列の場合
if Length(LongStr1) > 0 then
Result := Length(LongStr1) div 3;
と、した場合(Length(LongStr1)が2回)と
Len := Length(LongStr1);
if Len > 0 then
Result := len div 3;
と、した場合(Length(LongStr1)が1回)でコストは違う?違わない?
643デフォルトの名無しさん:02/01/02 10:37
delhiのstringは実質的に可変長バイナリなので
レコードの動的配列などをDelphi3で使う場合は便利です。

というかINT64が使えてCardinalが32bitならばD3最強なんだが...
(D5,D6のTstream 32bitだし)
644デフォルトの名無しさん:02/01/02 10:47
>>642 明示的にsetstringすればいいんじゃない?
>>644
SetString(LongStr2, PChar(@LongStr1[4]), Length(LongStr1) - 4);
こんな感じかな?なんか余計にコストが掛かりそうな気が・・・・
なんで copy 使わないの?
1.LongStr2 := PChar(@LongStr1[4]);
2.SetString(LongStr2, PChar(@LongStr1[4]), Length(LongStr1) - 4);
3.LongStr2 := Copy(LongStr1, 4, Length(LongStr1) - 4);
4.LongStr2 := RightStr(LongStr1, Length(LongStr1) - 4);
む〜ん、色んなやり方があるもんだ。
私的には4.が読みやすくて良さ気だけど・・・・・
:= Copy(LongStr1, 4, High(Integer));
LongStr2 := LongStr1; // 参照カウントが増えるだけで高速
Delete(LongStr2, 1, 3); // ここで初めて最初の3文字が削除されたコピーが作成される
650デフォルトの名無しさん:02/01/02 13:59
マジ質問です。
エクセルのような表計算ソフトを作りたいのですが、
どのような手順でやればいいかわかりません。
使用するコンポーネント、コード等を教えてください。
環境はdelphi 5 proです。
651ねこま:02/01/02 14:07
TStringGrid に表計算機能を付加するコンポーネントが
Delphian World にあったと思う.

以上
Excel埋め込め
ActiveXタブにある F1BOOK は Excel互換のデータを読めますよ
654デフォルトの名無しさん:02/01/02 16:47
あのですね、仮想テキストファイル(自分が命名)を実現するクラスを作りたいのです。
簡単に言えば、レジストリエディタのように、ツリー構造で
ディレクトリもどきとファイルもどきが存在し、
テキスト形式のファイルで保存できるというものです。

ディレクトリの名前変更やファイル移動、コピーなどを実装したいのです。
スマートに実装する方法は無いものでしょうか。

[\c\windows\temp]
tempfile1="aefawef"
tempfile2="apweofawef"
[\c\windows]
system1="pokokp"
system2="pppp"

という感じで保存できるように。
XML
TREEもどきでバーチャルINIファイルに保存してください
657ねこま:02/01/02 17:04
簡単にやるなら TTreeView で SaveToFile, LoadFromFile
TreeItem.Data に属性持たせとけばよさそう
そのまま表示できるのでデバッグも楽ちん

XML も良いアプローチ.
>>654 文字列の改行とかヤバイ文字をエンコードデコードしてそのまま
 レジストリに書き出せば?

function EncodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  case s[i]of
  #0..#31,'"','''',',','&','%':
      Result:=Result+'%'+IntToHex(ord(s[i]),2);
  else begin
    Result:=Result+s[i];
    end;
  end;
   inc(i);
  end;
end;

function DecodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  if s[i]='%' then
   begin
    try
     Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
    except end;
     inc(i,3);
   end else begin
   if not(s[i] in[#$0d,#$0a]) then
    Result:=Result+s[i];
   inc(i);
   end;
  end;
end;
659デフォルトの名無しさん:02/01/02 17:35
xmlってHTMLもどきじゃないんですか?
そんなに複雑なことも簡単にできるの?
660デフォルトの名無しさん:02/01/02 17:43
てゆうか、Del6Pro にXMLコンポーネントは
付いてないですよね…はあ。
>>660
MSXMLつかえ
>>659
HTML は 「Web用の文書」 を書くための言語。
XML は 「何らかの言語」 を書くための言語。
自分で好きな言語を定義できる。
狭義ではデータ構造の定義でもいい。

>>660
msxml 使えば?
どやってつかうの?>msxml
664デフォルトの名無しさん:02/01/02 18:16
MSXMLってコンポーネントのことですか?
探してもみつからないけど、MSXMLっていう
Delphiからでも使えるライブラリがあるんですか
665デフォルトの名無しさん:02/01/02 18:17
>XML は 「何らかの言語」 を書くための言語。
>自分で好きな言語を定義できる。
>狭義ではデータ構造の定義でもいい。

あ、そうなんだ。
てっきりHTMLの後継者だとおもっていた。
さっそくXMLの雑誌を買ってこよう。
666デフォルトの名無しさん:02/01/02 18:19
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, Chartfx3;
type
TForm1 = class(TForm)
Chartfx1: TChartfx;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
var i: byte;
begin
for i:=1 to chartfx1.NValues do chartfx1.Value[i]:=i;
chartfx1.Refresh;
end;
ってなときにぼたん1押しても値が変わりません
なにがわるいんでしょうか
へたれな質問ですまそ
データを変更する部分はOpenDataExとCloseDataで囲ってあげてください。
668デフォルトの名無しさん:02/01/02 19:06
XMLってSGMLの2の舞になりそうな気がするんだけどな....
チャンク構造のバイナリファイルのほうがよいとおもふよ。折は
データベースでも何でもチャンク構造がよい
参考フォーマットとしてはPNGがよいな。

あとXMLは確かTorryにフリーとシェアと両方あったと思う。
タイプライブラリーでXML関連のを読み込んでもいいけれどでもソースのある奴は
やっぱ参考になるね、
コンポーネントは極力ボーランドのものじゃないほうが実行時バイナリと
開発時バイナリが分離されていて効率がよいように思える。
669デフォルトの名無しさん:02/01/02 19:57
すいません、チャンク構造ってなんですか
>668
すみません、
>SGMLの2の舞
ってなんですか?
>>669
個別のデータ要素のタイプにかかわらず、要素の枠としてのフォーマットを統一して格納する方式。
たとえば種別(4文字程度)、サイズ、データ実体という組で一つのチャンクとして定義して、それに
則って読み書きするだけで汎用のリーダー/ライターが書け、知らない種別は無視しても
読み続けられるために後から種別が増えても下位互換性を保つようにできる。
さらにチャンクの中にさらにサブチャンクとして並べたりもすることでこの構造をツリーにすることもある。
バイナリの画像や音声フォーマットはチャンク形式を採っているものが多い。

XMLはこの考え方をテキストベースに置き換え、チャンクのフォーマットにあたる部分も
別途定義・記述するようにしたものといえるかな。
ぐっちゃぐっちゃ何でもかんでも取り込んで記号化したふり
したものなんか見たくも無い
>>669
671に補足すると、Windowsでは昔からRIFF形式ってのに使われてるよ。
で、RIFF形式ってのはWAVやAVIに使われてる。
674668:02/01/02 22:35
>>671 丁寧なフォロー あんがとー

htmlが成功したのは自己完結型だからだと思うんだけど
XMLは例えばXML__type**みたいなのがきっちり決まっていればいいんだけど
一歩間違えるとただの暗号になっちゃう

仮にXMLを実装するとしても自己完結型か明示的に文法ファイルを指示したい

あと脱線しちゃうけれどMP3ファイルにRIFFヘッダーつけただけでACM APIで
再生できるのでDirectSoundでMP3をやる場合はありがたい
>>674
何かよくわからんが、普通 XML は DTD か XML Schme で文法を定義する。
MSXMLのドキュメント
http://www.microsoft.com/japan/developer/xml/default.asp
ほかにもIBMのDLLやOpenSourceのがあったはず
最近は階層構造のiniファイルとしてXMLの構造のみ使わせてもらってる
DTDやSchmeはよくわからんのとめんどくさいしほかとの連携もないのでパス
印刷する時はxslで見やすいようにしてIEで表示
>>671
wavやaviなんかそのたぐいだね。
確かにバイナリデータを扱うのが前提ならチャンクはらくだ。
679デフォルトの名無しさん:02/01/03 10:41
LeftStrとかRightStrて日本語を1文字として数えてるようなんだけど
これを止めさせることって出来ないんでしょうか?
S := 'C:\テスト\dir\';LeftStr(S, 8);
とかすると、Sに'C:\テスト\d'が返ってきて迷惑ヽ(;´Д`)ノ8byteトリダシタイノー
>697 copy(s,1,8) ではダメ?
>>680
copyも日本語を1文字と数えるようで同じ結果が返ってきたです。
682679=681:02/01/03 11:27
>>680
681は間違いで、ちゃんとできました!大々的に感謝です。
嘘こいてんじゃねえゴルァ!
というか それ8byteで切ったら、後困らんのかい?
685デフォルトの名無しさん:02/01/04 00:45
Delphi6+up1で外部ツールを起動するとき
カーソル位置の単語$CURTOKENって展開されなくない?
686685:02/01/04 01:48
-s$CURTOKEN
みたいにスペースを入れないと駄目なようで
-s $CURTOKEN
としたらOKでした。が、これではツール側が認識しない...
そうそう、スペース入れないと展開されない仕様はなんとかならないかな。
俺もツール登録するときに困った口。
たしか結局batファイル経由にしたけど。
688デフォルトの名無しさん:02/01/04 10:19
Win2KにD6-pro入れて使用許諾とってからアップデートしたんだけど
ほかのユーザーでは未許諾になっちゃう。
これってどうすれば直る?
689 ◆woDeLPHI :02/01/04 10:45
>688
 許諾を取った時のユーザで6.0のレジストリを保存して
それをマウス右ボタン->結合でやってみたら?
 色設定とかもそれで移せるからさ
690デフォルトの名無しさん:02/01/04 19:06
>>689 あんがと それでやってみます。
確かバイナリのデータが入っているのでそれかな?
691おしえて:02/01/04 19:40
でるファイてvcより簡単で
作成したアプリも高速らしいけど
本当ですか?

当方vbより乗り換えようと思うのですが
周りにユーザがいないのでふんぎりがつきません
長所、短所おしえてください

当方の使用用途はげーむせいさくです
あと、製作用のエディター

どうでしょ
とりあえずはpersonalただなんで、試してみたらどうでしょうか?
delphiが向いてるのはエディター制作ですが、これならpersonalの
ライセンスでもOKだと思います。
すでに C++ や Win32API の知識があるのなら、
Object Pascal や Delphi 流のアプリの組み方を覚えなくて良い分
VC++ の方が簡単かもしれません。
GUI を作ることと、既存のコンポーネントを利用して出来る範囲に限って言えば
VB と同じくらいに簡単で VB 以上の表現力を持っています。
それ以上のことをしたいならば、オブジェクト指向や
Delphi におけるプログラミングテクニックを学ばなければいけませんが、
これは VC++ においても状況は変わらないでしょう。
>691
VC++にしなさい。
ゲーム作成に一番よく使われていて、就職にも困らないよ。
両方やってみたらいいんじゃないの?

Delphi知ってる事が荷物になるわけじゃないし
C++がそんなに難しい言語って事でもないし

片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね
DelphiでWindowsプログラミングの基礎を掴んで、VCへ移行。
これ最強。
>片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね
ただの二度手間
>>696
ただし、Windows依存とそうでないものが区別できなくなるという危険も伴う、諸刃の剣。
文字列の可変長多重配列ポインタを関数に渡すの面倒臭いんで
すぐDelphiに逃げちまうな
悪い癖だ(w
まあ、おまえら素人はバッチファイルでも作ってなさいってこった
701 :02/01/06 04:07
別のサブルーチンに飛ばすにはどう書けばいいのでしょうか?
(TForm1.Button1ClickからTForm1.Button2Clickに飛ばすというような)
探したんだけど見つからない…
VirtualTreeViewの使い方がサパーリわかりません。
サンプルソース、ワケワカメだし…
ネットで解説ページを探してみても、それらしいのは見つからないし…

これはサンプルを読めるようになるか、市ねって事でしょうか?
VirtualTreeViewじゃねえや、VirtualListViewだ…
やっぱり死のう…
>>701
Button2Click(sender);
じゃないのか?
705701:02/01/06 05:59
>>704
うわー本当だ
ありがとうございました
706Delフサギコ:02/01/06 13:19
  ∧,, ∧
  ミ。_。彡   ペコッ
〜ミ,,,U U,,ミ 且~~  あけましておめでとうございます。

   ∧,,∧      / ̄
  ミ,,゚Д゚彡  <  Button2Click(nil)でもいいよ
  ミ つ且~~   \_
〜ミ,,,,,, ,,ミ
日本Delphi振興会
・SenderのないprocedureからSenderを持つprocedureを呼ぶ。
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm#sender
707デフォルトの名無しさん:02/01/06 20:58
Delphiの最大の利点て あっというまにコンパイルじゃないの?
Delphi使ったら例えVCLやIDEがだめでも他にいけないと思うよ。
特にBCBは最悪、
>>702 わかんないときはまとめてコンポーネント化しているもの使えばよいのでは?

>>698 Window以外の環境なんてないと思ったほうがいいのでは?
仕様とかデザインとかファイルフォーマットとかプロトコルさえ抑えていれば
どうにでもなると思う。

例えば外注に丸投げするとき必要なのはプログラムソースではない。
いまできる最大限のことをやれ゛いいんじゃないかとおもうのです。
それっていまのDelphiの逆だけど...

http://halbow.cool.ne.jp/ShousaiIndex.html
とか
http://bonanzas.rinet.ru/
にいくとWin専用機としてのDelphiの可能性が見えてくる。
あと
http://www.sulaco.co.za/
もはずせないな全部非VCLのサイト
>>707
高速コンパイルこそが唯一にして不可侵の Delphi 最大の利点に同意
これに慣れると他の物が使えない諸刃の剣
俺もPascal知らなかったからBCB使ってたけど、試しにDelphi使ってみたら
コンパイル速度に驚愕。それ以来ほとんどDelphiだなぁ。
マシンスペックが上がったらコンパイル速度は
差が縮まると思っていたが、いまだに開いている。
友人のVCユーザは未だにうらやましがっている。

Javaの実行速度が問題なくなるくらいまでは(w
しばらくはDelphiのコンパイル爆速神話は続くと思われ。
ていうか、ここQuake2をDelphiに移植しようとしてるんだけど(藁
http://www.sulaco.co.za/quake2/
712デフォルトの名無しさん:02/01/07 13:16
>>711 Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁

Geforceのコードは使っていないけれど
Pickingのサンプルとかあるのでよろしい。
Quake2というよりすでにMD3ファイルローダはできてるようだ

あとDelphi3DとかGLSCENEなんかもよいのだが...
713デフォルトの名無しさん:02/01/07 13:24
許諾コードって何回取得してもチェックしてないんだと。
だから毎日クリーンインストールして取り直してもOK

あとD6の製品版は不良品だけど作っちゃったから10/18のパッチはあてないんだと..
そんなんが日本の法律でOK?

あとライセンスでは1台のPCといっているけれど
向こうの認識は1台のPC、1つのOSでデュアルブートで常時1台しか動いていないけれど
OSは違うというのはだめだけれども記述に誤りがあるという認識らしい。

ということで基本的に不正コピーしなければボーランドのライセンスは
法的根拠が何もないし、罰則もない
ボーランドに法律関連を扱う部署や品質管理の部署はないみたいなので
訴訟の心配もない、個人情報の搾取も会社レベルではやってない

ということでプロ版かって再インストールとかで二の足踏んでいる人は
安心してアンインストール再インストールできると思います。

逆に将来性が薄いのでただだからといういってPersonal版やるくらいなら
freePascalにいったほうが良いです。
許諾コードって?
普通は許諾一回取ったら再インストールしてもレジストリから復元するんじゃないの?
そんなメンドクサイ事しないでしょう
715デフォルトの名無しさん:02/01/07 16:47
>>714 基本的にWindows2000ではいまだに許諾コード取得のバグがあるそうで
管理者権限以外では許諾コードをユーザーごとに取り直さないといけないそうです。

それにやってないけれどアンインストールして情報残っていたらアンインストールとはいえないのでは?

基本的にWin2KやWinXpでDelphiを使うのは無理っぽいのでWin-MeのHDDにしようと思うのですが

許諾は何回とっても関係ないという情報は特に初心者向きだと思うのでこのスレに書きました。
あと未許諾でコンパイルしても特に影響はないそうです。
>>715 みんな黙ってるだけで、
  レジストリのどこにソレがあるかくらいは判ってると思われ
717質問:02/01/07 18:47
Delphi6の初心者向け勉強サイトで
いいところ知ってる人いる?
グーグルで検索しても何年も昔の
しかもあまり詳しくないのしか出てこないYO!
プリーズ!
初心者向けって いったい どこが判らないのよ?
719717:02/01/07 18:59
どこがわからないと言うか
なにもわからないのが現状・・
一番初歩の初歩から学びたい今日この頃・・
720デフォルトの名無しさん:02/01/07 19:04
Delphi、どこで買ったらいいの?
一ヵ月後に俺が作ってやるから待ってろw
722717:02/01/07 19:05
本気で激しく希望!!
つーかいいサイト知らない?
本買え
724 ◆woDeLPHI :02/01/07 19:11
>>717 じゃ今から やってみたげるから
ファイル(F)->プロジェクトを開くで
 Demos\doc\TextEdit\ のTextEdit.dprを開いてみて
725717:02/01/07 19:14
>>724
開いた!
ボタンが1つ出てきた!
あっちなみにPesonalね!
726 ◆woDeLPHI :02/01/07 19:16
まずコンパイル&goしてみよう やり方は判る?
 プレイボタンみたいなのか 実行->実行(F9)ね
727717:02/01/07 19:19
実行できたけどこれは一体?
RichTextファイルを開くもの?
自分で作るには?
728 ◆woDeLPHI :02/01/07 19:20
じゃ、それを終了して MDIFrame.pas を開いてみよう
 方法は、表示->ユニットの表示とか表示->プロジェクトマネージャから選択ね
729 ◆woDeLPHI :02/01/07 19:24
最初は画面に文字を書いてみよう

F12 を押して TextEdiorと書かれたフォームを手間に持ってきて
 フォーム内のグリッドの中央をクリック
F11を押してオブジェクトインスペクタを出し イベントをクリック
OnPaintというのを探してクリック
 その右の空白の 部分をダブルクリック

これで以下のような状態になる筈 なった?

procedure TFrameForm.FormPaint(Sender: TObject);
begin

end;
730717:02/01/07 19:24
このプログラムの意味がサパーリ・・
Object Pascalだっけ?
731 ◆woDeLPHI :02/01/07 19:26
つぎは その間に
procedure TFrameForm.FormPaint(Sender: TObject);
begin
Canvas.TextOut(20,20,'こんにちは');
end;

と1行入力して 実行してみよう
732717:02/01/07 19:29
ちっちゃくこんにちはって出てきた!!
これはテキストを表示させるものらしい?
733717:02/01/07 19:30
ごめんアナウンサー見たいんで落ちます
でぁでぁ
734 ◆woDeLPHI :02/01/07 19:30
procedure は手続きを定義しますという意味
TFrameForm.FormPaint は手続きの名前。
 ドットが間にあるから、これは手続きでもメソッドと呼ばれるもので
 TFrameFormというクラスの FormPaintと いうメソッドを定義しますという意味
 意味判らんでも覚えてね

で、(Sender: TObject); は引数。 とりあえず無視してOK

begin 〜 end; はブロックで、 この間が関数の本体になるわけ

追加した Canvas.Text の意味とかは そこにキャレットをあわせて F1を押して調べてね
>>717
サイトでなないが
ヘルプ-Delphiヘルプ-チュートリアル:テキストエディタアプリケーション
では駄目か?
736717:02/01/07 19:33
おおぉーー!
難しいがなんとなく理解!
感謝感謝!こんな感じで他のもできる?

ちなみに733は贋物!
737717:02/01/07 19:36
>>735
サンクス!気づかなかった!
これでいいもの作ってみんなにあげるから待っててくれ!!
次に717は
「すみません、ActionManagerが見当たらないんですが…」
と言う
739 ◆woDeLPHI :02/01/07 20:27
たぶんね。

>717
 ActionManagerの代わりに StanderdタブにあるActionListを使います

しかし
\Program Files\Borland\Delphi6\Source\Vcl\ActnRes.pas

はどうしようか?
>>712
> Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁
本当だ(w
readme.txtにDelphi5ってかいてあるけれど、それでも60KByteなんていかねって。
upxで圧縮も解凍も出来ないところから、何か別のexe圧縮使っているとみた。
741 ◆woDeLPHI :02/01/07 22:22
【アクションマネージャにアクションを追加する】まで来たら
【イメージリストにイメージを追加する】まで2ページ飛ばして
1、ファイル->新規作成->フォーム
2、オブジェクトインスペクタ-> Name欄をForm2から StandardActions に
3、フォームの上でマウスの右ボタンでテキストで表示を選ぶか ALT+F12
4、ファイル->開く-> ファイルの種類を全てのファイル(*.*) にして
  Lib\ActnRes.dfm を開く
5、編集->全て選択(ctrl+A) の後コピー(Ctrl+C)
6、タブでUnit2.dfmを選び、編集->全て選択(ctrl+A) の後貼付(Ctrl+A)
7、ALT+F12でフォームを表示
8、あとは、HELPに書いてあるようにImageList1をコピーする
  まだActionListもついでにコピーする

そしてこのページからActionManagerを ActionList1 コンポーネントと読み替えます

【メニューの追加】
ActionMainMenuBar も無いので StanderdにあるMainMenuを使います
これを貼り付けてダブルクリックして適当にメニューを追加し
ここのメニューのActionプロパティに設定してゆきます
742 ◆woDeLPHI :02/01/07 22:36
しかし、ホント D6パーソナルには D5 のチュートリアルを付けるべきじゃないのか?
743デフォルトの名無しさん:02/01/07 23:21
http://www.text2music.com/mine/delphi/index.html
とか
http://hp.vector.co.jp/authors/VA015233/pascal/Pascal2Delphi.htm
とかでPascalの基礎を学んだ後、
http://home.onestop.net/mineko/index2.html
でDelphiの基礎を学べばいいと思われ。
んで、この後はそこらへんにあるTipsサイトで済ませる。

でも、まじめにプログラミングを学びたいなら、
やっぱ本買った方がいいよ。
つーか、こんなこと、どっかチャットでやらんか?普通。
745 ◆woDeLPHI :02/01/07 23:50
>744 スマン 1回やってみたかんだ
 というか1回やったら記録残るから2回やらんでいいしと
746デフォルトの名無しさん:02/01/08 02:49
あのー、「ソースファイルがみつかりません:classes.pas」、っていうダイアログが出るんですが、
どうすればいいんでしょう?

ちなみに日経ソフトウェア2月号の郵便番号検索を初めてパソ版で作ってるんですが・・・
747デフォルトの名無しさん:02/01/08 04:41
>>746
アップデートを当てろ。
748746:02/01/08 21:05
>>747
いやお恥ずかしい、すいません。
749デフォルトの名無しさん:02/01/08 23:21
例外出すとワケワカメなヤツのソース要求されるヤツじゃないの?>>746
アレ、直らんのかな?
最初は「ハァ?」って思う。
例外なら「例外よ♥」って出てくれ。
750Delフサギコ:02/01/09 01:01
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  <  だから、パッチ宛ててってば。
  ミ つ且~~   \ dcuがデバッグ版らしいので
〜ミ,,,,,, ,,ミ       パソナるなのにソースを要求されるようだ
            と、ボランドNEwsGで報告があたよ.
751超初心者:02/01/09 03:44
FileNameの文字列をフルパスじゃなくて、ファイル名だけ欲しい場合は
どうすればいいですか?
752素数2:02/01/09 03:52
>>751 たぶん
ExtractFilename(パス付きファイル名); string で返ってくる。
ExtractFileName
>>752-753
おおっ、素早いレスありがとうございます!
早速やってみますね
>>752-753 ケコーン
ってのはないんだな、ここ
756デフォルトの名無しさん:02/01/09 07:30
32ビットCRCって何ですか?

Delphiで生成するファイルのとある番地から番地までのデータにとある計算(32ビットCRC?)を施して
4バイトのチェックサム値をとある番地に格納したいのですが定番の方法ってあるのでしょうか?

できればソース付だと大変うれしいです。
ZLibにCのソースがあったと思うYO!
>>755
ヒトリモン!!
クラスのインスタンスを生成してほんのちょこっとだけ処理したいときって、
なんか簡単にかけないもんですか?

たとえば、ファイル作って、何か書き込みたいときに
TFileStream.Create(FileName, Mode).Write(Buf, SizeOf(Buf))
って一行でさくっと書いた場合、メモリ解放されないよね?

with TFileStream.Create(FileName, Mode) do begin
try
Write(Buf, SizeOf(Buf))
finally
Free;
end;
end;
ってちゃんと書かないとだめですか?
760>759:02/01/09 08:41
classではなくobject使え
Create/Destroyしなくても使える
>759
それを1行に書いたらいいんじゃないのか?
with TFileStream.Create(FileName, Mode) do try Write(Buf, SizeOf(Buf)) ;finally Free; end;

じゃあインターフェース型を作るってのは? 変数宣言が要るからダメか?
with TFileStream.Create(FileName, Mode) do try
 Write(Buf, SizeOf(Buf))
finally
 Free;
end;
>>759
ラッパー関数書けば一行でOKでは?
764デフォルトの名無しさん:02/01/09 09:57
>>756 PNG関連のルーチンを探せばZlibにCRC32がついている。
完全なPASCAL版もあるけれどD6ProについてくるGLDPNGのように
Cでコンパイルしたobjファイルを$Lでインクルードしたものも多い
CRC32は初期化と終了処理が必要なのでそれを知らないと結果が異なってしまう
ZlibのC版は継続的にファイルを流し込めないけれど一回呼び出せば
ちゃんと初期化と終了処理をするので値としては基本
765デフォルトの名無しさん:02/01/09 10:01
SysutilesやClassesって宣言して使っているときと
同じフォルダーにおいて再コンパイルするときだと
再コンパイルしたときのほうがEXEのファイルサイズが大きくなるのだけれど
なんでだろう。

例えばWIN32APIベースで windows,messages,sysutilesとすると
関数何も使わなくても40kbyteだけど
ソースをつけるかsysutiles2とかリネームしていれると80kbyteになっちゃう
この差は何?ちなみに初期化ルーチンははずしてみましたけどおんなじです。
766 ◆woDeLPHI :02/01/09 10:41
>>756 CRCの計算そのものはすごく簡単です

CRC32(ITU-T76ですか?)の規格を持っていないので

procedure crc(dt:byte;var crc:integer);
var w,i:integer;
begin
 for i:=0 to 7 do begin//dtにバイトを渡す場合 32bitを渡すなら 定義を変更して下さい
   w:=((dt xor crc) and 1)*$xxxxxxxx ;//ここに規格にあるビット位置を1にした2進数を入れ
   dt := dt shr 1;
   crc:= crc shr 1; //シフト方向は規格により違うんであわせて下さい
   crc:= crc XOR w;
 end;
end;

初期化と終了があります。初期化でcrcを-1にし終了で反転したりの処理が規格書にあるかと

それと上のコードは遅い方法です。バイト単位に計算したテーブル検索にすると8倍高速になります

自分専用の規格なら $EDB88320 くらいが適当かと
>>765 同じフォルダに置くからでは? 元々あるフォルダのをプロジェクトに入れてみたら?
768..:02/01/09 11:29
Delphi6 PersonalにUIWebBrowserをインストしようと思ったら、
vclieってのが無いって言われたんですが、personalにはインスト不可能なんですか?
インストーラーで レジストリから個人情報(良く使うメーラのアドレスとかプロバイダのIDとかFTPの履歴とか)
ひっこ抜いて暗号化して実行ファイルに埋め込んでしまう。 (解凍しながら特定の位置に埋め込む)

 それとは別の暗号キーでレジストリに書き込む。
 これを実行ファイルではレジストリの方の値をランダムに作ったIDと称してメールで送らせる
 それに対して パスを発行

もし IDとパスの両方が掲載されたら、掲載した奴はIDから突き止められるから
 教唆=共同不法行為として請求可能
クラックされても、実行ファイルにIDが埋め込まれているから同じ
770デフォルトの名無しさん:02/01/09 12:21
>>768
できる。
Borland Delphi初心者用お勉強スレ
http://piza2.2ch.net/tech/kako/1001/10010/1001035627.html
の379を参照。
771769:02/01/09 12:40
誤爆失礼
772..:02/01/09 12:40
>>770
ありがとです!
さっそく試してみます
773ビープ音が消えない:02/01/09 13:17
TEditを使って、文字列を入力するモノを作っています。
エンターキーを押したときのビープ音を消したいのですが上手くいきません。

OnKeyDownハンドラの中で以下のような処理を行っています。
if Key = VK_RETURN then
begin
 if ssCtrl in Shift then
  //処理A
 else
  //処理B
 Key := 0;
end;

Key := 0にすればビープ音が消えると思ったのですが、消えてくれません。
OnKeyPressハンドラで同じことをやるとビープ音は消えるのですが、
Ctrlキーの押下判定が出来ないのでOnKeyDownの方で処理を行えれば
よいのですが、音を消すにはどうしたらいいでしょうか?
774デフォルトの名無しさん:02/01/09 13:29
イベントハンドラでやるからだめなんでしょ>>773
イベントハンドラの前に、
KeyDownていうメソッドがコールされてて、
その中で、OnKeyDownがAssignされてればOnKeyDownをコールするとなってる。

だから、KeyDownをオーバーライドして、下のようにしたら?

if not 殺す処理の場合 then
inherited;
>>773 key:=0 の代わりに abort; 入れてみたら?

うまくいったら教えてね
776ビープ音が消えない:02/01/09 14:40
ありがとうございます。今回、EnterとCtrl+Enterの区別がつき
なおかつビープ音を消すという事ができればよかったので
以下のようにしました。

OnKeyDown
if Key = VK_RETURN then
begin
 if ssCtrl in Shift then
  //処理A
 else
  //処理B
 //Key := 0;
end;

OnKeyPress
if (Key = Char(VK_RETURN)) or (Key = #10)) then
 Key := #0;

打算的な解決方法なので、さらに研究してみたいと思います。
777デフォルトの名無しさん:02/01/10 09:33
Delphi3で作ってたプログラム
IE5.5SP2入れたらファイルの書き込みで
ファイル壊れるようになった。どーなってるのさ?
>>777 と言われてもなあ・・・再現性のあるテストコード作ってみてよ
779デフォルトの名無しさん:02/01/10 10:01
そのままだと長いし解り難んで、単純なコード作ってみる。
(でもGetMemで確保しFileWriteで書き込んでるだけなんだけどさ)
780デフォルトの名無しさん:02/01/10 10:26
TfilestreamとTmemorystreamでやってみてどう?
781756:02/01/10 10:49
>>757
>>764
>>766
色々な情報と関連する背景やキーワードやヒントや場所、
そしてソースコードまで教えていただきまして
みなさん、本当にありがとうございました。
この情報を元にさらに勉強して自分のものにしたいと思います。
感謝しています!!
782デフォルトの名無しさん:02/01/10 10:55
TabControlとPageControl
どちらを使えば良いのか迷っています。
わからないならとりあえずこっちを使っとけ、とかあります?
それぞれの特色というかメリットとデメリットがあれば教えてください。
TabControl
全てのページに同じコントロール(というか一つ)が配置される。
A boneのスレ表示部分とか。

PageControl
各ページに異なるコントロールを配置できる。
各種設定ダイアログとか。

とりあえずTabControlの動作を確認して希望の動作でなければ
PageControlを使ってみれ。
784デフォルトの名無しさん:02/01/10 11:24
なんとなくイメージ湧きました。
TabControlの方がシンプル
PageControlの方がゴージャス
という感じでしょうか?

TabControlは各ページを統一して管理しやすいが
逆に制限も多い
PageControlは色々細かいこともできるが
いちいち各ページを別々に設定せにゃならんくて
面倒くさい

というイメージをしたのですが
おおよそ当たってます?

>>783のアドバイス通りまずTabControlから使ってみます。
どうもありがとう!
>>777
どのフォルダに書こうとしてるの?
権限ちゃんと取得してる?
ワイルドカードの比較上手くいなかいんです
CL/SVパッケージじゃないんで本家MatchesMaskも使えないし。
ちなみに正規表現は却下です

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1010643399&res=1

間違えてるとこ教えてください
テスト結果ぐらいつけろ
>>784
TabControl はタブの外見だけ。ページ切り替えたときの処理は自分で書かないとだめ。
PageControl はページ切り替わったときに中のコントロールも切り替わってくれる。
789デフォルトの名無しさん:02/01/12 02:26
ドラッグドロップが出来ません。
某サイトのTipsをそのままコピペしてコンパイルしましたがダメでした。
コンパイルエラーはありませんでした。
私の勘違いを指摘してください。
--------------------------------------------------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ShellAPI;

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
procedure WMDropFiles(var Msg: TWMDropFiles);
message WM_DROPFILES;
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
// Drag&Drop の許可
DragAcceptFiles(Handle, true);
end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
Count: integer;
FileName: array[0..255]of Char;
begin
// ドロップされたファイル数
Count := DragQueryFile(msg.Drop, $FFFFFFFF, nil, 255);
Caption := 'ドロップ総数='+IntToStr(Count);

//ドロップされたファイル名を得る
DragQueryFile(msg.Drop, 0, FileName, 255);

// ドロップされたファイルを開く
Memo1.Lines.LoadFromFile(FileName);

// ドロップ処理の終了
DragFinish(msg.Drop);
end;

end.
--------------------------------------------------------------------
790789:02/01/12 05:40
検索していくつものサンプルを試したけど
大体同じような事が書かれているので
トンでもない勘違いをしてそうなんだけど
見当がつかない〜
このサンプルたちは基本の基本が書かれているだけで
単体では動かなくて実装するには別にコードを書かないと
ならないのでしょうか・・・(泣)
791ねこま:02/01/12 06:42
OnCreate がちゃんとコールされているか確認してみましょう.
それでも動かない場合,常駐しているソフトを1つずつ消してみましょう.
792789:02/01/12 07:36
あ・・・・・う、動きました
OnCreateがコールされていませんでした(大汗)
ばかばかオレのばかーーーー

神様ホトケ様ねこま様ーーー
テレホ内に解決できてマジうれしいです!
ひと晩中もんもんとしてました。
本当に感謝いたします!!!
793 :02/01/12 08:55

ListViewってメインアイテムは常に左端ですか?
>>793
メインアイテムっちゅーか、TlsitItemのCaptionで設定する項目、
ここはどうしても左寄せになるっぽい。

漏れはここに数字いれて、右寄せしてインデックス表示したかったけど、
どうしても右寄せできなくって、オーナドロー面倒になって、0で埋めた(w
>>793-794
設計時にはそのままじゃ出来ない(コンポ作らなければ)けど、
FullDragをtrueにして
SendMessageで
LVM_GETCOLUMNORDERARRAY
LVM_SETCOLUMNORDERARRAY
を使えば、いけるよ。かちゅとかでも使ってるはず。
C++でwindows.hのマクロを使えるなら
ListView_GetColumnOrderArrayとかでも可。
>>795
お、これは(・∀・)イイ!こと聞いた、サンクス。

>ListView_GetColumnOrderArray
CommCtrlをUsesしてみ、使えるよ。

@Del5ProUp1 on Win2kProSp2
797793:02/01/13 00:10
>>794
うんおれも親のアイテム(?)をインデックス表示にしたいと考えてました。
でその次に実用上のメインアイテムを持ってきたかったのだけど
実際はSubItems扱いで選択もEditCaptionも出来なさそうで。
結局TListViewで可能なのはエクスプローラ詳細表示と同等なのかなと。
SubItemsをユーザー入力で編集したければストリンググリッド使うしかない
のかな?と思いはじめていました。
>>795-796試してみます、アリガト。
TabSetのTabs[2]を消してTabs[3]をTabs[2]に…というようにして、
最後の行だけ消したいのですが、Tabの数を獲得出来ますか?

というか、指定の行をすっかり消せればいいのですが・・
799デフォルトの名無しさん:02/01/13 01:55
>>798
TabSet1.Tabs.Count で全タブ数。
TabSet1.Tabs.Delete(TabSet1.Tabs.Count - 1); で最後のタブ削除

Delphiの場合、TTabSetやTComboBox、TListBoxなどの各アイテムは
TStringsから派生したオブジェクトになっています。
ですので、AddやDelete、CountなどTStringsで定義されているのは使えるので
TStringsのヘルプを見て、どのようなメソッドがあるか確認してみるのが良いでしょう。
800デフォルトの名無しさん:02/01/13 05:38
プリンタポートに25ピンのパラレルケーブルで接続された外部機器
(プリンタではない)をプリンタポートモードをEPPモードで制御したくて
手始めにその対象機器を制御するソフトを動作させてる裏で
どういう情報のやり取りがあるのか取得してログに記録する
感じのツールを作ってみようと思っているのですが、
この用途に向いたDelphiのVCLなんて都合の良いものあります?

外部機器の制御は経験がなく基本がわかっていないと思います。
まずはここから勉強しとけ、などありましたら宜しくどうぞ。

・AT互換PC
・Win9x(Me)

です。
801デフォルトの名無しさん:02/01/13 14:42
全てのクラス型に使えるような

procedure SaveClass(AFileName:string; AObject:TObject);
procedure LoadClass(AFileName:string; AObject:TObject);

関数作れませんか。ポインタを格納している場合は、
その実体までさかのぼって保存してくれるよな。

procedure SaveClass(AFilleName:string; AObject:TObject)
var
 Stream:TStream;
begin
 Stream := TStream.Create;
 AObject.SaveToStream( Stream );
 Stream.SaveToFile( AFileName );
 Stream.Free;
end;

とか。
TMoge = class;
THoge = class
 Moge: TMoge
end;

TMoge = class
 Hoge: THoge;
end;

(´-`).。oO(となっていたらどうするんだろ)
>>801
あなた以前にもここで聞いてなかった?
できっこないよ
804デフォルトの名無しさん:02/01/13 18:24
$APPTYPE が CONSOLE なときに、
標準エラー出力に流す方法を教えてください。
>>802
べつにどうにもならないと思う。
普通にコンパイルが通ってハイ終わり。
>>805
802は801へのレスだとおもうが
>>804
if IsConsole then
 Writeln(ErrOutput, 'hogehoge');
808802:02/01/13 21:47
(´-`).。oO(>>806 YES)
809ErrOutput:02/01/14 00:43
しらなんだ、ありがとう。
これで今夜ぐっすり寝られる。
810デフォルトの名無しさん:02/01/14 00:49
if IsWet then
Insert(slowly, 'yourcock');
>AObject.SaveToStream( Stream );


if AObject is THoge then
begin
 Stream.Write(THoge(AObject).Buffer^, THoge(AObject).BufferSize);
 Stream.Write(THoge(AObject).Name[0], Length(THoge(AObject).Name));
 ...
end
else if AObject is TFoo then
begin
 ...
end
else
...
と直せばできるYO!
812デフォルトの名無しさん:02/01/14 21:06
上位バイトと下位バイトを分割するにはどうすればスマートですか?

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00

たとえばこの0B番地のデータ4Cを4とCに分けて
それぞれ別々の変数に格納するような感じ
813デフォルトの名無しさん:02/01/14 21:08
あう、ズレたよ

   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00
814デフォルトの名無しさん:02/01/14 21:09
ゴメソ。今度こそ

---- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0000 FF FF FF 9C 36 25 00 00 00 46 00 4C 00 00 00 00
815デフォルトの名無しさん:02/01/14 21:11
だめだあ・・・でも意味は通じるよね?
上位"バイト"とかいうと、それはバイトより大きな単位の中の上位にある1バイトのことになるが。
16進数一桁なら上位ニブルとかいう。
で、ダンプをずらずらと書く必要はまるでないように見受けられるが。繰り返しかかれるのはうざい。

で、aに1バイト入っていて、a_hiに上位、a_loに下位を入れたいだけなら
a_hi := (a shr 4) and $0f;
a_lo := a and $0f;
でよろし。
817812-815:02/01/14 21:27
>>816
うざい書き方して申し訳ないでしたm(__)m
素早いレスありがとうございました!感謝します!!
818812-815:02/01/14 21:40
あう、上位ニブルと表現しないといけないのか、勉強になりました。
おー素晴らしいーーshrってこういう時に使うのですね。
いろいろ勉強させてもらいました、重ね重ね感謝します
divで良くない?
たとえば?
div は遅いだろ
元に戻すには逆にshlすればいいの??
>>801
どうして無視するの?
>>823
一応>>811で回答はあるぞ。
というか、無理だろ、実体をさかのぼるのなんて。
>>819
普通はこういうとき(bit演算)はシフト演算を使います。
ちなみにdivだと符合が考慮されてイヤーンな結果になる恐れアリ。
ていうかdivだとshrじゃなくてsarになるね
岡本さんへ。

IsConsole は、.EXE に "Console モード" のフラグを1ビットつけるだけです。
このフラグがつくと .EXE 起動時にコンソールが開きます。
このフラグはコンパイル/リンク時に確定するものなので、
プログラムがコンソールから呼び出されたかどうかとは関係ありません。

わかったかな?
>>827
MLに投げてやれよ(w
>>828
いや、彼はここを見ている。
MLのLogに残らないと、見た人が信じちゃって困るから、フィードバックせな。
ま、本人見てれば訂正してくれるか
>>830
そんなの義務じゃないんだから命令するな。
インターネットの情報を頭から信じると戸田みたいになるぞ。
おろ、けっこうMLとココって見る人と書く人かぶってるのね
って当然か。MLの情報にはとてもお世話になっているんだけど
投げる前にすげー緊張するし退会しちゃったよ
これでいいのか、ほんとにこの内容で大丈夫か、って何回も読み直してから
投げてた(ワラ
>>832
あそこは「サロン」です。技術情報メーリングリストではない。
■[サロン]の大辞林第二版からの検索結果

サロン

[(フランス) salon]

(1)客間。応接室。
(2)(フランスで)上流婦人がその邸で催す社交的な集まり。
(3)(ホテル・客船などの)談話室。大広間。サルーン。
(4)酒場。
(5)〔ルーブル宮のサロンでフランス-アカデミーの展覧会が開かれたことから〕
現存作家による公式の美術展覧会。

なるほど。「Delphi 談話室」メーリングリストというわけか。

それでもいいんじゃない?
こっちじゃないのか?

サロン 1 [(インドネシア) saron]
インドネシアの打楽器。青銅板を鉄琴のように並べたもの。一セットが一オクターブを受け持ち、四つの異なる音域のものがある。ガムランの高音部の旋律を受け持つ。
>>827

IsConsole 質問者が納得しそうだよ!?
>>836
今見た。戸田ちゃんがでてくることを(ちょっと)期待しているんだけど
このままいくかな?

元質問者は TERRY か。Delphi-ML 以外の Delphi 系メーリングリストでは
回答者側に回っているんだけどなぁ。
838デフォルトの名無しさん:02/01/15 22:06
上下位ニブルではなく上下位バイト(?)に分けるのはどうするの?
6053hをリトルインディアン(?)で5360にする方法。
上のshrのレスを応用しようとしてあえなく挫折
よろしくお願いします
839デフォルトの名無しさん:02/01/15 22:16
俺は最近、広場のHotkeyから目を離せないよ!!
>>838
a := $6053
b := Hi(a) + Lo(a) shl 8;
>838
swap($6053)
癖があるからhelpをみてから使ってちょ
842840:02/01/15 22:28
>>841
そんなのあったのか。初めて知った。
>>839
Hotkey 本人さんですね?宣伝ご苦労様。
844デフォルトの名無しさん:02/01/15 22:49
>>840
>>841
ありがとうです
shl, swap, 両方調べて使わせてもらいます
各変数に代入するなら shl
ただひっくり返すだけでいいなら swap なんですね
みんな、
Delphiでどんなものをつくっているか
簡単におしえてくれ
delphiで作られた有名ソフトって何がある?
http://pc.2ch.net/test/read.cgi/tech/990056026

これ読んでからレスつけな。
ファイルの先頭行を取得する関数を作りたいのですが、
下記の方法よりも速く処理する方法はありませんか?

function TForm1.LoadText(FileName:String):String;
var
F:TextFile;
S:String;
begin
AssignFile(FileName);
Reset(F);
Readln(F,S);
CloseFile(F);
Result:=S;
end;
848Delフサギコ:02/01/15 23:49
         _________
  ∧,,∧   / >>839
 ミ;゚Д゚彡< おれも、おれも・・・
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪   フリー談話室で......
849デフォルトの名無しさん:02/01/16 00:00
わ…ビクーリ…。お…オレも(藁
ここで、この名前が出るとは…。
前から「痛いなー… 痛いよHotちゃん…」って思ってたから
>>848のレス見て(その先は見てなかった)、今、苦笑いと共にビクーリしてる。
なんてゆーか、「ツワモノ」って感じだよな。
何歳なんだろう?
>>847
と、言うか遅いのか?
API直呼び出しするとか。
ウザ
>>847
必要充分に速いと思うけど、どういうのを期待してるの?
ガリガリのアセンブラコード?キャッシュの効く読み込み?
853デフォルトの名無しさん:02/01/16 00:08
>>847
その行の先頭に行の長さを入れておけば、
一行の取得は簡単で速くなるよ。
854デフォルトの名無しさん:02/01/16 00:29
Hotちゃん、1回「すごくまともな怒られレス」返されて、
「反省してんのか?それ?」ってレス返して、しばらく自省中なのかと
思ってたら、もう新しいレスこいてるYO!ビクーリ!
MDI子ウィンドウの切り替えをWinXPで行うとスキンがちらつきますよね。
あれはどうにかして回避できないのですか?
856デフォルトの名無しさん:02/01/16 00:54
win95へOSを変え(略)
Pちゃん以上のつわものとお見受けした。
彼のハンドル、「ほっとけい」から来てるのかと
思って黙殺してるのだが。
>>857
どうやら黙殺されてると思ってないみたいよ。
平気でマルチポストしてるし。
つーか、答えてほしいなら最低限、誤字は見直せよ(藁
>>824
823=811なのれす。
広場ってどこ?
862860:02/01/16 08:21
>>861
ありがd
863デフォルトの名無しさん:02/01/16 09:22
ストリームに以下みたいに書くとエラーになってしまいます。
----------
var
M : TMemoryStoream;
begin
M.Write($4649,2);
end;
----------
変数を経由しないで直接データを書くのは無理ですか?
参照渡しだからねえ
865デフォルトの名無しさん:02/01/16 10:25
TIdHTTP を使ってプログラムを書いてるんですが、リクエストタイムアウトの
実装方法がよくわかりません。どなたかご存知の方、教えていただけないでしょうか。
Get や DoRequest を実行するとそれが完了するまでスレッドがブロックして
しまうので、一定の時間で歯止めをかけたいのです。

Delphi6 + Indy8.0.25(標準添付) です、よろしくお願いします。
866こだわり派:02/01/16 18:18
実数型のRealとDoubleってどっち使った方がいいの?
どっちも同じらしいが正直、気になる。
double
Real
>>866
間をとってSingleにしとけ(w
Real はコンパイラスイッチで 6 byte 実数と 8 byte 実数に切り替わる。
6byte実数は FPU が無かった時代の遺物。

あとはマニュアル読め。その上でわからないところを聞きなさい。
Extended
ツールバーで使える 16x16 or 16x15 のサイズのビットマップファイルを
公開されているよいサイトはないでしょうか。
探し方が下手なのか、ググルで探してみてもみつからないのです。
宜しくお願いします。
873デフォルトの名無しさん:02/01/16 23:24
>>866
Extended つかっとけ
VCL はだいたいそうなんだから
談話室、落ちてる?
Hotちゃん…。
そのファイルがWindowsで使用中かどうか調べるのってどうやるんですか?
>>875
「その」って?
書き込みモードでオープンでよかったっけ?
その直後に使用されたらかなわんが。
単に使用中かどうかを知るには、Windows API ではなく、カーネル API を使うことになり
資料はほとんどない。また Win9x 系では異なる実装をしなきゃいけないし。

一応、資料へのポインタ。がんばって。
http://www.sysinternals.com/ntw2k/source/filemon.shtml
879Delフサギコ:02/01/17 08:59
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538

   ∧.,,∧  / >>872
  ミ.,,゚∀゚彡<  ここの3よみーな
  ミ つ目(ミ . \
〜ミ,,O,,,,,,つ
880neko:02/01/17 10:14
あるフォルダに存在する拡張子のないデータ(例:アイコン)
を検索する処理を行いたく
PathFileExists関数を使い,検索してみたところ
拡張子がないのでそのデータがフォルダ内に
存在していても戻り値がfalse(データが存在しない)に
なってしまい,困っています。
FindFirstも使ってためしてみましたら駄目でした。(T_T)
何か良い検索方法がありましたらよろしくお願いします。
>>880
アイコンって、普通、拡張子あるだろ(例:hoge.ico)?
エクスプローラの設定がまずいのかな?

エクスプローラ → フォルダ オプション → すべてのファイルとフォルダを表示する

はずしていたらごめんなさい。
882neko:02/01/17 11:04
>>881
それがないんですよ。
渡されたデータなんですが普通のショートカットだと
ちょっと違うみたいで・・・・・・・・
業務アプリケーション(どこかの会社の)ショートカットだと
思うのですが・・・・・・・・・・・
883neko:02/01/17 11:07
>>881
エクスプローラの設定はきちんとなっています。
884neko:02/01/17 11:29
通常Microsoft等のショートカットのプロパティを
見ると全般,ショートカット,セキュリティにタブがわかれて
いますがこの業務アプリケーションの場合は全般,セキュリティ,概要
にわかれていて拡張子がわかりませんでしたが,
DOSコマンドでそのショートカットを検索した所
拡張子がわかり,PathFileExistsで拡張子つきのパス名に
した所うまくいきました。
885Delphi初心者:02/01/17 12:32
PathFileExists関数って何処にあるのでしょう?
あなたの脳内にのみexists
>>885 Shlwapi.dll にあると思いますが

FileExists関数を使った方がいいでしょう
Google
889neko:02/01/17 13:59
>>887
どうしてFileExists関数の方が良いのでしょうか?

890neko:02/01/17 14:03
>>885
<shlwapi.lib> はテキストファイルではないので
#include で 取り込むことはできません。
これは shlwapi.dll を暗黙で使うためのインポート
ライブラリなので リンカに渡す必要があります。

C++Builderではリンクに使う指令があります
#pragma link "shlwapi.lib"
とソースファイル中に書くことによってリンカに
渡されます。

ただ、このままだと"shlwapi.lib"へのパスが
正しく張られていないので
[プロジェクト|オプション][ディレクトリ/条件]
の[ライブラリパス]に
$(BCB)\Lib\PSDK
を追加してください。


891Delphi初心者:02/01/17 14:12
関数と言う響きでHELPしか確認しませんでした
>>886-888 お騒がせしてすいませんでした、逝ってきます・・・・

   ||←LANケーブル
 Λ||Λ
( / ⌒ヽ < Delphiと思ってレスしちゃたーよ
 | | Del|
 ∪ 亅|
  | | |
  ∪∪
>>889
PathFileExists は LPCTSTR  を渡さなければならないからです

Delphi内部で使うぶんにはAnsiStringで渡せる FileExistsが便利でしょう

TSTRを使いたい理由があるなら別でしょうけど
893neko:02/01/17 14:19
>>892
ありがとうございます。
勉強になりました。m(_ _)m
>>776
恐れすだけど

if (Key = #10) and (GetKeyState(VK_CONTROL) < 0) then
Key := #0;

で駄目?ssShift求めるルーチンにまんまあるんだけど。
まんまじゃないか
896865:02/01/17 19:06
自己レスです。
その後、ソースコード調べてみましたが、まっとうな方法では実現不可能のようでした。
別のスレッドで時間を計ってスレッドを強制的に止めてしまうしかなさそうです。

ちなみに Indy9 ではちゃんとサポートされてました。乗り換えるとなると変更が大きく
なりそうなので悩みどころです。
898869:02/01/17 20:23
>>897
IdAntiFreeze は用途がちょっと違いますね。
使えば画面は固まらなくなりますが、読んだ関数から帰ってこないのは一緒
なんです。
shellTreeViewの.アイテムのTextプロパティの動作が変なのですが…
例えば、

for i:=0 to ShellTreeView1.Items.Count-1 do
showmessage(ShellTreeView1.Items[i].Text+' '+IntToStr(i));

とすると、なぜかIntToStr(i)の部分が表示されないんです。(特別なフォルダだけ表示されるようですが)
どうにかしてまともに動作させる方法はないんでしょうか?
900そすぃんさ:02/01/18 01:03
ちょっと前にD&Dのサンプルが動かないってレスがありましたが、
便乗質問いいですか?
よくネット上で紹介されてるD&Dサンプルソースの、「どのあたり(仕組み)」で、
手続きが動作するのでしょう?(意味不明ですか?)
「message WM_DROPFILES;」の所をコメントにすると動作しないけど、
宣言すると動作する…。ハテ…?
>>900
TObject.Dispatch

JMP ECX
では?
902776:02/01/18 01:12
>>894
どうもです。ちょっと調べてみます。
903900:02/01/18 02:38
>>901
レス、どーもです。うーむ…。もすこし自分で調べてみます。
>>899
確認しないでコメントするが、commuinty.borland.com にある、修正パッチを
当ててからテストしたほうが吉。
>>900
動いているサンプルコードの一部をコメントアウトすると動かなく
なるのはあたりまえだろ。「message 指令」をヘルプでよく見るように。
VCLオブジェクトでメッセージを捕まえてイベントハンドラを記述する
一般的な方法だよ。メッセージ指令をコメントアウトすると、メッセージを
捕まえられなくなるので動作しないのは当たり前。
906デフォルトの名無しさん:02/01/18 10:52
TMemIniFileを使って Iniファイルの読み書きをしようとしてるんですが、
書込みがファイルに反映されないケースが発生して困ってます。
いろいろ突き詰めた結果、TOpenDialog.FileName を読んだ場合にのみ
現象が再現することを確認しました。どう関係があるのかがさっぱり、、、

procedure TMainForm.OpenBtnClick(Sender: TObject);
begin
 if OpenDialog.Execute then
  PathEdit.Text := OpenDialog.FileName; // *1
end;
procedure TMainForm.WriteIniFile;
var
 ini: TMemIniFile;
begin
 ini := TMemIniFile.Create('Sample.ini');
 try
  ini.WriteString('TEST', 'Path', PathEdit.Text);
 finally
 begin
  ini.UpdateFile;
  ini.Free;
 end;
 end;
end;

↑こういったコードです。*1 の部分を通らなければIniファイルの書き込みが
成功するんですが、通るととたんにダメです。デバッガで追った感じでは両者
とも同じ道を辿っているようなんですが。。。
どなたか、こういうケースをご存知の方いらっしゃいませんか?
907906:02/01/18 10:53
補足です。
TMemIniFile じゃなくて、TIniFile を使うときちんと動いたりします。
環境は Delphi 6.0 (SP1) です、よろしくお願いします。
908906:02/01/18 11:28
自己レスです。

>ini := TMemIniFile.Create('Sample.ini');
の個所でファイル名指定をフルパスでやるとうまくいくようになりました。
フルパス指定しなくてもカレントフォルダとかに出来るはずだと思ってたんですが、、、
ちなみに >>906 の *1 の個所を通らないように実行するとカレントディレクトリに
ファイルが作成されていたのですが。

よくわかりませんが、動いたのでヨシとします。
お騒がせしました。
カレントフォルダがOpenDialogで変更されちゃうというオチ? >>908
kylixもここ?
912906:02/01/18 12:47
>>909
OpenDialog で開いたフォルダを見てみたら、、、、ありました、Iniファイル。
鬱だ氏のう。。。
>ini.UpdateFile;
>ini.Free;

ここには誰もつっこまないのか?
914うにゃ:02/01/18 16:42
はじめまして。
Formの<最小化・最大化・閉じる>ボタンを非表示にしたく
Helpを引いたのですが,最小化・最大化を非表示にする方法は解ったのですが(下記)
BorderIcons = ( TBorderIcons() = BorderIcons ) >> biMinimize >> biMaximize;
閉じるボタンについてを探す事ができませんでした。
どなたか閉じるボタンを非表示にする方法を教えて下さい。
>>913 こういったコードっていうから慌てて書いたんでしょ
>914
そのコードでシステムメニューを外せば閉じるボタンも一緒になくなるよ。
917うにゃ:02/01/18 17:36
>916
ありがとうございます。m(_ _)m
918906:02/01/18 19:38
>>913
ありゃ、そこもまずいっすか。
例外が発生した場合でも問答無用で UpdateFile するのがやばいかな。
もう少し考えます。
919デフォルトの名無しさん:02/01/18 21:09
TFontをLOGFONT構造体(TLogFont)に変換する効率の良い方法は無いですかいのう?
逆ならすぐに解ったのだが・・・。
>>854
「Delphi 広場」復旧。
だれ?Hotkey に 2ch を教えた人。
玄みたいにならないといいが
921デフォルトの名無しさん:02/01/18 21:52
FastnetのSMTPコンポーネントなんですが、サブジェクトで全角使うと
文字化けします。
本文は大丈夫なんですが。。。
なんか対策あります?
>>919

GetObject()

>>919

ちなみに逆ってどうやるのよ。
まさか各フィールドを代入すんじゃないだろうね。(笑)
CreateFontIndirect() でのハンドルを代入するとか?
924919:02/01/18 22:06
解決。922スマソ。
925919:02/01/18 22:10
>>923
それでやっていたら最初から質問しなかったとおもう。

逆は
Font.Handle := CreateFontIndirect(LOGFONT);
でやっているが、何か問題ある?
926923=922:02/01/18 22:17
>>925

うん、オレもそうしてる。
問題があるとすれば、TFont のハンドルに代入しても、LOGFONT の内容が
TFont のプロパティーの値に反映されないことかな。すくなくとも、オレの時は
そうだったが。どうよ?

927919:02/01/18 22:30
漏れの場合は問題なかった。

うろ覚えなので適当に再現したけど、こういう使い方をしたような。

procedure TForm1.Button1Click(Sender: TObject);
var
  NFont:TFont;
  LogFont:TLogFont;

begin
  NFont := TFont.Create;

  try
    SystemParametersInfo(SPI_GETICONTITLELOGFONT,SizeOf(LogFont),@LogFont,0);
    NFont.Handle := CreateFontIndirect(LogFont);
    Label1.Font.Assign(NFont);
  finally
    NFont.Free;
  end;

end;


ちなみにDel4Pro。
>>921
エンコード
929923=922:02/01/18 22:50
>>927

あ、そういうふうに描画だけで使うんなら、問題ないね。
Assign() で入れ替えてしまうわけね。なるほど。勉強になった。アリガト。

オレが言ってたのは

Label1.Font.Handle := CreateFontIndirect(LogFont);

の場合、もともとの Font のプロパティーにハンドルの内容が
伝わらない、ということだよ。描画はOKなんだけどね。
うん、でも Assign() だと元が free される直前にコピーがつ
くられるから、このほうがよいね。たぶん。

ついでですまんが Labe1.Font.Name 、Style、Charset なんかで
LogFont の内容とプロパティーが同じになってるか、確かめてくれ
ないかなぁ。



  


930923=922:02/01/18 22:54
>このほうがよいね。たぶん。

Assign()のほうがよいね、って意味ね。
あの.. VCL ソースお持ちでは無いの?
でコードを見る分にはちゃんと反映されているはずですが。
どなたか追試してみたら?929 の「問題」は存在しないことが
わかると思います。
932919:02/01/18 23:20
はいよ

procedure TForm1.Button1Click(Sender: TObject);
var
NFont:TFont;
LogFont:TLogFont;

begin
NFont := TFont.Create;
try
SystemParametersInfo(SPI_GETICONTITLELOGFONT,SizeOf(LogFont),@LogFont,0);
NFont.Handle := CreateFontIndirect(LogFont);
Label1.Font.Assign(NFont);

with NFont do
Label1.Caption := Name+'/'+IntToStr(Height)+'/'+IntToStr(Charset);

with Label1.Font do
Label2.Caption := Name+'/'+IntToStr(Height)+'/'+IntToStr(Charset);

with LogFont do
Label3.Caption := lfFaceName+'/'+IntToStr(lfHeight)+'/'+IntToStr(lfCharSet)
finally
NFont.Free;
end;
end;

結果
http://cgi.members.interq.or.jp/green/katu4/imgboard/img-box/img20020118231820.png

ちなみにこれは家にあるDel6Personal
VBでは同種のコントロールにインデックスを付けて一緒に扱えますが、
Delphiにはそういうのあります?
あれってソースの使いまわしができて楽なんですが。
934923=922:02/01/18 23:26
>>931
>>932

アリガト。オレの勘違いだったみたいね。sumanu

>>933
ソースの使い回しはいくらでも出来ますが、どういう方法でやるかは、やりたい内容に依る。
>>933
単なるイベントの使い回しなら、このようにやる。

Label1,Label2,Label3がフォーム上にあったとする、

Label1〜Label3をクリックした時同じイベントを割り当てたいとすれば、
Label1のOnClickを定義して、Label2,3にもLabel1OnClickを割り当てる。

どのLabelがイベントを発生させたかを知るには、
VBではIndex仮変数を使うところだが、Delphiでは代わりに(Sender as TLabel)を使う。

procedure TForm1.Label1Click(Sender: TObject);
begin
  Form1.Caption := (Sender as TLabel).Caption;
end;

とやれば、
Label1をクリックすればForm1.CaptionはLabel1.Caption,
Label2をクリックすればForm2.CaptionはLabel2.Caption,
と同価になる。

937923=922:02/01/18 23:47
>>931

ソース見るのさぼってたのね。すまぬ。>>特に919

SetHandle → GetFontData でまた Handle から GetObject()
して、TLogFont を取得して、それからプロパティー部分を代入
してから、FontManager に渡してるわけね。

だとすると、919 のコードのように TFont のインスタンスを
作って、それの Handle に代入してから、Assign() するより
直接、CreateFontIndirect() の 返値を Handle に代入した
ほうがよいみたいだね。うーむ。
938933:02/01/18 23:49
VBの例では、
たとえば複数あるテキストボックスのフォントサイズを
これまた複数の(対応する)スクロールバーで変化させる場合‥‥

Private Sub HScroll1_Change(Index As Integer)
text1(Index).Font.Size = HScroll1(Index).Value

あんまりいい例じゃありませんが、
配列化しておくとこの種の記述が一カ所で済むもので‥‥。
939933:02/01/18 23:51
あ、書いてるうちに別のレスがついてた‥‥。
940 :02/01/18 23:59
では、イベントの取得ではなく、
ループ(カウンタ)を使って複数のlabelやtextなどに対して同じ処理を一括して行う場合はどうなりますか。
>>940
インデックス参照できる用に拡張したクラスをひょいと再定義して
それを使う。
942デフォルトの名無しさん:02/01/19 00:07
外部プロセスを起動して、そのプロセスの標準入出力を Stream で取り出すような
ライブラリ、あるいはコンポーネントってありませんか?

結構需要があると思うんですが。。。
あれ?VB.NETじゃコントロール配列なくなるんじゃ
なかったっけ?
944923=922:02/01/19 00:12
>>940

procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
begin
 for i := 0 to ControlCount-1 do
  if Controls[i] is TLabel then
   (Controls[i] as TLabel).Caption := 'Changed!';
end;
そろそろ新スレの時期ですな。
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi/tech/1006602102/

次はこっち使い尽くして相談室に一本化しようぜ
947Delフサギコ:02/01/19 00:24
>>938
その質問は今まで200回くらい見たきが...

 ∧,,∧     /
ミ ゚Д゚ミ ∫<  TEditの配列作ることもできるし
.(ミ  ミっ-~  \ FindComponentでもいいし
〜ミ,,⊃ミ⊃
 なんでもござれです。
>>946
またギコが爆弾発言して途中退場しそうだから難しそうだな。
ネタキャラなしにしようぜ。
広場の方が仮再開したようだ。Hotな活躍がまだまだ見られる。
950デフォルトの名無しさん:02/01/19 01:02
どーも2ちゃんねらじゃないフリして、ここの人がHotちゃんに
レスしてるよーな気がしてならない。
>949-950
お前らにはDelよりHSPのが合ってそうだな。
一回試してみろよ。きっと気に入るよ。
>951
お前にはDelよりN88BASICのが合ってそうだな。
一回試してみろよ。きっと気に入るよ。
>>950
みんな見てると思うぞ。
実際役立つTipsも有るし、ネタが有る所は見るんじゃないかな・・
俺は役立ちそうなスレ片っ端からwgetしてNamazuしてる
# 繋いじゃうと何かと無駄な時間が・・・(笑
>>950

最近のレスといえば、H と q だけど、ご両人はあそこでは古株
だろう? だれのこといってんの?

もっともご両人ともここ見てるってことはあるよな。
もうよさない?
もうやめようよ。
957Delフサギコ:02/01/19 01:19
  ∧,,∧   >>948
 ミ,,  彡  フサ次スレは辞めときますかねえ....
 ミ   ミ  
 ミ〜,, ミ
  ∪ ∪
       細く長く生き延びたいな...
>>957

オレはフサギコのキャラ好きだよ。
でも、このごろフサさん、忙しそうであまり出現しないんだね。
ちょっと、あのスレ、廃れ気味だよね。
がんばって、細く長く続けるのには異議なし! です。
9591000:02/01/19 01:55
1000
960デフォルトの名無しさん:02/01/19 02:36
2バイト文字1バイト文字混在の文字列の文字数は

var
S : String ;
I : Integer ;
begin
I := Length(S) ;
end;

てな具合ですが、バイト数を求める版Lengthってありますか?
おれのヘルプだとLength()バイト数を返す、って書いてあるけど
WideStringに放り込め
963デフォルトの名無しさん:02/01/19 02:45
// 2バイト文字を2個としてカウントするのでバイト数がわかる
I := Length(AnsiString(S));

// 2バイト文字を1個としてカウントするので文字数がわかる
I := Length(WideString(S));
>>962 そうすると元のバイト数がわかるんですか?信じられない!
2で割ると文字数が分かるってのは知ってるが。
965960:02/01/19 02:51
すみません思い込み勘違いでサンプル間違ってました。
960のコードだと961さんがおっしゃるようにバイト数が求められました。
Lengthで文字数、バイト数ともに求められたのですね。
ありがとうございました。
>>965
ヘルプまんまだよ....
Delのバージョンによってヘルプは違うYO!
以前はあたかも文字数を返すような説明だった記憶が・・・
>>967
アメ公には1バイトも1文字も同じ。連中にとっては Length は“常に”文字数を返すんだよ。

>>964
MBCS / 1バイト2バイト混在文字列の場合、「2で割ると文字数」とはならないぞ
969964:02/01/19 13:49
>>968
964 は 962 へのレスであることが分からんのか?
970デフォルトの名無しさん:02/01/19 19:38
FlashGetでAlt+↑↓するとリストのアイテムを↑↓に移動できますが
それを実現したいのですが、TListViewで配列の要素をPOPしたりPUSHしたり
SHIFTしたりってどうするの?TListViewのメソッドには無いですよね?
971デフォルトの名無しさん:02/01/20 22:03
>>942 自己レスです
結局 Delphian World に登録されてる「CosoleApplication リダイレクト実行ユニット」
てのを改造して使いました。
stdin, stdout, stderr を string で受け渡しできます。

後で見つけたんで使わなかったんだけど、Torry's Delphi Pages に登録されてる
「DOSCommand v.2.0」ってのも良さそうでした。
>「DOSCommand v.2.0」ってのも良さそうでした。
ソース見るかぎり全然良さそうじゃない
973デフォルトの名無しさん:02/01/21 00:06
>>972
価値観の相違ですね( ̄ー ̄)ニヤリ
>>970
TStringsで処理
975デフォルトの名無しさん:02/01/21 10:20
uses 節って unit の interface部、implementation部、両方に書けるけど
どういう風に使い分けてますか?
そもそもどうして2箇所に書けるようになってるんだろう。。。

混乱してます、誰かヒント下さい。
循環参照を回避できる
977デフォルトの名無しさん:02/01/21 10:44
>>976
なるほど、ありがとうございます。
ちょうど 975 を書いた後に循環参照でコンパイル出来ないトラブルに
当たってたところでした。

片方を implementation部に移しても問題ない場合は循環参照を回避
できるけど、両方の unit が interface部で互いを参照しちゃってるような
場合はどうしようもないんですね。

こういう場合は同一 unit に入れとけってことなんでしょうな。
なかなか Pascal も難しい。
>両方の unit が interface部で互いを参照しちゃってるような場合
こういう場合は「自分の設計が悪い」と思い込むことにしてます。
本当に設計が悪いのかは別にして。
相互に参照しあう場合はもう一段階 抽象化するといいと思う

 クラスの参照なら TObjectを受け入れるようにするとか
9801000:02/01/21 12:23
1000
ああ、困ったねえ 1000盗鳥がやってきた。
  次のスレどうするの?
  それとも相談室に統合?
  MLウオッチネタはどこにいけばいいのよ?
982Delフサギコ:02/01/21 12:32
>こういう場合は同一 unit に入れとけってことなんでしょうな。
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 <  ちゃうがな。
  UU"""" U U    \_______________

>>978-979さんでガイシュツですが
抽象化って呼ぶのかどうかしらませんが
Unit1とUnit2で同じ型やクラスを使いたいなら
新しくUnit3を作ってそこに記述するといいです。
Unit3からはUnit1やUnit2の定義は参照しないように。

フサは自作でも他作でも
interfaceのusesは汎用クラスライブラリ
implementationのusesはそのアプリだけの処理ユニット
として使い分けてます。

汎用クラスライブラリ的にコードを書くと
ソースがきれいになりますよ。
>>981
>MLウオッチネタはどこにいけばいいのよ?
マ板に作って!
9841000:02/01/21 16:13
1000
>>978
>>両方の unit が interface部で互いを参照しちゃってるような場合
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
>本当に設計が悪いのかは別にして。

設計が悪いかどうかは別にして、複数のユニット/クラスの依存関係が強い
ことは明らかだから、ひとつのユニットに押し込むか依存関係が強い部分を
抜き出してひとつユニット/クラスをこしらえる。

早い時期にやっておいたほうが跡で困るより楽だよ。
>>983
つくるなら、ML に特化しないスレタイトルをキボンヌ
9871000:02/01/21 18:28
1000
988デフォルトの名無しさん:02/01/21 23:13
usesにmmSystemとwindowsは記してある

// 1トラック目から最後までを再生し
procedure TForm1.Button1Click(Sender: TObject);
var
 mpp: MCI_PLAY_PARMS;
begin
 // 再生を終えたら MM_MCINOTIFYメッセージを送る
 mpp.dwCallback:=DWORD(hWnd);
 mpp.dwFrom:=MCI_MAKE_TMSF(1, 0, 0, 0);
 mciSendCommand(wDeviceID, MCI_PLAY, MCI_FROM or MCI_NOTIFY, DWORD(@mpp));
end;

というのをやったらhWndのところで'エラーが出ました。
カッコの部分がおかしいというのですがhWnd(???)とするのでしょうか?
でもHWNDに引数はいりませんよね?
hWndってなに?Handleのこと?
990988:02/01/21 23:38
>>989
コールバック用のハンドルです。

Handle: HWND〜っていうやつじゃないから
手続きの外に cbHandle: THandle と定義しておいて
mpp.dwCallback:=DWORD(cbHandle); とすれば良いのですね。
991975:02/01/22 05:57
>>978
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
そうっすね。Delphi、素人なんでよくわかんないんですが、クラス設計とは別に
unit設計のような作業が必要で、相互依存関係のあるクラスは同じ unit に入る
ように設計する必要があるのかなと感じています。

>>979
>相互に参照しあう場合はもう一段階 抽象化するといいと思う
手っ取り早くコンパイルを通すにはこれが簡単ですね。
俺も最初はこれをやってみました。片方の参照ををスーパークラスで定義して、
実際使う際にダウンキャストするってことですよね。
ただ、コンパイラの都合でクラス設計をいじるのは気持ちが悪い気もするです。

>>982
>フサは自作でも他作でも
>interfaceのusesは汎用クラスライブラリ
>implementationのusesはそのアプリだけの処理ユニット
>として使い分けてます。
なるほど、参考になります。

>>985
仰る通りだと思います、急がばまわれですね。
992DELモナー:02/01/22 06:44
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   993
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
994
Hotkey995age!
Hotkey996age!
今だ!997ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
今だ!998ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   1000
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。