トップページ⇒tech
156コメント48KB

くだすれDelphi(超初心者向け) Part5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
このスレッドは、

他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だが
分からない質問を勇気を持って書き込むスレッドです。

Delphi使いが優しくコメントを返しますが、お礼はDelphiの布教と初心者の
救済をお願いします。
0002デフォルトの名無しさんNGNG
くだすれDelphi(超初心者向け) (Part1)
http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
くだすれDelphi(超初心者向け) Part2
http://pc2.2ch.net/test/read.cgi/tech/1053757982/
くだすれDelphi(超初心者向け) Part3
http://pc2.2ch.net/test/read.cgi/tech/1055986736/
0003デフォルトの名無しさんNGNG
リンク集
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
0004デフォルトの名無しさんNGNG
 M
| -_- |
0005デフォルトの名無しさんNGNG
このスレッドは、

オフでは話せない引き篭り、もしくは質問者自身何が何だが
分からないバカ質問を勇気を持って糾弾するスレッドです。

糞Delphi使い(しかも使いこなせない)が低脳を振り絞りコメントを返しますが、
お礼は糞Delphiの撲滅と上級者だと思っている初心者の駆除をお願いします。
0006デフォルトの名無しさんNGNG
>>5
は、いかなるツールを使ってもアプリひとつ作れないに50,000ユーロ
0007デフォルトの名無しさんNGNG
[F9]であっという間に出来あがりなわけだが
0008デフォルトの名無しさんNGNG
それがDELの良いところ
0009デフォルトの名無しさんNGNG
フレームの初期化処理は、どのイベントに書けばよいのでしょう?
0010デフォルトの名無しさんNGNG
前スレ

http://pc2.2ch.net/test/read.cgi/tech/1058834815/
0011デフォルトの名無しさんNGNG
>>9
フレームもクラスだから Create を継承して書けばいいと思うけど?

ただ、フレームはチョコっと使うには便利だけど、初期化処理までそこに書くような場合は
コンポーネントにした方がいいと思うけどなあ
0012デフォルトの名無しさんNGNG
>>11
処理にもよるけどCreateは早すぎな気が。
フレーム内のコンポーネントを操作できないからね。

>>9
TFrameの宣言に
protected
 procedure Loaded; override;
って追加してLoadedに書けばいいかも。
0013デフォルトの名無しさんNGNG
フレーム使わずに、フォームにして ドッキング使う方が楽かもね
0014デフォルトの名無しさんNGNG
なぜ、Delphi使ってる人は引き篭りが多いのですか?
0015sageNGNG
>>14
それはね、ティムポが小っちゃいからだyo
0016デフォルトの名無しさんNGNG
>>14
キタキター
0017デフォルトの名無しさんNGNG
Dockって位置情報の保存・復旧も含めてもっと簡単にならないのかね。
サンプル読んでいろいろやろうとしたけどめんどくさすぎ。
がんばってラップすればいろんなプロジェクトに簡単に適用できるようになるのかな。
0018デフォルトの名無しさんNGNG
BorderStyle := bsNone;
BoundsRect := Rect(0, 0, Screen.Width, Screen.Height);
でフォームを最大化した時、それに併せてボタンを同じ倍率で拡大するにはどうすればよろしいのでしょうか?
0019デフォルトの名無しさんNGNG
>>18
同じ倍率でWidth、Heightやフォントサイズを変更すればいいでしょう。
Excelや拡大鏡のように見た目をそのまま拡大縮小する必殺技もありますが。
0020デフォルトの名無しさんNGNG
フサギコ新スレ建たないな〜
0021デフォルトの名無しさんNGNG
CSV形式のTextfileの、ある行の特定の1バイトだけ
書き換えるには、どうしたら良いのでしょう?

例)8行目の
"0","3","2"
"3"を"1"に書き換えるには?

file of Byte で読み出すと、場所が分からない。
Textfileでやると、ファイル全部を書き直すしか
方法が無いように思うし。
スマートな方法がありましたら、概略で良いので
教えて下さいませ。
0022デフォルトの名無しさんNGNG
>>21
そのどっちかしかないよ。前者の場合先頭から一バイトずつ解析していけば可能。
TStrings二つ使ってやるのが楽かも
lines.LoadFromFile('foo.cvs');
for i := 0 to lines.Count-1 do
begin
 values.CommaText := lines[i];
 ...
 lines[i] := values.CommaText;
end;
0023デフォルトの名無しさんNGNG
 ∫,,,,,,,,,∧,,∧  ・・・
⊂,,,,,,,,,つ,,゚Д゚ミつ
>>17
同意

>>20
ど・・・どお・・・ドウイ・・・

>>21-22
ニケーイそふとではRubyやPerlなら
簡単に出来る〜
って書いてたな…
0024デフォルトの名無しさんNGNG
Win32Check使うとでる警告をOffにするにはどうすればいいの?
移植性なんて全然興味がないので。
0025デフォルトの名無しさんNGNG
Perl の連想配列みたいなものはありますか?

 list['key] := 'value';

とか書けたらうれしいのですが。
0026デフォルトの名無しさんNGNG
>>25
Map
0027デフォルトの名無しさんNGNG
TStrings.Values[]
002825NGNG
>>26, 27
おお、ありがとうございます。
早速、調べてみます。
0029デフォルトの名無しさんNGNG
>>24
http://hp.vector.co.jp/authors/VA011889/delphi/delphi6.htm
0030Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧    いまさらなんですが.....
   ミ,,゚Д゚彡
    ミ つ旦)~~ 
  〜と,,,~),,~)
Destroyが仮想メソッドなのは
TObject.FreeからちゃんとDestroyが呼ばれる
為に必要。と激しくわかた積もりです。

で、Createの方なのですが
自分で暮らすを作る場合
Createは仮想にする必要があるのでしょうか?
自分で多々井を使うような場合はとても必要なのだとわかりますが

そういう用途がなければ
静的メソッドで隠してしまってもいいのですか?

・TObject継承ならオッケとか、オッケくないとか。
・TComponent継承ならCreateは仮想でoverrideとか、
・俺はいっつも仮想でoverrideとか  
そういう、ご意見教えてください。
0031デフォルトの名無しさんNGNG
>>30
>自分で多々井を使うような場合はとても必要なのだとわかりますが
これがどのレベルの多胎のことを言ってるのか分からないけど

type TMyObject = class;
TMyObject2 = class(TMyObject); constructor Create; virtual; end;
TMyClass = class of TMyClass constructor Create; override; end;

function CreateObject(MyClass: TMyClass): TObject;
begin
 Result := MyClass.Create;
end;

とするときvirtual/overrideがあればCreateObject(MyClass), CreateObject(MyClass2)は
それぞれ期待したインスタンスを生成できるが
なければ両方とも基底クラスであるTMyClassのインスタンスが生成されてしまう。

だから判断基準はクラス参照経由でコンストラクタが呼ばれる可能性があるかどうか。ということ。
003231NGNG
激しく間違えた。>>31は無し。

type
TMyObject = class constructor Create; virtual; end;
TMyObject2 = class(TMyObject) constructor Create; override; end;
TMyClass = class of TMyObject

function CreateObject(MyClass: TMyClass): TObject;
begin
 Result := MyClass.Create;
end;

とするときvirtual/overrideがあればCreateObject(TMyObject), CreateObject(TMyObject2)は
それぞれ期待したインスタンスを生成できるが
なければ両方とも基底クラスであるTMyClassのインスタンスが生成されてしまう。

だから判断基準はクラス参照経由でコンストラクタが呼ばれる可能性があるかどうか。ということ。
実際にはclass of でクラス参照を定義したクラスのコンストラクタをvirtualにすればいい。
0033ななしへたぐらま ◆XcB18Bks.Y NGNG
>>20
立てました.

ミ,,゚Д゚彡フサギコとモナーのDelphi質問相談談話室2
http://pc2.2ch.net/test/read.cgi/tech/1061142216/

サブジェクトが長すぎるとはねられたのでカタカナが半角になっております.
って,早速ミスか…すまんです._| ̄|○
0034デフォルトの名無しさんNGNG
何やってもへたれ('A`)
003521NGNG
>>22
やっぱり、他に方法は無いわけですか。
ありがとうございました。
0036デフォルトの名無しさんNGNG
チェックボックスを複数配置し、これをラジオボタンのように、複数チェックできないよう
制御できるでしょうか?

実際にこういったことをするかどうかはともかく、そういう動きの方法が思いつきません……。
0037デフォルトの名無しさんNGNG
>>36
OnClickイベントでSender以外のチェックボックスのチェックを全てはずす。
003836NGNG
>>37
それは試してみたのですが、最初にチェックをつけ、別をチェックしたとき、
元のチェックは消えるのですが、現チェックが付かないのです。

書き方が違うのだろうか。
0039デフォルトの名無しさんNGNG
>>38
それは多分Checked := FalseしたときにさらにOnClickイベントが発生してしまうから。
多重にイベントが発生しないようにすればいいよ。

var updating: Boolean;

procedure TForm1.ChckBoxOnClick(Sender: TObject);
begin
 if updating then Exit;
 updating := True;
 try
  ... // メインの処理
 finally
  updating := False;
 end;
end;
0040デフォルトの名無しさんNGNG
Delphi7でXMLを扱う場合、XMLDocumentコンポーネント使うのと、
MSXMLを改めて取り込むのとどちらの方がいいんでしょうか?
それとも使いやすいXMLクラスがどこかで提供されているんでしょうか?
004136NGNG
>>39
できました。ありがとうございます。
なるほど……。
0042デフォルトの名無しさんNGNG
>>40
どういうふうな使い方をしたいの?
004340NGNG
>42

読み書き。
それほど大したことを使用とは考えてません。
普通に読み書き、多少の検索程度で。

ついでなんですが、どっかで使い方解説しているサイトありませんか?
0044デフォルトの名無しさんNGNG
>>43
そうか。自分も最初色々調べたけど、そういうの使いこなすの結構めんどくさいから
状態遷移形で自分でパースしてやってる。
使いたい部分を見つけてそこを切り出してその前後は変更しないようにすりゃ他人にも迷惑がかからず
手間もごく小さいしね。
0045デフォルトの名無しさんNGNG
FileStreamでFileAを元にFileBを作成、
両者をFreeAndNilした後に、MoveFileExでBでAを上書きしようとすると、
たまにエラーが返ってきます。

どうも書き込み終了より先にファイル移動しようとしてしまって、
エラーが出てるようなのですが、対処策って何かありますか?

0046デフォルトの名無しさんNGNG
http://forum.nifty.com/fdelphi/samples/00003.html
↑のページの通りにやってもできねーぞ。
ご指摘お願いします。
0047デフォルトの名無しさんNGNG
>>46
マルチすな
0048デフォルトの名無しさんNGNG
MainMenuコンポーネントのMenuItemのShortCutプロパティに
どうすれば「Ctrl+Shift+S」とか、プロパティのコンボボックスにない
パターンを設定できますか?
0049デフォルトの名無しさんNGNG
>>48
コンボボックスになくても書ける。
内部ではTextToShortCutが使われていると思われる。
005048NGNG
>49

あ、本当ですね…
0051デフォルトの名無しさんNGNG
tabsheet1の子コントロールにmemo1があったとします
memo1からtabsheet1を取得したいのですがどうやれば出来るでしょうか?
0052デフォルトの名無しさんNGNG
memo1
0053デフォルトの名無しさんNGNG
(memo1.parent as ttabsheet)
0054デフォルトの名無しさんNGNG
>>52-52
ありがとうございました
0055デフォルトの名無しさんNGNG
delphix delphi6に対応してくれんかのぉ
0056デフォルトの名無しさんNGNG
Stringってポインターですよね?
ってことは、乱用すると実行時に
メモリーの断片化を起こすような
気がするのは、気のせい?
0057デフォルトの名無しさんNGNG
気にスンナ。
んなこといったらDelのクラスインスタンスは
全てヒープに確保されるから何も作れなくなるぞ。
0058デフォルトの名無しさんNGNG
>>55
だ か ら 、 動 く っ て 

オレは、この発言を見るたびにいって(ry
googleで検索してくれ。お願いだから。

堀さんも堀さんだよ。忙しいのは分かるけれどインストール方法くらい、
本家に書いてあげてくれよ。
0059デフォルトの名無しさんNGNG
wikiにでも書いてまとめろや
0060デフォルトの名無しさんNGNG
これを使うがよい。ガイジンさんが改造してくれてる。

ttp://turbo.gamedev.net/undelphix.asp
>Quite simply, UnDelphiX is a unofficial version of DelphiX powered by the official JEDI DirectX headers. It also has various "Better English" error messages, comments, and samples. It also will include DXG and DXW editors with full source.
0061デフォルトの名無しさんNGNG
メガネ、巨乳、少女、緊縛、美女、ストッキング。
さあ貴方の股間をムズムズさせる語句はいったいいくつありますか?
全てのエロを網羅した作品です。
アニメとはいえこれだけたくさんのフェチ心をくすぐる作品はめったにありません。必見!!
無料ムービーをご覧下さい。
http://www.pinkfriend.com/
0062デフォルトの名無しさんNGNG
>>57
了解。ワスレます。
0063デフォルトの名無しさんNGNG
>>45
バッファフラッシュかな。
0064デフォルトの名無しさんNGNG
>>62
そんなことでパフォーマンスを下げるよりもっと良い開発環境に切り替えるべきです。
0065デフォルトの名無しさんNGNG
>>56
DHGL(ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/DownLoad.htm)
メモリ断片化対策メモリマネージャが入っている
0066デフォルトの名無しさんNGNG
>メモリ断片化対策メモリマネージャが入っている
 _, ._
(. ゚ A ゚;)
0067デフォルトの名無しさんNGNG
監視式で特定のcharの配列を監視してます。大きな配列なので配列の一部のみを
表示させたい(例えば長さが1000の配列で10から20番目までを表示させる)ので
すが可能ですか?
0068デフォルトの名無しさんNGNG
D6PRO上のQuickReportを使って印刷をしているのですが
用紙サイズ設定などが、プレビュー上のプリンタ設定から選んでも反映されずに
default設定の用紙でしか、出力されません。

PrinterSettings-QutputBinをAutoにしていますが
これ以外にどこか設定などするのでしょうか?
まだまだDlphi道の浅い私に、どなたか教えて頂けますでしょうか。
よろしくお願いいたします。
006945NGNG
>63
そのバッファフラッシュの方法が知りたいのですが…
FileStreamにメソッドありました?
007018NGNG
>>19
>Excelや拡大鏡のように見た目をそのまま拡大縮小する必殺技もありますが。
どのようにやればよろしいでしょうか?
0071デフォルトの名無しさんNGNG
ScrollBoxなどのように、ClientToScreenを持たないコンポーネントの
スクリーン上の座標を知るにはどうしたらいいでしょうか?
0072デフォルトの名無しさんNGNG
ClientToScreenあるような気がするのは気のせいですか?
var Point: TPoint;として
Point:=ScrollBox1.ClientToScreen(Point);
TWinControlを継承しているなら↓でもできるし
Point:=TWinControl(ScrollBox1).ClientToScreen(Point);
あるいはWin32APIを直接使うことも出来る。
Windows.ClientToScreen(ScrollBox1.Handle, Point);
007371NGNG
>72

あ、あれ?(;´Д`)
コード補完でTYPOしてて、無いと勘違いしていたかな?

あう〜、勘違いして申し訳ない。
0074デフォルトの名無しさんNGNG
次バージョンに当たるDelphi8って、.NET対応だけのプログラムしか組めないのですか?
0075デフォルトの名無しさんNGNG
http://www.borland.co.jp/about/message/openletter_to_delphi_community.html
>Octaneは、Windows 2003とMicrosoft(R) .NETフレームワークの両方を完全にサポートする予定です。


だそうだ
0076デフォルトの名無しさんNGNG
通常のWindowsアプリケーションも作成できるみたいですね。
良かった。
VC++しかネイティブを作成できないとなると終わっているよね。
0077デフォルトの名無しさんNGNG
bsNone のフォームを作成する時に、CreateParams で WS_THICKFRAME を
設定しているのですが、これと同じ枠が表示されるけどサイズ変更は不可、
って方法はありますか?

WS_THICKFRAME を外して、WS_BORDER を設定してもベタッとした表示ですし、
WS_DLGFRAME ではタイトルバーが表示されてしまって…。
0078デフォルトの名無しさんNGNG
> WS_DLGFRAME ではタイトルバーが表示されてしまって…。

されないぽくない?まあ他に自分で描くとか、WM_NCHITTESTで結果を変えるとか
方法はあるだろうけども。
0079デフォルトの名無しさんNGNG
>78
ぐぁ! 本当ですなぁ…。
WS_BORDER と WS_DLGFRAME 両方を設定すると
タイトルバーが出るんで、駄目だと思い込んでました…
スマソ(;´Д`)
008068NGNG
プリンタの用紙設定方法を質問した者ですが、一筋縄で行かない難しい問題なのでしょうか…
ここに書けば、皆さんのご意見を伺えるかと思ったのですが
ご親切な方、恐れ入りますがよろしくお願いいたします。
0081デフォルトの名無しさんNGNG
俺、超親切。でも知らん。
008277NGNG
>78
と思ったら、今度はウィンドウの高さが34ぐらいより
小さくすることが出来ないっぽい…むむむ
0083デフォルトの名無しさんNGNG
>>82
じゃあWM_GETMINMAXINFOを処理して、自分で最小の高さを設定。
008477NGNG
>83
その作業してました。なんとかなりました。
しかし原因は何なんでしょうね?
VCL中でダイアログは最低この大きさ、とか書いているんですかね?
0085デフォルトの名無しさんNGNG
たぶんOSの仕様。VCでも同じだし。
0086デフォルトの名無しさんNGNG
>>80
漏れの所もやってみたが確かに出ねぇな
A4のみ出してたんで気がつかんかった・・・
クイックレポートのバグかヽ(`Д´)ノ

他の連中てどうしてるんだ?(゚д゚ )
0087デフォルトの名無しさんNGNG
>>80
ここで「QuickReport,印刷」で検索してみれ
http://www2.big.or.jp/~osamu/Delphi/
0088デフォルトの名無しさんNGNG
integerとExtendedには互換性がありません
とエラーが出たんですけど漏れにはこの意味がわかりません。
またどのように対処したらよいのでしょうか?
0089デフォルトの名無しさんNGNG
>>88
エラーメッセージを選択してF1キー
0090デフォルトの名無しさんNGNG
>>88
文字通り。互換性が無いんだよ。
何をしたら、ソレが出るんだか書いたら対処をアドバイス出来るかもしれんが…。
そのレスじゃダメだな。
0091デフォルトの名無しさんNGNG
実数型(single,dobule,extendedその他)を整数型(Integer,Cardinal他)に代入するには
小数点以下を切り捨てるなり四捨五入しなければならず、
整数型で表現できる数値の範囲でなければならない。
0092デフォルトの名無しさんNGNG
C使いなら実数型をそのまま整数型に入れちゃうかもね。
0093デフォルトの名無しさんNGNG
>>92
最初はよくやったよ。不便だなぁと思ったものだ。
0094デフォルトの名無しさんNGNG
<ヘッダー>
<ビットマップ>
<ヘッダー>
<ビットマップ>
<ヘッダー>
<ビットマップ>
.
.

上のようなファイルをTFileStreamで読み込み、表示させるプログラムを作っています。
ビットマップ部先頭にPositionを移動し、Imageに流し込むようにすると
エラー(ビットマップが不正です)が出るビットマップとそうでないものが出てきます。
エラーのでるビットマップ部をバイナリエディタで切り取ってファイルから読み込むと
エラーは出ません。どうしたらいいのでしょう?教えてください。
0095デフォルトの名無しさんNGNG
悔い改める
0096デフォルトの名無しさんNGNG
>>88
実数を整数にするには、
丸める(Round)か、切り捨て(Trunc)か、+方向へ切り上げ、-方向へ切り下げ、四捨五入…と、
色々方法があるので、どれか選んで関数を使うべし。

暗黙の変換を許してる言語もあるけれど、結構危険と思ってる。
0097デフォルトの名無しさんNGNG
>>94
ビットマップのヘッダーには、データ本体へのオフセットが含まれてた気がする。
TBitmap.LoadFromStreamがSeekしようとして変なところに移動してしまわないよう
一旦TMemoryStreamにでも切り出して使えばどう?
0098デフォルトの名無しさんNGNG
>>88
特に理由がなければExtendedは使わない方がいいぞ。
互換性がやばい。
0099デフォルトの名無しさんNGNG
>>97
うまくいきました!ありがとうございます。
0100デフォルトの名無しさんNGNG
>>67
キャストしろ。

>>69
なければAPI使え。
0101デフォルトの名無しさんNGNG
>>60
インストールの仕方がわからない・・
誰かやさしく教えてください
0102ミ,,゚Д゚彡 ◆A6VzDeLphI NGNG
産休>>32
よくわかりました。

そう。多胎って
>だから判断基準はクラス参照経由でコンストラクタが呼ばれる可能性があるかどうか。ということ。
の意味で使いました。

中村タン本に書いてありましたが
VCLの基本思想って継承を使った実装ではなくて
イベントを使った委譲による実装が多くしてあって、
わかりやすいそうですね。
010368NGNG
昨日、QuickReportで用紙サイズ設定が反映されない件を質問した者ですが
レスを付けてくださった方々様、お礼申し上げます。

ただ結論としては、QuickReportではバグがあって命題のプリンタ設定が使えず
伝票など特殊サイズの手指しと業務に対応出来なかったと言う事で
非常に残念な結果でした…

今回はAccess+VBで対策予定ですが、今後の事もありますので
もし打開策をお持ちの達人がいらっしゃいましたら教えて頂ければ幸いです。
0104デフォルトの名無しさんNGNG
その手のレポートツール類って評価しては使えないから使わないって結論になるんだけど・・・

といか、Windowsの印刷ってとてもお手軽なんで、そんなツール使わずにベタベタ Canvasに表示しときゃ
何の苦労も無いって事で
0105デフォルトの名無しさんNGNG
利用されていない(新たに利用できる)portを探すにはどうすればよいでしょうか
Delphi6Personalです
0106デフォルトの名無しさんNGNG
Personal版ではDBアクセスはどう頑張っても無理なの??
なんとかしたいのだが・・・
0107デフォルトの名無しさんNGNG
>>105
シリアルポートの事?  Open してみてエラーステータスを見るのが一番簡単では?

それともTCP/IPポートの事?
0108デフォルトの名無しさんNGNG
>>107
TCP/IPポートです
0109デフォルトの名無しさんNGNG
>>106 無理って事じゃなくて DBGridとかが使えない(使える権利がない)から苦労するってだけで
フリーなDBエンジンをネイテブに叩く限りはなんとでもなるでしょ。
011068NGNG
>>104
そうなのですか!? 初心者ですのでさっと言って頂ける内容でもありがたいです。

BDE〜DBEditなどのDBコンポーネントを利用しているのでQuickReportを前提に考えておりましたので
差し支えなければ簡単な手ほどきをして頂ければ助かります。
0111デフォルトの名無しさんNGNG
>>110
どういうふうに印刷ったって
BDEなら、ToString して 指定位置に Canvas.TextRect で印刷するだけでしょ?

そこらへん印刷用の関数をいろいろ作っていけば簡単になるよ
自分は簡単なマクロ作ってる。
0112デフォルトの名無しさんNGNG
DB操作をする場合たとえばC++とかならRecordSetのクラスを作ったりするのだが
Delphiならどうするの?
しかもDBGrid使えないんじゃ、表示もツライのでは・・・?
Delphiに興味はあるがそれを考えるとなかなか手が出ない・・・
0113デフォルトの名無しさんNGNG
2D RPGのマップエディタを作っています。
タイルを読み込むまではできましたが、タイル1マスを描くごとに
Imageに描きCopyRectを使ってマップ本体に転送しているので
とても遅いです。なにかほかにいい方法はないでしょうか?
0114デフォルトの名無しさんNGNG
>>112
それはProを買えってご宣託でしょう。
RecordSetに相当するのがProには用意されているし、DbGridも便利に使える。
パーソナルでやるなら TStringListをDB代わりに使える範囲でチマチマやるしかないと思うよ。


>>113
書き換えた場所だけ転送してるんだよね? そんなに遅い?
0115デフォルトの名無しさんNGNG
シングルクォーテーション ' を
#39で記述しますが、
これを16進数(27h)で書くにはどうしたら良いですか?
#$27にするとエラーになっちゃうし
0116デフォルトの名無しさんNGNG
''
0117デフォルトの名無しさんNGNG
''は、見づらいからいやなんです
'xxxx' + #39 + 'xxxxxx'
というふうに書きたい
39の部分は、文字コードなんで16進で・・・
0118113NGNG
>>114
1マス転送する毎に640x480のビットマップをImageに書いてからCopyRectで
指定した一部を転送してるので、遅くなってしまうのだと思います。

1つのマップを描くのに数十枚の640x480のビットマップがいるので
できればStreamから直接一部だけを転送できるような関数が
あればよいのですが・・
0119デフォルトの名無しさんNGNG
'xxx' + Chr($27) + 'xxxxx'
0120デフォルトの名無しさんNGNG
>>119
thx
0121デフォルトの名無しさんNGNG
>>115
#$27 でいいと思うが? どう書いてエラーになったの?
'xxxx' + #$27 + 'xxxxxx' でも + を省略して
'xxxx'#$27'xxxxxx'   でもいいよ 
0122デフォルトの名無しさんNGNG
>>118
よくわからないが、どうしてもっと大きなBMP作ってそこに描かないの?
0123デフォルトの名無しさんNGNG
>>122
マップ描画用のImageは初めから用意してあります。
ウラにもうひとつImageを置き、1マスごとに一旦640x480のビットマップを
いちいちそれに描いて、そこからマップデータに指定されているチップを
転送するので、遅くなってしまいます。
0124デフォルトの名無しさんNGNG
もしかして Imageって言ってるのは TBitmapの事じゃなくて TImageなのか?
0125デフォルトの名無しさんNGNG
>>124
そうです。TImageです。。。
それしか方法が思いつかなかったので・・
0126デフォルトの名無しさんNGNG
Del厨らしく一言
「フリーコンポ使っとけ」

TAlphaBitmap
DirectXでもいいならDelphiX、QuadrupleD
0127デフォルトの名無しさんNGNG
コンポーネントなしならBitmap
アリなら>>126と同じくTABitmap
0128113NGNG
TABitmapすごいですね。使ってみますね。
また何かあればよろしくお願いします。
0129デフォルトの名無しさんNGNG
>>123を読むとTABitmap使っても変わらない予感。
0130デフォルトの名無しさんNGNG
Delphiを使ってWeb画面を表示する方法は、
ttp://plaza21.mbn.or.jp/~takoyakusi/delphi/WebBrowser.html
を見て分かったのですが、
よくブラウザで見かける、
「現在読み込み中」みたいなメーター
を出す方法(または読み込み完了したことが分かるフラグ)
が分かりません。
教えていただけないでしょうか。
Delphi6パーソナルを使用しています
0131ななしへたぐらま ◆XcB18Bks.Y NGNG
>>113
 どちらかというとゲーム制作板向けの話題ですが….

 マップエディタを作るのでしたらドローグリッド(TDrawGrid)を使ってみては?
 ドローグリッドはセルの縦横の長さをタイルと同じに,縦横のセルの数をマップと同じにして,OnDrawCellイベントでタイルのイメージを転送します.

 ドローグリッドが「[3, 5]のセルのイメージを(128, 64)-(159, 95)の領域に描けや」って要求してくるので「へいへい.[3, 5]はえーっと…(一覧表を見る)…ああ,11番のタイルだな.じゃぁこれをコピペ,と」という感じで描画していくわけです.

 すべてのタイルを含んだイメージをビットマップオブジェクト(TBitmap)に持たせ,イメージ転送にはCopyRectを使って実験してみましたが(ビットマップは24Bit DIB形式にした),手元の遅い環境でも速度的には問題ありませんでした.
 (ちなみにWin 95,CPU: MMX Pentium 200 MHz,VIDEO: Trident 9685,画面モードは1024×768のハイカラーです)

>>118
 転送に時間がかかるのはCopyRectが遅いからではなくて無駄なイメージ転送が多いためでしょう.なおドローグリッドを使わないとしてもマップを描くのに必要なビットマップはタイル用に1枚,フレームバッファ用に1枚だけで済むと思いますが.
 もしかしてマップ全体の表示イメージを640×480に切って持たせようとしていませんか?マップ情報はタイル番号の2次元配列として持たせないと駄目ですよ.

0132デフォルトの名無しさんNGNG
>130
ttp://plaza21.mbn.or.jp/~takoyakusi/delphi/Event.html#onProgressChange
0133130NGNG
>>132
ありがとうございました
0134デフォルトの名無しさんNGNG
他のアプリに文章を渡したいのですが、仮想キーボードを使った方法と
クリップボードを使った方法を教えてもらえないでしょうか。
マウスクリックまでは検索して分かったのですけど、キーボードのキーを疑似的に
押すこととクリップボードを使ったペーストはやりかたが分かりませんでした。
0135デフォルトの名無しさんNGNG
TDataModuleにTMainMenuを置いて、それをTFormのMenuプロパティに指定したところ、
設計時にはメインメニューが表示されるのに、実行時には表示されません。
お助けを。
0136デフォルトの名無しさんNGNG
>>134
 製品版? ならバージョンによってCDROMにSendKeyとかいう名前のが入ってないかな


>>135
どこかのイベントで再度設定してみたらどう?
0137あぼーんNGNG
http://endou.kir.jp/hankaku
http://homepage.mac.com/yamazaki8
0138デフォルトの名無しさんNGNG
DataModule2のOnCreateで

MainMene1 := TMainMenu.Create(Self);

とやって、メインフォームのOnCreateで

DataModule2 := TDataModule2.Create(Self);
Menu := DataModule2.MainMenu1;

とやってみたけど、表示されませんでした。
素直にメインフォームにメインメニューを置く事にします。
0139デフォルトの名無しさんNGNG
>138
なんかツッコミどころ満載な事やってんな。
それはいいとして、普通にFormのMenuプロパティに設定しただけで、ちゃんとメニュー出たよ。
どうせDataModule2を自動生成の対象から外してるとかそんなんじゃないの?
0140デフォルトの名無しさんNGNG
>139

その通りでした。お恥ずかしい。
0141デフォルトの名無しさんNGNG
Delphiもコンストラクター内で例外投げちゃダメですか?
0142デフォルトの名無しさんNGNG
>>141
どうしてダメだと思うの?
0143デフォルトの名無しさんNGNG
>>141
投げると自動的にデストラクタが呼ばれるようになっておる。
0144デフォルトの名無しさんNGNG
質問させてください。
D7のオフィシャルコースウェアで財務管理システムを作る演習があるんですが、
そこのプログラムを実行するとカスタム例外処理の部分で例外が発生してしまいます。
コンパイルは通るんですけど、例外を知らせるプロンプトが出るべき部分を
実行させると、どの部分でもクラス生成のエラーが出ます。
どなたか同じ症状で悩んだ方いらっしゃいますか?
この原因はどのようなことが考えられるのでしょうか?
0145デフォルトの名無しさんNGNG
>カスタム例外処理の部分で例外が発生
それでいいんじゃないのか?
0146144NGNG
いえ、出るべきプロンプト(エラーメッセージ)が実行中に出ずに
アプリが停止してから”例外が発生〜”と出る症状なんです。
0147144NGNG
いえ、結局実行中にでるべきエラーメッセージが出ずにその部分で
実行がストップしてしまうんです。
そのエラーが”クラス生成の例外が発生〜”なんですが。
カスタム例外クラスの記述は間違っていないです。
というか、付属CD-ROMから移しただけなんで問題ないはずなんですが。
0148デフォルトの名無しさんNGNG
>146
聞けば聞くほどソレで正常だと思うのだが?
オフィシャルコースウェアに解説は無いのか?
ツール->デバッグオプション につていの解説とかさ
0149144NGNG
無いんです…確かに「デバッガ例外が発生」ていうプロンプトです。
しかし、デフォルトでテーブルに入っているデータが参照出来ずにこの
エラーが出るんですよね。
何かチェック項目を変えればいいんでしょうか?こちらでも調べます。

あと接続周りもチェックして接続は出来ています。
0150デフォルトの名無しさんNGNG
構造体に一気に代入するにはどうすればいいですか?
a = { 0 , 2 , 3 };
↑こういうことをやりたいんです
0151デフォルトの名無しさんNGNG
そうか。 とりあえず、IDEで走らせて 例外が出たらそういう状態になるのは”正常”だ。

例外を出したくないなら、 ツール->デバッガオプションで無視する例外に入れておけばいい 
0152デフォルトの名無しさんNGNG
>>150
そういう場合は 構造体を返す関数を作るのが簡単でスマートだと思うよ。
0153150NGNG
>>152
できました。ありがとうございます
0154デフォルトの名無しさんNGNG
cでいう'\n'に対応する改行コード教えてください。
あとラベル内で改行ってできますか?
0155デフォルトの名無しさんNGNG
sLineBreakか#13#10
できます。
0156デフォルトの名無しさんNGNG
ドッキングウィンドウを作成し、実際にドッキングさせると
細いタイトルバーっぽいのと閉じるボタンが出ますよね。

bsNoneにしているフォームでタイトルバー(もどき)を
自分で描画しているので、その細いタイトルバーとかも
なんとかイメージ統一のために自力で書きたいのですが、
何かいい方法はありませんか?
■ このスレッドは過去ログ倉庫に格納されています