Delphi相談室その4

このエントリーをはてなブックマークに追加
Delphi関連の Tips Q&A はこちら。

■前スレ
Delphi相談室その3
http://pc.2ch.net/test/read.cgi/tech/1010153466/

■気楽な雰囲気がよければこちら
モナーの *やさしい* Delphi質問スレ Ver.5
http://pc.2ch.net/test/read.cgi/tech/1017803412/

つづく >>2-3 あたり
2デフォルトの名無しさん:02/04/08 05:35
■Delphi関連スレ
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi/tech/1013298748/
★クライアントサイド最強の Delphi に物申す★
http://pc.2ch.net/test/read.cgi/tech/1001442200/
Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/

■過去スレ
Delphi相談室その3
http://pc.2ch.net/test/read.cgi/tech/1010153466/
Delphi相談室その2
http://pc.2ch.net/tech/kako/995/995950803.html
Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html
3デフォルトの名無しさん:02/04/08 05:59
前スレの979が気になる・・・
オブジェクトインターフェースの事は過去ログを見るべし。
Delphi-MLも。
54:02/04/08 06:06
って、そういう事じゃない?
>>1
おつかれー。
ぼくの肛門もDelphiで作られています。
>5
そういう事だと思われ
9デフォルトの名無しさん:02/04/08 12:42
   @@@@   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (゜д゜@ < あらやだ。新スレおつかれさま。
   ┳⊂ )   \__________
  [[[[|凵ノ⊃
   ◎U□◎ =3 キコキコキコ
10Delフサギコ ◆zE1iiRdQ :02/04/08 22:44
I番げっとー!!!!
 ̄ ̄ ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      \ ∧,,∧
        ミ゚Д゚,,∩
       ⊂;゙   ,ミ ←
 ̄  ̄   ミ゙゙_  ミ〜 ト  ̄  ̄  ̄
       ∪゙ヽ ミ   オ
       /  ∪  \
  /       :    オ
     /    || .   ォ  \
     /     | :   ォ  \
    /       .
           | .   ォ
11デフォルトの名無しさん:02/04/08 23:26
       ,,- ,,
   ∧∧ミ,, ,;;
   ( ゚ー゚)ノ)"  アゲ
   / ,,- ,,|    
   `ミ   ;
    `''''"
Delphiスレをひとつにまとめろボケ!!
13上品に:02/04/09 00:15
Delphiスレをひとつにまとめなさって!!よくって!?
Ð ë ĺ þ ĥ ïスレをひとつにまつめるざぁマス。
まつめる て・・・
Ð ë á t h ってきます。
       ,,- ,,
      ミ,, ,;;
    ( ゚ー゚)ノ)"  ハゲ
   / ,,- ,,| 
   `ミ   ;
    `''''"
これが正しい「Delphi」の発音だ!
http://dictionary2.goo.ne.jp/ej/voice/D/02030167.wav
18デフォルトの名無しさん:02/04/09 01:17
でぅふぉぁいぃ
19デフォルトの名無しさん:02/04/09 09:18
フォームが表示された直後に発生するイベントって何でしょう?OnActivete?
表示された直後にフォームのボタンを押したいけどOnshowやOnCreateじゃ駄目だった。
>>19フォームが表示されるのが OnPaintなんだから、そこでフラグをたてて
 次に呼ばれたイベントで処理したらいいんじゃない?
21デフォルトの名無しさん:02/04/09 12:09
ageで質問させていただきます。

DelphiPersonal6.0にて、Winアプリに取り組んでいます。
他のコマンドライン対応アプリを動かしたい場合、どうすればよいのでしょう?
ShellExecute
>>22
感謝します。
俺は CreateProcessが好きだな 手間はかかるけど

With STARTUPINFO Do
Begin
cb := SizeOf(STARTUPINFO); {構造体のサイス゛をセット}
lpReserved := nil; {以外は初期化}
lpDesktop := nil;
lpTitle := nil;
dwFlags := 0;
cbReserved2 := 0;
lpReserved2 := nil;
dwysize := 0;
end;

 CreateProcess(Nil, {実行するフ゜ロク゛ラム名(通常は次のハ゜ラメータを使用)}
        PCHAR(exename+' '+comstr), {実行フ゜ロク゛ラムのコマント゛ライン}
        Nil, {プロセスのセキュリティ属性}
        Nil, {スレッドのセキュリティ属性}
        False, {呼び出し側プロセスからのハンドルの継承}
        0, {プロセスの作成を制御する追加フラグ}
        Nil, {環境ブロックを指すポインタ}
        PChar(GetCurrentDir) , {新しいプロセスのカレントパス}
        STARTUPINFO, {ウィンドウの登録内容}
        PROCESSINFO); {プロセスとその第1スレッドに関する情報}

25>>24:02/04/09 20:37
CloseHandleを忘れずに
26Delphi初心者:02/04/09 23:01
今日初めてDelphi落としたんだけど、
誰が1から学べるサイト教えてくらさい。
他の言語はVBとかは多少いじれますが、
全然大したことないので、
本当に1から学べるサイトがいいです。
ヤフで検索したけど、あんまりわかりやすいところがなくて…
ヨロシコです。
27素数2:02/04/09 23:15
http://home.onestop.net/mineko/index2.html
VBいじれるならここでイイ。
28回し者じゃないのヨ 本当アルヨ:02/04/10 00:00
>>26
「デルファイの魔法」ってとこが、オレは一番分かりやすかったな。
つーか、標準コンポーネント周りだけど。
後は…。みんな似たりよったりかなぁ?検索で「初心者」って入れてみれば?
オレ的には標準コンポーネントいじりから入って覚えていったけど。
つーか、「魔法」って何だ?
>>28
まほう【魔法】
人間わざとは思えない,不思議なことを行う術。魔術。妖術。
(´-`)。o ○ (正直、>>29のレスはどうだろう?)
>>26
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
ここから自分に会うトコを探しなさい。
32Delphi初心者:02/04/10 18:22
 >>27
そこは既にヤフ経由で見ましたけど、よくわかりませんでした。

>>28
今度ぐぐる検索でもして、わかりやすかったら参考にさせてもらいます。

 >>31
おっ!これは(・∀・)イイ!

またわからないことあったら、来るので、初心者ですがよろしくね。
33デフォルトの名無しさん:02/04/10 23:21
(´-`)。o ○ (あそこでも分からないって…(絶句)。それと「初心者」て
言葉は恥だし、質問する時も免罪符にすると叩かれるの分かってるのかなぁ…)
34Delphi初心者:02/04/11 00:54
 >>33
恥かなぁ?
知ったかよりマシだろぉ…
>>34
33じゃないけど、
俺も「初心者」って言葉は好きになれない。
いちいち強調する必要は無いよ。
質問の内容見ればわかるし、表記したことで無礼講が許されるわけでもないし。

そういう俺もつい最近ゆっくり始め出したんだけど、似たような境遇だと余計気になるもんです。
オールドスタイルのBASICから約10年ぶりなもので、浦島太郎状態。
GOSUB〜RETURNがねぇ。行番号もねぇ。使いづらいなぁ
お互いがんばりましょう。
>>Delphi初心者
俺がついさっき作ったサイト
超初心者でもわかるように解説していくつもり。
まだつくりかけだけど。
http://www.geocities.co.jp/SiliconValley-Oakland/6548/index2.html

ちなみにブラウザしか作ってないから、それ以外の話は当分しないけど。

初心者って言葉は嫌いな人もいるのか…
俺は別に気にならないから自分も使ってしまっている…
気を付けよう…
37486:02/04/11 02:23
>36
おう、何か分かりやすいかも。
更新、よろしくおながいします。
38Delphi初心者:02/04/11 07:30
 >>35
そういうものなんだ…
ここは詳しい人ばかりだから、謙譲の意を込めての「初心者」だったんだけどね。
それでは、次からこのハンドルやめます。

 >>36
ブラウザは結構作りたかったものの一つなので、試しにやってみようかな。
どうもありがとう。
 >>36
ブラウザできたー!
感動します。
ありがとうございました。m(_ _)m
4036:02/04/11 16:11
反響あって嬉しいです。
更新頑張るです。
これはPersonal版なんですか?
ActiveXコントロール使えばPersonar版でもブラウザつくれるんか〜
なんかブラウザの仕組みがチョト見えたようでウレシヨ。
4236:02/04/11 19:00
>>41
Personal版です。
そう言ってもらえるとうれしいです。
次は例外処理をして、もう少し機能を追加します。
if IntA mod IntB = 0 then
begin
処理;
end;

というプログラムをすると、一行目に「この型には指定した演算子は使えません」
と出るのですが、どこが問題なのでしょうか?(泣)
演算子の優先順位 は 比較が低いからそれでいいと思うけど カッコがあった方が見やすいな

エラーな原因は判らないけど IntA IntB の型が違うんじゃないの?
宣言を見せて
45デフォルトの名無しさん:02/04/11 23:00
本日発見!
DelphiのIDEって 拡張子が .C なら ちゃんとCの色分けしてくれるんだ
>>36
(*゚ー゚)b グッ!よいね!
要するに>>33の言いたいことは「初心者」と書けば何でも許されると言う
考え方が良くないと言うだけであって

自分も匿名掲示板なのにわざわざ誰だか解るように名前入れるのは
(その必要があるわけでないのならば)なんだかなぁと思いますね。
48ベテランSE:02/04/11 23:38
あのぉ〜・・・フォームにボタン置いた後どうすればいいんですか?
ベテランSEなら自分で何とかできないとリストラ対象ですね
50 :02/04/11 23:51
>>36
早速、ブラウザ作ってみました。
こんな簡単にできちゃうんだと、ちょっとびっくり。
実際に動作する物ができると楽しい〜。
51デフォルトの名無しさん:02/04/12 00:02
あーゆー「delphiで作ってる時の画面キャプ」ってのは、
ボーランドさんに文句言われないのかな?
52素数2:02/04/12 00:06
>>51 まさか言われないでしょ。宣伝してくれてるわけだし。
文句つけられたら2chでスレ立てれば良いわけだし。
被害額が算定できないと訴えられないし。

と無責任に発言。
次は「javascriptを無視出来る方法」とかその他いろいろof/offする方法とか
安易に聞いたりしないだろうな?
5453:02/04/12 00:22
on/offだ。
of/offはないだろうな。
5655:02/04/12 00:23
しまったー!
あーゆー「はじめの一歩」ってのは、
講談社さんに文句言われないのかな?
58素数2:02/04/12 00:29
だるまさんがころんだ を作った人が出てくれば訴えられるかも。
 >>44
どこが違うかわからなかったので、最初から作り直したらちょっとの修正でできたよぉ
すいません。

 >>47
 >要するに>>33の言いたいことは「初心者」と書けば何でも許されると言う
 >考え方が良くないと言うだけであって
それはわかったって。

 >自分も匿名掲示板なのにわざわざ誰だか解るように名前入れるのは
 >(その必要があるわけでないのならば)なんだかなぁと思いますね。
漏れはきっちり話がしたいスレには時々捨てハンドル使うけど。
あとで検索でその周辺のレス見たりできるし、そのために必要と言えば必要。
ブラクラ等を事前に検出して無効化したいのですが、
表示前にテキストをいじれますか?
(´-`)。o ○ (だから「○○出来ますか」ってのやめれって。某スレ逝って
頭冷やしる!)
自分でレンダリングするの?
じゃ、表示前にテキストをいじる方法を教えて下さい。
でいいの?
(´-`)。o ○ (別に叩くワケじゃないけど、「アレコレやってみて
これで合ってる?」って方向すら行かないワケ?検索してみたけどとか)
65素数2:02/04/12 01:04
Indy の get で出来そうだなー と思う。
出来るんならやり方を調べようと思った場合はどうするの?
VBやれ。
>>63
ブラウズする前にダウンロードして
自分の思い通りになるよう編集後
ローカルに保存してその保存した
ファイルをブラウズするとか・・・

個人的なガイドラインとしては、教えてに対して
それなりのやり方までは書いて良いと思う。
その後は自分でなんとかする、ということで・・・
教えてに対していきなりソース貼るやつは嫌い
(あくまで個人的にね)
IndyとIEコンポーネントを組み合わせて使えるの?
Indyのみで表示するのは大変じゃない?
つーか「どうすんの?」=「ソースキボンヌ」だと思う。
>68
キャッシュをとっているから、そういうやり方でも問題ないと思うけど、
思うけど!
7236:02/04/12 08:29
>36,50
ありがとう!
>51
>あーゆー「delphiで作ってる時の画面キャプ」ってのは、
>ボーランドさんに文句言われないのかな?
なんだか、ちょっと不安になってきた…
開設三日目にして、早くも閉鎖の予感…
別に著作権が絡むような「絵」じゃないでしょ。
たとえ、そうだとしても 著作権で認められている 引用の範囲
TVゲームじゃないんだからさ
7436:02/04/12 08:48
>>73
そうだよね!大丈夫だよね!
そう言ってもらって、ちょっと安心です。
Delphiは芸術であり、映画なので起動画面のコピーは違法なのです。

Delphiは美しい、美しいんですよ。
76デフォルトの名無しさん:02/04/12 11:00
関数内関数の事で教えて下さい

帰り値が動的配列な関数で 要素に追加する AddDataという関数内手続きを書きました

function func : TIntArray;

procedure AddData(dt:Integer);
var n:Integer;
begin
n:=Length(Result);
SetLength(Result,n+1);
Result[n]:=dt;
end;
・・・ 略 ・・・

これはエラーにならず期待した動作をします。
さらに、AddData内部で使用していた追加データの位置 n を返すように
function AddData(dt:Integer):Integer;
 と変更しようとして困ってしまいました。
Resultは 今度は自分の帰り値を指してしまいます。
といって pascal形式の関数名を使うと関数呼び出しになってしまいます。

これはどう解決すればいい?
>>76
function AddData(var func_result: TIntArray; dt:Integer): Integer;
とでもして受け渡したら?
スマートじゃないといっても、親のresultを直接触るほうが気持ち悪いよ。
7876:02/04/12 11:40
>>77 さん レスありがとうございます

そうですね。他に方法ないなら関数内関数やめて そういう仕様で
外に出した方がスッキリしますね
>>76
いっそのことクラスにしちゃうとかはどうでしょう.
type
TIntList = class(TPersistent)
private
FInnerArray: array of integer;
function GetCount: integer;
procedure SetCount(Value: integer);
function GetNumber(index: integer): integer;
procedure SetNumber(index: integer; Value: integer);
public
procedure Assign(Source: TPersistent); override;
procedure Clear;
function Add(Value: integer): integer;
property Number[index: integer]: integer read GetNumber write SetNumber; default;
property Count: integer read GetCount write SetCount;
end;
(中略)
function TIntList.Add(Value: integer): integer;
begin
Count := Count + 1;
result := High(FInnerArray);
Number[result] := Value;
end;
procedure TIntList.Assign(Source: TPersistent);
begin
if Source is TIntList then
FInnerArray := (Source as TIntList).FInnerArray
else
inherited;
end;
procedure TIntList.Clear;
begin
Count := 0;
end;
function TIntList.GetCount: integer;
begin
result := Length(FInnerArray);
end;
function TIntList.GetNumber(index: integer): integer;
begin
result := FInnerArray[index];
end;
procedure TIntList.SetCount(Value: integer);
begin
SetLength(FInnerArray, Value);
end;
procedure TIntList.SetNumber(index, Value: integer);
begin
FInnerArray[index] := Value;
end;
上の例では動的配列を隠してますけど
配列の形で使いたい場合は
FInnerArray を IntArray とでも改名して public に移すといいと思います.
>>35
慣れるまで大変だと思いますが大丈夫です.
少なくとも私の知る範囲では
行番号のない言語への移行で
行番号が無いという理由で挫折した方というのは
聞いたことがありません.
8176:02/04/12 13:15
>>79 名無しヘタぐらま さんレスありがとうございます

そうですね。クラスにするのも方法だと思います。
一度作ってインクルードファイルにしてやればIntegerだけでなく汎用に使える
テンプレートもどきクラスになるかもとか思ったりもしました。

でも >>75の関数内関数のコードだとResultの型を書かなくてもいいので
コピペで使う時は便利なんですよね。
82デフォルトの名無しさん:02/04/13 11:33
楽しいなあ クラス使うとこんなふうに書けるんだ

 with TSaveDialog.Create(self) do try
     InitialDir:=GetCurrentDir;
     Filter :='BIN|*.bin';
     DefaultExt:='BIN';
     if execute then
      with TFileStream.Create(FileName,fmCreate) do try
      Write(bin[0],Sizeof(bin[0])*Length(bin));
      finally Free;End;
 finally free;end;
どの辺が楽しいのだろう・・・・・。
84デフォルトの名無しさん:02/04/13 21:21
これ コピペして ちょっと修正するだけでいい所 >>83
>>82
変数を宣言せずにインスタンスを作成してすぐに破棄するってやつでしょ

Pascalの流儀ではないね・・・あんまりいい習慣じゃないかも
86デフォルトの名無しさん:02/04/14 12:35
>>82
毎回毎回設定がウインドウの設定が保存されないダイアログの出来上がりですか。
87Delフサギコ ◆zE1iiRdQ :02/04/14 22:56
     ∧,,∧   / ̄ ̄ ̄ ̄ ̄
     ミ,,゚Д゚彡< 名古屋出張で味噌煮込みウドソ食った
     ./つ=||||  \_____
   〜ミ \_/

WithのCreateは逆に使いにくいと思うんだけどな。
88デフォルトの名無しさん:02/04/15 08:38
>>86
 保存したければそのプロパティへの代入を追加すればいいだけでは?

>>87 
 デバックとかは不便だけど、パターン化してコピペする時は便利
>保存したければそのプロパティへの代入を追加すればいいだけでは?
なら関数使えば?
90デフォルトの名無しさん:02/04/15 11:21
>>89
 確かにローカル関数にして そこでローカル変数確保してもいいけど
 コピペを前方にしなくちゃいけないでしょ?

 入れたい場所にペーストして修正するだけでいいから気に入ってるんだけど?
あっそ。
92デフォルトの名無しさん:02/04/15 17:57
Google Web APIサービスをDelphiで使ってみた人っていない?
XMLベースの技術ならなんとかなるんじゃないかと思うんだけど。
93デフォルトの名無しさん:02/04/15 17:59
アプリケーションの多重起動を防止するにはどうしたらいいのですか?
94チビ:02/04/15 18:09
>>93
検索してみれや。
9693:02/04/15 18:23
>>95
ありがとうございます。

>>94
ごめんなさい。
>>92 でも、JAVA か C#でサンプルがあるから、ちょっと触る程度なら そっちでやるんじゃない?
>>97
そこを敢えてやるのがDel厨の使命ではないか。
>>98
じゃあ、お前におながいします。
Google Web APIサービス、オレもナニゲに気になってた。
>>98
お前にウォンチュ!ことり。
for文について教えてください。

Inta, Intb := 0;

for I := 1 to 10 do
Intb := Inta + 1;

↑を実行すると僕の予想では0に1を加えるというのを10回やるということで、Intbの値は10と予想しました。
しかし、実際実行してみたら、Intbの値は2でした。
僕の考え方はどこが間違えていたのでしょうか?(泣
102ですが、それをやりたいなら、

for I := 1 to 10 do
Inta = Inta + 1

でなければなりませんね…
冷静にならないといけませんね、漏れは・・・
申し訳っ!
104蒼いヒゲ:02/04/16 07:14
Delphiスレにマサルさんヲタ(orファソ?)が居る模様


>>98
漏れも気になってるのでおながいします。
105デフォルトの名無しさん:02/04/17 00:35
ありゃ? TmenuItem のショートカットに 数字のみって入れられないんですか?
解決策あったら教えてください。

ボタン3つをそれぞれ 1 2 3 で押したいんですができなそうなので
TmenuItemに関連づけて、そっちのショートカットに「1」 とかわりあててみたんですが・・・
106Rubyist:02/04/17 00:36
あまり 言葉わからないんだ 言葉教えて?もっと 近くに来て… くっ くっ 臭い 息があたる ぐらいになぁぁぁ
107デフォルトの名無しさん:02/04/17 00:42
>>105
数字入れれたし、ショートカットも効いてるよ。
108106:02/04/17 00:43
誤爆スマソ
109Rubyist:02/04/17 00:44
こちらへ 来いよ・・・
今 来いよ・・・
すぐ来いよぉぉぉぉ!
110109:02/04/17 00:44
誤爆スマソ
111Rubyist:02/04/17 00:45
夜って 不安だよな
暗くって さみしくってな
112Rubyist:02/04/17 00:51
           ρ(´-`ρ)
      ★Ruby★
(σ´ー`)σ
ここは大冒険スレですか?
114105:02/04/17 01:00
>>107
ありがとうございました。もう一度確かめました。
数字はOKでしたがテンキーだと効かなかったです。
やっぱりテンキーとキーボードの最上段の数字は違う物なんでしょうか。
115112:02/04/17 01:01
どうやら漏れが撃退したようだ。
経験値3取得・・・。
116デフォルトの名無しさん:02/04/17 01:07
>>114
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=29
↑ここのやりかたでテンキーもできたよ。
117デフォルトの名無しさん:02/04/17 01:08
あ、でも同じキーとして扱いたいのか。
それはわかんないや。
あ、でもMenuItem増やせばいいか。
120105:02/04/17 01:26
>>116 ・・・Tips見るの忘れてた・・・みなさんありがとう、ごめんなさいでした。
121デフォルトの名無しさん:02/04/17 02:08
根本的な質問してもよろしいでしょうか・・・

Delphi5 の Professional をインストールしたんですが、
Standard タブ上に Framse しか無いんですが・・・
どうしたら増やせるんでしょうか?
なんか普通はコマンドボタンとかあるようなんですが・・・
なんかワラタ
123121:02/04/17 02:22
いや、笑わないで・・・真剣なんです。
今、Delphi起動してハラハラドキドキしながら待ってるんですけど・・・
こんなアフォをどうかお助けを・・・
バチがあたったんだよ。
125121:02/04/17 02:27
な、何のバチなんですか・・・
126デフォルトの名無しさん:02/04/17 02:46
再インストールしてみれば?
Delphi6のPersonalでも16個載ってるのにね。
がんばれ!Frameだけでいいアプリ作れよっ
129121:02/04/17 03:21
>>126
できました!ありがとうございました!

最初の再インストールはエラーメッセージが大量に出て失敗しましたが
二回目の成功していっぱいコントロールが出てきました!
これから Delphi 頑張ります!
おぼろげながら、字のような物が見えます…。
最初が…  「V」…。Vという字に見えます…。
次は… ええと… C? いいえ… B…Bかしら………
「B」ね! Bに見えます。
「VB」…。 これは何の意味があるのゴルバチョフ!
作ろうとしてるアプリではないウィンドウで範囲指定して、
作ったアプリでButtonをクリックすると
あるString型の変数の値が最初に範囲指定した部分になるようにしたいのですが、
どうすればよいでしょうか?
>>131 霊界と通信中ですか? 人間には解読出来ません
133131:02/04/17 08:05
例えば、Wordで作った文章のある部分を範囲指定してから、Buttonをクリックすると、
あるString型の変数の値がWordで範囲指定した文字になる
というものです。

これで解読できるでしょうか?
134132:02/04/17 08:19
解読出来ました。

 それがメモ帳やEditBoxコントロールを使ったものであれば
 Windowsハンドルをなんとか取得してメッセージを投げれば
 制御可能と思いますが、Wordのようなアプリの文章だと難
 しいと思います。

ただ、範囲指定した範囲と置換するなら、そのアプリが挿入
モードになっているなら、キーボードから文字が入力された
事にすれば大抵は最に送った文字と置換された後、次に
送った文字が挿入されてゆきます。

VBでいえばSendKey相当の処理ですね
135131:02/04/17 09:07
難しいですか・・・
IEやらWordやらの補助的ソフトを作りろうとしてたのですが・・・
どうもありがとう

そのような事って、Delphiじゃない言語だったらできたりするんですか?
136132:02/04/17 09:20
対象を明確にすれば難しくはないです。 一般的にすれば難しくなるだけです >>135
>>136が良いこと言った!!
138131:02/04/17 10:21
ありがとうございます。

それと基本的なことで申し訳無いのですが、
ListBoxコンポーネントで何番目が選択されているかによって処理を変えたいのですが、
どうしたら良いでしょうか?

Integer変数にListBox1.ItemIndexを代入して何番目の項目が選択されてるか取得するというのは学習済みです。
で、if 変数 = 1 then という風に書いたら無理だったのですが・・・。
if Listbox1.itemindex= 1 then begin end; // で直接やっちゃえ
> if 変数 = 1 then
これでも出来ると思うのだけれど
ちなみに0オリジンだから 最初の項目は listbox1.itemindex=0 ね 2番目が1
140131:02/04/17 11:32
ありがとうございます。
何故か一番上のリストを選択した時に処理が行われないと思ったら、一番上は0になるのですね。

それと、この様な処理はcase文の方が楽でしたね、と今頃気づきました(泣
>>135
Delphiでできなければ、他の言語でもあなたには出来ないと思いますよ。
135の処理ってクリップボード使えばワードにCtrl+Vを送るだけで出来ないですかね?
143デフォルトの名無しさん:02/04/17 12:53
>>142 ワードが相手ならそれでいいんじゃないの?
>>100
var
 s : GoogleSearchPort;
 r : GoogleSearchResult;
begin
 memo1.Lines.Clear;
 s := HTTPRIO1 as GoogleSearchPort;
 r := s.doGoogleSearch('xxxxxxxxx', WideString(Edit1.Text), 0, 10, False, '', False, '', 'utf8', 'utf8');
 memo1.lines.Append('検索結果 = ' + IntToStr(r.estimatedTotalResultsCount) + ' 件');
これだけで検索できる
でも1日1000件までらしい
145Delフサギコ ◆zE1iiRdQ :02/04/17 21:02
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡< >>116>>114
  UU""" U U   \_______________
procedure TForm1.Button3Click(Sender: TObject);
begin
 TenKeyAction1.ShortCut := VK_NUMPAD1;
 TenKeyAction2.ShortCut := VK_NUMPAD2;
 NormalKeyAction1.ShortCut := Word('1');
 NormalKeyAction2.ShortCut := Word('2');
end;

VK_ADD = 107;//=$6Bなんですね


>>100
もしかしてすごいことやってらっさる?
Editを2つ作り、Buttonを押すとEditに基づいて処理をする様なコードを書いたのですが、
実行してみると、Editに何も入力しないままButtonを押すと、
「ソースファイルがみつかりません」というエラーが出ます。
このエラーはどうやって回避すれば良いのですか?

ちなみに、

if (Edit1.Text = '') or (Edit2.Text = '') then
ShowMessage('値が入力されていません')
else
(処理)

と入力を促すメッセージを表示させようとしましたが、
同様のエラーが出ました。
>>146 パーソナルですね? ならばとりあえずは
http://www.borland.co.jp/download/delphi.html
でUpdatePack1をあてて下さい。

それから原因を調べるには、その前の行を見せないと
>>145
全然すごくないです
ウイザードが勝手に定義Unit作ってくれるんで
後はフォームに数行書けばOK
難点はWebServiceがMSのDLLに強く依存しているので
ほかのPCでは動かないこともおおいです
 >>147
ありがとうございます。
今落としてます。
その前の行は

IntBunshi[1] := StrToInt(Edit1.Text);
IntBunbo[1] := StrToInt(Edit2.Text);

となっております。
おっとっと。
UpdatePack1の説明を見ると、
「製品版 Delphi 6(無償ダウンロードサービスで提供される Delphi 6 Personal を含む)をお使いの方は、Update Pack 2 をご利用ください。 」
とあるのですが、1の方で良いのですか?
漏れのは無償ダウンロードサービスで提供されるDelphi 6 Personalにあたるんですが…

http://www.borland.co.jp/delphi/del6up.html
>>149
直接の原因は StrToInt( '' ) が例外を出す事にあります
 Valを使って数字かどうか事前に判定するべきでしょう。


>>150
 指示通りにすればいいと思いますが?
>>146
try
 IntBunshi[1] := StrToInt(Edit1.Text);
 IntBunbo[1] := StrToInt(Edit2.Text);
 (処理)
except
 on E:Exception do ShowMessage(E.Message);
end;
としませう。
>>146に書かれた何も入力されてないエラーも含め、全て例外が面倒をみてくれます。
>>152 ただしその場合は、例外は出るので デバックRUNすると一旦停止してしまう
154デフォルトの名無しさん:02/04/18 23:38
ミ゚ω゚彡
155デフォルトの名無しさん:02/04/19 04:45
>>150
その問題を修正するには Update1 で十分。ということ。
Update2 を当てればより多くの問題が修正される。
なお Update2 は Update1 を含んでいるので、両方落とす必要はない。
回線が太ければ両方落としてもよいけどね。
フサギコさんはVBに移ったのですね。
 >>151 >>152 >>153 >>155
どうもありがとうです。

 >>151-153
例外っていうのが、よくわからないのですが、とりあえず>>152の様にやってみます。

 >>155
Air H"なので、Update1だけにしときまふ。
例外が出るのが嫌なら val を使って

var dmy1,dmy2:Integer;
・・・

val(Edit1.Text,IntBunshi[1],dmy1);
val(Edit2.Text,IntBunshi[2],dmy2);
if(dmy1<>0) or (dmy2<>0) then ShowMessage(E.Message);

と書く事も出来るよ。

ただし 動作は少し違う。
 Edit1でエラーでも Edit2の数字が代入されてしまう
 >>158
何故かE.MessageのEが未定義の識別子として怒られてしまうのですが。(苦笑
多分打ち間違えてないはず…???

Val() ってどうやって使うんですか?
>>151によれば数字かどうか判定するらしいですが、ヘルプを見てもサパーリわからなかったので。。。
>>159 ああ ゴメン
val(Edit1.Text,IntBunshi[1],dmy1);
val(Edit2.Text,IntBunshi[2],dmy2);
if(dmy1<>0) or (dmy2<>0) then ShowMessage('値が入力されていません') ;

val は数字なら 数字にして代入してくれて
数字でないなら 何文字目が数字でないと思ったかを3番目の引数で返してくれる

で3番目の引数が0かどうか見れば数字だったかどうかがわかるという事
>>159
前者
Exception(ExceptObject).Message
>>36さんのページを見てブラウザを作ってみようと
思うのですが、コンポーネントパネルのところに
Win32とか無いんです(激泣
無償版を落としたんですけどどうしてなんでしょう?
Standardはあるのですが、中にはFrameだけです。
それ以外のコンポーネントっていうのがありません。

おわかりになる方どうか教えてくださいです。
>>162 悩む前に再インストール
あ、HKEY_USERS\Software\Borland\Delphi\6.0 の内容を控えておいた方がいいよ

と書いて何の事か判らなければ、無視してね
>>163
再インストールしたら出てきました(あぅぅ
indyというのをインストールした際におかしく
なってしまったのかもしれないです。
今度は慎重にやってみます。
ありがとうございました。

>>164
すみません。
見る前にアンインストールしちゃってました。
今更遅いですよね?

お二方、厨な質問にお答え頂けてありがとうございました。
逝ってよし!と言われずに教えてもらえてよかったです。
166デフォルトの名無しさん:02/04/19 12:11
 >>160
キタ━━(´D`)━( ´D)━(  ´)━(  )━(´  )━(D` )━(´D`)━━!!!!!
その方法でできました。
感謝感謝!
Val の用法もよくわかりました。

でも、
Edit1.Text := Bunshi[1];
Edit2.Text := Bunbo[1];

if (Edit1.Text1 = '') or (Edit2.Text = '') then
ShowMessage('');

の場合にエラーが出るのが理解できていないのですが、
↑はどうして悪いのですか?
例外と言われてますが、何の例外なんですか?
>>167ですが、さきほど作ったものを、一つの実行ファイルとしてまとめてみようと思っています。
本によればInstallShield Express Borland Limited Japanese Editionという物を使うみたいなんですが、
それが見当たりません。
それは元々Delphiに付属しているものなのでしょうか?
付属しているとしたら、どこにあるんでしょうか?
>>168 ええと どう考えてもその段階でそれが必要になるとは思えないのですが

どれとどれをまとめようと思ったのですか?
 >>169
別に必要じゃないんだけど、試してみようと思って。
.pasとか.dfmとかあるでしょ?
それを一つにまとめられるんですよね???
171パソナラー:02/04/19 23:37
(´-`)。o ○ (パソナルにインストシールドは無いよーん、と言ってみるか…)
激しく勘違いしてるね
>>170 .pas も .dfm もコンパイル前のソースであって・・・・・えい なんて説明すればいいんだ
>>170
もうすでにどこかに*.exeが出来てるはず。それを配布するだけ。
ただし、初心者は*.exeがどこにできるかわからんという罠。
175デフォルトの名無しさん:02/04/20 00:26
>>170
http://www.geocities.co.jp/SiliconValley-Oakland/6548/
Lesson8参照
と再び自分のサイトを晒してみるテスト
 >>171-175
どうもありがとう!
実行ファイル、見つかりました。
自動で作成されてるとは…
知らない間にそのアイコン見てました。(苦笑

 >>175
おっ!
サイトがパワーアップしてる!
タブブラウザかぁ…( ̄ー+ ̄)
177素数2:02/04/20 01:22
>>175 6proだとMicrosoft Internet Controlsが既にインストールされてるっぽいのでその旨書いて置いてくれると・・・
インストールできねー と悩んでしまったら internetタブに既に在った。
あと SampleIconフォルダ って何処にあるのでしょうか。検索掛けても見つからなかった・・・
>>177
ネタだろ。ネタだと言ってくれ。

Lesson6をもう一度、目を皿にして見直せ。
おー今初めて見たけど、>>175氏のサイト良いね。
180デフォルトの名無しさん:02/04/20 02:08
おいおい、>>175 のページ理解りやすいですよ!
マジでマジで。
表彰したくなっちゃいましたよ。

んじゃ。
181素数2:02/04/20 03:00
>>178 済まない、本気で解らないや・・・
182素数2:02/04/20 03:07
と思ったら在りました<sampleIcon。
更新される前のキャッシュを見ていました・・・
>>175
(゚Д゚)ウマー
175氏、とっつきやすくてよかったよ〜。
(´-`)。oO(…175氏、塩は使わない方が…)

Yahoo!Geocitiesの新ガイドラインを考える
http://kaba.2ch.net/test/read.cgi/news2/1003331784/l50
(ほとんど保守書き込みな罠... 過去スレログとか読んだほうが(・∀・)イイ!です)
>>175
いいっすねえ。次はゲーム作り編とかやってほしいな。
187175:02/04/20 20:38
おっ、好感触♥
俺自身素人なので、ひょっとしたら嘘教えているかもしれないという罠…

>>177
6proうらやますぃ…
じゃなくて、わかりました。書き足しておきます。

>>185
全然知らなかった…
もしジオでソフト公開したらどうなるんだろうか…
教えてくれてありがとです。
移転、検討します。

>>186
あっ、俺もゲーム編見てみたい。
でも俺はブラウザしか作ったことないので、まだ無理です…
use ComObj;
objExcel := CreateOleObject('Excel.Application');
with objExcel do begin

with objExcel do beginで
レコード、オブジェクトまたはクラスのいずれかが必要です
と怒られてしまうんですが、こういう使い方はダメ?

自分で変数を用意すれ。
でもDelはゲーム制作は効率悪いかもねえ
どこらへんが効率悪いんですか?
さぁ?
DirectX絡み?
VB絡み?
処理速度絡み?
>175氏
自分はDelじゃなくてBCBなんだけど、参考になったよ。
これからも更新頑張ってほしい。

サーバスペースだけど、自分鯖持ちだから用意できるっす。
で、連絡しようと思ったら連絡先が書いてない罠・・。
197175:02/04/22 18:56
>>196
そういえば、メールアドレスとか書いてなかったっけ。
トップページに書いておきます。
ホントに貸してもらえるのなら、とても有り難いです。
でも、もし、「あれ?♥とか書いちゃって、こいつ女?」とか下心が有るのなら、アレです。
がっかりさせてごめんなさい。ちゃんとブランブランとした感じのが付いてます。
ついでに男食の趣味も無いです。ゴメンナサイ。
しかもヒッキーです。
それでもよければ、おながいします。
と、真面目にお願いしてレスが返ってこなかったら悲しいから、
違う角度から攻めてみたとか言ってみるテスト。
198デフォルトの名無しさん:02/04/22 23:51
(*゚ー゚)b ぐっ!
( -_-)=○)'Д') グ゙ッ!

200196:02/04/23 00:44
>197
>下心が有るのなら、アレです。
そんなんじゃないから大丈夫っすよーw
ついでに、男色の趣味ももちろんありません。

メールアドレス見つけ次第メールしますね。
201Delフサギコ ◆zE1iiRdQ :02/04/24 09:36
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < しつもんっす。
  UU"""" U U    \_______________

FileExists('A:\')とか'A:'と入ると
> ---------------------------
> Sendtoinformation: SendToInformation.exe - ディスクがありません
> ---------------------------
> ドライブにディスクがありません。 ディスクをドライブ A: に挿入してください。
> ---------------------------
> キャンセル 再実行(T) 続行(C)
> ---------------------------
このような表示がされて迷惑なんで、、表示させたくないのですが
何か方法ありますか?
DirectoryExistsもダメだったです。

ディスクが入ってなかったらFileExistsにはFalseを返してホスイ

環境依存でしょうか?
SetErrorMode(SEM_NOOPENFILEERRORBOX);
かな。
>>202 が嫌なら
GetVolumeInformation の帰り値で判定するとか
204Delフサギコ ◆zE1iiRdQ :02/04/24 10:02
      ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ミ*゚Д゚彡<  サンクスコ!!>>202さん
      ミ⊃⊃   \
    〜ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ⊂'`J    ピョン
      ||
      ||
      ωωω
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
とりあえず、こっちで解決しました。
 SetErrorMode(SEM_FAILCRITICALERRORS);
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=042840

このエラーモードってアプリ内で有効なんだろか?
ErrorModeを元のままにしておきたかったら
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=042823
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=042822
ここが参考になったです。


Windows.pasには
const
 SEM_FAILCRITICALERRORS = 1;
 {$EXTERNALSYM SEM_FAILCRITICALERRORS}
 SEM_NOGPFAULTERRORBOX = 2;
 {$EXTERNALSYM SEM_NOGPFAULTERRORBOX}
 SEM_NOALIGNMENTFAULTEXCEPT = 4;
 {$EXTERNALSYM SEM_NOALIGNMENTFAULTEXCEPT}
 SEM_NOOPENFILEERRORBOX = $8000;
 {$EXTERNALSYM SEM_NOOPENFILEERRORBOX}
こんな風に定義されてるっすね。

>>203さん
GetVolumeInformation 調べてみます。
ネームプレース
あら、おかげで俺もやりたい事のやり方がわかった。
ドライブ一覧の取得をしたかったんだけど、
GetLogicalDriveStrings
で出来るっぽい事がわかった。

>>201-204
サンクスコ!
c++とdelphiの型や構文の対応表が載っているようなページがどこかにあったと思うのですが、
URLを忘れてしまいました。誰か知ってる方がいたら教えて欲しいのですが。
209Delフサギコ ◆zE1iiRdQ :02/04/24 21:58
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
追加しときました。

        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  < パクリぺーじは元ファイルに直リン。
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻ 堂々とパクるのはいかがなものかと。
210Delフサギコ ◆zE1iiRdQ :02/04/24 22:23
それにしても、>>201の現象が起きるマシンと
起きないマシンがあって...同じ、Delphi6コンパイルのWin2kProだが。。。

   ∧,,∧    /
  ミ,,゚Д゚彡 <  どういう環境依存なんだろ?
   ミつ つ゛  \
 @ミ  ミ      
   ∪''∪     ま。いっか。

んで、ERRORMODEは
 SEM_FAILCRITICALERRORS = 1;
 SEM_NOOPENFILEERRORBOX = $8000;
どっちがええんや?
クラスの構成要素に、フィールド・メソッド・プロパティと3つあるそうですが、
フィールドは何となくわかりました。
メソッドとプロパティってどういうもので、例えばどういう風に使うんですか?
>>211
言語ガイド嫁
>>211

>例えばどういう風に使うんですか?

つ、使ったことないの?
214211:02/04/26 09:09
使ったことないっす。(汗
最近「Borland Delphi 6 オフィシャルコースウェア応用編」っていう、
アスキーから出てる本を読み始めたんですけど、最初にその内容が出てきて挫折。(泣
最初に基本的な事を理解しようとするより、
まず何か作ってみる方がいい気がする。
色々調べながら必要な知識を吸収していくうちに、
基本的な事も少しずつ分かってくるし、そういうやり方の方が遣る気を持続出来る。

少し前迄は CDROMにDelphi1が入っていた。
このDelphi1にはコーチというのが付いていて、
操作しながら覚えるというような形式のものだった。

今ついていたとしても NT系では動かないから 2000とか XPでは動かないだろうけど
こういうのをまた作ればいいのになあ・・・
 それかオンラインソフト的に2千円程度で
217211:02/04/26 11:05
そ〜いうモンなんですかねぇ?
でも知識がないので、作りたい物が作れないっす!(泣きぃ
今は時計が作りたいんですがね。
関数とかわからないんで、無理みたいです。(プ
Delphiの予約語の辞典みたいなのが欲しいところです。
そんなもんは存在してるんですかね?
書店には無かったんですが。
http://www.text2music.com/mine/delphi/3.html
時計が作りたいなら、まずはこことか。

時間に関する関数はヘルプの
VCLリファレンス
 ルーチン一覧(カテゴリ別)
  日付時刻ルーチン
に載ってるよ。
219211:02/04/26 13:05
|o∈
|  ・・・・

|ハヽo∈
|D`) …コソーリ…

|ノハヽo∈
| ´D`)<>>218しゃん、ありがとうれす

| サッ
|彡
220211:02/04/26 15:50
時計を作ってみたのですが、以下の機能を拡張したいのでアドバイスください。

一、 フォームを透明化にしても、ラベルの文字が透明化されない方法

一、 実行時にフォームを常に一番前に表示させる方法

よろしくお願いします。
またしてもイタイやしが現れたな

>>211はなによりもまずDelphiについてるヘルプをよく読むことだな
フォームの透明化〜はどうやって透明化してるかによる
フォームを一番手前はフォームのプロパティにある
222211:02/04/26 19:27
イタイやしですまそ。
Delphiのヘルプは難しいからなぁ。
読めるようになったら読みますぅ。

フォームの透明化はフォームプロパティのAlphaBlendとAlphaBlendValueでやっておりまする。
一番手前…あったあった♪

それと話戻るけど、メソッドはわかったじぇ!
よく使う処理とかをまとめておいて、値を受け渡したりできるっていうのだよね?
VBでいう、凡用プロシージャみたいな。
もう来なくて良いよ。
224211:02/04/26 19:59
はい・・・
>>222
 メソッドは クラスに対して指示するのに使います。

 クラスメソッドと間違えないようにね・・・・なんて混乱させてみる。
>>211
モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412/l10
こっちの方がいいんじゃないの?「やさしい」だからして(藁
つーか、
>メソッドとプロパティってどういうもので、例えばどういう風に使うんですか?
↑これが、どーゆー意味で書いてるのかが分からん。
なんか、>>222見てると、VBにはメソッドも、プロパティもないみたいに見えるんだけど・・・。
228211:02/04/27 07:08
 >>225
とりあえず、メソッドはオブジェクト内部で定義された関数・手続きらしいね。
理解できないけど。(プ

 >>226
Valを説明してくれてる>>160の様に日本語の説明と具体的な使い方が知りたかったのれす。

 >>227
う〜ん、ごめんなさい。
VBだと、Form1.Line x1, x2 y1, y1 みたいなのはメソッドって言いますよね?
プロパティはプロパティウィンドウに表示されてるヤツがそうだけど、他にもあるんですよね?(泣


も っ と わ か り や す い 本 買 っ て き ま す 。 。 。
さっぱり分からないのに「応用編」を買うのが間違い。
>一、 フォームを透明化にしても、ラベルの文字が透明化されない方法
ラベルの文字を一度ビットマップに書き出して、
それをスキャンしてリージョンを生成するのが一番手っ取り早い。
小細工みたいな方法だと、所詮実行結果も怪しい(「遊ぶDelphi2.0J」みたいに)
うーん ためしにやるには便利だろうけど
AlphaBlendとAlphaBlendValue では遅いし環境依存だし
自前で処理する方法考えた方がいいんじゃない?
>>228
だ か ら 、 メソッドも、プロパティも ヘ ル プ に書いてあるって言ってんだろうが!!!
>>228
VBわかるみたいだから、とりあえず、VBユーザーの為のDelphi入門、みたいな本が
あったと思うから、そういうの見たほうがいいのでは?
持ってないから内容に関してはなんともいえないけど。
>>228
プロパティもメソッドもVBのとほとんど同じです.

<PRE>
procedure TForm1.Button1Click(Sender: TObject);
begin
// 実行時にプロパティを読む,書く例
Edit1.Text := '「' + Edit1.Text + '」 ナンテシラネーヨ! ウワァァァァン!!';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// Clear メソッド
Edit1.Clear;
end;

</PRE>

VBでもこれとそっくり同じことができる(はず).
>>234
あれ? PRE タグって埋められないのか(^^;恥ずかしい(///).
2ちゃんでのタグの使い方ってどこに行けばあるのでしょうか….
236211:02/04/27 21:01
>一、 フォームを透明化にしても、ラベルの文字が透明化されない方法
結構複雑なんですね。(^^;)

>>232
読んでくれ := >>222.Lines[3];
ヘルプも読めんやつが読んでくれとかぬかすな市ね
238デフォルトの名無しさん:02/04/27 23:27
要するにVB馬鹿か。
239デフォルトの名無しさん:02/04/28 00:04
あ、238>>さん馬鹿は、いけません
240デフォルトの名無しさん:02/04/28 00:06
要するにVB馬鹿か。
241デフォルトの名無しさん:02/04/28 00:15
あ、240>>さん馬鹿は、いけません
242デフォルトの名無しさん:02/04/28 00:17
要するにVB馬鹿か。
243デフォルトの名無しさん:02/04/28 00:24
要するにVB馬鹿か。   
244デフォルトの名無しさん:02/04/28 00:28
あ、1-1000>>さん馬鹿は、いけません
245外人:02/04/28 00:32
ヨォウスルゥルーニー、ヴィビィブァカァカ。
要するにVBマヌケか
一応、ネタスレじゃないのでマジレスしときます。
Cマガジンの2001年7,8月号にVBからDelphiへの移行(移植)の記事があります。
参考になると思うのでバックナンバーを取り寄せてみてはいかがでしょう。
今までDelphi Personalを使ってたが、Delphi Enterpriseを買った。
やっとインストールが終わり起動してみる。
やたらと時間が掛かる。まぁ、他にもいろいろアプリ動かしてるから当たり前か。

そして翌日、パソコンを起動して、一番始めに起動してみる。
おっせぇぇぇぇぇぇぇ〜〜〜〜〜!!!
どうやら我が家のCPUがヘナチョコなだけだったらしい。
でもせっかく買ったものだし、起動さえすれば困ることはないのでいろいろ頑張ってみることにする。

これだけだ、特に意味は無い。
えんたぁぷらいず・・・・・
(((( ;゜Д゜)))))ガクガクブルブル
Enterprise買う金でパソコン買え
さては>>248は立地万だな?
起動時にデフォルトで読み込むコンポーネントの数減らせば起動早くなりませんか?
253デフォルトの名無しさん:02/04/28 23:17
>>248
VBにしたらいいんじゃないか?買い直せYO!
>>248
余ったDelphi6 Enterpriseはわたしが引き取ります。処分手数料無料はいりません。
255デフォルトの名無しさん:02/04/28 23:40
オレは254が払う金に10円足して買うぜ!     
|o∈
|   ・・・・・・・
|
|___

|
|ハヽo∈
|D` ) コソーリ・・・・・・
⊂ノ
|___

|ハヽo∈
|´D`)   0x100げっと!
| ノ
|___

|
|  サッ
|彡
|
|___
 バキッ
|  ∋oノハヽo∈
| ̄. (,, )D`;)
| ̄ .⊂ ⊂ )
| ̄ (⌒__(⌒ノ
|___

    そんなことするののたんにはお仕置きだよ
   ∧_∧
  ( ・∀・)
  (    )           ゆるしてくらさい
  | | |       ∋oノハヽo∈     できごころだったのれす
  (_____)__)      ⊂(;´D`;⊂⌒ヽつ
(´-`)。o ○ (どうせAA貼るなら自作の面白いの貼れよな。)
(´-`)。o ○ (>>258 オマエモナー)
260258:02/04/29 01:07
(´-`)。o ○ (オレは>>256-257みたいに自信満々に「面白いだろ」って
書いてるワケじゃないからな。259=256=257だろ?)
(´-`)。o ○ (ということにしたいのですね?>>260
Personal使ってた人がいきなりEnterpriseって、一体どういう目的で??
>256
× 0x100
○ $100
Delphiスレなのでこう書くべきなのれす.

>258
個人的には良かったと思うのですが….
16進表記位じゃネタにもならないでしょうか?
USS.エンタープライズ!
>>256>>263
ネタもコテハンでどうぞw
つまり258=265ということかな。
>>266
とりあえず、違うよ。マジで。
D6でタブの間隔を変えるってどうやるの?
>>268 IDEのエディタの事? ならエディタ内でマウス右ボタン押して プロパティでそれらしいものが出ると思う
 >>269
ありました。
どうもありがとう。
memoのカーソルの位置にある文字列を挿入する方法を教えてくれ。
教えて君申し訳っ!
>>271
Memo1.SelLength := 0;
Memo1.SelText := 'てきすと';

つかヘルプくらい嫁
今日からレベルの低い質問、厨房、などは以下のスレへ隔離することになりましたのでよろしく

Delphiでアクションゲームが作りたい!!
http://pc.2ch.net/test/read.cgi/tech/1019654975/
もっとまともなところ教えてあげなよ。

ここなんか気合い入ってて良いかも
http://game.2ch.net/test/read.cgi/gamedev/1013170036/

作ってる人(>>1)はプログラム経験無し、パソコン触って1年目らしい。
でもちゃんと動いてるから凄い。
275デフォルトの名無しさん:02/05/01 00:27
>>273-274
どこかで見たことあるやりとり!
いい加減棲み分けしようぜ


Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室A
http://pc.2ch.net/test/read.cgi/tech/1013298748/
モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412/
Pascal の初心者用の質問・相談所
http://pc.2ch.net/test/read.cgi/tech/1009903617/
ヘタレ&初心者 専用
http://pc.2ch.net/test/read.cgi/tech/1019743589/


277デフォルトの名無しさん:02/05/01 00:33
>>276
もう…遅いねや…(by さんちゃん)
ImageList.FileLoad(rtBitmap, 'imglist.bmp', clFuchsia);
D6で上記のようにTImageList.FileLoadを使って実行時にビットマップをまとめて
読み込むと色が化けてしまう(強制的に減色されてしまう)のですが、
実行時に化けないようにまとめて読み込むにはどうすればよいのでしょうか?
設計時にイメージリストエディタからまとめて追加した場合は化けないのですが。
279無責任だが:02/05/01 06:31
>>278
FileLoadは GetResource を lrFromFille だけを付けて呼び出したものです。
 そして、TImageListは comctl32.dll のImageListのラッパーなので
ImageList_LoadImage APIが呼ばれます
が LR_CREATEDIBSECTION  が付いていません。 つまりDDBで作られています

これを回避したいなら 自前で ImageList_LoadImageを呼び出して
ひとつづつ マスクとイメージをBitmapに取り出して Addするという事になるでしょう
>>273-276
ワラタ
>>266
違いますよん.
>>267
ありがとう.
282>>281:02/05/01 23:11
  ?  ?
? (゚д゚) ?
Memo1.SetFocus; と
ActiveControl := Memo1;

入れ替えて実行してみると、結果はぱっと見、同じみたいでしたが、
何か違いはあるんですか?


284無責任だが:02/05/03 08:04
VCLを読むと
SetFocus  -> GetParentForm.FocusControl -> SetActiveControl

と結局同じ事のようです。

追加までご親切にありがとうです。
ケータイメモリエディタを作ろうと画策してるんですが、
いまいちシリアルポートの扱いがうまくできないんです(;´Д`)

API直叩きしてたので、使い方間違ってるのかと思いまして、
それならコンポ使おうと思ったのですよ。
それで探して色々試したのですが、パリティとかの設定が楽に
出来て、出来れば国産、使い方が分かりやすくて、
ツールの性質上できればスレッド同期で扱える、
そんなシリアルポートコンポ探してるのですが見つからないのです。

どなたかご存じありませんでしょうか。
あちこち探して試してみましたが、大抵はコメントや解説が
英語だったりするので…

国産でも見つけたことは見つけました。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7428/
です。が、設定や扱いが非常に分かりづらい罠…
287無責任だが:02/05/04 11:09
 結局、色んな意味で、API直叩きが一番楽だと思うけどなあ

どこが巧くいかなかったの?
288286:02/05/04 19:34
>>287
レスサンクスコ。

> 結局、色んな意味で、API直叩きが一番楽だと思うけどなあ
(;´Д`)
今の今までいろんなコンポ入れては試して消して、を繰り返してた…
鬱だ…

>どこが巧くいかなかったの?
通信で端末からの帰り値を読みとる部分です。
まず手始めに電話番号の取得を試みています。

1.ポート開いてパリティ等設定
2.最初にポート開いたファイルハンドルで1Byte書き込んで、
3.フラッシュして、
4.リターンが帰ってくるかタイムアウトまでファイル読み込みをループ

なのですが、3までは少なくともAPIの帰り値、
Portmonによるログ共にうまくいっています。
その後データを受け取るのがうまくいかないのです。

購入した市販ソフトの動きをPortmonでみる限り、
自作アプリは全く同じ動きをしています。
読み込みの部分が成功するか失敗するか以外。

色々なコンポを試してみましたが、
1.設定に失敗する
2.読み込み時(API直叩きと同じ)
のどちらかで躓きます。

端末やケーブル、ポートなどの問題は、
市販ソフトの動作が問題ないので問題ないと考えます。

一体何が問題なのでしょうか…
Delphiで作ったモジュール内で発生した例外を
他の言語で作ったモジュールが catch した場合、
例外オブジェクトはいつ破棄されるのでしょうか?
290無責任だが:02/05/05 07:56
>>288
他の制御線DSR/RTS等の動きはどうでしょう? これを設定していますか?

ポートの開き方の例: 
strPcopy(charbuf , 'COM1');
   SetLastError(0);
h :=CreateFile(charbuf,GENERIC_READ+GENERIC_WRITE, 0,nil,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
 //------ この間に hについてテストする ---------
COMMTIMOUT.ReadIntervalTimeout:=MAXDWORD;
COMMTIMOUT.ReadTotalTimeoutMultiplier:=0;
COMMTIMOUT.ReadTotalTimeoutConstant:=0;
COMMTIMOUT.WriteTotalTimeoutMultiplier:=10;
COMMTIMOUT.WriteTotalTimeoutConstant:=10;
SetCommTimeouts( h ,COMMTIMOUT);
StrPcopy(charbuf, Format('baud=%d parity=N data=8 stop=1',[speed])); //パリティ等は要確認
if( BuildCommDCB(charbuf,dcb)) then
begin
dcb.Flags:=dcb.Flags and (not $FFFF);
dcb.Flags:=dcb.Flags or ( $0101);
SetCommState(h,dcb);
EscapeCommFunction(h,SETDTR );
EscapeCommFunction(h,SETRTS );

で、リードタイムアウトはコマンドの種類によって設定する方が楽だから
procedure Txx.SetReadTimeOut(msec: integer);
begin
COMMTIMOUT.ReadIntervalTimeout:=50;
COMMTIMOUT.ReadTotalTimeoutMultiplier:=0;
COMMTIMOUT.ReadTotalTimeoutConstant:=msec;
SetCommTimeouts( h ,COMMTIMOUT);
end;
//○読込み
function Txx.ComRead(var c: Char): boolean;
var GetSize:DWORD;
var charbuf:array [0..15] of char;
begin
Result:=False;
if ReadFile( h ,charbuf,1,GetSize , nil ) then
if GetSize>=1 then
  begin
   c := charbuf[0];
    Result:=True ;
  end;
end;

procedure TxxROMWT.ComSend(dt: char);
var PutSize:DWORD;
var charbuf:array [0..15] of char;
begin
{$ifdef CONSOLE }
write(format('%2x ',[ord(dt)]));
{$endif}
Charbuf[0]:=dt;
PutSize=0; WriteFile( h,charbuf,1,PutSize,nil);
if PutSize<>1 then abort; //失敗したらアボート
end;
291デフォルトの名無しさん:02/05/05 20:17
Delphiで現在のボリュームを取得したいのですが、色々あがいたのですが出来ません。
良い方法がありましたら教えてください。おながいしまうま。
なんのボリューム?
ボリュームといわれるとauxGetVolume かなあ でもこれならすぐ判るよなあ
>>291
ここのTAudioMizerなんてどうでしょ。
http://www.fi.muni.cz/~xkovalc/
295デフォルトの名無しさん:02/05/05 21:28
>>292-294
皆さんレスどうも。

現在のボリューム設定値を知りたいのです。
auxGetVolumeはメディアプレーヤーの出力レベルですよね。
あるソフトでボリュームをいじった後、元のボリューム設定値に戻したいのですが、
現在のボリューム設定値を知る方法が分からないもので。

たぶん、簡単にできると思うのですけど、検索して見つからないもので。
どうかおながいしまうま。
296デフォルトの名無しさん:02/05/05 21:29
すみません。肝心な事に答えていないでした。
タスクバーの音量のボリュームです。
なんでドライブのボリュームラベルっていうボケが出ないんだ!
タスクバーの音量のボリューム??

ボリュームコントロールはMixer系APIを調べれ
検索しても出てくる
299291:02/05/05 22:37
でけへん〜
どうも他のボリュームを取ってる臭い。誰か助けてくらはい。おながいしまんこ。

Procedure TMainForm.FormCreate(Sender: TObject);
var
rslt,i,j : integer;
arys : array [0..128] of TMIXERCONTROLDETAILSUNSIGNED;
MixerHndl : HMIXER;
MixerLineCtrl : TMIXERLINECONTROLS;
MixerCtrl : TMIXERCONTROL;
MixerLine : TMixerLine;
MixerDetail : TMIXERCONTROLDETAILS;
begin
rslt:=MixerOpen(@MixerHndl,0,0,0,MIXER_OBJECTF_MIXER);
with MixerLine do begin
cbStruct:=SizeOF(TMixerLine);
dwDestination:=0;
dwComponentType:=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
end;
MixerGetLineInfo(MixerHndl,@MixerLine,MIXER_GETLINEINFOF_COMPONENTTYPE or MIXER_OBJECTF_HMIXER);
with MixerLineCtrl do begin
cbStruct:=Sizeof(TMIXERLINECONTROLS);
cbmxctrl:=Sizeof(TMIXERCONTROL);
dwLineID:=MixerLine.dwLineID;
dwControlType:=MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CONTROLTYPE_VOLUME;
pamxctrl:=@MixerCtrl;
cControls:=MixerLine.cControls;
end;
with MixerCtrl do begin
cbStruct:=sizeof(TMIXERCONTROL);
fdwControl:=MIXERCONTROL_CONTROLF_UNIFORM;
end;
j:=MixerGetLineControls(MixerHndl,@MixerLineCtrl,MIXER_GETLINECONTROLSF_ONEBYTYPE or MIXER_OBJECTF_HMIXER);
with MixerDetail do begin
cbStruct:=Sizeof(TMIXERCONTROLDETAILS);
dwControlID:=MixerCtrl.dwControlID;
cMultipleItems:=0;
cChannels:=1;
cbDetails:=Sizeof(TMIXERCONTROLDETAILSUNSIGNED);
paDetails:=@arys;
end;
MixerGetControlDetails(MixerHndl,@MixerDetail,MIXER_OBJECTF_HMIXER or MIXER_GETCONTROLDETAILSF_VALUE);
with MixerCtrl do begin
cbStruct:=sizeof(TMIXERCONTROL);
fdwControl:=MIXERCONTROL_CONTROLF_UNIFORM;
end;
with MixerDetail do begin
cbStruct:=Sizeof(TMIXERCONTROLDETAILS);
dwControlID:=MixerCtrl.dwControlID;
cMultipleItems:=0;
cChannels:=1;
cbDetails:=Sizeof(TMIXERCONTROLDETAILSUNSIGNED);
paDetails:=@arys;
end;
MixerSetControlDetails(MixerHndl,@MixerDetail,MIXER_OBJECTF_HMIXER or MIXER_SETCONTROLDETAILSF_VALUE);
MixerClose(MixerHndl);
StartVolume:=integer(arys[0]);
MixerClose(MixerHndl);
end;
いきなりソースライン取得は無理
MIXERLINE_COMPONENTTYPE_DST_SPEAKERSから辿れ
>>299 試してみたら そのコードで希望通り CDラインの音量は取れてるようだけど?
302デフォルトの名無しさん:02/05/05 23:14
えっ?CDラインになってた?(^^;
だからか。
MIXERLINE_COMPONENTTYPE_DST_SPEAKERSで試してみる。
ってどこで使えばいいか良く分からんけど。
>MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC
読めないのか?
304デフォルトの名無しさん:02/05/05 23:23
すまん。パクってきたソースだったからよ〜分からんかった。
MIXERLINE_COMPONENTTYPE_DST_SPEAKERSに変更したらきちんと動作しました。

皆さんありがとうございましこしこ。
(´-`).。oO(たのむからマスターボリューム勝手にいじるのはやめてくれ・・・・)
306デフォルトの名無しさん:02/05/05 23:39
>>305
自分の目覚まし用のソフトだから外部には公開しないっす。
もっとも、最大音量にした後できちんと元に戻すし。
安心しちくれい。
307289:02/05/06 01:33
>>289は誰か分かりませんか?
>>307
> >>289は誰か
おまえ、だろ
>>307-308
なんか微妙に意思の疎通ができてなくて藁た。
「ここではきものをぬいでください」的だね
>>310
きもの・・・(;´Д`)ハァハァ
ここ、ではき、ものを、ぬい、で、くだ、さい・・・( ゚д゚)?
313無責任だが:02/05/06 07:25
>>289
 Delphiの例外は Windowsの構造化例外(RaiseException)を使うので
 例外は相互に投げたりキャッチしたりが理屈の上では可能な筈です

しかし、例外オブジェクトはそれぞれの言語のメモリ管理下にありますから、これを
互いに解放しない可能性や、逆に間違って解放しようとして暴走等が起きるので
はないかと思います。

解放するかどうか デストラクタを継承したものを投げて実験してみてはどうですか?

自分がやるなら、そんな危うい事はやらないで DLLの入り口出口で
例外を全て捕捉して、エラーは別に帰り値かコールバックで返してしまいます。
>>297
そっちが本ネタだと思って、ボケてみたんだが。
315289:02/05/06 23:30
レスもらえて嬉しい(*^^*)ポッ
うーむ、ちょっとテストしてみるか。

316289:02/05/07 01:04
やってみました。

EXEがDelphiで、DLLがC++Builderです。
EXEがDLLの関数を呼び、さらにそのDLLから例外を生成するEXEの関数を呼びます。
例外は DLL の関数で
 __except(MessageBeep(0))
 {
 }
のようにして止めます。 ()の中に何を書いていいかわかりません。 誰か教えて・・。

例外を raise EProject.Create('HogeHoge'); のように生成すると
EProjectのデストラクタは呼ばれず、開放されません。
AllocMemCount と AllocMemSize は共に増え続けます。

 P := nil;
 P^ := 100;
だと、AllocMemCount と AllocMemSize は増えません。
同一オブジェクトを使いまわしているのですかね?
標準以外のコンポーネント、ユニットライブラリのファイルはどこに置いていますか?
ProjectA、ProjectB があって、両方とも LibraryC を使う場合、

案1
├ProjectA
│ └LibraryC
└ProjectB
  └LibraryC

とやるか、

案2
├ProjectA
├ProjectB
└LibraryC

とやるか、どっちがいいでしょうか?
318案2:02/05/07 23:32
案2
319案3:02/05/07 23:36
案3
├Projects
│ ├ProjectB
│ └ProjectA
└Libraries
  └LibraryC
案3にイピョーウ!
321Delフサギコ ◆zE1iiRdQ :02/05/07 23:56
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < あんさんに一票でんがなまんがな
  UU"""" U U[大阪弁]_______________
というか案1なんて使ってる奴いるのか?
案1は依存関係が無くなるんですよ。
実際には LibraryC' と LibraryC'' になるけど。

├ProjectA
│ └LibraryC'
├ProjectB
│ └LibraryC''
└LibraryC

LibraryCの内、それぞれのプロジェクトが使うもののみ、
コピーして使うのです。

でも、Delphiの性質上、向いていないんですよね。
>>323
つーか、なんでそんな使い方をしないといかんのかわからん。
依存関係が無くなるってどういうこと?
325流星人間いぞん:02/05/08 01:16
りゅうせーい にーんげーん いぞーん いぞーん いぞーん ぼーくらーのー
なーかーまー♪
>>325
お前、歳いくつだよ!って分かる俺も、俺か・・・。
327Delフサギコ ◆zE1iiRdQ :02/05/08 02:03
  ,,,,,,,,,,,,,∧,,∧   /ProjectAをコピったら
〜′,,,,,,,ミ,,゚Д゚彡<  他のマシンですぐ動くって事かな?
  UU""" U U   \
└LibraryC'
└LibraryC''
こんなのが増えつづけるとソレこそ管理が
大変になるというのが、経験上わかる日が来るかも。
>>324
本当に分からないのですか?
納品する様な場合を考えてみて下さい。
329Delフサギコ ◆zE1iiRdQ :02/05/08 02:09
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  < とはいえ、、、
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻
ProjectのVersionと
LibraryのVersionを組み合わせて
まとめてファルダ保持
したいときなんかは、

  ├ProjectA
  │ └LibraryC'

これもいいのかもね。(あまり気乗りしないけど

そういえば、自作ライブラリのVersionなんて
全然管理してないなー。みんなさんしてるのかしら?
330デフォルトの名無しさん:02/05/08 02:21
じゃ、案4
├ProjectA
└ProjectB
共通ライブラリは使わない。
漢だな
332デフォルトの名無しさん:02/05/08 02:31
俺はこうしているよ。

├ProjectGroupA
│ ├ProjectA
│ │ └LibraryA''
│ ├ProjectB
│ │ └LibraryB''
│ └LibraryA'
└Library

ライブラリだからといって一つのフォルダにまとめないで階層化している。
納品するときは ProjectGroupA をコピーして要らないフォルダを
消していけば簡単だしね。
333323:02/05/08 03:06
紛らわしかったかも知れませんが、

├ProjectA
│ └LibraryC'
├ProjectB
│ └LibraryC''
└LibraryC

は、ProjectAとBはLibraryCを参照しません。
だから、案4と同じ事です。
334お願いします:02/05/08 04:50
すまんがお前らシェルのコンテキストメニューに独自のメニュー
を追加する方法を教えて欲しいです。
任意のファイルを選択して右クリックから選択されたファイルの
名前を取得したいのです。
335デフォルトの名無しさん:02/05/08 06:34
>>334
死ぬほど検索しやがれ。
336Delフサギコ ◆zE1iiRdQ :02/05/08 09:28
    ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  _ ミ,,゚Д゚彡_< そのメヌって拡張子依存するんじゃナカタ?
.=| |=U=U=| |= \___________
 | | .ミ   ミ | |
 | |ノ∪''∪. | |  イヤ 実は知らんけど。
 | |      | |

 SendToに入るアプリの方がよろしぃかも
>>334
Demo ディレクトリは覗いてみたかな?
>>334
レジストリエディタ立ち上げて、HKEY_CLASSES_ROOT の下をよーく観察しろ。よーく、よーくだ。
>>335,337-338
ほんとは皆、よく知らないんだろ?
340下手人:02/05/08 23:09
 |文| ∧ \HKEY_CLASSES_ROOT\*\shell\viewの標準にコマンド名
 |=|∀゚) \HKEY_CLASSES_ROOT\*\shell\view\commandに実行するコマンド
 |  ⊂ノ  でどうかな?
゛゛'゛'゛ ゛゛'゛'゛ 
341下手人:02/05/08 23:11
∧∧
(゚∀゚) commandの標準ね
死ぬほど検索しやがれ。
マルチポスト野郎にマジレスするのもバカらしいから>>339
344デフォルトの名無しさん:02/05/08 23:24
Delphiのプロフェッショナルを2台のパソコンに入れて、使用許諾コードを
取得したらやばいですか?ばれます?
345デフォルトの名無しさん:02/05/08 23:26
>>344
お前にピッタリなのはVB(略)
レジストリだけじゃダメだよ。結局340も分かってないようだ。
たぶん誰もまともにコンテキストメニューの実装はできないんだろう。
347デフォルトの名無しさん:02/05/09 00:22
>>346
お前にピッタリなのはVB(略)
>>347
で、お前はVBAに四苦八苦だろ?
349デフォルトの名無しさん:02/05/09 00:25
>>348
お前は、未だに「インストロール」とか言う馬鹿だろ?
350下手人:02/05/09 00:36
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  < >>346 誰もわからないって言いたいだけちゃうんかと(略
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃ 足されなかった?
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻


スキルないやつばっかりだな・・・レベル低っ!
>>351←典型例
353787:02/05/09 00:41
Delphiも終わったな。こんなバカ共しかいないとは
そろそろ「C#」といい出すやつが来る頃だな
これからはC#の時代です!!
>>355
だよね。明日、VC#買ってこようかなと。
いまどき、コンテキストメニューも実装できないような
Delphiは糞決定ですか?
コンテキストメニューも実装できないような
プログラマは糞ですが。
359Delフサギコ ◆zE1iiRdQ :02/05/09 01:38
        ∫
   ∧,,∧ ∬       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ,,゚Д゚ノ,っ━~  < 雨降ってジメジメ……プハァ
_と~,,,  ~,,,ノ_. ∀  \_________
    .ミ,,,/~),  .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃  逆切れですか?
 ̄ ̄ ̄ ̄ ̄ ̄ ̄   .┻

・\Demos\ActiveX\ShellExt\contmenu.dprをコンパルしる
・contmenu.dllが出来る
・それを[実行|ActiveXサバ登録]でレジに登録しる
・こんなんでる
---------------------------
情報
---------------------------
ActiveX サーバー '○○\Demos\ActiveX\ShellExt\contmenu.dll' の登録に成功しました。
---------------------------
OK
---------------------------
・regeditでみると
HKEY_CLASSES_ROOT\DelphiProject\shellex\ContextMenuHandlers\ContMenu
こんなんが出来てやがるので
そこにGUIDの値をキーとして追加?

そしたら、.dprにコンテキストメニュが追加されてる。

そんな幹事かしら
360下手人:02/05/09 01:52
(゚д゚)最近プログラマじゃないのでスマソ

tp://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm
361Delフサギコ ◆zE1iiRdQ :02/05/09 02:14
ファイルの関連付けで「開く」以外の動作を追加する
http://member.nifty.ne.jp/m-and-i/tips/fileattach.htm

Delphiで作るシェル拡張(ShellExtention)・・・コンテキストメニューの追加
http://member.nifty.ne.jp/m-and-i/tips/shellext.htm


┷┳━     ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ┃   〜′,,,,,,,,,,ミ,,゚Д゚彡<  ええサイトありますた。
  ┻.    UU"""" U U    \
                      ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     進め中級ページはむずかいしな気がする
362テヘ:02/05/09 02:28
下手人さん、フサギコさん、正直逆切れちゃってスマンかった。
ありがとう!これでなんとかなりそうです!
363テヘ:02/05/09 02:31
でも、実は361のフサギコさんの紹介してくれたページは既に
見てて、サンプルで試してみてたんですが、あまりに不安定で
使えなかったんです。どこが悪いのかも自分では分からないし・・
「進め」のほうもちょっと勉強してみます。
VBをインストロールしたのですが四苦八苦です!
Delphiは簡単ですか?
>>364
お金出して買えばそれなりにやる気が出ます。
>>364

>>365の同意。
>VBをインストロール
この人に才能があるかどうかは疑問だが。
インストロールに(゚д゚)ギャッフン
368ばか者D:02/05/09 15:52
IEキャシュフォルダの中のファイル名を取得したい。

FindFirst('C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\*.*',faAnyFile,FR);
続いてFindNEXTによってディレクトリ一覧を取得しようとしましたが、

. .. ContentIE5 desktop.ini Folder Setting

のみの表示で、そこにあるはすのIEのキャシュフォルダの
ファイル名が取得できません。

補足
desktop.ini によてフォルダに設定がかけてあるようなのですが、
このファイルの仕様が不明の為どのような設定か不明です。

desktop.ini はマイコンピュータからのファイル参照では見ることができないので
テキストエディタにダイレクトに編集名をいれなければ表示しません。

Findfirstの仕様なのか 方法が間違ってるのか
皆さんのお知恵と経験で助けてください。

>>368 そこには本当にファイルはそれだけなのかもね
 そこから システム属性のフォルダを検索してみて?
 その下のフォルダに実体があるように思うよ

\Temporary Internet Files\Content.IE5\index.dat とかにアドレス情報も
370ばか者D:02/05/09 16:28
>>369
早速のレス有難う
私もこのフォルダに実態がないのではないかと予測しています。
faAnyFile <これですべての属性のファイルだと思うので、
その下のフォルダを参照してみます。


371デフォルトの名無しさん:02/05/09 16:48
すみません。
Delphiでペイントソフトのような物を作りたいのですが
線を描く方法すらわからないです。
Canvas.LineToを利用する気がするのですが、、
何かヒント頂けませんか?
372デフォルトの名無しさん:02/05/09 17:11
画面をキャプチャーするソフトを作っているんだが。
他のアプリがアクティブになっているときGetCursorではマウスがとれない。
マウスカーソルごとキャプチャできる方法を教えておくれ。。。。
373デフォルトの名無しさん:02/05/09 17:12
>>372
マウスの位置を覚えておいておき
その位置にカーソルを描画する
374ばか者D:02/05/09 17:51
>371
on_xxxxx を使うと動的に処理できますよ。
(xxxxxの部分は反応したいイベントの種類)
とはいえ、実際のペイントソフトのような、「描いている」
ような処理をさせるには、これだけではまったくだめです。
CANVASのプロパティで用意されている関数だけならともかく
エアーブラシのような効果を出したい
などはもっと手の混んだ事をしなければなりません。

手始めに、内部的なデータ配列をRGB変換 DIB>BITMAP
>CANVASのような物を作られるのがよろしいかと思われます。
これが無理だ!ならフォトショップを買ってきましょう^^;

IEのキャシュのは Client UrlCache MMF
が動いていたんですね。世間知らずですいませんでした。

MMFのモジュールorコンポーネントなど存在するのでしょうか?

375372:02/05/09 18:11
>>373
それがやりたいんだが、
他のアプリがアクティブの時に
現在のマウスカーソルのハンドルがとれない。。。うーん。
376ばか者D:02/05/09 19:03
>>373
>>375
キーワード「メッセージキュー」で関連する情報を得てはいかがでしょうか?

TCustomApplicationEvents.OnMessage

など関連ありそうな情報だと思います.
>>371
先にmoveto死なされ。

>>372
フックするか確かそれようのAPIがあった気が。
378デフォルトの名無しさん:02/05/10 08:30
現在動的に生成したTMenuItemにOnClickイベントを割り当てる方法が分からず困っています
静的であれば

procedure TForm1.Open1Click(Sender: TObject);
begin
hoge;
end;
procedure TForm1.hoge(Sender: TObject; Hint: String);
begin
ShellExecute(Handle,'OPEN',PChar(Hint),'','',SW_SHOW);
end;

とすればよいのでしょうが、動的に生成したものをどのように処理したら良いかわかりません
どなたかご教授お願いします
379無責任だが:02/05/10 08:34
>>378
今度は作成したOnClickにそのメソッド名hogeを代入するだけです
ただし hoge は OnClickと同じ引数並びにしなければいけません。

なおhogeは 実行時型情報は不要ですから、privateでもprotectedでもOKです
>>379
>なおhogeは 実行時型情報は不要ですから、privateでもprotectedでもOKです
privateなメンバの実行時型って取得できないんですか?(アクセスできないんだから当然か)。
381無責任だが:02/05/10 08:42
>>390
メソッドの実行時型情報(つまりメソッド名からメソッドアドレスが検索出来る)のは
publishedの場合だけです。
 それ以外の場合はコンパイル時にのみ可能です
>>381
ふむ、勉強になりました。
通常の関数ポインタはコンパイル時に特定されてないと逝けないのね。
383378:02/05/10 08:46
素早いレスありがとうございます。とても助かりました
>>374,377
ありがとうございました。
先に進めそうです。
385デフォルトの名無しさん:02/05/10 10:55
TObject型をString型にキャストするにはどのようにしたらよいのでしょうか
>>385
stringは組み込み型でTObjectから派生した物ではありません。
>>386
なるほど…ありがとうございました
Senderで送られた情報から、たとえばMemo1からならば
Sender.Lines.Text (これが無理なのは分かるのですが)
のような感じでデータを取り出したいのですが可能なのでしょうか?
388Delフサギコ ◆zE1iiRdQ :02/05/10 11:18
 ∧,,∧
ミノ゚Д゚彡ノ

もし、Sender is TMemo then
TMemo(Sender).Lines.Text

ってするとよさげ
389387:02/05/10 11:29
>>388
バッチシでした、DelphiMLよりも遥かに助けられる2チャンネラの人達に多謝
>>389
だってここが公式サポートサイトだしぃ..
>>389
MLのログ検索すればそれくらいの質問は(以下略
392387:02/05/10 12:26
>>391
ううむ、確かにそのとおりかもです…
一応あさってはみるのですが、何が分からないのか分からないような状況だと
結構探しづらくて、ついつい2chに頼ってしまっています

しかし>>389ちょっと言い過ぎでした
もちろんDelphiML過去ログにもいつもお世話になっています(笑
質問に答えることによって自分も磨かれていく・・・そんな感じ?俺かなりいい事いってるね♪
394Delフサギコ ◆zE1iiRdQ :02/05/10 14:04

♪  .∧,,∧ ♪
   ,ミ,,゚∀゚ミ.  ♪  ジガジサーン で マターリ・・・
   ミ,,つ[|lllll]).
 〜 ミ,, ,,,..ミ
    ∪ ∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

MLでは気軽な雑談しにくいかもね。

初心者は雑談したら
「過去ログみろ、検索はこちら」
だもの…
>>393 その通り
ある程度以上の年齢になると
「人に教えることで自分も覚える」
というのが一番効率のいい勉強方法なんだそうだよ
396_:02/05/10 15:13
delphiってポインタないの?もしかしてclassへのreferenceだけ?
>>396
ネタならつまらん。
マジならヘルプぐらい見れ。
398_:02/05/10 15:25
>>397
スマソ。classはreferenceで基本型はそうじゃないんですね。なんか変なの。
399398@C++厨:02/05/10 15:29
ってjavaもそうか。でも基本型のポインタもあるのがなんか変。
cA -> reference ^cA -> referenceのreference
a -> 実態 ^a-> 1reference
一個ずれてるのが気持ち悪いんですけど・・・
>>399
BCBでは使えないけど オブジェクト型というのもあるよ
オブジェクト型ならC++みたいに変数宣言すれば実体も作成される
クラスについては C++の参照扱いだと思ったらいいんじゃないの?
変数宣言はインスタンスへのポインタの宣言だけど
使う時には自動的に参照されるというふうに
402398@C++厨:02/05/10 15:41
>>400
なるほど。まあ、C++でもあんまり使わないからいらないか。。。
この辺りが構造化言語とOO言語の境界線なんだろうな。
403398@C++厨:02/05/10 15:45
>>401
.(dot)が変数がreferenceなら自動的に->として解釈してくれる感じなのかな。
404398@C++厨:02/05/10 15:58
>>400, 401
pascalはともかく環境は気に入りました。
さっそくIEにキーコード送るソフトでも作ってみよ。
厨房的質問に付き合ってくれてありがとう、ではまた会う日まで。
クラス型の変数.xx を C++で書けば クラス型の変数->xx になるというだけでは?
>>405
むしろ、C++でいう(クラス型の変数).xxが出来ないのが気持ち悪いと言いたいのだろう。
厨房的質問といっても、C++経験者だし別に厨扱いする必要はないわな。
>>405
それ、クラスのポインタの時だけだし。
408デフォルトの名無しさん:02/05/10 23:42
Delphi6(Update Pack2適用済み)とMS-Access2000をWindows2000SP2で
共存させています。

Delphi6でParadoxやdBaseを使ったデータベースアプリケーションを作成
しているのですが、MS-Access2000でdBaseファイルとリンクしているリンク
テーブルを開くと日本語が文字化けしてしまいます。
dBaseファイルをインポートして作ったテーブルを開いても文字化けしています。
エクセルで開くと字化けすることはありません。

今のところ解決策はOffice2000とDelphi6を共存させないということしかありません。
Delphiをインストールしていない、もしくはインストールしていても作成中のアプリ
ケーションを「実行」しなければ文字化けは起こりません。

なにか情報をご存知の方はおられないでしょうか?
Delphi5も6もWinXPで使うと、たまに数十秒くらい固まったりしない?
>>409
しないですよ。
パネルとかをポップアップさせるやり方ってあります?
ちゃんと、そのときユーザーが指定してるアニメーションで.
>>409
それって支援機能?切ってみたら?
414デフォルトの名無しさん:02/05/12 00:07
Imageコンポーネントを動かすにはどういうコードを入力すればいいのか教えてけれ〜(;´Д`)
最近始めた初心者なので全然わからない・・・
>>414
.Top .Left
スマソ、そうじゃなくて例えばボタンを押したら
imageを動かすようなコードを組みたい。
>>416
>>414で何が不満だ?
>>416
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Top := Image1.top + 1;
Image1.Left := Image1.Left + 1;
end;
ああなる程!
改めて>>415さんスマソ。
そしてみんなありがとう。
420デフォルトの名無しさん:02/05/12 00:25
10 x=0
20 y=0
30 locate x,y
40 print Image
50 goto 10
421wasureta...:02/05/12 00:27
45 x=x+1:y=y+1
>>420
いや、お前、それ全然動かないぞ。
423machigaeta...:02/05/12 00:28
50 goto 30
くだらね
くっだ〜らない〜
くっだ〜らない〜
くっ くだくっだくっだ〜らない〜♪
>411

うおっ、激しくこれっぽいです.ありがとうございます.
しかし、使い方がよく分かりません・・・.
とりあえず、フォーム作成後にShowのかわりにやってみたけど
見た目変わんないんですけど、なんかやり方あるんでしょうか?

ちがう、レスは>413だ.鬱・・・
試してないけど、こんなのあった
http://www.layer-8.com/sce/view_src.php3?argSrcId=425
Irvineのダウンロード終了のお知らせってこれ使ってたのか…
430デフォルトの名無しさん:02/05/12 02:20
>428

同じのみつけて試してみてたよ・・・.
AnimateWindowで検索したらなんかゴロゴロ出てきた.

案外メジャーなのか、この関数.ちょっとハズカスィ
フォームごとアニメーションできるんだこれ。おもろい。
432デフォルトの名無しさん:02/05/12 15:42
現在、金もってないくせに、delphiはじめようと思っています。そこで質問なんですが、
初心者が一冊だけ買うとしたら、どんな本を買えばいいですか?
デラべっぴん
>>432
実際に本屋へ行って立ち読みしてみて一番面白いと思った本が
あなたにとって「一番いい本」

初心者といっても
「プログラムそのものが初心者」から
「Java/C++バリバリだけどDelphiは初めての人」までいろいろだからね
435デフォルトの名無しさん:02/05/12 16:21
NewItem := TMenuItem.Create(Self)等で作ったアイテムを
for文で繰り返し使い、popup等に入れた場合
なぜ上書きされずにpopupに順次追加されるのでしょうか?
>popup等に入れた場合

追加したからでしょう。
>>436
for内部の文末にFreeを加えるとリストに表示されなくなるので参照扱いかと思ったのですが
Freeをすることによりそれによって作られたItemが全て消えるという事なのでしょうか?
すいません、もう少し詳しく書きます

for count := 0 to 5 do
begin
NewFile := TMenuItem.Create(Self);
Form1.popup.Items.Add(NewFile);
end;

これでfor中の最後にNewFile.Free;を入れると。ということです
end;のあとに入れるぶんには大丈夫なのですが…
webでもfreeを入れるとデータが消えるので入れないようにと
書いてある所は多いのですがなぜそうなるのかが分かりません
Freeは用が済んだインスタンスを開放するのに使う
ポップアップ・メニューに入れて「これから使おう」というのに
消してしまったのでは「意味がない」
>>437-438
何を6回繰り返してるか、把握したまえ。以下が、キミが繰り返している内容だ。
「メニューアイテムを生成し、フォーム1のpopupに追加。」
これを6回繰り返したら、メニューアイテムが6個生成されるのは自明だ。

for の中に Free を入れた場合、繰り返すことになるのは以下の内容だ。
「メニューアイテムを生成し、フォーム1のpopupに追加し、削除。」
6回追加して6回削除してるのだから1個も残らないのは自明だ。
ううむ、NewFile.Free自体がPopup.Items.Items[count]の削除にそのまま繋がってるのですね
少しまだ分からない所がありますが、勉強して出直します
ありがとうございました
NewFile := TMenuItem.Create(Self);
でやっていることは
 × NewFileのアドレスへTMenuItemのインスタンスを作る
 ○ TMenuItemのインスタンスを作ってそのアドレスをNewFileへ代入する
なので
forループの中でNewFileの指すアドレスは毎回変わる
そして
Form1.popup.Items.Add(NewFile);
によってそのアドレスが順次、popupへ保持されていく
>>434
わかりました。本屋に行ってみます。ちなみに、プログラム初心者です。
>>442
なるほど、根本的な勘違いをしていました。
理解できました、ありがとうございます
delphi6personalで、aspやスクリプト環境で使えるような
COMオブジェクトが作れるかどうか調べています。
personalはCOMウィザードがないのですが、現実的に全部手動で
作れるものでしょうか?
それとも素直にProfessionalを買うべきでしょうか。

Googleでも"delphi +COM"ではうまい情報が見つかりません……
技術的な話に絞れば、実装はComObjにヘルパークラスがありますし、
psdkを落としてmidlコンパイラでリソースを作れば出来ない事も無いと思います。
でも……
ヘルプで ディスパッチインターフェース型 を読んで理解出来れば
作成可能かも・・・
でもタイプライブラリエディタが無いので苦労はすると思います。
その苦労に見合うかどうかは他人にはわかりません。
448Delフサギコ ◆zE1iiRdQ :02/05/12 20:06
> aspやスクリプト環境で使えるような
> COMオブジェクトが作れるかどうか調べています。
           _____________
 ∧,,∧     /
ミ;゚Д゚ミ ∫< 俺はBCB6Proでも見事に失敗した。
.(ミ  ミっ-~  \__________
〜ミ,,⊃ミ⊃
ナンデダローナンデダロー...

VBで作られるActiveXDLLと互換のものを
BCB6ProのActiveXDLLウィイザで作ろうとしたら
どんなオプションをセットするか、さっぱりわからなくて
作られたものはaspから呼び出せなかったよ...

メンドっちかったので、BCB6で作った普通のDLLを
VB6でラップしてActiveXDLL作って
それをaspから読みました。

保守性わるーーー。ある意味スパゲティミートソース


そういうActiveXDLLを作ろうと思っても
作り方が詳しく載っている資料ってなかなか
みつからなくてつらいっす。

出来るかどうかっていうと、間違いなく出来るはずなんだけどなー。

あ、Personalでやると
フサが苦労した10倍以上は多分苦労するでしょうから…
茨の道かと...
BCBの場合は、確かに、ATLとVCLの2重になってDelphiより厄介

Delphiは言語側でサポートがあるからその面少し楽かも
450仕様書無しさん:02/05/12 21:21
こちらのサイトよりBORLAND製品のキージェネレーターが落とせますので
C++Builder6 Enterprise
JBuilder6 Enterprise
Delphi 6 Enterprise
の各体験版をBORLANDに申し込みまして
シリアルぶっこんでkeygenでオーソライズしちゃいましょう
すべて動作確認済みです
Enterprise以外はkeygenが使えませんので注意してください
※下記サイトに逝く時はなるべくjavaは切った方がいいでしょう

http://www.cracks.am/cracks/b4.html
451デフォルトの名無しさん:02/05/12 21:30
450=神
>>450
通報しますた
逝ってよし
454445:02/05/12 23:36
"delphi comobj comserv"でいろいろ検索してみました。
やっぱりウィザードなしでCOMという酔狂なページはない模様……

ttp://www.marcocantu.com/code/md6htm/ComPlus1.htm#ComPlus1_TLB.pas
ttp://www.pinnaclepublishing.com/DD/DDfiles.nsf/all/9A6CC5D428D57BD0852568D300639076/$file/VICARIA.ZIP
ttp://www.matlus.com/scripts/website.dll/Tutorials?DelphiASP&FirstASP&1
自動生成したコードっぽいものは見つかりましたが。
見た感じ、hoge_TLB.pasの中身はそれほど複雑ではないですね。
サンプルをいじれば使い回せそう。

手順としては
IDL手書き>MIDLでコンパイル>TLB生成>インポート&微調整>本体実装?

あとはやってみないとわかりません。がんばってみます。
IDLについて示唆いただきありがとうございました。難しそうですが。
>454
Delphi2.0パワープログラミングには書いてあった気がする。
まーウィザード無い頃だし、当たり前だけど。
>>450=>451
タスクトレイにアイコンを追加する場合
FIconData.hIcon := Application.Icon.Handle;
だけでは自動的に16x16x8のアイコンを選んで表示してくれません
この場合手動でiconファイルのどのiconを使うか指定する事は出来るのでしょうか?
>>457
うん。
>>458
ありがとうございます。調べてみます
460素人:02/05/13 23:13
>>457
複数のアイコン用意して、リソースコンパイラでリソースにして
目的のヤツ選んで表示…では?
>>457
LoadImage API
462457:02/05/14 17:37
>>460 461
アイコンを別フォルダに置いて読み込むようにしかできていなかったので
教えていただいた事を挑戦してみます
ありがとうございました
463457:02/05/14 18:04
ご報告
コンパイル後、TResourceStreamで読み込んでうまく出来ました
464デフォルトの名無しさん:02/05/15 13:09
コンポーネントの継承について分かり易く説明されている書籍で
良いものは無いでしょうか?
>>464
知らないけどDelphiのマニュアルとヘルプに一通りの事は書いてあると思われ。
俺は3.1時代そうやってた。
後、結構茨の道です。
466デフォルトの名無しさん:02/05/15 13:19
>>465
具体的にはTreeViewのTTreeNodesをカスタマイズしてString情報を一つ格納したいのですが
茨の道ですか…ヘルプで少し頑張ってみます
>>466
それならTTreeNodesを継承してメンバ追加、TTreeViewを継承して
コンストラクタとAddあたりをオーバーライド(隠匿になるんだっけか?)。
後はプリフォシズムでうまくいくはず。
>>467
今の段階だと半分ほどしか理解できませんが
その流れを追ってやっていきたいと思います。thanks
Delphiでオブジェクト指向プログラミングやっている奴いるの? 特に仕事で。
>469
むしろやらないほうが変だろ
>470
同意
オブジェクト指向を無理にやろうとせずに、コンポーネント自作すれば便利だなあ
程度の気持ちでかかった方がいいとは思うけどね。

無理にTListを継承しようとしたりするより 動的配列使いこなす方がわかりやすかったりするし
Delphi=ぽとぺた指向プログラム言語
>>470-471
Delphi使っているからオブジェクト指向やってんだと勘違いしている罠
>>474
( ´,_ゝ`)プッ
知らないなら無理して出てこなくてもいいぞ(藁
>>466
TTreeNode.Data につっこめばよい。
>>476
あ、こんな格納先があったのですね…
今継承がある程度まとまりそうなので勉強ついでに終わらせた後
こっちでも試してみます。多謝
478デフォルトの名無しさん:02/05/15 17:15
Delphiってすごい。いや凄くない
VCLが凄い
479デフォルトの名無しさん:02/05/15 19:19
onContextPopup等で、左クリックと同じ挙動をさせるために
PostMessage(Application.Handle, WM_LBUTTONDOWN, 0, 0);
PostMessage(Application.Handle, WM_LBUTTONUP, 0, 0);
なんて書いてみましたが駄目でした。ご教授お願いします
>479
Application ウィンドウにメッセージ送ってどうするつもり?
何をしたいのか書いてください。
右クリックを左クリックと同じにしたいなら、たんに OnClick
イベントハンドラを呼んだら?
>>478
IDEもすごいと思いますがどーよ
>>481
インラインコンプリートが(VC++に比べて)お馬鹿さんって聞きましたがどーよ
---
Delphi 使ったこと無い人より
483デフォルトの名無しさん:02/05/16 02:47
>>480
TreeViewで各nodeを右クリックすると一度選択されたようになり、また元の項目に戻ってしまうので
右クリックでも選択出来るようにしたいのです
484480:02/05/16 04:40
>>483

procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
TreeView1.Selected := TreeView1.GetNodeAt(MousePos.X,MousePos.Y);
end;
485デフォルトの名無しさん:02/05/16 08:52
イベントで
with (Sender as Sender.ClassType) do Caption:=name;

こう書いたけど
これって、Caption も name もSenderじゃなくて フォームのになってしまうんだけど?
インラインコンプリート?
コード補完の事かな? BCBは悪いと思うけど Delphiは普通だと思うよ
コード補完に関しては
C#>>>>>>>>>>>>>>VC>>>Del

VCは候補のコメントを、C#はヘルプを
チップヘルプで表示してくれてめちゃ便利
>>437 あれは確かに金かかってるよね。
でもあれ自作コンポで出せるの? 出せたとしても敷居が高そうだね
489デフォルトの名無しさん:02/05/16 11:42
>>484
ありがとうございました
490>488:02/05/16 11:49
確認してないけどソース中のXML形式のコメントから拾ってくるんじゃない?
ヘルプもこのコメントから生成されるわけだし。
だとすれば敷居はだいぶ低いはず。
>>485
フォームが送出したイベントだから。
いや (Sender as Sender.ClassType).Caption:='試験';
と書いてみれば判るけど、 Captionは無いとでる

as は動的にではなく、コンパイル時の状態で比較してるんじゃない?

 というか、こんなふうに書きたいならCOMにするしかないと思う
>>485
『イベントを発生させたコンポーネントの名前を
フォームの見出しに表示させたい』
ということでしたらこんな感じで.

with Sender as TComponent do
Caption := Name;

Caption はTComponentの公開プロパティではない(存在しない)ので
フォームのCaptionだと解釈され,
NameはTComponentの公開プロパティなので
Sender(がTComponentだとしてそ)のNameだと解釈されます.
DelphiにできてC++builderにできないことってないんですか?
>>494
C+++独自拡張でDelphiで出来ることは大抵できる。
じゃないとVCLの使い回しとか不可能だし(実際、結構無理してると個人的には思う)
496デフォルトの名無しさん:02/05/16 20:25
delphi + 翼のvisual Formade の組み合わせって
いいですかねぇ?
経験者、語ってください。
497494:02/05/16 20:33
>>495
DelphiとC++builderを両方使ってる人ってどういう風に使い分けてるんですか?
>>497
いるんだろうか・・・?
BCBでもPascalコンパイルできるし。
499494:02/05/16 20:50
>>498
すいません、自分の勘違いみたいでした。。

ところで、2chを見ると
C++builderよりDelphi使ってる人のほうが多いみたいなんですけど
なんででしょうか・・?
>>499
そう?2chビューアとか少なからずBCBで作られてたりするけど。
>>499
Delphiはパーソナルがフリーだから
>>498
BCBのC++はコンパイルが遅いのでDelphiのほうが気楽。
BCB5 のIDEのエディタはDelphiより低機能だし、Delphiのフォームが編集できない。
→ 普段Delphiだけ, C++でなければならないものだけBCB

としてる。Turbo Cからupgradeを続けてきたが、BCB6は申し込んでない・・。
503デフォルトの名無しさん:02/05/16 22:01
Delphiのエディタで編集中のテキストデータを、別のプログラムから読み込んだり・書き換えたりする方法は無いですか?

>>503
エディタのウインドウハンドル見つければ。
505Delフサギコ ◆zE1iiRdQ :02/05/16 23:23
           _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < IDEの機能使ってヨシ。
  ミ⊃  ミ⊃  \____________
 〜ミ  ミ
   ∪''∪ ただし保存してから開くべし

[ツール]-[ツールの設定]でダイアログを開き
[追加]で、ツールプロパティダイアログを開き


[タイトル]
  好きな名前を付ける
[プログラム]
  エディタのExeをフルパスで指定
[作業フォルダ]
  設定しなくてよい
[実行時引数]
  $EDNAME
  EmEditorの場合、行番号も引数に渡す
    /l $ROW $EDNAME


応用してIDEで開いているファイルの
ひとつ上のフォルダを開くヤツ。かなり便利。


[タイトル]
  好きな名前を付ける
[プログラム]
  エクスプローラを指定、以下のどの指定方法でもOK
    explorer
    explorer.exe
    C:\WINNT\explorer.exe
[作業フォルダ]
  設定しなくてよい
[実行時引数]
  現在開いているファイルのフォルダを普通に開く
    $PATH($EDNAME)
  現在開いているファイルのフォルダをエクスプローラで開く
    "/n", "/e", $PATH($EDNAME)
  プロジェクトフォルダを普通に開く
    $PATH($EXENAME)
  プロジェクトフォルダをエクスプローラで開く
    "/n", "/e", $PATH($EXENAME)
Delphiで使用できるSAXパーサはありませんでしょうか?
MSXML以外で探しています。(Win95+IE3の環境でも使いたい)

Googleで検索してたら、ドラムとかギターとか出てきてビビッた。
だれだよ。Delphiなんて名前のバンド(しかもサックスもいる)を作ったのは(w
>>506
ちょっとウケた。
XMLっつーとDOMばっかりでSAXライブラリはなかなか充実しないね、
XPath使えるやつもほしいんだけどなー
508デフォルトの名無しさん:02/05/17 23:27
(´-`)。o ○ (Delphi談話室がKylixの話題もOKになったそーだ…。別BBS付けてほしいな…。
Kylixの話題なんてあるのか…?)
509508:02/05/17 23:37
(´-`)。o ○ (「別BBSにして、そっちでやってほしいな…」だった…)
511デフォルトの名無しさん:02/05/18 01:15
Kylix3はC++とDelphiがワンパック。
http://www.ebob42.com/columns/cttm2002.htm
http://xml.defined.net/SAX/
を探せばあると思う。確かexpatらパーもあったし、全部実装してるやつもあったよ−な。
Delphi買っている人いる?
iru
あーあ、パーソナルにちゃんとしたヘルプがついてりゃ割れ物使わなくてもいいのになぁ。
金貯めるかぁ。
>>515
付いてるけど?
あれ読んでダメなら才能無いと思われ。
>>516
ああ、「ちゃんとしたヘルプ」じゃなくて「F1キーで出てくるあのヘルプ」と言うか何というか…
まぁ、いいか。
518デフォルトの名無しさん:02/05/18 21:30
初心者な質問ですいません、エクスプローラの詳細表示等で使われている
複数の情報を表示できるリストのような物は何というのでしょうか
リストビュー
TListView
520デフォルトの名無しさん:02/05/18 21:48
>>519
どうもです
>>515
エンプラ体験版のヘルプだけ抜き出して使え。
>>521
成る程。期限が来て使えなくなるのはIDEだけだからな。
Delphiのヘルプって読みにくいよな。
やる気なくすヘルプだよ。
ヘルプに責任を押しつけるとは・・・・・・・・・・・・・・・・・・・・・正解。
初心者な質問ですいません、Formって多い方がいいのですか?
少ない方がいいのですか?
多い日も安心です。
>>523
狂おしく同意!
誰か弱々しい僕ちゃんにDelphi教えてくれよ!(w
Formは適当に…
つか、あまりごちゃごちゃさせない程度に必要なだけ作ってよし。
>>525
フォームが少なければ少ないほどリソースは食わない。
フォームが少なくなって使いづらいアプリになるくらいなら俺ならフォームを多くする。
フォーム1000個とかヴァカやら無い限り、使い勝手を優先すべきだと思う。
だけど、フォームが多くて使いやすいアプリなんて知らん!
>>523,527
耐えてくれ。
多いのが気になるなら動的に読み込めば良いんじゃないの?<Form
532ダースベイダー:02/05/18 23:27
フォースが足りないんですが、どうしたらいいですか?
>>532
ガンダム界に行きなさい。
ルークよFormを使え
市販の本とか使わないで、Delphiのヘルプだけで使いこなせるようになった人っている?
>>532
過去ログみろ
>>535
俺。3.1時代だけど。
>>537
優秀だなぁ。
どのくらい時間かかったの?
539525:02/05/18 23:38
まさか真面目にレスが貰えるなんて…
>>all ありがとう
>>538
さぁ、高校2年くらいだし。
1年後にはコンポーネントとか書いてたなぁ・・・。
オーバーライドとかはいまいちわかってなかった。継承とかはわかってたけど。
あれから5年経ったけど今では手足のように使える。
>>535
どの程度で使いこなしたって言うの?
>>540
高二でヘルプを理解したって、尊敬するよ。
Delphiの本ってほとんど無いから、俺も今日からヘルプで頑張ってみる。
継承わかって Override わかんないってのもあれだね。あれ。手足のようだね。
>>541
ま、明確な基準は無いけど。
自分の作りたいと思った物が自由に作れるようになったらかな、俺の基準では。
>>542
だってアレしかなかったんだもん。頼れる物は。
後、本屋で必死にAPIの引数暗記して帰ったりとかw。

>>543
自分でクラス作って駆使するようなプログラムを書いていなかったと。
クラス組むだけで一仕事だし。
攻防のおもちゃプログラムにはクラスいらなかったw。
最近はオブジェクト指向の有用さは理解してるつもり。
546ジ○ジ○:02/05/18 23:48
ターコイズブルーのOverrideォ!コォォォォ!震えるぞハート!
>>542
現在の年齢で比べるより経験年数とかで比べる方が妥当だと思うよ・・・
>>546を隠匿したいのですが・・・。
>>547
それもそうだね。

>>545
Delphi以前にプログラム経験ってあったの?
>>545
>後、本屋で必死にAPIの引数暗記して帰ったりとかw。
たいした記憶力で感心するけど
英語版のAPIヘルプは付いてるんだから
その記憶力があれば英語を勉強した方がいいかもね

俺はヘタレだからMSDNを開いちゃうけど
>>549
DOSでCを一年ほど。その前にN88-BASIC2年。
>>550
Shell_Notifyicon()とか載ってなかったのよ。当時。
隠しAPI扱いだったっけか?
>>545
ああ、オレもよくファミ通の裏技暗記して家に帰ってたよ。
>>552
NT3.5か3.51
用の英語ヘルプだったな。確か。
(´-`)。o ○ (本屋で座り込んでメモに書き込んでる強者を見たときは愕然としたなぁ…)
>>555
いるいる。採用コーナーでSPIの問題写してるアフォとか。
写真取って各社にばらまいてやろうかと小一時間悩んだ。
557ジジィ:02/05/19 00:04
>>553
やったやった(藁
忘れちゃうから(コマンドだから)、語呂合わせ作ったりね。
「ろくよんじょうげのみぎひだり」とか(藁
電話して書き込んでもらおうとも思ったけど、さすがにやめたなぁ。
>>557
最近はメールしてるふりして携帯に打ち込んだり出来るよね。
新製品の型番メモったりはよくしてる。
>>551
俺はDelphiが始めての言語どす。
ヘルプのみで頑張り…ま……す…………。(泣)
>>560
一区切り付いたらCも触っておいた方が良いよ。
なんだかんだ言ってあっちの一族がデファクトスタンダードだから。
Pascalやり込んでおけば1週間かからないと思う。
>>561
一区切り付いたら…ね。(笑)
Cちゅーのは、C++でもいいですか?
もし触る機会があったら、C++Builderがいいかなと思って。
>>562
そだね。C++としての機能は一通りそろってるし。
564デフォルトの名無しさん:02/05/19 04:33
Customsortを行いたいのですが、どうやっても、"変数が必要です"とのエラーが出てしまいます
ヘルプを始めwebにあるものを、そのままの形で試しても駄目でした
環境はDelphi6personalです。情報がほとんど無いのですが
どなたか原因らしきものが分かれば教えてください
>564
ソースを晒してみろ
>>564
んで、どうやったんだ?具体的には
567564:02/05/19 09:43
遅くなって申し訳ない

procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.CustomSort(@CustomSortProc, 0);
end;
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
Result := -CompareText(Item1.Caption,Item2.Caption);
end;
>>567
で、何行目でエラー?
569564:02/05/19 09:57
3行目の@CustomSortProc,の右がわにカーソルが来た状態で
変数が必要です とのエラーです
>>569
第二引数がvarだったりとか?
>>567
後、CustomSortProcはListView1〜より上に書いた方が良いかも。
代入する時点ではCustomSortProcは宣言されてない扱いになったりとか。
572564:02/05/19 10:09
編集画面の段階でListViewに適当な文字列をいれて、それ以降はいじってない状態です
>>571
上にもってきたのでしたが駄目でした。またnilにすると動きます
>>569
調べてみた。

>VCL リファレンス
TCustomListView.CustomSort

>TCustomListView 参照 例
>CustomSort メソッドは,指定された順序付け関数を使ってリストの項目をソートします。

>type TLVCompare = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;

引数全然違うがな。

ワラタ
575564:02/05/19 10:33
あらら、申し訳ないTT
みなさんありがとうございました
あ、例では
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
Result := -CompareText(Item1.Caption,Item2.Caption);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.CustomSort(@CustomSortProc, 0);
end;

になってるのか・・・不思議だな。
Integerで受け取ってTListItem(へのポインタ)にキャストかな?
577564:02/05/19 10:43
ttp://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm
でもやはりItemになっているみたいで
また、引数をTLVCompare = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;
に合わせてみたのですがやはり駄目でした。もう少しふんばってみます
>>577
http://www2.justnet.ne.jp/~tyche/bcbbugs/reports/customsort001.html

こんなんありました。BCB用だけど。
>>577
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm

にて、

Value := lstrcmp(PChar(TListItem(Item1).Caption),
PChar(TListItem(Item2).Caption));

なぜキャスト?
580564:02/05/19 10:53
>>578
ううむ、そこも検索で出てきたので見てみたのですが
駆け出しなものでdelphiとどう照らし合わせたらいいかが分かりませんでした(^^;
>>579
ううむ、lstrcmpというのは使ったことないのですがapiなのですね
comparetextより応用が聞くのですかね…
ひとまずその段階の手前でつまづいてるようです
581564:02/05/19 11:16
確かに違う型をいれると
PFNLVCOMPAREと互換性は〜と言われるので>>579さんのアドレスが関係あるみたいです
Delphiをどうしても「でるふぃ」と読んでしまう折れをどうにかしてください。
583564:02/05/19 14:31
Oncompareを使うことで解決しそうです
いろいろと調べてくれた方々、ありがとうございました
先生!TStream型について1から教えてください!
お願いします!
>584
Readで読み込み
Writeで書き込み
Seekで移動

以上!
>>585
ありがとうございます。
ヘルプを見ると、
function Read(var Buffer; Count; Longint): Longint;
となっています。
Countには読み込むバイト数を入れるんですよね?
Bufferには何を入れれば良いのですか?
文字列sに読むとしたら

SetLength(s,100);

Read( PChar(s)^ , length(s) );
>>582
ぐちゃぐちゃのぐっちょんぐっちょんのねっちょんねっちょんにしてぐりぐりしてほしいってことか?
589デフォルトの名無しさん:02/05/20 00:09
ネイティブに発音すると「でるぴぃ・ひ!」です。
さんはい!
                        タリー
タリー      タリー
   (\_/)          タリー
   (  ´Д)    タリー              タリー
   /   つ  (\_/)   (\_/)ノ⌒ヽ、
  (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__)
TMediaPlayerでWaveファイルを再生しています。
停止状態からTMediaPlayer.Playを実行して再生すると5回に1回くらい失敗します。
MCIのErrorは起きてないようですが、再生の状態になりません。
なぜなんでしょう?


MCIはあんまり信用ならんからAPI直叩き
ふと思ったんだけど、VBのInputBoxって、Delphiでは無いのかね?
>>593
調べたことないだろ
>>>593だが、
すまん!逝ってくる
>>594
本気でごめん。
ヘルプで検索する時、ImputBoxで調べてた…
アフォすぎて本気で死にたくなったよ…
かちゅ〜しゃの人は俺のレス、透明あぼ〜んしてしておいてくれ。
>582, 588
まだ連載続いているの?
>>589-590
ワラタ
599デフォルトの名無しさん:02/05/21 00:53
まったり雑談中すいません、教えて下さい。

TRichEditで、特定行のフォントのスタイルや色を変えたいのですが
具体的にどうすればよいのでしょうか?

一応Win32APIというかEM_というprefixがつくメッセージをつかって
現在行のStringや現在行数を得たりするところまではできています。
宜しくお願いします。

環境:
Win2K Delphi6 personal
>>599
StartPos EndPos
SelAttributes
602デフォルトの名無しさん:02/05/21 01:07
フォームを継承しようとしたら、
Actionmanager1は継承できません。
とエラーが表示されました。何故ですか?
603デフォルトの名無しさん:02/05/21 01:12
一子相伝だからです。先にケンシロウが継承したと見た!
>>603
ワラタ
605599:02/05/21 01:28
>>600-601
速いレス、ありがとうございました。
早速googleとMSDNと、ヘルプをみてみます。
606デフォルトの名無しさん:02/05/21 01:37
ComboBoxのベロンと出てくるとこだけ欲しい。
もし作れるなら、誰か教えてー
607599:02/05/21 01:38
度々すいません、TRichEditについて再確認なんですが、
StartPos EndPosを用いて、コントロールのStartPos文字目からEndPos
文字目まで選択状態にして、SelAttributesで書式を決定する、
という流れでOKですよね?


黙ってやって
それからレスして
>606
あれはListBoxだ。
が、必要な時だけベロンチョと出てくるのが好きならPopupMenu使え。

横の▼ボタンが欲しいって話ならSpeedButtonで。
    \          >>609 ありがとう〜 その手があったか。
  (゚д゚) エンジョイプレイ!  PopupMenuのアニメーションの仕方変えたらいい感じだったよ。
  <(  )           あとオーナードローすれば、ばっちりいけそうだ。
    < \
ベロンチョ
612デフォルトの名無しさん:02/05/21 15:41
Enterprise版のWebSnap使ってる人いるかい?
どうかな?
613デフォルトの名無しさん:02/05/21 15:55
SQLのCREATE TABLEで、日本語のフィールド名を持つParadoxテーブルが作成できません。

環境 Delphi6 Pro (BDE5.20) + Database Desktop
症状 日本語を含む項目名をクォーテーションやダブル・クォーテーションで囲もうが、エリアス
    を設定しようが、エラーで跳ねられる。
参考 Local SQLのヘルプでは、出きると書いてあるけど、SELECT文のサンプルのみ(これは
    出来て当たり前)

 BDE5.xx以降は、数万件規模のインデックス付きテーブルを作ると、「OS内部の深刻なエラー」
というアラートとともにお亡くなりになるので、SQLでインデックスをDROPし、再度CREATEしよう
と思ったのですが、どうせならテーブルから作りなおそうとしたのですが、上記の不具合のため、
手を焼いております。

 何かよい解決方法があれば、お教え頂きたいのですが。
614モグタン:02/05/21 16:26
バビンチョ
615Delフサギコ ◆zE1iiRdQ :02/05/21 16:47
>どうせならテーブルから作りなおそうとしたのですが

  ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < どうせなら、それをやめたらどかしら。
  U  ミ   \____________
  ミ  ミ
 ノ∪∪
  レコード全削除、全Insertでよろしかない?
616506:02/05/21 22:01
>>512
ありがとん。アメリカ語はよくわからないけど、がんばって読んでみます。
617どきれいなど素人:02/05/21 22:17
Delphiで、テキストとバイナリが
混じったファイルから,

"("と")"にくくられたデータを
取り出すには一般的にはどうするの
ですか?

そのデータがutf-16の文字列の
場合、シフトJISに変換する関数は
ありますか?

618デフォルトの名無しさん:02/05/21 23:26
>>617
本屋にいけー
金がないやつぁ、図書館にいけー
619デフォルトの名無しさん:02/05/21 23:29
620デフォルトの名無しさん:02/05/22 00:12
>>615
Insertにすると、テーブル(もくしはインデックス)があぼーんされるのです。
(いま件数数えてみたら……あはは、12万件超えてますわ)
↑ちなみに郵便番号の件数です。

 よく考えたら、CREATE TABLEが駄目なら、おそらくCREAT INDEXも駄目
でしょうし、PradoxやDatabase Desktopって内部的にはSQL文を発行している
みたいなのに、どうやって実現しているのでしょうね?
Firebirdと言ってみる
>>617
バイナリ混じりならTFileStreamかな。

ウニコードは、Stringでキャストするか、
Wide〜とか使えばできるんじゃないの?
>>620
漏れもParadoxで郵便番号データ扱ってるけどうまくいってる。
違いはフィールド名が英語なこと位かなぁ。
日本語のフィールド名やめたら?
624デフォルトの名無しさん:02/05/22 07:31
>>620
[フィールド名]って書いてみれば?と言ってみる。
ageてしまった・・・
626デフォルトの名無しさん:02/05/22 10:57
>>623
時間の関係で、今回は諦めてインデックスを削除してから全件削除して、〒事業庁の
CSVから変換しました。
 ・10万件規模の場合、2次インデックスがあると書きこみ途中であぼーん
 ・ついでにBDEもあぼーん
 ・このまま続行すると、テーブルまであぼーん
 ・あとからインデックスを追加する分には問題無し

>>624
書きこみ前に駄目元で試してますが、駄目でした。
それじゃ悪背洲でんがな(w

>>626 OS は何? ファイルハンドルの数が足りないような感じの現象だね
628デフォルトの名無しさん:02/05/22 13:19
>>627
Win98SE + BDE5.xです。
(DBテーブルをローカルに置こうが、NT4 Serverに置こうが、駄目でした)

Win95 + BDE3.xでは、別に問題は無かったのですが。
(ファイルハンドラの件は、確かに盲点ですね)

なにせ12万件のデータですので、Pradoxではキツイから、何か他の方法を考えて
みようかと思います。(これまで持っているのは、データの変更を個別に行なわず、
半年に一度程度で作りなおしているためだと思います)。

(一応、D1から浮気もせず使いつづけている者ですが、今回は有難うございました)
629デフォルトの名無しさん:02/05/22 14:04
BCB使ってるんですが、
コンポーネント作りの参考にVCLのソースを見ていたら、
親クラスのプライベートメンバにアクセスしてる部分がありました。

なんでじゃ。
プライベートでも
 同じ unit つまり 同じ .PAS ファイル 内では C++でいうfreand扱いだからです
おお、そうだったんですか。ありがとう。
Delphi はじめの一歩
でブラウザ作っててエラー出たの、俺だけっすか・・・?

Lesson9で
未定義の識別子:'SCS_NAVIGATEFORWARD'
未定義の識別子:'SCS_NAVIGATEBACK'
って出るんですけど。。・゚・(ノД`)・゚・。
633デフォルトの名無しさん:02/05/22 20:14
>>632
タイプライブラリの取りこみで取りこんだユニットをUSESしてる?
>>632
これはありえないと思うのですが
「CSC」_NAVIGATEFORWARDが
「SCS」_NAVIGATEFORWARDになってませんか?
見当違いだったらスマソ
635632:02/05/22 21:43
>>633
それってLessonに出てきてませんよね?何を書けばいいんでしょうか。
Lesson1のActiveXの取りこみはやったんですが。

>>634
ブッ
>>632のカキコでは思いっきり間違ってますね…。
ソースでも記述ミスしたかも。
手元にインストしたPCがないので明日確認してみます。
636599:02/05/22 23:14
かなり遅いレスですが、ありがとうございました。
無事解決しました。

横レススマソ。続きをドウゾ↓
了解しました。
納得いきません↓
納豆はいりません→
640デフォルトの名無しさん:02/05/23 05:26
じゃあオクラはいる?↑
641デフォルトの名無しさん:02/05/23 05:46
TreeListでルート項目の二つ目のindexを求める場合
一つめの項目の子項目が1階層ならば
TreeList.items.item[TreeList.items.item[0].count + 1]
等で出せるのですが、子階層の中にさらに階層がある場合は
どのようにして調べればよいのでしょうか?
Senderを使い回帰的に行えたらと思ったのですが、旨くいきませんでした

調べられる事ができるプロパティやメソッドがあればその名前を
そのような物が無い場合、funciton作成のヒントを教えてください
D6 personalにwin32.hlpがあったのを今更ながら発見した。。。
MSDNで探し回っていた俺って。。。

TreeList?
644632:02/05/23 10:02
できました。やっぱりCSCとSCSを間違えてました。( ・∀・)σ)Д`)←俺

ところで、コンパイルは無事に終了したんですが、正常に動作してない
ようなんです。WebBrowser1が、Forwardに正常に表示できるページが
なければForwardButtonを押せない状態にしてくれるんですよね?
最初のURLを入力した後はForwardもBackも押せる状態で、押すと
やっぱりエラーがでてしまうんですが…。
645デフォルトの名無しさん:02/05/23 10:45
で、Delphiやろうかと思ってるんだが
やっぱりクライアントサイド最強かね?
>>645 70%の人は1ヶ月程仕事で使えばそう思うと思います
647デフォルトの名無しさん:02/05/23 10:57
>>646
おお。2ヶ月程度の仕事に使うんだよ。ちょうどいいね。
どのへんがいいのかな?おれCしかやったことないんだけどね。
>>641 TTreeViewの話なら、TTreeNodeのAbsoluteIndex使うといいんでないかい
>>647
 最初の1週間はコントロールを貼り付けてイベントに少しコードを書くだけでいいと思います
 次の1週間くらいから、 Cと同じように、共通の処理や再利用出来そうなコードを別ユニットにします
 3週間目はデータベース周りならTQueryに挑戦しましょう
 4週目から良く使いそうな部分をコンポーネントにしてみましょう。そしてそのコンポーネントのユニットに
 自分が良く使う手続きとかを押し込んでおきましょう

後はもう、コンポを増やせば増やす程効率があがり、クライアントサイド最強を実感出来るでしょう
650デフォルトの名無しさん:02/05/23 13:14
Delphi 6 にある TLabeledEdit、あれはどうやって実現しているのでしょうか?
似たようなコンポーネントを作りたくていろいろやっているのですが、どうしても
うまくいきません。具体的にはボタンの下に色つきの線を引きたいのです。
TButton を継承して、

type
 TMyButton = class(TButton)
 private
  Line: TShape;
 public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
 end;

constructor TMyButton.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Line := TShape.Create(self);
 with Line do begin
  Parent := self.Parent;
  Pen.Width := 3;
  Pen.Color := clRed;
  Left := self.Left;
  Top := self.Height;
  Width := self.Width;
  Height := 3;
 end;
end;

のようにやってみても色つきの線が出ません。

どなたか教えてください。Delphi 6 は Personal しか持っていないので、
ソースを見ようにも……。
651Delフサギコ ◆zE1iiRdQ :02/05/23 13:38
  ∧,,∧      こんなんでしたっけ?
 ミ,,゚Д゚彡,,,,,,    CreateHandleメソッドのinherited後に
 ∩,,,,,,,,,,,,,,⊃⊃   TShape生成処理をいれたらいかがかしら?

まちがってたら指摘たのんます

Create呼び出し
  Create

Parent設定
  CreateHandle begin
    CreateWnd begin
      CreateParams
      CreateWindowHandle
    CrateWnd end
  CreateHandle end;
そもそもボタンに TShapeは載せられないでしょう
653無責任だが:02/05/23 13:44
TButtonではなく TPanelにしたらいいのでは >>650

ボタンもパネルも外見ソックリでしょ
654Delフサギコ ◆zE1iiRdQ :02/05/23 13:50
     ∧,,∧
    ミ,,゚Д゚彡   コード見ると、Buttonの前(Zオダ)に
    (ミ   ミつ  ハイチ死体んじゃないと思われ。
     ミ   ミ
     ∪ ∪  TLabeledEditの話も出てル〜シ〜
655無責任だが:02/05/23 13:55
あっと ボタンでもOKだね。 問題は単に表示位置の問題
これで試してみて

constructor TMyButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Line := TShape.Create(self);
with Line do begin
Parent := self;
Pen.Width := 3;
Pen.Color := clRed;
Left := 3;
Top := 3;
Width := self.Width-3;
Height := 3;
show;
end;
end;
>>650で Parent := Self.Parentとしているということは、
表示したいのはボタンのクライアント外でないんかな。
657デフォルトの名無しさん:02/05/23 14:04
Del フサギコさん、ありがとうございました。ご教示の方法でできました。

type
 TMyButton = class(TButton)
 private
  Line: TShape;
 protected
  procedure CreateHandle; override;
 public
  destructor Destroy; override;
 published
 end;

procedure TMyButton.CreateHandle;
begin
 inherited CreateHandle;
 Line := TShape.Create(self);
 with Line do begin
  Parent := self.Parent;
  Pen.Width := 3;
  Pen.Color := clRed;
  Left := self.Left;
  Top := self.Top + self.Height;
  Width := self.Width;
  Height := 3;
 end;
end;

これでボタンのすぐ下に 3 ピクセルの赤い線が引かれました。あとはボタンの
移動とリサイズに反応して線の位置や長さを変えればよさそうです。

どうもありがとうございました。
658657:02/05/23 14:07
>>653
実は以前に TPanel を継承して似たようなものを作ったことがありますが、
今回は TButton を継承して作ってみたかったのです。Delphi-ML の過去ログを
検索すると誰だか分かってしまいますが……。

提示いただいたコードも試してみます。どうもありがとうございました。
漏れでは解決の仕方がわからんので別の方法を提案してみる。

TButtonのWM_PAINTメッセージを乗っ取って、
自分の描画が終了したら、親となるコントロールに直接描画したらだめなのかしらん?

  TTestButton=class(TButton)
  private
    procedure WMPaint(var Msg:TWMPaint);message WM_PAINT;
  end;

procedure TTestButton.WMPaint(var Msg: TWMPaint);
var
    PCanvas:TCanvas;
    LRect:TRect;
const
    LHeight=3;
begin
    inherited;
    Msg.Result := 0;

    PCanvas := TCanvas.Create;
    PCanvas.Handle := GetDC(Parent.Handle);
    try
        PCanvas.Brush.Color :=clRed;

        LRect:=Self.BoundsRect;
        OffsetRect(LRect,0,LHeight);
        LRect.Top := LRect.Bottom-LHeight;

        PCanvas.FillRect(LRect);
    finally
        ReleaseDC(Parent.Handle , PCanvas.Handle);
        PCanvas.Free;
    end;

end;

深くは考えていないのでたぶん問題が出ると思うが。
既に解決してるんでないの
661659:02/05/23 14:22
あ、やっぱだめだわこの方法。
忘れてくれ。
>>649
Σ(゚д゚lll)ズガーン
だいぶ長いこと3.1 Proを使ってますが、最初の1週間の作業
以外やったことない・・・。だって困らないんだもん。

3.1 proで作ったデータベースを 6 personalで読み込もうとしたら
DBTextやDBNvavigateが見つかりませんとか出ますけど、
やっぱり駄目なんでしょうか。会社がケチで金出してくれないので…。
663Delフサギコ ◆zE1iiRdQ :02/05/23 14:36
          わざわざ継承するのはイヤンだったので
     ∧,,∧   TCompo継承で
    ミ   彡   MainControlとSubControlプロパをリンクで設定したら
    (o  o)  Mainの移動に追随してSubが動くような奴ツクタ
     ミ ν ミ  いるですか?、あまり使い勝手はよくないけれども−
     ∪ ∪ 
  メセジのフックは難しかたな。

>Delphi-ML の過去ログを
>検索すると誰だか分かってしまいますが……。
ま、詮索はせずに…
664Delフサギコ ◆zE1iiRdQ :02/05/23 14:56
     ∧,,∧  ウプっしました。
    ミ,,゚Д゚彡   
    (ミ   ミつ せっかくなので。イランでも使え
     ミ   ミ
     ∪ ∪

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022133258
665650:02/05/23 16:40
>>664
ありがとうございます。今回はこれを直接使うことはしませんが、ソースを見て
大変参考になりました。実はあの後ちょっと詰まっていたところでしたので。

本当にありがとうございました。
666デフォルトの名無しさん:02/05/23 20:41
ポップアップメニューの枠の部分を自分で書くことはできまスでしょうか
667デフォルトの名無しさん:02/05/23 23:27
漏れ獣の数字だage
668デフォルトの名無しさん:02/05/23 23:39
某所で「ウニコード・UTF-16・Tfilestream」の質問してる  
「ミカンの皮」っての、マルチポストだよネ?     
ここで聞きまくってるのと。    
>>668
お前もしつこいな。スクリプトか?
670デフォルトの名無しさん:02/05/23 23:43
>>669
ご本人ですかぁ?マルチポストはイカンよなぁ。
>>670
別人だけど?
お前のマルチポストが目に余ったから抗議したまで。
672デフォルトの名無しさん:02/05/23 23:52
>>671
「人に質問しといて、どこかがビンゴすればOK!レス無いところはシカト!」
ってのと、どっちが悪質かね?
シカトされたとこの立場は?
>>672
はい、PCQA住人なもんでね。
マルチの問題は正確に認識していると思うよ。俺は。
だからといってそれがお前が抗議文マルチポストした理由にはならない。
>>672
ああ、シカトされた人だ(劇藁嘲笑
>>672
ミカンの皮とやらを知らない者にとっては、
お前のマルチポストとage荒らしがうざい。
676666:02/05/23 23:57
漏れの質問が流れてるから嫌い
677672:02/05/23 23:58
>>674
えーと。されてないデスヨ。
「(劇藁嘲笑」←なにこれ。

>>675
sageますた。



ま、これで二度とここで聞けまい。
>>676
ああ、シカトされた人だ(劇藁嘲笑
680666:02/05/24 00:03
笑われちゃいまスた
>666
できないんじゃない?
682666:02/05/24 00:30
あら、そうですか。残念・・・。
>>681 ありがとうございます。
683666:02/05/24 02:03
ス・テ・キ♪
684666:02/05/24 02:23
>>683
騙り騙られ2ちゃんる
>>666-685

 ウ ザ イ
この板も(精神年齢)21禁にすべきだ(w
21歳以上禁止?(w
689デフォルトの名無しさん:02/05/24 12:44
>>648
返事が遅くなってすみません
そのabsoluteindexを求める方法がわからないのです
親から*個目を指定するプロパティがあるのでしょうか?
>>663
年々基準の精神年齢って変化すると思うんですけど何を指標にすればいいの?
偉そうに言うんだから客観的な判断基準があるんでしょ音符
691Delフサギコ ◆zE1iiRdQ :02/05/24 12:54
 ∧,,∧ 俺かよ…
ミσ゚Д゚ミσ
せっかくなのでDelフサさん意見をどうぞ
>>689
ノードの親の中でのインデックス
Node.Index

ノードのルートからのインデックス
Node.AbsoluteIndex

ノードのn番目の子ノード
Node.Item[n]

ルートからn番目のノード
TreeView.Items[n]

ノードからn番目のノード
TreeView.Items[Node.AbsoluteIndex + n]

    (゚д゚) <これらで解決シル!!
   ~(  )−
    / >
694デフォルトの名無しさん:02/05/24 17:38
database desktop って使ってる?
作ったDBってのはアプリケーションと一緒に配布できるの??
695デフォルトの名無しさん:02/05/25 00:58
>>693
大元の親の子の数(?)はItems.Countとなってしまい求めることが出来ず困って居ます
スマートではないですがこんなかんじで書いてみました
while (TreeView1.Items.Item[nodelevel].Level <> 0) or (TreeView1.Items.Item[nodelevel].AbsoluteIndex = 0) do
begin
Inc(nodelevel);
end;

と書いてみたのですが、このようなローラー作戦みたいな事はやはり処理時間も長くなってしまうのでしょうか?
696デフォルトの名無しさん:02/05/25 01:59
 A
 ┣B
 ┃┣C
 ┃┗D
 ┣E

>>695 このツリーで何を求めたいのか詳しく説明プリーズ。
697695:02/05/25 02:29
Eです。
奇麗な表現に感動
>>697 = 641
>TreeListでルート項目の二つ目のindexを求める

procedure TForm1.Button1Click(Sender: TObject);
var
i,Count:integer;
begin
Count := 0;
for i := 0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Level = 1 then begin
Inc(Count);
if Count = 2 then
Label1.Caption := TreeView1.Items[i].Text;
end;
end;

広場でもレス、書けよ
699デフォルトの名無しさん:02/05/25 03:49
広場は〜広いから〜広場と〜言うの〜♪
700695:02/05/25 03:50
>>698
ありがとうございます。まだ見たばかりで
これからソースの流れを理解したいとおもいますが助かりました

あと広場とは他のスレでしょうか?私はここにしか書いていないので
もしかしたら他の方とかぶっているのかもしれません
一応アドレスを張っていただけると助かります
ルートの2つ目の子なら単に
TreeView1.Items[0].Item[1]
で、いいんでないかい。
>>701

ほんとうだぁ。

Label1.Caption := IntToStr(TreeView1.Items[0].Item[1].AbsoluteIndex);
>>702

結局 >>648 に戻るわけね
漏れが648で TreeView1.Items[0].Item[1].AbsoluteIndex
と書いておけば済んだってオチ。<(゚д゚) テヘッ
705デフォルトの名無しさん:02/05/25 10:31
VCLのソース うpキボン
・・・
オーイ
>>705
誰かつっこんでやれw
711695:02/05/25 12:14
うあ、皆様ありがとうございます
>>696
さんの表で言うとAは実際には表示されておらず(大元のルートという存在)
B,Eが表示されている項目(level0)。ていうつもりで話していました。説明が何度もたりず申し訳ないです
Items.item[0](=Items[0]?かな ヘルプにはそんな感じで書いてありました)
の中の階層という事ではありませんでした
一応解決できたと思うのでソースをかいておきます

procedure TForm1.Button1Click(Sender: TObject);
var
nodelevel,rootindex: integer;
begin
nodelevel := 0;
rootindex := 0;
while (TreeView1.Items.Item[nodelevel].Level <> 0) or (rootindex <> 1) do //1は検索したいindex
begin
if TreeView1.Items.Item[nodelevel].Level = 0 then
Inc(rootindex);
Inc(nodelevel);
end;
showmessage(inttostr(TreeView1.Items.Item[nodelevel].absoluteindex));
end;

まだ質問に慣れておらず、みなさんを混乱させて申し訳ありませんでした
なるほど、B、Eがレベル0でAが存在しないと。
それじゃ、

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(TreeView1.Items[0].getNextSibling.AbsoluteIndex));
end;

必要な回数getNextSibling繰り返せばヨシ! (゚д゚)
713695:02/05/25 13:59
>>712
おお、これこそ求めていたものです。
これで処理速度を保つことが出来ます、ありがとうございました
714デフォルトの名無しさん:02/05/25 23:48
特にDelphi固有の問題じゃないのですが、、、

Windowsの標準のスクリーンセーバーである3Dテキストやラインアートのファイルを
取得して実行させたいのですけど、システムフォルダの中に*.scrのファイルとしては
無いみたいです。

どこにありますか?
>>714
検索もかけずによくもまぁぬけぬけと。
>>714
http://pc.2ch.net/test/read.cgi/tech/1020772896/l50
↑こっちで聞いてくれない?
717デフォルトの名無しさん:02/05/25 23:56
>>714
オカンのタンスの上から2段目にあります。
もうねようね。おやすみ
基本的なことなんですが、
関数内でC言語でいうstatic変数を使いたいのですがどうすればいいですか?
関数が呼ばれるたびに同じ値を使いたいので。
グローバル変数にしないとだめなんでしょうか。
>>719
procedure 〜
const
ここに書いてね。
var
 ・
 ・
 ・
721デフォルトの名無しさん:02/05/26 00:54
static変数とやらと、グローバル変数の違いは何?
利点は何?
>>721
スコープがローカルかグローバルか。

前回の状態をフィードバックできる関数が書ける。
723721:02/05/26 00:56
>>722
ふーむ。サンクスコ。
724719:02/05/26 01:01
>720
const節は定数宣言じゃないですか?
自分が知りたかったのは静的変数のことでちょっと違うんですが。
>>724
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0910.html
検索したら速攻引っかかった。不思議。
>>724
それが違うんだ。
ヘルプで型付き定数検索してみ。
727719,724:02/05/26 01:05
失礼しました。
720,726さんの言われるとおりでした。
ありがとうございました。
ヘルプ見ればわかるけど、$Jコンパイラ指令がONのときのみ書き換え可能で
Delphi5はデフォルトONだったが、Delphi6でデフォルトがOFFに変更になったからややこしい。
720さんのコードのようにローカル変数的に書いても値が保持され続ける
というのはなんか気持ち悪いね

const
 変数名: 型名 = 初期値;

procedure 〜
var
 ・
 ・
 ・

こうしたい気分
730729:02/05/26 01:20
でもスコープが違うか・・・慣れるしかないね
>>729
>720さんのコードのようにローカル変数的に書いても値が保持され続ける
それがstatic変数だと思われ。
732729:02/05/26 01:35
>>731
static変数っていうのはインスタンスではなくクラスの属する変数っていうことで
スコープ云々の話ではなかったような・・・

Delphiの場合、implementation部に書くことでunit外からのアクセスは禁止できるけど
そのクラス内からだけアクセスできるようには出来なさそうな気がする
(ローカル変数的に書くと他のメソッドからも見えなくなる)
×クラスの属する
○クラスに属する
ObjectPascalにはCのfriendみたいな機能が無い代わりにunitが
識別子のスコープの単位になっている。
だから>>719みたいな用途だったら、そのクラスまたは関数が定義
されているunitのimplementation部でグローバル変数を書けばよし。
そのグローバル変数を初期化したければ、initialization部を使う。
735グロイザーX:02/05/26 03:01
つーか、結局delphiにおいてはグローバル変数だっちゅーことで解決ですか?
皆様は以下のif文でどれが一番綺麗だと思いますか?

例1
if … then
begin
 …
end else if … then
begin
 …
end else
begin
 …
end;

例2
if … then
begin
 …
end
else if … then
begin
 …
end
else
begin
 …
end;

例3
if … then
begin
 …
end
else if … then begin
 …
end
else begin
 …
end;


私は例2の様に書いているのですが、
end
else
begin
の部分が美しくないと思ったので、変えようと思っています。
稀に
end else begin
の様に全部同じ行に書くコードも見たことがありますね。
例に無い書き方でお勧めがありましたら、書いていただけるとありがたいです。
737永久ループ:02/05/26 04:38
if … then begin
  …
 end
 else begin
  if … then begin
    …
   end
   else begin
    …
end;
738永久ループ:02/05/26 04:39
あ、beginが多かった。
if ・・・ then
begin
 ・・・
end else
if ・・・ then
begin
 ・・・
end else
begin
 ・・・
end;
740739:02/05/26 04:53
>>739はオススメってわけじゃないよ。
俺はこう書いてるってだけ。
741デフォルトの名無しさん:02/05/26 07:57
レッツビギン!
俺はこう書くのが好き
      if … then begin
 …
end else if … then begin
 …
end else begin
 …
end;
743436:02/05/26 08:31
>>737
???

>>739
それも綺麗で読みやすいですね。
でも、elseの部分が
if …then
 …
end;
if …then
 …
end;
と読み間違えたりしそうで心配です。(笑)
とりあえず、私の中での選択候補に入れさせていただきます。

>>742
それマジですか?
本当だったらかなり凄いんですけど!
しかも綺麗だし…。
芸術的だと思います。
可読性も構造化しないなら良いのですが、
構造が複雑になってくるとあまり読みやすくない気がします。

他にも投票や新しい案など、よろしくお願いします。
744742:02/05/26 09:15
構造化? さらにネストする時? ホントはこれが3行以上長くなるなら

   if … then proc1
else if … then proc2
else       proc3
 ;
というように書くよ
>>732
>static変数っていうのはインスタンスではなくクラスの属する変数っていうことで
>スコープ云々の話ではなかったような・・・

それ、JavaとかC#のキーワードがなぜか同じなお話。
後、Cでもローカル変数ののstaticキーワードとグローバル変数のstaticキーワードは意味が違う。
上位ワード・下位ワードの値を一つにする方法を教えてください。
また、分ける場合はHi, Lo関数で大丈夫ですか?
>>746

MakeLong()

748デフォルトの名無しさん:02/05/26 10:44
>>717
ごめん。おかんのタンスの中は探してなかった。見つかった。ありがとう。
749746:02/05/26 10:46
>>747
 32bitと32bitを引数に入れて、返値が64Bitになる関数はありませんか?
>>749
そもそもOPascal64bit変数合ったっけ?
751746:02/05/26 10:49
>>750
 Int64型があります。(確かDelphi4からだったかな)
>>745 サンクス
C的な意味でのstaticの話だったわけですね
Javaが別の意味に同じキーワードを使って、C#もそれに倣ったと
(ローカル変数のstaticに近いから、全然別というわけでもないか)

勉強になりました(というか、勉強不足・・・恥)
>>752
って言うかC#ってstatic使えないんだ。
試したらコンパイルエラー。
大発見。
>>作ればいいし関数にしなくても

Int64Rec(変数名).Lo= xx;
Int64Rec(変数名).Hi= yy;

と2行で書けるし
>>751

long a = 5385,b = 46601;
int64 c;

c = a;
c << 32;
c |= b;

もしくは
c = a * 4294967296 + b;
>>754
共用体ですか。なるほど。
757無責任だが:02/05/26 11:08
アセンブラ関数にすれば 本体書かずに

function MakeInt64(lo,Hi:Integer):int64;asm end;
758無責任だが:02/05/26 11:10
あ 呼び出し規約 register を付けといた方が安全か
759デフォルトの名無しさん:02/05/26 11:12
>>748
うちのおかん、もう55歳だけど親父と結婚する前の職業がプログラマーだよ。
Windows知らないくせにブラインドタッチだよ、マジで。
紙テープにセーブしていたとか言うんだよ。
760746(=751):02/05/26 11:13
>>754
 すいません、共有体という言葉は聞いたことあるんですが、
それがどういう仕組みなのか未だに理解出来ません。
解説してあるサイトを探しても見つからなくて…。

>>755
 C言語コードは理解出来ません…。すみません。
761760(=746=751):02/05/26 11:14
>>757
 アセンブラ関数は分からないんですが…。
762デフォルトの名無しさん:02/05/26 11:17
Windowsの標準のサウンドファイルが置いてあるフォルダを取得出来るAPIは無いでしょうか?
Getsystemdirectoryしか見つからない。。。
763無責任だが:02/05/26 11:20
>>761 判らなくても

function MakeInt64(lo,Hi:Integer):int64;register; asm end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption:=IntToHex( MakeInt64(1,3),16);
end;

みたいに使うといいよ

>標準のサウンドファイルが置いてあるフォルダ
??
「My Documents\My Music」のこと?
SHGetSpecialFolderLocationでMy Documents探せば
:\WINNT\Medi
とかか?
>\WINNT\Medi
\WINNT\Media
767デフォルトの名無しさん:02/05/26 12:21
>>764-766
レスありがとうございます。
winnt\mediaやwindows\mediaの事です。
とりあえず、Getwindowsdirectoryに追加する形が一番早いみたいなのでそれで処理しました。

あと、最後にいくつか教えてください。
フォームのキャプションとタスクバーを消すにはどうしたらよいのでしょうか?
もう一つですが、フォームを透明化するにはどのようにしたら良いでしょう?

wsmaxmizeでもCaptionは残ってしまっているので困っています。
バックアップ処理をするスクリーンセーバーを作っているので画面を単色にしたいのです。
フォームの透明化はImageをはりつけて色々とやっているのですが、なかなかうまくいきません。
将来的にはImage上で簡単な図形を書こうと思っています。
どうかよろしくおながいします。
フォームを透明にする十分な理由が無いなら リージョンを作った方がいいでしょう
769デフォルトの名無しさん:02/05/26 12:56
>>768
リージョンですか。ちょっと調べてみます。
フォームのタイトルバーを消すのはBorderStyleをいじって出来ました。
>>760
record型において、同じメモリ領域に複数のフィールド名を持たせる方法。
同じメモリをつかってるから、たとえば、
hoge.foo := 1;
とやれば
hoge.bar
も自動的に1になったりする。
Cではunion、Pascalではrecord宣言の中にcase ... end; を入れる。
771デフォルトの名無しさん:02/05/26 13:12
なんでみんなRubyを貶すのかなー?
もしかして劣等感?僻んでる?
日本発の言語で世界に評価されているのはRubyしか存在しないんだから
みんなでRubyを盛り上げてC++やDelphiなんて、プププのプーってぐらいに
しなきゃ。
実際今まで10年ぐらいプログラミングしてきた俺だけど、Rubyより優れた
言語に出会った事がないよ。
やっぱり新しい言語は優れているんだろうね。



772760(=746=751) :02/05/26 13:14
>>763
 本当だ、理論は分からないけど、出来ました。
ありがとうございます。

>>760
 なるほど。
type
TFoo = record;
case Integer of
0:
1:
end;
っていうのを見たことがあるんですが、これはどうなるのですか?
スクリプト言語とコンパイル言語を比較しようとする>>771は頭がおかしいのでは無いかと思う。
比較するならPerl,PHP,Phytonとかとしろ。
>>773
>771は頭がおかしいのでは無いかと思う。
まさしく・・・771はマルチポスト
775デフォルトの名無しさん:02/05/26 13:25
puuuuuuuuuuuupupupu
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delphi
776Rubyist:02/05/26 13:26
Ruby is Nanbar one!!
>>776
英語のつもり?思いっきり綴り間違えてるぞ
>777
アンチRuby厨の罠
779デフォルトの名無しさん:02/05/26 13:55
Delphi6 Enterpriseの評価版をインストールしたんですが、プログラムを実行す
る時に必ず「WindowsがBorland Delphi6を設定中です。」というダイアログが出
てしまいます。
設定が終われば二度目の実行時にはダイアログが出なくなるのですが、Delphiを
終了してもう一度Delphiを起動するとまたダイアログが出てしまいます。
インストールした環境はWindows 2000のServicePack2です。
レジストリが壊れてるのかと思ってOSから入れなおしてみましたが他にアプリが全
く入っていなくても同じ現象が起こります。
どなたか解決策をご存知無いでしょうか?
クラック法を伺いたいのでしょうか?
781デフォルトの名無しさん:02/05/26 16:25
>>780

めっそうも無い。
正規の使い方をしてるだけなのに、実行の度にダイアログが出てウザいんですよ。
もしかしてこれは評価版の仕様なんですか?
Delphiにはx = a ? b : cのような3項演算子は無いのでしょうか?
if a then
x := b
else
x := c;
とやるしか無いのですか?
>>782
Pascalは行儀の良い言語なのでそう言うのは無いですな、確か。
>>782
ありません
3項演算子のように極度に記号的なものは
プログラミング言語の中では特異なものだと考えます
>>782
IfThenって関数が出来たが・・・使いたきゃどうぞ。
786782:02/05/26 21:28
>>783-785
ありがとうございました。
大抵の言語ではifより3項演算子使った方が高速になると思ったもので…
>>786
最近の最適化は賢いから小手先のコードいじりって無駄なことが多かったり。
3項演算子でもアセンブラになれば同じ子としているようにも思える。
この反応の仕方がやっぱなんか異質
>>788
ちゃんとどの発言か指してね。
>>783
>>784
>>785
煽りがよく来るのもわかる気がする。Del使いだけどね。
>>790
Delphi関係の参考書によく書いてあることだけど。
> Pascalは行儀の良い言語なので
> 3項演算子のように極度に記号的なものはプログラミング言語の中では特異なものだと考えます
> ・・・使いたきゃどうぞ
おせっかいが多いのは事実だと思う
困ってるとき質問投げるとすぐ答えてくれるから便利だけどw

その便利さに比べたら言語擁護ぐらい目をつぶれw
まあね
>>788は2ch初心者の小さな女の子なの・・・。
許してあげてね♥
>>792
事実。その代わり融通が利かない場面もしばしば。
事実。上に準ずる。
function IFTHEN(a :boolean;b :Integrer;c :integer) :integer;
begin
if(a)
Result :=b
else
Result := c;
end;
こんな関数を呼び出すのは非常にばからしいと私は思いました。
アフォが湧いてきたな
>>797←典型例
>>798は自覚があるらしい(藁
ObjectPascalが嫌なら他の言語使え。誰も止めん。
質問スレなのにおせっかいが多いだ? 戯言がお好きなようで。
次の質問どーーーーーーーーーーーーーぞ
質問です。
Delphiに文句を言う奴に限ってBCBを使いたがらないのはどうしてですか?
Delphiはなんで質問スレが何種類もあるの?
どういう時にどれを使うとかいう決まりでもあるとか?
Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/
モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/test/read.cgi/tech/1021201697/
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室B
http://pc.2ch.net/test/read.cgi/tech/1021554929/
>>802
私はDelphi嫌いですがBCB好きです。
>803
一番下のは雑談スレですが。
>>805
あ、そうなんだ。
>>803
本家
ネタスレのパロディ
ネタスレ
>>800
> ObjectPascalが嫌なら他の言語使え。誰も止めん。
> 質問スレなのにおせっかいが多いだ? 戯言がお好きなようで。

>>800>>793にレスしてるんだよね。
おせっかいが多いといったのは彼だけだから。

でも、>>793のレスを見る限り、彼はDelphiが好きなんだよね。
その彼に対してこんなレスつけちゃうんだもんなぁ。

>>788の「異質」は俺も感じる。
>>808
ホントなんでこんなに引っぱるかなあ・・・。
「粘着」を感じる。
誰もObjectPascalが嫌なんて言ってないしな
どこからそれ出てきたの?>>800 (w
>>810
じゃあ何が嫌い?
812デフォルトの名無しさん:02/05/26 22:12
非常に初歩的な質問でごめんなさい。
StartBtnをクリックするとTimeLbl.Captionが秒を刻むようにしたいです。
以下の様にコーディングすると、コンパイルはできましたが、TimeLbl.Captionが秒を刻みません。
ケアレスミスだと思うのですが、どこが間違えてるのかわかりません。(^^ヾ
誤りがありましたら、指摘していただけたらありがたいです。m(_ _)m

var
 Form1: TForm1;
 Time_: TDateTime;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Time_ := IncSecond(Time_);
 TimeLbl.Caption := FormatDateTime(ShortTimeFormat, Time_);
end;

procedure TForm1.StartBtnClick(Sender: TObject);
begin
 Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TimeLbl.Caption := FormatDateTime(ShortTimeFormat, 0);
end;

ちなみに、ちゃんとTimer1.Intervalは1000になってます。
>788,808
「異質」なんて言われても通じないんですけど。
無駄な独り言はよそでやれ。
>>810
煽り屋は呼んでないよ?
>>812
TDateTime使わずにIntegerでも良いと思われ。
後、グローバル変数にするよりクラスのメンバにした方がgood。
異臭ってどんな臭いですか?
817デフォルトの名無しさん:02/05/26 22:22
>>812
ShortTimeFormatのせい。ヘルプみてみそ
時:分になっちまう
818デフォルトの名無しさん:02/05/26 22:26
>>815
ありがとうございます。
TDateTime型ではなくInteger型を使用するということは、
分の部分と秒の部分で2つの変数を使うということですよね?
何か面倒な気が…(^^;
Time_変数をクラスのメンバにした方が良いのはどうしてですか?
未だにメンバにする場合、グローバル変数にする場合の使い分けがよくわかってないもので…(汗)
819808:02/05/26 22:27
     ヽ( ゚д゚)ノ 失礼しやしたー
   -=≡ (  )へ
       >
>>818
ああ、そうか、分もはかりたいのね。

Format("%02d;%02d"[Time div 60,Time mod 60]);

とか。
>>818
クラスにするとスコープ(アクセスできる範囲)がクラス内に留まる。
この場合、TimeはTForm1のメンバから呼び出される可能性は無いのでクラスメンバにした方が望ましい。
まぁ、2つ以上のインスタンスを生成するようになれば少しは実感できるかも。
(´-`).。oO(同じDel使いのこぼした感想がこんなことに・・・恐るべし
>>822
半分言いがかりだしw

次に来るであろう

「便利なのにどうしてないんでしょうかねぇ?」

と言う質問を見越しただけという意見も。
もうええやん。
825デフォルトの名無しさん:02/05/26 22:47
適当なクラスを使って生成したインスタンスは、例えプログラム終了直前でもフリーする必要があるのでしょうか?
>>825
すべきです。
827デフォルトの名無しさん:02/05/26 22:50
>>826
では、フリーしないと実際に問題が生じますか?
>>817
おっしゃる通りでした。
ありがとうございます!

>>820
FormatDateTime(ShortTimeFormat, Time_);
          ↓
Format("%02d;%02d"[Time div 60,Time mod 60]);
そうしてみたら、コンパイルできなくなっちゃいました。
つか、FormCreateイベントで
FormatDateTime(ShorTimeFormat, 0);
にしてしまうと、TimeLbl.Captionが「12:00」になってしまいました。(笑)

>>821
Time_変数をTForm1のクラスにすると、TForm1のメンバからしか参照できないっていうことですよね?
>この場合、TimeはTForm1のメンバから呼び出される可能性は無いので
この場合、Time_変数はTForm1のメンバであるTimerのイベントから呼び出されてということにならないのですか?
>>828
Format("%02d:%02d",[Time div 60,Time mod 60]);
コンマ忘れ。でもこれくらい補正してくれ〜。
なお、Time :Integerでお願い。
>>828
継承して、
TCountTimer(TTimer)
とかするならもちろんTCountTimerのメンバにあった方がいい。
>>827
それは状況によります。
メモリその他の資源はOSが解放してくれますが( Win9xだと頼るのは危険)
クラス作成者がデストラクタに何か意味のある動作を割り当てているかもしれません。
>>831
なるほど。ありがとうございます。

別の問題ですが。
Haltを使う場合も同様の危険をもつと認識していいのでしょうか?
>>832
Windowsのリソース管理機能に依存。
>>832
特に事情がないかぎりオブジェクトはすべてFreeして正常終了すべきだと思いますが。

malloc and freeとはまた別の問題。
>>829
>>828を書き込んだ時点で、コンマの追加やってましたよ。
で今、Time_: Integer; にして、IncSecond → Inc にしてみましたが、コンパイルできません。(泣)
まぁ、まだ良くわからないので、原始的な方法でやってみようと思います。
ありがとうございました。

>>830
子クラスからもその変数を使いたい場合は、ってことですよね?
ありがとうございます。
836デフォルトの名無しさん:02/05/26 23:35
±5秒の精度で時刻比較をしたいのですが、TDateTime型をif文で
if Atime=Btime then
等と入力しても千分の一秒単位で比較することになってしまいます。
桁を丸め込んで比較しても同一タイムでしか比較出来ません。
このような場合、良い方法は無いでしょか?

>>835
ごめーん。"->'だわ。
最近C系の言語使うことが多くて・・・申し訳ない。
>>836
if Abs(ATime - BTime) / ( 1.0 / 24 / 60 / 60) < 5 then
839A:02/05/27 00:11
>>836
てきとーな思いつきだけど、これでどう?
if Abs(Atime-Btime) < EncodeTime(0,0,5,0) then
840Delフサギコ ◆zE1iiRdQ :02/05/27 00:17
           _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < MinutesBetween 関数つかうとよし。
   U  つ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ D6から追加された関数だと
       思うけど。
>>840 それ、名前のまんま分数を返すと思ふ
842Delフサギコ ◆zE1iiRdQ :02/05/27 00:32
   ∧,,∧     /えっと、それをつかって
   ミ;゚Д゚彡  < 差が5分以内かどうかを求められると
   ミU  U    \思うんだけど....
 〜ミ ,, ミ
   ∪ ∪
±5秒の差があっても同一時刻と判定したいんでない?
びょう べう 【秒】
ふん 【分】
 秒 VS 分
 カーン
    (゚д゚)
    ( ×) ファイッ
    / >
846Delフサギコ ◆zE1iiRdQ :02/05/27 00:49

 ショボーン
  ∧,,∧    / 秒だった。。。。
  ミ  ,,ミ  < 
  し   ミ  \ きっと、脳の一部が壊死してんだ....
   ミ 〜ミ
   ∪''∪  欝氏欝氏

function FiveSecondsEqual(DateTime1, DateTime2: TDateTime): Boolean;
begin
 if SecondsBetween(DateTime1, DateTime2)<= 5 then
  Result := True
 then
  Result := False;
end;
カンカンカーン
秒 won!
848835:02/05/27 05:18
>>837
おはようございます。
それも予測して、 ' ' でも試してみましたよ。(^^;
でもできませんでした。(泣)
849デフォルトの名無しさん:02/05/27 08:36
836です。
みんな、ありがと!
if文の中で()を使えば単純計算も出来るだなんて知らなかったよ。

>>846
thenが二個あるのは秘密にしとくね。
教室のみんな、ありがとー!
お兄ちゃん助かりまくりだゾ!!
851デフォルトの名無しさん:02/05/27 09:55
Delphi5.0で開発したプログラム(データベースはparadoxを使用)をパソコンにインストール
したら、「認識できないデータベースです」というエラーメッセージが表示
されまともに動きません。
どうもデータベースのエリアスが正しく設定されていないみたいです。
インストールにはDelphi5.0付属のInstallshieldを使用しています。
googleなどで検索してみましたが該当するものがありません。
インストールしたパソコンは98、XPです。
ただほとんどの98、XPパソコンでは正しくインストールできるのですが
メーカパソコンでosをアップグレードしたり、再インストールしたパソコン
でこの障害が発生します。
(たまたまかもしれない)
どなたかお助け下さい。
>>851
コントロールパネルの BDE Administrator で設定するとよろし
大抵の場合、間違った PATH が入っている(Installshieldの不具合かも)
>>785
3項演算子と違い、引数があからkじめ評価されてしまう罠。
854デフォルトの名無しさん:02/05/27 19:07
onClickイベントハンドラで、TStringListの文字列を操作する手続き(SetQList)とQListを参照して処理する手続き(Question)
を呼び出したら、onClickのend;の部分で例外が発生してしまいました。
どこを直したら例外が出なくなるか教えてください。m(_ _)m
SetQList・Questionとも、TForm1のメンバとして宣言してあります。

procedure TForm1.StartBtnClick(Sender: TObject);
begin
 SetQList;
 Question;
end;

procedure TForm1.Question;
var
 QNum: Integer;
begin
 QNum := Random(QList.Count);
 QEdit.Text := QList[QNum];
end;

procedure TForm1.SetQList;
begin
 QList := TStringList.Create;
 try
  with QList do
  begin
   //文字列の操作(省略)
  end;
 finally
  QList.Free;
 end;
end;
QListをFreeしてるのに Questionで参照してるんだから当然

例外を出さないようにするには QListを永続的になるようにする必要がある

簡単なのは TStringListを TStringsを持つTComponent継承のどれかにして
フォームのOnCreateで オーナをフォームにして作っておけばいい
856デフォルトの名無しさん:02/05/27 19:35
むっちゃ厨房な質問すいません、
他の言語と比べてDelphiのメリット、デメリット
WinAPIの使用、DirectXの使用について問題点なんかあったら教えてください
857854:02/05/27 19:39
>>855
レスありがとうございます。
言われてみれば当たり前ですね。(^^;
QList: TMemo; で宣言し、Linesプロパティで文字列操作をしてみようと思いました。
>フォームのOnCreateで オーナをフォームにして作っておけばいい
オーナをフォームにして作るってどうやるんですか?
>>856
メリット…
コンパイルが速い。
利用している言語の元の言語が教育用に適した言語。
VB並に簡単にプログラムが書けてランタイムがいらない(BCBもそうだが)
デメリット…
廃れる予定。
Delphiは言語じゃない。
最新のDirectXを扱うにはC++で扱うより面倒(ヘッダ移植するか探してこないとならないから)
APIも最新のじゃなければ普通に使えるがM$がわざわざObjectPascal用の
PlatformSDKを作ったりはしないので、
最新のAPIを使いたいなら自分で定義する必要があってやはり面倒。
結論…
最新の技術使いたきゃBCB使えw
実際のところ業務用アプリを書いてて最新の技術が必要な場合と言うのは
そう多くはないんだけどね

Delphiの最大のメリットはコンパイルが速いことに加えて
コンパイラの型チェックが頼りになるということかな
コーディングのミスを調べるためにリビルドするという
C++では考えられない方法を気楽に使える
×コーディングのミスを調べるためにリビルドするという
○わずか数行のコーディングのミスを調べるためにリビルドするという

この方が分かりやすいね
>>857
 TMemoね・・・・うーん
なんか窓ハンドルが勿体無いようにも思うけど・・・まあいいか

そういうレベルなら、単にフォームにMemo貼り付けてVisibleをfalseでやったら?
>>862
いや、TStringListでいいじゃん。
864854:02/05/27 21:51
>>862
Memoを貼り付けてVisibleをFalseっていうのも、僕も考えてました。
その前にTStringListのままでインスタンスの破棄をしないテストをしてみたんですけど、一応正常に動きましたが、何かバグの原因になったりしますか?
>>864
非常に危険なのでデストラクタか何かに破棄コード書いて下さい。
866854:02/05/27 22:21
>>865
デストラクタを学習中…(笑)
ところで、インスタンスを破棄するのって、生成した場所と違うプロシージャで行っても問題無いですよね?
>>866
問題ない。

その代わり解放するまでインスタンスをどこかの変数に閉じこめて決して見失わないように。
868854:02/05/27 23:14
おかげ様で作りたかった物(かなりショボイ鬱打みたいな物、後は打つ言葉を考えるだけ。)が完成間近です。
質問に答えてくださった皆さん、どうもありがとうございました。m(_ _)m
>>865
そういえばFreeをやらないことなんて考えたことなかったな。
実際破棄しないと、どういう風に非常に危険なんだい?
フリーズで終わりじゃないの?
>>869
フリーズが起きるかどうかはクラスによる、けどあまり起こらない。
ふつーのメモリはDelphi のメモリマネージャが解放する(?)ので
自前で取得したメモリとかハンドルとかのリソース解放漏れが
発生するのが一般的に起きる問題だと思う。
‥‥間違っているかな?
>>869
TStringListを開放しないだけでフリーズなんてするわけないだろ
872Delフサギコ ◆zE1iiRdQ :02/05/28 05:15
           _____________
  ∧,,∧    /
  ミ ゚Д゚ミっ < あさから質問っす。
  |''U ̄|   \______________
  | ̄ ̄|
 /    ゙ヽ
(   ゚Д゚  ) 質問だからage!
人____ノ

テキストファイルとバイナリファイルを区別する
には、どんしたらよろしかりけりでしょうか?

余計な制御コードの有無かなんか
の条件判断でわけるのがいいんでしょうか?


もうひとつ質問。
適当にサンプルコードを入力していると
usesするユニットが増えていて
実際にリリースする時には
余計なものがざっくり入っている場合があり、
そのせいで、exeのファイルサイズが
不必要にでかくなってしまうことがあります。
uses不要なunitを簡単に取り除くことはできるでしょうか?

知ってたら教えてくださいませー。
>>872
ASCIIかSJIS以外のコードが来た時点でバイナリ。
まぁ、テキストとバイナリの差なんて微妙なもんさ。
874Delフサギコ ◆zE1iiRdQ :02/05/28 06:56

            _____
   ∧,,∧    /
   ミ*゚Д゚,,ミ < もそっと教えて。
   ミ つ つ  \_____
 @ミ   ミ
   (ノ'''''∪
どうやって、
> ASCIIかSJIS以外のコードが来た時点でバイナリ。
文字がASCIIかSJISコードかってのを
調べるのでしょうか?

微妙な差ってのはそんな気がしてましたが。
1文字のファイルなんて、判断つかないしなあ,,,
perlのJcode.pmでは[\x00-\x06\x7f\xff]が含まれていたらバイナリと判別してた。
fileコマンドは定義ファイル次第?
>>874
この方法の怖いところは5GBのファイルの最後の一バイトが突拍子もない値だっただけで
テキストファイルではありませんエラーが出るところ。
>>872
 昔のDOSでテキストファイルでもctrl+Z以後に#0とかゴミがあるばあいがあるから
 後ろの数バイトはctrl+Z以後を判定に含め以内ように

 文字コードが ShiftJIS とか判っているなら それが崩れてないかチェックするとか

uses を自動的に外すには
 ファイル名を与えると 先頭のuses を分解して 1個づつ外してはファイル出力し
  DCC32でエラーが出るかどうかチェックさせて 不要な uses を検出するという
 そういうアプリを作るしかないのでは?
 GUIアプリで作って、不要な uses を外した uses 行を出力してくれるような
878Delフサギコ ◆zE1iiRdQ :02/05/28 08:11
    クレクレクレクレ
     ∧,,∧
    ミ,,゚Д゚彡  ソウスコウドくれくれ厨    
     ミ つ⊂ミ   でもいいですか?
     ミ   ミ
     ∪ ∪    どうやってSJIS判定したらいいのかも
           サパーリ....

usesの方は
C# vs Delphi Round 1
http://pc.2ch.net/test/read.cgi/tech/1021550705/195

uses Windows; {$APPTYPE CONSOLE}
procedure Exec(const Cmd: PChar);
var SInfo: STARTUPINFO; PInfo: PROCESS_INFORMATION;
begin
 GetStartupInfo(SInfo);
 CreateProcess(nil, Cmd, nil, nil, False, 0, nil, nil, SInfo, PInfo);
 WaitForSingleObject(PInfo.hProcess, INFINITE);
end;
var F: Text;
begin
 Assign(F, 'b.pas'); Rewrite(F);
 Write(F, 'begin Write(''Hello World'') end.');
 Close(F);
 Exec('dcc32 -cc b.pas'); Exec('b.exe');
end.

これを応用してなんとか
ならんもんだろうかしら。
>>878 俺の休みまで待てるなら書いてもいいけど
880Delフサギコ ◆zE1iiRdQ :02/05/28 08:25
   ∧,, ∧
  ミ*゚Д゚*ミ  ま" ,,うれすぃお言葉。。
   ミ ⊃⊂ミ サンクスコ
   ミ   ミ    
   ∪ ∪  待ってますので
         マターリで作ってくださいませ。
>>878
…そのコードは使い捨てなのでCloseHandleを省略してしまってますけど、フサギコさんわかってますよね?
function isShiftJIS(s:string;var p:PChar):boolean;
var siz:Integer;
begin
p:=PChar(s);
siz:=Length(s);
while Siz>0 do begin
  dec(Siz);
  case p^ of
  {ShiftJisの第一バイト}
  #$81..#$9F , #$E0..#$EF: begin
   inc(p); //次の文字が {ShiftJisの第2バイト}でなければ
   if p^ in [#$40..#$7E,#$80..#$FC ] then inc(p)
   else begin Result:=false;Exit;end;
   end;
  {EOF }
  #$1A:
  begin Result:=True; exit; end;
  #0:
  begin Result:=false; exit; end;

  #$09,   {TAB}
  #$0d,#$0a,{改行}
  #$20..'~': inc(p);
  else begin Result:=false;Exit;end;
  end;
end;
end;
function MojiTest(s:string):string;
var p:PChar;
var isMoji:Boolean;
begin
isMoji:= isShiftJIS(s,p);
if isMoji then if p^ = #$1A then
isMoji := (Integer(p)-Integer(PChar(s))) <5;

if isMoji then Result:='たぶん文字' else
Result:=IntToStr(Integer(p)-Integer(PChar(s)))
+'文字目が$'+IntToHex(Ord(p^),2)+'だから変';
end;
///////////////// 試験用 コード /////////
var w:String;
begin
w:=Memo1.Lines.Text;
Memo2.Lines.Add( MojiTest(w));
w[random(Length(w)-1)+1]:=Char(random( 7));
Memo2.Lines.Add( MojiTest(w));
end;
あっと isShiftJIS でループ前か最後に Result:=True; を入れといて
あ、さらにバグ カナを忘れてたのと、漢字の場合の Siz更新を忘れてた。 メシ食べにゆく

function isShiftJIS(s:string;var p:PChar):boolean;
var siz:Integer;
begin
p:=PChar(s);
siz:=Length(s);
while Siz>0 do begin
  dec(Siz);
  case p^ of
  {ShiftJisの第一バイト}
  #$81..#$9F , #$E0..#$EF: begin
  dec(Siz);
   inc(p); //次の文字が {ShiftJisの第2バイト}でなければ
   if p^ in [#$40..#$7E,#$80..#$FC ] then inc(p)
   else begin Result:=false;Exit;end;
   end;
  {EOF }
  #$1A:
  begin Result:=True; exit; end;
  #0:
  begin Result:=false; exit; end;

  #$09,   {TAB}
  #$0d,#$0a,{改行}
  #$A0..#$DF,{カナ}

  #$20..'~': inc(p);
  else begin Result:=false;Exit;end;
  end;
end;
 Result:=True;
end;
別に文字コードとか関係なくテキストファイルはテキストファイルだよな。(ボソ
>>877
 ただ、元のプロジェクトと違うアプリとして作ってしまうと
 その uses したいファイルが見つからないというエラーも出てしまう可能性有
887デフォルトの名無しさん:02/05/28 14:42
「Delphi 6 プログラミングバイブル」って6200円もする
本があって、かなり使える本なのですが、皆さんは
購入してます?

次期 delphi.net って、かなりコンポーネントの使い方が
違うんじゃないかと思うので....
>>887
します
.netは次次期になるんじゃなかた?
889デフォルトの名無しさん:02/05/28 15:50
>887

コンポーネントじゃなくて、コントロールの
事かな?

BDEとSQLLINKは、無くなるらしい。
>>889
ParadoxとdBASE用のBDEは残るんでしょ
891デフォルトの名無しさん:02/05/28 21:18
いま、趣味で、WebBroker+IIS使ってWebアプリケーションを作ってるのですが、
データの保存先にデータベースを使いたいと考えています(掲示板なんですが)。

で、BDE+Paradoxにするか、ADO+Accessにするか、dbExpress+MySQLにするか
悩んでいるのですが、運用面ではどうなんでしょうか。
BDEとAccessはそれなりに触ったことがあります。MySQLは軽いとの噂を聞いて
気になってます。
892891:02/05/28 21:28
あ、BDE+Accessというのは無しで。
漏れ的には他プラットフォームにも転用できそうなdbExpress+MySQLがいいかも。

しかし、漏れはMySQLをいじったことがないヘタレなので参考にならない罠。
IBX+FireBird はいらんかね〜
俺はDelphiが大好きです。
大好きで大好きで仕方がありません。
いや、むしろ好きすぎて嫌気を感じます。
誰か、Delphiの弱点をたくさん教えてください。
シェアがないから会社で使えないとか、そういう事でなくて、
もっとDelphiの性能的な弱点を。
それを知れば、これからも俺はずっとDelphiを愛していられる…。
>895
無いなぁ。
>895
C#やってみたら(IDE付で)?
Delphiの古臭い部分がかなり改善されてて
その差異がそのままDelphiの欠点になってるのがわかるから。
>>891
BDE+Paradoxは先が無いからやめといた方がいいかもな。
>>898 TDataSetレベルで使えばMySQLとどう違うんだという話になると思うのだが?
  TQueryで使えば他のDBと操作感は同じだし?
>>897
むしろDelphiの2way-toolっぷりがすばらしいことを再確認しただけですが何か?
確かに言語は洗練されてるけどねえ?
>>895
プログラミング言語愛しちゃってどうすんだヴァカ。
Accessみたいに毎回仕様が変わるより
仕様が変わらなくてデータがそのまま使えるのなら
それはそれで使い勝手がいいかも
>>891
漏れも>>894に同意でIBX + Firebirdおすすめする。
いま仕事で使ってるがかなりいい感じ。
日本語ドキュメントが少ないが。
>>895
mapとかhashとかstlで簡単にできるような事が自分で実装しないとできない。
Delphi用のライブラリはC系のライブラリよりずっと数が少ない。
>>904
まぁ、言語的な弱点ではないけどね。
>>903
キャッシュアップデートって使えますか?
BDEの時はあれがすっごく便利と思ってたんで。
>>897
金無いしな…。
具体的にどう古臭いんですか?

>>901
だって…だって…Delphiが美しすぎて…。
Delphiが完璧すぎて生きるのが辛い!(笑)

>>904
スキなくせしてまだ全然詳しくないから前半はよくわからない。(苦笑)
後半は結局シ(ry (泣)
C#は現代的かもしれないけど、タカピー
料理のメニューは多いけど電子レンジでチンばかり
メニューにない料理を作ろうとしたらシランプリで助けてもくれない


Delphiは
古風だけどしっかり現実的で、2人で頑張ろうって思わせてくれる
一つ料理するにも自分が手伝ってやらなくちゃいけない所もチャームポイントだし
そして色んな所を自由に触らせてくれるのが最高
自分も成長するし、彼女も俺が成長させるって思わせてくれるんだ
C#話始めるとM$信者やDel厨に荒らされるのでよそでやろうぜ。
>>909
そもそもC#の話ってスレ違いだと思われ。
だからC#な話をしたければ別の板/スレへ逝くのは当然だと思われ。
C#とDelを絡めた話はこちらへどうぞ

C# 仲良し Delphi Round 2
http://pc.2ch.net/test/read.cgi/tech/1022662451/l50
912永遠のwindows95ユーザ:02/05/31 00:17
>>911
こんな僕でもそこへ行っていいですか?
外出かと思うけど
Del6のSampleタグにあるShellTreeViewとShellListViewは
MemCheckで見る限りではメモリリークを起こすね(各2回ずつ)

ソースがあればなんとかなるところだろうけど見当たらないし
使えないとすれば、見栄えがいいだけにちょっと残念だね
>>913 取り消し
Demos\ShellControlsに入ってた・・・これならなんとか使えそう
>>913
Borland Developer Networkに修正済みソースがおいてあったような
気がする。落としてないので,どこを直してるのかはわからんが。

まあ,ソースを見つけられたみたいだし,自分なりに直すのも良いと
思うけどね。
916Delフサギコ ◆zE1iiRdQ :02/05/31 08:11
[Delphi:65307] Re: ShellTreeView で現在のフォルダを指定文字列で変更する方法

                _____
      ∧,,∧___   /修正版の情報が載ってるけど
    /ミ,,゚Д゚ミ/\<  メモリクが修正されてんのかな?
  /| ̄∪∪ ̄|\/ \_____
    |____|/
>>906
使えるようだが、ちゃんと機能してるかどうかは自信無し。
いまのところCacheUpdate + Transactionで制御してるけど
思ったとおりに動いてる。
918デフォルトの名無しさん:02/05/31 19:29
delphi5ってどこかで落とせないんですかねえ?
pascalならあるんですけど授業と食い違うんですよ
>>918 D6パーソナルならあるけど、授業と食い違うって事?
>>919
マルチなので無視しようか。
FindDialogでMemoコンポーネント内を検索したいのですが、
TMemoにはFindTextメソッドが無いため、うまくいきません。
それで FindDialogのonFindイベントでTCustomRichEdit型のオブジェクト変数を宣言して
使おうと思ったのですが、何故かうまくいきません。
何故ですか?

また、Memo内検索で一般的に使われていると思われる方法はどの様なものなのでしょうか?
ご教授お願いします。
>>918
割れ厨なら氏ね。
マルチポストなら氏ね。
923デフォルトの名無しさん:02/05/31 23:47
中古ソフト屋でお金払って落とす。
>>921
がんばれ
925デフォルトの名無しさん:02/06/01 00:26
>>921
ふんばれ
926923:02/06/01 00:31
>>924
がんばりますっ!

>>925
ふんばりますっ!




ED: TRichEdit; でもエラーが出る…(泣)
誰か…教えてくだせー。。。
>>921

function FindStr(s,str:string;InitPos:integer):integer;
var
 p,pinit,pStr:PChar;
 Len:integer;
begin
 Len := Length(str);
 pinit := PChar(s);
 p := pinit;
 inc(p,InitPos);
 pStr := PChar(Str);
 result := -1;
 while p^<>#0 do
  if AnsiStrLComp(p,pStr,Len) = 0 then begin
   result := p-pinit;
   break;
  end else inc(p);
end;

function RevFindStr(s,str:string;InitPos:integer):integer;
var
 p,pinit,pStr:PChar;
 Len:integer;
begin
 Len := Length(str);
 pinit := PChar(s);
 p := pinit;
 inc(p,InitPos);
 pStr := PChar(Str);
 result := -1;
 while p<>pinit do
  if AnsiStrLComp(p,pStr,Len) = 0 then begin
   result := p-pinit;
   break;
  end else dec(p);
end;

928つづき:02/06/01 00:34
procedure TForm1.Button1Click(Sender: TObject);
var
 pos,initpos:integer;
begin
 if Memo1.SelLength = 0 then
  initpos := 0 else initpos := Memo1.SelStart+1;
 pos := FindStr(Memo1.Text,Edit1.Text,initpos);
 if pos <> -1 then begin
  Memo1.SelStart := pos;
  Memo1.SelLength := Length(Edit1.Text);
  Memo1.SetFocus;
 end else
  Beep;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 pos,initpos:integer;
begin
 if Memo1.SelLength = 0 then
  initpos := Length(Memo1.Text)-1 else initpos := Memo1.SelStart-1;
 pos := RevFindStr(Memo1.Text,Edit1.Text,initpos);
 if pos <> -1 then begin
  Memo1.SelStart := pos;
  Memo1.SelLength := Length(Edit1.Text);
  Memo1.SetFocus;
 end else
  Beep;
end;
929921:02/06/01 00:40
おらは923じゃなかった!(泣)

>>927-928
すげぇ!(パチパチ
でも、例えばTRichEditとかにMemoの内容をAssignして、
FindTextメソッドを使うという技は使えないんですか?
930案1 そして終了:02/06/01 00:46
RichEditを非表示にして、Memoの全行をコピーして
RichEdit側で検索して、あった所をMemoで表示して…
ああ、大変だ。
タスクバーから表示を消したいのですが、
ShowWindow(Application.Handle,SW_HIDE);
で消えません。
何故なんでしょうか?

環境は
Win2k + Delphi6Personal です
932素人:02/06/01 00:49
>>931
Application.ShowMainForm := False;
をプロジェクトソースファイルに追加するってFAQがあるんだけど、
それじゃダメなの?
>>930
RichEdit1.Lines.Assign( Memo1.Lines);
資源の無駄だけど、少なくとも面倒じゃないんだよってことで一応。

>>929 それに気付いたなら自分で試そうね。
934921:02/06/01 00:54
>>927-928
FindDialogという単語が入ってないですが、
それでFindDialogから検索できるんですか?
つか、p^ ってポイント型って奴ですよね?
それ、おいらわかりませぬ。。。

>>930
それも考えたんですけどぉ…。
何で 変数名: TRichEdit; で宣言できないか不思議で気持ち悪いっす!(泣)
935931:02/06/01 00:56
>>932
レスありがとうございます。

それじゃぁメインフォームも消えちゃうんです。
何が原因なのかさっぱりで・・
>>931
SetWindowLong(Application.Handle, GWL_EXSTYLE,
   GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
937932:02/06/01 01:00
>>935
http://www.nifty.ne.jp/forum/fdelphi/faq/00030.htm
つーことは、つまり↑これではダメってことかな?

こーゆーのって直リンいいのかな?
もうそろそろ次スレの季節だねィ。
938 :02/06/01 01:01
>>934
>何で 変数名: TRichEdit; で宣言できないか不思議で気持ち悪いっす!(泣)
uses ComCtrls;
939931:02/06/01 01:02
>>936
できました!
ありがとうございます!!

よろしければ
ShowWindow(Application.Handle,SW_HIDE);
これとは何が違うのか教えていただけないでしょうか?
940931:02/06/01 01:05
>>937
ありがとうございます。
でもそれもムリでした。
メインフォームがでてきません・・
941936:02/06/01 01:05
>>939
何が違うって、関数が違うとしか言えんのだが。

付録のMSWinHelpかMSDNで調べなさい。
942931:02/06/01 01:09
>>941
分かりました、調べてみます。

みなさんありがとうございました
943921:02/06/01 01:11
>>937
禿thx!
でも、Createするとパラメータが足りねぇ…、宇津田刺乃迂…。
AOwnerとか出てるけど、継承ではないっすよね、ワケワカンネ。
944933:02/06/01 01:11
>>921
procedure TForm1.Button1Click(Sender: TObject);
var
 a:TRichEdit;
 FoundAt: Integer;
begin
 a:=TRichEdit.Create(Self);
 a.Parent:= Self;
 a.Lines.Assign( Memo1.Lines);
 FoundAt:=a.FindText('hoge',1, Length(a.Text),[stMatchCase]);
 Label1.Caption:= IntToStr(FoundAt);
 a.Free;
end;

>>927-928 の方法はTFindDialog.OnFind に928のButton1Click相当の
ロジックかけばいいでない?
pos := FindStr(Memo1.Text,Edit1.Text,initpos);
のEdit1.Textはもちろん FindDialog1.FindText にしてね
945937:02/06/01 01:16
オレの環境ではあのFAQで消えるんだが、Win2kだとだいぶ違うってことだろうか?
Win2kいじったことない。

パソナルに付録のMSWinHelpってのあったかな?
>それじゃぁメインフォームも消えちゃうんです。
↑これがよく分からんが、まぁうまくいったんならOKだね。うん。
946936:02/06/01 01:22
>>945

> パソナルに付録のMSWinHelpってのあったかな?

あるよ。
947921:02/06/01 01:28
>>944
おぉっ、親切なお方再ハッケソ!
試そうと思ったらTRichEditで宣言できなかったり、Createでパラメータが足りなかったりして無理だったのれす。
どうもありがとー!(泣)
Createの時にパラメータがいる時といらない時ってどう違うんでしょうか?
継承ではないですよね?(^^;
948933:02/06/01 01:42
>>921
TRichEditに限らずコンポーネントは TComponent を継承するから
TComponent のCreate が要求する引数AOwnerが必要なのです。
何故 TComponent が AOwnerを要求するかはヘルプをみてくれい。

"継承ではないですよね" は意味不明。継承関係は復習してきてくれや
949921:02/06/01 01:56
>>948
なるほど…。
継承に限らず、オブジェクト指向を勉強しなくては。
Delphiの初心者本って、コンポーネントの使い方とか、IDEについてにページを裂き過ぎて、
オブジェクト指向はわかりずらいですよね。
(と、最近Javaの本をちらっと見て思った。)
熟読します!
親切にどもでした。
DelphianWorldが繋がらんのだが、なんでだろ。誰か知ってる?
>>949
DelphiはどうしてもIDEやVCLがウリだから初心者本はその
華やかな部分を大々的に書きたがるんだよね。

でObjectPascalの言語仕様についてはあまり書かれない。
ホントはなかなか味のある言語だからじっくり調べると面白いよ。

漏れも初心者本に書いて有るようなことが煮詰まったときに改めて
ObjectPascal言語ガイドを最初から読んだら目から鱗が落ちまくった。
(加えて初心者本の言語関係の記述のいい加減さに愕然とした・・・)

言語仕様を丁寧に解説した本やページってあまり無かったから
いつか自分で作ってみようかなって思ってたら、
http://pc.2ch.net/test/read.cgi/tech/1021201697/550
の方が漏れが考えてたことと同じ様な事をやってくれた。
そんなわけで、これ↑おすすめ。
「クラスとオブジェクト」の章をじっくり読むといいよ。
952A:02/06/01 04:24
>>949
そういう点で評価が高いのに、「Delphi オブジェクト指向プログラミング」という本があるんだが
残念ながら、今は絶版で手に入らない・・・・。
(復刊依頼はここで ttp://www.fukkan.com/vote.php3?no=4407

で、同じ著者がもっと昔に書いた、「ゲーム&&オブジェクト指向プログラミング」という本が
けっこうお勧め。Delphi以前の本だけど、Delphiの祖先のTurbo Pascalを使って解説してる
からDelphi使いなら、じゅうぶん読める。こっちはまだ売ってる・・・

あとは、やっぱり、オブジェクト指向を書籍で勉強するなら、Java読めるといいかも(笑
Object Pascal判るなら、Javaっても、読むだけなら、大差無いから簡単だし。

関係ないけど、最近、リファクタリング、を読み始めた。けっこう面白い(笑)
953921:02/06/01 10:05
>>951
その書き込み、前に見たことあるけど、そんなに良い物だったとは…。
落としてみました、ありがとうございます、作ってくれた人もありがとう。
 >ObjectPascal言語ガイドを最初から読んだら目から鱗が落ちまくった。
読んでみたい!
それは確かDelphiと別売りでも買えますよね?
Borlandに電話してみようかな。。。

>>952
そのページ、ついこの間オブジェクト指向の本が欲しくて、
検索して見たページです。(^^;
Javaの本をちらっと読んだら、Object PascalよりJavaのオブジェクト指向の方を先に覚えちゃった。
それくらいDelphiとJavaの本の質はレベルが違う。
(オブジェクト指向を学ぶという点で。)
954951:02/06/01 12:46
>>953
ObjectPascal言語ガイドはDelphiヘルプの一部ですが・・・
パッケージを買ってきた人なら紙媒体もあるし、Del6Parsonalな
ひとでも標準でインストールされるはず。
955921:02/06/01 13:04
>>954
ヘルプにあるんすか…(恥
VCLリファレンスしか見たことなかった。。。
でも、紙媒体で欲しいから、Borlandに電話してみよーっと。
956921:02/06/01 13:11
つーか、>>951で紹介してもらった物とDelphiヘルプの言語ガイドって全く同じなんすね。
勘違いしてた。。。(汗)
逃げっ!
>>952
Delphiオブジェクト指向プログラミングハケーン!
金がないから買えないけど…。
http://page.auctions.yahoo.co.jp/jp/auction/46961664
959デフォルトの名無しさん:02/06/05 13:19
心の隙間埋めて下さい・・・・。
960デフォルトの名無しさん:02/06/05 13:24
       v
      (゚ω゚) <まだちょっと早いかな?
     /(  )\
      /'\
>>960
うん、帰れ♪
>>959-960
次スレ 立ってるから、俺は梅めても構わないとは思うけど、まだ40もあるよ?(w;

ちなみに次スレ
http://pc.2ch.net/test/read.cgi/tech/1022921598/
もーいいよ、邪魔だから sageで埋めてくれよ
でも定期的に新スレの案内も書いてよね。
>>960
おまえには埋めさせねーぞ!
       v
      (゚ω゚) <おっ!おいらのこと呼んだ?
     /(  )\
      /'\
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
Linuxイラナーイ 1000!
イラナーイ
  |-□□-|
   \ - / 900ですね
  |-□□-|
   \ - / 901ですね
  |-□□-|
   \ - / 902ですね
  |-□□-|
   \ - / 903ですね
  |-□□-|
   \ - / 904ですね
  |-□□-|
   \ - / 905ですね
  |-□□-|
   \ - / あとは勝手にどうぞ
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
           _
          /  `j
        /  /`ー'  ちょっときみィ
        〈  `ヽ
        `、  ヽ∧_∧   >>999
          〉      )  (`Д´)!
         / ノ    ̄⌒ヽ   「  〉ノ
         ノ  ' L     `ヽ./  /ヽ
       / , '    ノ\  ´  /  )⌒
       (     ∠_   ヽ、_, '      ミ
       i  、      ヽ
   _,, ┘  「`ー-ァ   j
  f"     ノ   {  /
  |  i⌒" ̄    /  /_
  ヾ,,_」       i___,,」


             ヽ l //
         ――― ★ ―――
            // | \
           / /. |  \
             /   |

                 逝ってよし
        -   ̄ ̄ ―
     /
    /                ヽ
         ∧_∧_
   |     ( ´Д`)  ̄"⌒ヽ
   |    / ) ヽ' /    、 `、_
      γ  --‐ '    λ. ;  !
      f   、   ヾ    /   )
      !  ノヽ、._, '`"/  _,. ‐'"
      |  j   ヽ 〈_,,,ノ" ヽ
       !  ヽ   冫 y'   .ノ
       `、  \ | /   /
          \、ヾ | |  イ-、__
            l.__|   }_  l
            _.|  .〔 l  l
            〔___! '--'
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。