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

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

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

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

<関連スレ>
Delphi相談室(中級者以上)その12
http://pc5.2ch.net/test/read.cgi/tech/1064420818/
【ドキュメント】Delphi8 for .NET 2【どこ?】
http://pc5.2ch.net/test/read.cgi/tech/1078695271/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/

0002デフォルトの名無しさんNGNG
<過去ログ>
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://pc2.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
0003デフォルトの名無しさんNGNG
初めて1000取ったけど999かよ>漏れ
0004デフォルトの名無しさんNGNG
>>3
と言うことにしたいんですね:-P

お前は3だ。
0005デフォルトの名無しさんNGNG
>>1
乙
0006デフォルトの名無しさんNGNG
>>1
乙。

前スレの999だが、>>3は「前スレ1000取ったのに”999”と書いてしまった」
って言いたいんじゃないの?
0007デフォルトの名無しさんNGNG
フォームに正六角形を絵画しようと思うのですがやり方がわかりません
どうやればできるでしょうか?
0008デフォルトの名無しさんNGNG
PolygonかPolyline
あと、普通は絵画じゃなくて描画というよ。
0009デフォルトの名無しさんNGNG
>>7

http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200405/04050015.txt
0010デフォルトの名無しさんNGNG
Delphiで作られた有名ソフト教えてください。
2ch関係以外。
0011デフォルトの名無しさんNGNG
Delphi
0012デフォルトの名無しさんNGNG
>>10
iria
RPGツクール2000

つーか、よそでやってくれ
0013デフォルトの名無しさんNGNG
よそってどこだよ。あほか氏ね。
0014デフォルトの名無しさんNGNG
>>13
http://pc5.2ch.net/test/read.cgi/tech/1084397575/
0015デフォルトの名無しさんNGNG
>>14
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
0016デフォルトの名無しさんNGNG
よそってどこだよ。あほか氏ね。
0017デフォルトの名無しさんNGNG
>つーか、よそでやってくれ
アホか氏ね
0018デフォルトの名無しさんNGNG
なんと云うことでしょう。私は見ず知らずのあなたたちに、
そこまで云われる人権はないと思います。共和国人民の人権は
どうでも良いというのでしょうか?
ニュースステーションの筑紫さんが、インターネットのことを、
便所のトイレって言っているのを知ってます?イルボンサラムは
どうせニュースも見ないから知らないと存じますが。
とうとう、本気で呆れています。おばあちゃんが、どれどれ?と
画面を覗きにきました。それから、おとうさんも来ました。
その6分後、妹も来ました。あなたたちは、共和国人民に笑われています。
とてもいい具合です。家族みんなが、この人たちおかしいね
おかしいねって、互いに罵り合っています。おかあさんは、
もう3年家に帰ってきてませんが、必ずおかあさんもおかしいね、
って云うと思いますよ。どうです?将軍様に謝るなら、今のうちですよ。
私はこれでも気が遠いほうなんです。また3日後、ここに来ます。
0019デフォルトの名無しさんNGNG
アホか氏ね。

>質問者自身何が何だが分からない質問
をしたまでだ。
0020デフォルトの名無しさんNGNG
そういう比較なら、VBはどうしようもないな。
みんなと一緒がいいのなら、VC++でも使いなさい。
0021デフォルトの名無しさんNGNG
Delphiスレを荒らしてるのは、VB厨
0022デフォルトの名無しさんNGNG
と、おまえ。
0023デフォルトの名無しさんNGNG
漫才を披露するなら、よそでやってくれんか?
0024デフォルトの名無しさんNGNG
何が何だかわからん質問て「プログラミング技術に関して」ってのが前提ちゃうんか?
0025デフォルトの名無しさんNGNG
プログラミング技術はおろか、日本語さえ理解できてないらしいから
このスレが一体「何が何だか分からない」のも当然だと思われ。
0026デフォルトの名無しさんNGNG
なるほど
0027デフォルトの名無しさんNGNG
他にはどんな有名なソフトありますか?
0028デフォルトの名無しさんNGNG
それとiriaがDelphiで作られてるとの事なんですけど
アーバインは作られてないんですか?

Delphiは最初のステップで
後継ソフト作るの違う言語で作る人多いですか?
0029デフォルトの名無しさんNGNG
>Delphiは最初のステップで
>後継ソフト作るの違う言語で作る人多いですか?
作者の勝手です。そんな工程に意味はない。
0030デフォルトの名無しさんNGNG
sage忘れた。スマソ。
0031デフォルトの名無しさんNGNG
プログラムしたいんですけど
Delphiがいいかなぁって思うんですけど。
それで始めにDelphi使ってんのかなあと。

それとDelphiはネットで覚えれますか?
本買ったほうがいいですよね。
どれがいいですか?
これなら安心というお勧めの本教えてください。
0032デフォルトの名無しさんNGNG
>>28
あまり周りのこと気にしなくていいと思うよ。
自分がDelphiより魅力が感じられた言語があれば移ってもいいし、
そんなの人によって変わると思うし。
0033デフォルトの名無しさんNGNG
>>31
http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html
自分は最初ここで1から学びました。

基本がわかったら
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538

自分は書籍なんて一冊も買ってないんでそこらへんはワカリマセン
連カキスマソ
0034デフォルトの名無しさんNGNG
sndPlaySoundの音量の調整をどうやったらいいんでしょうか?
0035デフォルトの名無しさんNGNG
>>34
DirectShowかDirectSound使っとけ
MCIでもできたかも知らん
0036デフォルトの名無しさんNGNG
Delphi7のヘルプの内容ってDelphi6からの使い回しですか?
0037デフォルトの名無しさんNGNG
ええ?RPGツクール2000ってDelphi製だったの?
初めて体験版使って改造しようとした時
Delphiのコピーみたいな造りだなと思ったが、まさか本当に「コピー」だったとは…
0038デフォルトの名無しさんNGNG
>>32
ありがとうございます。
Delphiすることにします。
>>33
よさそうなサイト紹介ありがとうございます。
Delphiします。
0039デフォルトの名無しさんNGNG
>>38
> Delphiします。

Σ(゚Д゚;≡;゚д゚)
0040デフォルトの名無しさんNGNG
>>38
ようこそDelphiの世界へ
0041デフォルトの名無しさんNGNG
>Delphiします。
(・∀・)イイヨイイヨー
0042デフォルトの名無しさんNGNG
n×mの配列をつくりたいのですが どうすればいいでしょうか?
0043デフォルトの名無しさんNGNG
バージョン6とバージョン7の違いはどういうところにあるんでしょう?
無料版のVer6をはじめてみようと思うんですが、参考本なんかはバージョン6用を探すべきでしょうか?
なんか最近はバージョン8も出回ってるようですが・・・
0044デフォルトの名無しさんNGNG
>>43
言語は一緒なので参考書でのバージョンなんかはあまり関係ないかと
書くことはほぼ一緒だし。

とりあえず最初はD6 Personalから始めたほうがいいね。
0045デフォルトの名無しさんNGNG
そういや、Delphiって売ってる?
ソフトショップの言語エリアとか見ても全然置いてないんだけど
0046デフォルトの名無しさんNGNG
>>45
自分の行っている店も最近見なくなった。
欲しいなら注文かな。
0047デフォルトの名無しさんNGNG
>>42
hoge: array[0..n] of array[0..m] of Integer;
004842NGNG
>>47
ありがとうございました
0049デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0050漏れの記憶が正しければNGNG
そういや、ひまわりもDelphi製じゃなかったか?
0051デフォルトの名無しさんNGNG
Tonyuもdelphiだった気がする
0052デフォルトの名無しさんNGNG
>>44
なるほど
でもバージョン8から急に変わったんでしょ?
無料版からはじめてみたいと思います。
機能ダウンロードしたのはお試し版の7だったから30日間しか使えないんです。

ところでそのデルフィ7なんですけど、起動したらウィンドウがバラバラの状態で表示されました。
ドッキングさせたいんですけど、どうしたらいいですか?
0053デフォルトの名無しさんNGNG
>>52
無料のDel6にしとけ
http://www.borland.co.jp/delphi/personal/
0054デフォルトの名無しさんNGNG
> ドッキングさせたいんですけど、どうしたらいいですか?

そんなこと気にしないでどんどんコードを書くように
0055デフォルトの名無しさんNGNG
MDIのエディタを作っています。
ひな形でMDIがあったので楽に作れたのですがエディタの設定(フォントの変更処理など)で行き詰まりました。
アクティブな子ウィンドウの設定は(SDIと同じなので)出来るのですが、その設定を他のウィンドウに張り付いているエディタに反映させる方法が分かりません。
既に生成された子ウィンドウは順に反映&これから生成される子ウィンドウはFormCreate時に設定するしかないんでしょうか。
子ウィンドウの大元の設定を変えるような方法があれば教えて下さい。お願いします。
0056デフォルトの名無しさんNGNG
今小さなプログラムを組んでいるんですが、ふと気になって実行時に
タスクマネージャを見てみたら、メモリの使用量が9MB近くもありました。
もしやと思って、空のプロジェクトを実行させてみたらこれも
8MB近くメモリを食っていました。

これじゃあんまりだと思うのですが、どうにかならないんでしょうか?
それともあまり気にする事もないんでしょうか?
0057デフォルトの名無しさんNGNG
>>55
> 既に生成された子ウィンドウは順に反映&これから生成される子ウィンドウはFormCreate時に設定するしかない
0058デフォルトの名無しさんNGNG
> それともあまり気にする事もないんでしょうか?

気にする必要はない。プログラムは、exe だけで動作するのではない。いっぱい
ウィンドウズの DLL をロードして使っているのが普通。

ちなみに .NET アプリの場合は、普通の小さなプログラムでも1つにつき40MBだよ
0059デフォルトの名無しさんNGNG
>>55
MDIChildCountにMDIウインドウの数が入ってる
MDIChildren[i]で各ウインドウにアクセス
006055NGNG
うあ、やっぱ地道に一個ずつ設定するしかないんですね。
どうもありがとうございます。
0061デフォルトの名無しさんNGNG
forループはしないの?
006255NGNG
>>61
いや、しますが。
大元変えるような方法は無いんですね、みたいな意味です。
0063デフォルトの名無しさんNGNG
>>54
でもドッキングした状態が普通なのでは?
もしかしてできないんでしょうか?
0064デフォルトの名無しさんNGNG
> うあ、やっぱ地道に一個ずつ設定するしかないんですね。

はい、そうです。
ユーザにどの設定を変更できるようにするかを決めるのは、プログラムを作る方が
決めることです。ですから、設定変更された時点で、現在のウィンドウに反映させ
これからつくるウィンドウにも反映させなければならないのは、言語に関係なく
論理として当然です。

実際にそれを実装するときには、もちろん言語やライブラリに依存しますが。
0065デフォルトの名無しさんNGNG
> でもドッキングした状態が普通なのでは?

自分はDelphiユーザを9年近くやってますが、ドッキングしてつかったことは
ありません。できるのかどうかも知りませんし。
0066デフォルトの名無しさんNGNG
ループで回すのが、そんなに面倒ですか?
0067デフォルトの名無しさんNGNG
ループの中で、実際の子ウィンドウの中のたとえば Memo1 にアクセスするときは

TForm2(MDIChildren[i]).Memo1.Font.Size := -12;

などのように、実際の型にキャストする必要があります。
0068デフォルトの名無しさんNGNG
>>66

>>55は一度子ウインドウの設定をしたら
その後新しく作られる子ウインドウは、プログラムの記述なしで勝手にその設定に合わせてほしいという要望
0069デフォルトの名無しさんNGNG
> 一度子ウインドウの設定をしたら

コードも一度書くだけなんですが。
0070デフォルトの名無しさんNGNG
つーか、本人はもう納得してるってのになにをごちゃごちゃひっぱってるんだ
0071デフォルトの名無しさんNGNG
> なにをごちゃごちゃひっぱってるんだ

質問ですか?
0072デフォルトの名無しさんNGNG
現在画像ヴューアーを作成しています。
ボタン1を押すごとpaintobox1を右クリックするごとに 同一フォルダ内の画像をpaintoboxに
名前順に表示させようとしているのですが

TForm1.Button1Click(Sender: TObject);
TForm1.PaintBox1Click(Sender: TObject);
この二つの手続きに関してまったく同じ動作をさせようとしても後者のほうが明に動作が重くなってしまいます。
(paintbox1. のonclickをbutton1.clickにもしてみましたがこれはより遅く感じました)

button1にカーソルを合わせてキーボードENTER押しっぱなしだと最も快適に動作しているように感じ、
paintbox1.Clickが最も重いように感じます。これはpaint1をダブルクリックした場合との判別のために若干反応を遅らせているのかなとも思うのですが
もう少し快適に動作させたいのです。どのような解決策がありますでしょうか?


0073デフォルトの名無しさんNGNG
PaintBox1.OnPaintイベントが二回以上発生しているのかもしれないですね。
0074デフォルトの名無しさんNGNG
ソース出さないと解決しないと見た。
0075デフォルトの名無しさんNGNG
>>65
でもVBとか普通に1つのウインドウの中に全部まとめられてますけど
バラバラにすることもできるし
0076デフォルトの名無しさんNGNG
procedure TForm1.PaintBox1Click(Sender: TObject);
Var
Jpeg :TJpegImage;
  bmp:TBitmap;
begin

 if StrToInt(Label1.Caption) < (FileListBox1.Items.Count -1) Then
begin;
if FileExists('*.jpg') then
  begin;
   bmp := TBitmap.Create;
   Jpeg :=TJpegImage.Create ;
   Jpeg.LoadFromFile(FileListBox1.Items[STrToInt(Label1.Caption) +1]) ;
   bmp.assign(Jpeg);
   PaintBox1.Canvas.StretchDraw(Rect(0, 0, bmp.Width,bmp.Height),bmp);
   Jpeg.Free;
   bmp.Free;
   Label1.Caption := IntToSTr(StrToInt(Label1.Caption) +1)
  end;
end;
end;


procedure TForm1.PaintBox1Click(Sender: TObject);
同上

上記のまったく同じモノを割り当てているのですが下記のほうはシングルクリックなのかダブルクリックなのかを判断するために待っているから反応が遅いのかと考えております。
ちなみにpaintbox1 on dblclickには何も割り当てておりません。
「ダブルクリックされることは考えない」もしくは「ダブルクリックはシングルクリック二回分に相当」のような設定が必要なのでしょうか?
またそのようにするにはどうしたらよいのかご教授ください。よろしくお願いします。
007772NGNG
ちなみに現在paintbox1をダブルクリックするとシングルクリックと同じ動作をしております(2頁進むのではなく1ページのみ進む)
0078デフォルトの名無しさんNGNG
PaintBox1.OnClick イベントでどうやってダブルクリックを検出してるの?
ダブルクリック前にシングルクリックが必ず発生しますよ?
単純に OnClick が二回発生するはず。
0079デフォルトの名無しさんNGNG
ちょっち間違い。
ダブルクリックでは、
最初のクリックでのボタンを離した時に、OnClickが、
その後のクリックでのボタンを押した時に、OnDblClick が発生します。
0080デフォルトの名無しさんNGNG
78 79 
おかげさまで解決いたしました。
paintbox1 の onclick dblclick両方ともにbutton1clickを割り当てました。
最初のダブルクリック時の設定が何もなかったためシングルクリックの作業をした状態で止まっていたんですね。
ありがとうございました。
0081デフォルトの名無しさんNGNG
参考までにもうひとつ追加で質問させてください。
ダブルクック時にはシングルクリックの作業をせずに別の作業をさせたい場合だとどうすればいいのでしょう?
シングルクシックでやった作業を「ひとつまでに戻」してからdblclick独自の作業をさせる必要があるのでしょうか?
0082デフォルトの名無しさんNGNG
>>81
ちょっと落ち着け。誤字だらけだぞ(^^;
0083デフォルトの名無しさんNGNG
ユーザーインターフェースを見直すのが最も賢いやり方。
0084デフォルトの名無しさんNGNG
変な癖は付けない方がいいよ。

Object Pascal Style Guide
http://community.borland.com/article/0,1410,10280,00.html
0085デフォルトの名無しさんNGNG
なんだかワケワカな質問だったな。
0086デフォルトの名無しさんNGNG
>>42
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200405/04050048.txt
ここに非常に面白い二次元配列の実装がある
0087デフォルトの名無しさんNGNG
面白いというかアホですね
0088デフォルトの名無しさんNGNG
むふふ
0089デフォルトの名無しさんNGNG
他人をけなすと自分がエラクなったように錯覚できるね
0090デフォルトの名無しさんNGNG
経験者は語る
0091デフォルトの名無しさんNGNG
THashedStringList[Format('%d,%d', [x,y])]で十分
0092デフォルトの名無しさんNGNG
>>91
アクセス遅すぎ
0093デフォルトの名無しさんNGNG
55です。
子ウィンドウがある時用と無い時用でメニューを二つ作りました。
子ウィンドウのFormClose時に
if MainForm.MDIChildCount = 1 then
MainForm.Menu := MainForm.MainMenu2;
として切り替えていたのですが、この方法だとウィンドウが閉じる前にメニューが切り替わる為、
最大化時にメニューの左に出るアイコンが消えずに残ってしまいます。
結果、最大化したウィンドウを閉じた後、新しいウィンドウを最大化するとアイコンが二つ出てしまうのです。
本来子ウィンドウが無くなればメニューのアイコンは自動的に消えるはずなので意識したことも無かったのですが、
これを自分で消す方法があれば教えて下さい。
また、メニューを切り替えるタイミングなどで他の解決策があればご教授願います。
0094デフォルトの名無しさんNGNG
デルファイ6オフィシャルコースウェア応用編のレッスン27ペイントツールの作成を
やってるんですが、

イメージコンポーネントの領域でクリック(マウスボタンダウンの瞬間)にエラーが出て、
そこから進めなくなってしまいました。
イメージコンポーネント上のマウスのイベントを実装したところです。
CDの途中まで出来てるファイルは使わずに最初から作ってます。

「ソースファイルが見つかりません。:classes.pas」というタイトルのアラートが出ます。
OKは、「ファイル classes.pas が見つかりません。と出て選べず、キャンセルしたら

「デバッガ例外が発生」というタイトルのアラートが出ます。内容は、
プロジェクト Project1.exe EListErrorクラスの例外を生成しました。
'リストのインデックスが範囲を超えています(0)'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
です。ここでOKを選ぶとまた

「ソースファイルが見つかりません。:classes.pas」というタイトルのアラートが出ます。
ここでもういちどキャンセルし、デルファイ6の実行メニューから実行を選ぶと

リストのインデックスが範囲を超えています(0) というアラートが出てます。でOK押すと

戻るんですが、またイメージコンポーネントの領域でクリックしたら最初に戻ると。

デバッグは全く分かりません。初心者です。どうすりゃいいの?。・゚・(ノд`)・゚・。

↓プロジェクト入ってるフォルダ圧縮しました。環境は6パーソナルです。
http://up.isp.2ch.net/up/92a7a902029b.zip
0095デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0096デフォルトの名無しさんNGNG
>93 MainManu.AutoMergeを使うのが良いのでは?
>94 Statusbarにpanelが無いからエラー。
0097デフォルトの名無しさんNGNG
>>94
StatusBarのSimpleText使え
0098デフォルトの名無しさんNGNG
すみません。質問です。

レジストリを書き換え壁紙を変更しようとしています。レジストリは書き換えた
もののそれだけだと壁紙は書き換わらないので困っております。

その後、全画面再描画させれば良いとは思うのですが、どのようにすれば
よいのでしょうか?お教え下さい。
0099デフォルトの名無しさんNGNG
http://search.goo.ne.jp/web.jsp?MT=%CA%C9%BB%E6%A1%A1%CA%D1%B9%B9%A1%A1API&type=stick
0100デフォルトの名無しさんNGNG
>>96
>>97

でででででで出キタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!!

ありがとうございました!!!
0101デフォルトの名無しさんNGNG
>>96
うわ、普通に提供された機能にあったんですか。
僕すげえ阿呆ですな、ありがとうございました。
0102デフォルトの名無しさんNGNG
>>100
もうどうでもいいかもしれないが
StatusBarを右クリックだったかな?で追加すれば設計時にPanelを作れる(はず
SimpleTextじゃ再描画してくれんので再描画必要だと思ったら
設計時にSimpleTextじゃないほうを使いたまえ
0103デフォルトの名無しさんNGNG
TreeViewについて教えてください。
TreeViewに表示されているノードをクリックするとNodeTextを変更する事が
出来ます。その際、空白の場合は再入力させたくOnEditedイベントで下記の
ような処理をしています。ですが入可能状態になりません。どうしてでしょうか?
コメントを外しても動きは変わりありませんでした。
よろしくお願いします。
procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode; var S: String);
begin
if Trim(s) = '' then
begin
//node.Selected := True;
//node.Focused := True;
node.EditText;
end;
end;
0104デフォルトの名無しさんNGNG
OnEditedはTVN_ENDLABELEDITが送られてきたときに呼ばれるわけだけど、
これを処理し終わるまでは、再び編集可能状態にすることは出来ないという事かね。わからんけど。

uses CommCtrl;

procedure TForm1.TreeView1Edited(sender: TObject; node: TTreeNode; var s: String);
begin
 if Trim(s) = '' then
 begin
  s := node.Text;
  PostMessage(node.Handle, TVM_EDITLABEL, 0, Integer(node.ItemId));
 end;
end;
0105103NGNG
>>104
実際に試した結果、思い通りの動作になりました。
API使わないとダメだったんですね。
レスありがとうございました。

0106デフォルトの名無しさんNGNG
あの〜DelphiでJavaDocみたいにコメント書いてそっから資料だすような
ツールでお勧めってなんですか?
0107デフォルトの名無しさんNGNG
colorDialog1をExecuteしたあと、ColorDialog1.Colorが変更されたときに
イベントを起こすのってどうすれば良いんでしょうか?

OnChangeイベントがあれば良いんだけど見あたらない……
0108デフォルトの名無しさんNGNG
ウィンドウズのコモンダイアログだからなぁー、難しそう。
ところでなんでそんなイベントが必要なの?
0109デフォルトの名無しさんNGNG
> colorDialog1をExecuteしたあと、ColorDialog1.Colorが変更されたときに

タイマーで監視したら、OK ボタンが押されるまで ColorDialog1.Color は更新され
ないことが分かった
0110デフォルトの名無しさんNGNG
スミマセン……質問の仕方が変になってました

ColorDialogをExecuteして、色設定してOKを押したあと、
OK押された時に色設定をPanelの色に反映させたいのですがどうやるのでしょうか?

最初ColorDialogのOnCloseイベントを漁ってみたのですが、
設定した色とズレが起こる(正確にはColorDialogを開く前に設定していた色が反映される)ためうまくいきませんでした
そしてOnChangeイベントも見つからないので悩んでます。

109さんのレスでTimerコンポーネントを使う方法もあることに気付きましたが、
ColorDialogのOKを押した時だけイベントが発生するようには出来ないのでしょうか?
0111デフォルトの名無しさんNGNG
なんかその質問だとこれでいいような…
if ColorDialog1.Execute then Panel1.Color := ColorDialog1.Color;
0112デフォルトの名無しさんNGNG
モード付きダイアログの動作がわからんのだろうね。
なんでもイベント、プロパティーで出来ると思いがち。
0113デフォルトの名無しさんNGNG
>>106
ツールは存在するけどお勧めなのはなさそうな。
いっそXMLDOC用のを作ってしまおうかと思ってたけど
C#に移行してしまったので不要になったよw
0114デフォルトの名無しさんNGNG
>>110
Executeから戻ったときにPanel1がRepaintされてしまうので
その後変更しても書き換えれと指示しない限りだめでしょ。
ということを>>112がイワンとしている、ということでおkですか?
0115デフォルトの名無しさんNGNG
>>114

ColorDialog1.Execute は、それが表示されている間、それ以降のコードが実行
されない。>>111 のコードを Button1Click かなんかで実行してみろよ
0116デフォルトの名無しさんNGNG
ごちゃごちゃ考えるより、一行のコードなんだから実行してみたらいいのに
0117デフォルトの名無しさんNGNG
ありがとうございました。

なるほど……Dialog系はif 〜Dialog.execute thenでOK押したときの挙動を設定できるんですね
Dialog系の基本的な性質を把握できてなかったです。
0118デフォルトの名無しさんNGNG
Dialog 系、というよりモーダル表示のことね。
Form2.ShowModal なんかでも同じ。
0119デフォルトの名無しさんNGNG
TToolBarのColorプロパティですが、設計時には
希望する色が出てるのに、実行時には着色されない
(D7+XP)みたいですが、なんとかツールバーの
背景色を表示させる方法はないんでしょうか?
0120自レス(119)NGNG
ヘルプ見てたら、背景の描画は
OnCustomDrawイベントを使って
自前でやるようになってるみたいですね。
この方法しか ないということ?
0121デフォルトの名無しさんNGNG
ヘルプのおおせのとおり。
0122デフォルトの名無しさんNGNG
シフトJISコードをJISに変換するのはどうしたらいいでしょうか?
特に半角カナは全角に変換せずに、半角カナのJISにしたいです。
よろしくお願いします。
0123デフォルトの名無しさんNGNG
>>122
JIS って ISO-2022-JP のことでしょ。
ISO-2022-JP に半角カナ (JIS X 0201 の右側) は定義されてない。

SI/SO (G1 に JIS X 0201 の右側があるとして切り替えるシーケンス) や
ESC(I (G0 に JIS X 0201 の右側をロードするシーケンス) を使って
半角カナを表していたメーカー独自の規格もあるけど、正式なものではない。
0124デフォルトの名無しさんNGNG
みんなDelphiでどんなプログラム作った?
0125デフォルトの名無しさんNGNG
アイデアメモ。画像ビューワー。urlの画像のアドレスをカウントアップしてくれる奴。
ヒット&ブロー。CDトレイ開ける奴と閉める奴。ジャンケンゲーム。ランチャーのプラグイン。
WinMXで自分のIDを調べる奴。うーむ・・・未だに初級やな○×も作ったか。をーげーむまんせー
0126デフォルトの名無しさんNGNG
function hogehoge(x,y:ineger): TPoint;
begin
 with Result do
 begin
  x := x;
  y := y;
 end;
end;
これって望んだ動作にするのって無理ですか?
0127デフォルトの名無しさんNGNG
>>126
質問の意味がわからない。
まったく同じ動作をする関数としてPoint関数が用意されてる。

用例
var
 zahyo : TPoint;
begin
 zahyo := Point(20,20);
end;
0128デフォルトの名無しさんNGNG
>>126
右辺値の勝手にくっつくwithを打ち消すのは無理だね。
VBだとできるみたいだけど。
0129デフォルトの名無しさんNGNG
曖昧さがある with は使わないこと。with をいっさい使わない、というのもあり。
今回の場合なら、127を見習って

result := Point(x,y);
0130デフォルトの名無しさんNGNG
PopupMenuのショートカットを必要に応じて無効にするにはどうすればいいですか?
下記のようにすればMainMenuのショートカットは無効化できるんですが
PopupMenuの場合だととうまくいきません。

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
if TreeView1.IsEditing then
Handled := True;
end;
0131デフォルトの名無しさんNGNG
Action化しろ
0132デフォルトの名無しさんNGNG
100×100のサイズのimageコンポーネントにautosizeをfalse、stretchプロパティをtrueにして
Image.Picture.LoadFromFileで400×400のBMPを読み込みました。
この時点で400×400のBMPが見た目100×100のサイズにきれいに収まってるように見えるのですが
Image.Picture.SaveToFileで保存すると400×400のままなんです。

400の画像を100にして利用できるようにするにはどうしたらいいんでしょうか?
0133126NGNG
ありがとうございます

>>127
質問の仕方が悪かったみたいでした。すいません

>>128-129
withは使わない方がいいみたいですね。
0134デフォルトの名無しさんNGNG
>>132
100x100のTBitmap用意してTCanvasのStretchDrawかWinAPIのStretchBltすれば?
0135デフォルトの名無しさんNGNG
>>132

Image1.Picture.Bitmap を 100x100 にしてから TBitmap でファイルを読みとって
Image1.Picture.Bitmap.Canvas.StretchDrawで縮小
0136デフォルトの名無しさんNGNG
>>134
>>135
ありがとうございます。今からやってみますが

Image1.Picture.Bitmap.HeightとWidthにそれぞれ100を代入して、
Bmp1.LoadFromFileして
Image1.Picture.Bitmap.Canvas.StretchDraw(Bmp1)

こういうことでいいんですよね?
0137132NGNG
Bitmap.Width := Image.Width;
Bitmap.Height := Image.Height;
Bitmap.LoadFromFile(CurrentFile);
Image.Picture.Bitmap.Canvas.StretchDraw(Rect(0,0,Image.Width,Image.Height),Bitmap);

で出来ました。ありがとうございました!
0138デフォルトの名無しさんNGNG
スクロールボックスを親にLabelを動的に生成したいんですけど、
var
 Label:TLabel;
begin
 Label := TLabel.Create(self);
 try
  Label.Parent := ScrollBox1;
  Label.Left := 20;
  Label.Top := 20;
  Label.Width := 100;
  Label.Height := 50;

  Label.Caption := 'あああ';
 finally
  Label.Free;
end;
end;

で表示されません。なんで〜? なんか足りないの?
0139デフォルトの名無しさんNGNG
どれどれ、とコードを読み進めたが、
Label.Freeで脱力した。
0140デフォルトの名無しさんNGNG
 finally
  Label.Free;
 end:
表示する前に解放されてるからでは。
Parent を設定した場合、明示的に解放しなくとも、
親コントロールが解放してくれるらしいから、解放しなくて
いけない(邪魔だから消す、リソースが足りない(ありえないが))
という理由でもない限り、明示的に解放しなくとも良い。
0141デフォルトの名無しさんNGNG
あ!そっか!何やってんだ俺ort
どーもお騒がせしました
0142デフォルトの名無しさんNGNG
チョトお尋ねしますが2つのImageコンポーネントを重ね合わせて1つのImageにして.bmpとかで保存って出来ます?
かたっぽのImageの背景は透過させて。
0143デフォルトの名無しさんNGNG
>>142
TImage内のTBitmap使えば余裕でできる
透過の意味がよくわからんがキーカラーで抜くならTBitmapにその機能はある。
半透明ならTBtmapのScanlineでご自由に
0144142NGNG
余裕で出来るんかぁー・・・便利だな。そんなもんなのかな?ありがとう>>143
0145デフォルトの名無しさんNGNG
すみません!前のつづきなんですが

動的に生成したImageコンポーネントを実行時にドラッグで動かせる方法を教えてください
0146デフォルトの名無しさんNGNG
動的に生成しなければできるの? 何が分からないの? イベントハンドラに
代入するだけだけど。
0147デフォルトの名無しさんNGNG
private
{ Private 宣言 }
PictureImage:TImage;


procedure TForm1.Button1Click(TopLeft: TPoint);
begin
if OpenPictureDialog1.Execute then
begin
PictureImage := TImage.Create(self);
PictureImage.Parent := ScrollBox;
PictureImage.AutoSize := true;
PictureImage.Left := TopLeft.X;
PictureImage.Top := TopLeft.Y;

PictureImage.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;

>>146上のコードで出来たImageコンポーネントをドラッグで移動させたいんです
0148デフォルトの名無しさんNGNG
あらかじめドラッグ移動のイベントを用意しておいて
PictureImageのMouseイベントハンドラに代入する。
0149デフォルトの名無しさんNGNG
そもそも > 動的に生成しなければできるの? に回答してない
0150デフォルトの名無しさんNGNG
まって。やってみますまた書きます
0151デフォルトの名無しさんNGNG
>>149
やってません。

ともかくイベントハンドラを作ってみました。
procedure TForm1.PictureMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 PictureDrag := true;
 Origin := Point(X,Y);
 MovePt := Origin;
end;

procedure TForm1.PictureMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
 if PictureDrag then
  begin
   MovePt := Point(X,Y);
   PictureImage.Left := PictureImage.Left + (MovePt.X - Origin.X);
   PictureImage.Top := PictureImage.Top + (MovePt.Y - Origin.Y);
  end;
end;

procedure TForm1.PictureMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 if PictureDrag then PictureDrag := false;
end;

で実行したところ・・・
0152デフォルトの名無しさんNGNG
画像1つ目開く→ドラッグしてみる→成功
画像2つ目開く→ドラッグしてみる→成功
さっき動かした1つめの画像をまたドラッグ→画像1動かない&なぜか画像2がマウスの倍くらいの勢いで動く。
になりました。だめだ・・・
0153デフォルトの名無しさんNGNG
PictureImageが画像読み込むたびにPictureImage := TImage.Create(self);で値変わってるんですよね?
なんといっていいか・・・これをどう聞けばいいのか分からないんですが、>>151のPictureMouseDownに書く(書けるのか分かりませんが)
PictureImage := Sender.〜〜〜??
みたいな感じに出来ないんですか?

イベントハンドラ側からどうやって同じプロシージャから生成されるイメージコンポーネントを区別すればいいの?
0154デフォルトの名無しさんNGNG
できましたできました。

必死にマニュアルあさって PictureImage := Sender as TImage;  で出来ました。どもすみませんでした
0155デフォルトの名無しさんNGNG
var
Image:TImage;

if Sender is TImage then Image := TImage(Sender) else exit;

以下で Image についてコードを書く
0156デフォルトの名無しさんNGNG
>>155
そうかif Sender is TImage thenがいるんですね。
TImage(Sender)って動作は as と全く同じですか?
0157デフォルトの名無しさんNGNG
実行時型チェックがないことを除けば同じ。is で型チェックしてるので
直接キャストでOK
0158デフォルトの名無しさんNGNG
>>157
やっとすっきりしました。うまく質問を説明できなくてすみませんでした
0159デフォルトの名無しさんNGNG
プロジェクトの定数や変数をユニットから参照することは出来ませんか?
0160デフォルトの名無しさんNGNG
>プロジェクトの
ってなんだ?プロジェクトファイルか?
0161デフォルトの名無しさんNGNG
>>160
はい、そうです。解りにくくてすいません
0162デフォルトの名無しさんNGNG
もしや、と思ったがやっぱり.dprはusesできないね。
uses Project1 in 'Project1.dpr'
とかやっても駄目。Project1.dcuが見つかりませんとか怒られる。
0163デフォルトの名無しさんNGNG
プロジェクトの定数や変数をユニットから参照することはできないし、
だからって、しなきゃできないこともない。共通に参照されるユニットを
つくればいい。
0164デフォルトの名無しさんNGNG
それをふつー出来ないというわけだが
0165デフォルトの名無しさんNGNG
3.78から整数部を出すにはどうしたらいいでしょうか?
0166デフォルトの名無しさんNGNG
>>165
Trunc
0167デフォルトの名無しさんNGNG
0.78引いたら <バカ
0168デフォルトの名無しさんNGNG
マイコンピュータやマイドキュメントなどのシステムフォルダを
フォームに、ドラッグ&ドロップで受け取りたいのですけど
どうすればよいでしょうか?
0169デフォルトの名無しさんNGNG
>>168
特殊フォルダなんだから、ドラッグしなくても
すでに決まってるディレクトリなんじゃないの?

複数のシステムフォルダがドラッグされる可能性
があって、それを判別したいってこと?
0170168NGNG
>>169
現在ランチャを作っています
マイコンピュータのショートカットを登録しようとしてドラッグしたら
ファイルじゃないみたいで、メッセージ (WM_DropFiles) を受け取ることができなかったのです。

ってことなのですが、わかっていただけますか?
0171デフォルトの名無しさんNGNG
>>168
自前でOLEDnDを実装する必要がある。(WM_DropFiles絡みのAPIはCF_HDROPを扱いやすくラッピングしてるだけのはず)
DelphienWorldあたりにOLEDnDで必要なIDropTarget, IDataObjectのラッパーコンポーネントが登録されてた気がする。

0172168NGNG
>>171
Thx.
試してみます
DnDがらみの話は、OLEまで突っ込んだものが
見あたらなかったので、その発想は浮かばなかったです
0173デフォルトの名無しさんNGNG
横からすみません。

TToolBarのImagesプロパティやTSpeedBottanのGlyphプロパティに格納する
ビットマップイメージってどうしていますか?
ベクターのフリー素材を見ても変にカラフルなのしかありません。
GOOで「フリー素材」で検索してもHPに使う変にファンシーなのしか見つかりません。
これらのアイコンをプログラムに取り込んで、HPで公開したとき、本来の使用目的とは
違うわけでクレームがつかないとも限りません。
プログラムの内部に取り込んで公開しても問題にならないビットマップイメージを
探しているのですが、どこか言い入手先はないでしょうか。
やっぱりイメージエディタで自分で作るしかないのでしょうか。
0174デフォルトの名無しさんNGNG
>>173

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=077866
0175デフォルトの名無しさんNGNG
>>174
回答に感謝。
デルファイMLは盲点でした。
あのMLはレベルが高いので敬遠しておりました。
0176デフォルトの名無しさんNGNG
DDEについて勉強中ですが、行き詰まっています。お力をお貸しください。
A.exeのボタンを押してB.exeをモーダルで呼び出したいのですが、うまくいきません。
  procedure TForm1.Button1Click(Sender: TObject);
  var
    WinHnd:integer;
  begin
    DdeClientConv1.ServiceApplication:='B.exe';
    if not DdeClientConv1.SetLink('B', 'DdeServerConv1') then Exit;
    WinHnd := FindWindow(nil, 'B');
    if WinHnd > 0 then SetForegroundWindow(WinHnd);
  end;
上記コードで、B.exeはタスクバーに表示はされるのですが前面に表示されません。
終了時の処理はWaitForSingleObjectというのを調べているのですが・・・難しいです。
どうぞよろしくお願い致します。
0177デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=SetForegroundWindow+windows98&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
>>176
コレ…かな。
0178デフォルトの名無しさんNGNG
> A.exeのボタンを押してB.exeをモーダルで呼び出したいのですが

「モーダル」の意味が分かっていたら、これが不可能であることが分かる。
0179デフォルトの名無しさんNGNG
Delphiのプロジェクトをコマンドプロンプトからコンパイルするには
どのように入力すればいいのでしょうか?

delphi32 ファイル名

だけだと、ただ開くだけですし・・・
どうかお助けください
0180デフォルトの名無しさんNGNG
ボタンを押したらHello Worldって言ってくれるやつを作ってみたんだけど, 実
行したらその瞬間に同じこと言ってくれるようにするにはinitialzationて書い
てその下にコードを書くよりほかにやり方ってありますか?
というかこのやり方は間違ってないですか?
0181デフォルトの名無しさんNGNG
コンソールアプリで Writeln() じゃないの普通は。
0182デフォルトの名無しさんNGNG
>>180
釣りかもしれないけど、
「意味が分からないです」。
0183デフォルトの名無しさんNGNG
GUI アプリなら、Label はっておけばいいじゃないの。
0184デフォルトの名無しさんNGNG
>>180の言ってることは、

私はウィンドウに「Hello World」と表示させたい。
そのためにボタンを載せ、それを押したら表示する処理は出来た。
しかし、起動したときにボタンを押さずに同一の処理がしたい。
その方法やいかに?

ということだろ。

答え:フォームのOnCreateイベントに「Button1Click(Sender);」と書きましょう。
0185デフォルトの名無しさんNGNG
>>179

Delphi5 の場合のコンパイラオプションを挙げておきます
コンパイラは \Bin フォルダの Dcc32.exe

XXXXXXXXXXX\Delphi5\Bin>dcc32 -h
Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporati

Syntax: DCC32 [options] filename [options]

-A<unit>=<alias> = Set unit alias -K<addr> = Set image base addr
-B = Build all units -LU<package> = Use package
-CC = Console target -M = Make modified units
-CG = GUI target -N<path> = DCU output directory
-D<syms> = Define conditionals -O<paths> = Object directories
-E<path> = EXE output directory -P = look for 8.3 file names als
-F<offset> = Find error -Q = Quiet compile
-GD = Detailed map file -R<paths> = Resource directories
-GP = Map file with publics -U<paths> = Unit directories
-GS = Map file with segments -V = Debug information in EXE
-H = Output hint messages -VR = Generate remote debug (RSM
-I<paths> = Include directories -W = Output warning messages
-J = Generate .obj file -Z = Output 'never build' DCPs
-JP = Generate C++ .obj file -$<dir> = Compiler directive
0186デフォルトの名無しさんNGNG
つづき

Compiler switches: -$<letter><state> (defaults are shown below)
A+ Aligned record fields P+ Open string params
B- Full boolean Evaluation Q- Integer overflow checking
C+ Evaluate assertions at runtime R- Range checking
D+ Debug information T- Typed @ operator
G+ Use imported data references U- Pentium(tm)-safe divide
H+ Use long strings by default V+ Strict var-strings
I+ I/O checking W- Generate stack frames
J+ Writeable structured consts X+ Extended syntax
L+ Local debug symbols Y+ Symbol reference info
M- Runtime type info Z1 Minimum size of enum types
O+ Optimization
Stack size: -$M<minStackSize[,maxStackSize]> (default 16384,1048576)
0187デフォルトの名無しさんNGNG
うわぁ、みにくいね

XXXXXXXXXXX\Delphi5\Bin>dcc32 -h

コマンドプロンプトで \Bin フォルダから上を実行してください
0188179NGNG
>>185
丁寧に教えてくださって、ありがとうございます。

これで眠れます・・・
0189デフォルトの名無しさんNGNG
>>184
180の言わんとすることはなんとなく理解できたけど
そうやって書いてあるとはるかにわかりやすいな。
やっぱり文章力って重要だね。
0190176NGNG
>>177
ご回答ありがとうございます。
実際に試してみました。残念ながら状況は変わらなかったのですが勉強になりました。ありがとうございます。
表現がうまくできないのですが、タスクバーにはBが表示されていて、画面上に表示されないのです。
SetLinkの前にWinExec(PChar('B.EXE'),SW_SHOW);を入れてみたら前面に表示されるようにはなったのですが
何だか違う気がします。WinExecを使った時の終了待ちもWaitForSingleObjectではないようで
ttp://forum.nifty.com/fdelphi/faq/00043.htmGetModuleUsageの方法を試したのですが
GetModuleUsageが未定義の識別子でエラーになります。
どうかご助言をお願い致します。
>>178
モーダルの意味、「開いている間は他の処理を受け付けない」だと思っていたのですが違うのでしょうか。
正しい使い方を教えていただけるとありがたいです。
0191デフォルトの名無しさんNGNG
http://ew.hitachi-system.co.jp/w/E383A2E383BCE38380E383ABE38380E382A4E382A2E383ADE382B0.html
0192デフォルトの名無しさんNGNG
Delphiで市販のものや、フリーの性能のいい
ペイントソフトに負けない、ソフトを作ることが出来ますか??
0193デフォルトの名無しさんNGNG
It is up to you.
0194180NGNG
>182>183>184
不快な思いをさせてしまったようで申し訳ありません.
184氏の言うとおりです. うまくいきました. 感謝です.
0195デフォルトの名無しさんNGNG
>>192
これ使えばDelphiが最強になる
http://www.truevision3d.com/
0196デフォルトの名無しさんNGNG
>>192
デルファイは使おうと思えばアセンブラのようにも使えます。
直接ハードウエアをたたくことも可能です。(TCPUCOOLERなんかそうです)
そういう意味では可能です。
0197デフォルトの名無しさんNGNG
>>192
「牛丼」はpersonalでも同等のものが作れる、と作者から聞いたことがある。
0198デフォルトの名無しさんNGNG
|
|⌒彡
|冫、)
|` /
| /
|/
|
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
それ以外はこちらへ・・・
Delphi相談室(中級者以上)その12
http://pc5.2ch.net/test/read.cgi/tech/1064420818/
0199デフォルトの名無しさんNGNG
>>198
入門者用と初心者用が無いぞ。
0200デフォルトの名無しさんNGNG
>>198
そっちは今Longhornで盛り上がってる真っ最中だろ。
0201デフォルトの名無しさんNGNG
>>198はこのスレの>>1
スレッドを立てた理念をコピペしていのよ?
0202デフォルトの名無しさんNGNG
C言語からの移植で悩んでます。
double x
x=( random() & 2047 )-4096;
をDelphiで書くとどのようになるのでしょうか?

0203デフォルトの名無しさんNGNG
HTMLのソースファイルをダウンロードする際
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabesys.htm#gethtmlsource
を参考に取得するほうほうは分かったのですが、
取得したデータからHTMLタグを取り除くのはどのようにやればいいのでしょうか。。

TMemoryStreamの扱い方が全く分からないので
途方にくれています(゚A゚)

理想としては
ネットからHTML取得
       ↓
読み込んだデータ
<タグ>hoge<タグ>hoge<タグ>hogehoge<タグ>
       ↓データを読み込むときに変換
hoge,hoge,hogehoge

こんな感じにしたいっす
0204デフォルトの名無しさんNGNG
>>180
全然不快じゃないよ。気にしない気にしない。

>>203
「パーサ書け」ってレスが来そうな気がする。
検索すれば、「タグを削除するサンプル」上げてるとこもあるよ。
探しづらいかもしんないけど。
0205203NGNG
>>204
レスさんきゅうです。

昨日の夜必死こいて検索したのですが、
PerlやJavaでのサンプルしか見つけられませんでちた。

今日は休みなのでマターリ検索してみます。
0206デフォルトの名無しさんNGNG
>>203
TMemoryStreamにすでにデータが入っているのなら、TStringListに読み込んでから処理すれば良いんじゃない?
StringList.LoadFromStream(MemoryStream);で読み込んでしまえば、後は文字列処理だけ。
0207デフォルトの名無しさんNGNG
> 後は文字列処理だけ。

これを質問してるんでは?
0208206NGNG
>>207
> TMemoryStreamの扱い方が全く分からないので
> 途方にくれています(゚A゚)

と書かれていたから、StringListに入れたら何とか出来るんじゃないかと判断したんだが。
0209デフォルトの名無しさんNGNG
>>206

レスthx!

検索すると手ごろなのがありますた。
http://forum.nifty.com/fdelphi/samples/01092.html

これを参考に一度読み込んだファイル再度読み込んでを一気に処理しようと考えたんですが、
206さんの言うとおり、StringList.LoadFromStream(MemoryStream);で読み込んで
処理した後Richtextに貼り付けたほうがスマートにできそうです。
もうちょいがんがってみまつ。

今日マターリ検索したらいろいろ見つかった・・
人間焦るとだめでつね(゚A゚)
0210デフォルトの名無しさんNGNG
>>203
正規表現使え
0211203NGNG
>>210

レスさんきゅうです。

正規表現を調べてみたのですが、Help見ても使い方がいまいち分からず。。
Delwiki見ながらマターリいじってみます。

知らないことが多すぎてなかなか進みませぬ。。
Delphi結構面白いですね(゚∀゚)
0212デフォルトの名無しさんNGNG
質問です。よろしくお願い致します。
環境はWinXPでDelphi7を使用してます。
TTreeNodeのプロパティ、Dataについて。
このプロパティに文字列を保持しようと以下のようにコードを書いたのですが、
それを読むと文字列の最後が文字化けしてしまいます。
何がいけないのか教えて頂けないでしょうか?
procedure TForm1.Button1Click(Sender: TObject);
const
CST_STR= 'abcd:';
var
Node1, Node2 : TTreeNode;
Buff : String;
i : Integer;
begin
Node1 := TreeView1.Items.Add(nil, 'Node');
for i := 0 to 9 do begin
Buff := CST_STR + IntToStr(i) + ':efg';
Node2 := TreeView1.Items.AddChild(Node1, 'SubItem:'+IntToStr(i));
Node2.Data := PChar(Buff);
end;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
var
S : String;
P : PChar;
begin
if Assigned(TreeView1.Selected.Data) then begin
P := PChar(TreeView1.Selected.Data);
S := String(P);
Label1.Caption:= S;
end;
end;
0213212NGNG
空白が全部詰まってしまって見づらくて申し訳ないです。
0214デフォルトの名無しさんNGNG
> Node2.Data := PChar(Buff);

Buff はローカル変数。それを指してるポインタをセットしても、そのルーチン外
では、無意味。
0215212NGNG
>>214
お答えありがとうございます。
ということは、このような方法には無理があるという事ですか。
また質問になってしまいますが、
dataプロパティはどのように使用するのがベストでしょうか?
0216デフォルトの名無しさんNGNG
> このような方法には無理があるという事ですか。

はい、ローカル変数の String ではだめです。たとえば、Buff をハンドラのそとで
宣言して、グローバル変数にするか、または、TForm1 のフィールド変数にすると
いいのではないでしょうか。
0217デフォルトの名無しさんNGNG
つまらんプログラムだが使ってくれ

nbsp クリップボード内テキストの半角スペースとTABを&nbsp;に変えるツール
ttp://up.isp.2ch.net/up/1b1a74b2b99f.zip
0218デフォルトの名無しさんNGNG
>>212

216だが、そのほかに New と Dispose でメモリを動的に配置することもできる。

procedure TForm1.Button1Click(Sender: TObject);
var
Node1:TTreeNode;
P:PString;
begin
Node1 := TreeView1.Items.Add(nil, 'Node');
New(P);
P^ := 'AIUEO';
Node1.Data := P;
end;

procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
if Assigned(Node.Data) then Dispose(PString(Node.Data));
end;

procedure TForm1.TreeView1Click(Sender: TObject);
begin
if Assigned(TreeView1.Selected.Data) then
Label1.Caption := PString(TreeView1.Selected.Data)^;
end;
0219212NGNG
>>216
早速、グローバルで、
 Buff : String;
を宣言してみましたが、結果は同じでした。
ちょと思ったのですが、
ループ内にて、Buffが次々書き換えられてしまって
上記宣言だとそのアドレスは結局同じ所を指すわけですよね?
もしかして、ループ分グローバル変数が必要ですか?

>>217
便利そうなので、DLしようと思ったのですが、
どうやら駄目なようです。残念!
0220デフォルトの名無しさんNGNG
>>217
ダウソできねーぞモルァ
0221217NGNG
ホントだ。すまん。
どこかにツールまとめスレがあれば載せてもらおうかな。
0222212NGNG
>>218
書き込んでる間にレスが・・
ありがとうございます。
早速試してみます!
0223デフォルトの名無しさんNGNG
デルフィーとデルファイどっちが有利ですか?
0224デフォルトの名無しさんNGNG
> Buffが次々書き換えられてしまって

その場合はだめです。書き換えられると、前のメモリは捨てられるからです。
設定するのと同じ数だけ変数を使うか、または動的に割り当ててください。
0225212NGNG
>>224
なるほど、やっと意味がわかりました。
( >>218の方法で実現できました!)
PString型を初めて使ってみました。
動的に割り当て、いらなくなったらDisposeですか。
勉強になります。
ありがとうございました。
0226デフォルトの名無しさんNGNG
あとグローバルで宣言した TStringList をつかって、文字列を Add していく
方法もあるね。これが一番簡単でリークが起こりにくそう。Data には
Add の戻り値を Pointer にキャストして設定する。
0227217NGNG
プチツール配布所
ttp://www.geocities.co.jp/HeartLand-Ayame/5730/nbsp.zip

もはや使ってない和塩にあげといた。
10000文字くらいまでしか対応してないけど、そんなに使わないよな。
0228212NGNG
>>226
なる!
その方法もやってみます。
良かった・・質問して。

>>227
DLできましたよ。
今度使わせて頂きますー。
0229デフォルトの名無しさんNGNG
226の例

var
SL:TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
SL := TStringList.Create;
SL.Add('dummy'); // index 0 for dummy
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
SL.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
CST_STR= 'abcd:';
var
Node1, Node2 : TTreeNode;
Buff : String;
i : Integer;
begin
Node1 := TreeView1.Items.Add(nil, 'Node');
for i := 0 to 9 do begin
Buff := CST_STR + IntToStr(i) + ':efg';
Node2 := TreeView1.Items.AddChild(Node1, 'SubItem:'+IntToStr(i));
Node2.Data := Pointer(SL.Add(Buff));
end;
end;
0230デフォルトの名無しさんNGNG
つづき

procedure TForm1.TreeView1Click(Sender: TObject);
var
S : String;
P : PChar;
begin
if Assigned(TreeView1.Selected.Data) then
Label1.Caption:= SL[Integer(TreeView1.Selected.Data)];
end;
0231デフォルトの名無しさんNGNG
タスクトレイにアイコンを追加してタスクバーからは消すという、一般的な
常駐型のプログラムを作ってみたんですが、タスクトレイのアイコンを右クリックして
メニューを出した後、そのメニューの項目をどれかクリックしないとメニューが
消えません。
Windowsのスピーカーのアイコンがタスクトレイにありますが、あれはメニューを
出してもデスクトップなどの別の場所をクリックすると消えてくれます。
そのような動作をさせたいのです。

何かこの段階で原因等は推測されますか?
0232デフォルトの名無しさんNGNG
>>231
PopupMemu() の直前に自分を SetForegroundWindow() する
0233212NGNG
>>229
今、同じようなものを作ってみて、
ハテ、何故最初の Node に nil が・・と悩んでいたところでした。(笑)
>SL.Add('dummy'); // index 0 for dummy
↑これが必要なのですね。
0234デフォルトの名無しさんNGNG
>>233
そうですね。 0 を pointer にキャストすると nil になって Assigned() が
false になります。
0235212NGNG
>>234
説明も分かりやすかったですし、とても感謝!
ありがとうございました。
0236デフォルトの名無しさんNGNG
>>217
地味に便利。GJ!
0237デフォルトの名無しさんNGNG
>>217
GJ!
ところでコレってDelphi製じゃないんですか?
サイズ小さいけど
0238デフォルトの名無しさんNGNG
>>217
ソース晒せやゴルァ
0239デフォルトの名無しさんNGNG
>>237
VC++。
そもそもウィンドウ作成してないし
0240デフォルトの名無しさんNGNG
Delphiバージョン
program fmtres;

uses
    SysUtils, Clipbrd;

begin
    ClipBoard.AsText := StringReplace(StringReplace(ClipBoard.AsText, #9, '    ', [rfReplaceAll]), ' ', ' ', [rfReplaceAll]);
end.
0241デフォルトの名無しさんNGNG
&nbsp;に置き換えんとだめじゃないか
0242 ◆OUFPNullPo NGNG
>>227
おお、激しく便利かも
乙です
0243デフォルトの名無しさんNGNG
>>242
トリップけし忘れた
_| ̄|○
0244デフォルトの名無しさんNGNG
nbspを2chブラウザのツールにセットした。
0245デフォルトの名無しさんNGNG
>>232
試してみたところ、希望どおりの動作をしました。
誠にありがとうございました。

ポップアップとSetForegroundWindowでぐぐったらすぐに対処法として
書いてあるのが見つかりました。すいません。
でも、なぜなのかについて説明してあるところは今のところ見つけていませんが、
理由よりもこうするものだという風に捉えていたほうがいいのでしょうか。

あと、SetForegroundWindowに渡すハンドルはApplicationのものでも
Formのものでも通りますが、どちらでもいいですかね?

何度も申し訳ないです。
0246245NGNG
SetForegroundWindowにApplication.Handleを渡すとうまくメニューが
表示されませんでした。Formのほうに変えるとうまくいきました。
すれ汚しごめんなさい。
0247240NGNG
コードそのまま貼り付けたらnbspが消えたw
&−>&に変換しといて

再掲

program fmtres;

uses
SysUtils, Clipbrd;

begin
 ClipBoard.AsText := StringReplace(StringReplace(ClipBoard.AsText, #9, ' ', [rfReplaceAll]), ' ', '&nbsp;', [rfReplaceAll]);
end.
0248デフォルトの名無しさんNGNG
>>245
> なぜなのかについて説明してあるところは今のところ見つけていませんが、

なぜなのか、ハッキリと分かりませんが、推測すると、OS は現在の
ForegroundWindow がなんなのんか知っていて、そして、それがポップアップメニュー
を表示している、と仮定しています。メニュー以外の例えばデスクトップをクリックす
ると、ForegroundWindow が変化するので、メニューも引っ込めるんだと思います。
PopupMenu の直前に、SetForegoundWindow として設定しないと、メニューを表示
しているプロセスと、本当の ForegroundWindow がはじめから一致していないので、
メニューを引っ込める論理が働かないんだ、と思っています。たんなる推測ですが。
0249デフォルトの名無しさんNGNG
Delphi7のアップデート1が出来ない・・・せっかく30分も掛けてダウンロードしたのに。
パケ代もったいない。
0250デフォルトの名無しさんNGNG
>>248
レスありがとうございます。確かに一個人が追求しても推測の枠を出るのは
難しいとは思いますが、お陰で私も自分なりの考えが進みました。

逆(じゃないかも)に考えてみると、ポップアップメニューが必ず選択される必要が
ある場合もありうるので、ほかのウィンドウがアクティブになったときに消したいならば
先にSetForegroundWindowしなさい、としているとすれば頷ける部分もありますね。
ポップアップメニュー自身が親が誰であるかを知っていて、OSもそれを知ることができて、
メニューの親と現在アクティブなウィンドウが違うときは消す、となっていれば特に
問題ないのでしょうかね。(当たり前?)

生半可な知識しかないくせに駄文を書きなぐってしまいました。どうかご勘弁ください。
最後になりましたが、皆様どうもありがとうございました。
0251デフォルトの名無しさんNGNG
保存するときに拡張子(.aaa)をつけたいのですが
どのようにしたらいいでしょうか?
0252デフォルトの名無しさんNGNG
ExtractFilePath, ChangeFileExt, ExtractFileNameあたりを調べろ。
それでも解決しなかったら質問の仕方を考えろ。漠然としすぎ。
0253デフォルトの名無しさんNGNG
すまんな…
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>242
0254デフォルトの名無しさんNGNG
>>251を訳してみたらこういう感じかなぁ?
ファイル保存ダイアログを出すことはできましたが、保存するときの
デフォルト拡張子を指定することができませんでした。
拡張子を指定する方法、そして入力されたファイル名に拡張子がなかった場合に
自動的に付加して保存する方法について、教えていただけませんでしょうか。
現在の私の能力では、何を調べれば良いのか検討もつきません。
どなたか、ヒントだけでも結構ですので、よろしくお願いいたします。
0255ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
function GetFilterExt(FilterIndex: Integer; Dlg: TOpenDialog): String;
var
ReplaceStr: String;
begin
with TStringList.Create do
try
ReplaceStr := Dlg.Filter;
ReplaceStr := StringReplace(ReplaceStr, ' ', '', [rfReplaceAll]);
ReplaceStr := StringReplace(ReplaceStr, ',', '', [rfReplaceAll]);
ReplaceStr := StringReplace(ReplaceStr, '|', ',', [rfReplaceAll]);
CommaText := ReplaceStr;
if (1 <= FilterIndex) and (FilterIndex<=(Count div 2)) then
begin
Result := Strings[FilterIndex*2-1];
end;
finally
Free;
end;
end;
0256ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
インデント置き換え忘れた・・・

procedure TForm1.Button1Click(Sender: TObject);
var
 FilterExt, WriteFileName: String;
begin
 if SaveDialog1.Execute then
 begin
  WriteFileName := SaveDialog1.FileName;
  if ExtractFileExt(SaveDialog1.FileName) = '' then
  begin
   FilterExt := ExtractFileExt(
    GetFilterExt(SaveDialog1.FilterIndex, SaveDialog1) );
   if not (FilterExt = '.*') then
   begin
    WriteFileName := ChangeFileExt(SaveDialog1.FileName, FilterExt);
   end;
  end;
  Memo1.Lines.SaveToFile(WriteFileName);
 end;
end;
0257ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
nbspにおき帰るのが良いのかな?

漏れは全角スペースが好き。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1009085598&rm=100
0258デフォルトの名無しさんNGNG
ソースこぴぺ出来ないよりできたほうがいいだろ
0259デフォルトの名無しさんNGNG
SaveDialog1.DefaultExt := 'aaa';
でいいじゃん…
0260デフォルトの名無しさんNGNG
#32#9のケースも考えないと。
0261デフォルトの名無しさんNGNG
ちと諸事情で忙しくて、Delphiを半年触ってなかった。
Javaで仕事せにゃならんかったし。

この半年でなんか動きあった?
0262デフォルトの名無しさんNGNG
VB6ユーザーがDelphiには流れないという結論を出した。
0263デフォルトの名無しさんNGNG
雑談スレでやってくれよ
0264デフォルトの名無しさんNGNG
Memoコンポーネントに読み込ませたデータを一行ずつ取得して
空白の行だけを取り除くにはどのようなコードを書けばよいでしょうか。

空白行の判別がいまいちわかりませぬ
0265デフォルトの名無しさんNGNG
>>264
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i := Memo1.Lines.Count-1 downto 0 do
if Length(Memo1.Lines[i]) = 0 then Memo1.Lines.Delete(i);
end;
0266デフォルトの名無しさんNGNG
>>265

激しくthx!!
0267デフォルトの名無しさんNGNG
質問です。
dbExpressのTSQLConnectionからデータベースに接続する方法がわかりません。

WindowsXPにMySQLをインストールしたのですが、
TSQLConnectionからMySQLに接続しようとすると
「接続に失敗しました。LIBMYSQL.dllを起動できませんでした。」
というエラーメッセージが出ます。

LIBMYSQL.dllはMySQLに同梱されていたので、
dllのあるフォルダをライブラリパスに追加したり、
dllをプログラムと同じフォルダに置いたりしてみましたが、
やはり同じエラーメッセージが出ます。

どうすればデータベースに接続できるか、教えてください。
0268デフォルトの名無しさんNGNG
すみません。ageときます。
0269デフォルトの名無しさんNGNG
Delphi5を使ってるのですがDelphi6のサンプルプログラムらしき物を走らそうと
しているんですが、HTTPProdと言うファイルが見当たらないとエラーがでます。
このHTTPProdはDelphi6以上からあるファイルでしょうか?
Delphi5にインスコ出来たりしませんよね。
0270デフォルトの名無しさんNGNG
EUC→SJISに変換する手ごろなコンポーネントを配布しているところは無いでしょうか。
http://plaza11.mbn.or.jp/~pz/delphi/vcl.html
で公開されているものを使ってみたのですが、YahooのTOPページを読み込ませてEUC→SJISに変換して
RichTextに貼り付けても一部文字化けしてしまいます。
0271デフォルトの名無しさんNGNG
> 手ごろなコンポーネントを配布しているところは

「手ごろ」ってなに? 手ごろじゃないのは持ってるのね。
0272デフォルトの名無しさんNGNG
> Delphi6のサンプルプログラムらしき物を走らそうと

そんなもん走らせるために苦労するなんて・・・・・・
0273デフォルトの名無しさんNGNG
>>272
IndyのサンプルなんですけどIndy9の最新版インスコしたのに
サンプルが6用で出来ないなんて・・・
何のために5もインスコできるのか。
0274デフォルトの名無しさんNGNG
Indy はメジャーなコンポだが、サードパーティーだし、下位バージョンとの互換性
があやしいし、以前にも WEB 関係のサードパーティー製コンポが突然打ち切りに
なったり、なんか使うための努力が無駄になりそうで DL したけどインストールして
いない。それより、WinInet やソケットを勉強した方が、よほど知識として
役に立つ、と思う。
0275デフォルトの名無しさんNGNG
うーん、実はDelphiからメール送信したくて使用例を検索してたら
実現するには大体Indyが絡んできてIndy使うと簡単に出来そうなのですが、
実行例の環境がDelphi6,7とかなんですよね。
ファイル添付してメール送信したいだけなんだけどな。
0276デフォルトの名無しさんNGNG
なんか結果的に情報小出しになってしまってるのでスマソ。
0277デフォルトの名無しさんNGNG
Professional版には標準でIndyコンポーネントが付いてくると聞いたけど違うの?
0278デフォルトの名無しさんNGNG
>>277
ついてくるけど、インストーラでIndyをアンインストールしてから
最新版をインスコするのが吉。
0279デフォルトの名無しさんNGNG
集合型に値を追加するのってどうやればいいんでしょうか?

例えば、
Font.Styleに既にfsItalicが入っている状態にさらにfsBoldを追加するのはどうやればいいんでしょう?
単純に
Font.Style := [fsBold];
とやっては元々入っているfsItalicが消えちゃいますよね・・。
0280デフォルトの名無しさんNGNG
s := s + [b] or include
0281デフォルトの名無しさんNGNG
Font.Style := Font.Style + [fsBold];
0282279NGNG
>>280-281
おお、ありがとうございます。
orとかandとかで試してました。
0283デフォルトの名無しさんNGNG
サービスアプリケーションをプログラムから終了させたいのですが、
如何にすればよいでしょうか?

サービス起動時、ファイル読み込みに失敗したら終了、のようなものです。
Application.Terminateは不可でした。
0284デフォルトの名無しさんNGNG
トークンの勉強はどの辺ですればいいでしょうか?
いい資料が無いか探しています(ネット歓迎)
0285ななしへたぐらま ◆XcB18Bks.Y NGNG
>>283
試していませんがHalt手続きはどうですか?
0286デフォルトの名無しさんNGNG
>>270
マルチポスト、乙。
0287デフォルトの名無しさんNGNG
>>285
ありがとうございます。
が、そちらを試す前にTServiceThreadでTerminateできました。

で、別件ですがシグナルトラップってどう書けばいいのか、
どなたかご存じないですか?
やはりサービスアプリの場合なんですが。
0288デフォルトの名無しさんNGNG
>>284
ごめん、トークンってなに?
0289デフォルトの名無しさんNGNG
ゲーセンだけで使える硬貨のことでは > トークン
0290デフォルトの名無しさんNGNG
思えばトークンまできたもんだ
0291デフォルトの名無しさんNGNG
馬耳トークン
0292デフォルトの名無しさんNGNG
トークン
http://black.sakura.ne.jp/~third/programming/d/d3.html
0293デフォルトの名無しさんNGNG
ハバネロに違いない。
0294デフォルトの名無しさんNGNG
>>293

それは棒君
0295デフォルトの名無しさんNGNG
Delphi7.1のアップデートファイルってログインしないとダウソできないですか?
0296デフォルトの名無しさんNGNG
パタリロに違いない。
0297デフォルトの名無しさんNGNG
for文使って素数かどうか判定するプログラム作りたいんだけど
どうしても分からない・・・
誰か教えてくらはい
0298デフォルトの名無しさんNGNG
for i = 0 to 1 do
if i = 1 then
ShowMessage('素数です');
end;
0299297NGNG
アリガトゥーございます。
0300デフォルトの名無しさんNGNG
>>270
マルチポスト先にレス付いたんだから、こっちにもその旨書けよ。クズ。
0301デフォルトの名無しさんNGNG
VC++で作られたDLLを使う方法を教えて下さい。

>>299
単純に調べたい数までの数値でひたすら割っていってもいいんじゃないでしょうか。
列挙するのはキツいですが単体の数字ならそんなにかからないので。
まあ素数判定のアルゴリズム分かれば一番良いんでしょうけど。
0302デフォルトの名無しさんNGNG
>>301
Dllを作成した言語は問わないはずですが
0303デフォルトの名無しさんNGNG
>>302
全然関係ないトコのミスでした……
吊ってきます。
0304デフォルトの名無しさんNGNG
>>298
1 は素数か?

>>301
質問が漠然としてて何がわからないのかわからない。
とりあえずヘルプの 'external 宣言' は読みましたよね。
__cdecl なのか __stdcall なのか気を付けること。
そんなことは知っているというなら失礼。
0305デフォルトの名無しさんNGNG
DLLしかなくて、引数が解らないのでは?
0306デフォルトの名無しさんNGNG
DLLの問題は303に解決したと書いてあるように思うのだが・・
0307デフォルトの名無しさんNGNG
トークン解析の方法教えてくださいよ〜
簡易コンパイラ作りたいんです
0308デフォルトの名無しさんNGNG
くだスレで質問してるようじゃ無理
0309デフォルトの名無しさんNGNG
Createした時にCreateしたものを自動でリストにいれたいのですが Create中に自分のポインタを知る方法は無いのですか?

type
Ta = class;
constrautor create;
end;

procedure add(a: pointer);
begin
list.add( a );
end;

constructor create Ta;
begin
add( a ); ←ここで自分自身のポインタを渡したい
end;

こんな感じで作りたいのです
0310デフォルトの名無しさんNGNG
function add: Ta;
begin
Result := Ta.Create
list.add( Result );
end;

とかではダメかい?
0311デフォルトの名無しさんNGNG
self のことなんじゃ?
0312デフォルトの名無しさんNGNG
self を知らずしてOOを語れない。自分自身の今このコードが実行されているインスタンス
への参照。他言語だと this とか me とかだよね。
0313デフォルトの名無しさんNGNG
public
ObjList:TobjectList;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
ObjList := TObjectList.Create(false);
ObjList.Add(self);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ObjList.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := ObjList[0].ClassName;
end;
0314310NGNG
コンストラクタは、できればオブジェクトの作成と初期化に専念すべき、と思ってるんで。
0315デフォルトの名無しさんNGNG
>>314
> コンストラクタは、できればオブジェクトの作成と初期化に専念すべき、と思ってるんで

これと

> Create中に自分のポインタを知る方法

この質問の回答がなんで関係するの?
0316310NGNG
>>315
説明するのは面倒なので、俺を荒らしだとでも思ってスルーしてください。
失礼しました。
0317デフォルトの名無しさんNGNG
>>307
Delphiかつ入門かつWEB上で覚えようなんて条件厳しすぎ。
構文解析は難度高めなんでちゃんと本読んだほうがいいよ。
0318デフォルトの名無しさんNGNG
>>307
Delphiにもstrtokみたいなのはあった気がする
そういう話じゃないのかな

「コンパイラ・スクリプトエンジン」相談室 3
http://pc5.2ch.net/test/read.cgi/tech/1070089173/
0319デフォルトの名無しさんNGNG
質問させてください。
画像関係をいじろうとしているのですが、ファイルのフォーマットを
調べるのにGUIDを調査して、いろいろといじらなければならない
ことがわかりました。

たとえば、Mpeg1だと↓のように宣言されています。
MEDIASUBTYPE_MPEG1Video: TGUID = (D1:$E436EB86;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
そして、とある構造体にあるMediaTypeのGUIDと上記のMediaTypeが一致すると、
それはMpeg1Videoということがわかるのですが、画像の形式はたくさんあるため、
すべてのMediaTypeと比較して、これはMpeg、これはAVIといちいち判定させて
あげないといけません。

なんかもっとスマートなやり方があるような気がするのですが、
どなたか簡単に解決できる方法はありませんか?
それとも、上記のように全てif文やCase文で判断させて、
自分で判断しないといけないでしょうか。
具体的には、「このファイルはMpeg1だよ」と表示するソフトが作りたいと思っています。
0320デフォルトの名無しさんNGNG
>>310
仕方が無いのでそれで書いてました
その方がいいのですかね?
無駄に関数が多くなるのを嫌ったのですが

>>311-313
ありがとうございます。無事動作いたしました。
0321デフォルトの名無しさんNGNG
2つのStringGridのスクロールバーを連動させたいのですが、どうしたらよいでしょうか?
神様お助けください(祈)
0322デフォルトの名無しさんNGNG
onTopLeftChangedで
両方のTopRowを同じにすればいいでないの?>321
0323321NGNG
>>322
ありがとうございます!ちょっとやってみます。
0324321NGNG
できました。ありがとうございました>神さま>>322
0325デフォルトの名無しさんNGNG
どなたかお知恵を拝借したく。

SQLデータベースから数値データを落としてきてCSVファイルに出力する
プログラムを作ることになりました。

SQLデータベースを扱うのは初めてなのですが、参考になるサイトあるいはスレ
あるいはサンプルプログラムなどがあったら教えてください。
0326デフォルトの名無しさんNGNG
7パーソナル使ってます

あるフォルダのあるファイルを削除するとか、別なあるファイルのサイズを測って何バイト
以上だったらそれをあっちにコピーするとか、フォーム状のボタンからVBSみたいなこと
やりたいんですけど、詳しく解説してくれてるサイトがあったら教えて下さい。
0327デフォルトの名無しさんNGNG
Cursorについて教えてください。
エクスプローラ(Win2000版)のようにドラッグすると、
カーソルがアイコンとファイル名になるような処理をしたいのですが、
どのように処理すればよいのでしょうか?

調べてみたところ
TScreen.Cursors
1.リソースエディタを使ってカーソルリソースを作成します。
2.既存のカーソル定数と矛盾しない値を指定してカーソル定数を宣言します。
3.Windows API の LoadCursor 関数を使って新しいカーソルへのハンドルを取得します。
4.新しく宣言されたカーソル定数による添字付きの Cursors プロパティを LoadCursor で取得されたハンドルに設定します。

となっています、1.をプログラム上で処理する方法がわかればよいと思ったのですが、
どのようにすればよいかわかりませんでした。

お願いします。
0328ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
>>325
SQLデータベースって
種類はなんですか?

AcidFloorが比較的詳しいと思います。
0329デフォルトの名無しさんNGNG
>>326
回答にはなっていませんが、ShellAPI.pas にある関数群を使えば
書かれていることはすべてできると思います。

ShellAPI を含む日本語のページを検索
http://www.google.co.jp/search?q=ShellAPI&hl=ja&lr=lang_ja
0330デフォルトの名無しさんNGNG
>>328
Oracleみたいです。詳しいところはまだ聞いてません。
0331デフォルトの名無しさんNGNG
>>ShellApi

ありがとうございます
仕事の補助といったレベルでちょこっとだけVBA ,VBSを使っていた程度の者ですけど、
何か、思っていた以上に色々なことができそうです。
0332デフォルトの名無しさんNGNG
Delphiってどういう意味ですか?
0333デフォルトの名無しさんNGNG
>>332
http://www.excite.co.jp/dictionary/english_japanese/?search=Delphi&match=beginswith&dictionary=NEW_EJJE&block=36784&offset=2010
0334デフォルトの名無しさんNGNG
クラスを格納できるリストってどうやって作ればいいでしょうか?
TListだとポインタしか格納できないですよね?
0335デフォルトの名無しさんNGNG
>>334
クラスだな。インスタンスでなくクラスを格納するのだな。
TClassList
0336デフォルトの名無しさんNGNG
構造体を一発でクリアする関数ってないですか?
文字列は''に、数値は0にしたいのですが。
0337デフォルトの名無しさんNGNG
FillChar()

Delphi には構造体はない レコード型な
0338336NGNG
>>337
サンクスです!
自分でも構造体じゃないってのはわかってたんですが
なんと呼べばいいのかが思いつきませんでしたので//
0339デフォルトの名無しさんNGNG
http://hp.vector.co.jp/authors/VA031252/imglib/Imgs111.lzh

こちらの画像一覧コンポーネントImgLibを使わせていただいているのですが サムネイル画像の右下に小さなjpgのアイコンが表示されています
これを消すにはプロパティのどの設定を変更すればよいのかわかりません。もし可能でしたらお教えください。よろしくお願いします。
0340デフォルトの名無しさんNGNG
すみません間違えました。
http://hp.vector.co.jp/authors/VA031252/imglib/index.html の ImgPanelです。よろしくお願いします。
0341デフォルトの名無しさんNGNG
これかな
ImgPanel1.ViewImage.SmallIcon.IconPos := iipNone;
0342デフォルトの名無しさんNGNG
実現できました。
ありがとうございます 
0343デフォルトの名無しさんNGNG
小数を指数表記の文字列に変換したいのですが、整数部が必ず0になるような関数は
ありませんか? 例えば1000なら0.100E+04にしたいのですが、Delphiで用意されてる
関数は1.000E+03にとしか変換できないようなのです。
0344デフォルトの名無しさんNGNG
フォルダ内のファイル名 サイズ 拡張子 更新日時 画像の画素数 絶対パス名などを リスト表示させたいと思っているのですが

ここらへんの情報を一括して取得するようなコンポーネントってありますか?
0345デフォルトの名無しさんNGNG
コンポは無い。FindFirst/Next/Closeで構造体から取得。
0346343NGNG
その場しのぎの関数を自作して使うことにします。

function TForm1.FloatToExpStr(Value: Extended): String;
var
fr: TFloatRec;
begin
FloatToDecimal(fr, Value, fvExtended, 5, 10);
Result := IfThen(fr.Negative, '-0.', ' 0.') +
LeftStr((String(fr.Digits) + '00000'), 5) +
IfThen(Sign(fr.Exponent) <> -1, 'E+', 'E-') +
LeftStr('0' + IntToStr(Abs(fr.Exponent)), 2);
end;
0347デフォルトの名無しさんNGNG
くだらない質問ですみません、VirtualTreeViewのソースを眺めていて思ったのですが、
Delphiってprivateに宣言されてる変数を、派生先のクラスからも使えるのでしょうか?
0348デフォルトの名無しさんNGNG
基本的には無理。
ただし同一ユニット内であれば別のクラスのフィールドにも
アクセスできるというルールを利用すれば可能は可能。
0349デフォルトの名無しさんNGNG
ありがとうございます、そんなルールがあったのですね。
困ったな。
0350デフォルトの名無しさんNGNG
ソースがあれば、MyLib.pas にコピペして好きなだけ書き加えたらいいじゃん
0351デフォルトの名無しさんNGNG
ImgPanelのコンポーネントの使いに関してお聞きしたいのですが
画像ファイルをダブルクリックしたときのみ別ウィンドウ上のpaintboxにて開きたいと考えております。
現在は 拡張子jpg などと関連付けられているIEで開いてしまいます。
どのようにしたらよろしいでしょうか ご教示ください。
0352デフォルトの名無しさんNGNG
レジストリ弄れば良いんじゃないですか
0353デフォルトの名無しさんNGNG
TMemoに

2001-01-01
1200
1300
1500

2001-01-02
1230
1320
1400

2001-01-03
 ・
 ・
 ・

のようなデータがあるのですが、
1日ごとにデータを集計したいと思っています。
どのように処理をすればよいでしょうか。

分かりにくくてすみません。
0354デフォルトの名無しさんNGNG
日付
値1
値2
値3
空白

の繰り返しなんだから、そのように読み込んで値を合計するのでは。
0355デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
Hiduke,v1,v2,v3:string;
Goukei:integer;
i:integer;
begin
i := 0;
while (i*5 < Memo1.Lines.Count) do begin
Hiduke := Memo1.Lines[i*5];
v1 := Memo1.Lines[i*5+1];
v2 := Memo1.Lines[i*5+2];
v3 := Memo1.Lines[i*5+3];
Goukei := StrToInt(v1)+StrToInt(v2)+StrToInt(v3);
Memo2.Lines.Add(Format('%s Total : %4d',[Hiduke,Goukei]));
inc(i)
end;
end;
0356326=331NGNG
再度の質問恐縮です。
DelphiからAccessMDBファイルに接続しているとして

MDBにSQLを投げ、レコード絞り込み。
絞り込んだ結果が0件だったら exit
絞り込んだ結果が1件以上あったら次の処理へ〜

というふうにしたいのですが。
結果セット(とりあえず MyRst という名前)が何件か、どういうふうにしたら取得できるのか
分かりません。
当てずっぽうで、if MyRst.Count=0 then とか、if MyRst.RecordCount=0 then とか
書いてみましたが、ものの見事にハネられました。

レコード絞り込みについては、MDB側にクエリをつくることは出来ません。
これが出来れば楽なのですが(抽出条件に、Delphi側のテキストボックスを使っているので、
SQL文で書くしかない)

仕方なく今のところは、MDB側に仮テーブルをつくり、そこにインサートSQLで結果セット押し込み。
この仮テーブルを元に集計クエリをつくり、そのクエリを開いて件数を取得、と、メチャメチャ
野暮ったい方法で対処していますが、これではいくら何でもという気がして。
0357デフォルトの名無しさんNGNG
>>356
>これが出来れば楽なのですが(抽出条件に、Delphi側のテキストボックスを使っているので、
>SQL文で書くしかない)

TQueryかTADOQueryを使っているかわからないのであてずっぽうでTQuery使っていると仮定すると、
「Delphi側のテキストボックス」をパラメータにして、パラメータに値を渡して結果を取得できないか?

たとえばTQuery(NameプロパティをQuery1とする)のSQL文を
SELECT Table1.*
FROM Table1
WHERE Table1.UserName LIKE :sUserName;

にしておいて、結果を取得するときに
Query1.Close;
Query1.ParamByName('sUserName').AsString := <<Delphi側のテキストボックスの値>>;
Query1.Open;
すれば、Query1.RecordCountで取得できるのではないでしょうか。

思いっきり外していたら申し訳ない。
今から会社から帰ってしまうので、理解に苦しむようでしたら明日午後以降にレスします(午前中は客先のためレス不可)。
0358デフォルトの名無しさんNGNG
>>357さん
すみません
まったく些細なところにミスがありました。
選択クエリを相手に、Openではなく、Executeしてました。
(Executeでも、MoveFirstとかMoveNextとか出来ちゃったり、値をストリンググリッドに
読み込んだりできるんですね)
Openに直したら、MyRst.RecordCount でみごと件数とれました
(そもそもの目的は、件数取得というより、0件だった場合の逃げ方ですが)

0359358 つづきNGNG
>>TQueryかTADOQueryを使っているかわからないので
このあたりは僕もよく分かりません
ずっと前このスレで教えてもらった、パーソナル版からのレコードセットOpenやDBExecuteの
やり方を真似ているだけなんです。

procedure TForm1.FormCreate(Sender: TObject);
begin
DNS:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
DBF:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
DBF:=DBF + '何とかmdb';
DBOpen(DNS,DBF);
end; な感じで接続して、

function RSOpen(SQL: string): variant;
begin
rs := CreateOleObject('ADODB.Recordset');
rs.open(SQL, cn, 3, 3);
result := rs;
end; とか

function DBExecute(SQL: string): variant;
begin
rs := CreateOleObject('ADODB.Recordset');
rs := cn.execute(SQL);
result := rs;
end; とか
0360デフォルトの名無しさんNGNG
Delphiって静的変数は使えますか?
0361デフォルトの名無しさんNGNG
interfaceの次で変数宣言すればそのユニットをusesしているユニットすべてで有効
implementationの次で変数宣言すればそのユニットの中でのみ有効
0362デフォルトの名無しさんNGNG
文字コードをJISからShift-JISに変換するのにJconvert.pasか
それよりお勧めのものがあれば教えてください。

Jconvert.pasは有名みたいですが、作成者HPが閉鎖してます。
DelphianWorldにもあるらしいのですが何故か検索機能が働かないし、
探しても見あたりません。
Jconvert.pasはバグがあるらしく手直しが必要だとかよく書いてますから
別のがいいのでしょうか。
0363デフォルトの名無しさんNGNG
Del版は使ったこと無いけどnkf.pasは?
0364353NGNG
>>355

ありがとうございます!
0365デフォルトの名無しさんNGNG
>>359
レコードの有無を調べるなら

{ Recode Check レコードの有無を調査します。
有:true
無:false }
function RSCheck: boolean;
begin
result := false;
// rsが空でなければ処理します。
if not VarIsClear(rs) then
begin
try
// rsはレコード無しか確認
if not (rs.BOF and rs.EOF) then
begin
result := true;
end;
except
result := false;
end;
end;
end;

で可能です。
0366デフォルトの名無しさんNGNG
>>359
ずれてしまったのでもう一度。

{ Recode Check レコードの有無を調査します。
 有:true
 無:false }
function RSCheck: boolean;
begin
 result := false;
 // rsが空でなければ処理します。
 if not VarIsClear(rs) then
 begin
  try
   // rsはレコード無しか確認
   if not (rs.BOF and rs.EOF) then
   begin
    result := true;
   end;
  except
   result := false;
  end;
 end;
end;
0367デフォルトの名無しさんNGNG
Extended 型から 上三桁を取り出したいのですがどのようにしたら可能ですか?
0368デフォルトの名無しさんNGNG
Format() で文字列化してから StrToFloat() じゃアホすぎるかしら
0369デフォルトの名無しさんNGNG
Memoの内容をADOで接続したSQLServerに入れるには
どのようにすればよいですか?
(SQL文でサーバに投げたい)
Memo.Textだと'が含まれた文字列になっているようなので。
0370デフォルトの名無しさんNGNG
DelphiのPersonal版使ってます。
フォームに日本語を使うと、DFMのその箇所がユニコードになりますが、
普通にSJISで保存出来ませんか? 又、その方法があれば教えてください。
0371デフォルトの名無しさんNGNG
>>363
レスありがとう御座います。
それってDLLが要るんですね。
一度試してみます。
0372デフォルトの名無しさんNGNG
>>362
これは?
http://www.mars.dti.ne.jp/~b-guild/mailnews.html
0373デフォルトの名無しさんNGNG
>>348
この前そのルールのせいで
本来、書き込めないフィールドにデータを書き込むようにコードを書いてしまって
(しかも、何のエラーも警告もでない)
なんで思い通りの結果が得られないのか一晩悩んだ。

原因がわかったときには自分はなんて馬鹿なんだろうと激しくへこんだ。
0374ななしへたぐらま ◆XcB18Bks.Y NGNG
>>373
私も同じ失敗をしたことがありますが,
確かに混乱しやすい仕様ではあると思います.
(C++みたいにユニット内でもアクセスできなくできればよいのですが…)

私はフィールド変数名の頭文字を某が推奨するようにFに統一してある程度回避しています.

0375デフォルトの名無しさんNGNG
>>372
なんか盛りだくさんで凄く便利そうな気が・・・これで大体事が足りそうな。
どうもです。
0376デフォルトの名無しさんNGNG
くだすれ逝けと言われて来ました。
ある型のオブジェクトがCreateされてるかどうかを判別する方法はありませんか?
オブジェクトがCreateされているものをさらにCreateしようとするとエラーになります。
Createしてないものに色々代入したりするとエラーになります。
配列を使っているので、作られている時と作られていないときがごっちゃになってしまっています。
0377デフォルトの名無しさんNGNG
それで分かる奴はいないよ。
余計なものを省いたコード晒してみな。
0378デフォルトの名無しさんNGNG
var
i : integer;
hoge : array[0..20] of TStringList;
begin
i := Random(10);
hoge[i] := TStringList.Create;

for i := 0 to 20 do begin
hoge[i] := TStringList.Create;
end;
end;
例えばの話、こうした場合にエラーが起きてしまいます。
0379デフォルトの名無しさんNGNG
>オブジェクトがCreateされているものをさらにCreateしようとするとエラーになります。
これ、エラーになるの?
0380デフォルトの名無しさんNGNG
Delphi7始めて2時間くらいです。
タイプライブラリにDirectX7と8があるようですが
どちらも「for Visual Basic」となっています。
これはどういう事でしょうか?
DirectXはC向けとVB向けで宣言とか使い方が多少異なりますが
Delphiで使うには、VB用の制限された奴で使うしかないのでしょうか?
それともCと同じように直接dllを使えるのでしょうか?
0381デフォルトの名無しさんNGNG
そのコードじゃエラーにならないだろ。
メモリリークのバグはあるにしても。
0382デフォルトの名無しさんNGNG
本当に申し訳ないです。やっと原因に気づきました。。。
動的配列だったので、配列数の設定をしてませんでした...
ほんとにお騒がせしました。
0383デフォルトの名無しさんNGNG
>>380
そのタイプライブラリはどこにあるのですか?
0384380NGNG
>>383
メニューの「プロジェクト」の「タイプライブラリの取り込み」です。
取り込んでみたらエディタウィンドウにズラズラ書式が出て来た・・・
これだけの機能・・・かな?
0385383NGNG
>>384
こんなのがあったんだ。知らなかった。

ところで、こんなのはどうでしょう?
ttp://clootie.narod.ru/delphi/download_dx90.html
0386380NGNG
>>385
ありがとうございます。
うわー、英語だ・・・でもそれっぽい。
どっちでやろうかな?

0387ゲーム製作技術板NGNG
なんだか呼ばれた気がしたので宣伝しておきますね。

【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/
Delphiまとめ
http://gamdev.org/w/?%5B%5BDelphi%A4%DE%A4%C8%A4%E1%5D%5D
0388358=359NGNG
>>365,366さん
すげっ!
感謝します。

VarIsClearってのは初めて見るんですけど、ムズい関数ですね。

// rsが空でなければ処理します。
if not VarIsClear(rs) then
 ↑
この2行、じーっと見つめてると何となく分かったような気分になってきますけど、
本当に理解できたかどうかは何とも。。。

取りあえず、何かレコードセット開いて、if RSCheck=false then とやれば、0件の場合の
逃げ道を作れることだけは分かりました(レコードセットが開かれてさえいれば、それがこの場合の
rsと名付けられた変数 ってことで、Delphiは勝手に納得してくれてるんですかね。いや、何ていうか、
このRSCheck関数は、処理の流れから考えると、たとえば、if RSCheck(MyRst)=false then みたいな
書き方をしたい気分に。。。)

ところで。
もしかして、以前レコードのいじり方教えてくれた方と同一人物ですか。
ファンクション名の付け方に、そこはかとなく共通成分の香りが。。。
0389デフォルトの名無しさんNGNG
すみません、質問です。

フォームの上にScrollBox1を貼ってalClientに広げまして、その上に640×480のサイズのImage1を貼ってあります。
Button1を押すとイメージダイアログが開いて任意の画像(BMP)を、
そのときに動的にTImageを生成して読み込みます。(parentプロパティはScrollBox1)
いくつでも開けて、さらにマウスで移動できるようにしてあります。(読み込んだ画像をレイアウトするため)

しかしImage1を印刷するためにImage1.Picture.Bitmap.Canvas.Draw(〜〜〜)などで
動的に生成してあるTImageオブジェクト→Image1へ描画しなければなりません・・・よね?

動的生成でなければ、例えばImage2→Image1への描画なら、
Image1.Picture.Bitmap.Canvas.Draw(Image2.Left,Image2.Top,Image2.Picture.Graphic)
でいいと思うんです。

で、わからないのは、上のようにいくつ生成されるかわからないTImageオブジェクトをあるときすべてとらえて
Image1に描画することです。

もし可能なら、印刷用のButton2のクリックイベントハンドラに記述するつもりなのです。

どなたかご教授願いませんでしょうか・・・m(_ _)m
0390デフォルトの名無しさんNGNG
begin //main
writeln('Sinの値を求めるラジアンxと計算回数nを入力してください');
readln(x,n);
i:=1;
repeat
c:=i div 2;    ←――――――
f:=i-c*2;
d:=1;
if f=0 then d:=-1 ;
e:=2*i-1;
ke:=pow(x,e);
x:=x+d*ke;
i:=i+1;
until (i>n) or (abs(ke)<0.00001);
readln;
end.

これで、35行目(矢印のあるところ)が「この型には指定した演算子が使えません」と出ます
どうしてか、1日中考えても分かりません
お願いします、誰かお教え下さい _no
0391デフォルトの名無しさんNGNG
別に起動しているDOS窓にコマンドを送りたいのですが
やっぱりAPIとか使わないと無理ですか?
0392デフォルトの名無しさんNGNG
>>389
転送先の Image1 を ScrollBox1 の上に乗せる必要はないのでは?
操作がややこしくなるのでやめた方がいい。

見えてる部分の転送は ScrollBox1.PaintTo() で簡単にできるはず。

見えてない部分も含めて ScrollBox1 上の TImage のイメージを
描画したければ、ScrollBox1.Controls[] を使って反復処理したら?

for I := 0 to ScrollBox1.ControlCount - 1 do
  if (ScrollBox1.Controls[I] is TImage) and (ScrollBox1.Controls[I] <> Image1) then
    Image1.Canvas.Draw(ScrollBox1.Controls[I].Left, ScrollBox1.Controls[I].Top,
      TImage(ScrollBox1.Controls[I]).Picture.Graphic);
0393デフォルトの名無しさんNGNG
>>392
うおっ凄い
早速やってみます。ありがとうございました。
Image1は、作ってるプログラムの関係上TImageのほうが都合が良かったので使ってたんです。
0394デフォルトの名無しさんNGNG
>>390
どうしてって、div の使えない型なんだろ
div は右辺、左辺ともに整数型な必要がある
0395デフォルトの名無しさんNGNG
>>390
プログラムが何をしたいのかよくわからないけど、エラーの意味は
div 演算子は左辺も右辺も整数型でなければならないのに
そうなってないことを指摘してるんだと思う。

整数から実数への変換は自動で行われるけど、逆はできない。

c が実数で 2 で割った結果の小数部を切り捨てたいなら
c := Int(i / 2);
にしてみたら?
0396デフォルトの名無しさんNGNG
超初心者です。
Visual C.netをインストールしたいのですが、setup.exeを開くと
「このシステムにMicrosoft Visual C.net Standardをインストールするために必要な条件を満たしていません。Windowsコンポーネントアップデートセットアップをじっこうして
下さい」
とのメッセージが出てきます。
もうどうしたらいいのか分からないのでどなかか教えてください。
0397デフォルトの名無しさんNGNG
>>396
スレタイ100回音読して来い
話はそれからだ
0398デフォルトの名無しさんNGNG
>>394>>395
すばやいレスありがとうございました
整数から実数への変換が自動で行われていたので、全く意識することがありませんでした _no
左右ともに整数型なんですね…ありがとうございました
0399デフォルトの名無しさんNGNG
100回読んできました、済みません。ちょと質問が高度すぎたようですね(笑)
ここでは回答する方に回りたいと思います。
0400デフォルトの名無しさんNGNG
>399
「Visual C.net」ってなんですか?
「Visual C# .NET」または「Visual C++ .NET」ならよく聞く名前ですがね。
回答しろよ。おらおら。
0401デフォルトの名無しさんNGNG
C#板に逝け
0402デフォルトの名無しさんNGNG
データーベース使ったことないのに会社内のC/Sシステム作ることになりました。
お金ないのでLimuxサーバーとWinクライアントでFireBirdかInterBase6使おうかと考えてます。
そこで質問なんですが、アプリ開発中はデル付属のIBで開発してていいんでしょうか?
IBE使って作成したアプリはFireBirdとかで問題なく使えるものなのでしょうか?
デルファイ5proです。
よろしくお願いします。
0403デフォルトの名無しさんNGNG
>>392
できました!
報告までに。
マジでありがとうございました。
0404デフォルトの名無しさんNGNG
>>402
上司に聞けよ。
ここでの答えを鵜呑みにして社内システムを作らないでくれ。
頼むから。

そもそも簡易でいいから検証環境を作っ(ry
0405デフォルトの名無しさんNGNG
ツールバー用の良い感じのアイコンないですか?
Windows標準っぽいの。
0406405NGNG
>>33で既出でしたね。失礼しました。
0407デフォルトの名無しさんNGNG
使いやすいHTMLエディタ教えてください。
0408デフォルトの名無しさんNGNG
FrontPage
0409デフォルトの名無しさんNGNG
>>388
> VarIsClearってのは初めて見るんですけど、ムズい関数ですね。
> // rsが空でなければ処理します。
> if not VarIsClear(rs) then
rsにレコードセットが返らないときもあるのでエラーにならないように書いています。

> もしかして、以前レコードのいじり方教えてくれた方と同一人物ですか。
> ファンクション名の付け方に、そこはかとなく共通成分の香りが。。。
たぶんそかも...
0410デフォルトの名無しさんNGNG
>>388
もしAccessのmdbファイルを使用しているなら下記を参照すると吉です。

Delphiでmdbを操作 - 001と002
http://www.geocities.jp/fjtkt/program/_frame.html

Delphiでmdbファイルを作成してテーブルの設定をする方法が紹介されています。
なお、ADO・ADOXはADOのヘルプに使い方がVBで書かれています。
ADOのヘルプはWindowsのファイル検索でキーワード「ADO」で見つかると思います。
私のPCでは「Ado210.chm」がインスコされていました。
では
0411デフォルトの名無しさんNGNG
function foo(bar: dword): boo; external 'baz.dll'
って自動的にstdcallになるんですか?
0412デフォルトの名無しさんNGNG
ならないのか・・・やられた・・・
0413デフォルトの名無しさんNGNG
質問させて下さい。

D&Dによる入力は理解できたけど、出力はどうやるんですか?
リストボックスで選択されたファイルを他のアプリケーションに渡したいんですが…
ヒントだけでもお願いします。
0414デフォルトの名無しさんNGNG
>>413
IDropSource

おまいさんの言う「入力」がDragAcceptFiles APIでファイルを受け取る動作なら道は険しいかもしらん
0415デフォルトの名無しさんNGNG
>>414
資料が見つかりました、ありがとうございます!!
がんがって搭載してみます。
0416デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
j:integer;

begin
Edit1.Text :=IntToStr(2);
Edit2.Text :=IntToStr(3);

i := strtoint(Edit1.Text);
j := strtoint(Edit2.Text);

showmessage(i / j);

end;
end.




i/j (=2/3) がExtendedだといわれてエラーがでます。

0.6666666 とか表示させたいのですがどうやたらいいですか?
0417デフォルトの名無しさんNGNG
>>416
FloatToStr
0418デフォルトの名無しさんNGNG
>>416
関連してすこしだけ

integer 型は整数型なので、小数点とか扱うのは別の型で。
たぶん、最初のときだとinteger型で、ある程度ごまかしきくけど
今回のような計算には小数点以下を扱える Real やDoubleを使うといいです

var i,j:Double;

という感じで、型変換は、417さんの書いてある通り
IntToStr()を
FloatToStr()にしてあげればOKです
0419デフォルトの名無しさんNGNG
bmp := TBitmap.Create;
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(Form2.Label1.Caption) ;

bmp.assign(Jpeg);

Form2.PaintBox1.Canvas.StretchDraw(Rect(0, 0, Round(bmp.Width),Round(bmp.Height)),bmp);

こんなかたちでPaintBox上にJpgファイルを連続表示させているのですが
前に表示した画像より後に表示する画像のほうが小さい場合 前の画像の一部が残ったままになってしまいます。
どのような解決方法がるかお教えください。
0420デフォルトの名無しさんNGNG
Memo1.Lines.Addするとカーソル位置がクリアされてしまうんですが
それを回避するにはどうすればいいですか?
0421デフォルトの名無しさんNGNG
>>419
StretchDrawする前にPaintBoxを塗りつぶす。
0422デフォルトの名無しさんNGNG
「塗りつぶす」に関して調べてみたのですが

Canvas.Brush.Style := bsClear;

だとまったく効果が現れませんでした。やっていることがまったく見当はずれなのでしょうか?お教えください
0423デフォルトの名無しさんNGNG
>>422
procedure TForm1.Button1Click(Sender: TObject);
begin
  PaintBox1.Canvas.Brush.Color := cl3DLight;
  PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width, PaintBox1.Height));
  //ここに描画処理
end;

やってる間は画面のアップデート止めないとちらつくだろうからそこは適当に
0424デフォルトの名無しさんNGNG
ありがとうございました!!!!!
0425デフォルトの名無しさんNGNG
http://hp.vector.co.jp/authors/VA031252/imglib/Imgs111.lzh

こちらの画像一覧コンポーネントImgPanelを使わせていただいているのですが 
ImgPanelの大きさにあわせて見える範囲内のサムネイルを作るというような形式になっているようにかんじるのですが
指定したフォルダ内のサムネルを一気に作り出しておくようにすることは可能でしょうか?
もしくはこちらが指定した個数ずつ(フォルダ内の100個のがファイルに対して0-20 21-40・・・・など)パッ パッ パッ と段階的に表示させることなどは可能でしょうか?
0426デフォルトの名無しさんNGNG
可能か不可能かと問われれば、可能だろう。
0427デフォルトの名無しさんNGNG
もしご存知でしたらその方法を教えていただきたいのですが・・・・
0428デフォルトの名無しさんNGNG
Delphi
↑すいません、これなんて読むんですか?

でるふぃー?
0429デフォルトの名無しさんNGNG
>428
でるふぁい
0430デフォルトの名無しさんNGNG
>>429
お答え感謝いたしますm(_ _)m
0431デフォルトの名無しさんNGNG
>>430
素のレスだったんですね・・・

StringListの特定の行の特定の場所に文字を挿入したいんですが、
どうすればできますか?
0432デフォルトの名無しさんNGNG
Insertメソッド
0433デフォルトの名無しさんNGNG
    property ViewImage: TViewImage;
        = 縮小画像設定関連(ImgShare 参照)

    property VisibleCount: integer;
        = 表示アイテム数

    property VisibleColCount: integer;
        = 表示列数

    property VisibleRowCount: integer;
        = 表示行数

//ImgShare
    property LookAhead: Boolean;
        = 画像の先読み機能のOnOff(False の場合は、アイテムが表示されるまで画像の読込を行わない)

0434デフォルトの名無しさんNGNG
訂正

×Insertメソッド
○Insert関数
0435デフォルトの名無しさんNGNG
>>432
どうもです。

ついでにもう一個、Delphi版のTP Lex/Yaccの使い方が分かりませぬ。。
どう使えばいいのか、親切な方教えてください。。。
0436デフォルトの名無しさんNGNG
>433
ありがとうございました。
このコンポーネントのヘルプに関しましては私の見る限りそこまで詳しく知ることができなかったのですが
皆様はどのようにしてそこまで各コンポーネントの詳細情報を得ることができるのか参考までにお聞かせください。
0437デフォルトの名無しさんNGNG
>>436
ついてきてたテキストファイルをコピペして貼っただけなのだが
0438デフォルトの名無しさんNGNG
//ImgShare
property LookAhead: Boolean;
= 画像の先読み機能のOnOff(False の場合は、アイテムが表示されるまで画像の読込を行わない)

こいつだけは探し出せませんでした・・・・なんでだろう。 
お手数かけましてすみませんでした。
0439デフォルトの名無しさんNGNG
ImgShare.txt
0440デフォルトの名無しさんNGNG
そのtxtは同封されてませんでした・・・・
Delphi5
Delphi6
Sample
ImgPanel.txt
ImSub.tct
readme.txt
のみでした。

img115.lzhだったんですがヴァージョン違いなのかな?
0441デフォルトの名無しさんNGNG
事故報告 ImgShare.txt は ver110のほうについでました。
0442デフォルトの名無しさんNGNG
form と paintboxが 一体化したような状態になり formの大きさが自由には変えられず 
paintboxを動かすことによってしかformサイズが変わらなくなってしまいました
どうしたらいいですか?
0443デフォルトの名無しさんNGNG
>>442
Form の AutoSize プロパティが True になってないか?
0444デフォルトの名無しさんNGNG
TreeViewコントロールの選択アイテムを
デスクトップやエクスプローラーにドラッグ&ドロップするにはどうすればいいのでしょうか?
0445デフォルトの名無しさんNGNG
Delphi OLE DragDrop で検索汁
0446デフォルトの名無しさんNGNG
TStringListのCommaTextを利用して、タブ文字区切りのCSVファイルを読み込んでいたのですが
データ中の半角スペースまで区切り文字と判断してしまいます。
データ中によく半角スペースが出てくるのですが、
CommmaTextは諦めて、自前で処理するしかないのでしょうか?
0447デフォルトの名無しさんNGNG
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ShellCtrls, StdCtrls, FileCtrl, ImgPanel, Jpeg, Unit2;


procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Label1.Caption :='123';
Form2.Show;
Form2.Label1.Caption :='1234';

end;

なぜたかForm2.show; がとおりません?なんででしょうか?
0448デフォルトの名無しさんNGNG
デバッガでステップ実行してみた?それでも駄目?
0449デフォルトの名無しさんNGNG
すみませんがステップ実行というものがよくわかっておりません・・・・

Form2.Show;
Form2.Label1.Caption :='1234';

この2行に関しまして両方をコメントアウトした場合は問題ないとおり、
どちらか一行でも有効にした場合には 「アドレスxxxxxxxxxxx でアドレスxxxxxxxxxxxxxxに対する読み込み違反が起こりました」とでます。
0450デフォルトの名無しさんNGNG
Form2 が自動生成の対象からはずれてるんだろ。

Form2 := TForm2.Create(Application);
Form2.Show;
Form2.Label1.Caption :='1234';

とかしてみれば
0451ぱぴこNGNG
        |\       ,. ‐''":::::::::::::;::::`'-、      
        |ヘ|    /::::::::::::::;:/´ヾヘ;:::::::::ヽ    
        |ヘ|   /::::::::::((,/    `、::r、:::゙,     
         | ̄|   ,'::::::::::::i゙  \   / i::::i       うぜーDel
        (∃⊂ヽ  !::::::::::::|  ●    ● l::::|  / 〉  使えないDELうぜってー!
───   └┘\ !::::::::::::!          !:::!/\/
        \/  \::::::::!"" ____  ""!::| \/
────   ヽ    |::::::|   l,   /   ノ::i  /
            `、   i:::::l、ヽ.,_ `''''"  _,..イ:::::i  /
─────    ゙、  ヽ;i \ヽ,.l ̄_,l  |:::/ /
            ゙、     ヽ`、 | /  レ' /
──────    ゙、 /     `ヽ''"  i.  /
             /   NEVADA  |/
───────  /              |
0452デフォルトの名無しさんNGNG
ちなみにプロジェクトソースも見てみることをすすめる
0453デフォルトの名無しさんNGNG
StrToDWordってないですか?
StrToIntだとDWordとの比較で警告されます。
無理やりキャストするのもあれですし。
0454デフォルトの名無しさんNGNG
結果変わりませんでした・・・・・一応もうちょっといろいろ試してみます。
0455デフォルトの名無しさんNGNG
ときどきDelphiに挑戦して挫折したのがアラシにくることはいつもどおりだな
VB厨を名乗ってくるのもたいてい挫折したのだよね。
0456デフォルトの名無しさんNGNG
>>454
プロジェクトソースを貼ってみ
0457デフォルトの名無しさんNGNG
> StrToIntだとDWordとの比較で警告されます。

DWORD にキャストしたら
0458454NGNG
Del再起動書けたら問題なく動きました。ご迷惑おかけしました。
それにしてもこんなの初めてだよ・・・・・いみわかんっす。

いろいろどうもでした。
0459デフォルトの名無しさんNGNG
>>447
[プロジェクト|オプション]のフォームの自動生成の対象にForm2が入っているか確認。
入っていなければ"<"を押して追加する。
0460デフォルトの名無しさんNGNG
> 無理やりキャストするのもあれですし。

あれってなに。プログラマが十分承知していればキャストは無害だよ。
0461デフォルトの名無しさんNGNG
integer → DWORD のキャストって、符号の有無だけでしょ。
integer がつねに正であることが確実な場合は、キャストしてしまえばいい
0462デフォルトの名無しさんNGNG
>>446
CommaText に設定するまえに、半角空白を _ などに StringReplace で変換しておけば
設定後に再変換して半角空白にもどす
0463デフォルトの名無しさんNGNG
>>446
データの両端を '  ' でくくればいいんでないかい?
0464デフォルトの名無しさんNGNG
CommaTextの書式が違うんじゃないか?
0465デフォルトの名無しさんNGNG
> データの両端を '  ' でくくればいいんでないかい?

データ区切りを自動化するために CommaText を使うわけだろ。そのまえに
分かっていればつかう必要はない
0466デフォルトの名無しさんNGNG
> CommaTextの書式が違うんじゃないか?

わけわか
0467446NGNG
>>462さんの方法でうまくいきました。
レスをくれた方ありがとうございます。
0468デフォルトの名無しさんNGNG
導入したコンポーネントを削除するにはどうしたらいいのですか?
Indv Cliants
Indv Servers
Indv Intercepts
Indv I/O Handlers
Indy Misc
かつて試しに入れてみたのですが今のところ必要ないので消しておきたいのです。隠すのではなく削除する方法を教えてください。
0469デフォルトの名無しさんNGNG
プロジェクトオプションから[パッケージ]を選んでいらない物を削除
デフォルトのチェックをONにするのを忘れずに。
0470デフォルトの名無しさんNGNG
DelphiってVBと同じに思えるんですが・・・
0471デフォルトの名無しさんNGNG
> DelphiってVBと同じに思えるんですが・・・

たとえばどこが?
0472デフォルトの名無しさんNGNG
全体的に
0473デフォルトの名無しさんNGNG
>>470
VC#やVC++やJBuilderやBCBも同じようなもんだよ
0474デフォルトの名無しさんNGNG
>>473
そーなんだ
0475デフォルトの名無しさんNGNG
同じだと思うならとりあえずDelphi道を歩むことを薦めるね。
だんだんと先細りの道であるとことは否めんがスタート時の道幅は広く(スタートしやすい)それなりに道も整備されており(コンポの充実) 何より他より楽しい。
難点は地図(指導書)がないことかなぁ・・・・

とりあえず俺はそう思う。
0476デフォルトの名無しさんNGNG
同じだと思うならDelphiは進まないほうがいいだろ。
Delphiを作っているのはたった一社のBorlandだし、
そのBorlandでさえ.NETではDelphiよりもC#に力を入れている。
0477デフォルトの名無しさんNGNG
> Delphiを作っているのはたった一社のBorlandだし、

VB は複数の会社でつくってるのか?

> そのBorlandでさえ.NETではDelphiよりもC#に力を入れている。

だから、VB にしとけってか?

>>476 は全体に意味不明

同じに思えるんだったら好きにしたらいいだろ。
0478デフォルトの名無しさんNGNG
> そのBorlandでさえ.NETではDelphiよりもC#に力を入れている。

MS だって .NETでは VB よりも C# に力を入れている、と思うよ。

0479デフォルトの名無しさんNGNG
素人は見た目のポトペタ部分が同じにみえるんだろうなぁ。だから >>473 は
ある意味正しい。そんな程度なら、何使っても同じだろうな。まったくのはじめて
プログラミングに入門するのがVBからだと思うと、ちょっと悲しい。まぁ、いいけど。
0480デフォルトの名無しさんNGNG
テキストボックスについて教えてください。

SendMessage(GetDlgItem(hWnd, IDC_MCDBEDIT), EM_REPLACESEL, 1, Longint(PChar('kkk')));
これでテキストボックスに文字(kkk)が追加されたのですが、取得ができません。

以下の記述ではダメでしょうか?なにか足りませんか?

var
buffer:string;
略
SendMessage(GetDlgItem(hWnd, IDC_MCDBEDIT), EM_GETLINE,100, Longint(Pchar(buffer)));
MessageBox(hWnd, PChar(buffer),'取得', MB_OK);


0481デフォルトの名無しさんNGNG
>>480

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
num:integer;
begin
num := SendMessage(GetDlgItem(hWnd, IDC_MCDBEDIT),WM_GETTEXTLENGTH,0,0);
s := StringOfChar(#0,num+1);
SendMessage(GetDlgItem(hWnd, IDC_MCDBEDIT),WM_GETTEXT,num+1,LPARAM(s));
MessageBox(Handle, PChar(s),'取得', MB_OK);
end;
0482デフォルトの名無しさんNGNG
あっ、EM_GETLINE か。
とりあえず、buffer の長さを確保していないのが誤り。StringOfChar() か
SetLength() で十分な長さを予め確保しておくこと。
0483デフォルトの名無しさんNGNG
しかし、いまどきダイアログリソースを使う人がいるんだな、驚いた。
0484デフォルトの名無しさんNGNG
>>481,482

どうもです。
無事出来ました。ありがとうございました。

ネットで調べても分からなくて、本屋に参考書買いに行って
一冊もdelphi置いてなし、、、助かりました。
0485デフォルトの名無しさんNGNG
>>483

AL-mailのプラグインを作りたくて奮闘中です。
初めてのプログラミングなのでヨチヨチです・・・
0486デフォルトの名無しさんNGNG
> AL-mailのプラグインを作りたくて奮闘中です。

あっ、そういう事情ですか。失礼しました。がんばってください。
0487デフォルトの名無しさんNGNG
name : String に対して ある文字列(たとえば '木’ )が含まれているかどうかの判別方法を教えてください
0488デフォルトの名無しさんNGNG
>>487
AnsiPos() がゼロ以外を返すかどうかで判断
0489デフォルトの名無しさんNGNG
>>487
AnsiContainsStr
0490デフォルトの名無しさんNGNG
>>479
ExcelやWordなどでVBAが導入されているので、VBの構文に触れておくことは
決して悪いことではではないと思うよ。
まあVB6以下では真のプロにはなりにくいことも実感できると思うけど。
0491デフォルトの名無しさんNGNG
>>477
> だから、VB にしとけってか?

意味不明なのはお前の方。
>>476のどこにVBにしとけってかいてあるんだ?
はっきり言ってお前、VBにコンプレックスあるだろ?
0492デフォルトの名無しさんNGNG
>>491
> VB は複数の会社でつくってるのか?

これには答えないつもりかよ?
0493デフォルトの名無しさんNGNG
>>491

疑問文であると分かりませんか? 日本語なんですけど。
0494デフォルトの名無しさんNGNG
StrUtilsって結構便利な関数多いよな。
今まで自作してたのと同機能のやつが2,3個あった・・・・あの手間はいったい//
0495デフォルトの名無しさんNGNG
おまいらマターリ汁
0496デフォルトの名無しさんNGNG
> あの手間はいったい

自作で間に合ってるようなのが多いでしょ。Delphi の最近のバージョンアップ
ってそんなのばっか。
0497デフォルトの名無しさんNGNG
ImgPanelに関して質問です。
各サムネイル画像から少しずれたところをクリックすると
アドレスxxxxxxxxxxx でアドレスxxxxxxxxxxxxxxに対する読み込み違反が起こりました
と表示されます。
 FrameやSpaceなども変えてみたのですがどうも変化がありません。
最も近い座標のパスを取得する もしくは エラーメッセージを出さない方法を教えてください。
0498487NGNG
>488

AnsiPos() こちらで実現可能でした。どうもです。


>489
AnsiContainsStr  こちらは未定義の識別子と出てしまいました USESに何らかの追記が必要なのでしょうか?
0499デフォルトの名無しさんNGNG
>>492

いいかげんさぁ、VBを持ち出して対抗するの止めたら?
だから、Del厨はVBにコンプレックスあるといわれるんだよ。
0500デフォルトの名無しさんNGNG
言われるも何も真実だろw
Del厨がVBにコンプレックスがあるのは。
0501デフォルトの名無しさんNGNG
>>498
>>494が便利だといっている StrUtils を Uses
0502デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1028366005/ 議論は他逝ってヤレ
0503デフォルトの名無しさんNGNG
>>494
そういうのを知らずに自分で作ってしまうことはよくあるね。
でもその努力は決して無駄なことじゃない。あなたは遠回りしたようだがいい体験をした。
0504デフォルトの名無しさんNGNG
まあもちつけ。Delphiだろうとそれ以外であろうと一社で作っているものは
採用するなと。そういうことだろ。


ちなみに、monoが作っているVB.NETについてはこちらへ
http://www.go-mono.com/mbas.html
0505デフォルトの名無しさんNGNG
>>500
そんなものはないよ。
向こうが勝手に粘着してくるだけだ。
それを無視できないのがDel厨の問題だけど。
0506388NGNG
>>410さん
(何かこのスレ、伸びるの早いですね。ほんの1日か2日なのに、すごい亀レスしてるみたい)
情報ありがとうございます。
サンプルDLして試してみました。
mdb操作、かなりおもしろいです。
DelphiからのSQL発行はこれまでも実験的に何度かやってましたけど、
(まあ実際にはmdb側にアクションクエリつくって、Execute('クエリ名')
のケースが多い。おかげでmdb内はクエリだらけ)
DB自体つくれちゃうってのはかなり驚き。

いま職場では、PCの台数分Access入れてますけど、Delphiをモノにすれば
Accessのパッケージは1個で済む、かも(そもそもDelphiに手を着け始めたのは
それがもくろみ、つか、ささやかな希望)
すでにパーソナル版でつくったモノを、職場の比較的あたりさわりない業務で使って
ますが、自信がついたらPRO版買います(パーソナル版のストリンググリッドでは
あまりにもショボい。PRO版ならもっと見栄えのいい入出力画面が作れるはずですよね)

>>ADOのヘルプ
検索したらCドライブじゃないところから見つかりました。
AccessのCDを丸々コピーしたドライブ。。。インストールしてなかったのか(゚Д゚)
0507デフォルトの名無しさんNGNG
> すでにパーソナル版でつくったモノを、職場の比較的あたりさわりない業務で使って
> ますが
ライセンス違反だボケ。

http://www.borland.co.jp/news/del6personal_j.html
> ※ Delphi 6 Personalでは、商用・業務アプリケーションの開発はできません。
0508デフォルトの名無しさんNGNG
> Del厨がVBにコンプレックスがあるのは。

最高! 可笑しくて涙出た。VB は何しに来てるん?
0509デフォルトの名無しさんNGNG
>>453
既に解決してるかも知れないけど StrToInt64 の戻り値を
DWORD にキャストする。
0510デフォルトの名無しさんNGNG
VBとDelphiって、韓国と日本の関係に似ているね。

0511デフォルトの名無しさんNGNG
> あなたは遠回りしたようだがいい体験をした。

ぜんぜん遠回りではないよ。自分の実現したい機能が既存の関数にあるかどうか
を必死に探すのもいいけどね。それがいつもあるわけではない。自分でつくって
十分テストできればそれで十分だろう。そうやって、基本的な関数を利用して
より高度な機能の関数をつくって貯めていけば自分の財産となる。論理は言語が
かわっても変わらないから、他の言語に対しても応用が効くし。

Delphi のように構造化言語とクラス型OOPLの中間のような場合では関数や
手続きがクラスの外に単独で実装できるが、Java や C# のような場合は、クラスの
static メソッドにしなければならないね。そうやって、クラスも自作できるように
なってくれば自然だよね。とにかく、このスレだけでなくて初心者の質問を見てみる
と何でも既存の関数やコンポーネントやメソッド、プロパティーの設定だけで、すべ
てのプログラムができてしまうんじゃないか、と勘違いしているように感じられる。
なんでも自作するのはそれはそれで問題だけど、自作しなくちゃできないものの方が
本当はオリジナルなものなんだ、と思うんだけどなぁ。
0512デフォルトの名無しさんNGNG
またVB厨かよ
わざわざDelphiの質問スレまで来てご苦労な話だな
0513497だけど議論に埋もれたのでもう一度・・・・・NGNG
ImgPanelに関して質問です。
各サムネイル画像から少しずれたところをクリックすると
アドレスxxxxxxxxxxx でアドレスxxxxxxxxxxxxxxに対する読み込み違反が起こりました
と表示されます。
 FrameやSpaceなども変えてみたのですがどうも変化がありません。
最も近い座標のパスを取得する もしくは エラーメッセージを出さない方法を教えてください。
0514デフォルトの名無しさんNGNG
TLabel内のキャプション(文字列)を横書きじゃなくて
縦書きで表示させたいんですけど、なんていうプロパティをいじれば
いいのでしょうか?宜しくお願いします。
0515デフォルトの名無しさんNGNG
>>506
私も最初は無料パーソナル版+ADOで遊んでいました。
現在はPRO版を購入してmdbとFirebirdを使用しています。
パーソナル版でDB処理を扱いだすとPRO版が無性にほしくなりますね。

0516よくわからない小僧NGNG
Delphi8はDelphi6みたいに、ネイティブは開発できないのですかね?
0517デフォルトの名無しさんNGNG
>>514
改行したいキャプションが存在するFormでalt+F12でソース表示し
目的のキャプションの文字列のところを '一行目'#13'二行目' 等にする。

これを使えば一行くらいならちゃんと読める縦書きになります。
他のやり方は分からないので他の人にバトンタッチを(´ω`)
0518デフォルトの名無しさんNGNG
> 縦書きで表示させたいんですけど、なんていうプロパティをいじれば
> いいのでしょうか?

Font プロパティーをいじればいいですけど、簡単ではないです。
0519デフォルトの名無しさんNGNG
>>514
専用コンポーネントをゲット汁
0520デフォルトの名無しさんNGNG
>>516
できにゃいよ。
0521デフォルトの名無しさんNGNG
>>514
Delphi の TFont は回転に対応していないので、代わりに CreateFont API を
使って論理フォントを作る必要がある。(CreateFontIndirect でも OK)
このとき nEscapement パラメータに 2700 を指定し、lpszFace パラメータが
指すフォント名の頭に '@' を付ける。
作ったフォントが不要になったら DeleteObject で解放すること。
0522デフォルトの名無しさんNGNG
>>516
その代わり8には7が標準でついてるよ
0523デフォルトの名無しさんNGNG
WINDOWサイズより大きな画像ファイルを表示させるとスクロール時にスムースに動きませんどうしたらいいですか?
0524デフォルトの名無しさんNGNG
>>523
WINDOW とは何のウィンドウですか?
画像ファイルはどんな形式でどのような方法で表示させているんですか?
スクロールとは何をスクロールしてるんですか?

画像を表示するのによく使われる TImage はウィンドウコントロールでは
ありませんし、当然スクロールバーもついてませんよね。
いまいち状況がよくわかりませんが。
0525デフォルトの名無しさんNGNG
アドレス07DE5059 で アドレス FFFFFFFF に対する読み込み違反が起こりました。

このメッセージはどういったことを意味し どうすることによりエラー回避が可能になるのでしょうか?
0526デフォルトの名無しさんNGNG
>>523
Form1.DoubleBuffered := True;
とか?

>>525
配列の範囲を越えてアクセスしてるとか、オブジェクトを2回Freeしてるとか、
CreateしてないオブジェクトをFreeしてるとか・・・あとどんなのがあるかな?
0527デフォルトの名無しさんNGNG
526
 ありがとうございました。たしかにFreeの重複がありました。
 あれらの文字列からどのようにそれらの情報を読み取ることができるのでしょうか?
0528デフォルトの名無しさんNGNG
>>527
「読み込み違反」は割り当てられてないメモリ領域にアクセスしたときに
発生すると思うので、それっぽい状況を想像してみただけ。
アドレスとかは全然見てない。
0529523NGNG
    bmp := TBitmap.Create;
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(Form1.Label1.Caption) ;
bmp.assign(Jpeg);

PaintBox1.Height := bmp.Height;
PaintBox1.Width := bmp.Width;

PaintBox1.Canvas.Brush.Color := cl3DLight;
PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width, PaintBox1.Height));
PaintBox1.Canvas.StretchDraw(Rect(0, 0, Round(bmp.Width),Round(bmp.Width)),bmp);


上記の形でPaintBoxサイズが大きくなりそれにともないformサイズが大きくなった場合Formスクロールするごとに画像を読み込みに一定いるような感じがあります。
よりスムースに表示させる方法をお教えください。
0530デフォルトの名無しさんNGNG
>>529
FillRectは必要なのか?
0531デフォルトの名無しさんNGNG
>>529
念のため確認しておきますが、最初の行から全部を PaintBox1.OnPaint に
書いてるわけじゃないですよね?

読み込み時
ビットマップへの転写は Assign じゃなくて、Width と Height を設定してから
bmp.Canvas.Draw を使うべき。(リサイズを伴う場合は StretchDraw)
これは TJPEGImage の内部データはインスタンスの外部で保持されていて、
メンバーへのアクセスはメソッドで提供されるので、アクセス回数を可能な限り
減らすことで高速化できるため。

描画時
FillRect はしなくてもいいんじゃないの?
PaintBox1 への描写時にはリサイズしないので Draw を使うべき。

その他
透過しないなら csOpaque を PaintBox の ControlStyle に加えておくと
クリッピングしないのでちらつきが抑えられる。
0532デフォルトの名無しさんNGNG
>419-423
でFillRect使うことを教わりこれでうまいこといっていたのですが、どのような問題点が考えられるのですか?

その他のこともいろいろためさせていただきます。ありがとうございました。
0533デフォルトの名無しさんNGNG
>>532
PaintBox1とbmpのサイズが同じなら、DrawでPaintBox1全体に描画される
から、FillRectで塗り潰す意味がないんじゃないの?という話なんだけど。
0534デフォルトの名無しさんNGNG
なるほど!!!
無知な私にここまで付き合っていただきありがとうございます。
0535デフォルトの名無しさんNGNG
PaintBoxを元のサイズより小さくした場合、Formに前回描画したものが
残るかどうか覚えてないんだけど、もし残ったと仮定してPaintBoxを小さくした
後にFillRectしても塗り潰されるのは小さくなったPaintBox内だけだから
やっぱり意味がなく、無駄に遅くなるだけ。

>>419-423とは状況が変わってきてるから、そのままでは適用できなく
なってきてるよ。
0536デフォルトの名無しさんNGNG
文字の幅を得る時に、Canvas.TextWidthだと遅いので、
Canvas.TextWidthよりも高速に文字幅を取得する方法があったら教えてください。
0537デフォルトの名無しさんNGNG
bmp := TBitmap.Create;
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(Form1.Label1.Caption) ;

Form2.PaintBox1.Height := Jpeg.Height;
Form2.PaintBox1.Width := Jpeg.Width;

bmp.Canvas.Draw(0,0,Jpeg);

Form2.PaintBox1.Canvas.Brush.Color := cl3DLight;
Form2.PaintBox1.Canvas.Draw(0,0,bmp);

教えていただいたことをいくつか取り入れてみたつもりなのですが一向に反応がありません・・・・
Jpegまでは問題なく取得で着てはいるのですが。
0538デフォルトの名無しさんNGNG
寸ませんおおボケしてました・・・・

Paintbox.Height Width ではなく bmp.Height 二修正したら問題なく行きました。本と寸ませんです。
0539デフォルトの名無しさんNGNG
>529
>537
で比べるとかなり体感速度が遅くなったように感じちょっと厳しいっす。
より高速な処理を望むにはどうしたらよりでしょうか?
0540デフォルトの名無しさんNGNG
質問者は、どんなイベントハンドラでコードを実行しているのか一向に答えない。
なぜ、TImage ではなく TPaintBox なのか? なにをどうスクロールしているのか?
普通は TForm のスクロールを利用するんじゃなくて、TScrollBox の中に TImage
を入れるんじゃないの? そうすると、画像の設定は一回で済む。あとはコードいらず。
0541デフォルトの名無しさんNGNG
> 文字の幅を得る時に、Canvas.TextWidthだと遅いので、

どのように「遅い」のですか? なにと比較して遅いのですか?

> Canvas.TextWidthよりも高速に文字幅を取得する方法があったら教えてください。

そういう方法があったら、Canvas.TextWidth は誰も使わないだろうな。っていうか、
このメソッドはその方法で実装するだろうね。
0542デフォルトの名無しさんNGNG
>>536
状況によっては GetTextExtentPoint32 などの API を直接呼ぶ方が
わずかに速いかも。Canvas がなくてわざわざ作る場合とか。

DC 使わずにフォントを操作するのは初心者レベルじゃないと思いますよ。

>>539
素直に TImage を使ったらどうなの? パレットの面倒も勝手に見てくれるし。
0543デフォルトの名無しさんNGNG
大変失礼しました。
画像ヴューアーを作っておりimgPanelより取得した画像ファイルをPaintBoxに出力。
そのごPaintoBoxをマウス左右クリックすることにより同フォルダ内の画像を順順に表示させたいと考えております。
以下に現在のソースの一部を示します。

procedure TForm2.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Jpeg :TJpegImage;   bmp:TBitmap;  i:Single;  j:Single;
begin {1}
if Button = mbLeft then
begin {2}
if StrToInt(Form1.Label2.Caption) < Form1.FileListBox1.Items.Count-1 then    {Form1.Label2.Caption := IntToStr(FileListBox1.Items.IndexOf(ImgPanel1.Selected.DisplayName));)
begin {3}
Form1.Label2.Caption := inttostr(strtoint(Form1.Label2.Caption) +1);
Form1.Label1.Caption := Form1.FileListBox1.Items[strtoint(Form1.Label2.Caption)];
bmp := TBitmap.Create;
Jpeg :=TJpegImage.Create ;
Jpeg.LoadFromFile(Form1.Label1.Caption) ;
bmp.assign(Jpeg);
i := Form2.PaintBox1.Height/bmp.Height;               {以下 画像をFormいっぱいにする}
j :=Form2.PaintBox1.Width/bmp.Width;
Form2.Caption := Form1.Label1.Caption;

if j<i then  begin {4-2}
PaintBox1.Canvas.Brush.Color := cl3DLight;
PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width, PaintBox1.Height));
PaintBox1.Canvas.StretchDraw(Rect(0, 0, Round(bmp.Width*j),Round(bmp.Width*j)),bmp);
Form2.Caption := Form1.Label1.Caption;
end; {4-2}
end; {3}
end; {2}
0544デフォルトの名無しさんNGNG
TImage を使うことで画像のサイズの変化に伴う比例計算も再描画も背景描画も
全部自動的に解決する
0545デフォルトの名無しさんNGNG
そうか・・imgPanelの質問をしてたのもキサマだったのか。
0546デフォルトの名無しさんNGNG
TImageって重くね?
0547デフォルトの名無しさんNGNG
> TImageって重くね?

べつに
0548デフォルトの名無しさんNGNG
TPaintBox 肉ラベルと10倍くらい遅いらしい
0549デフォルトの名無しさんNGNG
>>543

jpg → bmp の変換は無駄。Canvas.StretchDraw() では jpg も描ける

> PaintBox1.Canvas.Brush.Color := cl3DLight;
> PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width, PaintBox1.Height));

これは画像変更にともなう背景の更新をするものだろうが

PaintBox1.Refresh;

で OK 。再描画に OnPaint イベントハンドラを使っていなければね。
0550デフォルトの名無しさんNGNG
×肉ラベル
○に比べる

俺のIMEはアフォか…○| ̄|_
0551デフォルトの名無しさんNGNG
>545
Imgpanelなどのことに関する質問で何らかの不快な思いをさせてしまっていたのなら大変申し訳ありませんでした。
できれば今後もこのスレにはお世話になっていきたいと思っておりますので、皆様を不快に感じさせないようもう少し気をつけて書き込みさせていただきます。
このたびは大変申し訳ありませんでした。
0552デフォルトの名無しさんNGNG
> TPaintBox 肉ラベルと10倍くらい遅いらしい

迷信
0553デフォルトの名無しさんNGNG
>>552
>迷信
え?そうなの?
0554デフォルトの名無しさんNGNG
> Imgpanelなどのことに関する質問で何らかの不快な思いをさせてしまっていたのなら

別に不快ではないが、標準以外のカスタムコンポーネントについて延々と質問するのは
ちょっと筋違いな気がするね。作者に訊くのが本筋だと思うよ。
0555デフォルトの名無しさんNGNG
>554
アドヴァイスありがとうございました。以後そうさせていただきます
0556デフォルトの名無しさんNGNG
TPaintBox では再描画をするために普通は OnPaint イベントハンドラに
描画コードを書く。TImage は自分で画像バッファを持っているので再描画を
自動的にするだけ。>>543 のようなコードでは再描画されないので、例えば
最小化から復帰したときなどでは画像が消えてしまう。
0557デフォルトの名無しさんNGNG
JPEG の場合、読み込みに時間がかかるので、画像ビューアみたいなのだと
暇なときに何枚か先まで読んどいて必要な時に Picture に放り込めば
あまり気にならないと思う。
0558デフォルトの名無しさんNGNG
SpeedButtonにイメージエディタで作ったicoふぁいるを表示させたいのですがどうしたらいいですか?
0559デフォルトの名無しさんNGNG
>>558 TSpeedButtonのプロパティに Glyphだかなんだかがあるので
オブジェクトインスペクタで設定できる と思う。
0560デフォルトの名無しさんNGNG
(゚д゚)俺いま嘘付いた・・・
0561デフォルトの名無しさんNGNG
(゚д゚)読めた!
TimageListにicoファイルを読み込んでおいて

imageList1.GetBitmap(0,SpeedButton1.Glyph);

だ。確か左下の1ピクセルの色がが透明色になっちゃうので注意、と。
0562デフォルトの名無しさんNGNG
(゚д゚)ごめんやっぱりこれだとダメかもしれん。 うまくいかなかった。次の人タノム
0563おねぇさんNGNG
おねぇさんが>>560への罵倒が来ないようにおまじないしてあ・げ・る♥
0564デフォルトの名無しさんNGNG
おまじないの効果により、おねぇさんを罵倒するスレになりました。
0565デフォルトの名無しさんNGNG
自分で尻をたたけ!
(;´д`)ハァハァ
0566デフォルトの名無しさんNGNG
>肉ラベル
おもいっきり笑った。
腹いてーよ。
0567デフォルトの名無しさんNGNG
559でOKなんじゃないの?
え?なにがまずいの?
0568デフォルトの名無しさんNGNG
TSpeedButtonのGlyphはビットマップオンリーです。
自前でicoをビットマップに変換してから使いませう。
0569デフォルトの名無しさんNGNG
Delphiのイメージエディタでアイコン作成してTSpeedButtonのGlyph で読み込ませてみたのですが
黒色にさせるつもりのところが灰色(透過色?)に表示されてしまいます。どうしたらいいですか?
0570デフォルトの名無しさんNGNG
ちょっとはヘルプ読んでよ。

注意ビットマップの左下のピクセルは「透過」色用に予約されています。
   ビットマップで左下に位置するピクセルはすべて透過になります。
0571デフォルトの名無しさんNGNG
delphi7を買おうと思うんだけど高いよね?
0572デフォルトの名無しさんNGNG
8買うとおまけで7ついてくるよ
0573デフォルトの名無しさんNGNG
なにと比べて高いの?
0574デフォルトの名無しさんNGNG
>>573

personal6と比べて・・・
0575デフォルトの名無しさんNGNG
ただより高いものはなし
0576デフォルトの名無しさんNGNG
で、7か8どっち買えばいいの?
0577デフォルトの名無しさんNGNG
現在DElphiを起動する際 Project1.dpr ファイルをクリックもしくは Delphiを起動しファイル→開くから Project1.dpr ファイルを選択しております。
Form1 Form2 を二つ使うアプリを作成中なのですがForm1(Unit1.pas)のみがともに起動し そのあと手動でUnit2.pasを起動しております。
これをみっつのファイル同時に開かせるにはどうしたらよいですか?
0578デフォルトの名無しさんNGNG
[ツール|環境オプション]設定-自動保存の設定-プロジェクトデスクトップ
0579デフォルトの名無しさんNGNG
>>577
開くダイアログで複数選択する。
dpr が一番左になるようにしないと駄目みたい。
0580デフォルトの名無しさんNGNG
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};


ここらへんとか




{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);

ここらへん

Application.Run;
end.




dprにUnit2追記とかして何とかなったりするのかな?
0581デフォルトの名無しさんNGNG
「ファイルを開く」と Form2.Show を混同してるんじゃないの
0582デフォルトの名無しさんNGNG
>>581

> そのあと手動でUnit2.pasを起動しております。

たしかに
0583デフォルトの名無しさんNGNG
混同しているのではないのだと思いますが、
>579 さんがおっしゃっていることに起こる動作をワンタッチでできないものかなぁという質問でした。
0584デフォルトの名無しさんNGNG
[ファイル]-[開き直す]
0585デフォルトの名無しさんNGNG
[表示]-[プロジェクトマネージャ]
0586デフォルトの名無しさんNGNG
579ga
一番手っ取り早いのかなぁ・・・なんとかしたい。
0587デフォルトの名無しさんNGNG
>>586
578に書いてあるやつでいいんじゃないの?
578に書いてあるように設定して, unit2とか必要なものを開いてからdelphiを再
起動すればよし.
0588デフォルトの名無しさんNGNG
おおなるほど!!!
dprからではなく Delphi起動によって閉じたときに使っていたものもひらかれるんですね。
ありがとうございました。
0589デフォルトの名無しさんNGNG
ずーっと開かれ続けるんじゃ
0590デフォルトの名無しさんNGNG
jpeg画像の拡張子に関しましていろいろ調べてみたのですが

jpg JPG jpeg *.jfif *.jpe

下記二つに関しては見たことはありませんが、調べたらこんなんまででてきたので値とびっくりです。
上記三つ以外に一般的に使われていると思われるのありますでしょうか?
0591デフォルトの名無しさんNGNG
バーチャルメモリーが4096以上残る場合
どこか解放を忘れてると思って間違いないですか?
Delphi6です

クラスをいっぱい作ってるのですが
全部解放してるかどうかの確認はしてないので不安です
0592デフォルトの名無しさんNGNG
MemCheck使え
0593デフォルトの名無しさんNGNG
ちょっと意見を聞かせてください。

現在、とあるプログラムを製作中で半年ほどかけて全体の半分ぐらいまで出来てきました。
一番多用されるデータがあるのですが、このデータの形式を変えれば
劇的にデータサイズが減らせることに最近気が付きました。(データのサイズが1/3程度になる)
しかし、データの形式自体が変わってしまうためプログラムの多くの部分を改修せねばなりません。

プログラムの大部分の改修を覚悟してデータ形式の変更を実施したほうがいいのでしょうか?
0594デフォルトの名無しさんNGNG
>>593
バックアップしてすこし試してみればいい。
0595デフォルトの名無しさんNGNG
>>593
データの量が莫大なら仕様変更。
量が少なくてそれほどメモリ食ってないならそのまま
0596デフォルトの名無しさんNGNG
>>593
・現状データサイズの大きさが問題になっているか
・仕様変更による遅延が問題になりうるか
・完成した後に変更した場合、すぐ修正する場合と比べて修正箇所が倍になるか、
  データのコンバート等の余分な作業が発生しないか。
・データ構造はそのままで、データにアクセスする部分を一元化して、
後から最小限の修正でデータ構造を差し替えられるように変更することは可能か

あたりを考えてみればいいんじゃないの。
一般論としてはなんとも言いようがないよ。
0597デフォルトの名無しさんNGNG
>>593
データに変更があってもプログラムの多くを改修しなくて良いように、
DB−DOC−FORM
の構造に作り直しとけ。
話はそれからだ。

・FORMはDOCクラスしか見ちゃいけない。
・DOCは構造体配列+データのロード、更新メソッド
0598デフォルトの名無しさんNGNG
>DB−DOC−FORM
なんだこりゃw
0599593NGNG
みなさんありがとうございます。
結局、現状のバックアップをとって改修することに決めました。

ああ、恨むべきは自分の才能の無さかなぁ・・。
なんで最初にデータの仕様を考えたときに思いつかなかったのかな・・。
0600デフォルトの名無しさんNGNG
CPad for LSI C-86を設定してみたのですが、
ファイルを保存するときは
ファイル名.exeとしなければならないのでしょうか?
0601デフォルトの名無しさんNGNG
お前ら毎日毎日スレ速ぇ・・・
マターリ頼む。
まるで売れてて流行っとるみたいじゃんか。
0602デフォルトの名無しさんNGNG
売れてて流行っとるんだが。
0603デフォルトの名無しさんNGNG
>>600
name.c
0604600NGNG
>>603
レスありがとうございます。
そういうふうにしたら、コンパイルのときに
c\〜.exeがみつかりませんとなるのですが…
0605デフォルトの名無しさんNGNG
Delphiの練習で神経衰弱ゲームを作ろうと思ったのですが、
52枚のカードに対応した52個のスピードボタンとOnClickイベントを
ダラダラと52回並べて書くのはいかにも効率が悪いと感じました。

こういう、同じようなイベント処理がたくさん出てくる時に
使うべきテクニックを教えてください。
キーワードがわかれば、あとは自分でぐぐって調べてみます。

よろしくお願いします。
0606デフォルトの名無しさんNGNG
どなたかこのスレのpart13 htmlにしてどこかにあげていただけないでしょうか?お願いします。
0607デフォルトの名無しさんNGNG
スピードボタンの Tag に数値を設定するとイベントハンドラは一つで済む。
Sender を TSpeedButton にキャストして Tag の数値を見れば、どのカードが
クリックされたのか分かる。

101 スペードにエース
102 スペードの2
...
413 ダイヤのキング

とか。
0608デフォルトの名無しさんNGNG
デコードを簡単にするためには

$11 スペードのエース
$12 スペードの2
...
$1D スペードのキング
...
$4D ダイヤのキング
0609デフォルトの名無しさんNGNG
>>605
1.各スピードボタンのTagプロパティに固有の番号を与える
2.スピードボタンを全部複数選択
3.OnClickイベントを作成(各スピードボタンのイベントを一つのメソッドで共有できる)

4.Sender引数をスピードボタンにキャスト(Senderにはそのイベントを起こしたボタンのオブジェクトが入る)
5.キャストしたSenderのTagプロパティを見て処理を分岐(case文使うかな?)
こんな感じ

procedure TForm1.ButtonClick(Sender:TObject);
begin
  
  case (Sender as TSpeedButton).Tag do
〜〜〜〜〜〜
  end;
  
end;
0610デフォルトの名無しさんNGNG
>>606
ABoneのdatファイルをDelWikiの2chミラーにうpした。
htmlへの変換がわかんないから自分でやっとくれ。
0611デフォルトの名無しさんNGNG
>>606
どぞ
ttp://www.asahi-net.or.jp/~ed2y-akg/kudasure13.html
0612デフォルトの名無しさんNGNG
>>590
jpegってのは作業部会の名前(Joint Photographic Experts Group)の略であって、画像フォーマット名じゃないよ。
で、いわゆるjpeg画像の中で一般的に使われるフォーマットがJFIFというのがあるんで、jfifという拡張子が付いている画像もあるんじゃないんだろうか。

jpgとjpeは拡張子が3文字しか対応していないシステム向けの設定ですね。普通はjpgとするけど、jpegをそのまま持ってきたときに最後の一文字が削られてjpeになる可能性もあるので、それも登録してあるという話。

jfif以外にJPEG-TIFF形式とかExif形式とかの形式もある。
0613デフォルトの名無しさんNGNG
Frm1, Frm2, ・・・複数のフォームから自由に使える関数ってのは、
どこに書けばいいんですか
0614デフォルトの名無しさんNGNG
publicにでも書いとけば?
0615デフォルトの名無しさんNGNG
privateに書くとそのフォームからしか使えない
publicに書くとっどこからも使える
0616デフォルトの名無しさんNGNG
そういう意味じゃなくてグローバル変数のことじゃない?

var
 Form1: TForm1;

のところに書けばいいと思う。
0617デフォルトの名無しさんNGNG
CGIプログラムをWeb App Debbugerでデッバグしたいと
考えてるんですが、どうやっても対象プログラムが
Form1の表示前後で止まって、フォーム上で砂時計
のままです。

停止させると、いつもntddl.NtWaitForSingleObject:で
ループしてるみたいです。もしかして、これが普通?

なお、プロジェクト作成時に自動的に付加される部分は
まったく触ってません。

なにかヒントはないでしょうか?
0618デフォルトの名無しさんNGNG
>>615
ダウト!
0619デフォルトの名無しさんNGNG
>>615
>privateに書くとそのフォームからしか使えない

×フォーム
○ユニット

だな
0620デフォルトの名無しさんNGNG
>>618-619
>>613にユニットとか言い出したら
パニくる気がした
0621デフォルトの名無しさんNGNG
>>613

IntToStr() はどのユニットからも使えるよね。正確にいうと、uses に SysUtils を
含めるとどのユニットからも使える。汎用の関数は、Form を定義しているユニットから
独立させて、それ専用のユニットファイル、例えば MyUtils.pas などのユニットの
interface 部に宣言しておくと、そのユニットを uses するとどのユニットファイルか
らも使えるようになる。
0622デフォルトの名無しさんNGNG
新規作成 - ユニットファイル で骨組みつくってから、名前を付けて保存ね。
0623613NGNG
↓以下の文書いて投稿して寝ようとしたところで、>>621氏のカキコ目にしたら目が覚めました。
もうひと頑張りいきます



>>613, 614, 615, 616
レスかんしゃです

private
{ Private 宣言 }
public
{ Public 宣言 }
end;
これの、public と end の間に function〜書いたら怒られました

var
 Form1: TForm1
のところに function 書いてもやっぱり怒られました。

どのフォームからでも使える関数を、フォーム1のパスに書くというのも何だか変な気がしたので
ためしに1つ上の階、というか、project1のソースのところに適当に書き散らしてみたら、
やっぱり怒られました。

自分的にはもはや打つ手なしという感じなので、ダメなら各フォームごとに
同じ関数くりかえし書くという妥協案を用意した上で、取りあえず寝ます
(本日はくたくたです)
0624デフォルトの名無しさんNGNG
ソースファイルを見てみることをすすめるよ。SysUtils.pas とかの。
personal ユーザなら宣言部だけの SysUtils.int があるはずだから
それをみると感じがつかめる。
0625デフォルトの名無しさんNGNG
例

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

unit MyUtils;

interface

uses
SysUtils;

function SumTwo(const V1,V2:integer):integer;

implementation

function SumTwo(const V1,V2:integer):integer;
begin
result := V1 + V2;
end;

end.

-------------------------------
0626デフォルトの名無しさんNGNG
使用例

var
Form1: TForm1;

implementation

{$R *.DFM}

uses
MyUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(SumTwo(3,5));
end;
0627613NGNG
>>614様--->>626様、お騒がせしました
ようやく、できました
心安らかに寝れます。

{$R *.dfm}
↑
 ↓
uses unit何ちゃら, unit何ちゃら・・・;

この二つはどっちが上でもいいのかな。
どっちも問題なく実行できちゃいました。

何はともあれ、おやすみなさい
0628605NGNG
>>607-609
Tagプロパティですね。わかりました。やってみます。
0629デフォルトの名無しさんNGNG
過去ログdat&htmlあげてくれた方ありがとうございました。
このスレの方々は皆さんとても親切な方が多くチョコチョコ見させてもらっております。
とてもいい雰囲気のスレですね。
0630デフォルトの名無しさんNGNG
>612
ファイルの形式を調べる方法に関して拡張子によつ判別しか思いつかず 以下のような見苦しいものになってしまっているのですが
もう少しスマートな方法などありますでしょうか?

AnsiCOntaintStr の引数[2]にOrなどが使えればと思うところなのですが適切な関数などもありますでしょうか?  

count := 0;

if(AnsiContainsStr(Form1.ImgPanel1.Selected.DisplayName,'jpg') = True)         { 文字列にjpgがふくまれていたら count++}
then
begin
count := count+1;
end
else if(AnsiContainsStr(Form1.ImgPanel1.Selected.DisplayName,'jpeg') = True)    { else 文字列にjpgがふくまれていたら count++}
then
begin
count := count+1;
end
else if(AnsiContainsStr(Form1.ImgPanel1.Selected.DisplayName,'JPG') = True)    { else文字列にjpgがふくまれていたら count++}
then
begin
count := count+1;
end

if count > 0 then                                             {countが1以上ならJPEGファイル}
begin

0631デフォルトの名無しさんNGNG
if AnsiMatchText(ExtractFileExt(DisplayName), ['.jpg', '.jpeg']) then // 大文字小文字を区別せずに判定
0632デフォルトの名無しさんNGNG
var
FileName: string;
begin
FileName := 'C:\test.jpg';
if AnsiLowerCase(ExtractFileExt(FileName)) in ['.jpg', '.jpe', '.jpeg', '.jfif', ] then
begin
//もにゅもにゅ
end;
end;
0633デフォルトの名無しさんNGNG
>in ['.jpg', '.jpe', '.jpeg', '.jfif', ]
ネタか?
0634デフォルトの名無しさんNGNG
>631-633 
ありがとうございました。
0635デフォルトの名無しさんNGNG
大学でDelphi6を使って計算とかしてるんですけど、
そもそもDelphiってどんなことができるんですか?
物凄く可能性が大きいプログラム開発ソフトなんですか?
PC初心者なので、いまいちよくわかりません。
どなたか教えてください。
0636デフォルトの名無しさんNGNG
PByteArrayの要素数を求めたいのですが、Lengthだと求められません。
なにか良い方法はないですか?
0637デフォルトの名無しさんNGNG
ない。
ポインタと一緒に要素数を受け取るしかない。
0638デフォルトの名無しさんNGNG
>>636
PByteArray は Byte 配列へのポインタであって、Byte へのポインタの配列ではない。
1 つのポインタに対して要素数という概念は存在しない。

type
  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;
0639デフォルトの名無しさんNGNG
>>635
windowsアプリケーションを作成するためのソフトです
OSを書くといって用途には向かないでしょう
0640デフォルトの名無しさんNGNG
>>635
>そもそもDelphiってどんなことができるんですか?
Delphiで何かをするというよりは、Delphiで作ったソフトウェアで何かをする。
0641デフォルトの名無しさんNGNG
>物凄く可能性が大きいプログラム開発ソフトなんですか?
Delphiに限った話ではないが、プログラマ次第。
0642635NGNG
>>639
>>640
>>641
ありがとうございます。
またわからないことがあったら質問させてください。
0643デフォルトの名無しさんNGNG
DirectX7のDirect3DXをDelphiで使うには、どうすればいいですか?
0644デフォルトの名無しさんNGNG
finalization部で発生するEAccessViolationをexceptしたいんですが、
Runtime Error216で強制終了してしまいます。
どうすればexceptできるようになりますか?
0645デフォルトの名無しさんNGNG
二重にFreeしてるとか? まず例外を起こさないようにすることが先決では?
0646デフォルトの名無しさんNGNG
finalization 部に実装コードを書かずに interface 部で宣言した手続きを
呼び出す形にして、その手続きの中で例外処理したらどうですか?
0647デフォルトの名無しさんNGNG
>>645
バグがあるわけではなくとあるデバッグ用に意図的に起こしてるんです。

>>646
既にそうなってるんですが、駄目みたいです。

よく考えたらSysUtilsをusesしてないので
exceptしようにもその例外クラス(SysUtils.Exception)が存在していことに気がついた・・・
exceptは諦めるとして何とか終わらないで済む方法はないですかね。
0648デフォルトの名無しさんNGNG
例外オブジェクトを扱うには SysUtils を uses しないと駄目でしょ。
interface 部で uses すれば finalization 部でも使えると思います。
0649デフォルトの名無しさんNGNG
質問です。
今プリンタにAPIを使用して印刷処理をしています。
印刷中止ボタンが押されたら
AbortDoc(FHandle);
で中止処理をしたいのですが、ジョブが削除できません。
これだけではだめなのでしょうか?
0650514NGNG
レスありがとうございます。
色々検索して試したりしながら、やってみたのですがどうしても上手くいきません。
改行コードを使ってもいいのですが、縦書きでの()を表示しないといけないので、そうすると

(
テ
ス
ト
)

このようになってしまうのです。
何かいい方法がないでしょうか?

>>521
もしよかったらサンプルコードなどを載せていただけないでしょうか?
0651514NGNG
ちなみにネットで見つけた↓のようなサンプルコードを試してみたのですが、上手くいきませんでした。
何かコードに問題があるようでしたら、指摘して下さい。宜しくお願いします。

// テキストを縦書き(回転)描画する
procedure TForm1.TextOutTategaki(Canvas: TCanvas; x, y: Integer;
s: String);
var
lfText: TLOGFONT; // フォント情報(SDK の‘LOGFONT’を参照)
hfNew, hfOld: HFONT; // フォントハンドル
begin
// フォント情報を Canvas.Font から取得
GetObject(Canvas.Font.Handle, sizeof(TLOGFONT), @lfText);
// フォント情報の変更(この場合は表示角度:反時計回り)
lfText.lfEscapement := 270 * 10; // 任意の角度を指定可能
lfText.lfOrientation := lfText.lfEscapement;
lfText.lfClipPrecision := lfText.lfClipPrecision or CLIP_LH_ANGLES;
// 変更したフォント情報を用いて、新しいフォントハンドルを作成
hfNew := CreateFontIndirect(lfText);
// 新しいフォントハンドルをデバイスコンテキストに選択し、
// それまで選択されていたフォントハンドルを保存
hfOld := SelectObject(Canvas.Handle, hfNew);
// 選択したフォントハンドルを用いてテキストを描画
// この回転角度の場合は、座標(x, y) が描画領域の右上隅になる
Canvas.TextOut(x, y, s);
// 元のフォントハンドルハンドルを選択し戻す
SelectObject(Canvas.Handle, hfOld);
// 作成したフォントハンドルを削除
DeleteObject(hfNew);
end;
0652デフォルトの名無しさんNGNG
GetObject 〜 CreateFontIndirect の間を次のようにしてみて。

GetObject(Canvas.Font.Handle, SizeOf(TLogFont), @lfText);
// 回転角の指定
lfText.lfEscapement := 270 * 10;
// フォント名を 1 バイト後ろにずらす
StrMove(@lfText.lfFaceName[1], @lfText.lfFaceName[0], LF_FACESIZE - 2);
// フォント名の先頭に '@' を入れる (縦書きフォント)
lfText.lfFaceName[0] := '@';
// 変更したフォント情報を用いて、新しいフォントハンドルを作成
hfNew := CreateFontIndirect(lfText);
0653デフォルトの名無しさんNGNG
GetObject() する前に

Font.Name := '@'+Font.Name;

の方が簡単では?
0654デフォルトの名無しさんNGNG
>>652
レスありがとうございます。
ご指摘通りにしてみたのですが、相変わらず上手くいきませんでした。

何か単純なミスがないかもう一度ソースを見直してみます。
0655デフォルトの名無しさんNGNG
どううまくいかないかを書かないんだよなぁー、初心者って。
0656デフォルトの名無しさんNGNG
>>655
すみません。テキストが横書きのまま何も変化しない、ということです。
失礼しました。
0657デフォルトの名無しさんNGNG
>>653 のネタ元の

http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N003.html

の一番下のやつを試してみたら。
0658デフォルトの名無しさんNGNG
Delphi6 で TWebBrowser を使用しているのですが、
TIdHTTP.Get で取得したHTMLの文字列を直接ブラウズするには
どうすればよいでしょうか?
TWebBrowser.Document にセット出来ればよいのですが。
0659デフォルトの名無しさんNGNG
CreateFontIndirect の前で止めて lfText の中身を確認してみたら?
lfFontName の先頭に '@' が入ってますか?

あと、Canvas.TextOut の代わりに
TextOut(Canvas.Handle, X, Y, PChar(S), Length(S));
にしてみたらどうなりますか?
0660デフォルトの名無しさんNGNG
Thu, 10 Jun 2004 09:53:32 GMT
をTDateTimeに変換するにはどうすればいいでしょうか?
0661デフォルトの名無しさんNGNG
>658
ttp://www.monazilla.org/document/directwrite.html
ttp://hogehoge2001.at.infoseek.co.jp/note-delphi.html
0662デフォルトの名無しさんNGNG
>>657
紹介頂いた方法でできました。
ありがとうございます。

>>659
指摘通りにしましたが、相変わらずです。
@もちゃんと入ってました。
何でこちらだとできないんでしょう?

0663デフォルトの名無しさんNGNG
>>660

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
st:integer;
dt:TDateTime;
begin
s := 'Thu, 10 Jun 2004 09:53:32 GMT';
st := Pos(' ',s);
dt := VarToDateTime(Copy(s,st+1,Length(s)-st-4));
Label1.Caption := DateTimeToStr(dt); // 確認
end;
0664デフォルトの名無しさんNGNG
>>662
私の環境では以下のコードでうまくいくようですがおかしいですね。
PaintBox1 の OnPaint を使って描画しています。

procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  S: string;
  X, Y: Integer;
  LF: TLogFont;
  NewFont, OldFont: HFONT;
begin
  S := '「文字列。」';
  X := 20;
  Y := 10;
  GetObject(PaintBox1.Font.Handle, SizeOf(TLogFont), @LF);
  LF.lfEscapement := 2700;
  StrMove(@LF.lfFaceName[1], @LF.lfFaceName[0], LF_FACESIZE - 2);
  LF.lfFaceName[0] := '@';
  NewFont := CreateFontIndirect(LF);
  OldFont := SelectObject(PaintBox1.Canvas.Handle, NewFont);
  TextOut(PaintBox1.Canvas.Handle, X, Y, PChar(S), Length(S));
  SelectObject(PaintBox1.Canvas.Handle, OldFont);
  DeleteObject(NewFont);
end;
0665デフォルトの名無しさんNGNG
Del6パーソナルをインストしたのですが、プログラム未経験の私でも
参考になるHPを見ながら勉強すれば、アプリの1つくらい作れるようになりますでしょうか。
0666デフォルトの名無しさんNGNG
>>665
やる気次第。





「お前には無理」と言ったらどうするつもりなのだろう?
0667デフォルトの名無しさんNGNG
>>665
メモ帳もどきぐらいならすぐ作れるよ。
機能面で高望みしないならインターネットブラウザーなんかも。
0668デフォルトの名無しさんNGNG
>>665
地道にやれば、誰でもアプリのひとつぐらい、結構簡単にできると思う
最初は無理せずに、すごく簡単なモノから始めて、徐々に難易度が
高いアプリを創っていけばいいと思う。

まず、勉強するなら、おすすめサイトを紹介しておくね

ttp://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html

ttp://www.wakhok.ac.jp/~tetsuo/delphi/text/


二つとも、徐々に勉強していくうえで、すごくためになるサイトだと思う

他にもいろいろサイトあるけど、とりあえず、うえの二つをやってみては
どうでしょう
0669デフォルトの名無しさんNGNG
TMenuItemのショートカットキーを一時的に無効にしたいのですがどのようにすればできるでしょうか?
0670デフォルトの名無しさんNGNG
いくら「くだすれ」でも、サンプルコードを要求するのは図々しいと思う。
0671デフォルトの名無しさんNGNG
そう思うんだったら、無視するとよいのでは。
ごちゃごちゃ説明するより、コードを示して解決するのが早道という場合もあるさ。
0672670NGNG
>>671
いや、オレはサンプルコードも出されないヘタレだけどさ。
「図々しいな」と思ってる人もいるぞ、と。
そう思いながらレスしてもらいたい、と。
0673デフォルトの名無しさんNGNG
>>672
>「図々しいな」と思ってる人もいるぞ、と。

はい、そう思っている人もいるんだな、ということは想像できます。

ま、しかし、
自分が持ってるコードや簡単にコピペで示すことが出来る場合は、コードで
解決できればそれに超したことはない、と思っているひともいると。
0674デフォルトの名無しさんNGNG
ならばここにうpロードして見てもらえばいい。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0675デフォルトの名無しさんNGNG
>>674
そんな倉庫みたいなとこに貼れるかよ。
ここに貼るなというのも図々しい要求だと思うぞ。
0676デフォルトの名無しさんNGNG
くだすれの数スレ前はけっこうバンバン貼られていたんだけどな。
別に要求することもされることもなく自然に。
最近自分で調べないクレクレ君が増えているのではないかと思う。
0677デフォルトの名無しさんNGNG
つーか、誰がサンプルコード要求してるの?
サンプルコードを要求するレスがあって、それに対して「図々しいな」ならわかるが、
いきなり「図々しいな」といわれれても話にのれない。
0678デフォルトの名無しさんNGNG
また変なのが涌いてきたな
別にここは回答するのが義務じゃないんだよ
出したくないものは出さなくてもいいし
出せるものは出す
何か問題でもあるか?

ここのレベルが低すぎて気に入らないならワンランク上のスレに移動するがよろしい
0679デフォルトの名無しさんNGNG
>>678
「変なの」に反応してるオマエモナー
0680デフォルトの名無しさんNGNG
>>665
ホレ。

ttp://delphi.sakura.vg/index2.html
0681デフォルトの名無しさんNGNG
ちょっと前のコードはバグが潜んでいるよ。
0682デフォルトの名無しさんNGNG
RSSのコンポーネントないっすか?
マウスジェスチャ対応のタブでジャンル分けできるRSSリーダーを作りたいっす。
0683658NGNG
>>661
どもです、無事解決できました。
0684デフォルトの名無しさんNGNG
>>682
コンポーネントじゃないけど、
http://testesca.at.infoseek.co.jp/hoka/sonota.htm#Rreader
これがDelphi製でソース付属だったはず。
0685682NGNG
>>684
おぉおおう!
なんちゅー完成度。
これ使います(^^;
ありがとうございました。
0686デフォルトの名無しさんNGNG
RSSって何?
0687デフォルトの名無しさんNGNG
>>686
スレ違い。検索したらいくらでも出てくるから自分で調べろ。
0688デフォルトの名無しさんNGNG
クイックリポート使って印字プログラムを作成しているのですが、斜線の出し方が分かりません。
印字内容はエクセル風な単純な表なのですが、一つのセルの中に斜線を表示したいのです。
QRShapeのプロパティをいじれば、この斜線は出せますでしょうか?宜しくお願いします。
0689デフォルトの名無しさんNGNG
昔の話になりますが、N88-BASICにはブリンク色(点滅)があって便利だったのですが
Windowsにはこういう点滅色のような概念はあるのでしょうか?
また、これを実現するにはTimerのOnTimeイベントを使って手動で点滅させるしかないのでしょうか?
0690デフォルトの名無しさんNGNG
1文字点滅させるならでかいキャレット作ればいいけどね
0691デフォルトの名無しさんNGNG
点滅という単純な表現技法がこれほどめんどくさいものとは・・
0692デフォルトの名無しさんNGNG
TListの中に、独自のレコード型TGroup、TDataへのポインタが混在しているとして
それらを判別する方法はありますか?
0693デフォルトの名無しさんNGNG
○TGroupe
×TGroup
0694デフォルトの名無しさんNGNG
無い。無いからTGroupやTDataの頭1バイトを識別用のフィールドにするとか。
0695デフォルトの名無しさんNGNG
TListを拡張して識別用変数を追加すれば?
0696デフォルトの名無しさんNGNG
>>695の方法は分かるのですが、
>>694はどのようにすればいいのですか?
0697デフォルトの名無しさんNGNG
>>692
レコード型でなければならない理由がないなら、クラス型にする。
0698デフォルトの名無しさんNGNG
692ではないけどクラスへのポインタは識別できるの?
0699デフォルトの名無しさんNGNG
まず、ポインタを TObject にキャストしてから is が使えるから識別可能
0700デフォルトの名無しさんNGNG
一長一短だよね。レコード型なら、694さんのように最初のフィールドを
識別用に設ける。クラスにすると、いちいちコンストラクタで生成する必要が
ある。
0701デフォルトの名無しさんNGNG
レコード型でも動的にに作成する場合と比較すると、クラスの方が便利だね。
0702デフォルトの名無しさんNGNG
>>696
仮に以下のような定義だったら、
TGroup=recoed
  ID:Byte;
  Param1:Integer;
  Param2:Integer;
end;
TData=recoed
  ID:Byte
  Data:array[0..7] of Byte;
end;
PGroup=^TGroup;
PData=-^TData;

TGroup型変数のIDには1を、TData型変数のIDには2を代入しておく
その後TListに追加。
TListからデータを使うときには、
まずPBYTE(^Byte)にキャスト、逆参照して値を調べる
するとPGroup由来かPData由来か解るので、次に適切な型にキャストしてデータを利用する。

なお、Delのクラス(オブジェクト)はC++とは違って
余計な物が沢山ぶら下がっておりリソース負荷が大きい。
データ保持目的だけならあまりおすすめ出来ぬ。
0703デフォルトの名無しさんNGNG
>余計な物が沢山ぶら下がっておりリソース負荷が大きい。
ぜんぜん大きくないが。
インスタンスにはVMT分の4バイト増えるだけ。
クラスだってテーブルが微妙に増えるだけ。
それすら問題になるような用途ではそもそもDelphi自体が無駄の塊。
Delphi使うならそんなそんなせこいコードを人に勧めるべきじゃないね。
0704デフォルトの名無しさんNGNG
クラスを使うとこんな感じ。解放も自動化できるよ。
type
 TGroup = class;
 TData = class;

var
 list: TObjectList;
 i: Integer;
begin
 list := TObjectList.Create(True);
 list.Add(TGroup.Create);
 list.Add(TData.Create);

 ...

 for i := 0 to list.Count-1 do
 begin
  if list[i] is TGroup then
   TGroup(list[i]).GroupMethod
  else if list[i] is TData then
   TData(list[i]).DataMethod;
 end;

 list.Free; // ぶらさがったオブジェクトも解放。
end.
0705692NGNG
レスをくださった皆様ありがとうございました。
クラスをまだちゃんと理解していないので、
学習を兼ねて>>704さんの方法に挑戦してみます。
0706デフォルトの名無しさんNGNG
現在プログラム板にはHSP関連スレに凶悪な荒らしどもが住みついています。

・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる

などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?

【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0707デフォルトの名無しさんNGNG
>>704
 list.Free; // ぶらさがったオブジェクトも解放。
これでオブジェクトも一緒に解放されるのですか?

いつもこんなコード書いてるんですけど無駄な事してるのかな・・・・
destructor list.destory;
begin
 while list.count>0 do begin
  p:= list[list.count-1];
  p.free;
 end;
 inherited Destory;
end;
0708デフォルトの名無しさんNGNG
>>707
TObjectList.Constructorミロ
0709デフォルトの名無しさんNGNG
StatusBar1.Panels[0].textのフォントを変えることはできますか?
もしできるのであれば変更の仕方を教えて下さい。
0710デフォルトの名無しさんNGNG
>>708
それはどこにありますか?
0711デフォルトの名無しさんNGNG
ボタンのクリックイベント中などにタイマーイベントが発生した場合、
処理はどちらが優先されるんですか?
0712デフォルトの名無しさんNGNG
標準のタイマーは処理が終わるまで待つんじゃなかったかな?

特製タイマーでタイマーの処理中にタイマーが呼び出されて大変なことになったことはあったが
0713デフォルトの名無しさんNGNG
>>709
StatusBar1.Fontをオブジェクトインスペクタから変更

>>710
TObjectListのヘルプのメソッド

>>711
大麻イベントが発生するのは
ボタンクリックのイベントハンドラを抜けてから。
あるいはハンドラ内でAppliation.ProcessMessageを呼び出したら。
0714709NGNG
>>713
レスありがとうございます。
それではPanel[1]やPanel[2]のフォントまで
変わってしまいませんか?
Panel[0]のフォントだけ変えたいです。
0715デフォルトの名無しさんNGNG
>>714
Panels[0]だけなら無理。
直接Canvasに書き込むか、LabelをPanel[0]領域に貼り付けるとかするしかない。
0716709NGNG
>>715
ほんまですか…。
ほんま親切にありがとうございました。
0717デフォルトの名無しさんNGNG
よく勘違いされてるけどTTimerはタイマイベントが送られてくるだけで
タイマ割り込みじゃないよ。
0718デフォルトの名無しさんNGNG
>>712 >>713 >>717
大麻わかりました、ありがとうございます。
0719デフォルトの名無しさんNGNG
>>709
> Panel[0]のフォントだけ変えたいです。

・Panel[0] の Style プロパティを psOwnerDraw に設定
・TStatusBar.OnDrawPanel で何でも描画できる。フォント変更も可
・TStatusBar.OnDrawPanel イベントのヘルプに例がある
・TStatusPanel.Style プロパティーのヘルプも読む
0720デフォルトの名無しさんNGNG
WebBrowserに自分でHTMLを作って表示したいのですが、
文字列をどんどん足していくにはどうすればいですか?
0721デフォルトの名無しさんNGNG
>>720
Add
0722デフォルトの名無しさんNGNG
PageControl で動的に Tab を追加して、そこへ動的に貼り付けたオブジェクトのイベントが発生した時
そのイベントの中で自分が張り付いている Tab を参照するには、どうすればいいでしょうか?
0723デフォルトの名無しさんNGNG
Tspeedbutton に
0724デフォルトの名無しさんNGNG
>>722
動的に貼り付けるとき、ParentとOwnerはどうしてるの?
0725デフォルトの名無しさんNGNG
.Parent := TabSheet;
ってやってます。Owner はちょっと判りません。
0726デフォルトの名無しさんNGNG
なら.Parent as TTabSheetってすればいい
0727デフォルトの名無しさんNGNG
判りました、ちょっと試してみます。
0728デフォルトの名無しさんNGNG
public
  Point : TPoint;

これだとPoint.xに代入できるのですが

private
  FPoint : TPoint;
public
  property Point : TPoint read FPoint write FPoint;

これで

Point.xに代入しようとすると

代入できない左辺値です
と言うエラーが出るのですがどうしてでしょうか?
0729665NGNG
皆さん親切に教えていただいてありがとうございました。
教えていただいたサイトを見ながら、頑張っていきたいと思います。
0730デフォルトの名無しさんNGNG
>>726
すいません、試してみたのですがどうにも判らないので、具体的に書かせてもらいます。

・TTabSheet.Create(Self)でタブを動的作成。
・作成したタブ上に WebBrowser を作成。
・WebBrowser で Navigate を実行。
・TitleChange イベント発生時に、変更されたタイトルを親タブのCaptionに反映させる。

以上、よろしくお願いします。
0731デフォルトの名無しさんNGNG
TMemIniFileのメソッドを使ってiniファイルにコメントを書くにはどうすればい
いのでしょう?
AssignFileでやるしかないでしょうか?
0732デフォルトの名無しさんNGNG
>>730

procedure TForm1.Button1Click(Sender: TObject);
var
ts:TTabSheet;
wb:TWebBrowser;
begin
ts := TTabSheet.Create(self);
ts.PageControl := PageControl1;
ts.Caption := 'AAAAAA';
wb := TWebBrowser.Create(self);
wb.ParentWindow := ts.Handle;
wb.Tag := integer(ts); // ここに注目!
wb.OnTitleChange := WebBrowserTitleChange;
wb.Navigate('http://www.google.com/intl/ja/');
end;

procedure TForm1.WebBrowserTitleChange(Sender: TObject;
const Text: WideString);
begin
TTabSheet((Sender as TWebBrowser).Tag).Caption := Text;
end;
0733デフォルトの名無しさんNGNG
>>732
ありがとう御座います。無事に処理出来ました。

>wb.Tag := integer(ts); // ここに注目!

これがかなりミソのようですね。
0734デフォルトの名無しさんNGNG
>>728
property Pointが受け取れるのは「TPoint型」だが
Point.xは「integer型」だから
0735デフォルトの名無しさんNGNG
>>734に補足しておくと、Point関数を使えばいいと思う。
0736デフォルトの名無しさんNGNG
VBでいう On Error GoTo 処理のやり方がよく分からず、Web上のサイトをいくつか参考にしながら
下のように書いてみたんですが、これは正しいんでしょうか。
わざとエラー状態をつくって(処理に必要なテーブルを消したり、MDBファイル自体を消したり)
試したところ、Exeファイルからだと望み通りの結果が得られますが、dprファイルからだと、
面倒なステップ実行を求められます。
0737736つづきNGNG
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor:=crHourGlass;

処理〜
FDDからAccessMDBファイルををコピー(FDDが空っぽの場合の処理は書いてあります)

try
MDBに接続して色々SQLでごちゃごちゃやって
それが済んだら
DBとの接続切って
Screen.Cursor:=crDefault;
Form1.Release;
Form1.Close;

except
on E:Exception do ←これが分からない。書いても書かなくてもexeファイルからの実行結果は一緒 
begin
Screen.Cursor:=crDefault;                  |とにかく処理中に何か
ShowMessage('何だか予想外の事故、取りあえずこれにて終了'); |おかしなことが起こったら
Form1.Release; |一気にここまで飛んじゃって
Form1.Close; |ほしい
end;

end;

現実にありそうなこととして想定しているのは、フロッピーディスクからコピーした
MDBファイルの破損です。
0738デフォルトの名無しさんNGNG
例外オブジェクトには、EIntError とか EComponentError のように
エラーの種類によっていくつかのクラスが存在する。
Exception はすべての例外オブジェクトの上位クラスなので、結局
すべての例外を処理していることになる。
>>737 のように例外オブジェクトのクラスによって処理を分けない
場合は特に書く必要はない。(ヘルプの try..except 文を参照)

Screen.Cursor := crHourGlass;
try
  try
    {エラーが起こるかもしれない処理}
  except
    ShowMessage('エラー');
  end;
finally
  Screen.Cursor := crDefault;
  Release;
end;
0739デフォルトの名無しさんNGNG
TPointがクラス型なら、 Point.X := 0 でエラーは出ないよ。
どうして?
0740デフォルトの名無しさんNGNG
プロパティは、単なるフィールドと違って読み取りと書き込みという
処理が行われる。

>>728 を
  private
    function GetPoint: TPoint;
    procedure SetPoint(Value: TPoint);
  public
    property Point: TPoint read GetPoint write SetPoint;

に置き換えてみるとわかるが、
Point.X を参照するときには GetPoint メソッドが実行され、
Point に何か代入するときには SetPoint メソッドが実行される。
関数の戻り値に書き込みはできないので Point.X への書き込みはできない。

TPoint がもしクラス型だったら GetPoint が返すオブジェクト (参照) の
X プロパティへの書き込み (例えば TPoint.SetX) になるので可能。
0741デフォルトの名無しさんNGNG
処理の途中で、処理を5秒間だけ停止したいのですが
その停止中もフォームの移動とかの応答はできるようにしたいのです
どのようにしたらよいのでしょうか?

こんな感じで試したのですが時間がだいぶずれてしまいます。
procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
begin
 Button1.Caption := 'A';
 for i := 0 to 500 do
 begin
  Sleep(1);
  Application.processMessages;
 end;
 Button1.Caption := 'B';
end;
0742デフォルトの名無しさんNGNG
>>741
Timer使えば?
ボタンをクリックしたときタイマーを有効に。
んでタイマー内に処理したいことをかき、
最後にタイマーを無効に。
0743デフォルトの名無しさんNGNG
>>741
五秒経過したかの判定はこんな感じ

var
 startTime: DWord;
begin
 startTime := GetTickCount;
 while GetTickCount - startTime < 5000 do
  ;

 // 5秒経った
end;
0744741NGNG
>>743
なるほど。そんな単純なことでよかったのですね。
ありがとうございました。
0745デフォルトの名無しさんNGNG
以前作った,paradoxデータベースにアクセスして処理を行うプログラムを作り直そうと思ったんですけど
データベースやクエリーコンポーネントのプロパティの設定方法がわからなくなってしまいました。

前のプログラムなくしちゃってわからない・・・
0746デフォルトの名無しさんNGNG
>>741
ていうかそれじゃ0.5秒じゃん?
0747デフォルトの名無しさんNGNG
> 前のプログラムなくしちゃってわからない・・・

じゃ、作り直しできないじゃん
0748デフォルトの名無しさんNGNG
>>745
で、俺らにどうしろと?
0749745NGNG
>747
イチから作りなおすのです・・・。

>748
データベースとクエリーコンポーネントの設定方法をおしえてください・・・。
0750737NGNG
>>738さん
ありがとうございます

>>Exception はすべての例外オブジェクトの上位クラスなので、結局
>>すべての例外を処理していることになる

なるほど、何となく、ですが(というか、そもそもクラスという概念自体
よく分かっていないんですが)、書いている単語の意味と処理の流れから、
そんな気はちょっとだけしてました。

finallyというのはどこかでみたような気がします。
「どっちにしろ何が何でもやってもらわなきゃならないこと」を
外側にまとめちゃう、ってことでいいのかな。
このほうが形はスマートになりますね。
0751デフォルトの名無しさんNGNG
Main とは違う場所に Procedure を作成し、Main からそれを呼び出し
その処理結果を構造体変数のように参照する事は可能ですか?

AAA_Proc(Valur);
BBB := AAA.Item1;
CCC := AAA.Item2;

つまり一度の処理で、複数の結果を得たいと言う事ですが。
0752デフォルトの名無しさんNGNG
>>751
意味がよくわかんないけど
わたしの理解が合っていれば可能です。

type
 res_items = record
  Item1:integer;
  Item2:integer;

procedure Proc(var res
0753デフォルトの名無しさんNGNG
間違って送信してしまった。

type
 TResult_items = record
  Item1:integer;
  Item2:integer;
 end;

procedure proc(var res_items:TResult_items ;const Value:integer);
begin
 res_items.Item1 := Value div 2;
 res_items.Item2 := Value * 2;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 AAA: TResult_items;
begin
 proc(AAA,10);
 Button1.Caption := IntToStr(AAA.Item1)+':'+IntToStr(AAA.Item2);
end;

こんな感じ
0754デフォルトの名無しさんNGNG
>>752
すいません、質問が判りにくかったようです。
通常 Function だと

Ret = AAA_Func(Value);

という感じで1つの値しか返す事が出来ないので、なんらかの方法で複数の値を返したいのです。
そこでDelphiの場合の一般的な方法を教えて頂きたいのです。
自分の考えられる方法だと、あらかじめグローバル変数を用意して、そこへ値をセットするぐらいなので。
0755デフォルトの名無しさんNGNG
>>754
procedure AAA_Func(Value: TValue; var Ret1, Ret2, Ret3: Integer);
とやって引数に渡した変数にセットしてもらう。
0756デフォルトの名無しさんNGNG
>>754
>Delphiの場合の一般的な方法

うーん。
一般的には、varパラメータで変数を渡すとか
それ専用のデータ型を用意するとかしかないと思うけどな。
0757デフォルトの名無しさんNGNG
複数の値をまとめた構造体を作って使うとか
0758デフォルトの名無しさんNGNG
って、すでに出てるやん。すまん。

>>753 の procedure procを functionにして、
パラメータで varで渡す代わりに、
TResult_itemsを returnする
0759デフォルトの名無しさんNGNG
>>734-735,740
ありがとうございます。
どうしてエラーが出るのかだけでなく
解決方法まで書いてもらって。多謝
0760デフォルトの名無しさんNGNG
構造体を関数の戻り値にするのは無駄なコピーが発生する可能性があるのでお勧めできない。
大抵は問題ないけど。
情報のセットをクラスにまとめてインスタンスのの参照を渡していじってもらうのが最も一般的なやり方。
0761デフォルトの名無しさんNGNG
それの方がオーバヘッドが大きそう
0762デフォルトの名無しさんNGNG
FindFirst() はかなり大きなレコード型を返すよな
0763デフォルトの名無しさんNGNG
プログラム単体で終了時のwindowサイズや位置の保存はできますか?
0764デフォルトの名無しさんNGNG
できます
0765デフォルトの名無しさんNGNG
> プログラム単体

ははぁ、外部のレジストリやiniファイルを使わないで、というなら無理
0766デフォルトの名無しさんNGNG
己自身をコピった後exeを書き換えてしまうプログラムか
0767デフォルトの名無しさんNGNG
>>763
なにがやりたい?
0768デフォルトの名無しさんNGNG
windowのサイズを記録したいだけです
外部ファイルの頼る方法はわかるのですが
それが不要な方法があればすっきりしていいかなぁとおもったんです
0769デフォルトの名無しさんNGNG
NTFSなら
Aplication.ExeName + ':settings'
というファイルに対して読み書きすればEXEに従属した隠しファイルが作れるよ。
http://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp

ただし、設定を別のPCに移したりするとき難儀するので普通にINIファイル使った方がいいよ。
0770デフォルトの名無しさんNGNG
ありがとうございました
0771デフォルトの名無しさんNGNG
TShapeを使って三角形の図形を描くことは可能でしょうか?
0772デフォルトの名無しさんNGNG
できない
0773754NGNG
様々な回答ありがとう御座います。
今回は戻す値が少ないので、引数に直接返す方法を使ってみます。
ただ後々の技術向上の為、>>760 のクラスにまとめる方法を教えて頂きたく。
これに関しての説明サイトでもあれば良いのですが...
0774デフォルトの名無しさんNGNG
Delを使ったデータベースの本に、[is][as]演算子の解説で、
「型キャストするより、多態性を利用すればずっとスマートに解決することが
出来ます。」
って書いてあるんですけど、そうなの?

多態性って聞いただけでめんどくさそうに感じるので
誰か解説して。
0775デフォルトの名無しさんNGNG
>>773
クラス覚えろ

>>774
クラス覚えろ
0776デフォルトの名無しさんNGNG
Nakigoe という抽象メソッドを持つ TAnimal クラスから派生して、TNeko の Nakigoe
メソッドをニャーとして実装し、TInu の場合はワンとして実装し、どちらも TAnimal
クラスのインスタンスとして受け取ったとき、Nakigoe メソッドを実行するとと
TNeko クラスのインスタンスはニャー、TInu クラスのインスタンスはワンとして
実行されること。Nakigoe メソッドを呼び出す時点で、どっちのクラスのインスタンス
か気にしなくても良い。
0777デフォルトの名無しさんNGNG
> 多態性って聞いただけでめんどくさそうに感じるので

面倒なことは他人に説明させるのですか? プログラマには向いてませんね。
0778デフォルトの名無しさんNGNG
そのうち、プログラミングがめんどくさそうに感じるので、とか言い出す
0779デフォルトの名無しさんNGNG
>>774
>そうなの?
そうでもない。というか多態とis/asは適切に使い分けるべきで
どっちがスマートでどっちは使うべきじゃないとかって問題ではないよ。

例えばTObjectListにTButtonとTCheckBoxぶら下げて、
処理を分岐させたいとき継承多態を使ったコードを書くのは現実的ではないでしょ。
やるとしたらVCL改造してTObjectListedButtonOrCheckBoxを無理やり継承でもさせるのかね。
0780デフォルトの名無しさんNGNG
>>774
板が違うけど参考にどうぞ。
http://pc5.2ch.net/test/read.cgi/jisaku/1074879041/l50
0781デフォルトの名無しさんNGNG
> 現実的ではないでしょ。

だから、その本に書いてある文脈では多態性を利用した方がスマートなんだろ。
0782デフォルトの名無しさんNGNG
>>781
だからってなに?
その文脈とやらが示されるまでは一般論として話をする以外にないと思うけど。
0783デフォルトの名無しさんNGNG
> 「型キャストするより、多態性を利用すればずっとスマートに解決することが出来ます。」

って書いてあるが。こういう場合があるか、って質問なのでは? >そうなの?
0784デフォルトの名無しさんNGNG
作りたいのにあった書き方が一番スマート
0785デフォルトの名無しさんNGNG
だいたい >>779 での前半に

> どっちがスマートでどっちは使うべきじゃないとかって問題ではないよ。

といっておきながら、後半では、継承多態には不向きな例を出してるし。
0786デフォルトの名無しさんNGNG
私のクラスは3年B組ですが
0787デフォルトの名無しさんNGNG
> 作りたいのにあった書き方が一番スマート

多態性を知らないひとにとっては、選択の余地が無いのでスマートかどうかは無関係
0788デフォルトの名無しさんNGNG
>>783
>774をそう読み取ったんなら、それについてレスをつければいい。
自分はそうは読み取らなかった。

>>785
一般論としての
> 「型キャストするより、多態性を利用すればずっとスマートに解決することが出来ます。」
に対して型キャストにも用途がある事を示したまでだよ。

>>785=>>774でないなら妄想でケチつけないでくれよ。
0789デフォルトの名無しさんNGNG
質問の内容を適切に読みとりましょう。
0790デフォルトの名無しさんNGNG
> 型キャストにも用途がある事を示したまでだよ。

型キャストにも用途があるかどうか、どこに質問があるのよ?
0791774NGNG
皆さん、ありがとう。
[is][as]って、プログラムで動的にボタンとかを作った場合、
データの送り主が、ほんとうにTButtonなのか調べたり、
A型からB型へ変える場合に使うと思っていたもんで。

って、そうなんだけど、わざわざ多態性を使ってって言われると、
何でそんな大げさなって思いましたとさ。
0792デフォルトの名無しさんNGNG
多態性を使った方が圧倒的に便利の場合も多いよ。VCLでは、TStream だとか
TStrings のような抽象クラス型の引数を持ったメソッドがいっぱいあるのもそのため
0793デフォルトの名無しさんNGNG
共用体ってどう使うの?
0794デフォルトの名無しさんNGNG
http://www.borland.co.jp/qanda/delphi/d0000163.html
0795デフォルトの名無しさんNGNG
どう使うって、コード補完で出るでしょ。共用体に相当するDelphiのレコード型
に対する用語は知らないけど、要は同じメモリのマップの仕方が複数あるレコード型
だよ。
0796デフォルトの名無しさんNGNG
VBからDelphiに移植しようとしてるんだけど
Unit1というユニットファイルしかない。
プロジェクトファイルってどこにある?
プロジェクトファイルはコンソールアプリでしか使われないの?
interfaceやらimplementationやら・・・こいつら順番あるんかい。コンパイラに叱られたし。
0797デフォルトの名無しさんNGNG
ま、超初心者用のサイトで勉強すべし。
0798デフォルトの名無しさんNGNG
ここは役に立たない超初心者スレだね
0799デフォルトの名無しさんNGNG
ある程度の知識を前提としないと、教えるにも限界がある。ユニットファイルの構造
から教えるのは非生産的だな。そんなのは最低、自分で勉強しなよ。
0800デフォルトの名無しさんNGNG
ヘルプにも書いてあるし。
0801デフォルトの名無しさんNGNG
>>796
プロジェクトは保存しないと作られない。

>コンパイラに叱られたし。
忠告はしっかり聞いておけ。少なくとも型の違いによるバグは出なくなる。
0802デフォルトの名無しさんNGNG
program ks001(input,output);
type Days=(Mon,Tue,Wed,Thu,Fri);
var day : Days;
a,total : integer;

procedure writeSday(day:Days);
begin;
case day of
Mon:writeln('月');
Tue:writeln('火');
Wed:writeln('水');
Thu:writeln('木');
Fri:writeln('金');
end;
end;

begin
total := 0;
for day := Mon to Fri do
begin;
writeSday(day);
write('曜日の時間数は?');
readln(a); writeln;
total := total + a;
end;
writeln('1週間の時間数は ',total:4,' 時間です.')
end.

新規作成のコンソールアプリケーションからこのソースを書いたのですが、Delphi6でいざ実行すると「Runtime error 105 at 004026AC」と出ます
ちゃんとパッチも全部当てたのに何でなるのやら _no

誰か教えてください、お願いします (´・ω・`)
0803デフォルトの名無しさんNGNG
>>802
1行目と2行目の間にあった
{$APPTYPE CONSOLE}
はコメントじゃないので消しちゃ駄目。
0804デフォルトの名無しさんNGNG
> プロジェクトは保存しないと作られない。

嘘を教えないように
0805デフォルトの名無しさんNGNG
> program ks001(input,output);

こんなプロジェクト名は有りか?
0806デフォルトの名無しさんNGNG
コマンドライン引数を知らないの?
なんか、ほんとに大丈夫? ヘルプの最初ぐらい読んだ方がいいよ。
0807デフォルトの名無しさんNGNG
コンソール版の Hello,World からやった方がいいかも
0808デフォルトの名無しさんNGNG
> program ks001(input,output);

練習問題ならあるんじゃない?

Cのテキストで勉強してるのかも。
0809デフォルトの名無しさんNGNG
あっ、Pascal かも。
0810802NGNG
すみません、PascalのやつをDelphiでやってるんです
学校がLinux Pascalで、家でどうにか作ろうと _no
0811802NGNG
うわぁぁ、マジだ。{$APPTYPE CONSOLE} を入れたらちゃんと動きます
ありがとうございました m(´・ω・`)m
0812デフォルトの名無しさんNGNG
> program ks001(input,output);
これは超クラシックなPascalだな。
0813デフォルトの名無しさんNGNG
ていうかDelがモダンすぎるだけ…
0814デフォルトの名無しさんNGNG
>>812
Delphiでも標準入出力を使えば
自動的にinput, outputは挿入されるけど。

そういう意味ではなく?
0815デフォルトの名無しさんNGNG
Tips/コンソールアプリケーションの作り方は?
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTips%2F%A5%B3%A5%F3%A5%BD%A1%BC%A5%EB%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%BA%EE%A4%EA%CA%FD%A4%CF%A1%A9%5D%5D
0816入門者NGNG
経験上から言って、With文は使わないほうが良いのですかね?
逆に読みづらくなって苦労する事もあるとか、原因不明のバグを生みやすいとか。
0817デフォルトの名無しさんNGNG
>>816
「原因不明なバグ」かどうかはともかく、思い込みでデバッグに時間がかかる場合はあるかも。
不安があるなら使わなければいいんじゃない?絶対必要というわけではないし。
0818デフォルトの名無しさんNGNG
本人が使いにくいなら使わないでいいんじゃない?

漏れはコードの転用とか可視性とか考えても十分使いやすいと思うけどね
0819デフォルトの名無しさんNGNG
コンパイル時にはwithを展開してからコードを生成するそうだから
プログラムとしては同じ。本人の利便性・可読性の問題だけ。

漏れは頻繁に利用してる。
ただ、ネストすると知らないうちにバグを引き込みそうで怖いってのはあるな。
0820デフォルトの名無しさんNGNG
書籍には見られないけど、結構ネット上のサイトではwith文を2層や3層もネスト
して利用している筆者もいるけど、with文のネストは可能な限りやめた方が良い
with文を使うとすれば出来るだけwith文の中にwith文を含ませるような事はしないで1層で利用すべし。
その他にもFindCompornent関数などをwithで挟むと、非常に読みづらくなる。
VBだったら目印があるし、多用しても良いのじゃないかな。
0821デフォルトの名無しさんNGNG
Delでクォータニオンを解説してるサイト教えて。
ググってみたけど、無いみたいなの。
0822デフォルトの名無しさんNGNG
C++ので我慢しとけ
0823デフォルトの名無しさんNGNG
with使わないとデータベース関係は凄い事読みにくい事になっちゃうな、おれ。
使うとすっきり。
0824デフォルトの名無しさんNGNG
with使用中にステップ実行とかしてるときにコードにカーソルあてて値を
インスペクト出来ないのはなぜ?
出来ると凄く便利なのに。
0825デフォルトの名無しさんNGNG
個人的には with はない方がいいと思っている。with のせいで分かりにくい
エラーが出る例は ML の過去ログにたくさんある。C# は Delphi と同じ人が
言語設計したみたいだけど with に相当するものはなくなってる。 Delphi
のコードを書いていても with を使わなくても不便と思ったことはない。
0826デフォルトの名無しさんNGNG
普通のイベントハンドラは、そのフォームの with がかかっているのと同じ。
Canvas と書くと、self.Canvas のことだし。with を使うと、TForm と
重なってるプロパティーやメソッドに対して二重に with がかかっているような
危うさを感じる。
0827デフォルトの名無しさんNGNG
レコード型にだけ使う>with
0828まとめてみたNGNG
with文を使うべきか
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTips%2Fwith%CA%B8%A4%CF%BB%C8%A4%A6%A4%D9%A4%AD%A4%AB%5D%5D
0829デフォルトの名無しさんNGNG
828のところに書いてあったんだけど

>あるいは参照を利用して以下のように書ける。
> var
> shortcut: TFooBarBaz;
> begin
> shortcut := foo.bar.baz;
> shortcut := 1;
> shortcut := 'aaa';
> shortcut := Self;
> end;

これってどういうこと?
「参照」ってなに?漏れには未知の技術だ。
0830829NGNG
「参照」はなんとかわかったけど
それぞれの値がなんで適切な場所に代入されるのかがわからない・・。
0831デフォルトの名無しさんNGNG
>>830
それ、たぶんProp1〜3が抜けてるだけかと。
0832829NGNG
なんだそりゃ・・(汗
なんか特別な技術で代入先を選んでるのかと思った。
0833デフォルトの名無しさんNGNG
代入演算子のオーバーロードがあるのかと思った。
0834デフォルトの名無しさんNGNG
with についていろいろな議論がある、ということはとりあえず使わない方
がいい、ということだよ

使わわないと実現できない機能というのはないのだから
0835デフォルトの名無しさんNGNG
なら自作のクラスも不要だしDelphi自体いらないな。
C+SDKで十分。
0836デフォルトの名無しさんNGNG
それでは、>>835は無条件でスルーして、次行ってみよう。
0837デフォルトの名無しさんNGNG
C++のリファレンスのようなものがあれば良かったが無いモンは無い。
せいぜい10行以内に収まるようにWithを使うべきです。
0838デフォルトの名無しさんNGNG
まだwithネタ引っ張る気かよ・・・
俺基準はそのメリットを書いてWikiに追加しる
0839デフォルトの名無しさんNGNG
FormのBorderStyleをbsNoneにすると
Formのサイズ変更ができなくなりますよね?
タイトルバーを消して、サイズ変更はできるようにするには
どうすればいいか教えて下さい。
0840839NGNG
あ、できましたすみません。
CreateParamsをoverrideすればいいんですね。
スレ汚しスマソ
0841デフォルトの名無しさんNGNG
C:\にある、Hoge.txtというファイルの名前の尻尾に本日の日付をつけて(たとえばHoge20040616.txtというふうにして)、D:\に保存したいんですが

var
Hiduke:string;
begin
Hiduke:=FormatDateTime('yyyymmdd',date);
CopyFile('C:\Hoge.txt','D:\Hoge' + Hiduke + '.txt',False);
end;

てな書き方をすると、何だか型がちがうみたいで怒られます。
CopyFile('','')の中に入るものは、string型じゃないんでしょうか。
0842デフォルトの名無しさんNGNG
PCharだよ
CopyFile(PChar('C:\Hoge.txt'),PChar('D:\Hoge' + Hiduke + '.txt',False));
これでどうよ?
0843デフォルトの名無しさんNGNG
Delphi の動的配列では、確保できる上限があるのでしょうか?
CのポインタのようにGetMemで確保すればメモリがある限り
確保できるのかと思っていたのですが、コンパイルが出来ても
実行中にエラーが出てしまいます。どうなんでしょうか?

Delphi6personalです。
0844デフォルトの名無しさんNGNG
>>ぴーちゃー

は、はやい
感謝します
0845デフォルトの名無しさんNGNG
>>843
制限はOS側のもののみのはずだけど。
エラーの内容は?
0846デフォルトの名無しさんNGNG
>>842
細かくて悪いが、Falseまでキャストするなよw
CopyFile(PChar('C:\Hoge.txt'),PChar('D:\Hoge' + Hiduke + '.txt'),False);
0847デフォルトの名無しさんNGNG
>>843
動的配列はGetMemじゃなくてSetLengthで領域確保するんだけど。
0848デフォルトの名無しさんNGNG
>845
はやい、レスありがとうございます。m(_ _)m

やりたい事は、画像ファイル(960*1280)の全ピクセルのY値(輝度)を
double型の配列にいったん格納したいだけなんですけど、
まず、コンパイル時にGetMemをしているのに
初期化されない可能性があると警告が出て
実行すると、EAccessViolationクラスの例外を生成しました。
アドレス00405948でアドレス0337FFFCに対する書き込み違反が起きましたと
言うエラーメッセージがでて止まってしまいます。
0849デフォルトの名無しさんNGNG
>847
あSetLengthでも同じで、ある値以上を確保しようとするとだめです。。。
0850デフォルトの名無しさんNGNG
>初期化されない可能性があると警告が出て
そりゃなんかの変数が初期化されてないんだよ。
単純なバグ。
変数を初期化し忘れると滅茶苦茶な値が入っててその値を使ってしまってるっぽい。
0851デフォルトの名無しさんNGNG
>850
たしかに、そんな感じですね、配列の確保とかそういう問題では
無いかもしれないですね。もう一度調べてみます、ありがとうございました。
0852デフォルトの名無しさんNGNG
objectlistの中にobjcectlistを使っているクラスを入れてるのですが
頂上のクラスを破棄すると底まですべて破棄されるのでしょうか?
0853デフォルトの名無しさんNGNG
>>852
TObjectList.OwnsObjects の値による
0854デフォルトの名無しさんNGNG
Delphiでは、VC++のようなDebug用のコンパイルと
高速最適化されたrelease用のコンパイルのような設定はあるのでしょうか?
0855デフォルトの名無しさんNGNG
無い。
0856デフォルトの名無しさんNGNG
ショートカットキーに Shift+Ctrl+Z を使いたいので、
SecondaryShortCuts に設定したのですが、
メニューのキャプションに表示されません。
どうすればキャプションに表示出来ますか。
因みに ShortCut に設定すると、うまく動作しませんでした。
0857デフォルトの名無しさんNGNG
Secondaryはいくつも登録できるから表示しないって仕様なんじゃないの。
ShortCutが空ならSecondaryの先頭からコピーってコードでも書いたら。
0858デフォルトの名無しさんNGNG
ShortCutに Shift+Ctrl+Z を設定してもイベント起きないんですよ。
多分、リストの中にあるものしか正常に働かないんだと思っているのですが。
メニューとかのキャプションにショートカットキーを書いても、
表示位置か違うのでみっともないのです。
0859デフォルトの名無しさんNGNG
キーが重複してるなんてことないか?
俺はそれで何時間も悩んだことある。
0860デフォルトの名無しさんNGNG
キー重複ぐらい報告しろよ。糞エディタが。
0861856NGNG
たまたま、PC再起動させなきゃいけなくなって、
再起動させたら思い通りに動くようになりました。
はぁ〜?
0862デフォルトの名無しさんNGNG
>>861
そういうことはたまにある。
愛を持ってDelphiに接してあげてください。
0863デフォルトの名無しさんNGNG
>>862
たまに→わりと
0864デフォルトの名無しさんNGNG
Delphi-ML 過去ログ検索 IE Toolbar
http://www.vector.co.jp/soft/winnt/net/se319386.html

困難見つけた。試してないけど。
0865デフォルトの名無しさんNGNG
DateTime型を "Fri, 30 Mar 2001 22:35:45 GMT" の形式に変換する方法はありますか?
0866デフォルトの名無しさんNGNG
なんて一貫性のない構文なんだ・・・
var
 c: WideChar;
begin
 case c of
 'x', 'y', 'z':
   if c in [WideChar('x'), WideChar('y') then
    ...
0867デフォルトの名無しさんNGNG
>>865

>>660 と同じ人?
その逆についてしばらく前にレスしたが、なんの応答もなかったな。どうしてかな?
0868デフォルトの名無しさんNGNG
>>865  ある
0869デフォルトの名無しさんNGNG
>>867-868
うざいきえろ
0870デフォルトの名無しさんNGNG
>>866
var
 c: WideChar;
begin
 case c of

一貫性よりも、初期化もされてないローカル変数で case of って.....?

ord() 使えばもっときれいに書けそう
0871デフォルトの名無しさんNGNG
>>865

ない。DateTime型なんていう型はないから。
0872デフォルトの名無しさんNGNG
>>865
Format('%s, %d %s %d %d:%.2d:%.2d GMT', Copy('MonTueWedThuFriSatSun',
  Succ(Pred(DayOfTheWeek(Value)) * 3), 3), DayOf(Value),
  Copy('JanFebMarAprMayJunJulAugSepOctNovDec',
  Succ(Pred(MonthOf(Value)) * 3), 3), YearOf(Value), HourOf(Value),
  MinuteOf(Value), SecondOf(Value)]);
0873デフォルトの名無しさんNGNG
すまん括弧が閉じてなかった。

Format('%s, %d %s %d %d:%.2d:%.2d GMT', [Copy('MonTueWedThuFriSatSun',
  Succ(Pred(DayOfTheWeek(Value)) * 3), 3), DayOf(Value),
  Copy('JanFebMarAprMayJunJulAugSepOctNovDec',
  Succ(Pred(MonthOf(Value)) * 3), 3), YearOf(Value), HourOf(Value),
  MinuteOf(Value), SecondOf(Value)]);
0874デフォルトの名無しさんNGNG
>Copy('MonTueWedThuFriSatSun',  Succ(Pred(DayOfTheWeek(Value)) * 3), 3),
おまいはN88ベーシッカーか
0875デフォルトの名無しさんNGNG
なんか壮大なネタが繰り広げられてるような…
formatdatetime('ddd, d mmm yyyy hh:nn:ss',now-(9/24));
じゃだめなの?
0876デフォルトの名無しさんNGNG
あ、後ろに' GMT'くっつけるの忘れた
0877デフォルトの名無しさんNGNG
GMTってリテラルで埋め込んでいいものなのか?
0878デフォルトの名無しさんNGNG
Indyにそのままズバリなコードは載っていないの?
0879デフォルトの名無しさんNGNG
そういえば愚痴って言うか独り言だけど
Indyをインストールして、初めてIndyを組み込んだアプリを作ったとき
とあるエラーが必ず出て10分ぐらい悩んだ。
結局ネットで調べたら「コネクションがクローズされたときに発生する無害な例外」ということで
無視例外リストに登録しておけばいいということだったけど
せっかくインストーラでインストールしてくれるだからその登録とかも自動でやってくれればいいのにと思った。
0880デフォルトの名無しさんNGNG
IdGlobal.DateTimeToInternetStr() か?

これ AIsGMT を True にしても '+0900' になるみたいだけど。
そもそも何を指定するのか書いてないし。
0881デフォルトの名無しさんNGNG
メールヘッダは+0900になるけど、HTTPのヘッダはGMTなの?
0882デフォルトの名無しさんNGNG
DirectX 7.0でプログラミングしているのですが、
Direct3DX ユーティリティ ライブラリが使えないようなので、
代わりに使えるようなライブラリやソースを教えてください。
0883デフォルトの名無しさんNGNG
D7のアップデート1を当てている人いる?
0884デフォルトの名無しさんNGNG
ToolBarをControlBarからドラッグして外すにはどうすればいいのですか?
0885856NGNG
モジュールエクスプローラーみたいなの作りたいんだけど。
ツリーにプロシージャーとかを表示させてから、
エディタでプロシージャーの行が変わったり、名前が変わったり
したのをすぐツリーに反映させるのってスレッドを別に作って裏でずっと
監視するのかな。
やり方なんて色々あるんだろうけど、プロの人はどうやってるのか
考え方で良いんで教えて。
0886デフォルトの名無しさんNGNG
できました。フォローティングっていうんですね。
ツールバーを閉じた時に起きるイベントはどれなんでしょうか?
0887デフォルトの名無しさんNGNG
PopUpMenuのメニューデザイナでメニューを登録すると、実行時に語尾に
勝手に(Z)とか割り振られちゃうんですが、
表示させたくない項目の場合はどうすればいいでしょうか?
0888デフォルトの名無しさんNGNG
PopupMenu.AutoHotkeys ヲ maManual ニスル
0889デフォルトの名無しさんNGNG
あ、項目ごとのAutoHotkeysぢゃなくてPopUpMenu本体の方でしたか
ヘルプ動作が違うなと思ってたら・・・
どうもです。
0890デフォルトの名無しさんNGNG
タスクバーの高さを得るにはどうすれば良いですか?
0891デフォルトの名無しさんNGNG
>>890
自己解決しました
0892デフォルトの名無しさんNGNG
>>891
どうやってやったが具体的に言ってみ。
0893デフォルトの名無しさんNGNG
タスクトレイのハンドルからRectを取得してボトムからトップを引いた
0894デフォルトの名無しさんNGNG
2桁以上の数字の、1の位を抽出するにはどうすればいいでしょうか。
最初の1桁であれば、[1]のように添え字を用いて指定できますが、
1の位は桁数によって変わりますよね。

[]の中に、Length - Length + 1というような変数を入れれば出来ると思ったんですが、
[]の中身はInteger型でなくて純粋に数字しか受け付けないみたいで無理でした。
0895デフォルトの名無しさんNGNG
文字列のこといってるの? integer?
0896デフォルトの名無しさんNGNG
s[Length(s)]
0897デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := '123456789';
ShowMessage(s[Length(s)])
end;
0898デフォルトの名無しさんNGNG
すいません勘違いしてました。
Length - Length + 1じゃあ、何をやっても1になるに決まってるし、
Lengthだけでいいんですね。

[]の中に数字しか入らないというのも誤解で
Integer型なら大丈夫みたいですね。今やったら出来ました。



とにかくありがとうございました。
0899通りすがりだけどNGNG
なんか・・・なんかもっと合理的な・・かしこい方法があるような・・。x
0900デフォルトの名無しさんNGNG
X mod 10
0901デフォルトの名無しさんNGNG
数値 じゃなくて 数字 だよ。
0902デフォルトの名無しさんNGNG
IntToStr( X mod 10)
0903デフォルトの名無しさんNGNG
Chr(X mod 10 + 48)
0904デフォルトの名無しさんNGNG
X が文字列ってこと!
0905デフォルトの名無しさんNGNG
AnsiLastChar(X)^
0906デフォルトの名無しさんNGNG
> s[Length(s)]

これの方がいいな。一目瞭然だし。インデクスの計算だけだし。
0907デフォルトの名無しさんNGNG
コンソールアプリケーションにアイコンとバージョン情報を設定するにはどうすればいいですか?
0908デフォルトの名無しさんNGNG
.dpr ファイルに
{$R *.res}
があると、リソースをリンクしないといけないオプションが有効になる。

アイコンは、以下のモジュールをコピー/uses 文に追加して
.dpr の begin - end の間に
Application.initialize;
の一行を追加すればよし。

======================
unit ConsoleApp;
interface
type
 TApplication = class
  procedure Initialize;
 end;

var Application : TApplication;

implementation

procedure TApplication.Initialize;
begin end;

initialization
 Application := TApplication.Create;
finalization
 Application.Free;
end.
======================
0909デフォルトの名無しさんNGNG
フォームアプリ作ってUnit1削ってProject1のソースを下のように削ったらうまくいきましたが
>>908のユニットって使う必要あります?

program Project1;

{$APPTYPE CONSOLE}
//uses
// Forms,
// Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Writeln('hello,world');
Readln;
//Application.Initialize;
//Application.CreateForm(TForm1, Form1);
//Application.Run;
end.
0910デフォルトの名無しさんNGNG
うまくいけばいいよ。

>Application.Initialize;
がないとアイコン設定が無効になるようだったからダミーを入れてみたのだ。
0911デフォルトの名無しさんNGNG
909の方法は一度アイコンを指定して *.res ファイルを作っておいて、それからフォームアプリから
コンソールアプリに変更してるんだね。なるほど。
0912デフォルトの名無しさんNGNG
DelphiIDEのCTRL+SPACEのように補完機能をもったテキストエディタコンポはありませんか?
0913デフォルトの名無しさんNGNG
IEEE経由のDVカメラからの映像を、VFW経由のPCカメラのようにキャプチャすることは
出来ないもんでしょうか。静止画を取得できさえすればよいのですが。
0914デフォルトの名無しさんNGNG
ファイルのコピーの方法を教えてください。

通常はAPIのCopyFileを使うんですが、
CLXで使えるファイルコピー関数ってないんでしょうか?
ちょっとHelpを探したんですが、見つかりませんでした。

やっぱ、ファイルストリームを読み込んで、書き込むという
操作が必要なんでしょうか?

よろしくお願いします。
0915デフォルトの名無しさんNGNG
http://www.wwlnk.com/boheme/delphi/vbtodel/daf0650.html
0916デフォルトの名無しさんNGNG
文字コードを調べる方法はありますか?
変換する方法はわかったのですが・・・
0917デフォルトの名無しさんNGNG
>>916
Byte型にでもキャストすれ
0918デフォルトの名無しさんNGNG
PopupMenuをぶら下げられる単体で使えるツールバーのドロップダウンボタンってない?
ボタンを押すとべろっと下にPopupされるようなやつ
0919デフォルトの名無しさんNGNG
TTreeNodeの子ノードを列挙するとき
GetNextChildメソッドとか使うのと、
AbsoluteIndexとLevel見ていくほうではどっちが高速ですか?
0920ぬるぽNGNG
>>912
ある
ttp://www.tmssoftware.com/advmemo.htm
0921ぬるぽNGNG
>>918
ある
ttp://www.jrsoftware.org/tb2k.php
0922デフォルトの名無しさんNGNG
>>919

人にきくまえに自分でやってみたら。
0923デフォルトの名無しさんNGNG

procedure TfrmMain.CutTheSea(Be:TBitmap;Af:TBitmap);
begin
Af.Canvas.CopyRect(Rect(0,0,32,32),Be.Canvas,Rect(0,0,0,16));
end;
↑のようなコードを実行しても、以前描かれていた内容がそのままはき出されてしまいます。
どうしたら描き換えられますか?
0924ぬるぽNGNG
>>918
よく考えてみたら、わざわざサードパーティVCLを使わずとも
TToolbarのStyle := tbsDropDown にして、
DropDownプロパティに PopupMenuを指定してあげればできたわ。
0925デフォルトの名無しさんNGNG
>>923
> Rect(0,0,0,16));
幅が0でしょ
0926デフォルトの名無しさんNGNG
>>925さん
おおっ!するどいツッコミをありがとうございます!
お陰様で正しく表示されました。
本当にありがとうございました(ノД`)
0927914NGNG
>>915
レス、どうもです。

ただ、最終的にはLinuxでも使いたいんで
Windows APIは使いたくないってことで。。。
0928デフォルトの名無しさんNGNG
海外のDelphiのサイトでお勧めを教えてもらえないでしょうか

また、ググルと結構中国語のサイトが結構表示されるのですが
中国ではDelhiは人気があるのでしょうか
0929デフォルトの名無しさんNGNG
>>928
・VCLの紹介/ダウンロードページ
ttp://www.torry.net/
ttp://www.delphifaq.com/
・FAQ系
ttp://delphi.icm.edu.pl/
0930デフォルトの名無しさんNGNG
TObjectListに、TObjectListを持っているクラスを追加して
Parent[i].Child[n]みたいなアクセス方法は可能ですか?
0931デフォルトの名無しさんNGNG
そのままじゃ無理。キャストしる。
0932デフォルトの名無しさんNGNG
>>931
ありがとうございます。
成功しました。
0933デフォルトの名無しさんNGNG
>>924
ガッ
0934デフォルトの名無しさんNGNG
try
 >>1-1000
except
on ENullPointerException do
 writeln("ガッ");
end;
0935デフォルトの名無しさんNGNG
データベースデスクトップで、テーブルのデータを作る時って
メモ型とかって、どうするの?
項目をクリックしても反応しないんですけど。
0936デフォルトの名無しさんNGNG
>>935
へ?下に出てる説明どおりやれば出来るけど?
0937デフォルトの名無しさんNGNG
>>936
下へ出てる説明とは何処のことでしょうか?
MBファイルがどうのってやつですか?

何か俺へたれっぽい orz
0938デフォルトの名無しさんNGNG
スレッドを使ってダイアログを表示した後、
メインスレッドからダイアログを消すだけの簡単なプログラムです。
FreeOnTerminateをTrueにしてスレッド終了後自動破棄にしてます。
普通に実行、終了すれば何とも無いんですが、
別アプリでCPU使用率100%の状態を作り、実行、終了すると
「例外 不明なソフトウェア例外」その次に
「EWin32Errorがモジュール・・・で発生しました。Win32エラー。コード5」
などとエラーが出ます。
実行後に直ぐ終了せずに20秒ほど待てば発生しません。
CPUビジー時にもエラーが出ないようにするにはどう対策すればいいのでしょうか?
0939デフォルトの名無しさんNGNG
ひょっとして、質問の仕方が悪かったですかね。
テーブルを作った後のデータを入れていく時に、
メモ型のところへは、どうすればいいのでしょうか?
ってこと何ですが。

0940デフォルトの名無しさんNGNG
>>938
ダイアログを必ずメインスレッドから閉じるなら
メインスレッドで閉じてから破棄すればいい。
あるいはダイアログの状態を監視して閉じられたら破棄するようにすればいい。
0941デフォルトの名無しさんNGNG
変数名や定数名をstringで取得する方法はありますか?
0942デフォルトの名無しさんNGNG
>>940
レスありがとう御座います。
やってみます。
0943デフォルトの名無しさんNGNG
マイコンピューターの、ドライブ名の一覧を取得するにはどうすればよいのでしょう。
マスストレージなども含めて取得したいのですが。
0944デフォルトの名無しさんNGNG
Edit1のカーソルがある部分にテキストを挿入したいんですが
どうすればいいですか。
0945デフォルトの名無しさんNGNG
>>939
データベースエクスプローラで。
0946デフォルトの名無しさんNGNG
>>945
ありごとう
0947デフォルトの名無しさんNGNG
メインフォームとタスクアイコンを表示しないアプリを作ってます。
それにはプロジェクトソースで
Application.ShowMainForm := False;
とやればよいのですが、実行中ダイアログを呼び出すとタスクアイコンが
出てしまいます。それを防ぐには
ShowWindow(Application.Handle, SW_HIDE);
とするらしいのですが何故かOnShow内で実行しないと作動しません。
ですのでOnShowイベントを実行させるためにプロジェクトソースの
Application.ShowMainForm := False; を消し、
メインフォームの高さ、幅を0、Left, Topの値を画面外、のちにHideしました。

これで一応解決なのですが、いまいちすっきりしません。
もっとスマートな方法があると思うのですが。
0948デフォルトの名無しさんNGNG
> 実行中ダイアログを呼び出すとタスクアイコンが出てしまいます。

ダイアログって何のダイアログかしらんけど、それの OnShow で実行したらいいんじゃないの
0949デフォルトの名無しさんNGNG
>>947
EnumWindowsで全ウィンドウに対してShowWindow(hwnd, SW_SHOW)してみればそんな疑問は吹き飛ぶと思いますよ>w<
0950デフォルトの名無しさんNGNG
>>948
MessageDlgです。なので細かい制御できないかと。
0951デフォルトの名無しさんNGNG
>>949
EnumWindowsですか・・・確かややこしかったような。
調べてみます。
0952デフォルトの名無しさんNGNG
controlbarの中にtoolbarを2つ縦に並べて入れて
toolbar controlbarともにautosizeをtureにしてるのですが

設計時には綺麗に収まっているのに
実行するとtoolbarが離れてしまいますなぜでしょうか?
0953デフォルトの名無しさんNGNG
>>949 意味不明
0954デフォルトの名無しさんNGNG
>>950

MessageDlg の直前に PostMessage(Application.Handle,WM_APP,0,0); を実行し
ApplicationEvents。OnMessage でそれを受け取って ShowWindow(Application.Handle, SW_HIDE);
を実行
0955デフォルトの名無しさんNGNG
>>954
できました、こんな方法があるんですね。
でも一瞬タスクアイコンが表示されちゃってますが。
0956デフォルトの名無しさんNGNG
>>952
ControlBar の RowSnap が True になってるんじゃない?
0957954NGNG
>>955
通常、タスクバーに表示されるのは Application ウィンドウなので、表示しないように
するには、常套手段ではプロジェクトファイルの uses に Windows を加えて

program Project1;

uses
Forms,Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
Application.Initialize;
SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

のように Application ウィンドウに拡張スタイル WS_EX_TOOLWINDOW を
追加しておくと、ダイアログが表示されても大丈夫なのでは?
0958デフォルトの名無しさんNGNG
>>956
おぉ、ちゃんとなりました^^
ありがとうございます。
0959デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/prog/1048318539/
0960デフォルトの名無しさんNGNG
そうでもない
0961デフォルトの名無しさんNGNG
>>920
補完機能やキーワード強調などまさに理想のコンポーネントでしたが
利用しているのが6Personalだったのでdbrtlなどがなくインストールできませんでした。
0962デフォルトの名無しさんNGNG
>>941
ない。
0963ななしへたぐらま ◆XcB18Bks.Y NGNG
>>944
Edit1.SelText := '挿入したいテキスト';
0964デフォルトの名無しさんNGNG
>>920
何か、これすごいね。
誰か、日本語仕様にしてくれないかな。
0965デフォルトの名無しさんNGNG
キャレットが変にちらつく
0966デフォルトの名無しさんNGNG
Demoをやってみたけど、今一かもしれん。
0967デフォルトの名無しさんNGNG
どうイマイチなんだ?
0968デフォルトの名無しさんNGNG
確かに、何か挙動がイマイチ綺麗じゃないね
0969デフォルトの名無しさんNGNG
確かに、Demoにあるやつはどうも挙動不審だ
0970デフォルトの名無しさんNGNG
前スレで紹介されていた、HTMLを直接書き込む処理ですが

OleVariant(WebBrowser.Document as IHTMLDocument2).write('文字列');

これを1度行った後 WebBrowser.Navigate を行うと、どうも不安定になります。
また、続けてwriteを行うと追加されてしまうので、一度クリアする方法は無いでしょうか?
0971デフォルトの名無しさんNGNG
OleVariant(WebBrowser.Document as IHTMLDocument2).Close;
してないからじゃない?
0972デフォルトの名無しさんNGNG
>>971
はい、Close はしてないです。
一度 Write を行うごとに Close を行い、2回目はそのまま Write でOKですか?
0973デフォルトの名無しさんNGNG
すいません、質問させてください

var Doc: OLEVariant;

Doc := WebBrowser1.Document;
Doc.all.item('form1').submit;

とすることでフォーム情報を送信できたんですが、
フォームのname属性が無い場合でも
フォーム情報を送信する方法って無いですかね?
0974デフォルトの名無しさんNGNG
>>920
本田ちゃんのやつより良さげなんだけど、
太字で強調表示すると文字が切れるのがまず駄目駄目かな。
0975デフォルトの名無しさんNGNG
>>974
前段と後段で内容が矛盾してる。
0976デフォルトの名無しさんNGNG
異議あり!!
0977デフォルトの名無しさんNGNG
ふはははは
0978デフォルトの名無しさんNGNG
>>957
うほっ!最高にスマートですね。そう言うの待ってました、ありが�d。
0979デフォルトの名無しさんNGNG
>>975
本田ちゃんの奴より使い勝手とか、見た目とか良いって思ったんだけど、
字が切れるのをみて、残念!ってことだ。
いちいちしょうもないことをつっこんでくるな!
反応する俺も俺だけどな!
0980デフォルトの名無しさんNGNG
> 反応する俺も俺だけどな!

そうだね。もうすこし分かりやすい文章を書きましょう。
0981デフォルトの名無しさんNGNG
「半径20以下80以上の円は赤、25以上75以下の円は緑、ただし半径50の円は青である円を
ランダムな場所にランダムにタイマーによって描くプログラムを作成せよ。また円の半径は常に100以下で5の倍数とする。」
という問題を出されたんですけど、最後の「円の半径は常に100以下で5の倍数とする。」というのが全然わかりません。
アドバイスお願いしますm(_ _)m
0982デフォルトの名無しさんNGNG
CanvasのLineとかで質問ですが0,0から10,10まで線を引きたい時
9,9(指定値の-1)までしか引かれないのですか?
またこれは他の命令にも適応されてるのですか?FillRectなど
どうもずれてる気がするのですが・・・
0983デフォルトの名無しさんNGNG
>>982
そうです。ウィンドウズの仕様です。
0984デフォルトの名無しさんNGNG
>「円の半径は常に100以下で5の倍数とする。」

(Random(20)+1)*5
0985デフォルトの名無しさんNGNG
>>980
ハイよ (´ー`)y−~~~
0986デフォルトの名無しさんNGNG
>>983
windowsの仕様でしたか。ありがとうございます。
0987デフォルトの名無しさんNGNG
>>984
レスありがとうございます!
下記のプログラムは題意を満たしてますでしょうか?


procedure circle(x,y,r:integer);
var i:integer;
const pai = 3.1416;
n = 10000;
begin
with Form1.Image1.Canvas do
begin
MoveTo(x+r,y);
for i := 1 to n do
LineTo( x+round(r*cos(2*i*pai/n)),y+round(r*sin(2*i*pai/n)) );
end;
if (r=50) then begin
Form1.Image1.Canvas.Pen.Color:=clblue;
end;
if (not(r=50))and(25<=r)and(r<=75) then begin
Form1.Image1.Canvas.Pen.Color:=clred;
end;
if (r<=20)or(80<=r) then begin
Form1.Image1.Canvas.Pen.Color:=clgreen;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
circle(random(Image1.width),random(Image1.height),5*(random(20)+1) );
end;
0988デフォルトの名無しさんNGNG
>>987

{ Private 宣言 }
public
procedure circle(x,y,r:integer);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
circle(random(Image1.width),random(Image1.height),5*(random(20)+1) );
end;
0989デフォルトの名無しさんNGNG
つづき

procedure TForm1.circle(x, y, r: integer);
begin
case r of
5..20,80..100:Image1.Canvas.Pen.Color := clRed;
25..45,55..75:Image1.Canvas.Pen.Color := clGreen;
50:Image1.Canvas.Pen.Color := clBlue;
end;
Image1.Canvas.Brush.Style := bsClear;
Image1.Canvas.Ellipse(x-r,y-r,x+r,y+r);
end;
0990デフォルトの名無しさんNGNG
>>989
ご丁寧にありがとうございます!
私のは何がいけなかったんでしょうか??
0991デフォルトの名無しさんNGNG
>私のは何がいけなかったんでしょうか??

色の設定が描画の後になっていること
多角形ではなく Ellipse() を使うこと
0992デフォルトの名無しさんNGNG
あと randomize は一回だけで十分
0993デフォルトの名無しさんNGNG
さらに
多数の if は無駄。 if then   else if .... ならOK
0994デフォルトの名無しさんNGNG
>>983
なるほど…ありがとうございます。
ところで、if文と不等号を使う場合はどうすればいいんでしょうか?
0995デフォルトの名無しさんNGNG
いや、だからそんなことより次スレの季節だと
0996デフォルトの名無しさんNGNG
> ところで、if文と不等号を使う場合はどうすればいいんでしょうか?

>if (r<=20)or(80<=r) then

こういう感じでよいのでは。

指摘したのは

if 条件1 then ....;
if 条件2 then ....;
if 条件3 then ....;

ではなく

if 条件1 then ....
else if 条件2 then ....
else if 条件3 then ....;

すべき、ということ。
0997デフォルトの名無しさんNGNG
次スレ立て挑戦してきます
0998デフォルトの名無しさんNGNG
記念パピコ 998
0999デフォルトの名無しさんNGNG
次スレ立てました

くだすれDelphi(超初心者用)その15
http://pc5.2ch.net/test/read.cgi/tech/1087823906/
1000デフォルトの名無しさんNGNG
で俺様が999GET!!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。