トップページ⇒tech
1001コメント314KB

くだすれDelphi(超初心者用)その20

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その19
http://pc5.2ch.net/test/read.cgi/tech/1097454588/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさんNGNG
<過去ログ>
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
0004デフォルトの名無しさんNGNG
4様
0005デフォルトの名無しさんNGNG
5様
0006デフォルトの名無しさんNGNG
ゲームで、ハイスコアランキングを作りたいと思っているのですが、
肝心のソート方法がわからないです。

TStringList.Create
LoadFromFile
Add
ソート
SaveToFile

記録する内容は、スコア、名前、日付なんですが、
この3つをひとまとまりにして、
スコアで降順ソートというのはどういう方法が考えられるのでしょうか。

Addするときコンマ区切りにして、
ソートできる二元配列のようなものに読み込むのか
そもそもそういったものが存在するのかもわからないですが。
0007デフォルトの名無しさんNGNG
同じことをさせるのにどの手法が高速なのかを教えてくれるサイトありませんか?
caseとかinとかposとかforとかwhileとか汎用的なのを。
0008デフォルトの名無しさんNGNG
>>6
TStringList 使うよりも
スコア、名前、日付を扱うレコードやクラスを作って
TList や TObjectList で管理したほうがいいんじゃ?
0009デフォルトの名無しさんNGNG
ソートするならTListがいいっしょ。
あれのソートはピボットソートだから、速度も問題ない。
0010前スレ927NGNG
Memo1が未定義の識別子ってでるんですが
0011デフォルトの名無しさんNGNG
>>10
コンポーネントのMemoをフォームに貼り付ければ良いかと。
Memoの名前が「Memo1」なら、問題無いかと。
0012デフォルトの名無しさんNGNG
だから何だ。
問題あるなら定義すればいいじゃないか。
0013前スレ927NGNG
今度は「レコード、オブジェクトまたはクラスのいずれかが必要です」
がでました
0014デフォルトの名無しさんNGNG
一回フォームに貼ってから消したりしたんじゃないのか。
だったら、もう一回コンポーネントを貼って前のと名前を合わせろ
0015デフォルトの名無しさんNGNG
926 :デフォルトの名無しさん :04/11/27 21:02:25
    >>923
    違う。
    例えば Delphi は VB.NET に比べてあらゆる面で極めて劣っており、
    どんなに優秀なプログラマーであっても Delphi を使えばまともなアプリは作れず、
    どんなに劣悪なプログラマーであっても VB.NET を使えばすばらしいアプリが作れる。
0016デフォルトの名無しさんNGNG
>>2-15
いいかげんにパトラッシュの飼い主。
0017ななしへたぐらま ◆XcB18Bks.Y NGNG
>1 乙鰈様

>前スレ968
私もちょうどそんなプログラムを作っているところです.
右も左もわからぬ素人で試行錯誤の連続という状態で答えるのなんですが,
FTPの仕様とFTPソフトの動作を参考にしてこんな感じで作っています.

・接続が確立したらサーバーがクライアントにパスワード要求メッセージを送信.
・クライアントはパスワード要求メッセージを受け取ったらユーザーにパスワードを入力させてそのパスワードを送る.
 (あるいはあらかじめ用意してあるパスワードを送信する)
・パスワードが正しかったらうまくいった旨のメッセージを送信,違ったら失敗の旨のメッセージを送信して接続解除.
・サーバーは正しいパスワードを受け取るまではその他の命令は受け付けない.

>>7
そういうサイトは知りませんが,言語ガイドがある程度参考になると思います.
なお.一般的用途ならそれらの差は誤差の範囲なので気にする必要は無いと思います.
(ただし繰り返し処理の場合,ヘルプにあるように処理の前に回数が確定している場合はfor文を使うのがよいと思います)
むしろ時間のかかる同じ処理を無駄に何回も繰り返して実行しないかどうかを見たほうがよいと思います.
0018デフォルトの名無しさんNGNG
MSDOSのコマンドをDelphiで実行したいのですが… m(_ _)m
0019デフォルトの名無しさんNGNG
>>18
いいよ。許可する
0020デフォルトの名無しさんNGNG
TStringListで、値を入れる際に、
'あ'のように文字が入っていると大丈夫なのですが
''のように文字が入っていないとエラーが発生してしまいます。
どうしてなのでしょうか・・・
0021デフォルトの名無しさんNGNG
>>20
いいよ。許可する
0022デフォルトの名無しさんNGNG
ないものには代入できないでしょ。
項目を増やすには Add 、すでにある項目の内容を変更するには代入。
0023デフォルトの名無しさんNGNG
>>8-9
ありがとうございます。
TObjectListを使う方向で試してみます。
0024デフォルトの名無しさんNGNG
初めまして。Delphi 7 pro を使っています。

ExtListView について、どなたか教えて下さい。

ListViewに2万個のファイルを表示したところ、とても遅いので

ExtListView 3.72(改) http://phxmail.sourceforge.net/comp/extlistv_d7.zip

を落としてきて登録して使ってみたのですが、使い方がまるでわかりません。
上のzipはDelphi5用のものをDelphi7用に修正したものだそうで、ちゃんとコンポーネントの
登録はできたのですが、付属のデモはDelphi5用のままらしく, コンパイルすらできません。

どなたかこのzip付属の testvm の修正の仕方をご存じないでしょうか?

なぜか、Delphi5でもコンパイルできませんでした。
エラーメッセージは
「FileList.OnVMCacheHint が参照しているメソッドFileListVMCacheHintの
パラメータリストが一致しません。メソッドへの参照を削除してもよいですか?」
です。

002520NGNG
>>22
レスありがとうございます。
>すでにある項目の内容を変更するには代入。
の際に、「'あ'」であらかじめ入っているところを「''」に置き換えようとすると
エラーになってしまうのです。
何かしら入らないといけないのでしょうか?
0026デフォルトの名無しさんNGNG
ListViewも自前でデータ管理すれば2万くらい軽くいけるぞ。
0027デフォルトの名無しさんNGNG
OwnerData=trueなら楽勝だな
0028デフォルトの名無しさんNGNG
>>18
ShellExecute
0029前スレ927NGNG
Memo1はstringで定義すればいいんですか
0030デフォルトの名無しさんNGNG
>>25
関係あるコードをここにアップしてみて。
0031デフォルトの名無しさんNGNG
なかさぁ、入門サイトで2,3時間勉強したほうがはやいよ
0032デフォルトの名無しさんNGNG
>>24
もし将棋板の某氏だったら(,,゚Д゚) ガンガレ!
0033デフォルトの名無しさんNGNG
Windowsのシステムに関するスレが無かったのでこちらで教えてください。
DelphiやVBからゴミ箱を空にしたり最近使ったファイルの履歴を空にしたいのですが、
こう言うことをやることは出来ますか?

もし出来るのでしたらやり方を教えてください。
WinFAQとかをゴミ箱やレジストリで検索したのですが見つからなかったので。。。
0034デフォルトの名無しさんNGNG
>>16
お... おじいさん?
0035デフォルトの名無しさんNGNG
>>33
http://homepage1.nifty.com/MADIA/delphi/Win32API/RecentDocs.htm
http://homepage1.nifty.com/MADIA/delphi/Win32API/RecycleBin.htm
0036デフォルトの名無しさんNGNG
>>33

Win32API スレへどうぞ
0037デフォルトの名無しさんNGNG
>>35
ありがとうございますた。
0038デフォルトの名無しさんNGNG
>>34
意味がわかってワラタw
そうか「パトラッシュの飼い主」は「おじいさん」だw
0039デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
004024NGNG
>>26 >>27

情報ありがとうございました。いろいろ調べてみます。
(ownerdataもやり方がよくわからないので)
0041デフォルトの名無しさんNGNG
ネロはパトラッシュの何なの?
0042デフォルトの名無しさんNGNG
>41
真・女神転生3で全滅したらあがってくるスレその13
http://game9.2ch.net/test/read.cgi/gamerpg/1100604186/
0043デフォルトの名無しさんNGNG
x分の1の確率で、何かを実行するっていうのは、
こういう感じでいいんでしょうか。

例えば、1/1000(1000秒に1回)の確率で
ShowMessageでHELLO!と出すには、

procedure TForm1.Timer1Timer(Sender: TObject);
var
x: Integer;
begin
Randomize;
x := Random(999);
if x = 123 then ShowMessage('HELLO!');
end;

どうも偏りが出る気もするんですが、
精密さを上げるために方法はあるんでしょうか。
0044デフォルトの名無しさんNGNG
毎回Randomize呼ぶなよ。
最初に一回で十分。
0045ななしへたぐらま ◆XcB18Bks.Y NGNG
毎回呼ぶせいで偏りが出ているのかもしれませんね.
あとRandom(999)では確率が999分の1になってしまいます.Random(1000)に.
0046デフォルトの名無しさんNGNG
>>44-45

それで試してみます

不勉強ですいません
ありがとうございます
0047デフォルトの名無しさんNGNG
DLLをリソースファイルでEXEに埋め込むことはできますか?
具体的にはどうすればできるでしょう。
0048デフォルトの名無しさんNGNG

[Delphi-ML:82731] リソースとしてEXEに埋め込んだDLLの利用法について
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=082731
0049前スレ917NGNG
未だ設定方法が分かりません。
よろしくお願いします。
0050デフォルトの名無しさんNGNG
>>49
前スレが見えない。
0051前スレNGNG
VBAだかEXCELのヘルプ読むかしかるべきスレで聞けって気もするが。

917 名前:デフォルトの名無しさん[sage] 投稿日:04/11/24 11:57:59
MDBからデータを読んでExcelファイルに書き込むPGを組んでるんですが、
書き込んだセルの文字色を変えるのは可能でしょうか?
0052デフォルトの名無しさんNGNG
>>49
XlsApp.Selection.Font.color= RGB(255,0,0)
でどうでしょう?文字は赤くなると思いますが。
RGB関数の使い方やcolorプロパティの詳細は、ビジュアルベーシックエディタのヘルプで見てください。
デルファイからエクセルをコントロールする場合、エクセルでマクロを記録して、
ビジュアルベーシックエディタを起動してコードを確認して、読み替えてディルファイに
コーディングしたほうが早いと思います。
005324NGNG
>>27

どうもありがとうございました。OwnerData = true にしたら
10倍ぐらい速くなりました。

感謝感謝です。
0054Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  お茶どうぞ
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)  旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]

スマートクライアントていうのでしょうか。
Windowsに対するWindowsUpdateのように
アプリ自身で自分の最新版を取得してきて
自動でVerUpを行うような仕組みは
どのように作るのでしょうか。

実装したり、紹介していたりする所
教えてください。
0055デフォルトの名無しさんNGNG
自前でやるなら
1.更新のチェック
2.(あれば)差分のダウンロード・展開
3.本体(main.exe)の起動
を行う小さなexe(boot.exe)を用意すればいいだけ。

.NETFWやInstallShield最新版にその機能があったはず。
0056デフォルトの名無しさんNGNG
ごみ箱を空にする方法は無いでしょうか?
>>35で教えてもらったのですが、このリンク先の通りにやってもExplorerが
ファイルの削除の確認のダイアログを表示してしまいます。
何も表示せずに消すだけのプログラムを作りたいのですがうまくいかなくて。
これを回避する方法があったら教えてください。

あと、Formも何も表示せずにごみ箱を消すにはどうしたらいいのでしょうか?
今はForm1.OnCreateにごみ箱を空にするソースを書いて、Form1.OnActivateにClose
だけを書いているのですがうまくいきません。

どなたかアドバイスください。
0057デフォルトの名無しさんNGNG
del \RECYCLER\* /s /q
0058デフォルトの名無しさんNGNG
>>56
>ファイルの削除の確認のダイアログを表示してしまいます。

最後のパラメータに SHERB_NOCONFIRMATION をつまり 1 を設定する。
プログレスや音もなしにするなら7を設定

>あと、Formも何も表示せずにごみ箱を消すにはどうしたらいいのでしょうか?

コンソールアプリを作ったことないの? Hello,World! くらいやっとけば
0059デフォルトの名無しさんNGNG
>>56
コードをProject1.dprに直接記述。
Form1のFormCreatは、コメントアウト。

よくわからないなら、デザイン時にForm1のVisibleをFalseにして、
Form1.OnCreateでも念のため、VisibleをFalseにする。
0060デフォルトの名無しさんNGNG
>>59
フォームを一切使わないなら無駄に実行ファイルサイズが大きくなるだけじゃない?
コンソールアプリケーションでプロジェクト作って、APPTYPE CONSOLE を消せばよいのでは。
0061デフォルトの名無しさんNGNG
どうもdelphiの初心者です
delphiでMSのSQL2000のデータ型がncharの項目(たとえばtest)に
strX=qry1.FieldByName('test').AsString;
「項目’test’が見つかりません」とのメッセージが出てきて、
(ほかのnchar以外の項目は問題ありません)
どなたさんがdelphiからnchar型のデータを
アクセスできる方法をご存知でしたら、教えてください。

0062デフォルトの名無しさんNGNG
>>61
strX=qry1.FieldByName('test').As WideString;
だと思う。やったことないけど。
nchar型は、ユニコードの固定長文字列だよね。
0063デフォルトの名無しさんNGNG
>>58
> コンソールアプリを作ったことないの? Hello,World! くらいやっとけば

普通の初心者はコンソールアプリなんか作らん罠。地味だし。
やっぱりフォーム作ってグリグリ動かして〜 に行くのが人情。
そもそも「コンソールって何?」だったりするしな(w
0064デフォルトの名無しさんNGNG
>>63

そうだね。普通の初心者は文法もクラスのなんたるかも知らずに始めるんだよね。
だから、すぐ限界が来るんだけどね。コンソールアプリを一つくらいつくっておくのも
いいと思うけどね。
0065質問NGNG
ボタンなどの上にカーソルを動かした際に、そのボタンについての説明が出てくるように表示したいのですが
これはどうすればいいのでしょうか?
Delphi 6 personalを使用しています。
0066デフォルトの名無しさんNGNG
>>65

HintとShowHintプロパティ
006765NGNG
作成途中ではなく、実行時の場合についての説明表示というのを書き忘れました。
0068デフォルトの名無しさんNGNG
>>66
できました!
ありがとうございました。
0069デフォルトの名無しさんNGNG
メディアプレーヤーコンポーネントを使ってMID形式の音楽を流すことができるようになったんですけど、
このボタンを見えないように隠して、
たとえばビットマップオンクリックイベントを押した際にメディアプレーヤーコンポーネントを経由して
音楽を流す方法はないでしょうか?
仮にこれが可能だったとして、メディアプレーヤーコンポーネントボタンを隠す際も、
ただ何かの下に隠すだけでなく姿さえも見えなくして使う方法はないでしょうか?
0070デフォルトの名無しさんNGNG
>>69
MediaPlayer1.Play;

Visible:=False;
0071デフォルトの名無しさんNGNG
Delphiでモデムの設定を削除する方法はないでしょうか?
今はキーボードで模擬しているのですが、スマートに削除したいと思いまして。

ネットカフェでの使用を想定しています。
0072デフォルトの名無しさんNGNG
>>70
できました。
ありがとうございました。
007369,72NGNG
問題が発生しました。
友人のパソコンに音楽と一緒に圧縮ファイルを送信しても正常に動くかどうか確認してもらったところ
エラーが発生して聞けなかったそうです。
念のため、僕のほうにその圧縮ファイルを送り返してもらって実行してみたところ同じようにエラーが
発生して実行できませんでした。
最初に作ったものは正常に作動したので、たぶん音楽ファイルがどこにあるか参照できなくなったことが原因だと思うのですが、
どうやったらこの問題を解決できるかご存知ないでしょうか?
音楽ファイルは作成したプログラムと同一のフォルダに入れておきました。

0074デフォルトの名無しさんNGNG
>>73
ここで聞く質問じゃなくなってると思う。
そのブツを見れる人間じゃないと答えようがないと思う。
007549NGNG
>>51
ヘルプ探しても分からなかったので……

>>52
ありがとうございます。
結局、
WorkSheet.Range[WorkSheet.Cells[m,n],WorkSheet.Cells[o,p]].Font.Color := RGB(255,0,0)
で対応しました。
あとはセンタリングと罫線を引く事…。

どうにもコード補完が効かないので困ってます……
007673NGNG
わかりました。
他をあたってみます。
0077デフォルトの名無しさんNGNG
ExtractFilePath(Application.ExeName) + 'music.mid'
とかにすりゃいいんじゃないの。
007874NGNG
ああ、最初のはパスが決め打ちってことか。
意味が分かった。
失敬。
007976NGNG
ただいまです。
パソコン一般板でも同様の質問をしたところ追い返されてしまいました( ゚Д゚)・・・
なんというか・・・、Delphiの勉強をはじめて一ヶ月ほどなので、よくわからないことが多いです。

こんな感じの命令文を書きましたがエラーがでてきました。
音楽ファイル名もmusic.midに変更後、File Nameで参照しなおしておきました。
いじったところと言えば、再生ボタンを見えなくしたことと、
Auto Open プロパティをTrueにしたくらいです。
ここに何をつけたせばいいのかどうか教えてください。
参考書を読んでも書いてありません。。。


procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Play;

ExtractFilePath(Application.ExeName) + 'music.mid'

end;

end.


[エラー] Unit1.pas(33): 文が必要な場所に 'String' 型の式があります
0080デフォルトの名無しさんNGNG
うーん。
これは困った(色んな意味で)。
0081デフォルトの名無しさんNGNG
ちょっと入門サイトをのぞいてこい
基本が全く出来てないぞ
0082デフォルトの名無しさんNGNG
>>79
もちっといじってから質問しような。なっ?
大丈夫。すぐ分かる。
がんばれ。
以上。
008379 ◆7kkYm.VmFc NGNG
やっとのことでいろいろな数式を演算するくらいまでは勉強したんですけど、
計算関係分野から離れて、こういった分野に手を出したのは今回が初めてなので、
いまいち定義の仕方などがわかりません。

要注意人物として、今後ともよろしくお願いします。
しばらくチャレンジしてみて解決できなかったら、また質問させてください。
0084デフォルトの名無しさんNGNG
僕もかなりアホな初心者で、ここでは何度か助けてもらったことがあるんで。。。

MediaPlayer1.FileName := 'ファイル名';
MediaPlayer1.Play;

な感じで出来なかったっけ
008579 ◆7kkYm.VmFc NGNG
if文や、セミコロン付け忘れ、文の順序などを検討した結果どれも失敗しました。
次はオンクリックイベント無しで検討してみたいと思います。

>>84
今やってみたところ音楽は流れましたが、
他の人に受け渡しても音楽が流れるかどうかまでは確認できてません。
0086デフォルトの名無しさんNGNG
Delphiというより一般的なオープン系開発の基礎。
相対パスと絶対パスについてぐぐれ。
そのうえで>>77を読み返すのだ。
0087デフォルトの名無しさんNGNG
function hoge(): TStringList;やproperty foo: TStringList;と言ったものを作りたいんですが、
CreateやFreeはどこで呼び出せばいいのでしょうか?
Delphi6 Personalで制作しています。
0088デフォルトの名無しさんNGNG
> function hoge(): TStringList;

Create は関数の中、Free は呼び出した方で、ってなると思うけど、あんまりよい
方法ではないね。なにか操作した結果を TStringList で返したい場合は

procedure Nanika(... ; sl: TStringList);

のようにして、Create も Free も呼び出し側にさせるべきだと思う。

> property foo: TStringList;

この場合は、Create と Free はコンストラクタとデストラクタで。
private フィールドの Ffoo: TStringList という変数にインスタンスを格納し、
それを参照する。

0089デフォルトの名無しさんNGNG
>>87
オブジェクトを返り値とする関数は作らないほうがいい。
リソースのリークが起こりやすい。
プロシジャーで、値を設定する変数も引数で渡すようにする。
あるいは、カスタムクラスの作成。
0090デフォルトの名無しさんNGNG
1つのプログラムを複数起動させて、データの共有をしたいのですが、
MLの過去ログ見てたら戸田ちゃんがTCPを使った方がメモリーの共有より
簡単って事を書いてました。
これってどうやるんでしょうか?

Indyのデモとか見ててもサーバーが必要で、しかもメッセージは
サーバーに行くだけで他のクライアントには行かないようなのです。
長くなりましたが、誰か教えて。
0091デフォルトの名無しさんNGNG
function LoadFromFile(FileName: string): TStringList;
begin
 Result := TStringList.Create;
 Result.LoadFromFile(FileName);
end;

...

sl := LoadFromFile('foo.txt');
try

finally
 sl.Free;
end;
0092デフォルトの名無しさんNGNG
TDatabaseのConnectedがtrueなんだけど接続してるSQL鯖が停止してる、
といった場合、どうやって判断できまつか?
0093デフォルトの名無しさんNGNG
アプリケーション起動時に、どこのディレクトリから起動されたかを知る関数ってありますか?
0094デフォルトの名無しさんNGNG
function ParamStr(Index: Integer): string;
0095デフォルトの名無しさんNGNG
>>93
ない
.dprの先頭ブロックでカレントディレクトリ調べるとか。
0096デフォルトの名無しさんNGNG
まだ相対パスと絶対パスがわからんのかよ
0097デフォルトの名無しさんNGNG
>>94
ありがとうございました
0098デフォルトの名無しさんNGNG
>>97
ParamStr(0)で取れるのはexeのパスであって
作業フォルダ(≒起動ディレクトリ)は取れないぞ。
0099デフォルトの名無しさんNGNG
exeのパスが知りたいんだろ
0100デフォルトの名無しさんNGNG
>>93
GetCurrentDirectory()
0101デフォルトの名無しさんNGNG
'%home%\bin\'
という文字列を環境変数展開して返す関数ってないの?
010287NGNG
答えて下さった方々ありがとうございました。
String型の戻り値をもつ関数で代用できるようにしてみます。
0103デフォルトの名無しさんNGNG
こういうやり方もある。
unit MyLib;

interface
function Foo: TStrings;

implementation

var _Foo: TStrings;

function Foo: TStrings; begin Result := _Foo; end;

initialization _Foo := TStringList.Create;
finally _Foo.Free;
end.
0104デフォルトの名無しさんNGNG
質問があります。

TXPManifest コンポーネントを配置するとXPスタイルになりますが、
これを削除しても元のスタイルに戻らないのですけど、どうすれば
元のスタイルに戻すことが可能でしょうか?
0105デフォルトの名無しさんNGNG
uses XPMan削除とか。
0106デフォルトの名無しさんNGNG
>>105
ありがとうございます、スタイルが元に戻りました。
0107デフォルトの名無しさんNGNG
>>93のことだけど、
ExtractFilePath( Application.ExeName ) ;
じゃなダメなの?
0108デフォルトの名無しさんNGNG
>>107
実行ファイルがあるフォルダとカレントフォルダは別のものです。
0109デフォルトの名無しさんNGNG
>>108
でも>>93が要求してるのは、>>107でいいんじゃないの?
0110デフォルトの名無しさんNGNG
>>97で決着ってことでいいんじゃないの
0111デフォルトの名無しさんNGNG
ファイルを読み込んでそれを10110みたいに表示するにはどうしたらいいのですか?
011279 ◆7kkYm.VmFc NGNG
おはようございます。
0113デフォルトの名無しさんNGNG
おひゃようございまふ
0114デフォルトの名無しさんNGNG
スペース区切りの数字をどうやって取り出せばいいんだ?
(例)
3 2 1
4 5 4
1 3 4
0115デフォルトの名無しさんNGNG
おたずねします。
メニューに項目のない機能にキーボートショートカットを割り当てるにはどうすればいいですか?
0116デフォルトの名無しさんNGNG
>>114
どういう風に取り出したいの?
>3 2 1
なら、’321’と認識したいのか’3’’2’‘1゜としたいのか。

いずれにしても、一行づつ文字列変数に読み込んで、スペースを探して、切り出してTstringlistにADDしていくのが、セオリじゃないか。
ロジックを考えるのが難しいなら、スペースを半角カンマにリプレースして、Tstringgridに流し込むという手もある。
0117デフォルトの名無しさんNGNG
>>115
ActionListとかじゃ駄目?
0118デフォルトの名無しさんNGNG
SendMessage(RichEdit1.Handle,EM_SETOPTIONS,ECOOP_OR,ECO_VERTICAL);
これでスクロールバーをssBoth、ワードラップをFalseにするとスクロールバーが逝かれるんですが、
対処法とかはないですか?
0119デフォルトの名無しさんNGNG
>>117
お答えありがとうございます。
良さそう…な気もしますがよく理解できてないのでヘルプを読んで勉強します。
0120デフォルトの名無しさんNGNG
>>101
ExpandEnvironmentStrings
で事足りるかどうか…
0121ななしへたぐらま ◆XcB18Bks.Y NGNG
>>79
そのままズバリ書くと>>77 と >>84 を組み合わせてこんな感じになります.
procedure TForm1.Button1Click(Sender: TObject);
begin
// ※実行は上から順に行われる.

// 演奏するファイルの指定(実行ファイルと同じディレクトリの'music.mid')
//  ※プロパティの設定は代入式で行う.
//  ※『実行時と同じディレクトリ』は ExtractFilePath(Application.ExeName) .
MediaPlayer1.FileName := ExtractFilePath(Application.ExeName) + 'music.mid';

// 演奏実行
MediaPlayer1.Play;

end;
012279 ◆7kkYm.VmFc NGNG
>>121
偶然にも覗いてる最中にレスがきました。
さっそくためしてみます。
ありがとうございました。
0123デフォルトの名無しさんNGNG
>>122
あれだけ(ほとんど回答レベルの)ヒントが出てたのにできてなかったのか・・・
カンニングばかりしていると何も身につかないぞ。
012479 ◆7kkYm.VmFc NGNG
すみません。
yahooで検索してそれらしきサンプルを落としたりして調べてはみたんですけど
動作しなかったり、見当違いだったり、レベル不相応でまだまださっぱり理解できませんでした。
0125デフォルトの名無しさんNGNG
>>123
カンニングってのは違う気がするが…。

>>124
謝らなくてもいいから。
いろいろ自分なりにコピペでもいいから試行錯誤してれば
段々分かってくるって。
焦らなくても良いかと。
もちっといろいろやってみてからにした方がいいって。
0126デフォルトの名無しさんNGNG
まずはメモ帳作ってみるのがいいような
0127デフォルトの名無しさんNGNG
まずは作りたいものを作ればいいだけだろ。
MIDI再生なんて題材として一番簡単だし>>121で解決だろ。
質問スレでいちいち難癖つけるなよ。
012879 ◆7kkYm.VmFc NGNG
いま学校から帰り着きました。
>>126さんの言われるとおり次はメモ帳を作ってみようかと思います。
試行錯誤法の問題でも解いて結果をメモ帳に出力するところまで進めてみようかと思います。
012984NGNG
断るまでもなくアホな初心者です
タイマーってのを見つけて、思いついたやり方なんですけど
こういうのってPCの体力かなり消耗しちゃいますか?

つくったプログラムは取りあえず最小化状態のまま、
たとえば5秒おきに、ある特定のフォルダ中のファイル数をカウントさせ続ける。
何があろうと、静かにずーっとカウントさせ続けるんです
で、あるとき「そのフォルダ中のファイル数が増えたら」フォームが最大化状態で
ピョコッと飛び出してくる。

ためしたところ、最小化状態でもカウントは続けてくれてるみたいで、ほぼ期待通りの動作を
してくれました。

できればこれ、動画の編集をやりながら使いたいんですけど、PCの体力はもちますか。
(Cele1200MHz, 394MB)
013084つづきNGNG
実際に作業をするのは僕自身ではなく職場の女の子。
途中でPCこけたりすると、かなり頭いたいので、危険なら使うのやめます。
0131デフォルトの名無しさんNGNG
PC爆発するよ
0132デフォルトの名無しさんNGNG
ttp://www.eva.hi-ho.ne.jp/taketani/delphi/file.shtml#0002
013384NGNG
>>132
ありがとうございます
コピペでそのまま試すことが出来ました。
何だか物凄いテク御紹介いただきまして( ゚Д゚)。。。

今晩はもうくたくたなので、明日あらためてこちらの都合に合わせて
書き換えて試してみます
0134デフォルトの名無しさんNGNG
>>127
リピート時に止まらないようにするのは大変だぞ!
0135デフォルトの名無しさんNGNG
ファイルを読み込んでそれを10110みたいに表示するにはどうしたらいいのですか?
ファイルの指定部分を読み込む→それをbitにして表示です
0136デフォルトの名無しさんNGNG
フォームが自分に遅延して処理させたいんですが、
PostMessage(WM_USER)
だと、
あまりにもWin32ベタ杉なんで、
VCLの中の人でやる方法無いで塚?
0137デフォルトの名無しさんNGNG
Timer使うかその処理の直前で
Application.ProcessMessages呼んでたまったメッセージを先に処理する。

>>135
一バイトずつ読み込んでこれで変換
function Bin2Str(b: Byte): string;
var i: Integer;
begin
 SetLength(Result,8);
 for i := 0 to 7 do if b and (1 shl (7-i)) = 0 then Result[i+1] = '0' else Result[i+1] = '1';
end;
0138136NGNG
サンクス>>137

芋みたいに処理を連結したいんでつが、
その場合はどうしたら良いでしょ?
0139デフォルトの名無しさんNGNG
for i := 0 to 10 begin
 Application.Processmessages;
 case i of
  0: // 0の処理
  1: // 1の処理
  ...
  10: // 10の処理
 end;
end;
もっと柔軟にやりたいなら処理をオブジェクトにしてリンクでつないで
o := FirstObject;
while Assigned(o) do
begin
 Application.ProcessMessages;
 o.Execute;
 o := o.NextObject;
end;
0140デフォルトの名無しさんNGNG
PostMessage(WM_USER) による遅延と Application.Processmessages; の実行は
違う意味だよ。そのイベントハンドラを抜けてからほかの処理を実行したい場合は、
タイマやPostMessage() じゃないとダメだろ。
0141135NGNG
>>137
ありがとん
家帰ったらためしてみますです
0142136NGNG
そうでつか。

では、とりあえずPostMessageで作って、他に変えれれば変えます。
Kylixでも大丈夫かな。





使う予定は無いんだけど。
0143デフォルトの名無しさんNGNG
フラグ立ててOnIdleとか
0144デフォルトの名無しさんNGNG
>>140
別に等価だなんていってないよ。
溜まったメッセージを先に処理するVCLでのやり方を紹介しただけ。
0145デフォルトの名無しさんNGNG
違う意味のものを紹介されても・・・
0146デフォルトの名無しさんNGNG
> フラグ立ててOnIdleとか

これは PostMessage() に近いね。自分でフラグ倒すことを忘れないようにすると。
0147デフォルトの名無しさんNGNG
> フラグ立ててOnIdleとか

1回だけ実行なら PostMessage に近いけど、連続での場合は、他のメッセージがキュー
に入らないと実行が止まるね。PostMessage も TTimer もメッセージベースの実装な
わけだが、TTimer はクラスでラップしてあるだけマシかな。PostMessage() の機構も
簡単にラップしたコンポを作れるけど。
0148デフォルトの名無しさんNGNG
使う予定がないそうだからレスするだけ無駄
0149136NGNG
>PostMessage() の機構も簡単にラップしたコンポを作れるけど
超キボンニュ。
今回使えなかったとしても、将来激しく使いまつ。
0150デフォルトの名無しさんNGNG
じゃそのときにまた書き込んでください。
0151デフォルトの名無しさんNGNG
ってか、ML の過去ログにあったはず。Asyncなんとかってやつ
0152デフォルトの名無しさんNGNG
スレ違いの感じもするがお許しを。
D7のアップデートってどこにあるの?
某のリンクたどっても見あたらない。
0153& ◆R7PNoCmXUc NGNG
Pascal ファイル変数を使って開いたファイルに対してタイムスタンプを設定するには
どうしたらいいのでしょう? ヘルプを見たらFileSetDateというのがありますが、これは
Pascal ネイティブなファイル変数ではなく,ファイルハンドルを対象とするとなっているので使え
ないようです。
0154デフォルトの名無しさんNGNG
FindFirstFileしてハンドル取得じゃダメなのか
0155名無しNGNG
質問なんですが、Form1のImage1.OnMouseDownで
btnDraw(Sender);//独自関数
delay(200); //下記
Form2.Visible := not Form2.Visible;
delay(200);
btnDraw(Sender);
とすると、Visible:=Trueとなる場合に(Trueを代入する場合)
一度Form2のオブジェクトにフォーカスが当たるのですが、
その後またフォーカスがForm1に戻ってしまいます。
delay関数でインターバルを設定しているのが
悪いのかどうかは判断できませんでした。

procedure delay(T: Longint);
var
finish: longint;
begin
finish := LongInt(GetTickCount) + T;
repeat
Application.ProcessMessages
until LongInt(GetTickCount) > Finish;
end;
0156金正日NGNG
procedure GetStr(src: PChar);

・・・・

var
 Buf: array[0..2047] of Char; //0から始まっているのがミソ!
begin
 GetStr(buf);
end;

としていいんだよね?
0157デフォルトの名無しさんNGNG
>>155
で、結局どうしたいん?
0158& ◆s6EvxEmmnE NGNG
すいません肝心なこと書いてませんでした(汗)
Form2.Visible:=Trueとしたときに、
Form2(のList1)をアクティブにしたいんですけど…
上の書き方だとForm1がアクティブになってしまうんです。
0159デフォルトの名無しさんNGNG
>>154
それファイルハンドルと違う

FileOpen が簡単かも
0160デフォルトの名無しさんNGNG
>>158

btnDraw(Sender);

がなければ Form2 にフォーカスがあたるけど。
0161150NGNG
btnDrawは自力でボタン描画してるので外せないんです。。。
Form1.Image1.OnMouseDownでフラグを立ててForm2.OnDeactivateで
フラグが立っていればフォーカスをForm2に残したままにする、
みたいなことって出来ませんか?
(Form1.OnClose 内で Action:=caNone とすると終了キャンセルするように)
0162155NGNG
↑間違えた…150じゃなくて155です。
0163デフォルトの名無しさんNGNG
> btnDrawは自力でボタン描画してるので外せないんです。。。

はずせるかどうかは問題ではなく、フォーカスが移るなんらかのコードがあるかどうか
が問題

最後に Form2.SetFocus; したらいいんでは
0164デフォルトの名無しさんNGNG
>>153
テキストファイルならこんなな感じかな?
var
F: TextFile;
Age: Imteger;
begin
Age := 20;
FileSetDate(TTextRec(F).Handle, Age);
end;

型無しファイルだったらTTextRecをTFileRecに置き換えて試してくれ。
0165デフォルトの名無しさんNGNG
Yahoo! JAPAN にログインするプログラムを作りたいのですが
参考になるHPまたはソースってありませんか?
0166デフォルトの名無しさんNGNG
joudannkayo
0167デフォルトの名無しさんNGNG
>>165
モナジラプロジェクト
0168デフォルトの名無しさんNGNG
>>167
一見胡散臭いけど、確かに参考にできる数少ないHPだよな。
0169おれ様専用メモNGNG
多次元配列の要素数の取得

setlength(a,5,21,65);
high(a)     //=4
high(a[0])   //=20
high(a[0,0])  //=64
0170デフォルトの名無しさんNGNG
>>167
できれば詳しく教えていただきたい
0171& ◆iJ3ewyZ4sc NGNG
>>156
var
 S: array[0..6] of Char;
 P: PChar;
begin
 S := 'delphi';
 P := S; //互換性があるので @ 演算子を使わなくて良い
end;
こういう例はOKだが関数や手続きの引数を渡すときは型違いでコンパイラがエラーを出すはず。
0172デフォルトの名無しさんNGNG
Delphiを始めたいのですが勉強にいい本を教えてください。
0173デフォルトの名無しさんNGNG
>>170
モナジラのページは、HTTPのGETメソッドやPOSTメソッドでサーバーにリクエストするときのコードの例が載っている。
そしてそこで開発されているソフトの多くはデルファイでかかれている。
0174デフォルトの名無しさんNGNG
フォームのボタンなどを配列のように扱いたいのですが、どのようにすればよいですか?
0175デフォルトの名無しさんNGNG
array of Tbutton
0176174NGNG
>>175さん
そこまではできるのですが、
for i := 0 to 100 do
arraybtn[i].caption:=inttostr(i);
とした場合、フォームに配置されたボタン1〜100に対応させる方法がわからないのです。
formbutton1:=arraybtn[1]
を100回繰り返さないとダメなのでしょうか?
0177デフォルトの名無しさんNGNG
FindComponent
0178デフォルトの名無しさんNGNG
>>165
まず、YahooのログインページのHTMLソースを見る。
すると、ログイン処理がHTMLのFormで記述されていることを理解する。

次に、Formの処理というものはHTTPではPOSTメソッドが使われることを
理解する。

最後に、DelphiでHTTP通信するときはIndyを使うのがもっとも簡単であり、
TIdHttpコンポーネントのPostメソッドを使うことを理解する。
0179デフォルトの名無しさんNGNG
jpeg.pasが見つからないんだけど、これはソースなし?
0180デフォルトの名無しさんNGNG
>>172
DelWiki (>>1) には行ってみた?
あと、今なら「カンタン!Delphiプログラミング」がヤフオクに一冊だけ出てる。
0181デフォルトの名無しさんNGNG
>>178
できたらソースを。。
0182デフォルトの名無しさんNGNG
結局それかぁ
0183デフォルトの名無しさんNGNG
タグブラウザを作っているんですが、WebBrowser及びUIWebBrowserでは
クッキーが働いてくれず、ホットメールなどのサイトが表示できません。
解決策か、もしくは他に代替となる良いブラウザコンポーネントがあれば
教えて頂けないでしょうか?同じIEベースであろうSleipnirでは正常に
表示できるんですが、そこらへんどうなんでしょう?
0184デフォルトの名無しさんNGNG
Google 検索: タグブラウザ
http://www.google.com/search?&hl=ja&lr=lang_ja&ie=sjis&q=%83%5E%83O%83u%83%89%83E%83U
0185デフォルトの名無しさんNGNG
>>183
単に設定の問題じゃないのか?
クッキーにも対応してないブラウザコンポーネント・・。う〜〜ん。
0186デフォルトの名無しさんNGNG
>>185
検索してみたら同じような症状っぽいのがありました。
ttp://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=3485

環境の問題かも知れないので、いろいろ試してみます…
0187Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  オアヨ
⊂,,,,,,,,,つ,,゚Д゚ミつ
質問っす。

HDDの容量・空き容量を調べたかったりしますが
OSに依存しない&2GB以上もOKってコードを書くのは
DiskFree/DiskSizeをつかっててOKなのですか??
GetDiskFreeSpaceExとか使う必要はなし?

同様に、利用可能デバイス中から
フロッピーとリムーバブルDiskを区別する方法で
OSに依存しないコードはどう書くのでしょうか?

どちらも
MLを検索しまくったり、WEBを探してみても
情報がぐちゃぐちゃに散在していてわかりませんでした。

教えてください。よろしくです。
0188デフォルトの名無しさんNGNG
APIカリカリが確実な希ガス
Winのバージョン調べていけそうな(95OSR2以降な)場合だけ云々とか。

OSってWin系だよね。Kylixは関係ないよね。
0189デフォルトの名無しさんNGNG
ライブラリで抽象化されていなければ、OS依存な情報はOS依存な機能をつかって
取るしかないわけだが
0190デフォルトの名無しさんNGNG
質問があるのですが、
Delphi6 PersonalでFormを生成し表示するプログラムだけで、
exeのサイズが400kになってしまいます。

実行時パッケージを使って構築にチェックを入れると、
exeのサイズは小さくなりますが、この場合、外部のDLLも必要になってしまいます。
上以外の方法で、exeサイズを縮小する方法は何か無いでしょうか。

よろしくお願いします。



0191デフォルトの名無しさんNGNG
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTips%2F%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%A5%D5%A5%A1%A5%A4%A5%EB%A5%B5%A5%A4%A5%BA%A4%AC%C2%E7%A4%AD%A4%A4%A4%CE%A4%C7%A4%B9%A4%AC%5D%5D
0192デフォルトの名無しさんNGNG
>>190
「小さいEXEの作り方」という解説ページがあるはず。ググッてみ。
基本的には、Tformクラスを使わずに、すべてコードで書くことになる。
0193デフォルトの名無しさんNGNG
Halbowさんのところで学べ。
彼の技法を使えば190のexeは10KB以下で作れる。
0194デフォルトの名無しさんNGNG
>>190
小さいサイズの実行ファイルを作ることが絶対必要なら VCL 使わずに SDK だけで書くこと。
でもそんな要求って滅多にないんだよね。
400KB なんてたいしたサイズじゃないと思う。
0195デフォルトの名無しさんNGNG
そうそう、問題はソフトの機能だ。
0196デフォルトの名無しさんNGNG
で、タグブラウザってどんなブラウザなの?
0197デフォルトの名無しさんNGNG
スレ違い
0198デフォルトの名無しさんNGNG
>>183に書かれてたから聞いてみただけでした。
すんまそん
0199デフォルトの名無しさんNGNG
タグブラウザってのは、ウェブサーバーから HTML を読み込んでHTML タグを表示するやつだ。
ちなみに画像ファイルの場合は 16 進表示をしてくれる。
まぁ、最近ではウェブデザイナ必携のツールだな。
0200デフォルトの名無しさんNGNG
質問です。フォーム上にCombobox1とButton1, Combobox2とButton2・・・というふうに
コンボボックスとボタンが1対1の関係になっていて、各ボタンをクリックしたときにそれぞれ対応する
コンボボックスの内容をフォーム上に唯一存在するラベル(Label1)に表示するようにしたいと考えています。

ここで下のようなコードを書いてみたのですが、<<ここがわからない>>の部分にどのように記入すればいいのか
わかりません。どなたか御教授願いします。

procedure TForm1.Button1Click(Sender: TObject);
begin
Dpy_ComboBox_Name(combobox1.Name);
end;

//<略>

procedure Dpy_ComboBox_Name(ComboName:<<ここがわからない>>);
begin
Label1.Caption := ComboName.text;
end;
0201デフォルトの名無しさんNGNG
190です。
皆さんありがとうございます。
教えていただいたことを参考に腕を磨いていきます。

ありがとうございました。
0202デフォルトの名無しさんNGNG
>>200
あなたのコードとちょっと違うけど、こんなのはどう?
前提条件としてデザイン時に.ButtonコンポーネントのTagプロパティに.Button1なら1、.Button2なら2を設定しておきます。

procedure TForm1.Button1Click(Sender: TObject);
begin
 label1.caption := 'This is Combo-Box No.'+IntToStr( TButton(Sender).tag );
end;

Senderは、Tobjectなので、TButtonに型キャストしてTagプロパティを読み出します。


0203デフォルトの名無しさんNGNG
>>202
かき忘れたけど、Button2のイベントハンドラもButton1と共有できます。(そうしないと意味がない。)
0204デフォルトの名無しさんNGNG
// Component.Nameの数値を取り出す
// 'Button1'->1
// 'Button'->0
function GetComponentNum(Name: string): Integer;
var
  i: Integer;
begin
  for i := Length(Name) downto 1 do
  begin
    if Name[i] in ['0'..'9'] then
      continue;
    Result := StrToInt(Copy(Name, i+1, High(Integer)));
    Exit;
  end;
  Result := 0;
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
  idx: Integer;
  cb: TComboBox;
  lb: TLabel;
begin
  idx := GetComponentNum((Sender as TComponent).Name);
  Assert(idx>0);
  cb := FindComponent('ComboBox' + IntToStr(idx)) as TComboBox;
  Assert(Assigned(cb));
  lb := FindComponent('Label' + IntToStr(idx)) as TLabel;
  Assert(Assigned(lb));
  lb.Caption := cb.Name;
end;
0205Delフサギコ ◆A6VzDeLphI NGNG
>>188-189
 ∫,,,,,,,,,∧,,∧  OSはWin系です
⊂,,,,,,,,,つ,,゚Д゚ミつ

どこかの誰かがライブラリ化して関数とか
作ってないっすかね・・・

ご近所だけ使うアプリだから、
リムーバブル&Aドライブなら
フロッピーと限定しちゃっていいような肝するのですが。
興味として。
0206200NGNG
>>202-204
ありがとうございます。もともとの質問の意図ですが、Comboboxに文字列を記入し
Buttonを押したときに、それまでのコンボボックスに記録した文字列と比較し、一致するものがなければ
コンボボックスのリストの最後に追加する、という作業を行おうと考え 単一のボタン、単一のCombobox
ではうまくいったものの、完成品には1つのボタンには2個のComboboxこれが5セット分あり合計10個分
のほぼ同じコードを記述するのも無駄に感じたため、質問させていただきました。

いただいたコードでゴリゴリやってみます。ありがとうございました。
0207デフォルトの名無しさんNGNG
ShellListViewコンポーネントについて質問です。
MultiSelectedをTrueにして、複数ファイルを選択したときの選択しているファイルの数を取得したいのですが、
どのプロパティを使えばいいのかわかりません。
自分なりに検索したり、ソースを読んだりして、Folders[Index]がポイントだというところまではわかったのですが、
そこから先がさっぱりです。
Folders[Index]という表現からして、TstringsオブジェクトのようなCountプロパティに相当するものがあると思うのですが。
どなたか詳しい方よろしくお願いします。
0208デフォルトの名無しさんNGNG
GetDriveType
ttp://homepage1.nifty.com/MADIA/delphi/Win32API/GetDriveType.htm

95以降なら大丈夫だろ。っていうか大丈夫。MSDNでもそうかいてある。

容量は…面倒だな…

GetVersionExで、バージョン判定した後に95OSR2以降なら
GetDiskFreeSpaceExで
それ以前なら
GetDiskFreeSpace
ってところか。

(DiskFreeの実装知らんのけど2G未満でしかうまく動かないという話もあるので
上記のようにする必要があると思う。)
0209デフォルトの名無しさんNGNG
>>205
ttp://homepage1.nifty.com/kotobukijirushi/ddt/bcbonsun/bosvol07.html
BCBだけど参考になると思う。
0210208NGNG
ゴメン
フロッピーとリムーバブルディスクの区別つかないや。
0211デフォルトの名無しさんNGNG
>>207
SelCountでは駄目なのかなぁ・・・
0212Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧   レスありがとやんす!
   ,,ミ,,゚Д゚ミ
  .とミ,,,,,U,,U

>>208さん。そうなんすよ
うまくいかんのですよ。

>>209さん
ヲォ!日曜日はBCBは行方不明&消去になったと
思ってました。
よかったー、いまのうちに(σ・∀・)σゲッツ!しとこうかと。

後で呼んでみます。
0213デフォルトの名無しさんNGNG
>>211
Selcountで、取得できました。
ありがとうございました。
0214デフォルトの名無しさんNGNG
cmd.dirの標準出力を取り込むw
>903,270,400 バイトの空き領域
0215デフォルトの名無しさんNGNG
>208,>212
Delphiのバージョンにもよるけど、5以降ならOSの違いはVCLで吸収しているので素直にDiskFree/DiskSizeでOK
っつうかソース嫁
FDの識別は...リムーバブルかつFAT12という条件でどう?
0216208NGNG
>>215
ソース読めれば(ry

そもそもDel使いじゃない罠。

> FAT12
それだとディスク入ってないと判定できなくね?
0217デフォルトの名無しさんNGNG
SHGetFileInfo() はドライブにも使えるよ
0218Delフサギコ ◆A6VzDeLphI NGNG
      ドモー。
 ∫,,,,,,,,,∧,,∧  情報が散在してて
⊂,,,,,,,,,つ,,゚Д゚ミつ  正解がどこにあるかわからないのに

  "VCLソース呼んで解決することができる"ほどに賢くはないから、
  質問して確認しているんだが。くだすれで。

D6で
SysUnils.pasにコメントで書いてあるのね。

{ The GetDiskFreeSpace Win32 API does not support partitions larger than 2GB
under Win95. A new Win32 function, GetDiskFreeSpaceEx, supports partitions
larger than 2GB but only exists on Win NT 4.0 and Win95 OSR2.
The GetDiskFreeSpaceEx function pointer variable below will be initialized
at startup to point to either the actual OS API function if it exists on
the system, or to an internal Delphi function if it does not. When running
on Win95 pre-OSR2, the output of this function will still be limited to
the 2GB range reported by Win95, but at least you don't have to worry
about which API function to call in code you write. }

えっと、英語よめない。後半とかあまりヨクワカ.......

肝心なのは最後の一文か。。。
0219デフォルトの名無しさんNGNG
Del6のIDEで
beginって打った時に
→→→→|
に自動的にインデントさせる設定ってないですか?
ないとして最新バージョンだとできたりしますか?
0220Delフサギコ ◆A6VzDeLphI NGNG
さて、フロピかリムバですが

 ∫,,,,,,,,,∧,,∧  MLでは、
⊂,,,,,,,,,つ,,゚Д゚ミつ "マイコンピータのシェルのアイコンから区別できんじゃね?"

という人もいたみたいだけど、
明確な回答は出ていなかったかと、記憶してるです

・・・空容量チェックか・・・
フロッピー、遅いからコリンコリンとアクセスしにいって
ほしくないのですが・・・
0221デフォルトの名無しさんNGNG
SHGetFileInfo() でフロッピーなら szDisplayName でエクスプローラと同じ
表示名が取れるよ
0222Delフサギコ ◆A6VzDeLphI NGNG
szDisplayName でググったらでてきますた
http://forum.nifty.com/fdelphi/samples/01432.html

 ∫,,,,,,,,,∧,,∧  ホワワ
⊂,,,,,,,,,つ,,゚Д゚ミつ >>221さん、夜遅くにありがおう。

function IsFDDrive(const ADrive: Char): Boolean;

これかしら?

Pos(' FD (', UpperCase(fi.szDisplayName)) > 0

なるほ・・・
0223デフォルトの名無しさんNGNG
>>221
それって言語(ロケール)依存しないの?
0224デフォルトの名無しさんNGNG
>>221
「エクスプローラと同じ」って意味では依存しないのでは
0225デフォルトの名無しさんNGNG
>>223 だった
0226sageNGNG
いや、すべてのロケールでFDDのアイコンのテキストは
' FD (' を含むのか、ってことでは?
0227226NGNG
_| ̄|○ 書くとこ間違えたゴメソ
0228デフォルトの名無しさんNGNG
>>226
それなら >>222 にきいてみたら。自分の周りだけのアプリだそうだから、それで十分なんでは
0229デフォルトの名無しさんNGNG
>>48
ものっ凄い遅レスですがうまくいきました。ありがとうございました。
0230ななしへたぐらま ◆XcB18Bks.Y NGNG
>>218
5のソースを見る限り,関数ポインタさえ理解していれば難しくは無いと思います.
また,英文は翻訳サイトが案外役に立ちますよ.
0231名無し募集中。。。NGNG
最近、Delphi4から7に乗り換えたのですが
メニュー間隔がスカスカなのとセンスの欠片もないスピードボタンにガッカリです

どうにかしてDelphi4の引き締まったインターフェイスに戻すことは出来ないのでしょうか?
0232デフォルトの名無しさんNGNG
>>231
1. Delphi7をアンインストール
以上
0233デフォルトの名無しさんNGNG
>>207

con := 0;

for i :=0 to ListView.Count-1 do
begin
if ListView.items.item[i].selected then
con := con + 1;

end;

とかで一応なんとか
でもスマートじゃないよね?
0234231NGNG
>>232
了解しますた。
やっぱそれしかないんですね
0235215NGNG
>216
> > FAT12
> それだとディスク入ってないと判定できなくね?
ぎくっ

>220
これ参考になりませんかね?
ttp://forums.belution.com/ja/vc/000/078/05.shtml
0236Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  漏れに聞いても仕方ないでしょ
⊂,,,,,,,,,つ,,゚Д゚ミつ >>228

質問の回答ってのは
質問者の漏れだけに役に立つ会話じゃないんだから。

漏れもロケールのトコは気にしてなかったけど、気になってきた。
0237デフォルトの名無しさんNGNG
ロケールは別にしても名前の変更で簡単にFDを消すことはできる。
0238デフォルトの名無しさんNGNG
'49たす83'を音声に変換するのってどうやるの?
0239デフォルトの名無しさんNGNG
>>238
ブルックナーの第8交響曲を聴いた後、秋田馬方節を歌えばよい!
0240デフォルトの名無しさんNGNG
>>235 のレジストリで行けるのでは?
表示用の文字列はロケール依存激しいと思う。
右から書く言語もあるしね。
0241デフォルトの名無しさんNGNG
>>238
すべての発音を入れておく。
0242デフォルトの名無しさんNGNG
そういえばスピーチAPIとかって在ったような気がする。
今はどうなったのかしらんが。
0243デフォルトの名無しさんNGNG
QReportではNewPageで自動で次のページ作ってくれますよね。
RaveではNewPageみたいなメソッドって無いんでしょうか?
FinishNewPageでは思うような動きをしてくれなくて・・・
探しても見つからないし、マニュアルは英語だし・・・限界です_| ̄|○
0244デフォルトの名無しさんNGNG
> マニュアルは英語だし・・・限界です

プログラマには向かないかも
0245デフォルトの名無しさんNGNG
>>236
>漏れもロケールのトコは気にしてなかったけど、気になってきた。

周りだけのアプリで、気にすんの? アラビア語とか使ってる人いるの?
0246243NGNG
>>244
Σ(゚д゚lll)ガーン   そ、そんな殺生な・・・。
プログラマーの適性検査は結構良かったんだぞヽ(`Д´)ノウワァァン!!
0247デフォルトの名無しさんNGNG
>>246
でもマジな話、英語はできるようになったほうがいいよ。
別にペラペラにならなくてもいいから、辞書片手にマニュアルくらいは読めるようにはすぐなれるし、
将来海外の人と電子メールするようになるかもしれないでしょ。
マニュアル、ヘルプくらいだったらちょっと努力すれば比較的簡単だよ。
0248243NGNG
>>247
わかった。一度挫折したんだけど、もう一度マニュアル読解にトライしてみる(`・ω・´)
長文を見ると日本語でも英語でも投げ出してしまうクセもなるべくなおすよ。
0249デフォルトの名無しさんNGNG
特定のプロシージャ内でしか使わない変数があるのですが
どうやって初期化すればいいですか?
ただ、そのプロシージャが呼び出されるたびに
初期化されるのも困るんです。
グローバル変数にするしかないですか?
0250デフォルトの名無しさんNGNG
>>236
Win2k で FD のところをレジストリからとってみた。

\??\FDC#GENERIC_FLOPPY_DRIVE#5&7fad87f&0&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}

うーん、これはロケール依存しなさそうだね。"FDC" のところを検出するとOKかも
0251名無し募集中。。。NGNG
>>249
Cでいうstatic変数のことかな?
Delphiには存在しないからimplementation部に変数宣言
もしくは手続き、関数内で型付き定数を使用するぐらいしかない
0252デフォルトの名無しさんNGNG
>>249
グローバル変数を使いたくなければ、クラスを使え。
たとえば、変数と手続きだけのクラスを作って、
起動時にインスタンス作って以後そのインスタンスを使うとか。
GUIアプリなら、変数と手続きの両方をForm1のメンバーにしちゃうとか。
変数だけForm1のメンバーにして、手続きにvarで参照渡しするとか、
やりかたはたくさんある。
0253デフォルトの名無しさんNGNG
たくさんあるって言っといて、どれもスコープがプロシージャの外に出てるじゃん。
0254デフォルトの名無しさんNGNG
なぜそこでスコープの話になる
そんなエサに釣られるクマー(AA略)
0255デフォルトの名無しさんNGNG
代案厨乙
0256デフォルトの名無しさんNGNG
>>254
なぜそこでって、プロシージャ内でしか使わないのに、その外からアクセスできるんじゃ
グローバル変数で妥協するのと変わんないじゃん。
0257デフォルトの名無しさんNGNG
そもそも質問が変。

>ただ、そのプロシージャが呼び出されるたびに初期化されるのも困るんです。
0258デフォルトの名無しさんNGNG
そうそう、それ、プロシージャのスコープから外れてるし
0259デフォルトの名無しさんNGNG
馬鹿は黙ってていいよ。もう>>251で決着してんだから。
0260デフォルトの名無しさんNGNG
そもそも質問が馬鹿だからなー
0261デフォルトの名無しさんNGNG
ttp://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=33#0247.txt
↑これ上手くいった方いますでしょうか?
自分の環境(Delphi6 per)では上手くいきませんでした。
どうやればいいのでしょうか?
0262デフォルトの名無しさんNGNG
initialization
CoInitialize(nil);
finalization
CoUninitialize;
end.
ってユニットごとにガシガシ呼んでも大丈夫?
0263デフォルトの名無しさんNGNG
>261
具体的にどう上手くいかないの?
0264デフォルトの名無しさんNGNG
' ← これを文字列に使うにはどうしたらいいの?
0265デフォルトの名無しさんNGNG
' '' '
0266デフォルトの名無しさんNGNG
'\'' 普通こうやるよな
delphi特殊
0267デフォルトの名無しさんNGNG
AA描いてる気分になる
0268261NGNG
>>263
すみません。自己解決できました。
uses節にMSHTML_TLBとActiveXを書き加えてなかったのが主な原因でした。
0269デフォルトの名無しさんNGNG
> 主な原因でした。

ほかの原因はなに?
0270249NGNG
レス下さった方々どうもです。
なにやら質問自体に問題があったようで・・・
しかし、さっぱりなのでそこらへんかんべんです。
しっかり勉強してみます。
0271ななしへたぐらま ◆XcB18Bks.Y NGNG
>>238
読み上げ算プログラムを作りたい,ということしょうか.

「いち」「にー」「さん」「しー」「ごー」「ろく」「なな」「はち」「きゅー」「じゅー」
「にじゅー」「さんじゅー」「よんじゅー」「ごじゅー」「ろくじゅー」「ななじゅー」「はちじゅー」「きゅーじゅー」
「たす」
みたいな音声を用意してたとえば49+83なら
「よんじゅー」「きゅー」「たす」「はちじゅー」「さん」と連続再生すればとりあえずできるようになります.
(最大2桁なら「きゅーじゅーきゅー」まで全部用意しても良いのですが3桁以上だと現実的ではありません)

あとは数値から読みに変換する(たとえば 49 を「よんじゅー」「きゅー」にする)部分のプログラムを書きます.

>>248
何でも良いから小説本でも読む.何でもというからには
ttp://www.france.co.jp/bisyojo/index.html こんなんでも良いと思います.
個人的には『スレイヤーズすぺしゃる』シリーズとか.お笑い系で短編集なので1つが短い.

>>270
ご質問自体は間違っていません!!
C言語にはご質問の通りに使えるstatic変数というものが存在しますし,
Delphiにはstatic変数はありませんがコンパイラオプションで『型付き定数への代入』を許可すると
型付き定数をCのstatic変数と同じように使うことができます.
procedure TForm1.Button1Click(Sender: TObject);
const YobidashiCount: integer = 0;
begin
inc(YobidashiCount);
ShowMessageFmt('%d回目の呼び出しだぜ!', [YobidashiCount]);
end;
0272デフォルトの名無しさんNGNG
> コンパイラオプションで『型付き定数への代入』を許可すると
> 型付き定数をCのstatic変数と同じように使うことができます.

 ( ・∀・)つ〃∩ ヘェー*16
0273デフォルトの名無しさんNGNG
>『型付き定数への代入』を許可すると
これ非推奨だけどな。
var YobidashiCount: integer = 0;
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(YobidashiCount);
ShowMessageFmt('%d回目の呼び出しだぜ!', [YobidashiCount]);
end;
のがまだまし。外に出してもユニットローカルだから大して問題にはならない。
0274デフォルトの名無しさんNGNG
禿同。型付き定数への代入ってものすごくソースが読みにくい。
0275デフォルトの名無しさんNGNG
グローバル変数やクラスのフィールド変数は、ゼロやらfalseやらnilに自動で初期化されるし。
0276デフォルトの名無しさんNGNG
ようはCの関数内static変数と同じものはないんだね。代わりになるものは非推奨。
しょぼいなぁ。
0277デフォルトの名無しさんNGNG
言語の違い。ショボイとかの問題ではない。C はクラスつかえんだろ。
0278デフォルトの名無しさんNGNG
ようはC++の関数内static変数と同じものはないんだね。代わりになるものは非推奨。
しょぼいなぁ。
0279デフォルトの名無しさんNGNG
この際D++を開発汁!
0280デフォルトの名無しさんNGNG
言語仕様を比較し出すと、
DelphiはC++より不自由だからコンパイルが速いとか
ジェネリックプログラミングとビルドが速いのはどちらが作業効率が高いかとか
際限なく話が広がっちゃうのでやめれ。
0281デフォルトの名無しさんNGNG
>>262
OK
0282デフォルトの名無しさんNGNG
質問させてください。こちらのデルファイは、デルファイ6のエンタープライズです。
ウェブサーバーアプリケーションを作るとき、「CGI実行形式」を選んだ場合、
吐き出されたバイナリは、ウインドウズ系以外のOS上のアパッチでも動くのでしょうか。
CGIを作る必要があって、(パールの使えますが、)可能ならデルファイでやりたいと思います。
苦労して作って、動かなかったというのは避けたいですし、実験しようにもよくわからないものを
外部のサーバーに送り込むのは、セキュリティ上気が引けます。(プライベートネットワークには、
IISが動いているマシンはありますが、ユニックス系のOSのマシンはありません)

よろしくお願いします。

0283デフォルトの名無しさんNGNG
クロスプラットフォームで書けばいいんじゃね。
という希ガス。
0284デフォルトの名無しさんNGNG
>>282
マジレスするとWindows以外のOSは山ほど在るんだが・・・
恐らくUNIX系OSとの推測で答えると・・・これまた山ほど在る。
製品名がどうこうではなく、CPUのアーキテクチャからして違う。
Delphiファミリーで生成できるのはintel i386アーキテクチャ上での
Windows or Linux用実行モジュールのみ
0285284NGNG
補足すると上記は言語についてのみの話。
すべてのライブラリ(コンポーネント)やOSに依存する機能が提供されている訳ではないので誤解なきよう。
例えばLinuxにOleDBやADOはない。
0286デフォルトの名無しさんNGNG
最小化起動すると、OnActivateは動かないでつか。

どうしよう。
0287名無し募集中。。。NGNG
>>286
onActivate内に記述する必要ある処理って何だ?

フォーム表示後に一度だけ処理を行いたければ
CMShowingChangedをオーバーロード汁
0288デフォルトの名無しさんNGNG
超サンクス>>287

ネーミングから、何度も発生しそうなイベントですが、本当に一度でつか?
何度も発生するならフラグ付けますが。
0289名無し募集中。。。NGNG
>>288
procedure CMShowingChanged(var Message: TMessage);message CM_SHOWINGCHANGED;

procedure TfrmAE002.CMShowingChanged(var Message: TMessage);
begin
 inherited;
if Visible then
begin
 
end;
end;
0290名無し募集中。。。NGNG
>>289
途中送信してしまいますた

if Visible then
begin

ene;
0291名無し募集中。。。NGNG
>>290
ああ、もう何が何だかわからない_| ̄|○
念のためif文のbegin〜end内にSelf.updateを入れておけば十分かと
0292デフォルトの名無しさんNGNG
>>283,284,285
レス、どうもです。
つかうメソッドに注意して試してみます。
0293デフォルトの名無しさんNGNG
アイコン化したときのイベントかメッセージ教えて下さいでつ。
0294デフォルトの名無しさんNGNG
アイコン化してると、殆どイベント来ませんね。
0295デフォルトの名無しさんNGNG
>>293
TApplication.OnMinimizeです。
0296デフォルトの名無しさんNGNG
サンクス>>295
その通りですた。

ただ、アプリの初期処理をForm.OnActivateとApplication.OnMinimizeと2箇所にいるなんて、
VCLが一つになるようなイベント用意してくれれば良かったのに。
0297デフォルトの名無しさんNGNG
確認させてください。
OnShowとOnActivateは一回づつしか発生しないでつよね?
0298デフォルトの名無しさんNGNG
そんなことはありません。Hide → Show するたびに OnShow
Deactivate → Activate するたびに OnActivate

初期化は Application.OnIdle でやってしまって、イベントハンドラをはずすと
一回だけオブジェクトの生成後に処理できます。
0299デフォルトの名無しさんNGNG
こんな感じ

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Add('Create');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Memo1.Lines.Add('Activate');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Memo1.Lines.Add('Show');
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Memo1.Lines.Add('Paint');
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
  ApplicationEvents1.OnIdle := nil;
  Memo1.Lines.Add('Idle');
end;
0300デフォルトの名無しさんNGNG
ShellExecuteで、アイコン化してプログラムを実行したいのですが、
Delphiアプリが言うことを聞いてくれません。
どうしたら良いで塚?

起動元、起動側、両方Delアプリでつが、専用の処理を入れるのメンドウでつ。
0301デフォルトの名無しさんNGNG
でつでつうっせーぞハゲ
0302デフォルトの名無しさんNGNG
もう解決したから良いでつ。

SW_SHOWMINNOACTIVEのみアイコン化ですた。
0303デフォルトの名無しさんNGNG
WindowState効かないっけ?
0304デフォルトの名無しさんNGNG
Delphiアプリって起動パラメータを見てたっけ? WindowState の方が優先では?
0305ウルトラ初心者NGNG
function XorEnCode(S,P: string): string;
var
 i, j, LP, Blk, M,LS: Integer;
begin
 Result := '';
 LP := Length(P); LS := Length(S);
 if (LP = 0) or (LS = 0) then Exit;
 Blk := LS div LP;
 M := LS mod LP; //PassWord文字列の長さに満たない場合
 SetLength(Result,LS);
 for i := 1 to Blk do
  for j := 1 to LP do
   Result[(i-1)*LP+j] := Char( Ord(S[(i-1)*LP+j]) xor Ord(P[j]) );
 if M > 0 then
  for i := 1 to M do
   Result[Blk*LP+i] := Char( Ord(S[Blk*LP+i]) xor Ord(P[i]) );
end;
-------------------------------------------------------------------------
単に任意の文字列に対しXORをかけるだけなのでP(パスワード文字列)も任意の日本語で問題ないと
思うのだが XorEnCode( '諸星弾&友里アンヌ' , 'ウルトラ警備隊') などとやると2回繰り返した
場合元に戻らない。なんでじゃろ?
0306デフォルトの名無しさんNGNG
xorなんて使うな。最低でもBlowfish使え。
0307デフォルトの名無しさんNGNG
アイコンの指定がうまくできません。
エクスプローラで見ると指定したアイコンなのですが、exeファイルを右クリックでみると
デルファイのアイコン?になってしまいます。
resファイルを削除して再構築してもだめでした。
0308デフォルトの名無しさんNGNG
>>305
なんだかよく知らんが、ソース分かり辛い。意図した動作をしないならコード間違っているんじゃない?
RC4でも使えば? 簡単だし速いしソースも一杯転がっているし、バイト単位でできるし汎用性が高いので使いやすいと思う。
0309デフォルトの名無しさんNGNG
>>305
たとえばカタカナ同士の LeadingByte は同じだから、Xor をとればゼロになる。
だから、文字列の長さを間違う。

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := XorEnCode('諸星弾&友里アンヌ','ウルトラ警備隊');
Label1.Caption := s;
Label2.Caption := XorEnCode(s,'ウルトラ警備隊');
end;

ならうまくいくが、

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := XorEnCode('諸星弾&友里アンヌ','ウルトラ警備隊');;
Label2.Caption := XorEnCode(Label1.Caption,'ウルトラ警備隊');
end;

失敗する。暗号化したものは文字列として受け取ることは危険。
0310デフォルトの名無しさんNGNG
なんだDelphiのバグか。
0311デフォルトの名無しさんNGNG
バグじゃない。文字列の特性。
0312デフォルトの名無しさんNGNG
delphiでCのqsort
0313デフォルトの名無しさんNGNG
>>307
プロジェクトオプションで指定するプロジェクト全体のアイコンと各フォームのアイコンの両方指定してありますか?

0314デフォルトの名無しさんNGNG
無理解の>>310を晒し。
0315デフォルトの名無しさんNGNG
つまりこういうことだよね。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s := '途中で'#0+'途切れる';
  Label1.Caption := s;
  Label2.Caption := IntToStr(Length(s));
  Label3.Caption := IntToStr(Length(Label1.Caption));
end;

文字列同士の代入は参照の代入で同一の実体を指す。CopyOnWrite 。
プロパティーへの代入はアクセサによるコピーなので最初に見つかった #0 で長さ確定。
これは PChar と string の代入互換性を実現するためにしかたないか。

>>305 の Xor のようなビット操作で文字列を「暗号化」した結果は、かなり高い確率で #0 を含む
ので、もはや文字列ではなく、バイナリデータだとみなした方がいいね
0316デフォルトの名無しさんNGNG
Captionへの代入って文字列のコピーじゃないのか…
0317デフォルトの名無しさんNGNG
暗号化 BlowFish アルゴリズム Delphi移植版 BlowFish002.lzh 16627 2004/12/09
0318デフォルトの名無しさんNGNG
>>316
コピーだって言ってるじゃん。最初の#0までの。
0319デフォルトの名無しさんNGNG
type
  TByteArray = array of byte;

procedure XorEncode(const Source, PassWord: string;var ba:TByteArray);
var
  i, LP,LS: Integer;
begin
  SetLength(ba,0);
  LP := Length(Password); LS := Length(Source);
  if (LP = 0) or (LS = 0) then Exit;
  SetLength(ba,LS);
  for i := 1 to LS do
    ba[i-1] := Ord(Source[i]) xor Ord(Password[(i-1) mod LP +1]);
end;

function XorDecode(const ba: TByteArray;const PassWord: string):string;
var
  i, LP,LS: Integer;
begin
  result := '';
  LP := Length(Password); LS := Length(ba);
  if (LP = 0) or (LS = 0) then Exit;
  SetLength(result,LS);
  for i := 1 to LS do
    result[i] := Char(ba[i-1] xor Ord(Password[(i-1) mod LP +1]));
end;
0320デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
  ba:TByteArray;
  s,p: string;
  i:integer;
begin
  s := '諸星弾&友里アンヌ'; p := 'ウルトラ警備隊';
  XorEncode(s,p,ba);
  for i := 0 to Length(ba)-1 do Memo1.Lines.Add(Format('%.2d : $%.2x',[i,ba[i]]));
  Label1.Caption := XorDecode(ba,p);
end;
0321316NGNG
>>318
いやだからヌル終端文字列のコピーなんでしょ?
まあ言い回しはどうでもいいんだけどさ…
0322デフォルトの名無しさんNGNG
どう言い訳したところでDelphiの仕様バグが直るわけでもなし。
0323デフォルトの名無しさんNGNG
MemoやListBoxのLine/Item数をgetするにはどうすれば良いでしょうか…。
プログラム実行中にLineやItemが追加する動きの後に
その合計数を参照したいのですが…。

激しく既出でしたら申し訳ございません。
0324デフォルトの名無しさんNGNG
count
0325デフォルトの名無しさんNGNG
文字列の途中に #0 がはいってもいいようにするより、PChar との互換性を選んだってことだろ。
0326323NGNG
>>324
countプロパティを知りませんでした。orz
助かりました。
どうもありがとうございました。
0327デフォルトの名無しさんNGNG
Randomizeって具体的には何してるの?
0328デフォルトの名無しさんNGNG
seedに大麻突っ込んでるだけだろ
0329ウルトラ初心者NGNG
>>309,319,320
サンクスです。とても参考になりますた。
0330デフォルトの名無しさんNGNG
>>327
以下のコードを貼り付けて(要Memoコンポーネント)、100回実行してみてください。

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to 9 do Memo1.Lines.Add(IntToStr(Random(100)));
end;
0331デフォルトの名無しさんNGNG
Randomize の意味じゃなくてどうやって実装してるのかって質問だろ
0332デフォルトの名無しさんNGNG
>>327
乱数の種をどこから取得しているのかという質問か?
0333デフォルトの名無しさんNGNG
procedure Randomize;
{$IFDEF LINUX}
begin
RandSeed := _time(nil);
{$ENDIF}
{$IFDEF MSWINDOWS}
var
systemTime :
record
wYear : Word; wMonth : Word; wDayOfWeek : Word;
wDay : Word; wHour : Word; wMinute : Word;
wSecond : Word; wMilliSeconds: Word;
reserved : array [0..7] of char;
end;
asm
LEA EAX,systemTime
PUSH EAX
CALL GetSystemTime
MOVZX EAX,systemTime.wHour
IMUL EAX,60
ADD AX,systemTime.wMinute { sum = hours * 60 + minutes }
IMUL EAX,60
XOR EDX,EDX
MOV DX,systemTime.wSecond
ADD EAX,EDX { sum = sum * 60 + seconds }
IMUL EAX,1000
MOV DX,systemTime.wMilliSeconds
ADD EAX,EDX { sum = sum * 1000 + milliseconds }
MOV RandSeed,EAX
{$ENDIF}
end;
0334さんくすえぶりばでぃNGNG
なるほど
時間からとっていたとはぁこりゃぁたまげた(・∀・)
Delphiユーザーは天才だなwwwwwwwwwwwwwwwwwwwwww
0335& ◆LMRaV4nJQQ NGNG
>>319のTByteArrayのような動的配列の読み書きは
EncodeByte: TByteArray;

 L := SizeOf(EncodeByte);
 WriteF.Write(L, SizeOf(L));
 WriteF.Write(EncodeByte, L); ※

 ReadF.Read(L, SizeOf(L));
 ReadF.Read(EncodeByte, L); ※

でええのかな? 文字列だと ※のところが
 WriteF.Write(EncodeStr[1], L);
 ReadF.Read(EncodeStr[1], L);
でいいみたいでっけど・・・・・
0336デフォルトの名無しさんNGNG
WriteF.Write(EncodeByte[0],Length(EncodeByte);

Read も同様
0337デフォルトの名無しさんNGNG
)がたりんかったか
0338デフォルトの名無しさんNGNG
動的配列は長い文字列と同じようなスマートポインタ

SizeOf(EncodeByte);

は常に4
0339デフォルトの名無しさんNGNG
あと、Read の前に SetLength() を忘れないように。
0340デフォルトの名無しさんNGNG
バッファ操作のインターフェースにarray of byteってどうよ?
元データが文字列なんだからString, PChar, varあたりが妥当だよ。
StreamはWrite(const buf; だし。
ついでにTByteArrayは別の形で定義済み。Types.TByteDynArray使っとけ。
0341デフォルトの名無しさんNGNG
MemoryStream でやってみた

procedure TForm1.Button1Click(Sender: TObject);
var
  ms:TMemoryStream;
  i,L:integer;
  EncodeByte,DecodeByte:TByteArray;
  s,p: string;
begin
  s := '諸星弾&友里アンヌ'; p := 'ウルトラ警備隊';
  XorEncode(s,p,EncodeByte);

  ms := TMemoryStream.Create;
  try
    L := Length(EncodeByte)*SizeOf(Byte);
    ms.Write(L,SizeOf(L)); // 書き込み
    ms.Write(EncodeByte[0],L);

    ms.Position := 0;
    ms.Read(L,SizeOf(L));
    L := L div SizeOf(Byte);
    SetLength(DecodeByte,L);
    ms.Read(DecodeByte[0],L);
    Label1.Caption := XorDecode(DecodeByte,p);
  finally
    ms.Free;
  end;
end;

0342デフォルトの名無しさんNGNG
>>340
お好きにどうぞ。
文字列をEncode → 文字列じゃまずい、バイナリデータにすべき
という流れから Array of Byte にしたんだろ。PChar はどう見てもまずい。
0343デフォルトの名無しさんNGNG
>>342
文字列の問題じゃないといったい何度言わせれば・・・
0344デフォルトの名無しさんNGNG
byte of arrayだとデータが既にある場合にコピーしないといけないからいまいちだな。
0345デフォルトの名無しさんNGNG
Encode した結果を PChar や string で受け取ると間違いを生みやすいってことから質問が始まって
るでしょ。そうでなければ >>305 の関数自体は正しいでしょ。
0346デフォルトの名無しさんNGNG
>>344
Move で一行
0347デフォルトの名無しさんNGNG
>>346
意味分かってない奴。
なんにしてもバッファ操作にarray of byteなんて使う奴はいないってこった。
Delphi cryptかなんかで検索してインターフェース調べてみなよ。
0348デフォルトの名無しさんNGNG
string をバッファ操作に使う方が珍しいような希ガス
0349デフォルトの名無しさんNGNG
> なんにしてもバッファ操作にarray of byteなんて使う奴はいないってこった。

うーむ、どこがバッファ操作なんだろう?
ソース文字列とパスワード文字列と XOR するのに添え字でアクセス出来るので
この上なく便利だと思うのだが?
0350デフォルトの名無しさんNGNG
TPageControlのタブにTMemoとか貼った場合、
タブが表示されるまでCreateされないんでしたっけ?

出来れば、該当のVCLの位置キボンユ
0351デフォルトの名無しさんNGNG
自分で調べろよ。TPageControlにTMemo貼ってダブ表示させない状態で情報取りに行けばわかるだろ。
0352デフォルトの名無しさんNGNG
それは初耳。それだと初期化できないだろ。
0353350NGNG
表示されてないタブのTMemo.Lines.Addすると、タブを表示したときにTMemoが消えてますた。
0354デフォルトの名無しさんNGNG
>うーむ、どこがバッファ操作なんだろう?
うーむ、codecのどこがバッファ操作じゃないんだろう?
0355デフォルトの名無しさんNGNG
codec ってなんですか?
0356デフォルトの名無しさんNGNG
それだと長い文字列つかえばみなバッファ操作だわな
0357デフォルトの名無しさんNGNG
>>353
Add 出来たなら Create されているんでは? 消えた原因は不明だけど
0358デフォルトの名無しさんNGNG
そもそもMemo1がnilじゃなければCreateされてる希ガス
再描画シテミソ
0359デフォルトの名無しさんNGNG
なんかここもC言語スレみたいになってきたな・・・
0360デフォルトの名無しさんNGNG
例えば
memo1.visible
のmemo1部分をconという変数に代入して、
con.visible
という感じに動作させるにはどのようにすればいいのでしょうか。
con の型は何で宣言すれば?
0361名無し募集中。。。NGNG
>>360
TMemo
0362デフォルトの名無しさんNGNG
>>361
うまくいきました。ありがとうございます。
0363名無し募集中。。。NGNG
>>362
ちゃんとfreeしておけよ
0364デフォルトの名無しさんNGNG
>363
360の条件ならFreeしちゃ駄目だと思う。
0365デフォルトの名無しさんNGNG
>>364
onCreate内でmemo := TMemo.Create(Self)
onDestroy内でmemo.Freeが必要なのでは?
0366デフォルトの名無しさんNGNG
memo := TMemo.Crete(Self);
memo.Parent := Self;
しとけば児童解放される。TComponent継承してるクラスならね。
0367デフォルトの名無しさんNGNG
>365
>360はcreateではなく別な変数memo1(たぶんフォームデザイナで作ったインスタンスへの参照)を
代入しているから、もしconをfreeすると元々のmemo1が解放されてしまう。
0368デフォルトの名無しさんNGNG
違うフォームのTStringGrid.Rowに数字を代入するとプログラムが固まります。
他の例えばTStringGrid.Colなどは問題なく動作するのですが。
同じフォームにコピーしたTStringGridで同じことをやっても特に問題は起こりません。
何が起こってるんでしょう・・・
0369デフォルトの名無しさんNGNG
ブレークかけてみたら。イベントが連鎖的に発生してるかも。
一般に他のグリッドなら駄目と言うことはないよ。
0370デフォルトの名無しさんNGNG
ありがとうございます。
でも特にwhileもfor〜も使ってないのです。
showmessageなど使って問題の行の前後に置いてみると、
確実にTStringGrid.Rowの行で止まってます。
0371デフォルトの名無しさんNGNG
あーブレークって固まってるときにIDEから停止させるって意味。
止まったら呼び出し履歴調べてみて。
0372デフォルトの名無しさんNGNG
Delphi 6 RTL アップデート #3で上書きした
c:\winnt\System32\rtl60.bpl
c:\winnt\System32\rtl60.map
c:\winnt\System32\rtl60.jpn
は、Delphi 6をアンインストールしたら削除しても良いファイルなのですか?
0373デフォルトの名無しさんNGNG
削除してもいいけどパッケージ使ったアプリが動かなくなるよ。
0374デフォルトの名無しさんNGNG
>>373
パッケージ使ったアプリとは、どういうことでしょうか?orz
このファイルは、Deiphiをインストールする前からあったファイルなのですか?
(上書き前のファイルのことです)
0375デフォルトの名無しさんNGNG
>>371
すみません、単純なコードのミスだったことが判明しました。
失礼しました・・・
0376デフォルトの名無しさんNGNG
>>374
プロジェクトオプションで指定できる実行時パッケージの事。
それ使うとexeのサイズが激減する代わりに*.bplがないと動かなくなる。
0377デフォルトの名無しさんNGNG
何度もスミマセン_| ̄|○

c:\winnt\System32\rtl60.bpl
c:\winnt\System32\rtl60.map
c:\winnt\System32\rtl60.jpn
はDelphiのランタイムだったんですね。

ということは、Delphiをアンインストールしたからといって、
わざわざ上書き前のファイルに戻してやる必要はないのでしょうか?
0378デフォルトの名無しさんNGNG
リロードしてなかった。

>>376
ありがとうございます!
0379デフォルトの名無しさんNGNG
テキストファイルを読み込み、内容をTreeViewに書き込むプログラムを作っています。

アアア
イイイ
ウウウ

上記の項目を設計時にTreeViewに設定してあった場合、
イイイの下にテキストファイルの内容を、子ノードとして追加していきたいのですが、
イイイの取得の方法を教えていただけませんか?
0380デフォルトの名無しさんNGNG
>>379
TreeView1.Items[]でTreeNode列挙できるからTextとLevelみて検索
0381デフォルトの名無しさんNGNG
Delphi6 の TComboBox の編集ボックス内で、文字列の途中に
全角スペースを挿入したあと、BS で全角スペースを消すと
文字化けするんだけど、解決方法教えてくだちい。
0382デフォルトの名無しさんNGNG
>>380
さっそく試してみたところ、取得できました。
ありがとうございました。
0383デフォルトの名無しさんNGNG
>>381
WindowsUpdateしてDel6用パッチを全てあててから
フォームにComboBoxを一つだけ貼り付けてプロジェクトで再現したら
使ってるOSを書く。
0384デフォルトの名無しさんNGNG
>>381
AutoCompleteプロパティをFalseに汁
0385デフォルトの名無しさんNGNG
>>381
正直、AutoCompleteはお奨めできない
0386デフォルトの名無しさんNGNG
Tntを使うと幸せになれるよ。
0387デフォルトの名無しさんNGNG
stringってなに?
array of charでもなくてPCharでもないのにキャストできたりして意味不明
0388デフォルトの名無しさんNGNG
フォームの、×ボタンと最大化ボタンを消したいのですが可能ですか。
サイズは変更可能、最小化のボタンだけ残したいのですが。
0389デフォルトの名無しさんNGNG
プロパティのBordericonsやったよな、たしか
0390デフォルトの名無しさんNGNG
えー?
「最小化だけ」は無理じゃない?

「終了ボタン」も、「無効」なら出来るけど、
純粋に「最小化ボタンだけのウィンドウ」って無理だと思う…。
0391デフォルトの名無しさんNGNG
>>387
Copy on write機能搭載の参照カウンタつきポインタ

詳しくはここ
http://web.archive.org/web/20040206013521/kakinotane.s7.xrea.com/obj/ml006.html
0392デフォルトの名無しさんNGNG
>>391
ところでこのサイトまとまってよかったのに何でやめちゃったのかな
元のページなくなってるし
0393デフォルトの名無しさんNGNG
>>392
Seventh Delphi旧入門として復活してるよ。
0394デフォルトの名無しさんNGNG
>>388
WM_NCPAINT で最小化ボタンだけのタイトルバーを自前で描画する。
ボタンの部分は WM_NCLBUTTON〜 でなんとかする。
元の項目は CreateWnd あたりをオーバーライドして DeleteMenu で消す。
0395デフォルトの名無しさんNGNG
delphiで六角大王(初期)のようなものを作ってみたいんですが
何を覚えればいいんでしょうか?
0396デフォルトの名無しさんNGNG
質問させていただきます。

KOLとか言う、容量を少なく出来るらしい奴を使ったんですが、
exptintf.dcuが見つからないと言われました。
どうしたらいいでしょうか?
0397デフォルトの名無しさんNGNG
>>391
ありがとうございます。
やっとpstringとpcharの違いがわかった気がします
0398396NGNG
再起動したら直りました。
ごめんなさい。
0399TWAINNGNG
久しぶりに訳あってDELPHIを使用します。環境も古くてD3.1C/Sです。
内容的にはTWAINを自力で制御するソースをACTIVEX化したいと
思っています。
(鶴の一言によりImageKitのような市販品は今の所、使えません。
 組み込みもPowerCobolに行うのでActiveX化が必要です。)
とりあえずTWAINソースは簡単なサンプルを作ったのですが
ACTIVEX化で詰まっています
TTimerや通信系のような、画面に出ないOCXを目標にしています。

新規作成−ACTIVEX−ACTIVEXコントロールで作ろうとすると
例えばTTimerがありません。
TTimerはウィンドウレスだから出てこないのかと思っていますが、
  ・このような場合どうやってACTIVEX化するのか
が1日ネットで泳ぎましたが分かりません。

最近のDELPHIでもACTIVEXコントロールの辺りは大差ないと
思うので、ちょっとしたポインタだけでもご存知でしたら教えてください。
0400デフォルトの名無しさんNGNG
今時ActiveXかよ
0401TWAINNGNG
あ、いまどきは違うのですか。最近Cでハンディやってたもので。すいません。
他のコンパイラに機能を提供するのには今時はなにをつかうのですか。
0402デフォルトの名無しさんNGNG
>>400は現場を知らない今時のニート
0403デフォルトの名無しさんNGNG
dll
0404TWAINNGNG
認識が間違っているかもしれませんが
dllだと1アプリでスキャナ2台使うケースまで考えると、
1アプリに対してのdllインスタンスは1つなので
dll呼び出し時にハンドルを使用者側で管理してもらう必要があります。
(本家本元のTWAINライブラリの都合上hwndが必要です
 →DLLでCreateWindow発行
 →使用者にハンドルを渡す)
OCXなら「使う分貼りつけて」になり、使用者側も分かりがいいかと。

総合的には今の所、ActiveXControlの方が利便性があると思っています。
TTimer系をActiveXにするポイントをご存知の方、よろしくお願いします。
実際のものもTComponentから派生する予定なのですが、TComponentだから
ActiveXに出来ないのでしょうか(その辺がわかっていません)
0405デフォルトの名無しさんNGNG
>>404
使用目的が限定されているなら、ActiveXなんて面倒なラップしないで普通にAPIなDLLで提供したほうが楽そうな気が。
てか、ActiveXは作るのが面倒。どのIDEでも同じだが、提供されるのは最低限の雛形生成。
クラス型のプロパティがあったりすると、そこはActiveX用にインターフェイスを定義してやらないとアクセスできんし。
メンテも大変だしね。

ひょっとしたら、どこかにサポートツールが在りそうなきがしないでもないが俺は知らん。

手動でインターフェイス書くなら間違いなくActiveXのほうが作業量が多いがそれでもやりますか?
0406381NGNG
>>384 >>385
解決しました。ありがとん。
0407デフォルトの名無しさんNGNG
もしかしてDelphi2005って最強?
0408デフォルトの名無しさんNGNG
Delphi2005Personalキボン
0409デフォルトの名無しさんNGNG
> Personal版予定(2005年春)
> 体験版提供予定(2005年01月)
0410デフォルトの名無しさんNGNG
TEditはPasswordCharに適当な文字を設定してしまうと、日本語入力や右クリック
メニューが使えなくなるようですけど、これを避ける方法があるのでしょうか?
0411デフォルトの名無しさんNGNG
無い。Windowsの仕様だから。
0412デフォルトの名無しさんNGNG
タスクトレイのアイコンを左クリックしてメニューを選んで実行、
という作業を自動化するアプリを作ろうとしています。

タスクトレイ全体のハンドルを取得することはできましたが、そこで詰まっています。
目的のアプリに対応するアイコンの場所かハンドルかを取得して
マウスクリックのメッセージを送る、という方法になるかと思っていますが、
具体的にはどのようにしたらよいでしょうか?
0413デフォルトの名無しさんNGNG
タスクトレイのウィンドウ構造はOS依存だから面倒
0414412NGNG
>>413
えと、方法自体もOSで変わってくるのでしょうか?
ウィンドウ構造に関してははここを読みました。
http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html
0415デフォルトの名無しさんNGNG
そう。そこにも書いてあるけど、トレイアイコンの部分は ToolbarWindow32 クラス
だったり、その親の TrayNotifyWnd クラスだったり SysPager があったりなかったり
全部のOSを動的に判断することはできるから、不可能ではないにしろめんどくさいね。
0416デフォルトの名無しさんNGNG
100万回の処理をするときに右下にカウンターを表示してどの程度進んだか
途中の結果が見たい。

それでTimerを使ってIntervalを1に設定して定期的に表示してるけど遅い
速い方法はありますか?
0417デフォルトの名無しさんNGNG
Thread使ってSynchronize
0418デフォルトの名無しさんNGNG
Repaintで強制描画。(XPだとInvalidateとかの場合負荷が高い時の遅延が大きい)
ま、あんまり拘らずに1秒間隔でも俺はいいと思うぞ。
0419416デフォルトの名無しさんNGNG
>>417 >>418
すばやい回答、本当にありがとうございます!
試してみます。
0420デフォルトの名無しさんNGNG
JavaのHashMapクラスみたいなものはありますか?
0421デフォルトの名無しさんNGNG
THashedStringListしかない
0422デフォルトの名無しさんNGNG
memoにいくつかの数値を入力し、平均を求めるプログラムつくってるんですが
var
N,X:single;
I:integer;
Form1: TForm1;
N:= Memo1.Lines.Count;
X:= StrToFloat(Memo1.Lines[I]);
I:=0;
for I:= 0 to N-1 do
for文の制御変数波ローカル変数にするにはどうすればいですか?
0423デフォルトの名無しさんNGNG
関数にする。
0424ななしへたぐらま ◆XcB18Bks.Y NGNG
>>422
変数をメソッドの中で宣言して下さい.

メソッド,関数,手続きの中で宣言した変数はローカル変数になります.
それ以外で宣言した変数はグローバル変数になります.

なんとなく変数I, N, XをForm1の下に宣言しているような気がするのですが,
ここに変数を置く必要はまずありません.(私は置いた記憶がありません)

平均値を求める処理はTForm1にメソッドを1つ作り,その中で行うと思いますが,
変数I, N, Xはこの中でしか使わないのでここで宣言すべきです.つまりローカル変数にすべきです.
0425デフォルトの名無しさんNGNG
>>420
DeCal使え
http://onigiri.s3.xrea.com:8080/delphi/index.php?DeCal

0426デフォルトの名無しさんNGNG
配列にいれたデータをクリアにするにはどうしたらいいでしょうか?
For i:=0 to 255 do
begin
hairetu[i]:=0;
end;
とするしか方法はないでしょうか?
0427デフォルトの名無しさんNGNG
FillChar
0428名無し募集中。。。NGNG
>>426
FillChar(array, Length(array), #0);
0429デフォルトの名無しさんNGNG
1バイト配列とは限らないだろ・・・・
0430名無し募集中。。。NGNG
>>429
?
多次元配列やレコード型の場合はsizeofだよね?
0431デフォルトの名無しさんNGNG
FillChar の第二パラメータはバイト数だろ。だから Length(array) じゃだめ。
Length(array)*SizeOf(要素の型) じゃないと。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array[0..4] of integer;
  i:integer;
begin
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray,Length(IntArray),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

は間違い。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array[0..4] of integer;
  i:integer;
begin
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray,Length(IntArray):SizeOf(integer),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

が正しい。
0432デフォルトの名無しさんNGNG
間違った

  FillChar(IntArray,Length(IntArray)*SizeOf(integer),#0);
0433デフォルトの名無しさんNGNG
SizeOf(hairetu)でいいやん
0434デフォルトの名無しさんNGNG
おおそうか
0435デフォルトの名無しさんNGNG
>>433
> SizeOf(hairetu)でいいやん

これ動的配列ではダメだね。スマートポインタだからいっつも4になる。

procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray:array of integer;
  i:integer;
begin
  SetLength(IntArray,5);
  Label1.Caption := IntTostr(SizeOf(IntArray));
  for i := 0 to 4 do IntArray[i] := Random($FFFFFFF);
  FillChar(IntArray[0],SizeOf(IntArray),#0);
  for i := 0 to 4 do Memo1.Lines.Add(IntToStr(IntArray[i]));
end;

この場合も

FillChar(IntArray[0],Length(IntArray)*SizeOf(integer),#0);

ならOK
0436デフォルトの名無しさんNGNG
リストボックスでマウスポインタ下のアイテムを取得する方法はないのでしょうか?
0437デフォルトの名無しさんNGNG
OnMouseMove で ItemAtPos
0438TWAINNGNG
>>405
あきらめてDLLにしました
ご意見ありがとうございます
0439436NGNG
>>437
サンクス!早速やってみます。
0440デフォルトの名無しさんNGNG
バイナリファイルをピンポイントで書き換える方法ってないですかね?
書き換えたいのはほんの16バイト〜64バイトだけなのに
TFileStreamやTMemoryStreamとかだと上書き保存でも先頭から最後まで上書きしていくようなのです。

動画ファイルをいじるツールなので、ファイルサイズは当たり前にウン百MB・・。
ひたすら時間がかかってしまいます。
0441デフォルトの名無しさんNGNG
>>440
seek
0442デフォルトの名無しさんNGNG
>>440
BlockWriteで良いんじゃない?
0443440NGNG
>>441-442
遅くなりましたが何とかうまくいきました。
ファイル型を使うのが初めてだったのとRecSizeとBlockWriteの書き込みサイズの関係に手間取ってました。
まさしく理想的な速さです。(本当に保存したのか不安になるぐらい)
ありがとうございました。
0444ななしへたぐらま ◆XcB18Bks.Y NGNG
>>441さんの意図はTFileStreamのSeekメソッドのような気もしますが….

つまり,TFileStreamのSeekメソッドで書き換えたい位置に移動,
Writeメソッドで書き込み,最後にFreeメソッドでファイルを閉じる,
という感じで部分的に書き換えることができます.
0445デフォルトの名無しさんNGNG
ビルド時のユニットの検索で暗黙的にLibとImportsを見にいってるけどそれ以外のディレクトリを追加するのはどうやるの?
プロジェクトのディレクトリのデフォルト設定とかじゃなくて。
0446デフォルトの名無しさんNGNG
暗黙じゃなく、環境で設定されているのだけどね。
環境オプション ライブラリパス
0447デフォルトの名無しさんNGNG
例外処理について質問です
入力値チェック等複数の条件分岐が必要な場合は
if (条件) then
 if (条件) then
  if (条件) then

とif文をネストしていましたが例外処理を使って
try
 if (条件) then raise Exception.Create('最初のif文)
  if (条件) then raise Exception.Create('次のif文)
   if (条件) then raise Exception.Create('最後のif文')
except

end
と書いても同じことになるのでしょうか?
0448デフォルトの名無しさんNGNG
同じだと思うよ
まあでもgotoの代わりに使うのは面白くないけどな
0449447NGNG
>>447のexcept〜end内にraiseが抜けてました
例外を生成してるのでこれだとメッセージが出ないですね

>>448
レスどうもです
条件分岐がたくさんある時はいちいちif文で分けないで
エラーだったらズバッと特定部分に飛ぶのはスマートだと思いますが
これは間違った認識なのでしょうか?
0450デフォルトの名無しさんNGNG
例外って同一メソッド内で自作自演的にraise〜exceptするもんじゃないぞ。
エラーが発生したことと、エラーの発生した場合の処理を分離する為の機構なんだから。
暇があったらここでも読んどけ。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%C7%A5%B6%A5%A4%A5%F3%A5%D1%A5%BF%A1%BC%A5%F3%2FException%A4%F2%B8%AD%A4%AF%BB%C8%A4%A8%5D%5D
0451デフォルトの名無しさんNGNG
作ってみた。使っておくれ。

ttp://groups-beta.google.com/group/DelphiFreeTalks

Web と mail からで利用できる。
両方とも投稿 IP が記録されるので、絶対的に匿名が必要な場合には今までどおり
ここを使っておくれ。
0452デフォルトの名無しさんNGNG
Del6 Perで制作したソフトって、自分のHPで配布したり
ベクターとかに登録してもいいんですか?
0453デフォルトの名無しさんNGNG
license.txtを読め。
GNUの宣言文なんかよりずっと読みやすい、
平易な文章だ。そして、自分で理解しろ。
そうしないと危険だ、わかるだろ?
0454デフォルトの名無しさんNGNG
レスありがとうございます。
読んでみました。
フリーソフトとしての配布なら問題ないって事ですよね?
0455デフォルトの名無しさんNGNG
そのはず
0456デフォルトの名無しさんNGNG
>>451
イラネ
0457デフォルトの名無しさんNGNG
この板以外で2ちゃんねる用語使うの勘弁して欲しい。wikiとか
0458ウルトラ初心者NGNG
>>305を少し変えた
type
 CharArray = array[0..2047] of Char;

procedure XorEncode(var Buf: CharArray; LS: Integer; PassWord: string);
var
 i, j, LP, Blk, M: Integer;
begin
 LP := Length(PassWord);
 if LP = 0 then Exit;
 Blk := LS div LP;
 M := LS mod LP; //PassWord文字列の長さに満たない
 for i := 0 to Blk - 1 do
  for j := 0 to Plen - 1 do
   Buf[i*LP+j] := Char( Ord(Buf[i*LP+j])
             xor Ord(PassWord[j+1]) );
 if M > 0 then
  for i := 0 to M - 1 do
   Buf[Blk*LP+i] := Char( Ord(Buf[Blk*LP+i])
              xor Ord(PassWord[i+1]) );
end;
これは確かに文字列の復号化には失敗するのだけど次のようにファイルに対してはOK。
なんでじゃろ?
0459デフォルトの名無しさんNGNG
 ReadF := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
 TmpName := ChangeFileExt(FileName, '.$$$');

 try
  WriteF := TFileStream.Create(TmpName, fmCreate or fmShareExclusive);
  try
   repeat
    NumRead := ReadF.Read(Buf, SizeOf(Buf));
    XorEncode(Buf, NumRead, PassWord);
    WriteF.Write(Buf, NumRead);
   until NumRead <> SizeOf(Buf);
  finally
   WriteF.Free;
  end;
 finally
  ReadF.Free;
 end;
 if DeleteFile(FileName) then RenameFile(TmpName, FileName);
0460デフォルトの名無しさんNGNG
 ReadF := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
 TmpName := ChangeFileExt(FileName, '.$$$');
 try
  WriteF := TFileStream.Create(TmpName, fmCreate or fmShareExclusive);
  try
   repeat
    NumRead := ReadF.Read(Buf, SizeOf(Buf));
    XorEncode(Buf, NumRead, PassWord); //Decodeもいっしょ
    WriteF.Write(Buf, NumRead);
   until NumRead <> SizeOf(Buf);
  finally
   WriteF.Free;
  end;
 finally
  ReadF.Free;
 end;
 if DeleteFile(FileName) then RenameFile(TmpName, FileName);
どんなファイルでもOKみたいだ。
0461デフォルトの名無しさんNGNG
相変わらず腐ったインターフェースだな
0462デフォルトの名無しさんNGNG
そりゃ、そうだろ。文字列にしなけりゃ途中で切られることはないからね。
前のレスの内容どおりだろ。
0463TParserNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
Fs: TFileStream;
Parser: TParser;
S: String;
begin
Memo1.Lines.Clear;
Fs := TFileStream.Create('D:\mydata\testdata.txt', fmOpenRead);
try
Parser := TParser.Create(Fs);
try
S := '';
while Parser.Token <> toEof do
begin
// '/' の前にある数値でなければ抽出する
if (Parser.TokenString <> '/') and (S <> '') then Memo1.Lines.Add(S);
// 現在のトークンが数値だったら保存する。
if Parser.Token = toInteger then S := Parser.TokenString
else S := '';
Parser.NextToken;
end;
finally
Parser.Free;
end;
finally
Fs.Free;
end;
end;
0464デフォルトの名無しさんNGNG
何がしたいんだ?
0465デフォルトの名無しさんNGNG
>>463
TParser ってヘルプにもない・・・とおもってぐぐったら出てきた出てきた!
そうかあ・・・こんなパーサーあったんだな。
こんな便利なものなんでヘルプに載せないのかな?
0466デフォルトの名無しさんNGNG
TStringGridでスクロールバーが移動した時に発生するイベントってありますか?
0467デフォルトの名無しさんNGNG
sageてしまったのげageさせてください
0468デフォルトの名無しさんNGNG
イベントはない
0469デフォルトの名無しさんNGNG
>>466-477
自己解決しますた
やりたいことはTStringGridのセルにTComboBoxをはめ込んで使用していますが
セルにTComboBoxが表示されている時にスクロールすると
セル表示されているColが全てTComboBoxになってしまいました

単にTComboBoxのOnExitイベント内でTComboBoxを非表示にすればいいだけでした
お騒がせしますた
0470デフォルトの名無しさんNGNG
やりたいことと質問の内容がずれてる
0471デフォルトの名無しさんNGNG
これからプログラムの勉強を始めようと思っています。
それで Delphi 2005 Professional を購入しようと思っているのですが、
動作環境に Windows XP Pro となっています。
私のはWindows XP Home なのですが、これでは使えないのでしょうか?
また、使えたとしても、なにか制限が生じるのでしょうか?
0472デフォルトの名無しさんNGNG
無料で本もいっぱいあるJavaやっとけ
0473デフォルトの名無しさんNGNG
2005買うより、まず無料の D6per を試してみては。XPHome でもOK

http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%5D%5D
0474デフォルトの名無しさんNGNG
>>471
D2005のトライアルで試せばいいと思うけど
0475デフォルトの名無しさんNGNG
トライアル最悪
0476デフォルトの名無しさんNGNG
>>471
予算は大丈夫か?新規購入はめっちゃ高いぞ。
047779 ◆7kkYm.VmFc NGNG
usesには

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, FileCtrl, Grids;

こんなものが書いてありますけど、たとえばMathなどを使う必要もないのに書き加えても
動作上は問題ないのでしょうか?
0478デフォルトの名無しさんNGNG
mathなんかは使わなければリンクされないと
Delphi1の頃の塚越本には書いてあった希ガス。

今でもだいじょうぶなんじゃない。
Mathユニットの関数と同じ名前の関数とか作ったりしなければ。
0479デフォルトの名無しさんNGNG
>>477
モノによってはusesするだけでexeのサイズが肥大化するものもあるけど
動作上問題になるケースはまずないよ。
コードサイズが増えるかどうかはユニットの一番下の
initialization/finalizationにコードが記述されているかどうかを見て判断。
Mathは増えない。
048079 ◆7kkYm.VmFc NGNG
ありがとうございました。
0481デフォルトの名無しさんNGNG
Image.Canvas.Pixelsとかが無茶苦茶遅いんだけどどうにかならないの?
高速かつリアルタイムに描画が反映される方法かコンポってない?
0482デフォルトの名無しさんNGNG
描画にPixels を使うやつの気が試練。
0483デフォルトの名無しさんNGNG
>>481
ScanLineをつかうといいよ。
0484デフォルトの名無しさんNGNG
バイナリ<->テキスト(string)間の変換を行う標準の機能はありますか?
0485デフォルトの名無しさんNGNG
単純に暗号化したいというのなら、
それ用のコンポーネントか、アーカイバコンポーネント使ったら?
0486デフォルトの名無しさんNGNG
>>484
なにをしたいの。
String型でも文字コードの並んでいるものとして扱えばバイナリで処理できるけど。
この場合は、PCharにキャストしたほうがいい。
0487デフォルトの名無しさんNGNG
>>486
そういうことではなく
メモリ(バイナリ)イメージを表示可能なテキストに変換する
s := bin2str(myrecord, sizeof(myrecord)) //=> '12 fs df 00 00...'
str2bin(s, myotherrecord)
のような機能が標準であるかということです。
0488デフォルトの名無しさんNGNG
>>487
それなら、IntToHex 関数というのがある。
整数値を16進形式の文字列にして返してくれる。
0489デフォルトの名無しさんNGNG
標準でそういう機能があるかという質問なんですが。形式は16進等特定のものである必要もありません。
# 実装の仕方がわからないわけではありません。
0490デフォルトの名無しさんNGNG
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
標準で
0491デフォルトの名無しさんNGNG
何言ってんだこいつは
0492デフォルトの名無しさんNGNG
ライブラリが充実していないと何もできない、いつもの方です。放置推奨。
0493ななしへたぐらま ◆XcB18Bks.Y NGNG
>>481
基本的には>>483のとおり,PixelsではなくScanLineを使います.
ただ,イメージコンポ内部のビットマップ形式を変更する必要があります.以下,へたれサンプル投下.
(※うちはDelphi 5なのでそれでも動くようにImage1.Picture.Bitmapを参照しています.)
procedure TForm1.Button1Click(Sender: TObject);
var
x, y: integer;
r, g, b: byte;
pb: PByte;
begin
// 内部ビットマップの初期化
Image1.Picture.Bitmap.PixelFormat := pf24bit; // ←ハードウェアや画面モードに依存しない,かつ画素当たり24ビットの形式
Image1.Picture.Bitmap.Width := Image1.ClientWidth;
Image1.Picture.Bitmap.Height := Image1.ClientHeight;
// メインループ:1画素ずつ塗りつぶす
r := high(byte);
b := high(byte);
for y := 0 to pred(Image1.Picture.Bitmap.Height) do begin
g := high(byte);
pb := Image1.Picture.Bitmap.ScanLine[y]; // ←pbはラインyの左端の画素の1バイト目を指す
for x := 0 to pred(Image1.Picture.Bitmap.Width) do begin
pb^ := b;
inc(pb);
pb^ := g;
inc(pb);
pb^ := r;
inc(pb);
g := (g + 255) and 255;
end;
b := (b + 255) and 255;
end;
end;
0494ScanLineの使用例NGNG
http://hp.vector.co.jp/authors/VA015850/delphi/lib/index.html
0495デフォルトの名無しさんNGNG
>>485-492
代案厨乙
0496デフォルトの名無しさんNGNG
delphi6を使っているのですけれども
ファイル名にUnicodeを使うにはAPIたたかないと駄目でしょうか?
0497デフォルトの名無しさんNGNG
IntToHexみたいにVCLで用意されてるのは、標準とは言わんのか
0498デフォルトの名無しさんNGNG
>>496
ウニコードはWideString型だから
StringToWideChar
とか使ってみれば?

でもファイル名にユニコードの意味がよく分からん。
そんなのOS側で処理してくれるでしょ
0499496NGNG
例えば日本語とハングルが混ざったファイル名とかですかね。
そういうファイルをAssignFileとかTFileStreamとかでは扱えないっぽいので。
0500デフォルトの名無しさんNGNG
TFileStreamはコンストラクタにハンドル渡せるからCreateFileWで得たハンドル渡せるかもね。
そういう抜け道以外でVCLでW対応したものってないんじゃないの。
0501496NGNG
やっぱそんな感じですか。そっちの方向でやることにします。
ありがとうです。
0502デフォルトの名無しさんNGNG
Tnt 使え。
殆ど対応している。
0503デフォルトの名無しさんNGNG
AnsiPosの右から検索バージョンってあるの?
0504デフォルトの名無しさんNGNG
ない
0505496NGNG
>>502
む。これはよさげですね。
いろいろいじってみます。
0506デフォルトの名無しさんNGNG
文字列を左右逆にして、AnsiPosで探すとか。
0507デフォルトの名無しさんNGNG
>>506
反転させるのはコストが高そう。

私なら頭から読んでいって、最後にでてきた位置を覚えておいて
その場所を返すようにするなぁ。
0508デフォルトの名無しさん NGNG
自分で作ったフレームを頻繁に使うのでコンポーネント化したいのですが、
できるのでしょうか?
0509デフォルトの名無しさんNGNG
>>508
出来ると思うけど、フレーム上のコンポーネントとか動かすのが
大変になるし、プロジェクト依存の変数とか使えなくなるよ。
0510デフォルトの名無しさんNGNG
>506-507
尻から順番に比較して、
ヒットしたらByteType関数で先頭がmbTrailByteでないか確認。
ベタに関数を書き下しても、引数チェックを除けばたったこれだけ。

Result := 0;
for i := Length(Text) - Length(Sub) + 1 downto 1 do
begin
 if Text[i] = Sub[1] then
 begin
  f := False;
  for j := 2 to Length(Sub) do
  begin
   f := (Text[i + j - 1] <> Sub[j]);
   if f then Break;
  end;
  if not f and (ByteType(Text, i) <> mbTrailByte) then
  begin
   Result := i;
   Break;
  end;
 end;
end;
0511デフォルトの名無しさんNGNG
>>509
そうなのですか・・・
たくさんのフレームを作成していて、そのうち1つだけ使用回数がえらい多いので
フレームコンポーネント選択→フレーム選択がとてもわずらわしいもので・・・
0512デフォルトの名無しさんNGNG
>>511
コンポーネント・テンプレートに登録すれば、
パレット上に表示できる。

フレーム変更時は、再登録しないと変更が反映されないけど。
0513511NGNG
>>512
ありがとうございます。

簡単なロジックのみのフレームなので、あまり変更は無いと思います。
>>512さんの方法で進めてみます。。
0514デフォルトの名無しさんNGNG
TUIWebBrowserってやっぱりDelphi6 Personalにはインストール出来ないのでしょうか?
0515デフォルトの名無しさんNGNG
SetLengthで長い文字列や動的配列の長さを確保した場合、処理が終わったらFinalizeで解放しないと
いけないのだろうか?
type
TMyRec = packedrecord
Dat1:SmallInt;
Dat2:Integer;
end;

TMyAry = array ofTMyRec;

procedureTForm1.Button3Click(Sender:TObject);
var
IDX:Integer;
FFile:TFileStream;
Dat:TMyAry;
begin
if not OpenDialog1.Execute thenExit;
FFile:= TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
IDX:= FFile.SizedivSizeOf(TMyRec);
SetLength(Dat,IDX);
try
FFile.Read(Dat[0],FFile.Size);
finally
FFile.Free;
Finalize(Dat); //これははたして必要か?
end;
end;
0516デフォルトの名無しさんNGNG
>>515
CreateならFree、NewならDispose、SetLengthならFinalize
やっぱり自分で作ったものは自分で面倒みなきゃ
0517デフォルトの名無しさんNGNG
>SetLengthならFinalize
こんなのあった?
0518デフォルトの名無しさんNGNG
いらん。コンパイラが暗黙で終了コードを生成してくれる。
CPUウィンドウ見れば答えがすぐ分かるよ。

>>516
知ったか死ね。
0519デフォルトの名無しさんNGNG
とかいうやりとりのどれを信用する?
俺なら死ねとかいう人は信用ならないので自分で調べる。
0520デフォルトの名無しさんNGNG
>>515
おそらく、ファイルやフォルダが削除出来なくて、
君は解放忘れじゃないかと疑ってるんじゃないか?
もしそうだとしたらら原因はOpenDialog1にあるよ。
0521デフォルトの名無しさんNGNG
>>518
String型、バリアント型を使用している場合は必要
お前も知ったか死ね

0522デフォルトの名無しさんNGNG
>>521
話が長くなりそうだから問題の起きるサンプルコードよろ。
そのコードを実行すると何が問題になるのか、どう修正するといいのかも説明して。
0523デフォルトの名無しさんNGNG
知ったかの521も system._DynArrayClear のコードでもトレースしてごらん。
0524デフォルトの名無しさんNGNG
>>521
逆だろ

ここ初心者スレだぜ?
ユーザー減らすようなマネやめないか?
そういうレスは、フサギコの相談室でやってくれ、頼む
0525デフォルトの名無しさんNGNG
Finalize(Dat); //SetLength(Dat, 0)でもいい
起動中に不必要なメモリを占領し続けないというなら必要だが
メモリリークについては心配無用!
0526デフォルトの名無しさんNGNG
>>516 の書き方がいかにも「知ったか」なのがカチンとくるな。たしかに。
間違ってるのが致命的だが。
0527デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0528デフォルトの名無しさんNGNG
>>527
勇気を持って書き込んだ超低レベル初心者は>>516と>>518だからあってます。
0529デフォルトの名無しさんNGNG
Del厨のレベル低下もここまできたか
0530デフォルトの名無しさんNGNG
*質問*を勇気を持って書き込むスレッドです。
0531デフォルトの名無しさんNGNG
質問以外は超低レベル初心者お断り!
だそうです。>>516>>518
0532デフォルトの名無しさんNGNG
欲しくもない代案を次々と出してくる人たちはどうですか?
0533デフォルトの名無しさんNGNG
質問自体がタコな場合は代案大いに結構
0534デフォルトの名無しさんNGNG
結構かどうかは質問者が判断することだろ。
バカじゃね。
0535デフォルトの名無しさんNGNG
>>533
代案厨乙
あるいは気がついてないのかもしれないけど
あんたの代案は誰の役にも立ってないよ。
0536デフォルトの名無しさんNGNG
FinalizeはFAQなわりに案外まとまったドキュメントがないんだな。
0537デフォルトの名無しさんNGNG

ShowMessage('(*´ω`*)モチツケ');
0538デフォルトの名無しさんNGNG
タコな質問者はいい代案でも理解できないのが多いから、回答しないで無視
0539デフォルトの名無しさんNGNG
半年まえから代案、代案って叫ぶ変なのがいついてるな。フサスレの病気なのと同じくらい不気味だな。
0540デフォルトの名無しさんNGNG
delphiを始めたんですが、とりあえず何かを作ろうと思い、
2chブラウザなら出来そうだと思ったんですが、作り方が
よく分かりません。
そこで相談ですが、どのように作れば良いか教えていただけないでしょうか?
「ぐぐれ!」というのは無しでお願いします。調べても分からなかったんで。
よろしくお願いいたします。
0541デフォルトの名無しさんNGNG
>>540
そんなエサに釣られるクマー(AA略)
0542デフォルトの名無しさんNGNG
>>539
どうも、フサスレから荒らしが来てしまってるようだな…
0543デフォルトの名無しさんNGNG
>>540
いっぺんに作ると余裕で破綻するから
・板情報の入ったHTMLをダウンロードするサンプル
・HTMLを解析して板情報を抽出するサンプル
・板のURLを入力してスレ一覧を取得するサンプル
・スレのURLを入力してレス一覧を取得するサンプル
・レス一覧を取得して個々のレスにばらして表示するサンプル
をそれぞれ別のプロジェクトとして作成する。
で、サンプルの機能を一つのクラスにしてユニットにまとめる。
で、それをまとめてアプリケーションに組み込む。

こういう構成要素の多いアプリケーションを作る場合
単一の機能を下から一つずつ作っていくといいよ。
いきなりフォームにメニューおいてツリービューと
リストビューとブラウザコンポおいてと
進めるのはあまりお勧めできないよ。
0544デフォルトの名無しさんNGNG
janeとかのソースをダウンロードする
↓
理解不能。2chブラウザも大変なんだと気がつく
↓
もうちょっと役に立たない物から作ってみる
0545デフォルトの名無しさんNGNG
>>544 これだッ (*^ー゚)b グッジョブ!!
>もうちょっと役に立たない物から作ってみる
これが、楽しい内は大丈夫。
それに飽きる頃には、実力の無さを嘆くのみ_| ̄|○
0546デフォルトの名無しさんNGNG
>>516 の 「SetLengthならFinalize」は間違い。
これが知ったかと言える要因。
みんな間違って覚えるんじゃないぞ。

521は逃げたようですね。
0547デフォルトの名無しさんNGNG
プログラミングは実力ってあまり関係ない。
それよりも根性だ。
1日かけようと思っている時間を1ヶ月にすればもっといいものが出来る。
面倒だと思うところを面倒がらずにやる。
無限の労力をかければどんどんなんでも出来ていく。
できないことはない。
いかに時間を浪費させずにやるかは実力絡むかもな。
0548デフォルトの名無しさんNGNG
>>547
根性で、なんとかなれば苦労はしないよ・・・
最終的にはセンスや才能っていうのが大きいけど、
とりあえず禁止事項を理解しよう。
0549デフォルトの名無しさんNGNG
漏れは516でも546でもないが、まあ、とにかく、ヘルプの動的配列の
項目を見てみたのよ。 以下引用

>動的配列変数は暗黙にポインタであり,長い文字列型と同じ参照カウントの方法を使用して管理されます。
>動的配列の割り当てを解除するには,配列を参照する変数にnil を代入するか,Finalize に変数を渡します。
>配列がほかで参照されていなければ,これらの方法のどちらでも配列が破棄されます。
>動的配列は,参照カウントが0 まで下がった場合に,自動的にリリースされます。長さが0 である動的配列の値はnil です。
>動的配列変数に逆参照演算子(^)を使用してはいけません。
>また,動的配列変数をNew 手続きまたはDispose 手続きに渡してはいけません。

つまり、ほっといても動的配列ならガベコレが効くけど、明示的に割り当てを解除したけりゃ、
参照カウントを0にした上で、nilを入れるなりFinalizeなりする、ってことでいいんじゃないすかね。
で、参照カウントを0にできない状況でメモリ負担を減らしたければ、setlengthで要素数を0にすると。
ガベコレという言葉をここで使うことの是非は知らんけど。
0550デフォルトの名無しさんNGNG
ゲーム作成のためにDelphi+SDLで行こうとおもうんですが、
Delphi6はDLしたんですがSDLのダウンロードの仕方がわかりません。

それとDelphi+SDLでプログラミングしていくには、どういう手順を踏めばいいんでしょうか?
0551デフォルトの名無しさんNGNG
>>550
http://gamdev.org/w/?%5B%5BDelphi%A4%C7SDL%5D%5D
0552デフォルトの名無しさんNGNG
JEDI-SDLのインストールに書かれてることをすればいいんでしょうか?
それとも、下にある本家のサイトからSDLをDLするんでしょうか?
0553デフォルトの名無しさんNGNG
両方やって見りゃいいだろクズ
0554デフォルトの名無しさんNGNG
なんでやってみる前に質問するんだろうか?
そのうち、この単語でgoogleで検索すればいいのでしょうか?とか聞くのだろうか
0555デフォルトの名無しさんNGNG
Windows API のコールバック関数さんに
クラスのメソッドを渡すのは無理なのでしょうか?

C++のstaticメンバ関数のようにクラスメソッドにすれば
できるかと思ったのですがAccess Violationエラーがでてしまいます。
(もちろんクラスに入れないで使えばエラーがでてない)

WEB上で検索をかけてもそういうことやってるのは見当たらなかりませんでした。
できれば隠蔽したいのですが…無理なら無理って言ってください。
0556デフォルトの名無しさんNGNG
そのままだと無理。クラスメソッドでも無理。
詳しい説明は面倒なのでしない。
メソッドは隠れた引数(インスタンスのポインタ)が存在する。つまり型が全く違う。
0557デフォルトの名無しさんNGNG
>>555
無理。メソッドの引数リストには暗黙の引数 Self が含まれるから。

呼び出し元の API の lParam に対象となるオブジェクト (Self など) を渡して、
コールバックがそれを手がかりにメソッドを呼ぶようにしたらいい。
0558デフォルトの名無しさんNGNG
Delphi2005とVB2005とでどっちが優れてますか?
0559555NGNG
>>556-557
クラスメソッドでもSelfがくるのか…
ありがとうございます。諦めがつきました。
>>557の感じでやろうと思います。
0560デフォルトの名無しさんNGNG
>>558はくれぐれもスルーで。
0561デフォルトの名無しさんNGNG
>>560
何で?
Delphiの方がいいと思うなら素直にDelphiって言えばいいじゃん。
何か言えない事情でもあるの?w
0562デフォルトの名無しさんNGNG
COBOL2005が最強です^^^^^;;;;;
0563デフォルトの名無しさんNGNG
普通のメソッドはSelfが渡されて
クラスメソッドはSelfじゃなくてクラス参照が渡される。
0564デフォルトの名無しさんNGNG
>>558
>>561
隔離病棟に(・∀・)カエレ!
0565デフォルトの名無しさんNGNG
2005からDelphi始めた人っている?
やっぱ.NET使うならVS買うよな。
0566デフォルトの名無しさんNGNG
>>565
うるさい氏ね
0567デフォルトの名無しさんNGNG
.NET使うくらいならJava使うよ
0568デフォルトの名無しさんNGNG
将来を担う初心者の方々の前ではDelphi2005の話題はタブーなんですね?w
0569デフォルトの名無しさんNGNG
558=561=568はニートまっしぐらで将来担うことはできないからな
0570デフォルトの名無しさんNGNG
Delphi2005へのJVCLのインストールを成功された方はおられませんか?
JVCLをインストールしようとしたのですが、
その前のJCLがインストールできないです。
1.93では、Delphi2005を認識してくれないようです。
0571デフォルトの名無しさんNGNG
>>570みたいな荒らしは放置
0572デフォルトの名無しさんNGNG
Delphi2005はNGワードでよろ
0573デフォルトの名無しさんNGNG
これがDelphi自滅への道か
0574デフォルトの名無しさんNGNG
不機嫌なユーザ大杉
0575デフォルトの名無しさんNGNG
単に
var
Name: string[30];
と宣言した場合Nameは短い文字列になるのでしょうか?
0576デフォルトの名無しさんNGNG
>>575
?
ヘルプにそう書いてあるだろ。
短い文字列にならなかったのか?
0577デフォルトの名無しさんNGNG
ごめん、正直全然分からないので教えてください。

リムーバブルディスクのハードウェア名からドライブを
取得したいんですが、どうしたらできるのかしら。
リムーバブルディスクを右クリック→プロパティ
でハードウェアタブで「なんたら USB Device」ってなってる
名前のことです。

なんか他にうまいやり方あるのかな。
ここら辺のプログラム組んだ事なくて、ダメダメなんです。

WinXP Del5Pro
0578デフォルトの名無しさんNGNG
せめてこのスレくらい検索しとけ。答えがあるとは限らないにしても。
0579577NGNG
>>578
答えられないなら黙っててください。
初心者相手にしか強い態度に出られないのって哀れですね。
0580デフォルトの名無しさんNGNG
578じゃないけど、このスレでちょっと前にドライブについてわだいになってるよ。
レジストリから取るのが一番確実らしい。さかのぼって見てみたら。
0581デフォルトの名無しさんNGNG
577は検索しなかった自分を反省することができないウジ虫
0582Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ
前に話題になったのは

>でハードウェアタブで「なんたら USB Device」ってなってる
>名前のことです。

とは違うだろ....

吐駄と同じキャラはこのスレにはいらないってば。
0583デフォルトの名無しさんNGNG
Delphiに無関係な話題ですいません。
0584577NGNG
579は私じゃないですが、色々調べてみましたが、
まだ分かりません。もう少し調べてみます。
あmぁ、調べても分からなかったので聞いたワケですが。。
0585デフォルトの名無しさんNGNG
病人の仕業だったのか・・・
0586デフォルトの名無しさんNGNG
ヤフオクの出品ツールを作っているのですが、HTMLソースの取得で躓いています…
WebBrowserに表示したページのソースを取得したいのですが、
IndyのTIhttpを使ってもエラーが出て取得できないのです。

RichEdit1.Text:=idHTTP1.Get(WebBrowser1.LocationURL);

このようにコーディングしたのですが、普通のページ(Yahooのトップページ等)
は無事に取得できました。
しかし、MyAuctionのページ(http://user.auctions.yahoo.co.jp/jp/show/mystatus)を
取得しようとすると、『HTTP1.0 302 Found』のエラーが表示され、取得することが
出来ません…

他の方法でも構いませんので、どなたかご教授頂けないでしょうか…
宜しくお願い致します。
0587デフォルトの名無しさんNGNG
>>586
302ってURLがリダイレクトされてるって言ってるんじゃないかい?
だからそのリダイレクト先のURLを収得してGetしないといけないと思う。
0588586NGNG
>>587
ご回答有難うございます!

早速リダイレクトに関して調べ、TWebBrowserのonNavigateComplete2イベントや
onDocumentCompleteイベントでURLを拾い、パブリック関数に入れて実行したのですが
現象変わらず…でした。
(URL自体に変化がありませんでした…)

しかし、リダイレクトと言うのは考えていませんでしたので、もう少し調べてみます。
本当に有難うございました。
0589デフォルトの名無しさんNGNG
OwnerDataを有効にした状態のListViewで
Itemのメモリを正しく解放するにはどうすれば良いのでしょうか?

例えば、ListView1のOwnerDataを有効にした上で

ListView1.Items.Add;
ListView1.Clear;

とするとMemCheckでリークが検出されてしまいます
0590デフォルトの名無しさんNGNG
OwnerDataなんだから自分でownしないと駄目。
TObjectListとかに自分でインスタンスを保持しといて
ListViewからデータのリクエストがあったらそのリストからインスタンスを渡し
最期にリストごとまとめて自分で解放する。
0591589NGNG
>>590
もしかしてOwnerDataが有効なListViewに項目を追加するにあたっては
Items.Addは不必要(というか、やっては駄目)でしょうか?
ListView項目追加にあたり、単にデータ保持用のインスタンスの項目と
Items.Countを調整してやるだけならリークしてない様なのです
0592586NGNG
スレを汚すようで申し訳ないのですが、結果報告をします。

色々調べたところ、IdHTTPの『HandleRedirects』をtrueに設定することによって
無事取得することが出来ました!
解決に導いていただいた>>587さんに改めて御礼申し上げます。
0593デフォルトの名無しさんNGNG
>>591
Countに個数セットして
OnDataイベントでItem.Indexに対応するオブジェクトを文字列化する
Item.Caption := Format('Data:%d', [Item.Index]);

Itemsには触らない。
0594589NGNG
>>593
ありがとうございます
やっと仮想リストビューの使い方がわかりました
0595デフォルトの名無しさんNGNG
delphi5、win2000で

ci : tcursorinfo;
getcursorinfo(ci);

とすると正常に動作しないです。
delphi5でtcursorinfoのヘルプないけどコンパイルは通ります。
自分何か勘違いしてますでしょうか?
tcursorinfoの構造体が違うんじゃないかなと・・・
0596デフォルトの名無しさんNGNG
cbSize設定し忘れだろ。
ci.cbsize := sizeof(ci);
win32check(getcursorpos(ci));
0597デフォルトの名無しさんNGNG
サンクス
0598デフォルトの名無しさんNGNG
>>589
OwnerData=Trueの時はItems.Add, Insert を行ってはいけない。VCLのバグでリークが発生する。2005で修正されたかは確認できていない。
回避するには、Items.Countで要素数を変更するか、APIで追加を行う。
0599577NGNG
色々と調べていますが、まだ解決できていません。
そこで、質問を変えようと思います。
ドライブ名からハードウェア名を得るにはどのようにしたら
よいのでしょうか?よろしくお願いします。
0600デフォルトの名無しさんNGNG
Win32APIスレで聞きなよ。
0601沸騰シミュレーションNGNG
http://www.vector.co.jp/soft/dl/win95/edu/se131169.html
これと同じようなソフトをDelphiで作りたいのですが
0602デフォルトの名無しさんNGNG
勝手に作れ
0603デフォルトの名無しさんNGNG
>>601
水が沸騰する様子をビデオに撮ってメディアプレーヤーコントロールで再生しましょう。
冷却するときは逆方向に再生するのがお勧めです。
0604デフォルトの名無しさんNGNG
>>598
バグがなかった場合、OwnerDraw:=TrueでAddしたらどうなる(べきな)の?
0605デフォルトの名無しさんNGNG
2005のパスの設定がわからないんですがわかる人いますか?
0606デフォルトの名無しさんNGNG
日本語でもう一度
0607デフォルトの名無しさんNGNG
2005以外で保存したprojectを開こうとしてもエラーがでるです。
で、PATHの設定を弄れば良いのかとおもったわけです?
0608デフォルトの名無しさんNGNG
エラーの内容によるんじゃないかな。
本当にパスが問題なら、.NETの方とWin32の方で別口だから確認しなよ。
0609デフォルトの名無しさんNGNG
>>599
フォームにシェルコンボボックスを貼り付けて、ビジブルプロパティーをフォルスにする。
あとは、シェルコンボボックスのリストアイテム(文字列とグリフ)にアクセスして取得する。

怒るなよ。決してふざけて書いてるんじゃない。最善の策が取れなければ、次善の策で対応することも必要だ。
0610デフォルトの名無しさんNGNG
>>609
せめてカタカナはやめれ
0611577NGNG
Del5にShellComboBoxがなかったので、ダウンロードして
使ってみました。いまいちできそうもない感じですが、
もうちょっと頑張ってみます。
0612デフォルトの名無しさんNGNG
申し訳ありませんが質問させて下さい。(D6 Personal)

2つのフォームを持つアプリケーションを制作しているのですが…

 例えばこのような構成で、
 Unit1→Form1
 Unit2→Form2 Label1

 Unit1において
  Form2.Label1 := 'hogehoge';
 は可能なのに
  Form2.Visible := True;
 ではEAccessViolationクラスの例外としてエラーになります。
 どうすればUnit1からForm2のVisibleを制御できるのでしょうか?
0613デフォルトの名無しさんNGNG
>>612
落ち着け。
0614デフォルトの名無しさんNGNG
Form2 を生成する前にアクセスしてるからだろ
0615デフォルトの名無しさんNGNG
http://www1.cncm.ne.jp/~ogawate/delphi/samples/samples.html
このページ、サンプル一杯あっていいな
0616名無し募集中。。。NGNG
>>612
プロジェクトオプションでフォーム自動作成にしてればuses節に
Form2のpasファイル名書けばアクセスできる。

動的に作成するなら
Form2 := TForm2.Create(Self);
try
Form2に対してアクセス
finally
Form2.Release;
end;
0617612NGNG
>613,614,616
616氏のやり方で出来ました。
どうもありがとうございます。

0618デフォルトの名無しさんNGNG
>>599
delphi getlogicaldrivesでぐぐって最初に出てくる日本語ページを見れ
0619デフォルトの名無しさんNGNG
>>618
それ激しく見当違い
0620デフォルトの名無しさんNGNG
計算プログラムを作ってて、コンパイルは通ったのに、実行したところ
「EInOutError クラスの例外を生成しました。'I/Oエラー(32)'」
とのメッセージが出てきました。
これはどういったことが原因で起こるエラーなのでしょうか?
0621デフォルトの名無しさんNGNG
説明

EInOutError 例外は,ファイルの入出力エラーが発生するたびに生成されます。
0622620NGNG
そういえば

Assignfile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.txt'));
ReWrite(dum_f);

こういうコードのところでエラーが起きていました。
再チェックしてみます。
ありがとうございました
0623デフォルトの名無しさんNGNG
ちゃんとCloseFileしてるか?
0624620NGNG
大学の先生が作られたプログラムを別の目的で動かすために組み替えてる途中です。
今までは正常に動いていたのですが、あれこれ書き換えていた最中にエラーが発生するようになりました。
なんとか>>620にあるようなエラーはなくなったのですが、
今は浮動小数点演算などというエラーがでてきてトレース実行しながら点検中です。
浮動小数点演算に関するエラーは、0での割り算が行われていた場合に発生するエラーだったような気がするのですが、
どなたか教えてください。
0625デフォルトの名無しさんNGNG
>>624
なにを?
0626デフォルトの名無しさんNGNG
>>624
信じなさい
0627620NGNG
信じてみます
0628デフォルトの名無しさんNGNG
>>624
移植前のソフトではどういう対処してたの?
0629620NGNG
私の知識じゃうまく説明できませんが、こんなことをやっています。

A:a.ループ計算 b.固定値
B:a.固定値 b.ループ計算(現在作成中のもの)

X:a.ループ計算 b.固定値
Y:a.固定値 b.ループ計算

XYはABの発展版で、すでにA、XYは完成しています。(私が作成したものではありません)
だからYを元にBを作っていけば簡単だろうと思って、
使われてる変数に注意しながらコピーペーストを繰り返していたところ
難問にぶつかってしまったというわけです。
0630デフォルトの名無しさんNGNG
>>629
そんな漠然とした情報出したって意味ないよ。
エラーの出る箇所を特定してそこにブレークポイントはって
再度実行して各変数の値に異常がないか調べて
異常な値があったらその値がどこでセットされたかを調べて突き止めたら修正。
を地道に繰り返すしかない。
0631デフォルトの名無しさんNGNG
基礎の文法、自分が計算したいことの背景原理、まずそれから
0632620NGNG
明日が期限です。
おっしゃるとおりにやってみます。
うまくいったら報告しにきます。
ありがとうございました。
0633名無し募集中。。。NGNG
>>632
浮動少数発生例外の種類知りたきゃ

try
浮動小数でなんたらかんたら〜
except
on EZeroDivide do ShowMessage('ゼロで除算しちゃった');
on EOverflow  do ShowMessage('オーバーフローれす');
on EUnderflow do ShowMessage('アンダーフローれす');
on EInvalidOp do ShowMessage('無効な演算発生');
end;

て書けば例外の種類に応じたメッセージが表示される
統合開発環境だとあまり意味ないかな
0634デフォルトの名無しさんNGNG
すみません。例外処理についてなのですが。

Text := TStringList.Create;
try
 try
  Text.LoadFromFile(filename);
 except
  on EFOpenError do ShowMessage('エラー');
 end;
finally
 Text.Free;
end;

このようにやっても通常のEFOpenErrorが出てしまいます。
何が原因なのかさっぱり分からないのでアドバイスをお願いします。
0635デフォルトの名無しさんNGNG
filenameのパス文字列をどう生成しているか、
そもそもfilenameが存在しているか?のチェックも必要なんでないの?
0636634NGNG
ファイルを開くことはできています。
しかしプログラムが正しく動いているか確かめるために
わざとエラーを出させようとしたら、例外処理が働いていなかった
というわけです……。
0637634NGNG
補足しますと、上記のエラーだけでなく
同様の方法でEConvertErrorも捕捉できませんでした。
0638デフォルトの名無しさんNGNG
>>634
おかしいな?コピペして(全角空白は半角にしたけど)
動かしたらちゃんと「エラー」って出るよ。

↓コレやってみたらどうなる?デルファイに忠告もらうと思うけどw
procedure TForm1.Button1Click(Sender: TObject);
var text:TStringlist;
begin
try
Text := TStringList.Create;
try

Text.LoadFromFile('123');

except
on EFOpenError do ShowMessage('エラー');
end;

finally
Text.Free;
end;
end;
0639名無し募集中。。。NGNG
>>636
エラーを出させるというのは無効なファイル名を指定して
意図的にEFOpenError例外を発生させるということなのかな?

試しに下のコード書いたらこちらでは動いたけど
ファイル名は存在しない名前で例外を補足出来る
procedure TForm1.Button1Click(Sender: TObject);
var
Text: TStringList;
begin
Text := TStringList.Create;
try
try
Text.LoadFromFile('E:\Temp\aa.tx');
except
on EFOpenError do ShowMessage('エラー');
end;
finally
Text.Free;
end;
end;
0640名無し募集中。。。NGNG
もろかぶり
>>638失礼
0641デフォルトの名無しさんNGNG
IDEから実行してて、デバッガが例外を報告してるのを見て、
例外を補足できてないと勘違いしてるっつーパターンでないの
0642634NGNG
ダメなようです。
「ソースファイルが見つかりません」と出た後に「デバッガ例外が発生」となります。

ちなみにdelphi6 Personalです。
数日前に同じことを試したときはちゃんと動いた気がするんですが……。
0643640NGNG
>>640
どーいたしまして。気にしない気にしない。

>>641-642
ありゃw
なんちゅータイミング。
解決ですな。
0644638NGNG
640じゃないや。
トホホ。
0645デフォルトの名無しさんNGNG
お手を煩わせてしまって申し訳ありません……。

>数日前に同じことを試したときはちゃんと動いた
このときも同じ勘違いしてたのを思い出しましたorz
0646デフォルトの名無しさんNGNG
Del6のFileOpen標準アクションでファイルが選択されてOK押されたかどうかってどうやって判断するの?
0647デフォルトの名無しさんNGNG
単純にダイアログのexecuteを呼ばず、
if not(opendialog1.execute) then exit;
とかやる。
0648デフォルトの名無しさんNGNG
OnAccept

>>647
死ね
0649デフォルトの名無しさんNGNG
質問以外は超初心者禁止なんですけど
0650デフォルトの名無しさんNGNG
たしかに647の内容はひどい
0651620NGNG
ループ計算させてるつもりなんですけど、結果が以下のような感じで最終計算結果だけしかテキストファイルに
出力されません。

49.999996224    22.2169675652865    1.5

--------------------------------------------------------

本来なら

49.999996224    13.1789910114626    0.01
49.999996224    12.9951821606033    0.02
49.999996224    12.9626502250015    0.03
49.999996224    12.951383041687 0.04
49.999996224    12.946190205465 0.05

           (右端の値について0.01*150でループ計算)

49.999996224    22.2169675652865    1.5

こんな感じで150個の値をテキストファイルに出力したいのですが、どのようにすればいいのでしょうか?

----------------------------------------------------------






0652620NGNG
 for k :=1 to 150 do begin 
   
     temp_i0:=0.01*k ;             
     Rkg_setting.P_val[4]:=temp_i0;  

       if not RKG_Routine(RKG_setting,
                     dum_path,
                     dum_fn) then begin
         ShowMessage('計算に失敗しました');
         exit;
       end; //----(if not文)----

      StB_main.panels[0].Text := '出力中…';
      Application.ProcessMessages;
      if not RKG_ResultOut(dum_path,
                       dum_fn,
                       RKG_setting) then begin
      ShowMessage('結果の出力に失敗しました');
      exit;
      end;

 end;//----(for文)----           

  RKG_cal_flag := true;

  RKG_show_result;

  StB_main.panels[0].Text := '';
  
end;
0653デフォルトの名無しさんNGNG
RKG_ResultOutの中の問題だろ
0654620NGNG
他に思いつくような情報が見つかりません。
どうかアドバイスお願いします!
0655620NGNG
チェックしてみます!
ありがとうございました!
0656名無し募集中。。。NGNG
>>654
ファイルに書く時にAppendじゃなくてRewriteを使ってると見た
0657デフォルトの名無しさんNGNG
RKG_ResultOutの中でファイル作成-出力・閉じるまでやってて
150回同じファイル名で作って書き出してるような希ガス。
0658620NGNG
Assignfile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.log'));
    ReWrite(dum_f);

      Writeln(dum_f,'[実施日]');
      Writeln(dum_f,FormatDateTime('yyyy"."mm"."dd',Now));

        :
        :  
        :
        :
 

こんなものを見つけましたが、この残り時間で新しい技術にはとうていチャレンジできません!
0659デフォルトの名無しさんNGNG
RewriteをAppendにする。
0660620NGNG
すみませんが、それらしきコードをいっきにはりつけていきます。
めいわくでしょうが、どうかお許しください。
0661デフォルトの名無しさんNGNG
>>660
だから、RewriteをAppendにするだけ。それで解決。
0662620NGNG
Function RKG_Routine(dum_RKG_setting:TRKG_setting;
                     dum_path:String;
                     dum_fn:String):boolean;
var
  i,j ,k,l           :Integer;
  dum_loop       :Integer;                   
  k_temp         :array of Extended;     
  q_temp         :array of Extended;      
  y_temp         :array of Extended;           
  y_old          :array of Extended;          
  x_temp         :Extended;
  dum_f          :Textfile;
  dum_s          :String;
  dum_dy         :array of Extended;          
  dum_kk         :integer;
  dum_v          :array of Extended;
  dum_row        :integer;
0663名無し募集中。。。NGNG
>>658

AssignFile(dum_f,dum_path+'\'+ChangeFileExt(dum_fn,'.log'));
if FileExists(dum_path+'\'+ChangeFileExt(dum_fn,'.log')) then
Append(fp)
else
Rewrite(fp);

try
 Writelnなんたかかんたら
finally
 CloseFile(dum_f);
end;
0664デフォルトの名無しさんNGNG
だいたい'.log'なんて名前つけてるのになんでRewriteで開くかなぁw
0665620NGNG
>>661さんの言われるとおりにやってみたのですが、問題が起きました。
確かに沢山の結果が出力されるようにはなったのですが、
このプログラムはメモ帳に設定条件が出力され、秀丸に計算結果が出力されるようなプログラムでした。
ここを変更したら、設定条件が沢山出てきてしまいました。

>>663さんの方法もためしてみたいのですが、頭が混乱しています!
0666デフォルトの名無しさん NGNG
パッケージの削除をしたいのですが、
削除されません。
[コンポーネント]-[パッケージのインストール]
→設計時パッケージより選択し「削除」

で削除されるはずが・・・なんででしょう;
0667620NGNG
ジオシティーズのHPを編集してるところです。
一度見ていただきたいのですが。
0668デフォルトの名無しさんNGNG
>>665
計算結果側のRewriteだけをAppendに汁。全部置換したんだろ?
0669デフォルトの名無しさんNGNG
予想される次の質問
今度は全部表示されたんですが、なぜか前回の計算結果まで表示されてしまいます!
0670620NGNG
http://www.geocities.jp/c2_duke/delphi6.txt

こんな感じです。
0671デフォルトの名無しさんNGNG
>>670
新手の釣りにしか思えない
0672620NGNG
釣りじゃなくて、本当に素人です!
//******自分で追加  と書いてある項目以外は、全て先生が作ったものです。
本当に結果が最終結果だけしか出力されずに困り果てています。
0673デフォルトの名無しさんNGNG
>このプログラムはメモ帳に設定条件が出力され、秀丸に計算結果が出力されるようなプログラムでした。
これはDelphiのプログラムとは関係ない話だよ。
プログラム自体は正常に動いてるんじゃないのか(Appendだけじゃ駄目だけど)。
メモ帳とか秀丸とか言われたってこっちは分からないよ。
話すならファイル名いいなよ。
0674デフォルトの名無しさんNGNG
>>672
見てみた。最終結果だけ出すプログラムだから、あたりまえじゃんw
パラメータだけ出力する手続きと結果出力する手続きに分けなきゃできんよ。
0675620NGNG
今から先生に怒られてきます(´・ω・`)
0676デフォルトの名無しさんNGNG
拡張子txtにメモ帳が、logに秀丸が割り振られてる、ってとこだな。きっとw
Appendのままにしていらない項目のWritelnをコメントアウトすれば
とりあえず目的は達成されるんじゃない?
0677620NGNG
先程はどうもです。
怒られはしましたが、ものの一瞬で修正個所を直してくれました。

if FileExists(dum_path+'\'+ChangeFileExt(dum_fn,'.txt')) then
      Append(dum_f)
    else begin
      ReWrite(dum_f);

なんかこんな文章を加えることで動くようになりました。
0678デフォルトの名無しさんNGNG
その文の意味を理解しないと620は今後も同じ質問をすることになるな
0679デフォルトの名無しさんNGNG
それは663とどこが違うのか。

ちょっと自分で考えるようにしたら?
要領よくだけでやってけないよ。
0680デフォルトの名無しさんNGNG
ちなみに。DelphiでもFreePascalでもgpcでも、存在しないファイルに
Appendしてもファイルできるだけで例外になんないみたい。
そらそっちが便利だあね。いまどきこんな古い入出力使わないからいっか。
0681デフォルトの名無しさんNGNG

テキストファイルの内容をMemoコンポーネントへ加筆表示させる方法がわかりません。

処理の過程をMemoコンポーネントへ表示しているのですが

文字をMemoへ加筆表示するには
 memo1.Lines.Add('処理1経過');
 memo1.Lines.Add('処理2経過');
この後、テキストファイルの内容を加筆表示したいのですが
 memo1.Lines.LoadFromFile('test.txt'); 
とするとMemo1に上書きされてしまい以前の表示が消えてしまいます。

レベルの低い質問で申し訳ありませんが,どなたかご教授お願い致します。
0682デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
  sl:TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('C:\Test.txt');
    Memo1.Lines.Add(sl.Text);
  finally
    sl.Free;
  end;
end;
0683デフォルトの名無しさんNGNG
>>682
ありがとうございます。
助かりました。
修行します。
0684デフォルトの名無しさんNGNG
卒論の季節だねえ
つーか、前任のソースくらいあらかじめよんどけや
0685デフォルトの名無しさんNGNG
>>680
>いまどきこんな古い入出力使わないからいっか。
これだからDel厨は・・・
0686デフォルトの名無しさんNGNG
どうなんだろう。
0687名無し募集中。。。NGNG
ファイル存在しないでAppendすると思いっきり例外発生するんだが
最近のDelphiは変ったのか?(Delphi7 Enterpriseでテスト)
0688デフォルトの名無しさんNGNG
FreePascalでも例外になるやん。ファイル作られるのはgpcだけだ。
0689デフォルトの名無しさんNGNG
D4からいきなりD2005に乗り換えて浦島太郎状態です。
VCLコンポーネント(TEditにちょっと手を加えた簡単なヤツ)の登録をしたいのですが、
HELPにある「コンポーネント>コンポーネントのインストール」というメニューに
行き着けず難渋しております。
(ウィザードに沿ってUnitが表示されるまでは行くが)
どなたかご教示願えませんでしょうか。
0690デフォルトの名無しさんNGNG
FAQだ
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi2005%2FFAQ%5D%5D
0691デフォルトの名無しさんNGNG
ありがとうございます > 690
要するに「dclusr」がないとウィザードで選択肢が出てこないようです。
助かりました。
0692デフォルトの名無しさんNGNG
ヘルプの不備がFAQになってるのか・・・・
0693デフォルトの名無しさんNGNG
古いネタで申し訳ないんだけど、
TListで削除や挿入をしてるとなぜ遅いんですか?
削除や挿入を頻繁にやるとしたらどうやって高速化するんですか?

ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その10
http://pc2.2ch.net/test/read.cgi/tech/1064423473/315
http://pc2.2ch.net/tech/kako/1064/10644/1064423473.html
0694デフォルトの名無しさんNGNG
>>693
配列(TList)の挿入削除の計算量がO(n)だから。
O(1)なデータ構造(リンクリストなど)を選択すれば高速化可能だけど
その場合配列のメリットは手放さなければならない。
0695デフォルトの名無しさんNGNG
>>694
Oの意味もカッコ内がなんなのかも、
配列のメリットがなんなのかも、
解決策も、
ぜんぜん通じてこないんですが、私嫌われてます?
0696デフォルトの名無しさんNGNG
>>695
一言で言うとTListの挿入削除は本質的に遅いのでどうにもならないってことだよ。
リンクリストを使うとで解決できるものの今度は
ランダムアクセス(list[3]のように添え字を使ったアクセス)が出来なくなるし
メモリ効率も悪くなる。だから万能な方法はない。
だから問題の性質に応じて一番ましな方法を選ぶ必要がある。

リンク先読めないんだけど何がしたいんだ?
0697デフォルトの名無しさんNGNG
リンク先は、私と同じようにTListが遅いと感じた人が
どのような解決を行っているかをググってみたら出てきただけで、
読んでもわかりませんでした。
ベクター構造とリスト構造があって、挿入と削除は遅いって書いてあるんだけど、
じゃぁ、挿入削除もしなきゃいけないけど、もうちょっと速くならないかって
思ってる同志が楽な方法見つけてないかな?と思って、
質問してみたけどよくわからないので来年あたりまた考えてみます。
0698デフォルトの名無しさんNGNG
最初からTlist.capacityは大きくとってる?
0699デフォルトの名無しさんNGNG
原理的には遅いけど、ポインタずらすだけだから実際的に遅いとは思わないけどね。
0700デフォルトの名無しさんNGNG
>>697
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDeCal%2FMANUAL10H%5D%5D
0701デフォルトの名無しさんNGNG
> 質問してみたけどよくわからないので来年あたりまた考えてみます。

考えて解決できるもんでもないけどね。原理的なものだし。ようは適材適所で選ぶしかない。って >>696 と同じか
0702デフォルトの名無しさんNGNG
>>700
Setって、そんなに凄いんですか?
0703デフォルトの名無しさんNGNG
TList の挿入削除の速度が気になるって、だいたい実際の要素数が数万と数十万とかの場合なような
0704デフォルトの名無しさんNGNG
>>700
setはlist, vectorと保持する情報が等価じゃないし。
DeCalでは等価なの?
0705デフォルトの名無しさんNGNG
>>704
DeCalは「データ構造を非常に簡単に変更できる」というのが長所みたい
0706デフォルトの名無しさんNGNG
アルゴリズムの教科書でも買って読めよ
O(n)もわからんようでは、プログラム組めんと思うが
0707デフォルトの名無しさんNGNG
場合によるんじゃないの?
0708デフォルトの名無しさんNGNG
知らなくても普通に組めるだろ。
ただ、コンテナに対する操作のパフォーマンスの話がしたいなら知っておかないと駄目だろ。
話が長くなりすぎる。
0709デフォルトの名無しさんNGNG
O(1) データ数に関わらず一定の計算量
O(n) データ数に比例した計算量
O(n^2) データ数の二乗に比例した計算量

で、あってる?>識者
0710デフォルトの名無しさんNGNG
識者じゃないが合ってる。
手元の教科書にもそう書いてある。

ちなみにSetだとランダムアクセスできないよね確か。
0711デフォルトの名無しさんNGNG
Delphiのソース弄るのに特に相性のいいテキストエディタってない?
便利なマクロが一杯公開されてるようなの。
0712デフォルトの名無しさんNGNG
Delphi2005
リファクタリングも出来てうわなんだやめ
0713デフォルトの名無しさんNGNG
結局D4から2005への移行は見送り
0714& ◆OTJoAFsiZw NGNG
 その昔 Delphi2.0 時代のの TStringList では、1 万行を越えるような大きな文字列
をロード、もしくは追加しようとしたときに、極端に速度が低下したものだが、その後
修正されたのだろうか?
0715デフォルトの名無しさんNGNG
メモリ16MB時代の話だろ
0716デフォルトの名無しさんNGNG
>>711
テキストエディタって人によって使用感の好みがはっきりわかれてしまうから
あれだけどsakuraエディタとかでいいんじゃないの?
0717ななしへたぐらま ◆XcB18Bks.Y NGNG
>>714-715
Delphi 3で修正されたようです.

ためしに文字列リストにランダムな文字列(長さ40〜80バイトランダム)を追加するベンチマークプログラムを作って調べてみました.
古いPC(MMX Pentium 200MHz RAM32MB Win95)では
Delphi 2.0でコンパイルしたものとDelphi 3やDelphi 5でコンパイルしたものとでは
0行から1万行に追加した場合に約5倍,2万行では約13倍の差が出ました.
新しいPC(Athlon 64 3000+ RAM512MB WinXP Pro)ではそれぞれ約4.5倍,6倍の差になりました.

(なお,Delphi 3ではCapacityプロパティが追加されましたが上記の結果はFalseのままです.)

Delphi 3とDelphi 5のClasses.pasを見るとCapacityを自分で設定しなくてもその数を
4→8→16→32→48→64→以後Capacityが足りなくなるたびに全体の4分の1を増やしているようです.
(Capacityを最初に設定した場合はさらにかなり速くなりましたので,
 あらかじめ数がわかっている場合はやはり設定すべきようです)

手元のDelphi 2.0がスタンダード版なのでソースコードを見ることはできませんが,
もしかしたら単純に4個ずつとか最悪1個ずつという感じで増やしているのかもしれません.
0718& ◆XRJbgbO01w NGNG
>>717
サンクス!
俺はずっと気になってべあ氏のTLightStringsを使っていた。
0719デフォルトの名無しさんNGNG
DelphiのIDEのエディタって超使いにくいんですが、
外部エディタを使えるとか、せめてキーカスタマイズできないのですか?
Turbo Pascalの頃は使いやすかったのに。
0720グラフィック画面のちらつきNGNG
 以下にアップしたサンプルは単にグラフの格子を描くためだけのものです。将来的に
は関数等のグラフを描くソフトを作成しようとしているのですが、グラフのスケールの
拡大・縮小を実行すると画面がちらつきます。マウスドラッグで画面を移動するときは
特に問題はないようです。
 ちらつきの原因は何でしょう?
http://f31.aaa.livedoor.jp/~jword/cgi/nevada/upload/upload.html
の screentest.lzh
0721デフォルトの名無しさんNGNG
>>720
ZoomInとZoomOutでRefreshしてるから。Refreshは一旦背景を消去する。
TMyScreenのControlStyleにcsOpaqueを含めて消去しないようにするか、Refreshの代わりにその自作のDrawでいいんでない?
0722デフォルトの名無しさんNGNG
>>721
 おお、ありがとうです。
 ついでに聞きたいのですけど Invalidate と Refresh の使い分けはどうしたらいいのでしょう?
 ヘルプを見てもよくわからないし、ぐぐってもさっぱりです。
0723デフォルトの名無しさんNGNG
>>722
これの一番下
http://www.itmedia.co.jp/enterprise/0307/04/epn23_7.html
0724デフォルトの名無しさん NGNG
Delphi6personalなんですけどTShellListViewとTShellTreeViewをつかってエクスプローラみたいなの画面作ってるんですけど
TShellListViewの画面のファイルやフォルダをダブルクリックしたら独自の処理をしたいんです。
でOnDblClickにイベントハンドラ指定すると確かに独自の処理ができるけど、その後にファイルをダブルクリックしたら実行されるというエクスプローラと同じ処理が自動的になされてしまいます。この処理は余計なのでなくしたいんですけどどうすればいいのでしょうか。
0725デフォルトの名無しさんNGNG
ふつうのやつ使う
0726デフォルトの名無しさんNGNG
QuadrupleD3を使ってHeightMapを描きたいのですが
メッシュを動的に作成する方法、
頂点を操作する方法、
がわかりません。教えてください。
0727名無し募集中。。。NGNG
>>724
AutoNavigateプロパティをFalse
0728724NGNG
>>727
どうもありがとう!
0729デフォルトの名無しさんNGNG
>>719
TPからそんなに変わってないと思うけど。具体的には?
0730デフォルトの名無しさんNGNG
TPは全てのコマンドのキーカスタマイズが出来たな
0731デフォルトの名無しさんNGNG
コマンドって・・・・
0732デフォルトの名無しさんNGNG
StatusBarコントロールでAutoHint=Trueの設定を有効にしたまま
OnHintイベントハンドラに書かれている処理を実行させる方法はないのでしょうか?
Delphi6 Personalです。
0733こまってますNGNG
質問があります。

Delphi7 Proを使っているのですけど、IDEから起動したプログラムを
終了した時に、デバッガで致命的なエラーが発生した事を示すエラー
メッセージが表示されてしまい再起動を促されるのですけど、どうす
れば解決できるでしょうか?
他の方でエラーメッセージとか表示された事のある人はいるでしょうか?

エラーメッセージが発生する条件は、コンパイラの”ヒント”が表示される
時のみです。例えば、以下のコードを実行して起動して終了した時など。

procedure TForm1.Button1Click(Sender: TObject);
var
B: Byte;
begin

end;

Delphi7はWindowsXP Home Sp1上にインストールしてます。
0734デフォルトの名無しさんNGNG
パッチは全部あててあるのか?
0735デフォルトの名無しさんNGNG
>>734
修正パッチは以下をあてています。

Delphi 7 - Indy ヘルプファイル・アップデート
VCL および RTL ヘルプファイル・アップデート

調べた所、まだこれだけしかないみたいですし。
0736デフォルトの名無しさんNGNG
複数のコントロール(Label)をループをかけて配列に格納したいんですけど、
コントロール名を変数で指定することは可能でしょうか。

lbl_0
lbl_1
lbl_2

とあるときに、0,1,2の部分を変数で管理するということです。
どうすればよいのでしょうか。
0737デフォルトの名無しさんNGNG
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%C5%BA%BB%FA%A4%F2%BB%C8%A4%C3%A4%C6%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BD%E8%CD%FD%A4%B9%A4%EB%A4%CB%A4%CF%5D%5D
0738デフォルトの名無しさんNGNG
ありがとうございますorz
0739デフォルトの名無しさんNGNG
>>735
Delphi 7.1 update出てるよ
0740ななしへたぐらま ◆XcB18Bks.Y NGNG
>>719
Open Tools APIでプログラムを書けばキーアサインを追加したりできるようなのですが,
情報がほとんど無い少ないのが難点です.
私はサンプルなどを見よう見まねで
[Alt]+[I]/[J]/[K]/[M]でそれぞれ上左右下に移動するようにしています.

>>726
ゲーム製作技術板のDelphi関連のスレの方がレスがつきやすいと思いますよ.
いくつかリンクを貼っておきます.
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc5.2ch.net/test/read.cgi/gamedev/1097836469/l50
Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/l50
Delphiでアクションゲームが作りたい!! Part2
http://pc5.2ch.net/test/read.cgi/gamedev/1027482533/l50
0741デフォルトの名無しさんNGNG
Delphi6を始めた者です。
ServerからClientにファイルを転送したいと思っています。
どのように書けばよろしいでしょうか。。
0742デフォルトの名無しさんNGNG
>>741
まさか「サンプルを提示しろ」ってことじゃないよね?
まずは地道な検索から。
0743デフォルトの名無しさんNGNG
>>742
ご返答ありがとうございます。
ClientからServerには送れたのですが(´・ω・`)

Delphiのネットワークプログラミングについて書かれている
オヌヌヌの本はありますでしょうか?

とりあえずは地道に検索してみます(`・ω・´)
0744デフォルトの名無しさんNGNG
はじめまして。
Delphi7を使っています。
XMLのパースをRelaxNGで行いたいのですがどうやるのでしょうか?
0745デフォルトの名無しさんNGNG
Delphi6(パーソナル)で、
variantのバイト数を取得したのですが、
どのようにしたら良いのでしょうか?
0746デフォルトの名無しさんNGNG
取得したのをどう使うのかまで面倒みろと?
0747デフォルトの名無しさんNGNG
>>745
そしたら次のステップとして Stringのバイト数の取得に挑戦しる。
0748745NGNG
すみません。誤植でした。
正>variantのバイト数を取得したいのですが、
0749デフォルトの名無しさんNGNG
誤「植」なのか
0750デフォルトの名無しさんNGNG
ラベルコントロールのOnMouseEnterやOnMouseLeaveのようなイベントを
ほかのコントロールでも実現させる方法ってありますか?Del6です。
0751デフォルトの名無しさんNGNG
>>745
VarToStrと、Lengthを検索しる
0752デフォルトの名無しさんNGNG
>>750
とりあえず、OnMouseMoveでやってみたら。
コントロールの上にマウスポインタがあると発生する。
あるいは、ウインドウメッセージをハンドルする。
0753デフォルトの名無しさんNGNG
文字列置換のための StringReplace って便利なんだけど、処理がやたら遅い(Delphi5)。
たとえば 'Delphi' という文字列を1万個含む1MB程度のテキストで、 'Delphi'を
'Borland' に置換するとちょっと古いマシン(Pentium 800MHz)では4分くらいかかる。
検索に AnsiPos を使ってるのが原因だと思うのだが、最近のDelphiでは少しは早くなっ
たのかな?
0754デフォルトの名無しさんNGNG
うーん、文字列の置換がどう行われるかを想像できれば遅さは納得の範囲なんですけどね
0755デフォルトの名無しさんNGNG
>>753
そういうのをどう解決するのかがプログラムの醍醐味なわけよ
0756デフォルトの名無しさんNGNG
そうそう。がんばれば1桁速くできそうだね、それ。
0757高速置換NGNG
まず検索関数から
//高速版 AnsiStrPos
function AnsiStrPosEx(StrStart, StrEnd, SubStrStart, SubStrEnd: PChar): PChar;
var
 p, ps: PChar;
 SL  : Integer;
begin
 p := StrStart;
 SL := SubStrEnd-SubStrStart;
 Result := Nil;
 while p < StrEnd do
 begin
  ps := SubStrStart;
  while ps^ = p^ do
  begin
   Inc(p);  Inc(ps);
   if ps^ = #0 then
   begin
    Dec(p,SL);
    Result := p;
    Exit;
   end;
  end;
  if p^ in [#$81..#$9F, #$E0..#$FC] then Inc(p);
  Inc(p);
 end;
 Result := Nil;
end;
0758置換前半NGNG
function ReplaceStr(const S, FindStr, RepStr: string; UpLow: Boolean): string;
var
 PosList   : TList;
 DestIndex  : Integer;
 i,Count   : Integer;
 p, e, ps, pe: PChar;
 zs, zo: String;
begin
 zs := S; zo := FindStr;
 if UpLow then //大・小文字を区別しない
 begin
   zs := AnsiLowerCase(zs);
   zo := AnsiLowerCase(zo);
 end;
 Result := S;
 if FindStr = '' then Exit;
 PosList := TList.Create;
 try
  p := PChar(zs);
  e := p + Length(S);
  ps := PChar(zo);
  pe := ps + Length(FindStr);
  while p < e do
  begin //ソース文字列のどの位置に置換すべき文字列があるかをリストに保持
   p := AnsiStrPosEx(p, e, ps, pe);
   if p = nil then Break;
   PosList.Add(p-PChar(zs)+PChar(S));
   Inc(p, Length(FindStr));
  end;
  if PosList.Count = 0 then Exit;
0759置換後半NGNG
  //置換後の文字列長さを計算し、バッファ領域を確保
  SetString(Result, nil, Length(S) +
   (Length(RepStr) - Length(FindStr)) * PosList.Count);
  p := PChar(S); //p を文字列の先頭に戻す
  DestIndex := 1;
  //位置リストを見ながらソースからバッファへMove。もちろん置
  //換すべきところでは、置換すべき文字列をMove。
  for i := 0 to PosList.Count - 1 do
  begin
   Count := PChar(PosList[i]) - p;
   Move(p^, Result[DestIndex], Count);
   Inc(p, Count);
   Inc(DestIndex, Count);
   Move(RepStr[1], Result[DestIndex], Length(RepStr));
   Inc(p, Length(FindStr));
   Inc(DestIndex, Length(RepStr));
  end;
  e := PChar(S) + Length(S);
  Move(p^, Result[DestIndex], e - p);
 finally
  PosList.Free;
 end;
end;
0760デフォルトの名無しさんNGNG
いいねいいね、そんな感じ。置換すべき文字列の位置を一括して求め、置換後の長さを
計算し、メモリを確保してコピーすると、最少回のコピーで複数置換が出来るよね。
0761デフォルトの名無しさんNGNG
デルフィ2005でEXEファイルを作る方法を教えてください。
0762デフォルトの名無しさんNGNG
AnsiPosのPChar版のAnsiStrPosがあるからそれ使え。
それから大量の文字列を処理するのが分かってるなら
汎用性は欠けるけど拡張可能な自前のバッファ確保してそこに書き込めばよし。
汎用性を持たせるにしてもわざわざリスト持って長さ算出してなんて
オーバーヘッドでか過ぎ。

妄想終わり。
0763デフォルトの名無しさんNGNG
確かに妄想だな
拡張を多数回やるから文字列の挿入が遅いのに
>>757 からのはオーバヘッドないよ。 汎用性も十分
0764デフォルトの名無しさんNGNG
リスト生成廃棄のオーバーヘッドがあるだろ。
特に検索個数が0, 1がメインの場合無駄が大きい。
なんにしても計らなきゃ分からない。
0765デフォルトの名無しさんNGNG

レベルの低い質問です。ごめんなさい。

MemoとRichEditの違いについて

Memoコンポーネントにテキストを入れ表示したものに対し、
マウスの第一ボタンで範囲をドラックし範囲指定し第二ボタンでコピーはできるのですが、
Memoの変わりにRichEditを使用すると、第一ボタンでは同じように範囲指定できるのですが、
第二ボタンでのコピー、カットが出来ません。

同じように使うことは出来ないのでしょうか。

どなたか、ご助言お願いいたします。
0766デフォルトの名無しさんNGNG
>>758の置換が早いのは>>760が指摘している理由もあるが何より>>757の
検索関数の仕様(テキストの途中から途中までの範囲で検索でき、かつ
テキストの長さを測るなどという処理を行わない)が優れていることが
大きい。俺は大いに感銘を受けた。
>>7621=764の言っていることは>>763が指摘したとおり。
それにしてもくだすれでこんな質の高いコードを目にするとは!
アップしてくれた人、ありがとう。
0767デフォルトの名無しさんNGNG
strings をGetTextによってstringに変換して、
そのstringを、もう一度stringsに戻すにはどうすればいいでしょうか?
(改行コードを含むstringからstringsの作成と考えていただいてもよいです。)
0768デフォルトの名無しさんNGNG
ORACLEテーブルのBLOB型列データをoo4oで読み込みたいのですが、
サンプルがあるURLまたは具体例などを教えて頂けないでしょうか?
0769デフォルトの名無しさんNGNG
>>767
?
TStrings.Textにいれてやるんじゃ不満なのか?
0770768NGNG
すみません、自己レスです。
とりあえず、サンプルが見つかりました。
0771デフォルトの名無しさんNGNG
晒せよ
0772デフォルトの名無しさんNGNG
Win2k、D6Personalでテキストエディタを作っているのですが、XPで実行するとやたら動作が遅いです
作っている2000で実行する分には何の問題もないのですが原因あるのでしょうか?

一応、下記のサイトを参考にルナスタイルに対応させてます
ttp://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html
0773ななしへたぐらま ◆XcB18Bks.Y NGNG
>>762
Delphi 5のSysUtils.pasを見るとAnsiPos関数はStrAnsiPos関数を呼び出していますよ.

>>765
メモコンポの右クリックで出てくるポップアップメニューと完全に同じにする方法はわからないのですが
とりあえずコピーとカットができればよいのでしたら…

・TPopupMenuコンポを新たに1個置く.
・リッチエディットコンポのPopupMenuプロパティにそのコンポを割り当てる
・TActionListコンポを1個置く(すでに置いてあればそれを使っても良い).
・それをダブルクリックしてアクション一覧ウィンドウを出す.
・[Shift]+[Insert]を押して『標準アクション』ウィンドウを出す
 (または[Insert]キーがなかったら▼をクリックして『標準アクションの新規追加』をクリック)
・分類が『編集』になっている項目をすべて選んでOKをクリック
・さっきおいたTPopupMenuコンポをダブルクリックしてメニューデザイナを出す
・空のメニュー項目が選択状態になっていると思うので,オブジェクトインスペクタでActionプロパティにEditCopy1を割り当てる
・空のメニュー項目が増えているのでそれをクリックで選び,オブジェクトインスペクタでActionプロパティにEditCut1を割り当てる
・同様にほかのアクションも追加
0774デフォルトの名無しさんNGNG

765です。
773さん、ご丁寧にありがとうございます。
0775デフォルトの名無しさんNGNG
メモ帳をやっと作れるようになった初心者です。
スキルアップの為に簡単なプログラムを作りたいのですが、
何がお勧めのものはないでしょうか?
ちなみにdelphi6パーソナルを使っています。
よろしくお願いします。
0776デフォルトの名無しさんNGNG
>>775
頻繁使いそうなところで圧縮、解凍ソフト
0777デフォルトの名無しさんNGNG
>>776
ありがとうございます。がんばって作ってみようと思います。
0778デフォルトの名無しさんNGNG
DelWikiのTipにある"フォームやコントロールの状態を保存・復旧するには"ですが
複数のFormでも一つの設定ファイルに書き込み&読み込みする方法、何かよいやり方はあるのでしょうか?
0779デフォルトの名無しさんNGNG
>>775
メモ帳って確か文字列の置換もできないし上方向の検索もできなかったんじゃ
なかったっけ?
だから圧縮、解凍ソフトもいいけど、メモ帳の機能を強化してもいいのでは。
0780デフォルトの名無しさんNGNG
>>775
webやメール系の文章を扱うのなら、複数の文字コードのテキストの
読み込み・変換ってのを付けるってのも良いかも。

自分で組んでもそんなに難しくはないけど、nkf.dllを使えばより簡単だし
外部dllの使い方が分かって、いろいろなdllを利用できるようにもなるから、
非常に有益だと思う。
0781デフォルトの名無しさんNGNG
>>778
ただのストリームだから追加していけばいいんじゃないの。
ただし先頭のフォームは新規でファイルを作り、
読み書きするのは常に決まった順番でないといけない。
例えばForm3を開くからForm3だけロードは難しい。
0782デフォルトの名無しさんNGNG
あの、低級な質問なんですが
EXEのアイコンってDelphi2005で作れるのでしょうか?
作れたらどうやって作るのか教えてください。
0783デフォルトの名無しさんNGNG
ツール|イメージエディタ
フリーウェアのがよっぽど使いやすいが。
0784782NGNG
>>783
ありです
フリーで探してみます
0785デフォルトの名無しさんNGNG
オイラはEdgeで作ってる
0786デフォルトの名無しさんNGNG
プログラム内で実行マシンのプライベートIPを取得したいのですが、どうしたら良いのでしょうか?
0787デフォルトの名無しさんNGNG
>>786
>実行マシンのプライベートIP
というのが意味不明だけど、こういうことか?
ttp://www.borland.co.jp/qanda/delphi/d0009357.html
0788デフォルトの名無しさんNGNG
>>787
LANにぶらさがってるマシンに割り当てられるプライベートIPを取得したいという意味だったのですが
ClientSocketを貼ればできるような気がしてきました、ありがとうございます
0789デフォルトの名無しさんNGNG
冬休み暇なので無料版でブラウザを作ってるのですが
標準で使うブラウザ情報ってレジストリのどこにあるのですか?
できたらレジストリからデータの取得方法も教えてください
0790デフォルトの名無しさんNGNG
>789
HKEY_CLASSES_ROOTのhtmlfileとhttpとhttps
TRegistryのRootKeyを設定して、OpenKeyでキーを開いて、ReadStringで値を読む。
0791デフォルトの名無しさんNGNG
接続中にServerでClientのIPを取得したいのですが、どうすれば良いでしょうか。
0792デフォルトの名無しさんNGNG
>>791
TIdUDPServerならOnUDPReadイベントで渡されるABinding.PeerIPで取れるが
他は試したことがないのでわからない。
0793デフォルトの名無しさんNGNG
>>790
ありがと(
0794デフォルトの名無しさんNGNG
何度もすいません
var
  Reg: TRegIniFile;
begin
Reg := TRegIniFile.Create('HKEY_CLASSES_ROOT\htmlfile\shell\open\');
  try
ShowMessage(Reg.ReadString('command', '', ''));
finally
Reg.Free;
end;
end;

こんな感じでやってみたのですが何も出力されません
regeditで見てみて、(標準)というところに格納されているのですが、どうやって取り出すのでしょうか?
0795デフォルトの名無しさんNGNG
ScrollBoxにImageを貼り付けImageのAutoSizeをTrueにすればスクロールバーでは画像を動かすことが
できますが、このとき画像をマウスでつまんで(^^;)動かすにはどうしたらいいのでしょう? 次のよ
うにやってみたのですが全然ダメでした。
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 If Button = mbLeft Then Image1.BeginDrag(False);
end;

procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 if Source is TImage then
 begin
  Accept:=True;
  Image1.Left:=X;  Image1.Top:=Y;
 end;
end;

procedure TForm1.ScrollBox1DragDrop(Sender, Source: TObject; X,
 Y: Integer);
begin
 Image1.Left:=X; Image1.Top:=Y;
end;
0796デフォルトの名無しさんNGNG
>>795
Image1.DrugMode = dmAutoMaticにしてないのではないかという気もするが。
それ以上に気になるのが、スクロールバーのPositionプロパティに値を代入していないことなんだが。
これだと、スクロールボックスの中で、イメージ1がスクロールバーに関係なく動いてしまうんじゃないか。
0797795NGNG
ああ! そうだと思って以下のようにしたのですが結果は同じです。
しかし、ScrollBox1.DrugMode = dmAutoMaticにすれば時々動きますが変な動きをします(^^;)。
こういう場合(ScrollBoxがImageのParent)はドラッグしたいのはImageなので
ScrollBox1.DrugMode = dmManual
でいいと思うのですけど・・・・。
procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source is TImage then
begin
Accept:=True;
Image1.Left := X;
Image1.Top := Y;
ScrollBox1.HorzScrollBar.Position := -X;
ScrollBox1.VertScrollBar.Position := -Y;
end;
end;
0798デフォルトの名無しさんNGNG
>>795
はるか昔に、delphi-MLで同じような質問を見た記憶がある。
「猫の手スクロール」等のキーワードでMLを漁ってみてそ。
0799デフォルトの名無しさんNGNG
ドラグ関係なし。
0800デフォルトの名無しさんNGNG
ドッキングやメニューをOfficeXP風にしたいのですが、そのようなコンポーネントはないでしょうか?
0801デフォルトの名無しさんNGNG
>>795
最近同様の質問があったようなと・・・
http://pc5.2ch.net/test/read.cgi/tech/1062422335/490-501
0802デフォルトの名無しさんNGNG
>>800
Toolbar2000
ttp://www.jrsoftware.org/
TBX(Toolbar2000のアドオン。要Toolbar2000)
http://www.g32.org/tbx/index.html

DecExpress ExpressBars Suite
ttp://www.devexpress.com/products/VCL/Exbars

メニューのみなら
XPMenu(フリー)
ttp://www.shagrouni.com/english/software/menu.html

ツールバーのみなら
TMS TAdvToolButton
ttp://www.tmssoftware.com/
0803デフォルトの名無しさんNGNG
>>801
それを参考に
 private
  FDownFlg :Boolean;
  FPosX :Integer;
  FPosY :Integer;

procedure TForm1.ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDownFlg := True;
 FPosX := X; FPosY := Y;
end;

procedure TForm1.ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDownFlg := False;
end;

procedure TForm1.ScrollBox1MouseMove(Sender: TObject; Shift: TShiftState;
 X, Y: Integer);
begin
 if FDownFlg then
 begin
  ScrollBox1.HorzScrollBar.Position := X-FPosX;
  ScrollBox1.VertScrollBar.Position := Y-FPosY;
 end;
end;
としましたが、だめでした(;_;)。

0804デフォルトの名無しさんNGNG
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FPosX := X;
 FPosY := Y;
end;

procedure TForm1.Image1StartDrag(Sender: TObject;
 var DragObject: TDragObject);
begin
 (Sender As TControl).Enabled := False;
end;

procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
 (Sender As TControl).Enabled := True;
end;

procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 Accept := True;
 (Source As TControl).Left := X - FPosX;
 (Source As TControl).Top := Y - FPosY;
end;
では何とか動きました。ただマウスの位置によっってはImage1MouseDownしただけで
(つまりドラッグしていないのに)そのマウスの位置にImage1のLeft、Topが移動し
ます。
0805デフォルトの名無しさんNGNG
>>803
OnMouseMove で FPosX と FPosY を更新してないね

Image の上で操作したいのになぜ ScrollBox のマウスイベントを使うのか謎
0806デフォルトの名無しさんNGNG
あと変化分だけスクロールするなら

ScrollBox1.HorzScrollBar.Position := X-FPosX;

じゃなくて

ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + X-FPosX;

のような
0807デフォルトの名無しさんNGNG
行番号を表示するやり方教えてください・・
0808デフォルトの名無しさんNGNG
標準では無理なんじゃないの。そういうアドインがあると言うのも聞いたことないし。
0809791NGNG
>>792
なるほど。ありがとうございます。


当方6Personalなのですが�_っぽいですか。
0810デフォルトの名無しさんNGNG
2005CDの焼き直し版来たぞ
0811デフォルトの名無しさんNGNG
配列プロパティで、レコードの読み書きをする場合、
ゲッターは値渡しになるのでしょうか?
だとしたら、アクセスに無駄があると思うのですが、
かと言って、プロパティでポインタを返すのも変ですよね?
0812デフォルトの名無しさんNGNG
>>809
6PerでもIndyをインストールすれば良いはず。
インストールしたとして、TIdUDPServerでいいかどうかはおまいさんの作りたいソフト次第。
他のコンポについてはわからないから、偉い人降臨きぼん。
0813デフォルトの名無しさんNGNG
Indyで指定したURLがリンク切れ(Not Foundとか)になってないかどうか調べたいのですが、
どうしていいのか見当も付きません。
なにか良い方法はありませんか?
0814デフォルトの名無しさんNGNG
>>813
ResponseCodeのことか?
0815813NGNG
まさにそれでした。ありがとうございます!
0816デフォルトの名無しさんNGNG
バイナリを弄るツールを作りたいのですがどのようにソースを打ったらいいのでしょうか?
バージョンは2005です
0817デフォルトの名無しさんNGNG
>>807
Delphi2005
0818デフォルトの名無しさんNGNG
>>816
実際に弄るコードはこんな感じ。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%C6%C9%A4%DF%BD%F1%A4%AD%A4%B9%A4%EB%A4%CB%A4%CF%5D%5D#content_1_7
0819デフォルトの名無しさんNGNG
Delphi2005なのですがポップアップで「致命的なエラーです。」と出てブラクラ状態になりました。
助けてください
0820デフォルトの名無しさんNGNG
>>819
それじゃ答えようがない。
どんなコンポーネットが配置しあって、どういう状態でポップアップメニューを出すとエラーになるのか。
フォーム上はどこでもエラーになるのか、特定のコンポーネントの上なのか。
どのユニットのどのメソッドでエラーになっているのか。
(多くはInterface部でUsesしているユニットでエラーが出ていると思う。存在しないオブジェクトをたたいていることが多い)
このへんを上げたら、何か反応が返ってくるかも。

あとブラクラ状態って何だ?
0821デフォルトの名無しさんNGNG
>>820
アプリを作っている途中で一回コンパイルに失敗してから終了させたらこういうエラーがでて閉じても閉じても閉じられませんでした。
ちなみにほかのときは大丈夫でした。
で、最終的には再起動して終了させました
0822デフォルトの名無しさんNGNG
var
MS: TMemoryStream;
s: string;
begin
MS := nil;
try
MS := TMemoryStream.Create;
s := 'ほげほげ';
MS.Write(s, Length(s));
MS.SaveToFile('c:\ほげほげ.txt');
finally
MS.Free;
end;
end;

といったような事をやると、保存したファイルが文字化けしたような状態になってしまうのですが
ちゃんと保存する方法はないのでしょうか?
普通ならTStringListあたりを使うんだと思うのですが、改行コードが自動的にCRLEになってしまうのでいやなんです。
0823デフォルトの名無しさんNGNG
MS.Write(s[0], Length(s));
じゃなかったっけ?
0824デフォルトの名無しさんNGNG
>>821
配置したコンポーネントを参照するコードを書いて、その後仕様変更でコンポーネント削除して、コードはそのままなんじゃないか?

0825デフォルトの名無しさんNGNG
>>823
stringは添え字1から。
0826デフォルトの名無しさんNGNG
D2005 使うなよ・・・・・
0827デフォルトの名無しさんNGNG
>>826
なんで?すごくいいんだけど?
0828デフォルトの名無しさんNGNG
どこがいいの?
0829デフォルトの名無しさんNGNG
D7 よりバグがいっぱいで楽しい
0830ななしへたぐらま ◆XcB18Bks.Y NGNG
>>811
『Object Pascal言語ガイド』より(Delphi 4版ですが)―――

・静的配列型,レコード型,集合型の関数結果の場合,値が1バイトを占有する場合はALに,値
 が2バイトを占有するときにはAXに,値が4バイトを占有する場合はEAXに結果が返される。そ
 の他の場合は,宣言されたパラメータのあとに関数に渡される追加のvarパラメータに結果が返さ
 れる。

―――ということでレコード型では値渡しにはならないようですが,
1レコード全体の内容をコピーすることには変わりなく,
それによるオーバーヘッドが無くなるわけではないので
大きなレコードを大量に処理するような場合は影響が出るかもしれません.

一方,レコード型の値をポインタで渡すことは変ではないと思います.
私のつたない経験ではむしろレコード型のポインタ型にする方が使いやすいと思います.
なぜならレコードの一部だけを変更する処理がシンプルになるからです.

レコード型ならこんな感じ:
 Rec := NantokaObj.Records[i];
 Rec.FamilyName := 'Sato';
 NantokaObj.Records[i] := Rec;

ポインタならこんな感じ:
 NantokaObj.Records[i]^.FamilyName := 'Sato';

※ポインタの場合でもレコード全体をコピーする場合は以下のようにそれぞれ1行で書けます.
NantokaObj.Records[i]^ := Rec;
Rec := NantokaObj.Records[i]^;
0831ななしへたぐらま ◆XcB18Bks.Y NGNG
>>791
TIdTCPServerならピアスレッドのConnection.Socket.Binding.PeerIPで取れるようです.

特定クライアントとの接続に関するイベントハンドラ(OnServerConnectなど)では
パラメータAThreadがそのピアスレッドですからここから参照できます.

接続中に一覧を取得したい場合はThreadsプロパティにピアスレッドのリストが入っているのでこれを使います.

var theList: TThreadList; ClientIP: string;

 theList := IdTCPServer.Threads.LockList;
 try
  // 接続している各クライアントについて…
  for i := 0 to pred(theList.Count) do
  begin
   theThread := TIdPeerThread(theList[i]);
   ClientIP := theThread.Connection.Socket.Binding.PeerIP;

   // ※処理※

  end;
 finally
  IdTCPServer.Threads.UnlockList;
 end;
0832デフォルトの名無しさんNGNG
>>823, >>825
キタ━━━(゚∀゚)━━━!!!!!
上手くいきました。サンクスです。
0833813NGNG
たびたび質問すみません。
>>814さんに教えて頂いたResponseCodeをさっそく試してみたのですが、
URLの指定の仕方がまったくわかりません。
どうやって指定すればいいのでしょうか?
0834デフォルトの名無しさんNGNG
>>833
Get なり Head なりのメソッドでリクエストかけれ
0835デフォルトの名無しさんNGNG
状態を知りたいだけなら Head か
0836813NGNG
headに404なアドレスを渡すとエラーが発生してしまうのですが、
これは
try
IdHTTP.head('http://tyometyome.com/');
except
end.
のようにスルーしちゃっていいものなんでしょうか?
0837811NGNG
>>830
詳細なご解説本当にありがとうございました。
Delphiでは、なるべく直感的なプログラミングを心掛けていましたが
この場合は、ポインタを使ったほうがよりスマートになりそうですね。
0838デフォルトの名無しさんNGNG
>>836
それは813がやりたいこと次第だな。
言語例外はライブラリが「あえて」起こすもので、単なるエラーとは違う。
どう処理するかはプログラマーがやりたい事に即して決めるものだ。
0839デフォルトの名無しさんNGNG
del4,5,6,7のプロ版のうち、どれか一つ友人からもらうことになりました。
どれがおすすめですか?

一応、自分のマシンは400MHZ,256MBのAMDK6-2マシンです。

使用目的は、Delphi言語の学習&フリーウエアの制作(夢)です。
友人は6,7のうちどちらかを手元に残して置きたいそうなので、
4,5あたりをもらおうかと思うのですがどうでしょう?
0840デフォルトの名無しさんNGNG
……。
0841デフォルトの名無しさんNGNG
6のPersonalで十分だろ
0842839NGNG
>>841
いや、その友人はプロ版しかもっていないので
パーソ版をくれとはいえないのです。
0843デフォルトの名無しさんNGNG
通報しますた。
0844デフォルトの名無しさんNGNG
>>842
6のプロ最強っす。
もらっとけばー。
0845デフォルトの名無しさんNGNG
>>839
ずばり6。
5でも悪くはないが、6にでは、一部のイベントが拡張されている(TlabelのOnMouseEnterなど)。
7は、重いし、6とあまり変わってない。仕様許諾で、個人情報をもっていかれるのが気色悪い。
0846デフォルトの名無しさんNGNG
だからDel7は登録せずとも使えると何度言えば・・・
0847デフォルトの名無しさんNGNG
>>839
釣られているかと思うが、マジレスするとさ、
その友人は多分、アップグレード版で各バージョンを
揃えているはずだからさ、アップグレードした前のバージョンを
人にあげるのは、ライセンス違反だから気をつけなよ。

Borlandはかなりライセンスについてはケチなので。
0848デフォルトの名無しさんNGNG
いや、839とその友人の人格が融合して一人になれば全バージョン使い放題だよ。
0849デフォルトの名無しさんNGNG
6はPersonal版のおかげで一番多く出回っているし開発実績も多いと言ってみる。
0850デフォルトの名無しさんNGNG
> 使用目的は、Delphi言語の学習&フリーウエアの制作(夢)です。

6per でいいじゃん。ライセンスもオッケーだし。
0851デフォルトの名無しさんNGNG
>>849
Delphiでぐぐると
>Borland - Delphi 6 Personal Download
がトップ項目に出てくるしな・・・
某にとっていいこととも思えないが。
0852デフォルトの名無しさんNGNG
母集団が大きくなるメリットとタダで配布のデメリット
どちらが得かは非常に微妙なところだ
0853デフォルトの名無しさんNGNG
per落として浮いた金で書籍買うわけでもなし
単に潰した暇をドブに捨ててるだけだから日本全体の損失だよ。
そんな暇があったら働いて彼女作って子供作って収入を力の限り消費しなさい。
0854813NGNG
>>838さん、レスthxです。
例外処理は「もうだめぽ」というよりは「注意」程度のものとして考えてもいいんでしょうか
てっきりもうなにもできないからプログラム死ぬのを待つもんだと思ってました。
やっぱりエラートラップ仕掛ける事にします。ありがとうございました。
0855デフォルトの名無しさんNGNG
try
IdHTTP.head('http://tyometyome.com/');
ヘッダが取れた
except
ヘッダが取れない
end.
で分岐するコードを書けばいいんだろ
0856デフォルトの名無しさんNGNG
まっ、これからDelphiやり始めることが果たしていいことなのかどうかは微妙。
オレだったらC#をすすめるが
0857デフォルトの名無しさんNGNG
end; な
0858813NGNG
>>855さん
そんな感じでやってみる事にします。
取得できないときにResponseCodeを使うことにしました。
0859デフォルトの名無しさんNGNG
C#は意外と難しいからC++のように挫折する可能性あり
0860デフォルトの名無しさんNGNG
Delphiより簡単、入門本も山ほどあるし
0861デフォルトの名無しさんNGNG
ヘルプも充実してるしね
0862デフォルトの名無しさんNGNG
>>839
DVDに全部焼けばいいじゃないか。
それよりも、本気でやるならもう少しPCいいもの使ったほうがいいいよ。
0863デフォルトの名無しさんNGNG
メディアの話ではないんだが・・・・
0864まとめNGNG
>>839
Delphi6 Personalは無料で入手可能。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%5D%5D
それに対してもらうのはライセンス違反の可能性大。
違反してまで古い4,5を使うメリットはないからやめとけ。
0865デフォルトの名無しさんNGNG
>>866
だまりなさい いぬちくしょうめ
おまえに しゃべる けんりなど ないのです
0866デフォルトの名無しさんNGNG
わんわん
0867デフォルトの名無しさんNGNG
ついに でるふぁい を てにいれたぞ
0868デフォルトの名無しさんNGNG
→そう、かんけいないね

  ゆずってくれ!たのむ!

  ころしてでも、うばいとる
0869デフォルトの名無しさんNGNG
>>856
C#rろくにやってないのがばればれ
0870デフォルトの名無しさんNGNG
>>869
>>856はライターですから…
0871デフォルトの名無しさんNGNG
>>867-868
ガラハドワラタ
0872デフォルトの名無しさんNGNG
>>869 はC#を挫折したのか? アフォばればれだな
0873デフォルトの名無しさんNGNG
938 :デフォルトの名無しさん :04/12/30 09:06:54
今年、ちょと気になったこと。

GDN掲示板でDel>>>C#乗り換え厨らしい人をたくさん見たこと。

>>869 みたいに沈みかけた船から乗り換えられない人もいるんだな
0874デフォルトの名無しさんNGNG
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室だけじゃ檻足りないのかな。
0875デフォルトの名無しさんNGNG
冬休みに突入するといろんなことがある。
0876デフォルトの名無しさんNGNG
ClientSocketとServerSocketでListBox全体を送受信するにはどうすればいいんでしょうか(^^;)
0877デフォルトの名無しさんNGNG
>>876
プロトコルを決めれば自ずと結果は導き出されるだろ・・・
0878デフォルトの名無しさんNGNG
馬鹿は無理してレス付けなくていいよ。
部屋の掃除でも指定なさい。
0879デフォルトの名無しさんNGNG
SendText,ReceiveBuf(ClientReadイベントで処理) を使う
ただしSTX,ETX(crlf)等の区切りを意識して送受信
0880876NGNG
>>879
ありがとうございます。やってみます。
0881デフォルトの名無しさんNGNG
ListBox1.Items.Textをバイナリで送るとか
0882デフォルトの名無しさんNGNG
>>802
Toolbar2000とTBXを使ってみたいんだけど、ライセンスがよくわからん…。
フリーウェアなの?
0883デフォルトの名無しさんNGNG
>>882
シェアウェア
0884デフォルトの名無しさんNGNG
>>883
Toolbar2000のregisterのところに
Registration is required if you use Toolbar2000 in any applications that you or your organization are profiting from (e.g., commercial or shareware).
とあるけど、これってフリーウェアなら登録は必要ありませんってことじゃないんですか?
0885デフォルトの名無しさんNGNG
ありがとうございました。
0886デフォルトの名無しさんNGNG
タスクバーのアプリケーションウィンドウを右クリックしたときに出るメニューを
編集するにはどうしたらよいのですか?
0887デフォルトの名無しさんNGNG
タスクバーのウィンドウ?
0888デフォルトの名無しさんNGNG
GetSystemMenu(
AppendMenu(
とかを使う。
0889デフォルトの名無しさんNGNG
>>888
うげ、ちらっと調べてみたけどこんなにめんどくさい方法しかないの?
MainMenuとかみたいにメニューデザイナで編集したりはできない?
0890デフォルトの名無しさんNGNG
専用コンポがある
名前忘れたけど
PopupMenu指定するだけのやつ
0891886=889NGNG
>>890
いくつかのコンポーネントがみつかりました。
ひとつずつソースを見ながら試してみようと思います。
いろいろありがとうございました。
0892デフォルトの名無しさんNGNG
うーむ、コンポをつくるヤツ、それないと何にも出来ないヤツ、いろいろだな
0893デフォルトの名無しさんNGNG
>>891
名前おせーて

>>892
万人が下水道這いずり回ったりバキュームカー運転したりする
低レベル作業員である必要はないからな
0894デフォルトの名無しさんNGNG
低脳重役ばっか
0895デフォルトの名無しさんNGNG
>>894
そうだね。それがDelphiのいいところでもあるんだよ。実装を一切知らずにコンポ
探し回ってなんとかアプリの形を整える。で、バージョンアップなどでコンポが使えな
くなったりすると青ざめる。そんなのの繰り返し。だから他へ移れない。
0896デフォルトの名無しさんNGNG
低レベル作業員が一番賢そうだな・・・・
0897デフォルトの名無しさんNGNG
D2005で初めてC#に触れてみましたがDelphiみたいな感じですね。
VS.NETに移行しても問題ないかなぁって思いました。w
0898デフォルトの名無しさんNGNG
いままでなにが問題だったの?
0899デフォルトの名無しさんNGNG
C#がDelphiみたいと言ってる奴は全く理解できていない証拠。
Delの機能と対応している部分しか見ていない。
C#+.NETFWははるかに高機能で複雑だよ。
それを理解した上でなおDelphiを選択する奴は
よっぽど開発・実行環境が劣悪なんだろうな。あるいはおつむが。
0900デフォルトの名無しさんNGNG
>>899
もちろん対応している部分を見て言ってるんだがw
0901デフォルトの名無しさんNGNG
そりゃ対応してる部分はDelphiみたいだろうな。対応してるんだから。バカだなぁ。
0902デフォルトの名無しさんNGNG
>>899
よかったらその高機能な点を教えてください。

Win32アプリだったらDelphiが現時点で
最強のツールであることに依存はないと思うけど
乗り換えるような魅力はあるのですか?
0903デフォルトの名無しさんNGNG
C# は言語としては簡単だよ。
>>899 が言ってるのは .NET のライブラリの部分。VCL より巨大な迷路だと言えるね。
べつに Delphi.Win32 と機能がかぶってるわけじゃないら使い分ければいいだろ
0904デフォルトの名無しさんNGNG
> 乗り換えるような魅力はあるのですか?

乗り換える必要はない。ただ、平行してやっておく価値はある、と断言できるよ。
0905デフォルトの名無しさんNGNG
C#が簡単で理解したつもりになってるアホ一匹
0906デフォルトの名無しさんNGNG
>>902
> よかったらその高機能な点を教えてください。

そんなのMSDNへいって.NET のレファレンス見てご覧。かなり VCL に似てるけど
それより遥かに広範囲高機能だとすぐに分かるよ
0907デフォルトの名無しさんNGNG
>>905 みたいなのは言語の文法とライブラリを混同してる可能性大
0908デフォルトの名無しさんNGNG
スレ違いの話題みたいで申し訳ないのですが

>>904
C#に価値が見出せないのですが
Javaより優れている点はありますか?
結局はWindows環境でしか使われない予感・・

>>906
もっと端的に説明できませんか?
戸田君みたいなレスは要りません
0909デフォルトの名無しさんNGNG
>>906
それは言語の話じゃないよね?
0910デフォルトの名無しさんNGNG
CLIの知識がすっぽり抜け落ちてるアホ一匹
0911デフォルトの名無しさんNGNG
>>908-909
>それは言語の話じゃないよね?

そう。言語のはなしじゃない。.NET の CLR の話。C# は独自のライブラリをほとんど
持ってなくて、全面的に CLR に依存している。だから .NET 専用の言語といえるだろう。
で、>>908 はMSDNへ行ってみるくらいの自助努力をしたの? 一目瞭然だけど。
0912デフォルトの名無しさんNGNG
>>911
あなたが>>899と同一人物かどうかはわかりませんがそうだと仮定します。
少なくとも>>899を見るとC#についてかなりの理解があると思います。

だけど「端的に教えて」と尋ねたら「MSDN見ろプゲラ」
としか言えないようなら口だけ番長を証明してるようなものですよ
0913デフォルトの名無しさんNGNG
>>912
いや、百聞は一見に如かずだからね。真面目に答えたいけど、真面目な質問なら
ほんとに行ってみなよ。ただ、アンチのためだけに煽ってるんじゃないんだけど。

> 口だけ番長を証明してるようなものですよ

それはそうかもね。きみは単なる教えて君であることを証明してるけどね。

試しに VCL のすばらしさは端的に答えてご覧。MSDN には載ってないし。

ちなみに >>899 とは別人。>>899 のどこがC#についてかなり理解があると思うの?
0914Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  
   ミ,,゚Д゚彡 
    ミ つ旦)~~
  〜と,,,~),,~)

赤の他人のしかも
くだすれDelでC#をえらそうにもちあげるような人間の
具体性に乏しい発言を立証するために
"自助努力"という名目で補ってあげるほどに
できた人間を漏れは見たことないし
これからもみることはないと思うのだが。
0915デフォルトの名無しさんNGNG
>>914
へんなヤツだね。
Delphi2005 は Delphi.Win32 と Delphi.NET と C# の統合開発環境だろ。
Delスレで C# の質問が出て、真面目に答えてどうしてそんなこと言われなきゃならないの?
0916911NGNG
>>913
まだシロートなのでつい教えて君になってしまいますスイマセン

>試しに VCL のすばらしさは端的に答えてご覧。
VCLというかペタペタコンポーネント貼るだけで簡単にWin32アプリが作れる
Delphiという開発環境はとても凄いと思います。勿論限界もありますが。
VCLの素晴らしさとは何かと辞書的に聞かれても答えられるほど理解がありません。

>>>899 のどこがC#についてかなり理解があると思うの?
何か偉そうな口調で語っていたのでかなりでなくともそれなりに
理解はありそうだと思いましたので
0917デフォルトの名無しさんNGNG
>>906 と >>911 は Delphi.NET からでも使えるライブラリの話でもあるよ
0918デフォルトの名無しさんNGNG
> VCLというかペタペタコンポーネント貼るだけで簡単にWin32アプリが作れる

それはVCLというより、IDEとの協調作業に依っている。VC# や Delphi2005 の C# や Delphi.NET
でもほとんど同じですよ。Windows.Forms アプリの場合は使われるライブラリが
違っているだけで。Win32 アプリはつくれませんけど。だから、乗り換えるんじゃなくて
使い分け。
0919デフォルトの名無しさんNGNG
最近は談話室からあふれ出たMSマンセー軍団がここにも進出しているのか?
0920911NGNG
>>918
なるほど、使い分けですか
当面はWin32のDelphiでいいけど
MicrosoftがWin32を見捨てて.Net環境に全面移行する可能性もあるので
そうなったらC#が必要になる。だったら今から準備してもいいってことですね

0921デフォルトの名無しさんNGNG
だから自分が使いやすいと思う開発環境を使えばすむ話。
というか、それ以外に決着のつけようがない。

この議論で「○○の方がいろいろ優れてて使いやすいんだ〜」って結論が出ても
「俺は××の方が気に入ってるからそれを使う。個人的なことに意見を言われる筋合いはない」で終わりなんだから。
0922デフォルトの名無しさんNGNG
好みの話はしていないだろ
0923Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

"自分が使いやすいと思う開発環境"
の定義を構築、修正したいから
議論や情報をやりとりする意味はとてもあるよ。

ただ、結論はその人の思考に大きく左右される
ことも多いのでなかなか結論が出ない、状態にはなる
んだろうけど。

0924デフォルトの名無しさんNGNG
結論は出す必要はないし、出せないだろ。

あっちに高い山があるんだけど、面白そうだから登ってみないか。っていう話。

山があることも、あるいは、あることは知っていてもその高さを知らないかも
知れないから、ちょっと地図でも見てご覧っていう程度。
0925Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

砂漠で目玉がどうたら、という比喩は
なんのことを指しているのか漏れにはわからなくて
語呂もきれいくないので好きではないんだが、、、

.NETがそれを使うだけで
VCLに対して断然優れていたとしたら
D8はその存在だけでユーザーに許容されていただろうし
D2005であえてWin32を呼び戻したり
BCB(Win32のみと思われ)を存続させる必要は全くないんだが...

そもそも、DelphiIDEをWinFormで書けばいいのに
某もVCLorVCL.NETで構築しちゃっているわけで....
0926デフォルトの名無しさんNGNG
某の失敗は言語にあるんじゃなくてその実装にある。
D8 は Delphi.NET オンリーでしょ。.NET をやるのに言語として Delphi を
選ぶ理由はないと思うし、Delユーザもそのことをよく知っているのでは。
0927デフォルトの名無しさんNGNG
何遍もいうけど .NET アプリの開発環境と Win32 の開発環境は機能として重複して
ないのだから、両方やってもなんの矛盾もないと思う
0928デフォルトの名無しさんNGNG
おい、何でココで議論してんだよ
スレ違いだ、どっか他でやれよ
0929デフォルトの名無しさんNGNG
そうだね、スマソ
0930デフォルトの名無しさんNGNG
特定BBSに書き込むプログラムの書き方を1から教えてください。
環境 Delphi2005
OS WinXP pro sp2
です。よろしくお願いします
0931デフォルトの名無しさんNGNG
>>930
多分ネタだと思うけどマジだったら死ね
0932デフォルトの名無しさんNGNG
>>930
嫌だっぷー(・3・)
0933デフォルトの名無しさんNGNG
>>931
まじです。作りがのっているHPがないのでわかりません。
どなたか教えてください
0934デフォルトの名無しさんNGNG
>>933
マジにしては人を馬鹿にした内容だな
まあIndy内のHTML関連のコンポーネント使ってGetメソッドとか使ってみれば
0935デフォルトの名無しさんNGNG
Indyってどこにありますか?
超初心者です
0936デフォルトの名無しさんNGNG
そもそも用途が荒らしっぽいから
0937デフォルトの名無しさんNGNG
>>935
お前の心の中
0938デフォルトの名無しさんNGNG
>>935
http://www.indyjapan.com/
http://www.indyproject.org/download/Files/Indy9.html
0939デフォルトの名無しさんNGNG
>>934
すいません、文章が下手なので
>>936
荒らし目的じゃないです。簡単に投稿できるようにしたいだけです。
>>938
9.0.17 Source code distributionのzipをDLして解凍しました。このあとどうしたらいいですか?
0940Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  こことかやろか…
⊂,,,,,,,,,つ,,゚Д゚ミつ
>>939さん

Wininet Programing
http://www.geocities.jp/wininet_dll_jp/page15.html

WinInet.DLLを使う方法ですが。
0941Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  Indyインストールを
⊂,,,,,,,,,つ,,゚Д゚ミつ さらっとググってみました。

どぞー

Delphi TIPS/Indyのインストール - dev.chu.jp : http://dev.chu.jp/index.php?Delphi%20TIPS%2FIndy%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

ギコナビのビルド方法 : http://deuxdeux.hp.infoseek.co.jp/gikobuild.html
0942デフォルトの名無しさんNGNG
>>941
ありです!参考になります。
少しは自分でがんばってみようと思います。
0943デフォルトの名無しさんNGNG
>>942
がんがれ〜
0944名無し募集中。。。NGNG
>>942
>少しは自分でがんばってみようと思います。

この一言を書けるお前ならきっと出来る、頑張れ、
0945デフォルトの名無しさんNGNG
DelphiにIIF関数ってないですか?(もしくは代わりになる関数)
煽りとかじゃなくてあったら便利なのにと思って
0946名無し募集中。。。NGNG
>>945
DelphiにはIIFや三項演算に相当するものがない
引数の型ごとに関数を作ってオーバーロードするとか
後はVariant型でまとめて処理するとかぐらい
0947ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
>>942さん
Indy Tips : http://www.monazilla.org/document/indytips.html

これやな。
0948ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
>>945-946
たしかD6からだけど
IfThen
ってのがあるよ。
三項演算子じゃないから、ATrue/AFalseに
関数が渡されると、どちらも呼び出されちゃうけど。

0949946NGNG
>>948
こんな関数知らなかった、どうもです
0950デフォルトの名無しさんNGNG
Delphi6 Professionalなんですけど、
DBGridで行を移動したのを拾うにはどうしたらいいんでしょうか?
マウスで移動した場合はOnCellClickが使えそうですが、
カーソルキーの上下で移動した場合がわかりません。
0951デフォルトの名無しさんNGNG
ずっとム版の過去スレを彷徨っていたら。

「くだすれ」とは

どんなに「くだ」らない質問でも、誰かが優しくレスをしてくれる「すれ」っど
by 毛の生えたブリーフ(別名:毛の生えたフサギコ 別名:40歳だけど〜青年です)

であることを突き止めた。
0952デフォルトの名無しさんNGNG
2005のinlineでIfThen書いたらショートサーキット有効になるかな
0953デフォルトの名無しさんNGNG
C#って、 世界共通語として考案されたがほとんど使用されていない幻のエスペラント語みたいだよね。
0954デフォルトの名無しさんNGNG
>>950
Onkeydownイベントで、キー入力をトラップして、調べるのはどう。
0955デフォルトの名無しさんNGNG
>>953
あれただの文字セットだよ
同じく人工的に作られたハングルはうまく使われてるようだけどね
0956デフォルトの名無しさんNGNG
>>930
  ∧ ∧     ┌───────── 
  ( ´ー`)   < シラネーヨ 
   \ <     └───/|──── 
    \.\______// 
      \       / 
       ∪∪ ̄∪∪ 


0957デフォルトの名無しさんNGNG
>>950
DataSetのイベントでしょ。普通は。
0958デフォルトの名無しさんNGNG
TSearchRecをFindCloseしようとするとCardinalと互換性がないって
言われるんだけど、これってバグ?
0959945NGNG
>>946-948
今、起きました。
うおー本当にあったんだぁ。integerを返す奴をひとつ手製で作ってました・・。
さすがBorland、こういうとこは気が利くなぁ。
質問してよかったです。ありがとうございました。
0960950NGNG
>>954
>>957
お二人の回答とはちょっと違うんですが、参考にして色々試していたら
DataSourceのOnDataChangeで出来ることがわかりました。
どうもありがとうございました。
0961デフォルトの名無しさんNGNG
>958
usesにSysUtilsが追加されていないとか
WindowsがSysUtilsより後ろに来てるとかが原因だと思う。
バグでは無い。
0962デフォルトの名無しさんNGNG
エクスプローラからファイルをD&Dして開くところの話なんですけど
D&Dされたものがファイルなのか、ディレクトリなのかで処理を分けたいのですが
どうやって判別したらよいのでしょうか?
0963962NGNG
とりあえず、DirectoryExistsを使って判断するようにしました。
もっといい方法を知ってらしたら教えてください。
0964デフォルトの名無しさんNGNG
FindFirstでAttr調べるとか。
Win32一発で取れたような気もするけど。
0965デフォルトの名無しさんNGNG
FileGetAttr使えば?
0966デフォルトの名無しさんNGNG
>>964
GetFileAttributesのことかな?
0967デフォルトの名無しさんNGNG
Delphiって、以前からマイナーだったけど、いまはほとんど使用されていない古代リリアンスカ語みたいだよね。
0968デフォルトの名無しさんNGNG
全質問対応回答テンプレ

Delphi では不可能、もしくは極めて困難です。
VB.NET なら簡単に実現できます。
乗り換えましょう。今ならまだ間に合います。
0969デフォルトの名無しさんNGNG
VB.NETで出来ることはDelphi.NETでも出来るんじゃないの?
それが.NETでしょ
0970デフォルトの名無しさんNGNG
そうそう、だからヘルプにも載ってない、本も絶滅寸前なDelphiでやることはない
0971ななしへたぐらま ◆XcB18Bks.Y NGNG
>>958
>>961に補足すると,おそらくDelphiのコンパイラはそのFindCloseをWindowsユニットで宣言されているFindClose関数だと判断しています.

FindCloseという名前のものはSysUtilsユニットで手続きとして宣言されている一方で
Windowsユニットでは関数(WindowsのFindCloseというAPIを直接呼び出している)として宣言されています.
名前がぶつかった場合,Delphiでは以下の優先順位でどれを使うかを決めます.

同じクラス>同じユニット>uses節の後ろの方に宣言したユニット>uses節の前の方に宣言したユニット

統合環境からフォームを新規作成した場合はuses節には
SysUtilsユニットがWindowsユニットよりあとに書かれていますので,
単にFindCloseと書くとSysUtilsユニットのFindClose手続きだと解釈されますが
WindowsユニットのみでSysUtilsが無かったり宣言の順序が逆の場合はWindowsユニットのFindClose関数だと解釈されます.
そのため予期しないコンパイルエラーに遭遇することがあります.

この場合の対処法はふたつあります.
ひとつはuses節で列挙する順番を入れ替えること(この場合はWindowsユニットを先にSysUtilsユニットをあとに書く)です.
もうひとつは関数(または手続き)の名前の前にユニット名を指定することです.

たとえばuses節で列挙する順序と無関係にSysUtilsユニットのFindClose手続きを使いたい場合は

 SysUtils.FindClose(SearchRec)

というように記述します.

0972デフォルトの名無しさんNGNG
同じ関数名にしたのが間違いだ罠
0973デフォルトの名無しさんNGNG
その為のnamespaceだろ
0974デフォルトの名無しさんNGNG
ちがう
0975デフォルトの名無しさんNGNG
昔のCは同じ識別子は使えなかったから、
hogeや_hogeやHoge等々いろいろあった…
0976デフォルトの名無しさんNGNG
FindFirstFile や FindNextFile はわざわざ同名を避けたのに FindClose() は
API と同名。 Windows.pas は普通 uses の前の方にあるから問題にはなりにくいけど。
TBitmap なんかも API にあるよね
0977デフォルトの名無しさんNGNG
ShowMessage('あけましておめでとう');
0978デフォルトの名無しさんNGNG
while 曙が勝つ do
 begin
 application.ProcessMessages;
 ShowMessage( 'あけおめ' );
 end;
0979デフォルトの名無しさんNGNG
モーダルダイアログだしながら Application.ProcessMessages; するのは無意味
0980デフォルトの名無しさんNGNG
ネタにマジレス、無意味。
0981デフォルトの名無しさんNGNG
わはははは、無意味にマジレス、無意味
0982ななしへたぐらま ◆XcB18Bks.Y NGNG
そろそろ1000が近いので新スレ立ててみます.

>>975
QuickBASIC(VBの血のつながらない先祖)のときも名前がぶつかったら駄目だったので,
Delphiのこの仕様はありがたかったです.
0983ななしへたぐらま ◆XcB18Bks.Y NGNG
建てました.

くだすれDelphi(超初心者用)その21
http://pc5.2ch.net/test/read.cgi/tech/1104511938/l50

このスレがいっぱいになったら移住して下さい.
0984デフォルトの名無しさんNGNG
>>982
ユーザがライブラリの中の名前を気にしなくてもいいのは便利。
だけど、メーカが供給するライブラリの中では、名前がぶつかっているのは無意味に
混乱させるだけだと思う。
0985デフォルトの名無しさんNGNG
シグネチャが同じだったら、バティングしててもコンパイル通るんだろ。警告すらしないんだろ。
すげー名前空間あるのにすげーDelphi
m9(^Д^)プギャー
0986デフォルトの名無しさんNGNG
atamawarusugi
0987デフォルトの名無しさんNGNG
しょぼいなDel
0988デフォルトの名無しさんNGNG
>>986
m9(^Д^)プギャー
0989デフォルトの名無しさんNGNG
フサギコスレのアンチ、初心者スレにまで貼りついいてんのかよw
小学生誘拐犯人並みにキモイ奴だな
0990デフォルトの名無しさんNGNG
Applicationに送られてくるメッセージってどうやって捕まえればいいの?
Form1宛のメッセージはなんとか取得できるのだが・・
0991デフォルトの名無しさんNGNG
>>989
このスレでは放置しる。
フサギコのスレで撒き餌ばらまいて「m9(^Д^)プギャー」なんて言わせて喜ばしておけ。
0992デフォルトの名無しさんNGNG
といいつつ構わずにいられないDEL厨www
0993デフォルトの名無しさんNGNG
↑
相手にしてもらえないでよっぽど悔しいらしい(藁
0994デフォルトの名無しさんNGNG
ほらまたww
0995デフォルトの名無しさんNGNG
HTMLのカラーネーム(redとかgreen)をRGB値に変換したいんだけど、
if thenを延々と書き連ねるしかないのかなぁ…。
これだとあんまりスマートじゃないような気がするんですけど、
もっといい方法があったりするんですか?
0996デフォルトの名無しさんNGNG
ColorNames := TStringList.Create
ColorNames['Red'] := '0000FF';
0997デフォルトの名無しさんNGNG
begin
writeln("hello")
end.
0998デフォルトの名無しさんNGNG
唐突ですけど質問させて下さい。
delphi4はWindows2000でも間違いなく動きますでしょうか。
どなたかご教示下さい。
0999デフォルトの名無しさんNGNG
>>994
別に、おら通りすがりで遊んであげただけ(藁藁

どうなっているか見に来たけどやっぱり喰いついている(藁藁藁
1000デフォルトの名無しさんNGNG
1000だぴょん
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。