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

このエントリーをはてなブックマークに追加
1Delモナー
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

前スレ モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/test/read.cgi/tech/1027873869/
2デフォルトの名無しさん:02/10/04 03:21
 
あれぇ?? いいのかなぁ・・・

2ゲットォォォ!

by Delphi 超初心者(^^;ゞ
4デフォルトの名無しさん:02/10/04 03:22
>>3
( ´,_ゝ`)プッ
53:02/10/04 03:22
ガックリ(゚_ 。)
6デフォルトの名無しさん:02/10/04 03:23
結局統合しなかったんだ
7デフォルトの名無しさん:02/10/04 03:25
Del使いの人に質問なのだけど、相談室とフサギコとモナーはどうやって使い分けているの?
>>7
俺は
モナー 初心者向け、罵倒なし
相談室 中級以上向け、罵倒あり
フサギコ Delphiとその周囲の「談話」 罵倒・荒らし多数
という使い分けをしてる
>>相談室 中級以上向け

これは信じられない
俺はモナーが罵倒なしってのが信じられん
129:02/10/04 14:07
以前はそういう定義だったんだけど、今は崩れてしまった。

>>11
元質問者にはやさしくするけど、煽る香具師には容赦しない。
個人の定義だから他人はどうかしらないけど。
13デフォルトの名無しさん:02/10/04 21:10
Delphi Tech復活求む!!
厨房は相談室に来る前に、
モナーに聞けってことだな
15デフォルトの名無しさん:02/10/04 21:52
>>13
テクニカルな話題なんて誰もできない罠。
ここもMLもネット上で自分で何か作ろうって気のある奴は誰もいない罠。
フサギコ.NETスレを、Delphiの高度 or トリッキーな話題にすれば?
そんな感じになりかけてるし。
sage
運営話を続けていると 質問者が質問しづらいかも
談話室に移動するのがよいのでは?

質問です。

Form をダブルクリックしたとき OnClick イベントハンドラが呼ばれないよう
にしたいのですが、どうしたらいいんでしょうか?
>>19
1、イベントハンドラの先頭でスグに抜けるようにする
2、OnClick=nilにする
バリアント配列のサイズを変更する手続きVarArrayRedimについての質問.
多次元配列の場合は最後の次元の上限しか変えられないのでしょうか?
>>20
ありがとう。
でも、それだとシングルクリックのときに、こんどは OnClick イベントで
処理ができない
OnClick内で現在の時刻取得してTimer1.Enabled := Trueする
OnTimerイベントハンドラで取得した時刻が変わってなければ
シングルクリック、変わってればダブルクリック。











だけでは不正確なんだけどね。
>>23
よく理解できません。すみません。
Timer1.Interval := 100;
だとして、OnTimer イベントハンドラでは必ず

時刻 > 取得時刻+100ms

になるんでは?
未来は予測できん、ということかな
>>19
ダブルクリックした時は、OnClickの処理をすっ飛ばしたいという事ですか?
OnClickでGetDoubleClickTime API 時間だけタイマーでも仕掛けて、ダブルクリック時間経過後に
ダブルクリックされていなければクリックの処理をする…というのがひとつの方法。
何れにしろ、シングルクリックの時点では、ユーザーが続けてクリックするかどうかわからないので、
判断を遅らせる必要があると思います。
>> 未来は予測できん、ということかな

そうですね。ダブルクリックの途中で呼ばれたのか、それとも本当の
シングルクリックで呼ばれたのか、OnClick イベントハンドラのなかで
判断できない

ということですか。
そうなると、23 さんの提案のように、タイマをつかって、ちょっと
処理のタイミングがずれるけど、OnDblClick で旗立てて、OnTimer
でそれをみて、旗がたってたら OnDblClick でしたい処理、
旗がたってなかったら OnClick の処理、という判断する、
のが現実的かなぁ
27 です。

>>26 さん、かぶった、ゴメン
>>26
> …というのがひとつの方法。

あとは、どのような方法が?
OnClickの中で一定時間止めて
その間にダブルクリックされたらOnClickを抜ける。
31デフォルトの名無しさん:02/10/06 16:26
TreeViewのノードラベル変更中のキー操作をフックするにはどうすればよいですか?
>>31
キー操作をフックすればいいじゃん。
たとえば、ラベル変更中に、上下矢印キーが押されたら選択ノードを変更したり、
「Alt + D」が押されたらノードを削除したりするにはどうすればよいですか?
>>33
糞ユーザインタフェース作るな。
35困ってます:02/10/06 17:53
TEditorやTRichEditでキャレットが点滅しているときにLines.Addを使うと最終行までスクロールしてしまい、Lines.Text:=Lines.Text+#13#10とやるとスクロールはしないのですがあまりに遅すぎます。
スクロールさせずに一行追加させるのに何か良い方法はありませんか?
    (V)∧,,∧(V)
    ヽミ・ω・ノ  フォッフォッフォッ
.     .ミ,,,,,,, ミ
    ノ  ゝ
画面の描画を止めて、スクロール位置を覚えさせて
Lines.ADDして
スクロール位置を戻して、画面の描画を再開

ってのが、いいのでは?
37困ってます:02/10/06 18:57
>>Delフサギコさん
なんとなくできました。
ありがとうござ!
38デフォルトの名無しさん:02/10/06 19:36
TClientSocketを使って、サーバと通信をしたいのですが、
ボタンのClickイベントの中で
1 TClientSocketをOpenする
2 10秒間以内にサーバから返事が返ってきたらコマンドを送信する
3 返事が帰ってこなかったらあきらめる
と書いてみたのですが、Clickイベントの中ではTClientSocket.Activeがずっとfalseのままです。
パケットキャプチャで見るとサーバからの返事はすぐ帰ってきているのですが、
Clickイベントを抜けたあとにTClientSocketのConnectイベントが起こります。
なぜでしょうか?どのようにして解決できるでしょうか?
>>38
Processmessageとかは?
40デフォルトの名無しさん:02/10/06 20:39
おまいら、DUnitとか使ったりしてますか。
なにそれ?
42デフォルトの名無しさん:02/10/06 22:18
>>41
話題のWindowsXPですよ!
>>23 >>26 >>27 できた! ありがとう。普通のクリックの時は、ちょっと処理の遅れが目立つ。しょうがないですね。

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := false;
Timer1.Interval := GetDoubleClickTime;
end;

procedure TForm1.FormClick(Sender: TObject);
begin
Timer1.Enabled := true;
ClickFlag := 1;
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
ClickFlag := 2;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
case ClickFlag of
1:ShowMessage('Single Click');
2:ShowMessage('Double Click');
end;
ClickFlag := 0;
end;
>>30 ありがとう、できました。

public
{ Public 宣言 }
IsDblClick:Boolean;
DTime:DWORD;
end;

---
procedure TForm1.FormCreate(Sender: TObject);
begin
DTime := GetDoubleClickTime;
end;

procedure TForm1.FormClick(Sender: TObject);
var
initTime:DWORD;
begin
initTime := GetTickCount;
while GetTickCount < (initTime+DTime) do
Application.ProcessMessages;
if IsDblClick then begin
ShowMessage('Double Click');
IsDblClick := false;
end else
ShowMessage('Single Click');
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
IsDblClick := true;
end;
46825:02/10/07 00:15
コンポーネントパレット[Servers]の"TExcelApplication"や"TExcelWorkbook"のリファレンスってどこかにないですか?
Webでも書籍でもかまわないので、知りたいのですが。
つまりWindows XPでRubyのテストがしやすくなる?
48ねこま:02/10/07 01:27
>>38
スレッドで処理するか,ClientType を ctNonBlocking にするか

TClientSocket は簡単に結果が見えるので好きだったんですけど,
D7 では obsolete になったそうで.
49デフォルトの名無しさん:02/10/07 14:42
DBLookupComboBox で、ドロップダウンリストが
1行しか表示されないトラブルで困っています。
データの行数、DropDownRowsともに問題ないはずなんですが・・・

同じようなトラブルに遭遇した方、対処法があれば教えてください。
もしFAQだったらすみません。
50デフォルトの名無しさん:02/10/07 16:14
CliantDataSet+DBGridで
データ新規登録時、
他の登録データと区別をつけるために
色を変更したいのですがうまくいきません。

Delphi広場で編集時の色の変え方は
達人の方々に教えて頂いたのですが
新規登録時の場合は二週間ほど待ちましたが
お答えいただけませんでしたので
こちらに投稿した次第です

貴重なお時間を割くことになりますが
どうぞよろしくお願いいたします。
>>46
ExcelのVBAHelpもしくはExcelxx.pasのソースを読む
基本的にExcelのVBAがわからなければ何もできません
VBAから出直しましょう
基本的に各オブジェクトのメソッド、プロパテさえわかったら
別にVBAなんてわからなくってもいいんでわ?
          _______________
   ∧.,,∧   /認めたくない事実の一つだとは
  ミ.,,゚Д゚彡<  思うですが、多分VBAかVBで
  ミ つ目(ミ . \作った方がかなり楽。
〜ミ,,O,,,,,,つ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヤッタコトアルカラ
>>21
やぱり変えられないようなので上限値を先に調べて設定しました.
>>54
一次元配列が拡張できるのなら、多次元配列を一次元配列に置き直して
格納すればよいのでは。拡張時に要素を移動する必要が生じますが、自
由度とのトレードオフでどうするか考えれば何とかなると思います。

もっと自由度が必要なら、TListや自前のポインタを使うかして処理すれば
良いし。
>>55
例えば二次元配列 の行列の最大をXMAX,YMAXとして
x,yを (XMAX+1)*y+x で求めるようにした時に、YMAXを増やす時には簡単でも
XMAXを増やす時はサイズを変更してからコピーが必要になる
5738:02/10/09 13:44
>>39
Windowsのメッセージについてよくわかってないので、
適切なコードを書けずうまくいきませんでした。
しくしく。ごめんなさい。

>>48
スレッドを使い、うまくいきました。ありがとうございます。
今回はテーブルコンポなどのLookupメソッド風に
TQueryでの『問い合わせ』の結果を戻り値として格納するためのものを作っていたので
バリアントにこだわっていました.
(最初に書けば良かったです…過去と同じ失敗(鬱)すいません)

今思えば
Variant
の代わりに
array of array of Variant;
でも良かったと思います.
SetLengthで自由に長さを変えられますし
type
T2DVarDynaArray = array of array of Variant;
と定義すれば戻り値にもできます.
59デフォルトの名無しさん:02/10/09 16:05
サンプルのソースを実行したんですけど日本語を入力すると文字化けしてしまいます
こういう時はどこに何を書いたらいいんでしょうか?
>>56 フォームのフォントは何になっていますか?
61デフォルトの名無しさん:02/10/09 16:41
TTreeViewでノード上にマウスカーソルを乗せたとき
ノードごとに違うヒントを表示させるにはどうしたらよいのでしょうか?
62教えて!モナー!:02/10/09 16:49
Win32 の 「pagecontrol」 を使いたいんですが、
いくつかタブを作ったのはいいけど、それらのタブを入れ替える方法が
わかりません。

例えば、
 TabSheet1 TabSheet2 ・・・
というのを、
 TabSheet2 TabSheet1 ・・・
のように入れ替えたいんです。

ご存知の方、教えてください
63デフォルトの名無しさん:02/10/09 16:56
Indyのsmtpのサンプルソースか日本語ヘルプはありませんか?
 ミ,,゚Д゚ミつ Indyのメールクライアントサンプルなかったっけ?
65教えて!モナー!:02/10/09 18:28
オブジェクトツリーで並び替えられました。
66デフォルトの名無しさん:02/10/09 18:40
スマソ Indyって今どこでDLできますか? リンク死んでるような・・・
6863:02/10/09 18:58
http://www.nevrona.com/Indy/dowload/90.html
このページの下の方にデモがありました。
見逃していました。すんません。
ExtractIconでEXEのアイコンを抽出してみたんですが、
Imageで見る分には問題ないのに保存してみると色化けしてしまっていて困ってます。
うまく色化けせずにアイコンを保存する方法ありませんか?
70デフォルトの名無しさん:02/10/09 21:02
Indy 日本語ヘルプキタ━━━━━━(゚∀゚)━━━━━━!!!!!
7155:02/10/09 22:55
>>56
フォローありがとうございます。説明するのが面倒くさかったのと、
配列を拡張しようかと思う人なら想像付くかと思って、説明を省いて
しまいました。
72デフォルトの名無しさん:02/10/10 00:23
すいません チャットソフトを作ってみたんですけども
ウィンドウの大きさが実行時変更できません これってどのプロパティなんでしょうか?
73デフォルトの名無しさん:02/10/10 00:51
アカデミック版を買いたいのですが身分証の提示を要求されますか?
東京近郊で身分証を要求されない店ってどこかないでしょうか?
中古屋
  ?ンニャ     __________
  ∧,,∧     /
 ミ ゚Д゚ミ  < >>72FormのWidth/Heightじゃないの?
 (ミ  ミつ)  \
〜ミ  ミ        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪ ∪
>72
 Form の BorderStyle は bsSizeable になってる?
77デフォルトの名無しさん:02/10/10 17:46
質問!現在、フォームのプリントを行っているのですが、
コンボボックスの選択されている項目が
どうしてもプリントされません。
どうすればいいのでしょうか?

Form1.print のコードだけでは無理なのでしょうか?
7977:02/10/10 18:38
違います!
> Form1.print のコードだけでは無理なのでしょうか

このコード、これ以上工夫しようがないので無理。
自前でキャプチャして印刷する。
厨房質問です。
random(3)として
返り血の0〜2は、整数ですか?

あと何回もrandom()を使うと
エラー起きるんですが、そんなもんですか?
ヘルプ嫁

んなこたない
8381:02/10/10 21:41
>>82
ヘルプ読んだんですが、
randomが載っていないんですが・・・。
漏れのだけ?

     /⌒\  
    γ彡・ω)ミ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < 広場にマルチポストですか......
     | つ_|| ̄ ̄ ̄ | \_____________
   〜ミ,,, ,,|\||Letsノ-ト|
       '\||.======.|  Printの前後でComboBoxのStyleを変えたら
           ̄ ̄ ̄   いいのかも。

[Delphi-ml:36053] コンボボックスのテキスト部分が印刷できない
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=36053

[Delphi-ML:20371] Re: フォームの印刷について
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=20371
     /⌒\  
    γ彡・ω)ミ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < D6のHELPです
     | つ_|| ̄ ̄ ̄ | \_____________
   〜ミ,,, ,,|\||Letsノ-ト|  
       '\||.======.|  ちゃんとHELPにあるよ
           ̄ ̄ ̄ 
> ユニットSystem
> function Random [ ( Range: Integer) ];
> 説明
> Random 関数は,0 <= X < Range の範囲にある乱数を返します。
> Range を指定しないと,結果は 0 <= X < 1 の範囲にある実数型の乱数になります。

こんなのもあるよ。

> ユニットMath
> function RandomRange(const AFrom, ATo: Integer): Integer;
> 説明RandomRange 関数は,AFrom から ATo までの範囲で無作為に整数を返します。
> RandomRange は,負の範囲(AFrom が ATo より大きい)を処理できます。
>あと何回もrandom()を使うと
>エラー起きるんですが、そんなもんですか?
プログラマのせいか、肌鮮度のせい
8781:02/10/10 21:59
>>85
どうも。漏れのヘルプには載っていませんでした・・・
>>87
Delのバージョンとグレードは?
ついでにエラーの内容も書いて
     /⌒\  
    γ彡・ω)ミ      /初心者が
     |ミ,, ゚Д゚彡     < これをヘルプからみつけられるだろか。
     | つ_|| ̄ ̄ ̄ | \
   〜ミ,,, ,,|\||Letsノ-ト| 過去ログ厨はLengthで"文字数"が元丸と
       '\||.======.|   思い勝ちなんで、困ったもんでっし
           ̄ ̄ ̄ 
                どうせhiroってコはVBから移行組みでしょ
広場のスレ
<16644> [D6] 文字数を出力する関数は
http://www.sakaki.keiaikai.or.jp/cgi-bin/convroom/webconv.dll/alltree?No=16644

文字数を調べる
http://www.wwlnk.com/boheme/delphi/tips/tec0720.htm
      /⌒\
     γ彡・ω)ミ   どうせDQNなオレの戯言
      |ミ,,゚Д゚ミ   なんだけど、
      |(ノ  |つ  hiroはともかく将来、文字数を求めたくなって
   イイワケイイワケ   検索してあのスレがヒットしても2度手間だろうなと....
>>90
そんなのたどれるだろうと思ってみたら
VCLリファレンス>ルーチン一覧(カテゴリ別)>MBCSユーティリティ>ByteToCharLen

まず「MBCS」がわからないかも、というのが俺の結論。
 ミ゚Д゚*,,彡 >文字数を求めたくなって
文字数を求めたくなった人がいたとして
の間違いでつたゴルァ...
VB.NET使えばOK、というのが俺の結論。
Unicodeでも1Word=1文字が成り立たなかった場合があったようななかったような…
なんとかペア
     /⌒\  
    γ彡・ω)ミ      /具具ったら、こんなトコありました。
     |ミ,, ゚Д゚彡     < ShiftJISでもマルチバイトプニコでも
     | つ_|| ̄ ̄ ̄ | \ インデクサで文字単位でアクセスできる
   〜ミ,,, ,,|\||Letsノ-ト|   方法がホスィです
       '\||.======.| C#やDelphi.NETのレコードならそんな型モ定義できるのかな?
           ̄ ̄ ̄  イクラナンデモStringClassとかで実現するのはバカバカすぃし。
http://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm
そうそう、サロゲートペア。
.NETでもchar = 16bit+サロゲートペアなので、結局要素数≠文字数なんだなあ。
(StringInfoみたいなのは用意されているけど)

>>96
現Delphiでも、object型とproperty...[...]...; default;で(+演算子を除き)、又はカスタムバリアント型で
できるよーな気もするが、それ自身のオーバーヘッドを無視するとしても、
計算オーダーをひとつ増やすだけにしかならないと思う。
98デフォルトの名無しさん:02/10/10 22:51
サロゲートなんて無視無視。誰も困らないから。
    ∧ ∧  
    ミ ゚Д゚彡 Delphi.NETではObject型は
  〜ミ,,,,uuミ  なくなるんだっけ?
なぜ、復刻しなかったのかなあ・・・

この際、UTF64とかUTF128作って世界のアリアラな文字を
少し筒追加していって
いれることってできないのかしら....
>>81
>>85>>92を参考にヘルプを調べてみたら見つかりまつたよ
VCLリファレンス>ルーチン一覧(ユニット別)>System>Random関数
>>100
ちょっとまて
関数名がわかってるならキーワードに入れれば一発なんだけど。

>>92は「こんなことがしたいけど、いい関数ないかな」と思いながら
探す方法だよ。
キーワードというか最悪、テキスト検索でも出てくるし。
>>92
MBCSを概念で説明してもちんぷんかんぷんでしょうしね.
日本語文字列が使えるのが当たり前な世代には
ASCIIコードの誕生から順に説明したほうがいいように思います.

>>102
Win9x系だと残念ながらテキスト検索出てこないです.
(昔,FDELPHIにWin9x系でテキスト検索する裏技がありましたけど)
>MBCSを概念で説明してもちんぷんかんぷん
DelフサとかDelフサとかDelフサとか・・・。
105デフォルトの名無しさん:02/10/11 17:08
Borland Delphi 6 Personalで保存したものは
それまでのDelphi5などでも実行できますか?
>>105
 ソースは Variantの問題を切り分ける必要がある事、
 DFMの修正が必要だと思います
107105:02/10/11 17:28
そのままは無理って事ですね・・・。
ありがとうございます。
108デフォルトの名無しさん:02/10/11 17:45
質問です!現在Form1とForm2を作っています。で、Form2からボタンを押したときに
Form1へ戻るのですが、ショートカットキーを指定して、ショートカットで戻ると
フォーカスがタスクバーのところへ逝ってしまいます。
Form1.edBkkubun.SetFocus;
として戻しています。わかる方教えて!!
>>104
私だってプログラミングを始めたのが早くなかったら
やっぱりちんぷんかんぷんだったと思います.
読んでも、独り言戸でけで、質問が見つからない。
112>108:02/10/11 21:10
>>108
質問するなら、もうちょっと詳しく書いたほうが。
Form2からForm1に戻るとき、Form2は消すのか?
Form1とForm2の親子関係は?モードレス?モーダル?
ショートカットのやり方と、割り当てた関数の内容は?
113デフォルトの名無しさん:02/10/12 01:42
winのメモ帳などにキャレットを残したまま
操作できるソフトを作りたいのですがどのようにすれば
よいのでしょうか?
例えばwinに付いているスクリーン キーボードなどは
スクリーン キーボードを操作してもキャレットが残ったままになっていて
あのような感じです。
また、例えばButton1を押すとキャレットに「あ」と出力させるにはどうすれば出来ますか?
114デフォルトの名無しさん:02/10/12 04:49
               -― ̄ ̄ ` ―--  _
          , ´  ......... . .   ,    ~  ̄" ー _
        _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、
       , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
    ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
   と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
  (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
       ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_>
          ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
        (__  ̄~" __ , --‐一~ ̄ ̄ ̄        

もう、だめぽ。。。



     ||
   ∧||∧
  (  ⌒ ヽ>>114
   ∪  ノ
   ∩∪∩
   (・∀・| | クヨクヨスンナ
    |     |
  ⊂⊂____ノ
       彡
________
>>113

アプリひとつまるごと作り方教えろや、って言ってるような
>>113
メッセージを使う。
自分の作ったウィンドウやコントロールののWM_SETFOCUSを拾ってSetFocus(wParam)を実行。
文字を送るには、WM_CHARやWM_IME_CHARを送る。

118113じゃないけど:02/10/12 17:52
>>117
>文字を送るには、WM_CHARやWM_IME_CHARを送る。
WM_KEYDOWNとWM_KEYUPじゃダメ?
119117:02/10/12 20:52
WM_KEYDOWNじゃうまくいかなかったと思うが。
IMEの状態とか、キーのシフト状態の影響を受けてしまうし。

Edit1へ文字を送る例。
SendMessage(Edit1.Handle,WM_CHAR,Integer(#$41),Integer(0));
SendMessage(Edit1.Handle,WM_IME_CHAR,Integer(#$82a0),Integer(0));
120デフォルトの名無しさん:02/10/13 22:16
プログラミングやってみたい!よしロハだ!Delphiだ!
早速Personalを落としてきてインストール、書籍買う金もないので
付属のチュートリアル&ヘルプでマターリ行こうと思い
「テキストエディタ作ってみるべさ」と学習を開始したのでありますが
先生!
チュートリアルで使えと書いてあるコーポネント、「ActionManager」が
見つかりませぬ!
”コンポーネントパレットの[Additional]ページにある”とか書いてありますが、
全然ありません!

漏れのDelphi修行、まだ始まったばかりですが、もう玉砕でありますか!?

ActionManagerはperにはついてないよ。まずは過去ログの検索から。
>>121
ありがとうございました。
チュートリアルをなぞるくらいはパーソナルでも出来るだろうと
思っていたので・・・、おちついて過去ログを読んでいきたいと思いマッスル。
>>122

Delphi入門者のためのすぐれたサイトもあるよ。例えば

http://kakinotane.s7.xrea.com/index.html
124120:02/10/14 04:40
>>123
ありがとうございます。

一つ前のスレがDAT落ちしてたため、過去ログ検索もままならない状態だったので
非常に助かります。
がいしゅつだゴラァと言いたくても言わないところがやさしいな( ´∀`)
126デフォルトの名無しさん:02/10/14 12:11
英語がよく分からないので、Indyの使用条件を教えて下さい。
( ´∀`)モナーの *やさしい* Delphi質問スレ ソース置き場
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221
>>126
英語がわかること。
129デフォルトの名無しさん:02/10/14 13:38
「Delphi」はフリーソフトなんですか?通販HPを検索しても出てこないです。
C++はマイクロソフト Visual Studio .NET Enterprise Archtect MSDN Deluxe Edition みたいのが
あるし・・・「Delphi」はそういう物は無いのですか?
>>129
お前が見つけた通販HPでVisual Studio .NET Enterprise Archtect MSDN Deluxe Edition があって
Delphiがないところ教えれ。
132デフォルトの名無しさん:02/10/14 13:58
ヨドバシカメラHP
http://www.yodobashi.com/
>>130
直接商品までリンクを貼ってくれてありがとう、ありましたね・・・
いまDelphi6のPro版叩き売りしてるところある?
ヤフオク
>>121-125
次スレではテンプレにこの件の答を書いておいたほうがいいですね.
むしろスレタイにすべき

【ActionManagerは】モナーの*やさしい* Delphi質問スレ Ver.10【perにない】
138デフォルトの名無しさん:02/10/15 22:34
変数の値を監視したいのですが'監視できません'としか出てきません。
どうすればよいのでしょうか?
・最適化で変数が消されている
・with文の中
>>138 showmessage 使っちゃうのが一番簡単だと思ってみたり
141138:02/10/15 23:56
解決しました。ありがとうございました。

>・最適化で変数が消されている
これでした
さらに使い方を根本的に勘違いしてるとこもありまして混乱していたようです

>>140
まさにそのとおり
memo内でShift+Enterを押したら、<br>を挿入して、改行したいんですが、
どうしたらいいんですか?
143デフォルトの名無しさん:02/10/16 09:32
OnKeyDown イベントかなあ。
144無責任だが:02/10/16 09:43
>>142
 簡単に
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13)
and( GetKeyState(VK_SHIFT)<0) then
  with Sender as TMemo do SelText:='<BR>';
end;
こういうふうにやればどうでしょ?
 もしかしたら、選択時の動作はこっちが好みかもしれないけど
with Sender as TMemo do begin
  SelLength:=0;
  SelText:='<BR>';
end;

Delphiのお薦め推薦図書はなんていう本ですか?
>>142
キーカスタマイズも考慮するならAction使うとか。
Delphiで透明レイヤーって作れますか?
透明レイヤーとはどんなものか、定義してください。
149デフォルトの名無しさん:02/10/16 15:46
無償のやつアクションマネージャついてないんですかね?
無償のやつにはアクションマネージャは付きません。
アクションマネージャがないと何か困るんですかね?
アクションマネージャがなくて困る事はありません。
アクションマネージャがある事を前提にしている書籍等を見た初心者がとまどうだけです。
数値を任意の桁で右に寄せるにはどうしたらいいですか?
 str(AAA:n,String_Data);
ではできないような、複数の数字の場合で、例えば
 __1__2_23 (1, 2 23 を3桁右寄せで出力した場合)
としたいのです
>>153 format関数が使えた気がする。
>>154
 Format()でできました。どうもありがとうございました。
  ttp://www.nifty.ne.jp/forum/fdelphi/faq/00149.htm
156デフォルトの名無しさん:02/10/16 17:23
.NETのDelphiって出たんだろ?
やっぱりコンパイル速度はC#やVB.NETに比べて速いのか?
>>156 出たのはプレビュー版です。
158デフォルトの名無しさん:02/10/16 17:55
はじめまして。

Delphiについて教えて下さい。

DelphiとVC++の実行速度はやはり、Cの方が早いのですか?
Delphiで造るのに苦手なものってなんですか?
逆にDelphiで得意なものとは?

教えて下さると幸いです

よろしくお願いします

159デフォルトの名無しさん:02/10/16 17:58
>>157
出たのがプレビュー版かどうかは知らんが出たんだろ。
コンパイル速度はC#やVB.NETに比べてどうなのよ?
>>158
実行速度はC++と同等。
苦手なものはC/C++言語のソースと合わせるには、BCB買わなきゃならんことかな。
得意なものは、コンポーネント作成、ActiveXの利用、高速RDBアクセスかな。
>>160
ActiveXも作れるが、クラスライブラリを派生したコンポーネント作成の方が簡単で高機能ってことね。
クラスライブラリ内にOS依存部分を持ってて、
Delphi7にバンドルされてるKylixでLinuxアプリをコンパイル出来る。
後、ランタイム不要。
>>160
何度も出てるが爆速コンパイルも得意。

>>158
逆に聞きたいけど、その情報を得てどうしたいの?
163142:02/10/16 19:36
>>143 >>144 >>146
できました。ありがとうございました。
Delphiでゲームのセーブデータを編集するようなアプリケーション作れますか?
165デフォルトの名無しさん:02/10/16 19:52
>>164
やってやれないことはないと思う
インタプリタの激遅C#より遅いってのが玉に瑕
167bloom:02/10/16 19:53
Memo.Lines.Add(・・・);
でメモに文字を書き込むとき、色を変えることとかできますか?
Memo.Lines.Add(String1 + String2); で String1 だけ赤にしたいとか青にしたいとかです
>>168 オーナードローでできたと思うがrichedit?だったかそれ使うのが本当ではないかと。
170デフォルトの名無しさん:02/10/16 20:01
Memoでできたかなあ。
>>166
C#はインタプリタじゃねーだろ
>>168
そういう機能はRichEditの領分でしょ
みんなDelphiでどんなアプリケーション作ってるの?
174デフォルトの名無しさん:02/10/16 20:50
>>173
Delphi->VB.NETソースコンバータ
Delphiってこれから将来は明るいですか?
>>174
????
中国なんかがLinuxしてるし、
それはM$排除が目的だから.NET敬遠されるだろうし、
KylixがバンドルされるDelphiは明るいんでわ。
>>168 です。

レスありがとうございます。確かに RichEdit でフォントとか変えられますね。
 ( RichEdit.Font.* 以下に色のプロパティなどありました。)

でも、全体での変更で同じフォント、色に統一されてしまうようで
別の方法を考えたいと思います。
Delのエディタみたいに特定の文字だけボールドさせるとか、色を変えるとかしたいんですが・・・
>> 特定の文字だけボールドさせるとか、色を変えるとかしたいんですが・・・

RichEdit でできるでしょ。別な方法って、どっかからコンポーネントを
もってくるの? まぁ、それでもいいけどさ。
>>179
Del ヘルプにこうあるのですが、
Delphiプログラマーズガイド > テキストコントロール > コンポーネントライブラリの使い方

> 編集ボックスに入れたテキストの外観を変えるには,Font プロパティに値を
> 割り当てます。フォントは,書体,サイズ,色,属性を指定できます。指定し
> たフォント属性は,編集ボックス内のテキスト全体に影響します。個別の文字
> ごとにフォント属性を変えることはできません。

よかったらRichEditでのその方法を教えていただけませんか?
よろしくお願いします。
>>180 ヘルプの例より

procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.DefAttributes.Color := clBlue;
RichEdit1.DefAttributes.Style := [fsBold, fsItalic];
end;
>>181

すまん、こっちのほうだった。

procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
begin
Color := clRed;
Height := Height + 5;
end;
RichEdit1.Lines.Add('This line of text will be red.');
end;

>>181-182

これです! これがしたかったんです。
本当に助かりました。
わざわざ教えてくれて、どうもありがとうございました。
調べりゃ解るだろ、と思ったらRichEditのヘルプは見にくいなぁ
追加したコンポーネントのアンインストールってどうやったらいいのでしょうか?
>>185
インストールした.bpl開いてリストから消したい.pasと.dcr(あれば)削除してコンパイルだと思ったがよく分からない。
>>186
bplじゃなくてdpk
>>187
そうだったか。
189:デフォルトの名無しさん :02/10/17 10:38
どなたかお助け下さい。
パソコンの動作がおかしくなったのでOSを上書きインストールしたら
DELPHI4.0で作ったプログラムを開くと
「クラス TTABLE が有りません ーーー」というメッセージで出て
プログラムを正常に開けません。
DELPHIのシステムを1度削除してインストールしなおしても同じです。
でもこのエラーが出たDELPHIのプログラムを人から借りてきたパソコンに
DELPHI4.0をインストールすると同じプログラムなのにこの場合はちゃんと
エラーメッセージがでないで開け、正常に動作します。
インターネットでいろいろ検索したのですがこんなエラーの例はないのですが
どなたかお助け下さい。

なお自分のパソコンも人から借りてきたパソコンも機器の構成
OSもほぼ同じです。
(時分が同じ時期に自作した)
OSは WINDOWS98SEです。

「OSを上書きインストール」が原因だろ?

ハードディスク丸ごとフォーマット。
システム全部再インストール。

あぁだこうだ考えるより早いよ
Delphiの本ってマジででかい本屋いかないと見つからなくねぇ?
>>189
D4を起動して コンポーネント -> パッケージのインストール で
設計時パッケージをみて下さい。

□Borland Database Components にチェックは入っていますか?

同じ事をプロジェクトオプションで確認してみましょう
>>192
189の文面どおりだと、それでは根本的な解決にならないような気がします。
190が正解ではないでしょうか、
というかHDD交換。
Delphiでファイルを開くときにバイナリエディタで開いたように
表示するにはどうしたらいいですか?
>>191
Delphiはハウツー本文化じゃなくて、VCLやインターネットに散在してるソースを読む文化。
>>195
・素直にバイナリエディタで開く
・ダンプツールで一旦バイナリエディタのような形式のテキストに落とす
・Boralndに要望を出す
・OpenToolsAPIでできるかはしらない
あ、ごめん。Delphiの環境のことかと思った

て、マルチポストかよ
199189:02/10/17 17:11
みなさんアドバイス有難うございました。
>>192
さんの書かれたことを実行してみました。
□Borland Database Components にチェックが入っていました。
このチェックをはずすとエラーは出なくなりました。
しかしなんかTTABLEのコンポーネントのアイコンが出なくなってしまいました。
まあ、これでもプログラムは修正できるんですが。
本当はここにチェックが入るのが正しいのでしょうか、でもチェック付けると
>>189のようなエラーが表示されてしまいます。



>>199
http://pc3.2ch.net/test/read.cgi/tech/1029120920/77
これを参考にアプリディレクトリの不要ファイルを一度消してみては?
201ねこま:02/10/17 17:38
正規ユーザーなら CD にインストールイメージが入っているので
Delphiを終了して,dcp, bpl を入れ換えて再起動とか……
パッチがあたってないけどね.
あとチェックディスクをかけてみる事をお薦めします.
202ねこま:02/10/17 17:43
素直に再インストールした方が安心確実高利回りかも
>>202
元本は保証してもらえますか?
どうしてもOS消去からやりたくない場合はスキャンディスクをかけてから

一旦D4をもう一度アンインストール
 その後、フォルダも全て手動で完全に消す
 DelphiのCDROMから \system と \system32のフォルダの内容を見て、
  そこにあるファイルを全部消すか、それを上書きで書き換えておいておく
 それからレジストリの
  HKEY_CURRENT_USER\Software\Borland\Delphi\
 以下を全て消す。(次にインストールした後で設定を保存しておくといい)

他に、アプリのフォルダから DFM PAS DPR 以外、ほかの不要ファイルを全部消す

それからD4のインストールすれば普通は大丈夫でしょう。
205189:02/10/17 18:00
>>201
正規のユーザです。
早速やってみます。
しかしdelphiはちゃんと買ったけど、発売元のサポートて何もないも
同然ですね。
確か以前、delphiに同梱されていたinstallsheildに不具合が
あったのでボーランドに問い合わせたら、
インストールするまでしか教えられませんなんていわれた。
delphi使おうとするひとでインストールに手間取る人なんて
いないでしょう。
でも結局やっぱりボーランドのミスだった。
こんなサポートでは何万も出して正規に買う人いなくなる。
206ねこま:02/10/17 18:03
は?
バックアップとっておけばよろしいかと思うんですけど……

よくやったのは,今の Delphi のフォルダ名を変更して
新しくインストールして,ライブラリやらを少しずつ復元

207189:02/10/17 18:09
みなさん有難うございました。
解決しました。
>>200さんの指示どおり、作成したプログラムの不要ファイルを
消したら、エラーが出なくなり、TTABLEも使えるようになりました。
プロジェクトを再構築すると中間ファイルも再構築されると思って
プロジェクトを再構築してもだめでしたがdcuなどのファイルを
すべて消したらokとなりました。
でもなんでこんなことになるのでしょう。
やはり2ちゃんの方のアドバイスは絶大です。
本当にみなさん有難うございました。
delphiでファイル送受信をする方法を探し、
ttp://www.users.gr.jp/ml/archive/delphi/48638.asp
このようなものを見つました。
テキストの場合、上手く受信したファイルを保存出来るのですが、
他の形式の場合の受信方法がわかりません。
どのようにすれば良いでしょうか
209ねこま:02/10/17 18:46
>>元本は保証してもらえますか?

ご飯食べた後,ぼーっと歯磨いてるときに気づいた
マジレスしちゃった……恥ずかし
>>205
どういう不具合かわからないけど、InstallShieldの不具合ならボーランドに
問い合わせるのは筋違いではないかな?
D5のISXのReadMe情報を見てもボーランドに問い合わせろとは一言も
書いてないし。
あとサポートはタダという思い込みはしてないかな?
211デフォルトの名無しさん :02/10/17 20:42
>>210
いえいえ、InstallShieldはDelphi用ということでボーランドも関係しています。
というのは、データベースを使う場合IDEコンポーネントの配布が必須と
なるため、DELPHIには必ず、配布のためのInstallShieldが付属しており
DELPHI用にカスタマイズされています。
このためボーランドも関係しています。
このときの不具合はデータベースのエリアスの設定ができなかったと
覚えています。
自分は仕事に使おうとしていたため、この致命的な不具合でプログラムの
配布が非常に困難になりました。
その後だいぶたって、ボーランドもこの不具合に気づきホームページで修正パッチを
載せていました。
しかし、自分がボーランドに問い合わせたときにきちんと障害の内容を
聞いてもらえればすぐに対応できたはず。
もちろん開発言語なので細かなサポートまでただでなんておもっていませんが
使うときすぐに問題になる不具合まで受け付けないという態度が
納得できませんでした。
( ゚v^ ) オイチイ
213デフォルトの名無しさん:02/10/17 21:03
このときのボーランドの態度は、例えばソフトを買ってそのソフトに
不具合があっても一切、サポート契約しないと対応しないとのことでした。
しかしこれはおかしい。
普通ソフトを買うと少なくとも数ヶ月くらいはサポートをどの会社でも
している。
それがインストールまででそのごは一切知らないとのことであった。
これでは不具合が満載のソフトを販売しても有料でないと
話しさえ聞かないということでした。
こんなバカな話しはないと思った。
これではバグがあってもそのままになったり、気づくのがものすごく
遅れてしまいます。
無理に使ってくれなくてもかまわないんだけど?
Delphi製のアプリは重い
プログラム作った経験があるなら >>189 のような調子で不具合報告されても困ってしまうとは思わないのか?
普通に、再現出来る状況を見極めて、再現方法を含めた報告として連絡すれば次のバージョンで採用はしてくれるよ。

それに、プログラミングツールなんだから、余程致命的でない限り、回避策くらいあるだろう。
>>213
サポートはどこもそんなもんでしょ
仕事らお金と時間のトレードオフを考えて決めればいいだけ
障害の報告はどこでも受付だけはしてる
Windowsのソフトなんだから不具合なんか有ると思ってそれを回避しながら使わなきゃ

いつからサポート代も製品代に含まれるようになったのか
>>213 なんか不満をもってるのは判るが、
>>215
upx圧縮汁
>>208
TFileStream
なんかすごいテクニックを知りたい。
>222
for i := X to Y do
begin ・・・ end;

i := X; while i <= Y do
begin ・・・  Inc(i); end;

     ∧,,∧   制御変数 i を触りたくなったら
    ミ,,゚Д゚彡   この変換を覚えておくとよいよ。
    (ミ   ミつ
     ミ   ミ  
     ∪ ∪  

for i := X downto Y do
begin ・・・ end;

i := X; while Y <= i do
begin ・・・  Inc(i); end;
224222:02/10/18 01:28
>>223
凄すぎです!
(・。・)ですよ!
for i := X downto Y do
begin ・・・ end;

i := X; while Y <= i do
begin ・・・  Inc(i); end;

これは変
( )
 ( )   ( )   
  ∧=∧    せんせい
 ミ,,゚Д゚彡∩  < こぴぺみすた。
| ̄U ̄ ̄ ̄.| 

i := X; while Y <= i do
begin ・・・  Dec(i); end;
>>226

それで、for ループでは「触れない i になぜ触れる」ことになるの?
   ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < 説明めんどいから明日一日考えといて
  ,;゙  ミ     \_____________
 @  ミ ナンカ アオリッポイシ
  ゛゛゛゛
「for 文の後では i の値が保証されないから while を使う」という話は
別にテクニックではない。
230208:02/10/18 08:23
>>221
具体的にどのようにTFileStreamを使えば良いのかがわからないです。
>>213 粘着すまん
>普通ソフトを買うと少なくとも数ヶ月くらいはサポートをどの会社でも
>している。
それはあなたの常識では?

>これでは不具合が満載のソフトを販売しても有料でないと
>話しさえ聞かないということでした。
良い悪いは別にして、そういう契約はよくあります。

製品のバグかユーザの勘違いかは調べてないとわからない。
もし、それがユーザの勘違いだった場合、その費用は誰が負担
するのでしょう? だからサポート契約で前払いしろとなるわけです。

つーか、仕事でやってるならそれくらいわかるだろ?
>>230
テキストの場合はどうやって保存してるの?
TFileStreamのどこがわからないのか具体的に書いて。
Delphi Language用のindentツールはありませんか?
234158:02/10/18 10:40
>>160
>>161
>>162

C++にするか、Delphiにするか 迷っている学生です。
過去の経験は、BASICのみです。
プログラミングがしたいと思っていたら、叔父が じゃあ、どちらか
選んだら教えてくれ。買ってあげるからと。ただし、VBだけはやめとけと。
そういうことなんです。ちなみに叔父はDelphi4をさわっているようですが
俺に合わせても何も教えないと言われまして。ただ、C++もDelphiもどっちも
どっちだ。どちらかに決めたらふらふらするな。どっちか使えるようになったら
もうひとつを後から勉強してもそれなりに使えるようになると。
今は、どちらも只のがある。本当はそれを試させればいいが、ふらふらしそう
だからまず、どちらかに決めろ。人に聞くのもいいだろうと言われました。

実行速度はC++と同じなんですね。どうもありがとうございます。
C/C++言語のソースと合わせるというのは、Cで書かれたライブラリとかDLL?を
使うときにBCB(C言語ですね?)を使う事でDelphiでも使えるという事ですね
コンポーネント作成、ActiveXの利用、高速RDBアクセスについては、検索して
読みましたが??です。そういう機能があるということだけは分かりました。

LinuxアプリもDelphi7で出来るんですね。ランタイム不要ということはC++では
必要なのでしょうか。クラスライブラリという物が早くて使いやすいのですね

爆速コンパイルも検索してみましたが数人の方が、便利だと書いてます。
それくらい早いのですね
235158:02/10/18 10:41

とりあえず、意味が分からない事ばかりで、コメントもオウム返しするしか
出来ません。
ただ単にプログラミングがしたいという漠然とした動機ですが、もっと調べて
どちらにするか決めたいのですが、何を基準としたらいいのか……
どうもありがとうございます。どちらも何がしかを作るのには
差はないということが分かったのはうれしかったです
ぢゃ、叔父さんに聞けよ。
インターネットの掲示板で聞くより、脇にいる人とあーでもない、こーでもない。と
試行錯誤するほうが、確実に理解は早いぞ。

それと、無意味にあげるな。
237158:02/10/18 10:58
申し訳ありませんでした
同考えても叔父さんに聞いたほうがはやいね。
239208:02/10/18 11:13
>>232
書き込み方がよくわからないのれす。
書き込むときは、WriteBuffer()を使うの?
var
b: Byte;
i: Integer;
 fs:TStream;
begin
fs:=TFileStream.Create('file',fmCreate);
for i := 0 to Socket.ReceiveLength - 1 do begin
Socket.ReceiveBuf(b, 1);
fs.WriteBuffer(b,sizeof(b));
end;
end;
こんな感じで書いてみたんですが、ファイルのサイズは0KBでした。
>>234
とっつきやすさは VC++<<BCB<Delphi
情報量は VC++>>Delphi>BCB

DelphiとBCBに使われているVCLというライブラリはDelphiで
書かれているからDelphiの方が親和性が高いし、
詰まった時にVCLのソースを読もうとするとDelphiの知識が必須。
ネット等の情報はVC++やVBがメインだから、それを理解できる方が有利。

俺はDelphiがメインだが、Delphiをやれとは言わない。
自分で選択してくれ。
>>239
 1文字づつループを回すのはパイプか何かの処理の為?
 そうでないなら

var buf:string;
var siz:Integer;
//略
size:=Socket.ReceiveLength;
setLength(buf,siz );
Socket.ReceiveBuf(PChar(buf)^ , siz);
fs.WriteBuffer(PChar(buf)^ , siz);

として、ブレークポイントかけて buf と siz を確認してみたら?
     ∧,,∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ミ,, ゚Д゚彡     <  いいおじさん持ったね。
     〃つ_つ/  ̄ ̄ ̄/\_____________
   〜ミ,,, ,,|\ ./ レ ッ シ /
       '\/.======./
           ̄ ̄ ̄
こういうBBSやMLで情報検索しる技術(というより人付き合い)も
おじさんは学んでもらいたいと表るんじゃないのかな。

C/C++は....職業で使う必要性が無い限り、覚えなくてもいいかも。
俺は多分もう一生覚えないなー。ゲーム作るには必須かも。
旬なのはC#かと思うけど,,,,,
Delphiが.NETで旬を迎えるのは来年くらいだと思うのでそれを見据えてからでも。
で、安定して得るものがあるのは、Javaなんかどうでしょかとか。

"○○みたいのを作りたい"っていう具体的な目標があると、
プログラムの学習も苦痛じゃなくて楽しくなるのではないかしら。
"言語を覚えたい"って考えだと、中小度が高くて、すこし挫折しやすいよ。

で、作りたいものがはっきりしてくれば、言語の得意分野があって
どれから学習すべきかの道筋が見えてきやすいかな。

>>208>>239 とりあえず、FileStreamの使い方、見といてくださいな。
もっといいサンプルはMLログとかにあるかもしれませんが。
Delphi:WideStringとUnicodeでファイルアクセス
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1034090664
Inseder.NET DelphiプログラミングTips?? ファイル入出力の基礎
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1001489683&res=7&fi=no
当人がC++かDelphiか迷っているところに、C#だのJavaだの釣り下げると
ますます迷うと思うけどなあ。旬かどうかも勉強にはあまり関係ないだろうし。

何が作れるかは、C/C++もDelphiも充分なパワーを持っているので、
特に気にする必要は無いし、ランタイムも共に不要ですよ。

BASIC経験があるなら、構文的に近いのはPascalかなー。
かくいう自分も、DOSでBASIC→Cに挫折→Delphi2.0〜なクチ。
で、Pascalでポインタなどの低レベル操作を覚えてからC/C++に戻ってみると、すごくよく理解できた。
ただし、今のDelphiは、ポインタなどを使わなくてもいい方向に進化してきているので、
そういうのに慣れてしまうと後々キツいかも。
Delphiやるなら、最初はTListなどの便利品を使わずに、自力でリンクリスト作るぐらいの気概で
やった方が身になるかな?(BASIC経験があるならそれほど苦でも無いと思う)

叔父さんがVBを選択肢から外したのも、そういうアルゴリズムをちゃんと覚えて欲しいと
思っているのだと考えられるし。

逆に、C/C++を選ぶと、その辺の低レベル操作が必須知識になるので、勉強にはいいかも。
でも、徐々に…ではなく、いきなり、になるので、多少とっつきにくいかな?
(BASICでVARPTRやPEEK、POKEを使いこなしていれば楽勝でしょうけど)

…お節介で余計な長文だったかも知れませんね。ゴメン。
BASIC経験のレベルにもよるよな(w
直接I/Oや、機械語サブルーチン、BIOSコールなんかを使いまくる強者で、
最近の言語が様変わりしていてイマイチ把握できないってだけの話なら、
それは俺達が偉そうに何か言っていい相手では無い…
245デフォルトの名無しさん:02/10/18 13:36
みなさんバージョン情報の数字って
どのように設定してますか?
     ∧,,∧   そんな子なら、あんなカキコには
    ミ,,゚Д゚彡  ならないかと。>>244
    (ミ   ミ)  
>>234
C++スレとDelphiスレに転がってるコード眺めてみて、自分が分かりやすそうなほうを選ぶといい。
勉強用の情報はC++のほうが多いだろう。Delphiの情報を探すのは書籍でもネットでもやや困難。

でも、どっちを選んでも、本を一冊買って一年ほどまじめに自習すれば身に付くから。
あとはやる気が持続するかどうかだね。

個人的にはBASICの次にC言語をやるのがいいと思うけど、
まあここはDelphiスレなのでDelphiをお勧めしておく。
俺は両方使えるけど、Delphi覚えてからはあんまりCやC++を使いたくなくなった。
あと、BASICからの移行だと、C言語のコンパイルの遅さがいやになるかも。
248Delphi歴15分:02/10/18 15:44
まだボタンをクリックしたら「こんにちは」と出る程度の
プログラムしか作れません。
頑張ってね
15分なら上出来。
251208:02/10/18 23:30
>>241
stringって、255バイト以上扱えましたっけ?
9バイトのテキストは上手く出来ましたが、
100KB位のexeファイルだと、3KBまでしか保存されませんでした。
                __________
    ,,,,,,,,,,,,,,,∧,,∧   /
  〜′,,,,,,,,,,ミ,,゚Д゚彡<  あつかえまつ。
   UU"""" U  ⊃  \
                 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>240
>情報量は VC++>>Delphi>BCB

BCB(VC++ + Delphi) > VC++ >> Delphi
>>253
VC++の情報のうちMFCやATLの情報は少なくないからBCBでは使えない情報も多いぞ。
いいとこVC++>BCB>Delphi
あと、1ヶ月もすればC++(というかC)のWinAPIについての情報も使えるから
結局情報量はVC++>Delphi>BCBに落ち着くと思われ。
>>251 受信バイトがゼロになるまで何度もループしてみたら?
Delphiをやさしくわかりやすく解説してくれているサイトないですか?
258デフォルトの名無しさん:02/10/19 11:50
先生!

index := LastPos('hoge', 'hogehoge');

みたいな感じで最後に出てくる検索語のインデックスを
求めたいのですが関数が見つかりません。

どうすればいいですか?
>>258
作って下さい。 2つの戦略があります

1、最初から検索して、最後に見つかった位置を返す
2、最後から検索する
>>258
一般的に言うなら、AnsiStrPosを繰り返し実行すればOKですけど、
状況によっては(それが文字列を解析する処理の一部で、それまでの情報を利用できるなら)
もっと楽できる場合もあります。
何がしたい?

(前に同じような事で…だったので即答は控えてみる)
261VB信者:02/10/19 12:17
最近デルファイ始めたんですが、
なんとなくJAVAに似ているような気が・・・
開発環境自体はVBみたいですね。
262258:02/10/19 12:35
まじっすか。作らなきゃないんすか。
絶対見落としてるだけで用意されてると思ったのにー。
だるだる
>>262
まあ、だるだるではありますが、やろうとしている内容によっては
文字列の解析アルゴリズムを勉強するチャンスですよ。
Pascalはそういう基本的なアルゴリズムで手を抜けないようになってる(w

260でも書いたけど、具体的に何がやりたいかで
楽な方法がある場合もあるし。
例えば、一文字だけならLastDelimiterなんてのも。
>> Pascalはそういう基本的なアルゴリズムで手を抜けないようになってる(w

Pascal とは関係なく、たんに Delphi の関数の数が貧弱なだけだと思う
265258:02/10/19 12:47
>>263
あ、どうもです。
やりたいのは、<HOGE>hage</HOGE>のhageを取り出したかったのです。
だるいけど適当に関数書こうと思います。ありがとうございました。
266259:02/10/19 12:53
ネイテブコンパイラなんだから、用意された関数使うのも、自分で作った関数も 同じ効率 なんだよ

そももそも、最後の位置を調べるような関数を使うというのは最初から筋が悪いんだし

たとえば、こんなコードだと sとsubstrが長いと重い処理になる

1、最初から検索して、最後に見つかった位置を返す
 index:=0;
 len:=length(substr);
 for i:=1 to Length(s)-len do if copy(s,i,len)=substr then index:=i;
 if index <=0 then 文字は見つからない

267259:02/10/19 13:00
>>265
 ああ、それなら
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1001489683_19/uSpliter.pas

これを使うとスマートに書ける
考え方を言うと
str:=GetNextStr( ['<','>']); sep:=GetChar;

で 切り分けて sepが '<'か'>'か #0 かで場合わけするだけ
268258:02/10/19 13:05
最長一致させたかったんすよ。
<HOGE><HOGE>hage</HOGE></HOGE>
の時に<HOGE>hage</HOGE>が取れるように。
書き方悪くてすんません。
269263:02/10/19 13:14
それなら、先頭から状態遷移しつつスキャンしてってもいいかな。

I := 1;
while I <= Length(S) do
begin
 if S[I] in LeadBytes then Inc(I)
 else if S[I] = '<' then begin Tag := True; if InText then TextEnd := I; InText := False end
 else if Tag and S[I] = '>' then Tag := False
 else if not Tag and S[I] <> #32 then begin TextStart := I; InText := True end;
 Inc(I)
end;
Result := Copy(S, TextStart, TextEnd - TextStart)

今適当に書いたコードなので穴だらけです。大体のイメージだけ。
270259:02/10/19 13:15
>>268
じゃあ
"<HOGE><HOGE>hage</HOGE></HOGE> <HOGE>hoge</HOGE>"
だと
1、 <HOGE>hage</HOGE></HOGE> <HOGE>hog が欲しいの?
2、<HOGE>hage</HOGE> と >hoge が欲しいの?

2なら、>>267 の方式で再帰処理にした方がスマートだよ
271263:02/10/19 13:21
うわ、勘違いだ…。
外側タグだけ外したかったのですね。
269は忘れて下さい。

イレギュラーな文字列が渡されない事が明らかであれば、
単純に先頭の < 〜 > と末尾の < 〜 > を省くだけでもいいと思いますけど、
あらゆるケースを考えるならば、トップダウン構文解析した方がいいかも。
SAX!
こんなものはライブラリで用意しなくてよろしい
どうせ使わないから
この点はボーランドは正しい
            _____________
   ∧,,∧    /
   ミ,,゚Д゚彡 <  単に某の人手が足らんだけだと
   ,;゙   ミ     \ 思うが..
 @ミ,,,UUミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

とか言うと、またたたかれるんだけどね。(w
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1023631451
より高速化は誰か他の人に。
275258:02/10/19 13:51
正直みなさまお手数かけました。

ありがとうです。
>>275
え? 解決したの? 入れ子になってない場合もそれでいいの?
"<HOGE><HOGE>hage</HOGE></HOGE> <HOGE>hoge</HOGE>"

"<HOGE>hage</HOGE></HOGE> <HOGE>hoge"

になるのはあきらかに変だと思うんだが?
>>274
正直そのコードはもう持ち出して来ないで…。
誰かがうっかり使うかもしれないし、その都度計算オーダーの説明するのも面倒…。
            _____________
   ∧,,∧    /正直、質問者の質問意図を蟲して
   ミ,,゚Д゚彡 <  別海を無理やい教えるのも
   ,;゙   ミ     \ やめてホスィから お相子ってことで。
 @ミ,,,UUミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
なんだかなあ 文字列処理の件になると頑なだね 
ホント・・・・なんともはや・・・・

でも、考えてみると、ちゃんとしたスタイルの処理の入門書って最近みあたらないし しょうがないか
いまだにコンプレックス引きずってんのか?
自分の技量の無さを某に八つ当たりならVB厨並だぞ。
そもそもDelで文字列処理する時点で筋が悪いといえるだろう。
いまどき正規表現クラスのないような処理系は糞。
                __________
    ,,,,,,,,,,,,,,,∧,,∧   /
  〜′,,,,,,,,,,ミ,,゚Д゚彡<  文字列逆方向検索を
   UU"""" U  ⊃  \ 書いて示しただけだよ。
                 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  それを、「そのコード持ち出してくるな」
  って言う方がどうかしてるよ。

  高速化したけりゃご勝手にドウゾだってば。
もういいんだよ。
君は文字列の話に出張ってこなくて結構。
今回のケースだって、きちんと解析すれば、文字列を一回スキャンするだけで良いし、
>>267等はそういうコードでしょ?

質問者だって、おぼろげに、最後の位置を検索するのが必要だろーなーと思ってただけだろうし、
検索して位置を特定する手法だとスキャン回数が検索回数分増えてしまうわけだし、
もっとスマートな解があれば教えてあげてもいいんじゃない?

…で、>>274のコードは、普通に検索を繰り返すよりも、さらにオーダーを悪くする、と…。
こんな説明じゃ納得できない?
>>281
正規表現クラスはこれ使ってます。なかなか便利です。
http://anso.virtualave.net/delphi_stuff.htm#TRegExpr
>>285
いいねこれ。DLL要らずか。
>…で、>>274のコードは、普通に検索を繰り返すよりも、さらにオーダーを悪くする、と…。
         _________
  ∧,,∧   /
 ミ*゚Д゚彡< 速いコードを見せてホスィ
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪ ∪   爆速ならかなりうれしい
>速いコードを見せてホスィ

今回のケースなら、検索などせずに、頭から>>267のように切っていくだけ。
文字列の部分を切り出すのが目的なら、あんな感じで解析すれば1回のスキャンで済む。
(…ってのは何度も言われて聞き飽きてると思いますが、ホントの話ですので)

単純に検索目的なら、真面目にやるなら
途中まで一致した場合の情報を使ってスキップしていくアルゴリズム(名前忘れた)使えばいいし、
手抜きでCharNext/CharPrevで移動しながらCompareStringを連発しても、
Shift-JISのTrailを飛ばせる分>>274よりはほんの少し速いと思う。
  ∧,,∧   /そいえば、なんとかってアロゴリズムが
 ミ*゚Д゚彡< MLに投げられていた気が。あれとは違うか...
  ミつ つ  \ DelphiIDEの逆検索(ShiftF3でキカヌのが玉に傷
         な実装ってどなってるんでしょうね。
         不思議なトコです。
>>287 その見せて欲しいのは
1、後ろから一致する検索
2、<HOGE>hage</HOGE> スタイルを正しくSplitするコード

のどっち? 1だと意味がない 2だと仕様をもう少しはっきりしないと書きようがない
例えば <BR>のような閉じてないタグがあるのか つまり一般のHTMLなのか
それともXMLのように必ずタグは閉じてるのかとか

それと、木構造で再帰的に処理する必要があるから、さすがに少し考えないと出来ないよ
>>289 Delフサギコ
このコードも8までの命か…

って上のリンク先でコメントしてるけど
どういういみ?
   ∧,,∧    /いや、Delphi.NETになってStringがUnico
  ミ,,゚Д゚彡 < になったら、また違ってくるかと。
   ミつ つ   \.NETのCLR(か?)のstringを使うのかな?

>>290 1、後ろから
です。

関係ないけど、
2、って、<HOGE >とか< / HOGE>
とか、スペースが入るのを考慮すると、
いろいろ大変っすよね。どこまでOKにするのか...IEとか
挙動しらべませんといけなくて鬱にnull
うつにぬる
294デフォルトの名無しさん:02/10/19 17:54
正規表現は日本語にも対応してる↓のを使っているのですが、Delphiユーザーが
一般的に使っている連想配列のクラスライブラリってどんなのがありますか?
ttp://homepage1.nifty.com/bmonkey/delphi/delphi.html
295デフォルトの名無しさん:02/10/19 19:28
personal版でもソースのバージョン管理機能は使えますか?
使えません
オブジェクトツリーは便利です
ソースのバージョン管理機能なんて付いてるの!?
Entになんちゃってソース管理機能がついてるよ
>>294
TStringList
>>295
できます。
cvsを使います。Pro版で使ってます
302295:02/10/20 07:54
レス、ありがとうございます。
遊びで使おうと思っているんで、personal版でcvsを使うことにしました。
303デフォルトの名無しさん:02/10/20 08:04
すいませんが質問です。

memo1のloadfromfileでホームページのソースを
表示させたいのですが、

Memo1.Lines.LoadFromFile('http://xxxxxx.html');

では表示できないのですが、どのようにすれば良いのですか?
>>303
ホームページのソースをダウンロードしてから
Memoに読み込みましょう
>>303
IndyのIdHTTP使うと楽。

procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.Get('http://www.borland.co.jp', mem);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
mem := TMemoryStream.Create;
end;

procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
Memo1.Lines.Text := PChar(mem.Memory);
end;
D6以上ならHTTPダウンロードは標準アクションにあるってさ
307303:02/10/20 13:24
いろいろレスありがとうございます。
すごく勉強になります。

>306
personalでもですか?
308デフォルトの名無しさん:02/10/20 15:25
コンパイラをダウンロードしたいんですけど
          標準Actionなんて使ったこともなかったですが
    ∧,,∧   このようにすると、ダウソができるようえす
   ミ,,゚Д゚彡  でもIndyもいと。オモフ
    ミ つ旦)~~
  〜と,,,~),,~)  >>306-307

内部でいったいどういった処理をしてるのだろう?
GetProcAddress APIを使っているようにも思えるですが...

object DownLoadURL1: TDownLoadURL
 Category = 'インターネット'
 Caption = 'URL からダウンロード(&D)'
 Hint = 'URL からダウンロード'
 URL = 'http://www.borland.co.jp/index.html'
 Filename = 'ダウソ.html'
end

procedure TForm1.Button4Click(Sender: TObject);
begin
 DownLoadURL1.ExecuteTarget(nil);
 Memo1.Lines.LoadFromFile( ExtractFilePath(Application.ExeName) + 'ダウソ.html' );
end;
>>251
Delphi 2.0から文字列変数の仕様が変更されて
単にstringとだけ宣言すると約2Gバイトまで扱えるようになっています.

>>261
登場順序がVB→Delphi→Javaで,
Delphiの開発環境はVBを参考に作られたのでおっしゃるとおりです.
JavaはDelphiがもとになっているようですね.

>>263
でもBASICのINSTRみたいに
文字列の途中から検索する関数がないのはどうかと思います.
これひとつあるだけで特に入門者はかなり助かるかと.
(D6以降はあるのかな?)
>>310
>JavaはDelphiがもとになっているようですね.

で、そのおもしろ情報はどこで仕入れた?
>>311
ほっといてやれよ(w
>310
 C でいうところの strstr だよな、InStr って。
 Pos 関数、AnsiPos 関数が昔からあるぞ。
 せめてヘルプくらいは読め。
>>313
いや、途中からの検索。
途中からの検索が必要とされる場面というのは、大抵の場合、
きちんと解析したほうが効率よくて堅実なコードになる事が多いのだけれど、
やっぱ無いと入門者には不便、という話でしょ。

…でも、有れば有ったで、きちんと処理する事をしなくなるので、難しいところ。
>>313
同意。CopyとPosがあればstrok相当の関数は作れる。

正直、ライブラリに頼らないと何もできない奴って恥ずかしいと思う。
>>311-312
ワラッタ

>>315
チミはまだまだだな。
   _____________
 /
 | 藁ってやるな。
 \_ ____________
    |/
   ∧,,∧
  ミ,,゚Д゚ミy━~~
   U   ミ
 〜ミ   ミ 人にHELP嫁とかライブラリ頼ら
   ∪''∪  など言う前に・・・

>>315
Copyで文字列を逐次生成する分の無駄を考えたほうがいい。
ライブラリを作るつもりでCopyを使うと、それこそ怒られる。

>>314 そだね。
軽めエヂタつくっても、上下方向検索コードかくの面倒かな。

どこかの翻訳記事でJava開発者の
だれそれさんのインタビューで
VCLなどを参考にしたって話があったのだけど
見つからないですなー。
誰か知りませんか?

この近所だった気が激しくするんですが、、、

C# - 自然な前進
ゴミ箱行きの Visual J++ の代わりに、Microsoft が投入する C# とは?
http://www-6.ibm.com/jp/developerworks/java/001215/j_jw-csharp.html

>>311
すいません,あまりにもよく似ているので何となくそう思っただけです.
何となくそう思ったなら明確にそう書くべきでした.

>>315
BASIC/VBから移行したときは速攻でInStr関数を作ったですよCopyとPosで.
でも8ビット時代の経験者(一応)としては
検索のためにCopyなんてオーバーヘッドを考えたら気持ち悪いので
StrPosだったかを使った版も作ってみたのですがうまくいかなくて,
(これは単にバグを見つけられなかっただけで恥ずかしい限り)

結局,そのプロジェクトでは扱う文字列が最大で数百バイトだったので
そのままにしましたけど.
>>314
こんなの作ってみたけれど、叩いてみてくれないか

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;
321デフォルトの名無しさん:02/10/21 06:16
D7では、PosEx があります。
>>319-320
んじゃ遠慮無く。
・AnsiStrLCompを使っているということはDBCSを考慮していると思われるが、
 それなら単にpをInc/DecするだけではなくLeadBytesの判定もした方がいい。
 (CharNext/CharPrev APIが手っ取り早い)
・PChar系の関数は性質上#0以降を無視するので、
 こんな場合は直接CompareString APIを呼んだ方がいいと思う。
その他、
・string引数にはconstを付けないと参照カウント増減処理が入る。
・resultへの代入は関数を抜ける直前にすると、eaxだけの処理で済む。
・他の文字列関数に合わせるなら、インデックスは1から。

…ってことで、勝手に直してみた。

function FindStr(const s, str: string; InitPos: integer): integer;
var
 p, pinit, pStr: PChar; Count, SubLen: integer;
begin
 SubLen := Length(str);
 Count := Length(s) - (SubLen + InitPos) + 2;
 pinit := PChar(s);
 p := pinit + InitPos - 1;
 pStr := PChar(Str);
 while Count > 0 do
 begin
  if CompareString(LOCALE_USER_DEFAULT, 0, p, SubLen, pStr, SubLen) = 2 then
   begin result := p - pinit + 1; Exit; end;
  p := CharNext(p);
  Dec(Count);
 end;
 result := -1;
end;
悪い。訂正。
×Dec(Count);
○CharNext前のpを覚えておいて、変化量を引く。

if p in LeadBytes then
begin
 Inc(p);
 Dec(Count);
end;
Inc(p);
Dec(Count);
の方が手っ取り早いかも。
更に訂正。無駄に残数数えるよりこの方が手っ取り早い。寝ぼけてるな自分。

function FindStr(const s, str: string; InitPos: integer): integer;
var
 p, pinit, pEnd, pStr: PChar; Len: integer;
begin
 pinit := PChar(s);
 p := pinit + InitPos - 1;
 pEnd := pinit + Length(s);
 pStr := PChar(Str);
 Len := Length(str);
 while p < pEnd do
 begin
  if CompareString(LOCALE_USER_DEFAULT, 0, p, Len, pStr, Len) = 2 then
   begin result := p - pinit + 1; Exit; end;
  p := CharNext(p);
 end;
 result := -1;
end;
×pEnd := pinit + Length(s);
○pEnd := pinit + Length(s) - Length(str) + 1
327313:02/10/21 17:38
>314
 だからさ、InStr 相当関数じゃないだろ、それ(w

バリアント型 (内部処理形式 Long の Variant) の値を返します。
ある文字列 (string1) の中から指定した文字列 (string2) を検索し、
最初に見つかった文字位置 (先頭からその位置までの文字数)
を返す文字列処理関数です。

ってのが VB の InStr 関数だぞ? 既に使わなくなってひさしいが、
昔の MS-BASIC の InStr 関数も同じだ。
これに対応するのは Delphi では Pos であろが。

んで、最初に戻ると >258 か。VB でいうところの InStrRev ね。
これに対するアプローチとしては、ポインタをうまく使えば文字列コピ
ーする必要ないでしょ。

 SBCS 限定なら、ReverseString 関数を組み合わせると一度で済む
ような気もする(w

>315
 D6 以降なら ExtractStrings 関数を引くと幸せになれる。
 それ以前でも TStrings.DelimitedText と TStrings.Delimiter 使えば(w
328313:02/10/21 18:06
uses SysUtils;

function PosRev(const keyword, source:string): Integer;
var
  s_rev: string;
  k_rev: string;
  p: Integer;
begin
  s_rev := ReverseString(source);
  k_rev := ReverseString(keyword);
  p := Pos(k_rev, s_rev);
  if p<>0 then
    result := Length(source)-(p+Length(keyword)-1)+1
  else
    result := 0;
end;

ま、できることはできるが、こんなトリッキーなこと、仕事じゃやらん罠(w
329313:02/10/21 18:08
>328
 しまった。

uses StrUtils;

じゃねーかw 謹んで訂正。
319 です。
>>322-326

ありがとう、いろいろ勉強になった。
age
332デフォルトの名無しさん:02/10/24 01:34
コンソールでGetTickCountを使いたいんですけど、
uses節にどのヘッダーを加えれば使えますか?
>>332

Windows
uses Windows, Classes, SysUtils;は基本。最初から淹れとけ。
335デフォルトの名無しさん:02/10/24 01:39
>>333
ありがとうございます。
Delphiのヘルプでは、GetTickCountとか調べても出てこないですけど、
そういうのはどこで調べれば良いですか?
336デフォルトの名無しさん:02/10/24 01:43
>>334
ふむふむ…勉強になります。
ありがとうございます。
他にもAPI関数がどこに属しているのか知りたい物が少々あるので、
>>335もよろしくです。m(_ _)m
338デフォルトの名無しさん:02/10/24 02:26
>>337
その中のどの辺りですか?
そもそもMSのサイトにDelphiの情報があるんですか???
>>338
そこまで手取り足取り教えてもらわなきゃわからないのなら、
Delphi使うのはやめた方がいいと思うけど。

とりあえず、ツールバーのカスタマイズでWin32 APIを追加してみてはどうか。
340デフォルトの名無しさん:02/10/24 02:58
>>338
君はWindowsのアプリを作っているってことを忘れている。
GetTickCount自体OSの機能を指しているわけで、Delphiは
それを(VBのようにブサイクではなく)自然に使えるように
しているから、Delphiの機能のように思っているだけです。
だから「MSのサイトにDelphiの情報が」ではなくって
「MSのサイトに(Delphiでも使う)OSの情報がある」わけです。
所詮DelphiもMSには逆らえないのだよ。
D7Proを買えってこった
343デフォルトの名無しさん:02/10/24 03:10
ちゅーか、OSベンダーに逆らうあふぉなデベロッパはいない。
しかしOSベンダーがあるチームにだけコソーリ秘密情報を教えて
いたら、イヤンなOSだなとは思う。
344332:02/10/24 03:16
>>339
そうですね。
今、CとかJavaを教えてくれる専門に行こうかどうか検討中です。^^;
でも、Delphiが一番好きだから、専門行っても独学で少しずつ勉強しようと思っていますが。

で、アドバイス戴いたツールバーのカスタマイズの件ですが、
メインメニューの「表示→ツールバー→カスタマイズ」の所ですよね?
全部覗いたのですが、Win32 APIは見当たりませんでした。^^;
自分、personalなんですけど、それにもついてるんですか?

>>340
すいません、僕の書き方が悪くて誤解を招いてしまったかもしれません。
GetTickCountがVCLの関数ではなく、API関数という事は知っています。
>Delphiのヘルプでは、GetTickCountとか調べても出てこないですけど、
>そういうのはどこで調べれば良いですか?
これは、APIの説明ではなく、あるAPI関数を使うにはどのパッケージをuses節に
加えれば良いのかが知りたかったんです。
345339:02/10/24 03:24
>>344
Win32 APIじゃなくてWindows APIだった。

カスタマイズダイアログ>コマンドタブ>分類「ヘルプ」で出てこないか?
俺もDel6Perなんだが。これで見つからんかったら知らん。
346332:02/10/24 03:26
>>345
さっきそれを追加してみて、クリックしてみたんですけど、
ファイルがなかったっぽいっす…。^^;;;
> それを(VBのようにブサイクではなく)自然に使えるように
なんでDel厨っていちいちVBをライバル視してるんだろうね(藁
348339:02/10/24 03:38
普通にインストールすれば入ってるはずなんだが・・・。

どっかにBorlad Sharedってフォルダがあればその中のMSHelpって
フォルダのなかにWIN32.HLPが入ってるはず。

なければインストールされてないので、その時は落としたアーカイブの中の
install\Common\Borland Shared\MSHelpをどっかにコピー。
349332:02/10/24 03:41
>>347
明らかにDelphiの方が優れてるのに、
仕事も人口も少ないからじゃない?
自分もDelphiはもっと世に出るべきツールだと思うし。
"win32.hlp"でハードディスクの中検索してみ
WIN32.HLPなんか見ても
> これは、APIの説明ではなく、あるAPI関数を使うにはどのパッケージをuses節に
> 加えれば良いのかが知りたかったんです。
の答えなんかわからないけどね(w

>>349
なるほどVBにコンプレックスがあるのか。
>>349
じゃあ.NETが失敗するように祈らなきゃいけないな。
でないともうDelphiの活躍する場はなくなるよ。
354332:02/10/24 03:53
>>350
ありましたー!
さっきはBorlandフォルダだけで探したので見つからなかったっぽいです。^^;
ホントありがとうございました。m(_ _)m

でも、英語なんですね。^^;
ソフトに頼らないとです。w
もともと大して活躍してないから、これからも好きなやつが使う。
Delphiの影におびえて生活するVB使いを見るのも楽しいしなァ。

ていうか、どうして比較対象になるのかわからねーが。
ほんとよくわかんないねぇ。
なんでわざわざ「VBのように〜」とか言って比べるんだろうねぇ。
Del厨は。
357350:02/10/24 03:59
ワシよりも>>339に感謝せんかいワレ
ただのAPIの英語のヘルプ見て喜んでるよ(w
359332:02/10/24 04:02
>>351
でも、これも役に立ちますよ。^^;

>>352
自分はコンプレックスっつーか、残念なだけだよ。
Delphiが一番好きだけど、他の言語も好きだし。
ちゅーかさ、君、俗に言うVB厨って奴?
何でわざわざDelスレ来てるの?

>>353
んー、でも.NETの変更点見たら、結構Delに近くなってんじゃん?w
まぁ、レベルアップしたんだし、.NETの登場は喜ばしいことだと思ってるけどね。
プログラミング界全体のこととして。
360332:02/10/24 04:05
>>357
あ、>>339さんとは別人でしたか…。^^;
お二方、ありがとうございました。m(_ _)m
>>359
なんか勘違いしてるね。コンプレックスがあるのは事あるごとにVBと比較したがる>>340のような奴だ。
362デフォルトの名無しさん:02/10/24 04:14
おれも書き込みがDel厨になるらしいが、一応仕事では
御指名があればVBなければDelphiでやってます。VBは
ライバル視しているというより、なんでVBでやらなきゃ
いけないんだという恨みが
こもってます。
変数宣言のときのDimだけで脱力せずに仕事するやつって
あるいみアフォですよ。
363デフォルトの名無しさん:02/10/24 04:17
変数宣言のときのDimだけで脱力するやつの方がよっぽどアフォ。

あの Dim ってどういう意味なの?
Del x VB
でこんなに盛り上がるのはなぜなんですかぁ・・・。

Delphi使った上でVBにわざわざ喧嘩吹っかける奴なんていないって。
優れてる、劣っている以前にやることが違うんだから。

とりあえず両方起動してみて御本に書いてあるサンプルプログラム打ち込んで
VBのほうが簡単だぞゴルァ!
・・・という展開ならわからんでもないが。
366332:02/10/24 04:25
>>361
まぁ、VBと比較するのは当然のことなんじゃないかな?
BorlandってDelphiをVBのポジションに近づけたいんじゃないの?
だからサイトでもVBからの移行云々書いてるし。
VBユーザの為のDel本も出てるしさ。

ちうか、VB vs Delphiスレに移動した方がいいよね?
ここは質問スレだし。
367332:02/10/24 04:27
Dimは確かにウザいけど、.NETになってから、
まとめて書けるようになったんじゃなかったっけ?
ボタンを押したらMemo1の中身を変えたいのですが、どうしたらいいでしょうか?
下のように一行ずつだと面倒なので、まとめてやりたいのですが…。
実際は20行くらいのテキストが20個くらいです。

begin
Form1.Memo1.Lines.Add('させしすせそさそ') ;
Form1.Memo1.Lines.Add('') ; //空白行
Form1.Memo1.Lines.Add('???') ;
複数行のまとめ書き換え?
Memo.Lines が TStringList だから、LoadFromFile / LoadFromStream とか
もっと気楽にやるなら、visible = False の Memo2 コントロールを隠し配置して
Memo1.Lines := Memo2.Lines;
370332:02/10/24 05:51
>>368
中身を変える?
Addは一番最後の行に追加する時に使う物だよ。
とりあえず、そういった処理はwithを使って、
with Form1.Memo1.Lines do
begin
 Add('');
 Add('');
 Add('');
 …
end;
とやれば、比較的簡単にできる。

>>369
別にMemo2を配置しなくても、TStringList型の変数用意して、
Assign使った方がいいんじゃない?
>>370
元質問者の意図にもよるが、TStringList を直に使ったら、それの初期化で
また悩むと思うが。
372 :02/10/24 06:27
Memo1.Lines.Text := strHoge;
TStrings.AddStrings
昨夜モデム回線で頑張って60MB落しますた。
今日からdelphi勉強しまふ。
 ミ,,゚Д゚ミつ ぁぃょ

リンク切れてないかな、、、

Delphi メニュー
http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html
DelphiTutorHome
http://www.netjoy.ne.jp/~tuya/DlphTutor/index.html
Delphi はじめの一歩
http://delphi.sakura.vg/index2.html
Do It YourSelf---Life with Delphi
http://home.onestop.net/mineko/index2.html
Pascal・Delphi入門:オンライン学習 ページ
http://or-lab.asahi-u.ac.jp/intro_to_delphi/default.htm
ゼロからDELPHI講座 Delphiと遊ぶ
http://www.text2music.com/mine/delphi/index.html
プログラミング講座
http://isweb21.infoseek.co.jp/computer/wblue/prog/chair_top.htm
>>344
たいていのWindows API はWindowsユニットで宣言されていて,
このユニットはフォームを新規に作るとすでにuses節に含まれるとので何もしなくてOKです.

これに含まれていなくてどのユニットで宣言されているかわからないときは
統合環境からDelphiのあるフォルダに対してファイル検索するのが早いと思います.


>>364
Dimension の略でもともと配列変数を宣言する命令だったのです.
BASICには以前は配列でない変数を宣言する命令はなかった.

ここでは同じ型の変数を複数宣言するときに
Dim Mona As Integer, Giko As Integer, C As Integer
と長ったらしくなってしまうのでこれだけでもうイヤという話か
あるいはメソッドなどを書くときに書く最初の1行がDimなので
最初の単語であるDimを打つだけで鬱,ということを言いたかったのかも.
377332:02/10/24 15:29
>>376
ファイル検索ですネ。
早速試してみて、これなら簡単に探せそうです。
ありがとうございました。
動的に作成したVCLのイベントを拾う
方法をご教授下さい。
現在、サーブレットを起動する
TNMHTTPを使用したバッチ形式
のAPを作成しています。
以下の様に書いています。
program ***;
 ・・・
uses;
 ・・・
var
 ・・・
http :TNMHTTP;
 ・・・
//接続成功のイベント
procedure httpConnect(Sender: TObject);
begin
ログファイル書込関数;
end;

begin
 ・・・
http := TNMHTTP.Create(Application);
 ・・・
http.Post(サーブレットURL);
 ・・・
end.
379378:02/10/24 16:14
すみません。
それで、現在はイベントを
拾うことができません。
>>378

type THoge = Class(TObject);
procedure Connect(Sender: TObject);
end;

THoge.Connect(Sender: TObject); begin httpConnect(Sender);end;

obj := THoge.Create;

http := TNMHTTP.Create(Application);
http . OnConnect := obj.Connect

382378:02/10/24 17:47
>>380
ありがとうございます。
出来ました。
クラスを作り、そのプロシージャと
関連づけたいイベントを結びつければ
いいわけですね。
勉強になりました。
383 :02/10/24 23:02
ある手続きを実行中に、フォームの描画をしたいんですが、
for文の中でエディットボックスの書き換えを行っても
繰り返しが終わるまでフォームの変更は行われないようです。

エディットボックスを書きかえるためには、どのようにすれば
いいですか?
Application.ProcessMessages;
385 :02/10/24 23:10
>>384
できました。
どうもありがとうございました
386374:02/10/25 00:03
フサギコ様&>>381様リンクをば貼っていただきましてありがとうございます。
ありがたく読ませていただきます。
387368:02/10/25 00:48
皆さんレスありがとうございます。
とりあえず>>369さんのVisibleを使ったやり方でやってみます。
一週間前くらいに始めたばかりなので、難しいのはよく解らないんです…。
どうもでした。
>>387
ありがとうはいらないから、自分が何をしたいのか。この場合は
何を「面倒」と感じたのかをしっかり表現/文章化してくれ。
389368:02/10/26 00:27
>>388
勉強用に作ろうと思ったソフトですが、
Formにボタンが20個ほど置いてあって、
それをクリックしたら新しいウインドウが開いて、
ボタンごとにウインドウの内容(Memo)が変わるようにしたかったんです。
面倒と感じたのは、一行ごとにLines.Addで書かないといけない事です。
なんというか、Lines.Addじゃなくて、他の方法で複数行をまとめて書けないかな、と思ったんです。
390 :02/10/26 00:39
で、複数行をまとめて書けることはわかったのですかね?
391368:02/10/26 02:26
>>390
結局、テキストを編集するソフトを使って
行頭に Form1.Memo1.Lines.Add('
行末に ') ;
を追加して、
Form1.Memo1.Lines.Clear;
Form1.Memo1.Lines.Add('****') ;
if Form1.Visible = False then
Form1.Visible := True;
にしました。
>>391 (((( ;゚Д゚)))ガクガクブルブル
改行したいんかな?
Form1.Memo1.Lines.Add('(-_-)'+sLineBreak+'(∩∩)');
394デフォルトの名無しさん:02/10/26 07:31
FTPのソフトは、Delphiを買うと サンプルについてるからそれ使えば、便利だぞ。

無理に VBを使う必要なしっ!
395デフォルトの名無しさん:02/10/26 09:30
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
>>395
資格とっても同じですよ。 単なるプログラマのまま40歳どころか30歳も難しいでしょ

中の上以下だと、不況だから今就職出来るのは派遣屋しかないでしょうしね
>>396
アナタ、就職ミスってます。
DBCtrlGrid上でEnter押したときに
Tabをシミュレートしたいんだけど
いまくいきません・・・

form上でkeyprevew = tureで
case Key of
VK_Return:
begin
Perform(WM_NEXTDLGCTL, 0, 0);
Key := 0;
end;
end;
じゃ、だめっぽい。

だれかご教授してくだされー
>>398
よく読まないでレスだけど、
キーボードは押したら離すものでは?
ture・・・?
>400
trueですね(^^ゞ

実はこの記述、某所で見たソースなんです
それを、そのまま使っていたのですが
DBCtrlGridで問題が発生した次第です

ほかに同じ動作をする方法があれば、どうかお願いいたします
Operaのような(反応の早い)ブラウザを作りたいんですが、
何かいい方法はないでしょうか?
403 :02/10/26 15:14
ワラエナイ
>>402
API直叩き
質問です。

履歴で消してしまった。インターネットのサイトはどうやってみることが出来ますか?
履歴で消してもそのサイトが消滅するわけじゃないから安心すれ。
いやどうやって行ったか忘れてしまって
もう一度行きたいんですけど消しちまいました・・・・。
一度消したらみれませんかね?
インターネットのお気に入りのよこの履歴からしか消してないんだけど・・・。
プログラム的にやりたいってことだよね・・・
どうやるんだろ。
キャッシュを片っ端から調べろ
>>407
どんなサイトだったか書け
俺が全力を持って探し出してやろう。
>>410
MACのCMに出てるキクチモモコのアイコラサイトです
>>412
ありがと。やさしいね。 でも・・・でも・・・・ボクのキクチモモコじゃなかっんです。
>>410
無理だろ(w
>>407
履歴のフォルダをファイル復活ツールにかけてみればぁ?
416デフォルトの名無しさん:02/10/27 15:18
最近Delphiを始めました。バージョンは5です。
エディタがとっても使いにくいです。
秀丸で言う「フリーカーソルモード」っていうのになっていますが、
変えられないのでしょうか?
>>416
あなたは3つの道があります
1、好きなエディタを使って同じファイルを編集しなさい。IDEにフォーカスを戻す前に常に保存するクセをつければ大丈夫です。
2、フリーカーソル無効化  をキーワードにgoogle検索しなさい
3、我慢して使いなさい。毎日使えば3日で慣れます
>>416
プログラマがあんなもん使っちゃいけません。

って言うか秀丸にそんなもん付いてたのね・・・。
http://homepage1.nifty.com/fuu/
に無効化アドインがある。ある程度はこれで。

個人的にはxkeymacs使ってEmacsバインドにしてしまうのがお勧め。
フリーカーソルも大して気にならなくなる。
420デフォルトの名無しさん:02/10/27 16:36
E:\Program Files\Borland\Delphi6にインストールしたら、ヘルプの
キーワードが全く表示されません。ヘルプでキーワード検索するには
どうすればいいのでしょうか?
OSを替える
422デフォルトの名無しさん:02/10/27 17:10
すみませんが、アクションゲームによる当たり判定について教えてもらいたいのですが・・・
マ○オ風のゲームがつくりたいんですが・・・
当たり判定について教えていただけませんか??
>>422
画像Aと画像Bが重なった場合当たった.

実装方法はそりゃあもう星の数ほどあると思われ.
>>422
でも、音語るならサンプリング定理くらい知ってるべきだと思われ。
425デフォルトの名無しさん:02/10/27 17:18
判定に関するhome pageなど参考になる資料があれば教えていただけませんか??
>>425
遊びのレシピという本にBCBとDelphiのサンプル付きで載ってた。
まぁ、あれ以外にもやり方はやたらとあると思われ。
428デフォルトの名無しさん:02/10/27 17:30
キャラが移動したとき、その次のマスが通れるかどうか・・・
ジャンプしたときに、キャラより下のマスが地面ではないか・・・
もし↑の場合キャラの行く次の1マスを判断する方法。
できるだけ、キャラはマップの1マスが32*32だった場合、それに対して
32ドットずつ進むのではなく、4ドット(32ドット以下ならいくつでも)ずつ
移動できればと考えています。
>>428
人の話聞いてんのかボケ。
430デフォルトの名無しさん:02/10/27 17:35
すみませんでした。。。
「遊びのレシピ」という本をかって読んでみます。
申し訳ありませんでした。。。
>>430
立ち読みして役に立つと思ったら買いなされ。

取りあえず、セオリーを聞き出す前に自分なりに考えてみるのも勉強になると思われ。

少なくとも、どんなAPIセットを使って、キャラクターの形と位置がどんな構造で管理されて〜

ってところまで行かないと当たり判定の話なんて具体的には出来ないと思われ。



そういえば昔のゲーム機であったハードウェア当たり判定ってDirectXとかでもあるのかしらん?
Del7でコンパイルした、あるプログラムを起動すると異常終了してしまいます。
Del6でコンパイルしたプログラムは正常だったので、原因を調査してみると、
ComboBoxが原因のようなのですが、デフォルトが項目値が空白の項目なので落ちているようです。
回避策とかパッチはあるのでしょうか?
これはボゥランドの不具合だと思うのですが、皆さん知ってました?
433デフォルトの名無しさん:02/10/27 17:43
>>432
>これはボゥランドの不具合だと思うのですが、皆さん知ってました?

御願いだから先にバグフィックスしてください。お前のミスです。
434デフォルトの名無しさん:02/10/27 17:47
>>433
D相談室その7で同様の書き込みを見て
私も試してみましたが、マジでD7のバグみたいですよ。
435デフォルトの名無しさん:02/10/27 17:49
436デフォルトの名無しさん:02/10/27 17:49
知りません・・・
自分なりに書いてみたソースなんですが・・・

label1=キャラクター
onkey[5]=スペースキー(Boolean型)
junp=ジャンプしたときの判定用(Boolean型)
yy,xx=ラベルを動かす移動数(Integer型)
map=マップ[array(0..9,0..9)of integer=(0,0,0,0,0,0,0,0,0,0),×10]
(マップサイズは、320*320 1マス32*32)

if onkey[5] and jump then begin
dec(yy,2);
if yy>-16 then begin yy:=-16; jump:=false end;
end;
if (jump=false) and (map[label1.top div 32+1,label1.left div 32]=1) then begin
yy:=0;
label1.top:=(label1.top div 32)*32;
onkey[5]:=false;
jump:=true
end else
if (jump=false)then
inc(yy,2);



label1.top:=label1.top+yy;
437432:02/10/27 17:55
>>433 なるほど
>>434-435
D7を使われてる人は既に皆さん知ってることなんですね、ありがとうございました
438436:02/10/27 17:56
<<436無視してください。
> 御願いだから先にバグフィックスしてください。お前のミスです。
社員必死だな (藁
>>439
>>436よ、それはあまりにもみっともないと思うぞ。
441439:02/10/27 18:07
ごめんなさい
442439:02/10/27 18:15
>>439=441
ん?
オマエの潔さは気に入ったが、
しかし流れからしてオマエが謝る必要はないと思うが?
443皿仕上げ:02/10/27 18:16
自作自演?? カッコイイ!!
何処から何処までが自作自演かを考察してみるスレはここですか?
いくらなんでも名前消さないなんて無いよなあ…
>>441から>>442の変貌ぶりにワロタ
釣りだったとしてもいいや 面白いから

関連スレ
海運は?
http://choco.2ch.net/test/read.cgi/traf/1032728842/l50
>>447
確かに笑えるが、
コメントの間隔からして、442=443が自作自演だろ、
439を使ったダブルアクションな高度なテクニックだと判断する。
本日の自作自演大賞決定!
449デフォルトの名無しさん:02/10/28 01:16
誰かDelphi.NETの使い方教えて!
Delphi.NETはBorlandの敵です。
451デフォルトの名無しさん:02/10/28 01:21
Delphi.NETはDelphi8まで様子見です。
Delphi8が出たとたん.NETが死亡します。
なんかD7プレ版が入ってたので試してみようかと
思ったのですが、今のところ必要なしいD8まで待ちます。
上矢印を押したときに
Shift+Tabを押したことにするには
どうするの?
タブ順で前後のコントロールは、FindNextControlで探せるので、それとSetFocus。

勿論、自分自身にWM_KEYDOWNでTABを送る方法もありますが、
メッセージはフックされる可能性もありますし、
コントロールがメッセージで内部フラグを切り替えていたりするとややこしい事になってしまうので、
FindNextControlの方が確実でしょう。
ハァ?
>>454
フォームのKeyPreviewイベントをTrueにして
フォームのKeyDownに以下のコードを記述する

//【↑】でフォーカス戻る
if (Key = VK_UP) then
begin
 SelectNext(ActiveControl as TWinControl, False, True); // 戻る
 Key := 0;
end;

//【↓】でフォーカス移動
if (Key = VK_DOWN) then
begin
 SelectNext(ActiveControl as TWinControl, True, True); // 進む
 Key := 0;
end;
ハァ?
ハァ?
459デフォルトの名無しさん:02/10/28 14:40
デルパイあげ
460デフォルトの名無しさん:02/10/28 15:38
デルポイだゴラァ
461Void ◆XHOW.zla5c :02/10/28 15:40
デリパイだゴラァ
462454:02/10/28 17:51
>454です
457さんの方法でうまくいきました!
ありがとうございます!!
しかし、DBCtrlGrid上ではうまく動作しないのはどうしてでしょう?
DataSetを直接いじるのかな?
うーん。。。
Delphi7 Update #1(英語) 当てたら挙動不振になった、もーだめぽ
464デフォルトの名無しさん:02/10/28 20:04
>>463
落ち着け、Update#1って MS-SQL Updateのこと?
>>462 =454
Grid内を移動させたいのか、Gridを抜ける為に使いたいのかによって
動きを変えるコードが必要になるでしょ。
ListBoxやComboBoxでも配慮が必要かもしれない。
又、Panel等の通常[Tab]ではフォーカスがセットされないコントロール
へも移動できてしまうので、その辺りも要注意(回避策はある)
466デフォルトの名無しさん:02/10/29 09:08
commatextみたな感じで、TAB区切りtextを扱えるのって
何かないの?
>>466
タブをカンマに置換して。カンマは適当にエスケープ
>>466
QuoteCharへ引用符を指定し
Delimiterへ区切り記号を設定して
DelimitedTextを使う
>>468
D6にはそんなのがあるのですね.

でもタブ区切りテキストを作るのは
連結は単純に各文字列をタブをはさんでつなぐだけですし
分離にしても1バイトずつ調べてタブを境にコピーするだけなので(※)

プログラミング初心者でもがんばれば十分解ける問題だと思います.
(って,今時のビギナーさんには
 このレベルでもサンプル書いちゃった方がいいのかな?)

(※タブコードは少なくとも日本語文字列では
2バイト文字の2バイト目になることはありません)
470454:02/10/29 12:39
>462さんの言われることを参考にしながら
いろいろやってみると、思った通りの動作が出来ました
ありがとうございます。

ところでDBアプリを作るとき、
入力画面などはDataControlなどを使われてますか?
それとも普通のEditなどで、コードをごりごり書いてます?
>>470
特殊な入力が必要なら、自分でコンポ作ってゆくと後が楽だよ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1001489683&res=20
Split関数を作っておいてますが。>>466-469

  ∧,,∧ FDelphiにはStrTokenとかいうのも
 ミ,,゚Д゚彡 あったと思う。
 ミつ  つ
473デフォルトの名無しさん:02/10/29 15:23
パネルのVisibleがFalseになった時のみにイベントを起こしたいのですが、
下記のようにすると、それ以外の時にもイベントが起こってしまいます。
それでも目的の動作は果たせるのですが、
出来ればVisibleがFalseになった時のみイベントを起こしたいです。
どなたか教えてくだちい。
unit PanelEx;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
  TPanelEx = class(TPanel)
  protected
    FOnHide: TNotifyEvent;
    procedure WndProc(var Message: TMessage); override;
  published
    property OnHide: TNotifyEvent read FOnHide write FOnHide;
  end;

implementation

procedure TPanelEx.WndProc(var Message: TMessage);
begin
  inherited WndProc(Message);
  if (not Visible) and (Assigned(FOnHide)) then
    FOnHide(Self);
end;

end.
Visible変更時、VCL特有のメッセージが送られてきます。

procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;

 …

procedure TPanelEx.CMVisibleChanged(var Message: TMessage);
begin
 inherited;
 if not Visible then 目的の動作
end;

で、いいかと。
この手のメッセージは他にもあって、Controls.pasにいっぱい書いてあります。
>>473
Visibleの変更前なら
procedure VisibleChanging; override;
あとなら
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
後はご自分で
476473:02/10/29 15:58
>>474-475
ありがとうございます!
早速試してみたところ上手くいきました!
>>472
サンクス
使わせていただきます
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
>>478
スレ違いどころか板違いだし、コピペだし・・・マ板へ逝ってね
480デフォルトの名無しさん:02/10/30 14:47
Delphi5で保存したものをDelphi6でみようと開こうとすると
「行が長すぎます」というエラーが表示されます。
Delphi5では普通に見れます。Delphi6では見れないのでしょうか?
>>480
保存した。って何を?
482480 :02/10/30 16:03
ええと、保存したものはEXEかな。
名前.exeってやつです。この答えでいいんでしょうか・・・。
かなとローマ字の変換ライブラリはありませんか?
相互変換ができれば表記は問いません。
よろしくお願いします。
無意味にあげるな。sage ろ。

そんで、IDE のエディタで .exe を開いて何をしたい?
485480 :02/10/30 16:16
>484
どんなプログラムだったか6のほうでみたいだけなんですが
見ることができない状態なので。

sageにします。
DBCtrlGridの上にDBEditとかを乗っけて、
フォーカスのあるコントロールに色を付けてるのですが
なーぜか、2行以上DBCtrlGridのパネルがあると
最小化とかアプリの切り替えとかで再描画させると
全てのパネルで色が変わったままになるのだが
何か方法はない?
>>485
exeファイルをエディタで開いたところで、どんなプログラムかわかるわけないだろ
どんなプログラムか見たいならソースファイルを見ろ
>>487
俺は凄いのでわかります。
489480 :02/10/30 19:32
わかりました。えらいまぬけな間違いをしていたようです。。。
サンクスです。
490487:02/10/30 19:58
>488
それは失礼、ゴメンナサイ。
.exe を Delphi5 で開いたときに、480 は一体何を見たんだろう...
>>491
時間を・・・
SysUtilsをusesしないとtry...except, try...finally構文は使えないんですか?
494 ◆AoRio7RF7s :02/10/31 06:24
>>493
そんなことはありませんが?
495デフォルトの名無しさん:02/10/31 23:26
WSAGetLastErrorのエラー文字列の取得方法を教えてください。
自力で変換するしかないですか?
>>495
ええ。もちろん。
実はindyつかってて、例外でsocket error #xxxxxx なんてそっけないメッセージが
帰ってきたもんで調べてたんですよ。

>>496
まじかよ・゚・(ノД`)・゚・。
>>497
VisualStudioもってるならエラー検索がツールフォルダに入ってるよ。
>>495
あれま。

D7/Indy 9 なら TIdStackWindows に WSTranslateSocketErrorMsg 関数が
定義されているけど?
ほとんどのエラーは(英語だけど)可読文字列として表示されるはずなんだけど。
エラーコード 11001でした。
WSAHOST_NOT_FOUND……
ちょっとまて、ソース見たけど、HOST NOT FOUNDみたいな起こりうるエラーが
WSTranslateSocketErrorMsgで変換されてない…。
// Authoritative Answer: Host not found
WSAHOST_NOT_FOUND = WSABASEERR+1001;
HOST_NOT_FOUND = WSAHOST_NOT_FOUND;

みたいに宣言されていて

RSStackHOST_NOT_FOUND = 'Host not found.';

エラー文字列も定義されているのに一度も使ってないみたい。

今回初めてIndy使ってみたけれど、もしかしてかなり不完全なライブラリだったりします?
ごめん。
念のため確認したら新しいバージョンが出てたので見てみたら、定義されてるわ。
で、それはそれとして、
Indyマニュアルインストールだと、Fulld6.batを実行しても

Exception EAccessViolation in module Computil.exe at 0000C9FB.
Access violation at address 0001C9FB in module 'Computil.exe'. Read of address 0
0000000.
Error!

と出て終了するのは何故ですか?
D6 で Indy9 を使おうとしているのかな?
まずは自分の環境の説明からお願いね。
>>503
>何故ですか?
ってあなた, 誰に聞いているの?
Indy 開発元に尋ねてみたら?
ただ、D6/Indy9 の組み合わせで使っている人はあなただけではないと思うので
問題はあなたのほうにあると思う。

暇があったら、D6/Indy9 の組み合わせを試してみるよ。
...ところで何故「マニュアルインストール」?
Ha Ha Ha!!


Computil.dpr デバッグしてわかったんだが、レジストリを旧環境から移したときに、
 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0
の値が前の環境のものだったよ(ドライブ名が違ってた)

で、Computil内の
> SetLength(ShortPath, GetShortPathName(PChar(LongPath), PChar(ShortPath), MaxPathLen) );
> If (ShortPath[1] = #0) or (Length(ShortPath) = Length(LongPath)) then begin
って部分で、パスが実在しないから、Length(ShortPath) = 0になって、ShortPath[1]でエラー発生。
そこまで厳密なエラーチェックしてないのね。


底なしの馬鹿だね俺は。もう救いようがない。
俺見たいのがDelphiユーザーにいること自体が恥ずかしいよ。
氏ね、俺。

Zap Zap Zap...
> HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0\RootDir
の間違いだった。
>>507
レジストリをリストアした?なんて無謀な・・・。
不正ユーザーか何かかな?
いや、前の環境引き継ぐのをミスっただけだ。
騒がせてスマン。
511デフォルトの名無しさん:02/11/01 09:58
プロジェクトがメモリリークしてるみたいなんで、調べたら、
IndyのIdComponent.pasで意図的に開放していない箇所を見つけたんだけど、
これってどうにかならないもんかね。

>initialization
> GStackCriticalSection := TCriticalSection.Create;
>finalization
> // Dont Free. If shutdown is from another Init section, it can cause GPF when stack
> // tries to access it. App will kill it off anyways, so just let it leak
> // FreeAndNil(GStackCriticalSection);

finalization の呼ばれる順番って不定だっけ?制御できないかな。
そういう部分って無視するのが通例だけど。
アプリケーション終了時にのみ開放されないだけで別に害は無いし
それを安全に開放するようにするためには、結構コストがかかる。
コストだけかかって自己満足で終わる部所。ってことだ。
大量の割り算をするのに、
double型で  a/b ってやるのと
integerで  a div b  ってやるのって速度的にはどっちが早いの?
それとも関係ない?
>>513
使用されてるCPUによるけど 32bitなら整数の方が少しだけ速い事が多いかも。

使う目的は何?
>>514
おおむね Pentium 以降は、割掛け算は FPU の方が早い。
ただし、データ長が長くなるためロード/ストアコストがかかる場合が
ある。

けど、FPU つかった方がはやいよ。
516513:02/11/01 18:47
レスサンクスです。
使う目的は秘密ですが、500KbくらいのCSVファイルを
読み込ませて割り算したら、異様に遅かったので・・・・。MMXPen166
超ド初心者なんでdoubleをintegerに変えるくらいしか思いつかなかったのです。

FPUとは何でしょうか?
>>516
それは単純にCSVを処理する方法が悪かったのじゃないかと思う。
518513:02/11/01 22:45
tab区切りのデータを

z:=AnsiPos(#$9,str);
Data[i].a:=strtofloat(Copy(str,1,z-1));
Delete(str,1,z);
z:=AnsiPos(#$9,str);
Data[i].b:=strtofloat(Copy(str,1,z-1));
Delete(str,1,z);
z:=AnsiPos(#$9,str);
Data[i].c:=strtofloat(Copy(str,1,z-1));
Delete(str,1,z);
z:=AnsiPos(#$9,str);
Data[i].d:=strtofloat(Copy(str,1,z-1));
Delete(str,1,z);
z:=AnsiPos(#$9,str);
・・・・・・続く

こんな感じで読んでいって
それを計算させているのですが
おかしなところがあればご指摘を・・・・。

ちょっと上のほうでcommatext関連のことが
出てますが、オレのスキルでは理解し難いので、
この方法だとなんとか理解できるのでこうやってます。

やっぱりスマートなやり方じゃないんですかねー?
・・・
・・・・・・
>>518
Deleteしない方法を考えてみなよ。
データの前後のタブ位置を覚えといて(以下略
>>518
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt

これ使って、数字が少数点付きの数なら
  with TStringSpliter.Create(str) do try
  while not isEOF do begin
   data[i]:=CalculateFloat;
   SkipBlank;
   if nowChar<>',' then break; //カンマ以外のセパレータなら無視する
   GetChar;
   inc(i);
  end;
  finally free;end;

こんな感じで
CalculateFloatだと四則演算もされてしまうので、それが都合悪ければ getDotFloat で
523513:02/11/02 01:17
>522

なんだか凄いのをありがとうございます。
が、クラスを勉強し始めたばかりのオレには当然それを使えるはずもなく・・・・、

とりあえず
http://www.din.or.jp/~egawa-n/delphi/tips/search.html
これを使ってなんとかならないかと頑張っておりましたが、
無い頭を使い過ぎて疲れましたのでもう寝ます。

レスをくれた方々に感謝!!

けど、>522のを使いこなせれば、かなり思いどうりのことが
楽にできそうなので、もうちっと勉強してきます。
524  :02/11/02 18:15
以前、DelのソースをHTML化できるフリーソフトを見たことあるのですが、
今どうしても欲しくて探しています。似たようなソフトはいくつかあるんですが、
私が欲しいのは、Del だけじゃなく、VCやVBのソースもHTML化できたような気がします。
予約語は強調(ボールド)、イタリック、色をつけるなど、便利な機能がありました。
どうか知っている方は教えてください。
526  :02/11/02 18:20
>>525
これです。どうもありがとうございました
527526:02/11/02 18:22
 デスクトップ上に見えているウィンドウと、
タスクバーに表示されているウィンドウのハンドルを
取得するにはどうすればいいでしょうか?

 EnumWindowsで列挙してIsVisibleで調べても、見えないのに出てきてしまう
ハンドルがあるんです・・・。
528527:02/11/02 18:23
 ↑名前打ち間違えたスマソ
>デスクトップ上に見えているウィンドウと、
>タスクバーに表示されているウィンドウのハンドル

なに言いたいの?
タスクバーに聞くと答えてくれるよ
530デフォルトの名無しさん:02/11/02 21:47
新しいユニットを作り、その中に書いた関数を使うためuses に新しいユニット名を書いて、逆に新しいユニットから
フォーム内のコンポーネントを使いたいので、ファイルメニューの'ユニットを使う'を使用したいのですが灰色で押せ
ないため、uses に元からあるユニット名を直接書いてますが、何故でしょうか?

[ヘルプ(H)|Delphiヘルプ(D)] 「ユニットの循環参照」
532デフォルトの名無しさん:02/11/02 22:14
なるほど
implementationに記述させてれば別に構わないみたいですね。今まで通り手打ちでやってきます
ユニットをusesする時は"層"を意識しないとね。
OnDataFindの使い方が分からない。
535527:02/11/03 08:33
>>529
 わかりにくい日本語ですいません。
つまり、ユーザーがモニタを見て、(タスクバーの項目を含め)目に映る
ウィンドウのハンドルのみを取得したいのです。
 EnumWindowsだと不可視ウィンドウも列挙され、IsVisibleで調べても、
一部見えてないウィンドウまで引っかかってしまうので…。
537デフォルトの名無しさん:02/11/03 23:42
コンポーネントNMHTTPを使って、Web上のファイルを拾ってくるプログラムを作っているのですが、

http://www.yahoo.co.jp/

↑のアドレスで返って来るファイルの名前(http://www.yahoo.co.jp/index.htm)など
を調べるにはどうしたらいいでしょうか? よろしくお願いします。
Indy使った方がいいじゃないの?
NM****って将来なくなる気がする。
539デフォルトの名無しさん:02/11/04 10:37
すれ立てるまでも…スレで回答が無かったので質問させてください。

St := TFileStream.Create (OpenDialog.FileName, fmOpenRead);
って書いたら、
[エラー]SDIMAIN.PAS(82): 未定義の識別子 : 'fmOpenRead'
とコンパイラに怒られるのですが、何故でしょうか?
環境はDelphi6personalです。
540539:02/11/04 10:45
use SysUtils;
で解決しました。豆腐に頭ぶつけて逝ってきます。
>>539
出るはずのない未定義の識別子が出たら、Delphi6のソースディレクトリを
grepかけると手っ取り早い。
すまんDelphi *6* は余計だったな。
>>541
その作戦はpersonalでは不可能では?
TImageとTPaintboxってどう使い分けるの?
どっちも同じ気がして・・・・・。
>>544
自動的に再描画してくれるか否かの違い。
後。ダブルバッファリングしてくれるか否か。
>>543
んじゃ、ヘルプを単語検索かけるってのは?
windows9xだから検索できないってのはなしね(DLLいれろ
>>451
Borland\Delphi6\Doc\に各ユニットの
インターフェース部分が抜き出してあるよ。
Personalに限らずインターフェースに対してGrepかけるなら
Source\*.pasよりDoc\*.intの方が楽なことが多かったりする。
すんまそん
厨房ですが
Delphi5とそれより新しいバージョンの互換性ってどうよなんだしょ
そんなに違わないと勝手に思っているのですが
ちなみに自分はDelphi5しか知りません
549デフォルトの名無しさん:02/11/05 16:48
>>548
Delphiは4以降大きな変化は無し。
マイナーチェンジ程度の違いしかない。
4以降のソースはほとんどそのまま通る。

最近変わった部分はVCXとかWindowsアプリ作る上ではどうでもいいことばかりだから
普通のアプリ作るぶんには5のつもりで使っても大丈夫。
550549続き:02/11/05 16:53
あ、たぶん次は大きな変化があると思うから
7を買おうとか思ってるんなら8まで1年待ったほうがいいと思う。
>>549
VCX ::= VCL & CLX?
552デフォルトの名無しさん:02/11/05 17:51
がいしゅつかもしれませんが、
Delphiで作られたソフトをWindowsXPのスタイルで表示させたいんですけどできますか?
Delphi7なら可能。
ここにNew!って記載してあるから、それ以前のバージョンだとできないと思う。
http://www.borland.co.jp/delphi/del7/feamatrix/index02.html
554デフォルトの名無しさん:02/11/05 18:43
質問です。
TStringsクラス等のAddメソッドですが、
これは戻り値があるのに(functionなのに)、何故手続きみたいに使えるのですか?
自分の知識では、functionは値として扱われるから、
ListBox1.Items.Add('hoge');
という様に使うのは無理だと思うんですけど…。

それとファイルの新規作成ってどうやるんですか?
ヘルプ見て、「FileOpen('', fmCreate);」ってやってみたけど、無理でした。
>>554
関数の戻り値は無視しても構わないような文法なってるだけ。

>それとファイルの新規作成ってどうやるんですか?
直接の答えじゃないけどTStringList.SaveToFileかTFileStream調べてみたら。
556554:02/11/05 19:30
>>555
ホントだ…違うfunctionでもできるんですネ。
新規作成はTFileStreamでやりました。
ありがとうございます。
557548:02/11/05 22:38
>>549
ありあとやんした
感謝します(^-^)/
Del2〜4のアップデートって、もう手に入らないの?
>>552
Delphi7に付いてくるxp対応ってフリーのやつだから
ダウンロードすれば出来るはず。
ただしマニフェストを付けるのは手動かな。(たぶん)
>>534
もしリストビューコンポをオーナーデータ(仮想リストビュー)として使っているのでしたら…

→ごめんなさい,使ったことがないのでわかりません.

さもなくば…

→使うことのないイベントです.
 データを検索して見つかったときに発生するイベントではありません.念のため.

>>545
ペイントボックスを使っていて思うように再描画してくれなくて困っていたのですが
イメージコンポを使う手があるのですね.

>>558
ボーランドの公式サイトにあるぜよ.
ttp://www.borland.co.jp/download/delphi.html
>>534
インクリなんちゃら検索で使うやつ。
普通に使えば使えるよ。
>>552
一部できない部分はあるが
ttp://www.jrsoftware.org/files/misc/xptheme.zip
つかえばできる。
Delphi6 にUpdate2当ててない場合はVCLソースの
修正が必要だがUpdate2当ててる場合はそのまま使える

564デフォルトの名無しさん:02/11/06 12:49
Delphi6以前のXPのテーマ対応はここ読んでがんばれ。
http://www.akzhan.midi.ru/devcorner/articles/Windows%20Visual%20Styles%20(Themes)%20API%20Support%20in%20Your%20controls%20Eng.htm
565デフォルトの名無しさん:02/11/06 17:24
すいません。
Application.Terminate;
でアプリケーションを閉じると、WIN98等でWINDOWSのタスクバーに夢印のタスクボタンが
残ってしまうのですが(押すと消える)
これを回避する方法ないでしょうか?

ご教授お願いします
566回避策:02/11/06 19:06
Application.Terminate;を使わない

以上
567デフォルトの名無しさん:02/11/06 19:43
>>566
なるほどthx......

この方法を試さずに他の方法を試す
YES
NO
568デフォルトの名無しさん:02/11/06 20:04
delphiでポインタ使うときキャレットっていうんですか?あの上に向いた矢印
みたいなやつ。あれがキーボードに無いのですが、どうすればいいんでしょう?
569デフォルトの名無しさん:02/11/06 20:06
ありました。すいません
>>565
そりは、Delphi に限らず、ウィンドウのフラグを作成時と異なる物にして終了すると
発生します。タスクバーのバグ。VC でも再現可能。

メインフォームの Form の Style を変更してない?
その場合は起動時/タスクバーに表示されたときの状態に戻してから
アプリケーションを終了するとよし。
571デフォルトの名無しさん:02/11/06 20:13
>>568
ワラタ


考えてみれば^なんて人によってはまったく使わないキーだなあ。
572デフォルトの名無しさん:02/11/06 20:14
>570
おお! 有難う早速試してみます

573デフォルトの名無しさん:02/11/06 20:24
ギョフ
574デフォルトの名無しさん:02/11/06 20:29
>>570
追加情報
WindowStyleではなく
FormのHIDE状態からVIEW状態へ変更したウインドがありました。

解決の糸口になりましたありがd

>>574
問題が解決したなら結構。
Borland 製品を今後もよろしく!
>>565
Win98のバグ
ソースのアドレスは…忘れたスマン。MSのサイトにあったはず
あのーRichEditでURLやメールアドレスをクリッカブルにする方法教えてください。
何度も出ている話題かとおもいますが。。。。。
RichEdit v2.0 のインスタンスが必要なので、TRichEdit では不可能。
RichEdit20 がインストールされている環境(IE が入っていればまず問題ない)
でだけ動けばよいのなら、RichEdit98 ってコンポーネントをどこかから見つけてくれば
いいよ。
TRichEdit のまま、クリッカブルにしたいときには
それを実装しているコンポを使うのが楽。

http://www.users.gr.jp/ml/archive/delphi/33505.asp
>>578
標準コンポでやろうと思ってたんですけど、
やっぱRichEdit98を使うしかないですか。。。。

>>579
あのー、試してみようと思ったんですけど、
これってNiftyの会員じゃないと見れないようですね。。。無念
Jpegをリストか何かでアプリケーションに取り込む方法ないですかー?
アニメーションをさせたいのですが・・・
>>581
リソース
583571:02/11/07 17:56
> 581
クシコヽ(´ー`)ノdd
できますた!
584デフォルトの名無しさん:02/11/08 19:14
TMemo.SelTextがうまく動作しませんどうしたらよいでしょうか?
普通に実行する分には大丈夫なのですが
実行ファイル名.manifest でXPスタイルを適用すると
長い文字を選択した場合完全に文字列の選択が行われないんです。

--------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
// Memo1の選択内容をMemo2にコピー
Memo2.Text := Memo1.SelText;
end;
585583:02/11/08 19:26
>>584
VBでも同じ現象になりました。
もしかして漏れだけ?
586584:02/11/08 19:27
うっ583じゃない584だ・・・
587デフォルトの名無しさん:02/11/08 20:41
Form基準のクリックされた座標を得たいんですが、
GetCursorPos以外の方法を昔見た気がするので教えてください。

#記憶ではasとか使っいたような気がします。
OnMouseDown イベントではダメなの?
589デフォルトの名無しさん:02/11/08 22:33
この2つのソフトは、Delphi6で開発されたんですよ!

 http://hp.vector.co.jp/authors/VA031513/
>>589
なかなか良いソフトだね。
ところでここは質問スレなんだけど日本語読めないのかな。
>>589はNECソフトウェア九州の社員
>>584, 585
XP の仕様です。まじで。
593デフォルトの名無しさん:02/11/09 19:14
DLLに文字列を返す関数を作成し、VBAから使いたいのですがエラーになってしまいます。
function test:PChar;
var s:string;
begin
s:='test';
test:=@s[1];
end;
------------------
(vba)
Declare Function test Lib "aaa.dll" () As String
s=test

これを実行すると
「オートメーションエラーです。リモートプロセス用の・・」というエラーが出ます。
何が悪いのでしょうか?
test:=@s[1];ではない。
595593:02/11/09 19:55
>>594
でも、delphiで作ったプログラムから呼び出すとちゃんと機能するんですよ。
ローカル変数へのポインタ返しちゃ駄目
597593:02/11/09 20:13
PChar(s);
でうまくいきました。
ありがとうございました。
でも前のコードでも、delphiで作ったプログラムからは呼び出せたのが疑問です。
本当にうまくいったのかと(略
599デフォルトの名無しさん:02/11/10 02:29
Delphi7 でTCoolBarを使っているのですが、どうしても解決出来ない問題が出てきました。
WindowsXPでXPスタイル表示している場合のみ再現します。

フォームに TXPManifest と TCoolBar を置きます。
CoolBar にはツールバーを2つ格納し、CoolBand を2つにします。
ドラッグして Band を1行に並べます。
コンパイルして実行します。
フォームを横方向にリサイズします。
そうすると左側のCoolBandが少しずつ小さくなっていきます。
解決方法が分かる方がいましたらどうかよろしくお願いします。
横方向ってどっちだよ・・・
D7で、XPのときだけStatusBar.SimpleTextが表示されなくなりますた。
TXPManifestは貼ってありまつ。回避策、ないでつか?

# Update で直るのかなぁ。。。
602名無しさん:02/11/10 11:49
IPアドレスを用いて他のパソコンの中に保存されているファイルを取得するプログラムを作りたいのですがどうしたらよいですか?教えてください。
>>600
両方。フォームの幅を短くしたり長くしたり。
フォームを動かすたびに、CoolBarのBandサイズが変わってしまう。
>>602
サーバ用プログラム(ファイルが保存されているマシン用)と
クライアント用プログラム(ファイルを取得するマシン用)を用意する必要があると思う。
FTPとか調べて見てはどうでしょうか?
605デフォルトの名無しさん:02/11/10 12:40
if variable = const then
 statement1
else
 statement2;

case variable of
 const: statement1;
 else  statement2;
end;

どちらのほうが速いでしょうか?
分岐が二つならcaseなんていらない
世の中には if を使わない人もいます.
608デフォルトの名無しさん:02/11/10 19:56
TMonthCalendarを使ってカレンダーを作りたいんですが、
休日を赤で表示したいと思っています。

予定を入れた日はGetMonthInfoイベントでBoldDaysメソッドを呼んで
太字にできたのですが、休日を赤いフォントに変更ってできるのでしょうか?
609デフォルトの名無しさん:02/11/10 22:19
TImageを左クリックする毎に 1.bmp->2.bmp->3.bmp->1.bmp の順番で
右クリックする毎に 1.bmp->3.bmp->2.bmp->1.bmp の順番で
イメージが切り替わるようにするにはどしたらいいですか?
イメージはTImageListに格納されています。
>>609
onclick発生しなかったっけ?

後は自分で頭使うところだ。
onmousedownとonmouseupでないと左右ボタン判別できなくない?

とか、言ってみる。
サンクス!
ちょっと試してみます
もうすこし、教えてください。
procedure TForm1.Image1Click(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
case Button of
mbleft:
begin
ImageList1.GetBitmap(1,Image1.Picture.Bitmap);
Image1.Repaint;
end;
mbright:
begin
ImageList1.GetBitmap(2,Image1.Picture.Bitmap);
Image1.Repaint;
end;
end;
end;

で、一応クリックに応じてイメージの切り替えが出来たんですけど
切り替えたイメージのImageListでのIndex値はどうすれば取得できますか?
ごめんソース見づらくなってしまった

procedure TForm1.Image1Click(Sender: TObject;
     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 case Button of
  mbleft:
  begin
   ImageList1.GetBitmap(1,Image1.Picture.Bitmap);
   Image1.Repaint;
  end;
  mbright:
  begin
   ImageList1.GetBitmap(2,Image1.Picture.Bitmap);
   Image1.Repaint;
  end;
 end;
end;
Index値を記録すればいいだろ。
Index: Integer;をどっかに宣言して

Index:=1;
ImageList1.GetBitmap(Index, Image1.Picture.Bitmap);
すまん、ありがとう。
617デフォルトの名無しさん:02/11/11 16:29
こんにちは。
タスクスケジューラを制御しようと考えています。
それで、ITaskSchedulerなどの定義が必要なのですが、
Delphi6Proには定義ファイルがありませんでした。
また、タイプライブラリで取り込むことも出来ませんでした。

そこで、Delphi7ではITaskSchedulerなどが定義されているのか、
お持ちの方はソースを検索していただけませんか?
618デフォルトの名無しさん:02/11/11 16:33
>>617
D7でも定義されてないよ。
検索してみたら
http://delphi.icm.edu.pl/ftp/d50free/TaskSched.zip
厨質問でスマソ
WinSockなどのコンポーネントを使った通信関係の解説をしているWEBサイト教えて。

HELPには何もかかれてないよ。せめて簡単なサンプルがあれば自己解析するのだけど。
621デフォルトの名無しさん:02/11/11 19:44
>>619
おお、ありがとうございます。
Cヘッダからコンバートする手間が省けました。

>>618
日本のサイトになかったと思ったら本家にあったのですね。
参考になります。
622デフォルトの名無しさん:02/11/11 21:36
実行中にフレームに貼り付けたコントロールのプロパティの変化や変数の変化を
リアルタイムで、VBのようにまとめて知る方法はありませんか?
>>622
VBはどんな風にして知ることが出来るんだ?
624デフォルトの名無しさん:02/11/11 22:16
>>623
VBのローカルウインドウのようなもので一括して知りたいのですが...
626デフォルトの名無しさん:02/11/11 23:06
>>625
おお、スクリーンショット見た感じではこんな感じが欲しかったです
英語さっぱりなので使い方がさっぱりなので早速調べてきます
すばやいレス有難うございます
[実行(R)|インスペクト(I)...] は?
628デフォルトの名無しさん:02/11/12 15:34
Delphi6のSource\Rtl\Winにあるソースなのですが、
Cヘッダからコンバートしたものには全部
「{$EXTERNALSYM XXXXX}」のようなコンパイラ指令(?)が定数などに
くっついているのですが、これはどう言う意味なのでしょうか?
Cヘッダからコンバートする場合は必ず付けなくてはならないのですか?
629デフォルトの名無しさん:02/11/12 15:50
if 条件 then begin

処理1

end else

処理2

上記のような文で、処理1を通らない条件の時、
処理1を変更して実行すると例外が出てプログラムが止まります。

なぜ通っていない処理1を変更しただけなのに止まりますか?

下記にまとめてみますた。

処理1を変更前、処理1を通る条件
正常に動く

処理1を変更後、処理1を通る条件
正常に動く

処理1を変更前、処理2を通る条件
正常に動く

処理1を変更後、処理2を通る条件
例外が出て止まる

コンパイル時に警告等は出ていません。
Delphi6を使っています。
ヘルプコピペ
>EXTERNALSYM 指令は,指定した Delphi シンボルが C++ 用に生成されたヘッダーファイルに現れないようにします。
>オーバーロードされたルーチンが指定された場合,ルーチンのすべてのバージョンがヘッダーファイルから取り除かれます。

つまり、BCBでDelphi用のコンポーネントを使うような時に、BCB側で定義済
の定義が一緒に出ないようにする為ののもので、Delphiだけを使ってるぶん
には関係ないという事です
>>629
コンパイラのバグじゃないの?
必ずそうなる最小限のコードを作ってみて。

ここに書けば日本の某2ch担当の人が米に連絡してくれるでしょう
>>629
ついでに最適化の有無も
633デフォルトの名無しさん:02/11/12 16:32
処理1を変更ってなに?
634629:02/11/12 17:07
>>631
最小限のコードにサンプルプログラムが噛んでるから
たぶん、そっちに問題があるんだと思います。

>>632
最適化ってなんですか?
普通にF9で実行してるだけなんで最適化してないと思います。

>>633
処理1の内容を変更した後と変更する前で、実行後にエラーが
出るかどうかが変わるって事なんですが、意味不明ですか?

もう、諦めました。
変更前の状態でも使えるので、そっちでいきます。
お騒がせしました。
635デフォルトの名無しさん:02/11/12 17:07
ステータスバーにボタン乗せるのってどうやったらできますか?
>最適化ってなんですか?
[プロジェクト]-[オプション]-[コンパイラ]-[コード生成]-[最適化]

>もう、諦めました。
早すぎ。
637デフォルトの名無しさん:02/11/12 18:54
>>630
なるほど。ヘルプに載っていたとはうかつでした…
解説ありがとうございます。
>>635
ボタンのParentをステータスバーにする
位置はプログラムで調整
イメージングを使う以外でモノクロTifをグレースケール表示させる方法、またはコンポーネント
 知らないでしょうか?XPになってからイメージングが無くなって困ったことになりました
>>638
おお、ありがとう。
直接フォームをテキストで開いて、
ステータスバーに対してボタンが入れ子状態にすると簡単にできたよ
>>639
Pro版を購入するという手もある
642デフォルトの名無しさん:02/11/13 22:31
>>641 それはXPのプロ版?
643デフォルトの名無しさん:02/11/14 09:54
>極端な話、プロパティエディタ上で追加・削除が全く出来ないと
>いいのですが、そのようなことは出来るのでしょうか?

ColnEdit.pas の ShowCollectionEditorClass の最後の引数を [ccMove] だけにして
カラムエディタを開けばいいんとちゃうか?
644Del厨改めDel:02/11/14 10:51
横レス、スマソ。
50枚程度のJPGを順番に表示させるスクリン・セーバーを
作りたいのですが取っ掛かりを教えて下さい。
下記スレで教えていただいたのですがテキストを点滅表示させると
いうものでした。
重ねて質問したところ帰るように言われてしまいました。
>1を読み、先にここに来るのだったと反省しています。
よろしくお願いします。

ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室G
http://pc3.2ch.net/test/read.cgi/tech/1035549044/
>>644
JPEG を画面に表示させる方法は判りましたか?

アプリとして、フォームに表示させてみて、次はディスクトップに表示してみて
それが出来ればリンク先の内容を読んで解決する筈です
646Del厨改めDel:02/11/14 11:00
>645
ありがとう。
これから、考えてみます。
Delphi7を買ったばかりで済みません。
ListBoxで左クリックしたときと同じように右クリックしたときも選択できるようにするには
どしたらよろしいいでしょうか?

procedure TForm1.ListBox1MouseDown(Sender: TObject;
 Button; TMouseButton; Shift; TShiftState; X, Y: integer;);
begin
 if Button = mbRight then
  // ここになんてかけばいいの?
end;
648デフォルトの名無しさん:02/11/14 15:19
TEditを右クリックすると、デフォルトのポップアップメニューが表示されますが、
表示しないようにするには、どうしたらいいでしょうか。
とりあえずは、空のTPouupMenuをTEdit.PouupMenuに割り当ててるんですが、
もっとスマートなやり方があれば教えてください。
649648:02/11/14 15:20
>648
Pouup→Popup
>> 空のTPouupMenuをTEdit.PouupMenuに割り当ててるんですが

じゅうぶんスマートだと思う
>>647

左クリックを完全にシミュレートするなら、MouseMove と MouseDown も
必要です。

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Itm:integer;
begin
if Button = mbRight then begin
Itm := ListBox1.ItemAtPos(Point(X,Y),true);
if Itm = -1 then exit;
ListBox1.ItemIndex := Itm;
end;
end;

procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then begin
ListBox1MouseDown(Sender,Button,Shift,X,Y);
if Assigned(ListBox1.OnClick) then ListBox1.OnClick(Sender);
end;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssRight in Shift then
ListBox1MouseDown(Sender,mbRight,Shift,X,Y);
end;
TToolbarに実行時に動的にツールボタンを作成して乗せていくと目に見えて遅いようなのですが、これを速くするにはどうすればいいですか?
>> 目に見えて遅いようなのですが、

再現しません
>>651
ありがとう。望んでいた通りの動きになりました!
かなり感動してます。
>>651
ありがとう。望んでいた通りの動きになりました!
かなり感動してます。
時間が逆転している!! 654 <-> 655
>653
目が悪いのでは?
>>657

ちゃんと手間暇かけて検証したのにそんな言い方はないだろ。
いくら 2ch だからって。まったく。

あなたは、性格が悪いのでは? 早いパソコン買ったら?
自分で勝手に検証したんだろ?この程度で怒るなら、2ch に近づかないほうが良いかと。
|,,∧   >>657
|∀゚彡 藁た
|⊂ミ
| ミ    
|''U
>>658
>657 は多分 >652 と別人でネタだと思いますが
調べてくれた方にとってはキツいですねぇ.

ツールバーはボタンに文字(Caption)を表示させて使うことが多いのですが
配置やサイズがおかしくなって戻らないことがしばしばあるので
(ちなみにD5)
未だにパネルにスピードボタンを貼り付けています.
おしえてください。

Form1とForm2があり、以下のようなコードでForm1からForm2を立ち上げるています。
begin
 with TForm1.Create(self) do
 begin
  Caption := '新規';
  Show;
 end;
end;

しかしながら、Form2でOpenDialogを実行するとForm1までShowModal状態になってしまいます。
要は、よくあるSDI型エディタで新規作成をすると新しいフォームが独立して立ち上がって、かつ
Form1を閉じると、立ち上がっているForm2がすべて閉じられるようなことがしたいのです。

根本的にコードが間違っていましたらすみません。
SDI スタイル
http://www.asahi-net.or.jp/~HA3T-NKMR/tips025.htm

   ∧,,∧  ちょっとやり方が複雑になるかも
  ミ,,゚Д゚彡 しれませんが、ここを参考にしてみてください。
   U  つ  
 @ミ  ミ   面白いのが作れると 
   ∪''∪  いいですね。
664デフォルトの名無しさん:02/11/16 11:26
IDEのファイル検索で、"function"を除いた"func"を検索するにはどうすれば出来ますか?
(条件:not 大/小文字の区別 and not ワード検索)
>>663
それの良い副作用として、タスクバーの右クリック時に出るメニューが
Applicateionウィンドウのそれじゃなくて、フォームのメニューになるため、
Delphiアプリっぽくなくなる。
最近のギコナビでは実装済み。
Delphi7のメニューで
ファイル(F)の(F)が有りません
パッケージ裏のスクリーンショットを見ると
ちゃんと有るんですが
インストール失敗でしょうか?
>>666
うちのも無いからしんぱいするな。
ALTキーを押してカーソルを動かしたらでるとか
何かの拍子に表示されたような気がするから試してみて

それよりCDケースは割れてなかった?
>>667
Alt + F 1回押せば出てくるけど
起動時は必ず非表示で気持ち悪いです。

CDケースは大丈夫でしたよ。
>>664
正規検索を ON にして
func[^t][^i][^o][^n]
てのは?
670デフォルトの名無しさん:02/11/16 21:03
>>668
ALTだけで出る
671ねこま:02/11/16 21:33
SDI スタイルは,作り込んで行くと色々と大変な事を経験します.
>>671
???
MDIよりマシだと思うが。
673664:02/11/17 03:08
>>669 ありがとうございます!
674664:02/11/17 08:55
"functions" "aFunction" "funcT"とかは検索できませんでした( ̄□ ̄;)!!
[警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'A' の値は不定です

こういうの良く出るんだけど、このあとにもう'A'を使わない場合
ほっといてもいいの?
>>675
それはループ終わった後に再びAを参照してる時にでるんじゃないっけ?
よく出る・・・ものでは無いと思うぞ(w

出るソースキボンヌ
>>674
function に一致せず func に一致するのだから、要求された仕様通りだと思うが。
functions には一致させたいの?

もう一度要求仕様を定義し直してくれ。
>>675
>このあとにもう'A'を使わない場合
そりゃAを使ってるから警告が出るんだよ。
for A := 0 to 10 do
 ;
writeln('A=',A); <-ここで警告

この警告が出た場合バグる可能性大
>>677
funcを検索すると、予約語のfunctionがたくさんマッチします。
この予約語のfunctionを検索結果から除外したいということです。
AnsiContainsText(identifier, 'func') and not (identifier = 'function')

> writeln('A=',A); <-ここで警告
顔文字に見えた・・・
>>679
どうでもいいがfuncなんて識別子を多用する奴は筋が悪い。
682679:02/11/17 20:00
>>681
話としてはfuncでも他のやつでも何でもいいので、記号化・抽象化・一般化して考えていただければ・・・
>>679
「function」を「imoyoukangatabetakattana-」に全置換してから「func」で検索するのぢゃ。
684679:02/11/17 20:32
>>683 ありがとうございます!
685675:02/11/17 21:50
レスありがとうございます。
勉強中の身なんで、おかしなソースかもしれないけどこんな感じです。

for c:=0 to datacount div 60 -1 do
begin
for i:=f+2 to f+59 do
begin
with data[i] do
begin
if l>Lo then l:=Lo;
if h<Hi then h:=Hi;
end;
end;

if high(data[datacount-1].od)=-1 then setlength(data[i-1].od,2)
else setlength(data[i-1].od,high(data[i-1].od)+3);
data[i-1].od[high(data[i-1].od)-1]:=h;
data[i-1].od[high(data[i-1].od)]:=l;
h:=0;
l:=9999999;
inc(f,60);
end;

これで、
[警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'i' の値は不定です
と出ます。
とりあえず問題なく動いているのですが
なんとなく気になります。が、なにがおかしいのかわからず・・・。
アドバイスあったらよろしくです。
>if high(data[datacount-1].od)=-1 then setlength(data[i-1].od,2)
ここで思いっきりiを参照してるじゃん。
iが不定ってことはiにはランダムな値(実際には違うけど)が
はいっていると理解しとけばいいよ。
687675:02/11/17 22:40
>686さん

レスありがとうございます。

いまいち納得できないのですけど、例えば

for i:=0 to 10 do
  showmessage(inttostr(i));

showmessage(inttostr(i));

こんな感じの場合、2個目のshowmessageで
「[警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'i' の値は不定です」が
出るわけですけど、実際これで動かしてみると2個目のshowmessageの'i'には
常に(何百回も試したわけではないので常にとは言い切れないが)11が入ってるんですけど、
そうでない値が入る可能性もあるということですか?

>>687
そういうこと。なんでそうなるかというと、たとえば

for i:=0 to 1 do showmessage('hoge');

のようなプログラムを書いたときに、コンパイル時に最適化されて実行ファイルでは

showmessage('hoge');
showmessage('hoge');

となる可能性がある。結果は変わらないが、for文の後で i の値が1になるとは限らない。
不定ってのはこういうこと。
689FAQなわけだが:02/11/17 23:53
for i := 0 to 10 do
が最適化で
for i := 10 downto 0 do
に置き換えられるケースがあったような。
うむ。CPUにとってはi=10 を比べるよりもi=0を比べる方が楽なのだ。
691675:02/11/18 06:52
>688-690の皆様

勉強になりました。ありがとうございました。
CPUウインドウをよく見るのだ
見てもアセンブラはよく分からんのだ
694デフォルトの名無しさん:02/11/18 19:57
ListViewである一定の条件でマッチした行のフォントスタイルをボールドするには
どういった方法をとればいいのでしょうか?
サンプルコードでも頂ければ光栄です。
オーナードロー
696デフォルトの名無しさん:02/11/18 21:03
サンプルコードよこせって
tWebBrowserで質問です。
メモリ内部のHTMLイメージから出力する前に

WebBrowser1.Navigate('about:blank');
WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms);
こういう方法が2thで紹介されていたので、早速実験しました。

ドキュメントの表示もうまくいったのですが、グラフィックのリンクがおかしくなって
表示できません。例えば
<imgsrc='A.jpg'> は about:.A.jpg になってしまいます。

これを回避するにはどうすればよいのでしょうか?

>>697
pasdoc の GUI を作ってるの? メモリイメージでいきなり表示出来れば最高だね
サンプルがなけりゃ何もできないようなやつはプログラムやめろ
ま、ま、そんなにDel房を攻めるな(w
701699:02/11/18 23:15
>>700
わかった。

「サンプルがなけりゃ何もできないようなやつにはマイクロソフト製品をお薦めします」
に訂正する。
>>701
お前っちなんかいいやつだな
703697:02/11/19 00:18
>>698
メモリイメージで表示はできたんですけどね。
リンク先が調整できない。
HTML内の SRC= と書いた時のディフォルトのURLがHTML内のどこかに存在してるのかな。
だとすれば、出力する前にメモリ上のHTMLに書き足せばいいだけなんだけど^^;

about:file///e:\data\  表示できないグラフィックをプロパティで見たらこんなURLに
なってるし...
705697:02/11/19 04:34
>>704
なるほど、
これ頭にくっつけて出力すればたぶんOKですね。 THX
706デフォルトの名無しさん:02/11/19 10:42
英語のアプリを、どうしても作らなければならなくなってしまい、
excite翻訳を使いながらなんとか途中まではできたのですが
わからないので教えてください。

「ファイル」→「File」

みたいな感じで、「日付を指定」はなんと訳せばいいのでしょうか?
>>706
Date じゃだめナノ?
マニュアルにのっけるのか、ソフトに埋め込んでるのかわからないけど。
708706:02/11/19 14:22
メニューバーなんだけど、
「date」だとちょっとまずいっす。

はぁ〜・・・。頭悪いとつらい・・・・ T oT)
何故「ちょっとまずいっす。」なのかの理由がわからないと、
話が続かないというオチになりますが。
710デフォルトの名無しさん:02/11/19 16:30
こんにちは。
TListに項目を追加する前にGetMemしたポインタを解放する際、
今まではFreeMemしていたのですが、ヘルプを見るとCapacityプロパティを
減らしてもメモリを解放できることが書いてありました(TList.Deleteの注意書き)。
ソースを見るとCapacityはReallocMemしてましたが、FreeMemするときと
どう違うのでしょうか?
結果として同じように使っていたメモリが解放されるのでしょうか?
>>710
Capacityが増やされたときFreeMemではまずいだろ。
だからReallocMem。

そいうことを聞きたいんじゃない?
Personal で ini の出力できますか?
それに代替する手段でもいいんですけど……
>>712
Personalは使ってないからわからないけど、IniFilesユニットのTIniFileってないかな?
714デフォルトの名無しさん:02/11/19 18:37
>>711
あー、そういう考えもありますね。
でもメモリ解放の相違が何か知りたくて。どっちでやっても同じく解放されるのか否か。
715712:02/11/19 18:38
>>713
それらしいのは1つも見当たらない……
>>715
あるよ。
ソースの適当なところにTIniFileって打ち込んで、そこにカーソル合わせてF1押してみ。
717712:02/11/19 18:54
あったです。F1 にはこういう使い方も……
あと、できれば例文1つくらい紹介お願いします。
718711:02/11/19 18:59
>>714
ヘルプでReallocMemを探せば、その疑問は解決すると思う。
>>717
例えばWriteIntegerメソッドの例を見るとか。
720デフォルトの名無しさん:02/11/19 19:11
<IniFileのテンプレート>

procedure TForm1.Button1Click(Sender: TObject);
var
 Ini: TIniFile;
begin
 Ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
 with Ini do
 begin
  try
  {ここにIniの読み書きを記述}
  //WriteInteger('Window', 'Width', Width);
  finally
   Free;
  end;
 end;
end;
721712:02/11/19 19:11
なんとかなりそうです。ありがとうござました
722デフォルトの名無しさん:02/11/19 19:12
ずれたので修正

procedure TForm1.Button1Click(Sender: TObject);
var
 Ini: TIniFile;
begin
 Ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
 with Ini do
 begin
  try
   {ここにIniの読み書きを記述}
   //Width := ReadInteger('Window', 'Width', Width);
   //WriteInteger('Window', 'Width', Width);
  finally
   Free;
  end;
 end;
end;
DDEクライアントを作ろうとしているのですが、情報が手に入らず
難儀しています。
手始めに秀丸マクロから使われることの多いDDEサーバー「田楽サーバー」
ttp://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/
を制御しようと思ったのですがアドバイズループというものはどのように
実装すればいいのかまるで分からず・・・。TDDEClientItemとTDDEClientConvを
うまく組み合わせるのだろうな、とは思うのですがそれ以上先に進めません。
教えていただけないでしょうか?
ブラウザ作ってるんですけど、javaやスクリプトの有効無効、プロクシのONOFF
等の設定はどこをどのように弄ればいいんでしょうか。
レジストリを直接弄ってみたのですが、アプリケーションを再起動しないと有効に
ならないのでどうしたものかと・・・
725ねこま:02/11/21 08:54
euromind にひさびさにアクセスしてみたら……
消滅?
>>724
>javaやスクリプトの有効無効
TEmbeddedWBやTUIWebBrowserを使う。またはソースを参考にする。
>プロクシのONOFF
URLMkSetSessionOption
>>725
なんか設定間違えているみたい。
ファイルはあるよ。
http://www.euromind.com/iedelphi/index.htm
728ねこま:02/11/21 17:19
>>727 thanks!
でも更新は無いね……
TListView の subitems の内容を書き換えるにはどうしたらいいんですか?
いったん削除して追加する以外の方法はありますか?
>>729
ListView1.Items[i]:.SubItems[j] := 'hoge';
とかじゃなくて?
>>730
ありがとうございます、しかしそれだとエラーになります…。
あきらめて TStringGrid に変更しました。
>>731
もう諦めるのかよ・・・エラーの内容を教えてくれないかな。
あ、すみません、あれから随分手を加えて完全にTListViewの痕跡は消してしまったので
具体的なエラーの内容が確認できなくなってしまいました。
ヘルプを見ると、TListView.Itemsは "仮想モードで動作している場合は読み出し専用" とのことなので、
用語がいまいち分からないのですが、「仮想モード = デバッグ時のモード」と仮定すると、
単純にデバッグ時に書き込めないだけなのかもしれません。
>>733
仮想モードというのは仮想リストビュー(バーチャルリストビュー)のこと。
TListView.OwnerData が True だと仮想リストビュー。
この場合、リストビュー以外でデータを(あなたが)管理しているはずなので、
そのデータを書き換えれば変更できたはず。
735724:02/11/22 13:02
>>726
有難うございました。
UIWebBrowserコンポーネントのインストールに四苦八苦しましたが、何とかなりそうです。
どーでもでした。
>>734
なるほど、勘違いでしたか。訂正ありがとうございます。
うーん、じゃあきっと書き換えの部分以外のどこかでアホなコード書いてたんですね…。
737デフォルトの名無しさん:02/11/22 14:34
1Mぐらいのcsvファイルを読み込むのに
何秒くらいかかる?
738デフォルトの名無しさん:02/11/22 15:42
sendkey32.pasを使って別のアプリに入力内容を送るのを作ってるんですが
送り先のアプリがエンターキーとテンキー側のエンターキーで動作が違う
作りになってるんです。
で、この区別って仮想キーコードではできないんですか?
739:02/11/22 15:53
program fudoudyouduu(output);
const n = 100;
h = 1/n;
var sum : real;
count : integer;
begin
count := 0;
sum := 0.0;
while count < n do
begin
sum := sum + h;
count := count + 1;
end;
writeln('sum = ', sum)
end.



上のプログラムを利用して、
nを1から10000の値で変化させた時の
計算で求まる和をそれぞれSnとしたとき
Snと1との差|1−Sn|
を表示するプログラムを作りたいのですがどのようにしたらよろしいでしょうか。
浮動小数点の問題です。
740デフォルトの名無しさん:02/11/22 16:50
質問です。

TGraphicのインスタンスの中のデータに対して、TCanvasで定義されてる各種
画像操作をしたいんですけど、どうすればいいのですか?

よろしくお願いします
>738
 もしかしてその動作させてるマシンのキーボード、Enter と「実行」キーじゃないか?
 であれば仮想キーコード違うけど。

 ちょっと試したけど、同じコードが帰るのが普通だし、ShiftState も違わんし。
742デフォルトの名無しさん:02/11/22 18:57
>>741
対象マシンは富士通のFMVです。
普通のパソコンです。
元々のプログラムはオフコンで動いてたのをそのまま移植した物なのでキー操作がオフコン仕様なんです(^^;
ソフトは取引先からの貸与なんですが、同じ伝票を2度打ちしないといけない仕様なんで、
楽をするために打ち込みプログラムだけ作ってます。
で、フルキー側のEnterで伝票登録、テンキー側のエンターで次行に移動とゆう頭の痛い作りなんで
普通にVK_RETURNを送ってしまうと伝票登録になってしまうんです。
毎日数百枚打ち込むんでこれが出来れば作業が半分になるんですが。
743デフォルトの名無しさん:02/11/22 19:01
キーボードがオフコン仕様になってるわけじゃないのか……?
まさかキーボードドライバがオフコン仕様とか(爆)
ためしに、その対象マシンで、どんなキーコード出しているか調べてみればいいんでは。
それだけなら五分もあれば作れるだろうし(w

#Form.OnKeyDown で Key を Label かどっかに出力させるプログラムを書いて、動かしてみれ
そのマシン上で、実際にフルキーの Enter とテンキーの Enter で、どんなキーコード送っているか
調べてみるとか。

#実はキーボードドライバがオフコン仕様です、とかいう罠だったりして……
745デフォルトの名無しさん:02/11/22 19:05
ここで聞いてもいいかわからないのですが、やさしいモナーがいるすれなので聞きます。
GridBagLayoutの使い方がよくわからないのですが、何かいいサンプルはないでしょうか?
よろしくお願いします。
GridBagLayout って Java.awt だよね?
ここは Delphi質問スレ。
適当な Java スレに逝ってくれ。
キーボードとテンキーのEnterは確か GetKeyState で判別できたはづ
検索したら、VK_SEPARATORてーのがあったが、これじゃない?
恐らくSetKeyboardState あたりで指定できると思われ
748738:02/11/23 00:41
おかしいな、投稿したはずなのに…どっかに誤爆したかな。

>>744
両方とも#13でした。

>>747
VK_SEPARATORを送っても何も起こりませんでした。
SetKeybordStateは明日試してみます。
過去スレのどこかで、C++のSTLみたいなのをDelphiで試みているライブラリへのリンクが
あったと思うんだけど、どこだか忘れてしまったので貼ってくだされ。
var p:Pointer;
GetMem(p,size);
で確保したpのメモリ領域に対して、
BlockRead(var F: File; var Buf; Count: Integer);
を使ってファイルからデータを読み込みたいのですが、どうしたらいいんでしょう?
BlockRead()の2つ目の引数に、変数ではなくアドレスを渡す方法が知りたいのです。
p^ かByte(p^)とか
つかTFileStream使え
752辻希美:02/11/23 19:40
delphi ver6 無償版のライセンスキー取得ページがエラーになって,入れません。
753デフォルトの名無しさん:02/11/23 20:02
>>752
ラリホー
>>748
Win95迄なら楽だったんだけどね。
今だと、DirectInput を使うしかないんじゃないかな。

http://www.google.co.jp/search?q=DInput.pas
755(・∀・)ピョルァ:02/11/23 21:48
delphi6を昨日から始めた超初心者です。
windowsに付属しているメモ帳みたいなものを
作っているんですけど以下のプログラムを教えてください。
いろんなサイトをまわったりヘルプを読んでみたりしましたが
警告文もなしですぐに上書きされてしまうなど
不完全なプログラムばっかりだったので。。

・ファイルを開く
・新規作成
・名前を付けて保存
・上書き保存
・印刷
・ワードについているような文字数のカウント

よろしくお願いします。
・Memo.Lines.LoadFromFile(FileName)
・Memo.Clear()
・Memo.Lines.SaveToFile(FileName)
・Memo.Lines.SaveToFile(FileName)
・Printer
・Length(WideString(Memo.Lines.Text))

警告はMemo.Modifiedを参照してダイアログ出せばいい。
>>755
>・ファイルを開く
Memo1.Lines.LoadFromFile('Damepo.txt');
みたいな感じでガンバレ。

>・新規作成
ファイルを開かずにいきなり書き始めれば新規作成と同じだろー

>・名前を付けて保存
TSaveDialog辺りでヘルプを見れ。
あとは
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
見たいな感じで。

・上書き保存
FileExists ってゆー便利な関数があるから、それで古いファイルの有無を
確認しる。

>・印刷
俺も詳しく知らないからパス

>・ワードについているような文字数のカウント
Length(Memo1.Lines.Text);
ただし改行が二文字にカウントされる諸刃の剣
>>751
pはPointer型だから、p^はエラー出ないか?
PChar(p)^ とか、 PByte(p)^ にしる!
759(・∀・)ピョルァ:02/11/23 22:03
>>756
>>757

ありがとうございます。
やってみます。(む、難しい(´・ω・`)ショボーン
>>759
調べながらやってみ。
本当にわからんとこをピンポイントで質問しないと効率悪いよ。
761(・∀・)ピョルァ:02/11/23 22:21
>>760
わかりました。ありがとうございます。
>>758
p^は何にも代入互換がないだけで有りだよ。
>Length(Memo1.Lines.Text);
>ただし改行が二文字にカウントされる諸刃の剣
Memo1.Lines.Countでなんとでも調整できるべ
764(・∀・)ピョルァ:02/11/23 22:32
メインメニューの中の編集(&E)というところに
文字数カウントという項目を作りそこをダブルクリックして
以下のプログラムをbeginとend;の間に書いてF9してみたのですが

・未定義の識別子 :'sTrDate'
・未定義の識別子 :'Label1'
・互換性の無い型です
・未定義の識別子 : 'Label2'
・互換性の無い型です
と言うふうにDelphiに怒られてしまいます。
良かったら教えてください。よろしくお願いします。


strData := 'Delphiデルファイ';
{ バイト数 }
Label1.Caption := IntToStr( Length(strData) );
{ 文字数 }
Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) );
わかりにくかったら(・Α・)ゴメンナサイ
>>764
・変数は宣言しよう
 (strDateとstrDataは別の変数)
・ラベルをフォームに貼り付けよう

いじょ
766(・∀・)ピョルァ:02/11/23 22:45

Var
strData;
Label1;
Label2;

procedure TForm1.N8Click(Sender: TObject);

begin
strData := 'Delphiデルファイ';
{ バイト数 }
Label1.Caption := IntToStr( Length(strData) );
{ 文字数 }
Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) );
end;

end.
と書いたのですが、できません、何が原因なのでしょうか?
(´・ω・`)ショボーン
767(・∀・)ピョルァ:02/11/23 22:49
すいません
Varの
Label1
Label2
というのは無視してください。
>>766
>Var
>strData;
>Label1;
>Label2;
ここんとこが間違い

ラベルをフォームへ2つ貼り付ける
(Label1、Label2という名前が勝手につく)

変数宣言には型の指定が必要
var
 strData: String;
var strDATA :string; ではないかと
>>766
Label1とかは、varで宣言するんじゃなくて、フォーム(実行したときのメインの
ウィンドウの事ね)に貼り付けるんだよ。そうすると勝手に宣言される。

上の方に出てる、コンポーネントパレットの[A]と出てる奴を押して、フォームの
適当な所をクリックすると、Label1ってのが作られる。二個目はLabel2になる。

strDataはちゃんと文字列型として宣言するべし。
var
 strData: String;
とね。
あとグロバル変数使うな。
771(・∀・)ピョルァ:02/11/23 22:57
>>786
>>789
>>790

ありがとうございます。
言われた通りにやってみたら
エラーなくできました。
でも文字数のカウント押しても
何も出なくて虚しいです。どうしてでしょうか・・。(´・ω・`)ショボーン
772(・∀・)ピョルァ:02/11/23 22:58
すいません
>>768
>>769
>>770
でした。
>>786
>>789
>>790

未来参照??
774(・∀・)ピョルァ:02/11/23 23:01
>>773

そうなっちゃいますね。
すいません(藁
ちゃんと Label1 と Label2 はフォームに張り付けてある?

正直、↓から始めた方が良いと思われ・・・



program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

begin
 Writeln('Hello, World!');
end.
正直Delphiで↑は無駄だと・・・ せめてLabel1.Captionから・・・
778(・∀・)ピョルァ:02/11/23 23:08
>>775
はい。貼りつけたんですよ。

だから
Label1・Label2
の未定義エラーは出なくなりました。

>>776
一応、今日の朝やりました。
へぼですいません…(´・ω・`)ショボーン
誰か即席で初心者向け解説サイト作ってくれ
>>779
作ろうと思いつつ、既に2年の月日が・・・
>>778

>一応、今日の朝やりました。
>へぼですいません…(´・ω・`)ショボーン

まじ?
普通の人は ShowMessage('Hello') から始めるんだが、 Writeln('Hello') から始めるとは・・・

君、見込みあるよ、頑張って立派なDEL厨になってくれ。
782デフォルトの名無しさん:02/11/23 23:20
自分も初心者向けサイトきぼんぬ
神は現れるか??

期待age
  ∧,,∧ ヨーシ 水差しちゃうぞー....
 ミ,,゚Д゚ミつ  オメデテーナ

Delphi プログラミング事始め メニュー
http://www2s.biglobe.ne.jp/~hatena/delphi/index.html

DelphiTutorHome
http://www.netjoy.ne.jp/~tuya/DlphTutor/index.html

Delphi はじめの一歩
http://delphi.sakura.vg/index2.html

Do It YourSelf---Life with Delphi
http://home.onestop.net/mineko/index2.html

flow of waterプログラミング講座
http://wblue.hp.infoseek.co.jp/prog/chair_top.htm

Pascal・Delphi入門:オンライン学習 ページ
http://or-lab.asahi-u.ac.jp/intro_to_delphi/default.htm

Seventh Delphi
http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html

ゼロから始めるDelphi講座
http://www.text2music.com/text/delphi/zero/index.htm

メルマガ 「Delphi 買ったけど。。」
http://hp.vector.co.jp/authors/VA009187/delkedo/

Delphi(デルファイ)のページ
http://www.threeweb.ad.jp/~satou/
784(・∀・)ピョルァ:02/11/23 23:22
>>781
あっそうなんですか。ありがとうございます。
どこかのサイトを参考にしてやったんです。
確かにShowMessageが一番簡単ですよね。
>>783
フサギコって、こういうテンプレをあらかじめ用意して待機してるのか・・・流石だ。
>>782
フサギコが作るってさ
Delphiユーザって変態が多いから
サイト見てもよく分からないんだよな。
目次だけ作るから誰か中身きぼんぬw

〜独習Delphi〜
第一章Delphiの基礎
・Delphiの歴史
・オブジェクト指向とは
・最初の簡単なプログラム
・プログラムの要素

第二章データ型
第三章

というか独習C#のパクリで。
789デフォルトの名無しさん:02/11/23 23:37
漏れもきぼんぬ、きぼんぬ。藁

788の目次
・最初の簡単なプログラムのなかで
テキストエディタ
ペイント(windowsに入ってるような簡単なのでもOK

ぐらいは(゚Д゚)ホスィ
790デフォルトの名無しさん:02/11/23 23:38
神が現れること

期待age
Del厨って他人まかせでちゅね
792(・∀・)ピ;ヨルァ:02/11/23 23:48
何度もすいません。
これで合ってますでしょうか?
文字数カウントのプログラム

procedure TForm1.N8Click(Sender: TObject);

Var
strData: String;

begin
strData := 'Delphiデルファイ';
{ バイト数 }
Label1.Caption := IntToStr( Length(strData) );
{ 文字数 }
Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) );
end;
>>792
ヘルプ見れば分かるだろ
本くらい買えよなぁ

>>783 のサイトの作成者も、入門者に分かりやすく説明するために
努力してるんだよ。ちゃんと読めば、それなりに分かるはず。
それでもダメなら、才能がないことを悟って、別の道へ行くべし
プログラミングなんかしたこともない人がDelphi3で自前のメモ帳を作る試み
Life with Delph・
http://home.onestop.net/mineko/index2.html
Delphiの歴史
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/history.htm
メモ帳
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/beginner/cook_notepad.htm
落書き帳
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/beginner/cook_scribble.htm
・文字数を調べる
http://www.wwlnk.com/boheme/delphi/tips/tec0720.htm
            ________
.       ♀  ( 自分で作って 
       /\  ( 自分が神におなりなさい
.      |∧ ∧ .。○ ――――――
  ___ ミ,,゚Д゚彡___
  |   ⊂[ダメー]⊃   |
   ̄ ̄ ̄ミ  ミ ̄ ̄ ̄ __
'|.      ミ  ミ     |__†_レ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
'|.      |.UU|     (゚Д゚,,) < 迷える子羊よ、お訊きなさい・・
'|.      |   | ∧ ∧⊂ ̄ ̄ハ  \______________
'|.      |   |.(   ,) | ╋ J
     | ̄ ̄ ̄./⌒ヽ ̄ ̄ ̄|
     |    (  ノ )    |
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
_______|\________
  神よ
  メモ帳とペイントの作り方を説明した
  サイトきぼんぬ、(゚Д゚)ホスィ
>>795
うむ、ごくろう。
     ___        ._______
     |  ||      /
    ∧ ∧ 。 O ○  がんばってね
 __ミ゚Д゚,,彡_   \
 |__⊂  ノノつ__||     ̄ ̄ ̄ ̄ ̄ ̄ ̄
    .ミ ノノミ   
    .∪∪|        
    |  ||      
    |__||
   /  ヽ\
  | ̄ ̄ ̄|  ̄|
 /..†ΨΨ† ヽ \

紹介したサイトをしっぽりみて勉強して
そいで、わからなかったら
質問してみると、きっといろんな人が
助けてくれるよ。
初心者向けサイトを作ろうかと思った人は多いと思うのだが、
更新をシステム化しないと面倒でやめちゃうんだよね。
じゃ、まず自動更新ソフトを作ってください。
800ゲト
801デフォルトの名無しさん:02/11/24 00:54
>>799
ワラタ
画像キャプが面倒くさい訳で
803デフォルトの名無しさん:02/11/24 01:02
>>802

まぢでつか?
もうだめぽ。
独力でやるのはちょいときついやね。>初心者向けサイト
Wiki のように他の人の力を借りてページを更新できる
仕組みを作ったほうがいいのかもしれない。
んじゃDel専用のTiki立ててくれよ。
前にもあったけどYukiWiki使いづらいし
他の言語も混ざってていまいち機能してなかったよ。
>>802
そのために、クリップボード監視して、新しいイメージが挿入されたら指定ディレクトリに
連番でPNGで保存していくソフト作ったところでページ作成断念>俺
WinShotがお勧め
>>749
それ出したの多分俺だ。
ただ、ドキュメント見ただけで使ってないし、更新止まってるみたいだからなんともいえない。
ぜひ評価して感想よろしく。
DECAL
http://www4.kcn.ne.jp/~corocoro/action/action.html


で、検索で今度はこんなの見つけた

DCLX is a free library that provides ArrayList, LinkedList, Vector, HashMap, HashSet, ArraySet, Queue and Stack structures to Delphi/Kylix. It also provides algorithms like in STL (Apply, Found, CountObject, Copy, Generate, Fill, Reverse, Sort...).
http://sourceforge.net/projects/dclx
809808:02/11/24 01:54
> DECAL
> http://www4.kcn.ne.jp/~corocoro/action/action.html
??なんで、こんなURLがクリップボード入ってたんだ?
正しくはこっちね。

DECAL
https://sourceforge.net/projects/decal/


810デフォルトの名無しさん:02/11/24 02:58
お前らスミマセン教えて下さい。
IdHTTP1.Get(Edit1.Text);
したいときEdit1.TextのURLが存在しないとき、エラーダイアログが出ます。
これを非表示もしくはEdit1.TextのURLが存在するかチェックしてエラーを誰
もいない環境でスルーしたいのですが、誰か知ってる方お願いします
>>810
try
 IdHTTP.Get(edit1.text);
exception
 //IdHTTP. ResponseCode;
end;
>>809 さんきゅ

ところでPukiWikiでよければ立てますが?>ALL
これ http://pukiwiki.org/

Tiki, YukiWikiより使いやすいと個人的に思う。

使ってみる?
>>812
ぜひ立ててください。ちょっとはお手伝いできるかもです>Delphiサイト
PukiWikiというのは知りませんでしたが画像を展開して表示できて
Delphiのコードが簡単に書ける(変に解釈されない)ものがいいですね。
814 ◆qZ/VDjzu96 :02/11/24 10:11
とりあえず設置だけしてみた。
TOEICから帰ってきたら体裁を整えて目次を作ってみるので、
適当に遊んで慣れてみてください。

ソースは先頭に半角空白を入れておけばpreで表示されます。
そのほかはヘルプを見てちょ。

http://onigiri.s3.xrea.com:8080/delphi/
xreaの垢ホスィ...
816 ◆qZ/VDjzu96 :02/11/24 17:27
帰ってきました。
早速かっこいいバグ報告ページができてますね。すげぇ。

画像Upload掲示板が要りそうなので別に設置します。
一応PukiWikiだけでもアップロードはできるんですけど、あまり使い勝手が良くないので。

今考えているのは
・初心者向けの一通りの解説
・VCL使用サンプル(magic of delphiみたいなの。)
・IndyやTRegExprのヘルプの日本語訳(これ、やろうと思ってたんでぼちぼち自分でも追加します。)
・お勉強ページ、批評ページ、Delphiで作られたアプリへのリンク

などなど。欲張りすぎるとアレですが。このうちいくつかはどうせ自分でも作ろうと思ってたんで
(思ってただけで全然進んでいないんですがw)
皆がちょこちょこ書いてくださればなかなかのものができるんではないかと。
あれはバグではない、と思うんだけど。
コモンダイアログの仕様じゃないの?

ってコメントはどうつけたらいいのかな?
単にそのページ逝って編集押して書き加えればOK
コメントのつけ方をどうするか。って話。
今のままだと、バグレポートだけでひとつのページでしょ?
使い勝手悪くない?
こんな感じで真下に書いとけばいいんじゃないの
使い勝手が悪くなったら一バグ一ページとかに独立させるとか
http://onigiri.s3.xrea.com:8080/index.php?%5B%5B%A5%E9%C5%B5%5D%5D
821 ◆qZ/VDjzu96 :02/11/24 18:05
なんでリンクのページの左側が細くなってるんだろう・・・
>>821
googleリンクの所為だろうけどかっこわるいね。
ブラウザ大きくすると大丈夫ではあるけど
文字列にリンク先埋め込めないの?
824 ◆qZ/VDjzu96 :02/11/24 18:29
[[リンク先名:URL]]で埋め込めます。
Google検索はURL自体は重要じゃないだろうから埋め込んじゃいました。
825デフォルトの名無しさん:02/11/24 18:49
ageとく
このスレのFAQページ作ていい?
Delphi関係ならなんでも大歓迎。
会社から書き込みたいんだけど、IP とかってどういう扱い?
微妙な会社組織からの書き込みになるので、サーバー管理者以外には
書き込み者の IP アドレスが表示されなければいいな。っと。

ざっと見た限りでは大丈夫そうですが。

829 ◆qZ/VDjzu96 :02/11/24 22:12
カウンターなどでIPを区別に用いることはあっても
表示することはありませんのでご安心ください。

さて、TRegExprの勝手に日本語訳を作ってみるかな。
何人くらいが修正に参加しているんだろう。
お疲れ。私は寝ます。また明日。
831デフォルトの名無しさん:02/11/24 23:19
>>811
試しにコンパイル…
ウマクイッター!!!
恥ずかしくもありがとうございました。
ホントスミマセンでした。
戸田っちはちゃんと手伝ってくれるんだろうか?>wiki
吐駄ちゃんに教えたの?
ダイアルアップだから編集できないんじゃ?
834デフォルトの名無しさん:02/11/24 23:38
ライセンスキー取得できないのは俺だけか?
>>834
D6? D7?
836デフォルトの名無しさん:02/11/24 23:52
>>835
D6だが、7って無料あるの?
月曜9時過ぎになれば復旧しているよ。きっと
>>837
3球
839デフォルトの名無しさん:02/11/25 01:22
キャプ画やソースのうpってanonymousなFTP使える無料webサーバみたいのじゃ駄目なん?
840 ◆qZ/VDjzu96 :02/11/25 01:32
かまいませんが、外部からのリンクが禁じられていたり
画像置き場にするのはダメだったりとかでなかなか難しいんですよね。
ftpが一番楽ではあるんですが。
ブビ厨に荒らされたりしないんだね。
良い具合に育っていってるみたいだね。よきかな。 >PukiWiki
参加したいけど使い方が良く分からないよ・・・

勝手に編集していいの?
でもそれだと荒らされないの?
荒らす意思がなくても、主義主張の対立で結果的に荒れちゃうってことは?

余計な心配なんでしょうか???
>>843
Wikiは荒らしたりはしないという性善説に依って成り立っています。
荒らしを恐れるよりも多人数でページを作り上げていく
メリットの方が重要であるのだと思います。
万一に備えて定期的にバックアップは取っている、筈。
だからどうぞ勝手に編集してしまってください。
# さしあたって、あなたの質問と私の解答を書いてみるとか。

私見ですが、Wikiは主義主張をぶつけあう議論の場には
向いていないように思います。そういうのはここでやりません?
845843:02/11/25 04:30
>>844
なるほど・・・

2chのような性悪説の世界で、そのような性善説を前提とした企画が生まれたことに
ちょっと感動してみたりして・・・
         すてきですね
    ∧,,∧
   ミ,,゚Д゚ミζ
    ミ  つ旦
  〜と,,,~),,~) 
847844:02/11/25 04:43
いつのまにか「Wikiって何」というページが出来てますな
作ってくれた人ありがと。すてきです
>>845
2ch って、性善説の人のかたまりだと思うよ。
性善説の人が正しいことを行うとは限らない。というだけ。
>>847
私を含めて少なくとも3人が修正/変更しているのね。
TShiftState
が WikiName としては ShiftState となってしまって、先頭の T が落ちてしまいます。
連続する大文字は WikiName とは見なさないのですね?
どうにかならないかな?
>>848
で、性悪説で世の中を見ているのが吐駄や中村。
852 ◆qZ/VDjzu96 :02/11/25 08:58
[[TShiftState]]と全体をBracketNameにするのがいいと思います。
WikiNameを抑制する方法は、残念ながらWikiのアイデンティティーに関わるので
過去に要望されていますがなかなか取り入れてもらえないようです。

正規表現道場@2ch
http://pc.2ch.net/test/read.cgi/php/996105815/950- 参照。
>>852
フサギコスレかWikiスレに移動しない?
そろそろスレ違いの気配が。
854 ◆qZ/VDjzu96 :02/11/25 12:51
それもそうですね。
以降基本的にWikiの話題はWikiの雑談かミ,,゚Д゚彡談話室で。
スレ汚しすみません。
問題はどっちの雑談室でやるか。ってことなんだが。

ミ,,゚Д゚彡フサギコのフサフサDelphi談話室 G
http://pc3.2ch.net/test/read.cgi/tech/1035676809/

ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室G
http://pc3.2ch.net/test/read.cgi/tech/1035549044/

ふたつできちゃったんだよなぁ..
856では:02/11/25 22:15
Wiki関係の話題はこっちでやろう。特に意味はないのだが。
>ミ,,゚Д゚彡フサギコのフサフサDelphi談話室 G
>http://pc3.2ch.net/test/read.cgi/tech/1035676809/
雑談使えばいいじゃん。
WebBrowser で質問です。
こんなことできるのでしょうか?

このブラウザ内に読み込まれたHTMLに書かれているjavascriptですが、

1 プログラム側から呼び出すことはできるのか?
2 HTML内で宣言されたファンクションにコールバック設定をして、HTMLのトリガを受け取ることができるのか?
3 変数の読み出しはできるのか?

1.2は無理でもせめて3ができると嬉しいのですが....
tiffからjpg
tiffからpng
上記の変換をするソフトを作成したいのですが、
フリーのDLL等ありますでしょうか?
また、無いとしたらソフト内で処理するとして、
参考になるようなサイト等教えていただきたいのですが。

よろしくお願いします。
susieとか
861りゅう:02/11/26 22:23
メモ帳に検索機能をつけたいんですけど
どういう風に書くか教えてください(゚Д゚)
よろしくお願いします。
できれば
Varに〜書いて…
begin〜end;にこう書いてと詳しくお願いします。
超・初心者なので(;´∀`)
862りゅう:02/11/26 22:24
googleで検索してソースひっぱてきてもエラーばっかり出ちゃいまして。。
(´・ω・`)ショボーン
863デフォルトの名無しさん:02/11/26 22:28
漏れも、メモ帳作ってますYO
864デフォルトの名無しさん:02/11/26 22:29
メモ帳って日付と時刻ってのがあって
それを押すとエディタの部分(白いとこ)に
時刻が出るよな?あれをDelphiでやるには
どうしたらいいんでつか。
865デフォルトの名無しさん:02/11/26 22:35
メモ帳作成って以外と難しいのかな。(・∀・)スンスン
おまえらどうしようもないちんちんだな。
>>858
1と2は分かりません。単なるDocumentのクリックイベントとかでもプログラムで
取得するのは非常に面倒です。。

3は、なんかのタグに変数を入れれば読み出せないかな?
やってないからわからんけど。
868デフォルトの名無しさん:02/11/26 23:11
コンポーネント化についての説明があるHP教えて!検索しても見つけられないYO
869デフォルトの名無しさん:02/11/26 23:15
GridBagLayoutの使い方が難しくてわかりません。
簡単なサンプルを作ってもらえないでしょうか?
870デフォルトの名無しさん:02/11/26 23:21
>>866
あわれだから乗ってあげるよ!
ってことで

オマエモナー(;´∀`)
>>868
クラス自体の作り方はわかってる?
>>861
var
  Index: Integer;
begin
  //メモのテキストのKotobaの位置をIndexに入れる
  Index:=AnsiPos(Kotoba, Memo1.Lines.GetText);
  //メモの|の位置をIndexにあわせる
  Memo1.SelStart:=Index;
  //Kotobaの長さの分だけ選択する
  Memo1.SelLength:=Length(Kotoba);
end;
>>858
IEコンポーネントを使い倒すスレ
http://pc3.2ch.net/test/read.cgi/tech/982930049/
ここにいけば教えてもらえるかもしれない。
>>873
丁度似たような話題が展開されているな
875デフォルトの名無しさん:02/11/27 11:02
フォームの高さだけを最大にしようと思い
Form1.Top := 0;
Form1.Left := Screen.Height;
としたのですが、これではタスクバーまで隠れてしまいます。
Screen.Heightからタスクバーの高さを引くにはどうやったらいいのでしょうか?
>>875
 タスクバーは下だけじゃなく 上や左右にも配置出来るよ
878875:02/11/27 11:49
>>876
あっそうか、、全く考えてませんでした。。いろいろコード書く前に
教えてもらえて助かりました。

>>877
GetSystemMetricsを使えばいいのかな?調べてみます。
ありがとうございます。
>>878
ごめん GetSystemMetrics だと自動的に隠す設定にしてると出ないかもしれない。
こっち
http://www.google.co.jp/search?q=SHAppBarMessage&lr=lang_ja
880875:02/11/27 13:15
>>879
サンクスコ
アルゴリズムってなんですか?
882りゅう:02/11/27 16:19
>>872

ありがとうございます。
早速やってみたのですが
未定義の識別子 result
Delphiに怒られてしまいました。
どうしたものか。
誰か教えてください。
>>882
どんなソースか見せてー
884りゅう:02/11/27 17:01
>>883
遅くなりました。
下記が例のソースです。
ちなみに文字の検索。

var
Index: Integer;
begin
//メモのテキストのKotobaの位置をIndexに入れる
Index:=AnsiPos(Kotoba, Memo1.Lines.GetText);
//メモの|の位置をIndexにあわせる
Memo1.SelStart:=Index;
//Kotobaの長さの分だけ選択する
Memo1.SelLength:=Length(Kotoba);
end;
885りゅう:02/11/27 17:12
すいませんまちまがえました。
未定義の識別子と言われたのは
kotobaでした。
Memo1.SelLength:=Length(Kotoba);
は互換性の無い型だそうです。(´・ω・`)
(・∀・)ドウシヨウ。
>>884
Kotobaってのばvar節で文字列型の変数で宣言しておかないと。
あるいは手続きの引数にするか。
procedure weojt(Kotoba: String);
var
Index: Integer;
begin
//メモのテキストのKotoba以下略
>>互換性の無い型だそうです
意味わかんねえのか?・・・まさかな。
888りゅう:02/11/27 17:41
>>886
ありがとう。

>>887
はい、意味はわかります。藁
ただ、それにどうやって対処しようかと。
アオルノ(・∀・)イクナイ!
いや、アオルつもりはなかったんだが(w
意味わかってたら、自分であれこれ対処方法考えるのが普通じゃないかと思ったのよ(あおってないよ(w)
>未定義の識別子と言われたのは
>kotobaでした。

まず、ネットを切って。コンパイラが "kotoba" という変数かなにかなんて知らないよ。
って言っているんだから、そこから直さなきゃ。
ほんとに kotoba は存在するの?綴り間違っていない?
           ____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < タスクバー関連のソースウプっときます。
   U  つ∀ \
 〜ミ  ミ ┴    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1038400748
>>875-880

上下左右判定にOS依存とかあったらスマソ。
そのときは報告して保水lっす

俺はデフォでタスクバ上配置なので
その辺りのバグ(これがおおい)には敏感。
892デフォルトの名無しさん:02/11/29 09:49
メモ帳を作っているのですがメニューの編集の”右端で折り返す”が機能しません。
どうすればいいのでしょうか?
procedure TForm1.mnuWordWrapClick(Sender: TObject);
begin
if mnuWordWrap.Checked then
begin
mnuWordWrap.Checked:=False;
Memo1.WordWrap:=False;
end
else
begin
mnuWordWrap.Checked:=True;
Memo1.WordWrap:=True;
end;
end;
>>873
thx
894デフォルトの名無しさん:02/11/29 13:32
最近delphi始めたんですけど、ポインタを使う利点ってなんですか。


それでも動くと思うんだが。
procedure TForm1.mnuWordWrapClick(Sender: TObject);
begin
  mnuWordWrap.Checked:=not(mnuWordWrap.Checked);
  Memo1.WordWrap:=mnuWordWrap.Checked;
  if Memo1.WordWrap then
    Memo1.ScrollBars:=ssVertical
  else
    Memo1.ScrollBars:=ssBoth;
  ShowMessage('Memo1.WordWrapは'+BoolToStr(Memo1.WordWrap, true));
end;
うちでは動いた。
レス先書き忘れた。895は892へのレスね。
>>894
WindowsのAPIを呼び出すときに必要になることが多いけど
それ以外はDelphiの言語仕様がポインタを隠蔽しているから
始めたばかりの人は気にしなくてもいいよん
898デフォルトの名無しさん:02/11/29 13:45
下のような関数を作ってOSの種類を取得することは出来た(?)のですが
Servis Packの種類を取得するにはどうやったらいいのでしょうか?
dwBuildNumberが何か関係してるのでしょうか?

var
OSver : TOSVERSIONINFO;
begin
OSver.dwOSVersionInfoSize := SizeOf(OSver);
GetVersionEx(OSver);
case OSver.dwPlatformId of
VER_PLATFORM_WIN32s: Result := 'Windows 3.1'; //VER_PLATFORM_WIN32s Win32s on Windows 3.1.
VER_PLATFORM_WIN32_WINDOWS: //VER_PLATFORM_WIN32_WINDOWS Windows 95, Windows 98, or Windows Me.
begin
case OSver.dwMinorVersion of
0{95}: Result := 'Windows 95';
10{98}: Result := 'Windows 98';
90{Me}: Result := 'Windows Me';
end;
end;
899デフォルトの名無しさん:02/11/29 13:45
続き

VER_PLATFORM_WIN32_NT://VER_PLATFORM_WIN32_NT Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP, or Windows .NET Server.
begin
case OSver.dwMajorVersion of
3{3.51}: Result := 'Windows NT 3.51';
4{4.0}: Result := 'Windows NT 4.0';
5{2000, XP, .NET Server}:
begin
case OSver.dwMinorVersion of
0{2000}: Result := 'Windows 2000';
1{XP or .NET Server}: Result := 'Windows XP';
end;

end;
end;

end;
else Result := 'Windows??';
end;
900デフォルトの名無しさん:02/11/29 13:46
>>892

mnuWordWrap.Checked := not mnuWordWrap.Checkd;
Memo1.WordWrap := mnuWordWrap.Checked;
Memo1.Invalidate;
横スクロールバーだしてるとワードラップが働かないような。
>>898

SysUtils の
Win32MajorVersion
Win32MinorVersion
Win32BuildNumber
Win32CSDVersion

使うのはだめか?
903898:02/11/29 15:04
>>902
ありがとっす。
ML検索したら上に書いたようなのが出てたので
898-899のような感じで関数書いたのですが
902に書いてあるのでも調べてみます。
904898:02/11/29 15:11
>>902
ああ、こういう簡単な方法があったんすね。。
こっちでML検索した方がありそうだ。
ML 検索なんて止めた方がいいよ。
理由なき批判は煽りにすらならない
Delphi6 personalで作成したプログラムを配布したいのですが、
exe にはどの程度個人情報が含まれているのでしょうか?
>>907
何一つ残らず漏れる。住所も電話番号も。
909907:02/11/30 06:05
ご回答ありがとうございます。

一度小さなプログラムを他の人にあげたことがあるんですが、
その後、生理の日を当てられてびっくりしたことがあって
どうしてなのか不思議に思っていたんですが、バレていたんですね。

これからはコンパイル前には脇の処理を忘れないようにしたいと思います。
しまった、俺が見事に釣られた
Σ(´д`;)
>>907
マジレスすると。
通常は個人を特定するようなものは残らない。

あえてあると言うとすると、RTTIによる列挙型名とかクラス名とかか。
命名規則の癖がわかってイヤン、とか。
あとは、インターフェスに埋め込んだGUIDとか?気にしすぎかこれは。
913907:02/11/30 07:35
マジレスさんきゅです。
あらかじめバイナリエディタで一通り見ていたので、
名前がそのまま含まれることについては分かっていました。

安心するために確認で質問してみたのですが、
もし907の質問の答えとして、有名な方法が存在するなら
かならず鼻息荒く嬉しそうに教えてくださる方がおられると予想できるので
908の回答で私にとっては必要十分なんですよ〜。
とぼけた回答が返ってきた時点で正解は推測できます。
ImageにDXF形式の図(AutoCAD?)を読込みたいのですが、どうしたらいいでしょうか?
915デフォルトの名無しさん:02/11/30 22:44
DelphiアプリからDLLを動的に呼びたいんですが、
アプリの起動時にロードして、終了時にアンロードしたいと思ってます。

fromのOnCreateイベントでロードして、
OnCloseイベントで開放したかったんですが、
アプリ終了時にOnCloseイベントが起きなかったんです。

アプリが起動する時と終了する時のイベントを教えてください。
>>915
OnDestroy。
ちなみにApplication.TerminateではなくApplication.MainForm.Closeでメインフォームを閉じて終了させればOnCloseは起きる。
917デフォルトの名無しさん:02/12/01 00:48
>>916
ありがとうございます!
918デフォルトの名無しさん:02/12/01 01:30
ImageListに 2つイメージを入れました。で、
1つのTBitBtnに、ボタンを押したタイミングで2つの画像を交互に表示させたいのですが、
  ImageList.GetBitmap(0, BitBtn.Glyph);
って書くと、一回目はちゃんと画像が表示されるのに、2回目以降は画像が変わりません。
  BitBtn.Repaint;
ってやってもダメでした。どうやったら画像を入れ替えられるのでしょうか。
おしえて先生。
919デフォルトの名無しさん:02/12/01 01:59
このスレの存在を知らなかったage
var
BM:TBitmap;
begin
BM := TBitmap.Create;
try
ImageList1.GetBitmap(0, BM);
BitBtn1.Glyph.Assign(BM);
finally
BM.Free;
end;
end;
921918:02/12/01 03:15
>>920先生
うぎゃー、動いたです!
ありがとうございますた!
922デフォルトの名無しさん:02/12/01 15:49
hFile: THandle;
strWriteBuf: String;
intWriteLen: Integer;
intWrite: Integer;
と宣言して、
hFile、strWriteBuf、intWriteLenに値をセットして、

WriteFile(hFile, PChar(strWriteBuf)^, intWriteLen, intWrite, nil);

と呼び出したんですが、
「変数実パラメータと変数仮パラメータとは同一の型でなければなりません」
とエラーが出てしまいます。
WriteFileの3番目のパラメータをポインタで渡さないといけないのでしょうか?
書き方を教えてください。
>>922
第二引数varじゃないのか?
924名無しさん:02/12/01 15:56
すみません。質問させていただきます。
サーバーを使わずに他パソコン:Aに繋いで、Aから
何かファイルを取得することはできるのでしょうか?
教えてください。
>>924
Aかもう一方がサーバになれれば可能。

っていうか根本的に何かを理解してないみたいだから基礎からやり直せ。
926名無しさん:02/12/01 16:05
>>925
どのようなプログラムを組んだらよいのですか?
具体的でなくてもありがたいです。
何したいか知らんので一般系


C/S
[クライアント]-----伝送路------[サーバ]


P2P
[サーバント]-----伝送路------[サーバント]
928名無しさん:02/12/01 16:25
例えば、a:「c:\マイドキュメント¥test.exe」を自分のパソコンに
ダウンロードするというプログラムです。
ソースが知りたいのですが・・・。お願いします。
ftp,wget使え。つか「サーバ」を使わずに落とすなんて不可能。
C/S(クライアント/サーバー)
931デフォルトの名無しさん:02/12/01 17:55
Delphiってイベントハンドラ複数登録できんの?
>>931
無理
>>932
うーん。残念。




VB6はできるのに とか煽ってみるテスト。
>>933
使う局面あるか?と。

なんなら複数のハンドラを保持しておけるクラス作ってそれらを順次実行するメソッドを
イベントハンドラとして登録するとか。
>>934
な〜んも考えてないでぽちぽち落としたコンポーネントを継承することなく
既存のコードの修正を最小限にして外部のコードで動作をカスタマイズしたいとき。

> なんなら複数のハンドラを保持しておけるクラス作ってそれらを順次実行するメソッドを
> イベントハンドラとして登録するとか。
まっそういう仕組みを作ればいいんだけど、な〜んも考えてないでぽちぽち
落としたコンポーネントにはこの方法は使えんのよね。
>>931
Observer自作汁
937名無しさん:02/12/01 18:38
自宅サーバーは月々お金がかかるのですか?
↓次の質問をどうぞ↓
939りゅう:02/12/01 20:04
誰かhttp://kakinotane.s7.xrea.com/の
もぐらたたきゲームを作った人はいまつか?
もしいたらもぐら叩きを作ってみよう その3内の
図形の重なりのプログラム。

var
 x1, y1, x2, y2: Integer;
begin
 if (x1 < x2+10) and (x1+10 > x2) and
   (y1 < y2+10) and (y1+10 > y2) then
 begin
  // 図形が重なっていれば、ここに記述したプログラムが実行されます。
 end
 else
  // 図形が重なっていなければ、ここのプログラムが実行されます。
end;

をどこに書くか教えて( ゚Д゚)ホスィ
よろしく。
> if (x1 < x2+10) and (x1+10 > x2) and
なんか分かりにくい記述だな・・・
if Abs(x1-x2)<10
じゃイカンの?
>>928
よくわからんが、他のパソコン:Aってのは自分で持ってる
パソコンなんじゃないの?
もしそうならネットワークドライブの割り当てでAのPCのC:を
取得先:BのF:とかに割り当てる。
後はCopyFile関数を使えばいいよ
>>881
アルゴリズム algorithm
 一般に,問題を解くための処方.特に,コンピュータ向きの解法.算法と訳す.
(後略)
――奥村晴彦著『C言語による最新アルゴリズム事典』より

私はこの本を読むまでちゃんと説明できなかった….
> 一般に,問題を解くための処方.特に,コンピュータ向きの解法.算法と訳す.

これはアルゴリズムについて何かを説明している、というより、たんに言い換えて
いるだけでは? 処方とか解法とかって、なによ?
>>943 じゃ、処方・解法を処理手順に読み替えて。
アルゴリズムをプログラミング言語で具体的に記述したものが
プログラムだよ。
>>944 に従うと

アルゴリズム = 問題を解くためのコンピュータ向きの処理手順

うーむ、なにか分かった?
946デフォルトの名無しさん:02/12/02 02:57
質問です。
WebBrowserコンポーネントでPOSTしようと思うんですが、
var
Flag ,TFN ,PD :OleVariant;
begin
PD := 'a=うふふ&b=あはは';
WebBrowser.navigate('http://hoge/',Flag,TFN,PD);
end;

これだと上手くいきません。
PDが具体的にどういった形式にすればいいかヘルプにも書かれてないんで悩んでます。
パシっとデータがPOSTされるようにどなたか教えてください。おながいします。
>>946
MLの[Delphi:55344]を参照しる!
>>947
エクスクラメーション付けるようなことか?
他人が質問して他人が答えてるんだろ?
お前はその人がやった功績をなぜ胸を張ってえらそうに語るんだ?
>>949
951デフォルトの名無しさん:02/12/02 09:19
DreamMemoってどうよ?
 ミ,,゚Д゚ミつ 別に、"汁"ってのは2タンでは偉そうじゃないと思われ

http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=55344

ちなみにIMEに
【えむえる】って単語で
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=
がDelようにしとくと、MLログ紹介がしやすい

登録はIME2000以降で顔文字として登録汁!
じゃないと、全角半角マゼマゼになるから
 ミ,,゚Д゚ミつ >>951さん
デルパイマガジソに紹介されてますたね。

http://www.dreamcompany.com/memo.html

ScreenShotではTEditor系にも思えるですが
Demoみると、RichText系でもあり、かなり強力かと
思割れ
treeviewに既にnodeがある時に、
動的にnodeのルート(一番上)にnodeを追加したいのです。
Addだと一番下に追加されちゃいます。

教えて先生
955946:02/12/02 10:16

ありがとうございます。
早速[Delphi:55077] Re: バイト配列について
あたりを参考にやってみたんですが、
type
ByteArray = array of Byte;
var
Flag ,TFN ,PD :OleVariant;
OleBArray : OleVariant;
pb : ^ByteArray;
Count : Integer;
btWork : Byte;
begin
PD := 'a=うふふ&b=あはは';
OleBArray :=VarArrayCreate([0,Length(PD) - 1],varByte);
pb:=VarArrayLock(OleBArray);
Count := 0;
//
//↓ここでつまづいた
while ByteFile.Read(btWork, 1) = 1 do begin
pb^[Count] := btWork;
Inc(Count);
end;
VarArrayUnlock(OleBArray);
WebBrowser.navigate('http://hoge/',Flag,TFN,pb);
end;

う〜ん、具体的に文字列から一バイト取り出せばいいんですよね?
情報が点在しまくってて五里霧中です・・・
 ミ,,゚Д゚ミつ >>954

TTreeViewのItemsのItemの中から
levelが0のTTreeNodeを見つけて
それに対して
TTreeViewのItems.Add(TreeNode, '文字')
でやるんじゃないでしょうか。
957954:02/12/02 11:44
>>956
デキタ━━━(゚∀゚)━━━!!!

   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< フサギコタンありがとモナ♥
  (    )  \_____
  | | |
  (__)_)
Delphiちょっと触ってみてるんだけどさ、なんでDelphiって
type
 TForm1 = class(TForm)
 private
  { Private 宣言 }
 public
  { Public 宣言 }
 end;
↑ここ(最後のend;の前)にスペースが入ってるの? typeの終わり、分かりづらくねぇ?
全体的にどこからどこまでが何する範囲ってのも分かりづらいけど。
>typeの終わり、分かりづらくねぇ?

あの end; は type 節の終わりではなく、TForm1 宣言の終わりを示してるんで、
インデントはあれでよいと思います。
ちなみに type の終わりは end ではなく
別のtype/const/var/function/procedure とかです
あのー、関数とか手続きとかは、処理が終われば呼び出されたところへ戻り
ますよね? イベントハンドラはどこから呼ばれてどこに戻るんですか。
たとえば、フォームのうえでマウスを動かすとOnMouseMoveとかが呼ばれますけど。
Windowsメッセージを受け取る
 ↓
 VCLがイベントごとに振り分ける
  ↓
  登録されたハンドラ(OnMouseMoveとか)を呼ぶ
  ↓
 VCLの残りの処理
 ↓
メッセージループに戻る

Pro版以上ならデバッグ版dcuを有効にしてトレースすれば一目瞭然
963892:02/12/02 14:48
895,900,901
ありがとうございました、解決しました。
>>962

ありがとうございます!

>メッセージループに戻る

とは、このメッセージループから、VCLのコードを通して呼ばれていると。
最初の

>VCLがイベントごとに振り分ける

windowsメッセージからどうしてVCLのForm1あてのメッセージだと分かるんでしょうか
>>964
これ買え。
http://www.ascii.co.jp/pb/msp/36001/36001.htm

Windows3.1用とかの古本でもいいけど。
>>965

その本にはVCLのことも載ってるんですか?
>>955
スマートなやり方は知らないど、こんな感じで動きますた。
var
Contents: string;
BA: array of Byte;
i: integer;
Len: integer;
a, b: string;
Flag, TFN, PD: OleVariant;
begin
a := HTTPEncode('あはは');
b := HTTPEncode('うふふ');
Contents := 'A=' +a +'&B=' +b;
Len := Length(Contents);
SetLength(BA, Len);
for i := 0 to Len-1 do
begin
BA[i] := Byte(Contents[i+1]);
end;
PD := BA;
WebBrowser1.Navigate('http://hoge/hoge.cgi', Flag, TFN, PD);
end;
>>966
CでWindowsアプリを書くための本だから全く載ってない。が、
>windowsメッセージからどうしてVCLのForm1あてのメッセージだと分かるんでしょうか
は理解できるようになると思う。
969965=968:02/12/02 16:17
Halbow氏の
ttp://halbow.cool.ne.jp/ShousaiIndex.html
というテキストもあるけど、これだけで理解できるかなあ・・・。
DelphiだけどVCLは使ってない。
>>968

ありがとうございました。紹介された本やWEBページなどで基本を勉強してみます。
とっかかりを教えてくれて、とてもうれしいです。
971946:02/12/02 20:08
>>967
ありがd!

さっそく試しますた。
しかしHTTPEncodeが未定義のエラーでコンパイルが通りませんでした。ギャフン
パーソナル版ではHTTPapp無いのね…

今からIndyで書き直してみることにします(´・ω・`)
972デフォルトの名無しさん:02/12/02 20:25
Internal Application Error
内部アプリケーションエラー
Unable to complete network request to host "***.***.***.***". Error writing data to the connection. 既存の接続はリモート ホストに強制的に切断されました。

でアカウントとれないんですけど。
973デフォルトの名無しさん:02/12/02 22:43
次スレ(屮゚Д゚)屮 カモーン
974デフォルトの名無しさん:02/12/02 22:51
>>974
VBスレじゃんか
相談室が過疎化してるから相談室行きでいいんじゃね?
http://pc3.2ch.net/test/read.cgi/tech/1037146781/
>>971
HTTPEncodeのソースは探すといろんなところに有るですよ。
こことか。
ttp://www.scalabium.com/faq/dct0126.htm
それにIndy使うにしてもHTTPEncodeは必要な罠。
>>977
つぅか16進文字列変換だからスクラッチしても大した手間じゃないわけで。
>>978 その大した手間じゃない事が出来ない奴が増えてるんだよな
数年前に自前で四則演算出来ない奴が増えたなと思ってたけど、今は16進変換みたいな
簡単なレベルでつまづいてるみたい。
字刷れ・・・
>>979
生産性の向上は商業的には大切な要素だけど教育的には駄目駄目だな。と。
愚痴はフサスレで>ジジィ連中
んで、君はなぜ仕切りたがるのかな?

こっちは終わりだから駄文で埋めよう。

フサギコ Gが二つできちゃったけど、あれもそれぞれ次スレができていくんだろうなぁ。
マ板のフサギコBがまだ生き残っているし、どうなっちゃうか。楽しいけどね。

スレタイに Delphi.NET を入れてしまう。という手もあるかな?
できれば DelWiki 専用スレが欲しいが、当分は間借りということになるのでしょう。
>>984
「ジジィ」が気にさわったか?w
ケツの青い若造に煽られても、誰も動じないよ。ケケ
988
989
990
991


992
993
994
995
996
999!
ばーか
2get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。