くだすれDelphi(超初心者用)その26
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/07/13(水) 19:15:11他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
そうでないと思われる方が優しくないコメントが返してきたり
質問者になりすましたレスをする場合もありますのでご了承下さい。
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その25
http://pc8.2ch.net/test/read.cgi/tech/1119008091/
<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0002デフォルトの名無しさん
2005/07/13(水) 19:16:0824 ttp://pc8.2ch.net/test/read.cgi/tech/1115581376/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1110470895/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1107332482/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1104511938/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1101530485/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 ttp://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1076609666/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1074523803/
09 ttp://pc5.2ch.net/test/read.cgi/tech/1071294733/
08 ttp://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
07 ttp://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
06 ttp://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
05 ttp://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 ttp://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
03 ttp://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
02 ttp://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
01 ttp://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
00031修正
2005/07/13(水) 19:17:03他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その25
http://pc8.2ch.net/test/read.cgi/tech/1119008091/
<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その24
http://pc8.2ch.net/test/read.cgi/tech/1120195090/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
0004デフォルトの名無しさん
2005/07/13(水) 19:18:440005デフォルトの名無しさん
2005/07/13(水) 20:17:150006デフォルトの名無しさん
2005/07/13(水) 21:04:540007デフォルトの名無しさん
2005/07/13(水) 21:13:15乙です。
>>4
粘着君が「Del使いはスクリプトも使えないのか」と難癖をつける、に100モナー。
0008デフォルトの名無しさん
2005/07/13(水) 21:13:53Del使いはスクリプトも使えないのか
0009デフォルトの名無しさん
2005/07/13(水) 21:14:570010デフォルトの名無しさん
2005/07/13(水) 21:24:19delphiでDirectMusicを扱う方法を教えてほしいのです。
ぐぐったりしたけど、さっぱりだったもので、、、
0011デフォルトの名無しさん
2005/07/13(水) 22:03:00説明がたりないぞ。
0012デフォルトの名無しさん
2005/07/13(水) 22:16:40http://onigiri.s3.xrea.com:8080/delphi/index.php?Delphi%A4%AB%A4%E9DirectX%A4%F2%BB%C8%A4%A6
0013ななしへたぐらま ◆XcB18Bks.Y
2005/07/13(水) 23:25:43●前スレ948 http://pc8.2ch.net/test/read.cgi/tech/1119008091/948
VC++とかで書いたことがないので基本的なところで間違っているかもしれませんが.
下記のようなコードで実験した限りはどれもあまり変わりませんでした.
(Delphi版)
Canvas.Brush.Color := Random($ffffff);
(API版α)
LogBrush.lbColor := Random($ffffff);
aGDIBrush := windows.CreateBrushIndirect(LogBrush);
SelectObject(Canvas.Handle, aGDIBrush);
:
DeleteObject(aGDIBrush);
(API版β…Windows 2000以降のみ,Win9x系不可)
SelectObject(Canvas.Handle, GetStockObject(DC_BRUSH));
SetDCBrushColor(Canvas.Handle, Random($ffffff));
0014ななしへたぐらま ◆XcB18Bks.Y
2005/07/13(水) 23:36:53これもはじめて作ってみた次第.
うちはDelphi 5でフォームの半透明機能がないのでAPIで半透明化しています.
ただしUpdateLayeredWindow APIを使っているのでDelphi 6のとは内部の挙動が違うかも.
以下はこのプログラムを5台のPCで動かしてみた実験結果.右端がプロセスのCPU使用率(タスクマネージャの値)
(実験プログラム:フォームサイズ320×240,UpdateLayeredWindow使用,毎秒20コマ書き換え)
あ:WinXP/Athlon 64 3000+(※1GHz固定)/GeForce FX5200 →0%
い:Win2k./Athlon 64 3000+(※@800MHz)/Millennium P650 →0%
う.:Win2k./Pentium III 900MHz/Millennium PCI →40%
え:Win2k./Eden 600MHz/オンボード(VIA/S3G CLE266) →80%
お:WinXP/C3 900MHz/オンボード(Trident Blade 3D) →60%
どうも半透明処理をハードで処理できない環境だとCPUの使用率が跳ね上がるようですね.
ちなみにTBitmap.Transparent = Trueで描画するときは描画時にマスクビットマップを作ってから転送しているようです.
Windowsではごく一般的な方法と思われます.
なお2Dゲームのキャラクタのように描画するイメージがあらかじめ決まっているなら
マスクのイメージ一定になりますからあらかじめマスクビットマップを用意すれば多少は速くなるはずですが,
上のCPU使用率の問題がある限りは焼け石に水です.
0015デフォルトの名無しさん
2005/07/14(木) 00:45:40> 下記のようなコードで実験した限りはどれもあまり変わりませんでした.
おつかれー
VCL は TWinControl の派生クラスの場合などと違って、GDI 関係は結構薄いラッパ
なんですよね。むしろペンやブラシやフォントなんかはリソースマネージャがある分だけ
リソース的には API より有利です。Canvas.TextOut のような場合を除けば、API を
つかうことでパフォーマンスを大幅にアップすることは難しいでしょう。
いや、 TextOut でも普通は数100回どまりでしょうから、互換性や抽象性を犠牲にして
まで API を使う意味はない、というのが妥当でしょうね。
DrawText は、書式矩形内でのテキスト配置ができるので、Canvas のメソッドにないので
よく使いますけど。
0016デフォルトの名無しさん
2005/07/14(木) 00:59:22とWinHelpを認識しなくなってしまいました。
Application.HelpCommand(HELP_FINDER, 0); で組み込んだヘルプボタンを押して
も応答がなく、Application.HelpContext(aaa); でaaa(番号)を呼び出すと
「状況感知型ヘルプがインストールされていません」と出ます。
使いづらい2005のヘルプを読むと、Application.HelpCommandの引数は2つとも
Integerと書いてあります???
検索してみてもよくわかりません。何が悪いんでしょうか。
0017デフォルトの名無しさん
2005/07/14(木) 07:16:260018デフォルトの名無しさん
2005/07/14(木) 17:21:010019デフォルトの名無しさん
2005/07/14(木) 17:47:240020デフォルトの名無しさん
2005/07/14(木) 20:17:10ウィンドウののキャプチャする(スクリーンショットをとる)プログラムを作ろうと思って、「TClipboardというコンポーネントを使え」という情報まで辿り着いたのですが肝心のソレが見つかりません。
一体どこにあるのでしょうか。
0021デフォルトの名無しさん
2005/07/14(木) 20:22:46ヘルプを見てキーワードに TClipborad と入れると使い方が書いてある。
0022デフォルトの名無しさん
2005/07/14(木) 21:11:41TBitmapとGetDCで取ったDCハンドル突っ込んだTCanvasで十分じゃないか?
0023デフォルトの名無しさん
2005/07/14(木) 21:30:100024デフォルトの名無しさん
2005/07/14(木) 23:17:25Keybd_Eventで、PrintScreenのキー押させて、TClipbordからAssignすればkk
普通はgetdcを使うと思うけど。
ttp://www1.kcn.ne.jp/~nomiya/delphi/apply/1.html
てか自分でそれぐらい調べろよw これだからアンチがガタガタぬかすんだろ。
002516
2005/07/14(木) 23:49:10WinHelpViewerでググってもよくわかりませんでしたが、YAHOOでは一番上に
出ました。
0026デフォルトの名無しさん
2005/07/14(木) 23:51:28質問なんですが、Delphiで作ったアプリをスキンを使って
外観を変えることは出来ますか?
参考になるページや書籍などあれば教えてください。
ググってみましたがよく分かりませんでした。
よろしくお願いしますm(__)m
0027デフォルトの名無しさん
2005/07/15(金) 02:34:19相模原市民ですが、何か?
0028デフォルトの名無しさん
2005/07/15(金) 04:35:27Delphi の場合どうしたら良いのでしょうか?
0029デフォルトの名無しさん
2005/07/15(金) 05:00:090030デフォルトの名無しさん
2005/07/15(金) 06:21:381. リソースファイル
2. そういうコンポでも作る
3. String でがんばる
>>29
よく意味がわからんが、
published な TStrings 型プロパティ
っつーことけ?
003130
2005/07/15(金) 06:24:39ソースコードに含めるなら String しかない。
0033デフォルトの名無しさん
2005/07/15(金) 09:19:38プロジェクトメニューのプロジェクトを追加で、先ほどの*.rcをプロジェクトに追加する。
エディターに新しくタブが出来るので、そこで「MYTEXT TEXT "*.txt"」のように書き込む。
したら、普通にコンパイルするだけ。 *.rcを追加した時点でコンパイラ指令は自動で書き換えられるから。
後は、各自ResHackerとかでリソース確認すればいい。
あ、因みに呼び出し方は
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromStream( TResourceStream.Create(hInstance, 'MYTEXT', 'TEXT'));
end;
な。試してないけど。 分かりにくくてごめん><
0034デフォルトの名無しさん
2005/07/15(金) 09:22:11resourcestring
0035デフォルトの名無しさん
2005/07/15(金) 09:23:55まじっすか、レスサンクスです。
求人かけてみます。
0036デフォルトの名無しさん
2005/07/15(金) 09:24:34TResourceStream解放しろよ
そのコードの書き方だとお前、多分気付いてないメモリリークが沢山あるぞ
0038デフォルトの名無しさん
2005/07/15(金) 09:25:20003933
2005/07/15(金) 09:30:03でもまぁアルゴリズムさえ分かっていただければそれでいいんで。
0040デフォルトの名無しさん
2005/07/15(金) 09:56:28読み書きしたいのですがどうすればいいのでしょうか
テキストファイルみたいにAssignFile〜Reset(Rewrite)〜Writeln(Readln)
という感じでOKですか?
0041デフォルトの名無しさん
2005/07/15(金) 09:56:300042デフォルトの名無しさん
2005/07/15(金) 09:57:26TMemoryStream の使い方を覚える
0043デフォルトの名無しさん
2005/07/15(金) 10:02:03TMemoryStreamのインスタンス作って
読み込みはLoadFromFile書き込みはSaveToFileという感じですか?
0044デフォルトの名無しさん
2005/07/15(金) 10:07:24ファイルの内容の読み書きは、Write と Read とかのメソッドを使う
0045デフォルトの名無しさん
2005/07/15(金) 10:26:06日ごろのストレスを他人にぶつけてどうするんだw
0046デフォルトの名無しさん
2005/07/15(金) 10:32:430047デフォルトの名無しさん
2005/07/15(金) 10:34:210048デフォルトの名無しさん
2005/07/15(金) 10:36:47プログラマやめれ
0049デフォルトの名無しさん
2005/07/15(金) 10:40:36a 友達と相互に関わる能力に欠ける
2 没入的で狭い興味・関心
a ほかの活動を受けつけない
b 固執を繰り返す
4 言葉と言語表現の問題
e 理解の悪さ:表面的/暗示的意味の間違った解釈を含む
0050デフォルトの名無しさん
2005/07/15(金) 10:44:310052デフォルトの名無しさん
2005/07/15(金) 12:41:46with TStringList.Create do
begin
作業
Free;//これいるよね?でも、どこかでwith抜け出したときに開放されるというのを見た記憶が・・・
end;
0053デフォルトの名無しさん
2005/07/15(金) 12:49:50インタフェースを含むクラス以外では自動でガベージコレクトされることはないです。
TStreamAdapter なんかは >>33 のような形で使っても問題ないです。
0054デフォルトの名無しさん
2005/07/15(金) 12:57:29SQL見たいに別名つけれれるようにならないかなぁ〜
コードの可読性あがると思うんだけど…
with TStringList.Create A, TObjectList.Create B do
begin
作業
A.Free;
B.Free;
end;
0055デフォルトの名無しさん
2005/07/15(金) 13:02:21A := TStringList.Create;
B := TObjectList.Create;
のようにして使う。その例だと with 使うのはバグの温床
0056デフォルトの名無しさん
2005/07/15(金) 13:10:11そうだね。
コード書くときはそうしてるよ。
ただパッとあまり保守を考えなくていいテストツールなんか書くときは
設定したいプロパティ多いとwithは使うんだよね。
まぁあったらいいかな、といったレベルのお話ということで
0057デフォルトの名無しさん
2005/07/15(金) 14:12:120058デフォルトの名無しさん
2005/07/15(金) 14:33:120059デフォルトの名無しさん
2005/07/15(金) 17:11:41begin
Memo1.Lines.LoadFromStream( TResourceStream.Create(hInstance, 'MYTEXT', 'TEXT'));
end;
とりあえずこの例で自動解放されるってマジ?
0060ななしへたぐらま ◆XcB18Bks.Y
2005/07/15(金) 17:13:26自己流でしか作ったことがないのですが
フォームにイメージコンポを載せて,これにスキン画像を設定.
一番単純なのはウィンドウ全体を1枚のスキンで覆う方法.
フォームの全面にイメージコンポを貼り付け.
ウィンドウ全体のイメージを持つスキン1枚を用意してこれをイメージコンポに設定.
ボタンの絵のあるところにスピードボタンを置き,これのFlatプロパティをTrueにする.
(絵に描かれたボタンが四角くないとかっこわるいですが)
ちなみにスキン画像をフルカラーBMPにするとファイルサイズが無駄に大きくなるので,
256色以下に落とすとかJPEG形式にすると良いでしょう.
なお,長方形でないウィンドウにするのでしたら『リージョン』を使います.
(詳しくは『Delphi フォーム リージョン』で検索してみて下さい)
0061デフォルトの名無しさん
2005/07/15(金) 17:13:36if Query.FieleByName('AAA').AsString = '' then
この場合にAAAの値がNullだったら、↑の条件はTrueになりますでしょうか?
確実にNull場合でもTrueで拾いたいのですが何か良い方法はありますでしょうか?
宜しくお願いします。
0062デフォルトの名無しさん
2005/07/15(金) 17:45:26どこ四ドル? リークしまくりだろ
0063デフォルトの名無しさん
2005/07/15(金) 17:50:00AAAがNullっていうのは空文字( '' )のこと?
Queryがnilでもっていう意味かな?
前者として回答
Queryが何のインスタンスか分からないけど、
FieleByNameってヘルプで調べたら'AAA'が見つからない場合は例外生成とある。
例外を出したくない場合はFindを使えってあるから、
if (Query.Find('AAA') = nil) or (Query.Find('AAA').AsString = '') then
DB関係いじったことないし、質問もよく分からんので激しくはずしてる悪寒
0064デフォルトの名無しさん
2005/07/15(金) 17:55:580065デフォルトの名無しさん
2005/07/15(金) 18:10:45>>38 これ
リークするならいいんだ
これでリークしなかったら俺の常識が根底から覆る
0066デフォルトの名無しさん
2005/07/15(金) 18:46:260067ななしへたぐらま ◆XcB18Bks.Y
2005/07/15(金) 21:03:43『値がない』かどうかは多分 FieldByName('AAA').IsNull で調べられると思います.
確実なのは実際にテーブルを作ってみることです.
プロ版以上ならDataBaseDesktopとかで作れます.
006826
2005/07/15(金) 22:01:40有り難うございます。
早速参考にして、調べてみたいと思います。
0069ミ,,゚Д゚ミノ ◆A6VzDeLphI
2005/07/16(土) 00:48:55http://www.sunisoft.com/suiskin/
ThemeEngine Home
http://www.ksdev.com/themeengine/index.html
>>26
>>60
0070デフォルトの名無しさん
2005/07/16(土) 19:02:580071デフォルトの名無しさん
2005/07/16(土) 19:59:080072デフォルトの名無しさん
2005/07/16(土) 21:56:320073デフォルトの名無しさん
2005/07/16(土) 23:28:55そうなんですか、ありがとうございます
0074デフォルトの名無しさん
2005/07/16(土) 23:30:06長い文字列でも変わらんだろ。
呼び出しの時点でコピーなんてされない。
0075デフォルトの名無しさん
2005/07/16(土) 23:30:270076デフォルトの名無しさん
2005/07/17(日) 00:06:38007726
2005/07/17(日) 00:28:58有り難うございます。
スキンを使う場合こういったものを使うのが、
結構一般的だったりするのでしょうか?
それと、ご紹介頂いたものは結構簡単に使えるものですか?
(個人使用目的なので金額的にもチョット...)
0078デフォルトの名無しさん
2005/07/17(日) 04:37:45ユーザーにスキン切り替えとかさせたいならこの手の使った方がいいけど、
単に見た目を派手にしたいだけならそれこそフォームにイメージ表示でもいい気がするよ。
後、XPユーザー限定でよければ.manifestなんてのもあった気がする。
0079デフォルトの名無しさん
2005/07/17(日) 09:59:540080デフォルトの名無しさん
2005/07/17(日) 10:56:510081デフォルトの名無しさん
2005/07/17(日) 17:07:08ItemsをAddした後どうしたらいいですか?
ListView.Items[XX].Caption := Edit1.Text;
にすると指定行の1列目はいじれるようになりました。
ListView.Columns[XX].Caption := Edit1.Text;
にすると0行目の指定列はいじれるようになりました。
これを組み合わせるにはどうしたらよいでしょうか?
あと、TListItemについてもよくわかりません...
0082デフォルトの名無しさん
2005/07/17(日) 17:21:221列目 ListView1.Items[XX].Caption := Edit1.Text
2列目 ListView1.Items[XX].SubItems[0] := Edit1.Text
3列目 ListView1.Items[XX].SubItems[1] := Edit1.Text
:
0083デフォルトの名無しさん
2005/07/17(日) 21:27:10ItemsはAddできるのですがSubItemsがAddできません。。
0084デフォルトの名無しさん
2005/07/17(日) 21:37:50ありがとうございました。
0085デフォルトの名無しさん
2005/07/17(日) 21:38:01アプリケーションを作成しているのですが
メタファイル形式でスナップショットを保存する場合
どうすればよいですか?
現状はBMPでBitbltして、ビットマップ、または
JPEGで保存できるようにしています。
メタファイルの対応したいのですが
1.BitBltしたビットマップをメタファイルの変換する
2.BitBlt自体をメタファイルで行う
の二択だと思うのですが
どちらもやり方がわかりません。(死
0086デフォルトの名無しさん
2005/07/17(日) 22:11:21池沼ですか?メタファイルにしたところで描画に時間掛かるっつーか
SSとかだったら余程単純な画面じゃないと無理だから。
0087デフォルトの名無しさん
2005/07/17(日) 22:49:41メタファイルキャンバス作ってそこにBitBltしてやれば、形だけはメタファイルになる。
だが、メタファイルとはどういうものか調べて考え直すことをお薦めする。
0088デフォルトの名無しさん
2005/07/18(月) 03:03:47本当にくだらない質問かもしれませんがHELPを見てもわからずググッてもそれらしきものが
見当たらなかったので書き込みました。
クリップボードに文字列を出力したいのですが、固定文字+変数の内容のやり方がわかりません
例) ’本日は’+A
Aが’晴天’、’曇天’、’雨天’ のような感じです。
P.S. これから勉強して行こうと思っていますので初心者向けのサイト等もありましたらご紹介お願いします
0089デフォルトの名無しさん
2005/07/18(月) 03:07:45uses
Clipbrd;
begin
Clipboard.AsText := '本日は' + A;
end;
0090デフォルトの名無しさん
2005/07/18(月) 03:40:21Delphiやめたほうがいいと思うよ
0091デフォルトの名無しさん
2005/07/18(月) 03:56:210092デフォルトの名無しさん
2005/07/18(月) 04:25:120093デフォルトの名無しさん
2005/07/18(月) 04:32:16スレ違いだから、他でやってくれ。
0094デフォルトの名無しさん
2005/07/18(月) 09:45:37固定文字や定数はconstで宣言しておく
const
A = 'Hoge';
begin
Clipborad,AsText:= '本日は' + A; // Hoge
end;
お勧めのサイトはDelphi Acid FloorとSeventh Delphiかな
オレもお世話になった
0095デフォルトの名無しさん
2005/07/18(月) 10:59:54マイクロソフト製でないから
0097デフォルトの名無しさん
2005/07/18(月) 14:45:28その度buttonが反応してしまい困っています。
反応しないようにするにはどうしたらいいのでしょうか?
お願いします。
0098デフォルトの名無しさん
2005/07/18(月) 14:47:42OnKeyDownでKey := nil;
009997
2005/07/18(月) 15:15:390100デフォルトの名無しさん
2005/07/18(月) 17:00:57なんで?
ちなみにこの二つ以外に手続きおよび関数はないよ。
procedure TForm1.FormCreate(Sender: TObject);
begin
with PaintBox1.Canvas do
begin
Brush.Color := clRed;
Pen.Color := clBlue;
end;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with PaintBox1.Canvas do
begin
//Brush.Color := clRed; // コメントアウトすると赤で塗りつぶされる
RectAngle(ClipRect);
end;
end;
0101デフォルトの名無しさん
2005/07/18(月) 17:11:22begin
Canvas.Font := Font;
Canvas.Brush.Color := Color;
(省略)
if Assigned(FOnPaint) then FOnPaint(Self);
end;
こういうコードだから
0102デフォルトの名無しさん
2005/07/18(月) 17:29:56たしかに、ヘルプ見たらキャンバスを初期化するとあるな。
助かったぜ。
0103デフォルトの名無しさん
2005/07/18(月) 17:42:09まともに検索することが出来ないから。
0104デフォルトの名無しさん
2005/07/18(月) 17:48:360105デフォルトの名無しさん
2005/07/18(月) 17:55:170106デフォルトの名無しさん
2005/07/18(月) 18:01:060107デフォルトの名無しさん
2005/07/18(月) 18:26:51すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0108デフォルトの名無しさん
2005/07/18(月) 18:37:03>>104みたいなヘタレは基本構文でお粗末なガラクタ作ってるのがお似合いだよね^^
0109デフォルトの名無しさん
2005/07/18(月) 19:03:570110デフォルトの名無しさん
2005/07/18(月) 19:17:470111デフォルトの名無しさん
2005/07/18(月) 21:18:52011226
2005/07/18(月) 23:30:35有り難うございます。
出来れば季節(気分?)でスキン切り替えられたとは思ってはいます。
(その都度コンパイルしてもいいのですが...)
>単に見た目を派手にしたいだけならそれこそフォームにイメージ表示でもいい気がするよ。
これは >60 ななしへたぐらま さん にご説明いただいた内容のことですよね?
それと、XPや98SEも使いますし、業務を含め7割以上が2000なのでXP限定というわけには...
アドバイス有り難うございました(^^
0113デフォルトの名無しさん
2005/07/18(月) 23:39:390114デフォルトの名無しさん
2005/07/19(火) 01:11:120115デフォルトの名無しさん
2005/07/19(火) 01:13:580116デフォルトの名無しさん
2005/07/19(火) 05:00:280117デフォルトの名無しさん
2005/07/19(火) 09:08:40普通は自分で使ってみて判断するもんだろ。
0118デフォルトの名無しさん
2005/07/19(火) 10:56:230119ななしへたぐらま ◆XcB18Bks.Y
2005/07/19(火) 17:53:41言語ガイドの説明を改めて読んでみたのですが,
どうも const をつける場合と何もつけない場合では内部処理に差はないようですね.
型などによって値渡しにしたり参照(ポインタ)渡しにしたりしています.
(興味のある方は,
言語ガイド→プログラムの制御→パラメータと関数の結果→パラメータの受け渡し
をご覧下さい.)
>>72
そのN88-BASICがMS-DOS版かそうでないかによって異なります.
MS-DOS版ならN88-BASICのランダムファイルの構造さえわかれば自在に読み書き可能です.
ただし構造がわからないのでこちらとしては具体的なコードは書きようがありません.
N88-BASICで読み書きに使っていたソフトウェアのソースコードが有れば機械的に移植することも可能です.
一方,「そうでない方」だとWindowsでは読めません.ディスクへの記録形式が異なるからです.
MS-DOS形式へのファイル変換,シリアル通信,又はインターネットなどににアップロードできれば転送できるのですが….
0121デフォルトの名無しさん
2005/07/19(火) 19:19:08D6 のヘルプより
構造化型パラメータや文字列型パラメータに対して const を指定すると,コンパイラは
コードを最適化できます。また,定数パラメータを使用することで,パラメータが別の
ルーチンに誤って参照渡しされるのを回避できます。
長い文字列だと CopyOnWrite であることを考えれば呼び出し時に差はなくても
変更予定がない場合は const 付けておく価値はありそう。
> 型などによって値渡しにしたり参照(ポインタ)渡しにしたりしています.
これは分からない。どういうこと? クラスのインスタンスは実装がポインタだから
const でも操作できる、っていうのは当たり前だとして、「値渡しにしたり」って
どこ読むと分かるの?
0122デフォルトの名無しさん
2005/07/19(火) 21:55:380123デフォルトの名無しさん
2005/07/19(火) 22:03:39チラシの裏にでも書けよ害児。スレ違いなんだよ氏ね。
0124ななしへたぐらま ◆XcB18Bks.Y
2005/07/19(火) 22:34:36ごめんなさい,>>120は私の間違いです.
値パラメータ(何もつけない)と定数パラメータ(const)の内部処理に差がないなんて事はありません.
ヘルプの[言語ガイド]→[手続きと関数]→[パラメータ]→[パラメータ]の項にあるとおりです.
※以下中級者以上?向け※
私が見たのはDelphi 5ヘルプの
[言語ガイド]→[プログラムの制御]→[パラメータと関数の結果]→[パラメータの受け渡し]の項で,ここに
> 値パラメータと定数パラメータ(const)は,そのパラメータの型とサイズに応じて値渡しまたは参照渡しになります。
という記述がありそのあとに値渡しになるか参照渡しになるかの条件が書いてあります.
つまり,値パラメータで参照渡ししたり,定数パラメータで値渡しする場合があるようです.
どちらを使うかの条件が両パラメータとも同じみたいなので
勘違いして「内部処理に差はない」と書いてしまったわけですが,
全く同じだと値パラメータで参照渡しする場合に
関数又は手続き内で値を書き換えると呼び出し元の値まで変わってしまいますから
呼び出しの前に値をコピーしてそのコピーの場所を渡しているはずです.
0125デフォルトの名無しさん
2005/07/19(火) 23:06:45ありがとう
0126デフォルトの名無しさん
2005/07/20(水) 15:07:54TQueryの各行に対して処理を行う時にDBGridの表示も同期して
動いてしまうのですが、これをやめさせることはできるでしょうか?
0127デフォルトの名無しさん
2005/07/20(水) 15:41:210128126
2005/07/20(水) 16:01:05それか別のSQL文を実行して開きなおすくらいですかね。
どうもありがとございます。
0129126
2005/07/20(水) 16:42:13格納しておきたいのですがどうやればいいんでしたっけ?
0130126
2005/07/20(水) 16:45:260131デフォルトの名無しさん
2005/07/20(水) 16:46:390133質問
2005/07/20(水) 18:58:51これはどういうことが原因で起きた冷害なのかわかりません。
どなたか教えてください。
0134デフォルトの名無しさん
2005/07/20(水) 19:16:470135デフォルトの名無しさん
2005/07/20(水) 21:05:38解放した、もしくは確保していないメモリに書き込んだ。
GetMemで確保した範囲を超えて書き込んだとか。
0137デフォルトの名無しさん
2005/07/21(木) 18:06:040138デフォルトの名無しさん
2005/07/21(木) 18:06:360139137
2005/07/21(木) 18:12:24DGcaradのイベントが空っぽなんです。
137>>が関係あるんでしょうか??
0140デフォルトの名無しさん
2005/07/21(木) 19:19:500141137
2005/07/21(木) 21:07:45別にいいんですか?
0142デフォルトの名無しさん
2005/07/21(木) 23:31:40インスタンスを代入した場合、手続きや関数が終わる前に、tmpobj := nil;
としておいた方がいいのかな?
0143デフォルトの名無しさん
2005/07/21(木) 23:36:35不要
オブジェクト変数は単なるポインタ
0144デフォルトの名無しさん
2005/07/21(木) 23:46:380145デフォルトの名無しさん
2005/07/21(木) 23:57:18512*512の行列のデータがIntegerでダーッと書き込まれているファイルがありまして、
その行列同士の足し算、引き算がしたいのですがどうしても処理速度が上がらなく(2分ほど処理に時間がかかる)
困っています。
わたしの作ったプログラムの概要は、
�@Readでファイルから行列の要素を一つ取り出す。
�A引き算足し算の演算をする
�B結果をWriteで書き込む
この�@〜�BをFor文で512*512回繰り返しています。
Blockreadなどを使えば良いのでしょうか?それにしても使い方がよくわかりませんし・・・。
わかる方、教えてください!
0146デフォルトの名無しさん
2005/07/22(金) 00:04:38なぜメモリ上で演算しないのか不思議
0147デフォルトの名無しさん
2005/07/22(金) 00:07:412.演算する
3.全データを一気に書き出す
0148デフォルトの名無しさん
2005/07/22(金) 00:08:30データ1個取って来るたびにファイル操作してたら時間が係るのもあたりきよ
普通はデータを一辺に読み込んでから処理するんじゃねーの?
0149デフォルトの名無しさん
2005/07/22(金) 00:09:56まさか「結果をWriteで書き込む」を512*512回行ってなんていないよな?
メモリに溜めこんだ結果を一回だけ書き込めば済む話だもんな
0150デフォルトの名無しさん
2005/07/22(金) 00:12:100151デフォルトの名無しさん
2005/07/22(金) 00:19:220152デフォルトの名無しさん
2005/07/22(金) 00:28:310153デフォルトの名無しさん
2005/07/22(金) 00:29:470154デフォルトの名無しさん
2005/07/22(金) 00:44:56>ファイルアクセスがネック。
>なぜメモリ上で演算しないのか不思議
要は>147の方のようにすればよろしいのでしょうか?なんせ覚えたてなもので・・・。
>147
>1.全データをファイルから読み込む
>2.演算する
>3.全データを一気に書き出す
どんな命令をどのように使ったらよいのかわかりません・・・。
皆様、親切に答えてくれてどうもありがとうございます!!ですが、超超初心者の私には
具体的にどのような命令を用いたらよいのかわかりません。。。
もうちょっとよろしくお願いします!!!
0155デフォルトの名無しさん
2005/07/22(金) 00:53:41手順を踏まずにいきなり「上のこと」をやってるからじゃないの?
基本の理解をしないで先のことをやろうってのはアレかと。
結果的に「ソース書いて」まで行かないと解決しないんじゃない?
マジレスしちゃうけど。
0156デフォルトの名無しさん
2005/07/22(金) 01:02:00type
TMatrix512 = array[0..511, 0..511] of Integer;
PMatrix512 = ^TMatrix512;
var
ms: TMemoryStream;
mat: PMatrix512;
i, j: Integer;
begin
ms := TMemoryStream.Create;
try
ms.LoadFromFile('data.dat');
mat := ms.Memory;
for i := 0 to 511 do
for j := 0 to 511 do
mat^[j,i] := mat^[j,i] * 2;
ms.SaveToFile('data2.dat');
finally
ms.Free;
end;
end;
0157デフォルトの名無しさん
2005/07/22(金) 09:44:46後は読み込んだデータをいじくるまでみたいなソースを書いてみな
「メモリ上でやる」ってのは「ファイル入出力を使わない」ってことだ
0158デフォルトの名無しさん
2005/07/22(金) 11:02:21Delphi7を使ってるんだが、おそらくCで下のように呼び出されることを
想定したDLLの関数が合って、
BOOL A( BOOL f )
このDLL関数を使うインタフェースとしてDelphi側で
function A( f: Boolean ): Boolean; stdcall;
みたいに書かれているとする。
# この部分は前任者が書いたのでお察しください
このとき、下のようにすると正しく呼び出せなくてハマったわけだが、
どうも府に落ちない。
DelphiのTrue/Falseは内部的に1/0というのは知ってるけども。
procedure B( f: Boolean );
begin
A( not f );
end;
ちなみに下の書き方なら動作に問題ないが、なんかかっこ悪い気が・・・。
procedure B( f: Boolean );
begin
if f then
A( False )
else
A( True );
end;
0159デフォルトの名無しさん
2005/07/22(金) 11:26:30サンプルさえも動作しないのだが... (Delphi7)
0160デフォルトの名無しさん
2005/07/22(金) 12:39:02その場合はByteBoolとかWordBoolとかLongBool使うんじゃなかったかな
>>159
コンパイルオプションで範囲チェック外してみては
0161ななしへたぐらま ◆XcB18Bks.Y
2005/07/22(金) 17:02:12配列の範囲外の要素にアクセスしたときにも出ます.
(この場合はコンパイルオプションで『範囲チェック』を有効にすると「範囲チェックエラー」と検出するようになります.
個人的にはチェックするのをおすすめ)
>>137,141
ttp://www-fu.magma.ne.jp/~hayase/dddd/download.html
SDKはオフィシャルには必要とは書いていないので不要でしょう.
プロシージャの宣言…ここではすでに存在するライブラリを呼び出すための宣言という意味だと思いますが,
これは誰が書いても構いません.
(比較的単純な作業ですが量が膨大でチェックも大変でしょうし,
世界のどこかにすでにあるならそれを使う方が合理的です.)
DLLの呼び出しをDelphiでどうやるかは
[言語ガイド]→[手続きと関数]→[手続きと関数の宣言]→[external 宣言]をご覧下さい.
※手持ちのDelphi 5ではキーワード検索でext…と打ち込んでも出てきませんでした(ひどい).
ソースコードの実例としてWindows.pasが参考になると思います.
ただし巨大なファイルなのでよく使うAPIの名前で検索をかけてみてどういうコードか見てみると良いと思います.
(たとえばSystemParametersInfoとか)
0162デフォルトの名無しさん
2005/07/22(金) 18:12:17具体的にはFLOAT。
0163デフォルトの名無しさん
2005/07/22(金) 18:16:39あれ謎のコンポだよな
ちゃんと動くときと何故か範囲チェックで全く動かないときがある
再現性がわからないからソースあっても直せないし
0164162
2005/07/22(金) 18:40:160165162
2005/07/22(金) 19:03:510166デフォルトの名無しさん
2005/07/22(金) 20:41:23便乗
matをTMatrix512でなくPMatrix512にしてるのは
高速化の技でしょうか?
あとfor文にbegin end が不要なのは仕様が変わったのでしょうか?
Delphiがわかりづらいのは
ms: TMemoryStream; ←なんだこれは? ms:TMatrix;では駄目なのかって感じ
ms := TMemoryStream.Create; ←忘れる、なんとなくms.Createとしてしまう
ms.LoadFromFile('data.dat'); ←はしょってmat.LoadFromFile(〜 としてしまう
mat := ms.Memory; ←mat := ms; としてしまう
やりたい事や使いたい変数の数と
記述しなければいけない事や変数の数がストレートに結びつかないのです。
0167デフォルトの名無しさん
2005/07/22(金) 20:43:060168デフォルトの名無しさん
2005/07/22(金) 20:54:40156じゃないが疑問に答えよう
matをPMatrix512にしているのはポインタを扱うためだ
for文に限らず、一行のみの処理ならbegin endで囲う必要はない
例)
if Count = 0 then
ShowMessage('Hoge');
msというインスタンスを用意しているのは楽にファイルを読むためだ
TMemoryStreamにはファイルを簡単に読むためのメソッドがあるからな
ms.Createでは絶対駄目だ
msはTMemoryStreamというものを入れるための器に過ぎない
mat.LoadFromFileははしょって出来るものじゃない
IDEで出てこないだろ、そんな補完は絶対に
msはTMemoryStreamという形を取っているため、
純粋なメモリを取得するにはMemoryというプロパティから取得する必要がある
まとめ
基本が終わってるからまずは初心者サイトをしっかり嫁
0169デフォルトの名無しさん
2005/07/22(金) 21:24:24全くの初心者がDelphiを理解していく上で参考になるサイトや本を教えて下さい。
現在はttp://www.w-frontier.com/delphi/index.htmlを見ながら勉強しています。
0170デフォルトの名無しさん
2005/07/22(金) 22:38:010171ななしへたぐらま ◆XcB18Bks.Y
2005/07/22(金) 22:44:43書き込みからではどういうコードを書かれているか断定できませんでした.おそらく以下のどちらかかと思います.
あ)配列を使っていなくて,要素にアクセスするたびにファイルから読み込む.
い)配列を使っているが読み込みと書き込みに時間がかかる.
あ)の場合は(多分無いと思いますが),配列を使って下さい.
256×256の行列は2次元配列で表現することができます.
例:var Numbers[1..256, 1..256] of integer; → Numbers[1, 1]からNumbers[256, 256]までの256×256の配列変数を作る
い)の場合ですが,読み書きのアクションはその回数が少ない方が速いです.
一方で(Delphi 2.0以降の)integer型の512×512の行列のサイズは4バイト×512×512=1メガバイトですが
Windows 95以後の環境に置いては楽勝で丸ごと読み込めるサイズです.
つまり1回で丸ごと読み込みましょう,と.
方法は思いついた範囲では…
α)『形無しファイル』として開いてBlockReadで丸ごと読み込み.
β)ストリームを使って丸ごと読み込み.
α)はヘルプでBlockReadの説明を出してここから例をご覧下さい.
β)は>>156の方法のほかにファイルストリームを使う方法も考えられます.
var
fs: TFileStream;
Matrix: array [0..511, 0..511] of integer; // [1..512, 1..512]でもよい
begin
fs := TFileStream.Create('data.dat', fmOpenRead);
try
fs.Read(Matrix[0, 0], sizeof(integer) * 512 * 512); // [1..512, 1..512]なら[1, 1]
finally
fs.Free;
end;
end
0172デフォルトの名無しさん
2005/07/22(金) 22:54:46質問者が
> fs.Read(Matrix[0, 0], sizeof(integer) * 512 * 512);
この書式に合うようにセーブしてるとは限らない
0173デフォルトの名無しさん
2005/07/22(金) 23:28:44そして、そのボタンのクリック時の動作を書き込む祭に
普通だと、Form1が宣言されているユニット内に、
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('テスト');
end;
という感じで書きますよね。
これを別ユニット内に書きたいのです。
このようなコトは可能なんでしょうか?
もしできるのならやり方を教えていただきたいです。宜しくお願いします。
0174デフォルトの名無しさん
2005/07/22(金) 23:30:58そして、そのボタンのクリック時の動作を書き込む祭に
普通だと、Form1が宣言されているユニット内に、
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('テスト');
end;
という感じで書きますよね。
これを別ユニット内に書きたいのです。
このようなコトは可能なんでしょうか?
もしできるのならやり方を教えていただきたいです。宜しくお願いします。
0175デフォルトの名無しさん
2005/07/22(金) 23:33:270176デフォルトの名無しさん
2005/07/22(金) 23:33:41そして、そのボタンのクリック時の動作を書き込む祭に
普通だと、Form1が宣言されているユニット内に、
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('テスト');
end;
という感じで書きますよね。
これを別ユニット内に書きたいのです。
このようなコトは可能なんでしょうか?
もしできるのならやり方を教えていただきたいです。宜しくお願いします。
0177デフォルトの名無しさん
2005/07/22(金) 23:35:500178デフォルトの名無しさん
2005/07/23(土) 00:20:17ことが IDE を使ってるだけの人には分かりづらいんだよな。
0179デフォルトの名無しさん
2005/07/23(土) 00:20:49145ではないが スッキリ!!!
0180デフォルトの名無しさん
2005/07/23(土) 00:21:480181デフォルトの名無しさん
2005/07/23(土) 00:26:530182デフォルトの名無しさん
2005/07/23(土) 00:31:35....
public
procedure OresamaClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick := OresamaClick;
end;
procedure TForm1.OresamaClick(Sender: TObject);
begin
ShowMessage('OresamaClick');
end;
他ユニットの場合でも同様に
Form1.Button1.OnClick := OresamaClick;
とか代入してやるだけ
0183デフォルトの名無しさん
2005/07/23(土) 01:38:420184デフォルトの名無しさん
2005/07/23(土) 02:08:08こんなの見つけた
http://www2.big.or.jp/~osamu/Delphi/tips.cgi?index=0283.txt
0185デフォルトの名無しさん
2005/07/23(土) 02:18:270186174
2005/07/23(土) 11:20:59>>182
盲点でした。自分でクラス作るときなんかにやったこともあったのですが、
そんな使い方、思いつきませんでした。
本当に初心者レベルの質問で申し訳ありません。
>>183
Includeですか、ネットで調べてみたり、ヘルプを見てみたりしたのですが
よく記述方法がわかりませんでした><
もし、Includeについて詳しく書かれているようなところをご存知でしたら
教えていただければ幸いです。
アドバイスやヒントでもよいのでお待ちしております
0187デフォルトの名無しさん
2005/07/23(土) 13:06:40ユニットとは全く別の概念
0188174
2005/07/23(土) 13:48:38今回の件にも使えそうですし、また他の機会でも参考になるかなと思ったための発言です。
0190デフォルトの名無しさん
2005/07/23(土) 14:14:430191デフォルトの名無しさん
2005/07/23(土) 15:14:08ひょっとしてこうしたいのか?
ーーUnit1.cppーー
#include "Unit1.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("てすと");
}
ーーUnit2ーー
#include "Unit1.h"
#include "Unit2.h"
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form1->Button1->Click();
}
って俺はBCBしかわかんねぇや
脳内置換でDelphiにしてくれ
0192デフォルトの名無しさん
2005/07/23(土) 23:05:49if Clipboard.HasFormat(CF_BITMAP) then...
とやっても、CF_BITMAPが未定義だと言われるんだけど。
もちろん、uses Clipbrdはしているのに、何でだよ
0193デフォルトの名無しさん
2005/07/23(土) 23:35:05Windowsユニットじゃなかろうか?
0194デフォルトの名無しさん
2005/07/24(日) 06:01:52Delphi”』の開催日程を誤ってご案内し、皆様には大変ご迷惑をおかけいたしま
した。改めてお詫び申し上げます。
この度、ライブをお聞きいただけなかった皆様に『Delphi 24時間ラジオマラソン』
の録音をダウンロードいただけるサービスを開始いたしました。
(WMA・MP3形式でご提供しております。)
Delphi 2005でのWin32アプリケーションおよび.NETアプリケーションの
開発への移行のティップスやテクニック、今後のDelphiロードマップに
ついてなどのディスカッションがお聞きいただけます。
『Delphi 24時間ラジオマラソン“24 Hours of Delphi”』
録音ダウンロード・サービスサイト
⇒ http://mypage.borland.co.jp/track.html?3424.56473.MLG0507007
ボーランド株式会社
0195192
2005/07/24(日) 08:58:18ちなみにusesするユニットの順番にもちゃんと意味があったんだな。
知らんかったよ。
0196デフォルトの名無しさん
2005/07/24(日) 09:26:07(ちなみにDelphi6無料版
0197デフォルトの名無しさん
2005/07/24(日) 09:53:43TFileStream.Read
0198デフォルトの名無しさん
2005/07/24(日) 15:39:51「abc123」にマッチさせるようにするにはどうすればいいんでしょう?
procedure TForm1.Button1Click(Sender: TObject);
var
str : String;
RegEx : TRegExpr;
begin
RegEx := TRegExpr.Create;
try
str := '(abc123)';
RegEx.Expression := '([a-zA-Z0-9]+)';
if RegEx.Exec(str) then
Memo1.Lines.Add(RegEx.Match[0]);
finally
RegEx.Free;
end;
end;
0199デフォルトの名無しさん
2005/07/24(日) 15:55:47'('=8169 で 'i'=69 だからマッチしちゃうのか。
TRegExprはマルチバイト対応してる?。俺はVBScriptのほうを使ってる。
0200デフォルトの名無しさん
2005/07/24(日) 16:14:33どのようにしたらよいでしょうか?
よろしくお願いします。
0201デフォルトの名無しさん
2005/07/24(日) 17:01:29Unicodeを使うようにしたら希望どうりマッチするようになりました。
0202デフォルトの名無しさん
2005/07/24(日) 17:35:19>どうり
>どうり
0203デフォルトの名無しさん
2005/07/24(日) 17:39:36TVS_CHECKBOXES
0204デフォルトの名無しさん
2005/07/24(日) 18:24:06ありがとうございます!できました!
でも Delphi からは設定できないんですかねー。
0205デフォルトの名無しさん
2005/07/24(日) 18:33:32TWinControl.CreateParams
0206デフォルトの名無しさん
2005/07/24(日) 18:36:44ありがとうございます。
SetWindowLong で設定しましたが、CreateParams をオーバーライドする方法もありますね。
TTreeView レベルに組み込まれていればいいのにー、と思ったもので。
0207デフォルトの名無しさん
2005/07/24(日) 20:57:33君が組み込んだ TTreeViewEx を公開すればいいじゃない。
0208デフォルトの名無しさん
2005/07/25(月) 10:04:340209デフォルトの名無しさん
2005/07/25(月) 11:51:27どのようにプログラミングすればよいかイメージがわきません。
どなたか伝授していただけないでしょうか?
0210デフォルトの名無しさん
2005/07/25(月) 12:24:100211209
2005/07/25(月) 13:43:47ただなぜかXPだと登録できるのですが2000だとエラーになります。
WinShader.dcuが見つかりませんというエラーが出てしまいます。
0212デフォルトの名無しさん
2005/07/25(月) 13:56:490213デフォルトの名無しさん
2005/07/25(月) 14:06:47TOpenPictureのBeforeExecuteイベントかTOpenPicture.DialogのOnShowイベントで、
メッセージダイアログを出して、キャンセルの時はDialogが開かない(あるいは
一瞬で閉じる)ようにしたいわけだが、Dialogを開かないようにしたり、
すぐに閉じる方法が分からない。どうしたらいいのさ?
0214デフォルトの名無しさん
2005/07/25(月) 14:36:41TOpenPicture.Excute の呼び出し側で確認すればいいんじゃない?
0215デフォルトの名無しさん
2005/07/25(月) 15:09:51formひとつに同じサイズのpanel1とpanel2を重ねておいて、
起動時はpanel2.visibleをfalseにしておき、
panel1上のボタンを押したらpanel2.visible=trueで本番に入るようにしたんだけど。
いつの間にかpanel1上のボタンのcaptionが表示されなくなった。
(オブジェクトインスペクタではちゃんと設定してあるのに実行すると空白ボタンになる)
なんでだろうと思ってそのボタンのcaptionを設定しなおしたりしたけど直らず、
panel1.captionを設定したら、
なぜかそれが問題のボタンのcaptionとして表示された。
ボタン動かすと、そのpanel1のcaptionも一緒に動く。
なにがどうなってこうなったの?
わけわからんしdelphi6使って行く上でとても不安になったよ・・・
0216デフォルトの名無しさん
2005/07/25(月) 15:18:54すくなくともオレのDelphi6ではそういった類の問題はまったくない
0217デフォルトの名無しさん
2005/07/25(月) 15:28:50こんなブビなコーディングするから状況がわかんないんじゃない?
0218デフォルトの名無しさん
2005/07/25(月) 15:31:53でもフォームのoncreateイベントで改めて定義するようにしたらちゃんと出るようになった
あと、ちょっとフォームのサイズを変更しただけで
子オブジェクトどもの配置関係がぐちゅぐちょになるのはどうにかならんですか
とりあえず親フォームのmaxheight..minwidthに初期値を入れてリサイズ不可にしたけど
めんどくさー
0219デフォルトの名無しさん
2005/07/25(月) 15:36:12コンポーネント一個一個にAlignプロパティがある。
位置決めはコード書かなくても出来る筈。
>とりあえず親フォームのmaxheight..minwidthに初期値を入れてリサイズ不可にしたけど
Del中は絶対やらない手。
0220デフォルトの名無しさん
2005/07/25(月) 15:37:41コンポーネントの動的生成できるようになれよ。
0221デフォルトの名無しさん
2005/07/25(月) 15:42:53http://testesca.at.infoseek.co.jp/delphi/delphi.htm
0222デフォルトの名無しさん
2005/07/25(月) 15:43:460223218
2005/07/25(月) 15:50:06他答えてくれた人々どうもありがとう
自分のやりかたがアフォっぽいらしいってわかっただけでも進化しましたよ
0224デフォルトの名無しさん
2005/07/25(月) 15:58:23TFrameにべたべた貼ったのを用意しといて、
TFormに貼ったり剥がしたり(=Free)すると、
超便利だぞ。
それとかTPanelで位置決めしといたとこに派生コンポーネントを動的に張るとか。
0225デフォルトの名無しさん
2005/07/25(月) 16:44:39コンポーネント新規作成用のクラスでもつくっとくかな
0226デフォルトの名無しさん
2005/07/25(月) 18:28:12Createをオーバーライドすれば良いんですか?
0227デフォルトの名無しさん
2005/07/25(月) 18:39:46その通り
0228ミ,,゚Д゚ミノ ◆A6VzDeLphI
2005/07/25(月) 23:10:19http://delphi.about.com/od/vclusing/l/aa092104a.htm
0229Delフサギコ ◆A6VzDeLphI
2005/07/25(月) 23:11:33⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ (´⌒(´⌒;;
だれかこれ(TreeViewCheckRadio)をコンポーネント化する
方法を教えてけれ。
0230デフォルトの名無しさん
2005/07/25(月) 23:28:490231Delフサギコ ◆A6VzDeLphI
2005/07/25(月) 23:37:39⊂,,,,,,,,,つ,,゚Д゚ミつ
0232デフォルトの名無しさん
2005/07/26(火) 00:32:480233デフォルトの名無しさん
2005/07/26(火) 01:05:17固定長のテキストファイルをデータベースに取り込みたいのですが、
どういった方法が一般的なのでしょうか?
また、Delphi Pro を使ってますが、付属のデータベースの中では、
何がお勧めでしょうか?
全くの初心者なので低級な質問でごめんなさい・・・
0234デフォルトの名無しさん
2005/07/26(火) 03:46:150235デフォルトの名無しさん
2005/07/26(火) 11:47:29ベータ版ではないものを教えてください。
といいつつできればベータ版の最新バージョンもセットで教えていただけるとうれしいです。
0236デフォルトの名無しさん
2005/07/26(火) 12:33:030237デフォルトの名無しさん
2005/07/26(火) 13:22:33コントロールパネルから削除していいのでしょうか?
0238デフォルトの名無しさん
2005/07/26(火) 16:11:33FireBird+IBX7.08使え。
0239デフォルトの名無しさん
2005/07/27(水) 00:06:40ありがとうございます。
FireBirdというRDBMSがあるんですね。
一度調べてみます。
で、固定長のデータベースに取り込む場合、変数に一旦読み込んでから、
何バイト目から何バイトを項目Aに・・・という方法になるのでしょうか。
0240デフォルトの名無しさん
2005/07/27(水) 00:10:26ありがとうございます。
FireBirdというRDBMSがあるんですね。
一度調べてみます。
で、固定長のデータベースに取り込む場合、変数に一旦読み込んでから、
何バイト目から何バイトを項目Aに・・・という方法になるのでしょうか。
0241デフォルトの名無しさん
2005/07/27(水) 00:14:23ありがとうございます。
FireBirdというRDBMSがあるんですね。
一度調べてみます。
で、固定長のデータベースに取り込む場合、変数に一旦読み込んでから、
何バイト目から何バイトを項目Aに・・・という方法になるのでしょうか。
0242デフォルトの名無しさん
2005/07/27(水) 01:05:35おまえ、なめてんのか?
固定長の取り込み方はそれでいい。
ただ、末尾の空白が不要の時はちゃんと除去して取り込めよ。
0243デフォルトの名無しさん
2005/07/27(水) 01:51:02鯖の不調?
0244デフォルトの名無しさん
2005/07/27(水) 02:35:040245デフォルトの名無しさん
2005/07/27(水) 09:05:25RDBのBLOB項目は、TQuery(または、TIBQuery)を使ってTMemoryStreamに読み込める。
0246デフォルトの名無しさん
2005/07/27(水) 21:13:34そこでファイルの書き込みについて質問です:
数値の入ったA[1..200,1..200]のような配列をテキストファイルとして保存したいんですが、
TFileStreamを使うやり方がよくわかりません・・・。
一番単純な方法で構いませんので、どなたか簡単なソースを示して頂けないでしょうか。
>>171を試したんですが、保存結果が変な文字列の羅列になってしまいます。
0247デフォルトの名無しさん
2005/07/27(水) 21:20:51sl: TStringList
begin
sl := TStringList.Create();
sl.Add('hogehoge');
sl.SaveToFile('filename.txt');
0248デフォルトの名無しさん
2005/07/27(水) 21:38:27まんまTextFile型というのもある
var
F: TextFile;
begin
AssignFile(F, 'C:\Hoge.txt');
try
ReWrite(F);
Writeln(F, 'HOGEHOGE');
finally
CloseFile(F);
end;
end;
0249デフォルトの名無しさん
2005/07/27(水) 22:09:29ありがとうございます!こんなに早く回答いただけるとは。
どちらの方法でもできました!
動作スピードは一気に書き込む>>247の方が速そうですが、
配列の大きさを大きくする場合、メモリのことを考えて>>248の方がいいんでしょうか?
あともう一つ教えていただいてもよろしいでしょうか。
AssignFile(F, 'data.txt');
try
ReWrite(F);
for j:=1 to 10 do
for i:=1 to 10 do
Writeln(F, FloatToStr(M[i,j]); //M: Array [1..10,1..10] of double;
finally
CloseFile(F);
end;
こんな感じで書いてみたんですが、行列っぽくファイルに出力するには(10行10列の数字で)
どのようにしたらよろしいでしょうか?
0250デフォルトの名無しさん
2005/07/27(水) 23:12:13テキストデータとして出力するには、自分でテキストデータに変換したり
改行コードなどを付加してやらないといけないので正直めんどくさい。
const
data:array[0..10] of Integer=(0,1,2,3,4,5,6,7,8,9,10);
var
FS:TFileStream;
I:Integer;
Buf:array[0..20] of char;
begin
FS := TFileStream.Create('c:\hoge.txt',fmCreate or fmShareDenyNone);
try
for I:=0 to 10 do
begin
StrPCopy(Buf,IntToStr(data[i]));
FS.Write(Buf,StrLen(Buf));
FS.Write(#$D#$A,2);
end;
finally
FS.Free;
end;
end;
>249の場合はWriteLnの代わりにWriteを使えば良いだけ。
iのループ抜けるときに空のWriteLnもしくは改行コードを出力。
0251233
2005/07/28(木) 01:09:22ギコナビで書き込みしてるのですがエラーになってしまって・・・
何度もすみませんでした・・・orz
末尾の空白除去の件、気をつけます。
>>246
早速試してみます。ありがとうございました。
0252デフォルトの名無しさん
2005/07/28(木) 03:39:01おかげさまで望み通りの動きになりました!
TStreamに関しては参考書など探してもう一回勉強しなおします。
どうもありがとうございました!
0253デフォルトの名無しさん
2005/07/28(木) 13:05:00例えば、上記のTStringListには、
LoadFromFile/SaveToFileもあれば、
LoadFromStream/SaveToStreamもある。
StreamのLoad/Saveを持ってるコンポーネント同士で自由にデータ受け渡しできます。
0254デフォルトの名無しさん
2005/07/28(木) 16:57:14Aとかの文字列が入ってるとエラーが起きるんですが
どうしたらいいんでしょうか?
0255デフォルトの名無しさん
2005/07/28(木) 17:03:14try exceptでエラー処理するか、StrToIntDefでエラー無視するか
0256デフォルトの名無しさん
2005/07/28(木) 17:18:58エラー処理は難しそうだったのでStrToIntDefを使ったらできました。
0257デフォルトの名無しさん
2005/07/28(木) 17:53:56CreateParamsをoverrideしてParams.Style xor WS_VSCROLLしてスクローラーを消して
自前で擬似スクローラーを描画しようと思ったけど
もっとエレガントな方法を教えてください
0258デフォルトの名無しさん
2005/07/29(金) 04:10:26計算開始ボタンとプログレスバー、ラベル、ステータスバーを使ってます。
while (i <= ntime_end-ntime_start) do
begin
for j:=1 to ntime_step do
begin
[...計算ルーチン...]
end;
output; //ファイル出力
i:=i+ntime_step;
ProgressBar1.StepIt;
StatusBar1.Panels[0].Text:='計算中...';
Label9.Caption:=IntToStr(i);
end;
プログレスバーは正常に動作してますが、ステータスバーとラベルの
更新がまったくされません。どちらも全処理終わってから表示されます。
リアルタイムで表示を反映させるにはどうしたらよいのでしょうか・・・。
0259デフォルトの名無しさん
2005/07/29(金) 04:23:14ステータスバーの方は、「計算中...」としか
表示しないなら、
ループに入る前に表示させて、「StatusBar1.Refresh」。
後はループ外で「終了」と表示させる。
ラベルの方は、ループの中に「application.ProcessMessages;」を
入れる。
こんなとこで良いのでは?
0260デフォルトの名無しさん
2005/07/29(金) 05:25:12完全におっしゃるとおりでした。
イメージしてたことがバッチリ実現できました!
こんな質問に答えてくださって本当にありがとうございます!
0261デフォルトの名無しさん
2005/07/29(金) 05:52:050262デフォルトの名無しさん
2005/07/29(金) 08:27:55重い処理は別スレッドでやったほうがいい。
余力があったらスレッド使う実装も挑戦してみれ
0263デフォルトの名無しさん
2005/07/29(金) 08:41:060264デフォルトの名無しさん
2005/07/29(金) 08:56:23インスコ出来ないんですが、MLの過去ログで調べたら
直すの大変ぽいのですが、皆さんどうしてます?
0265デフォルトの名無しさん
2005/07/29(金) 08:58:180266デフォルトの名無しさん
2005/07/29(金) 09:08:530267159
2005/07/29(金) 11:02:34BlowFish.dcu を生成するときに、範囲チェックがオンだと出るみたい
-----
1. コンパイラオプションの範囲チェックをオフ
2. BlowFish.pas を開いて、意味なく変更・保存する
3. コンパイル (BlowFish.dcu 範囲チェックなし版が作られる)
4. コンパイラオプションの範囲チェックを戻す
-----
他に BlowFish.pas に {$R-} を挿入してもいいんじゃないかとも思う
0269デフォルトの名無しさん
2005/07/29(金) 11:30:370270デフォルトの名無しさん
2005/07/29(金) 11:43:23procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Keyが特定文字以外 then
Key := #0;
end;
までは思いついたのですが例えば'C'〜'P'まで受け付けるとすれば
いちいち条件に書くのは面倒くさいです。
集合を使えばスマートに書けると思うのですがやり方教えて貰えないでしょうか
0271デフォルトの名無しさん
2005/07/29(金) 11:48:320272デフォルトの名無しさん
2005/07/29(金) 11:50:12if not (key in ['c'..'p'] )then key := #0;
こうでした^^
0273デフォルトの名無しさん
2005/07/29(金) 11:56:19出来ますた。ありがとうございます。
0274デフォルトの名無しさん
2005/07/29(金) 13:35:59Proxies.dcuはdesignide.dcpに移っただけだと思うよ。
What ever happened to Proxies.pas?
http://community.borland.com/article/0,1410,27717,00.html
0275デフォルトの名無しさん
2005/07/29(金) 14:54:11ボタンを押している間中何回も受けたい場合どうすればいいんだ?
0276デフォルトの名無しさん
2005/07/29(金) 15:15:19ボタンが上がってOnClickが呼ばれるから無理。
0277デフォルトの名無しさん
2005/07/29(金) 15:31:39OnMouseDownでタイマー起動
0278258
2005/07/29(金) 15:48:38確かに今作ってるやつでは処理が重すぎてよく固まります・・・。
別スレッドにした方がいいですよね。
やり方はまだ全然知りませんが、とりあえず今のバグ取りが終わったら
がんばってみます!
0279デフォルトの名無しさん
2005/07/29(金) 15:57:21メインループ中にGetAsyncKeyState等でマウス状態をもらって
if分で処理
0280ななしへたぐらま ◆XcB18Bks.Y
2005/07/29(金) 18:55:43そしてOnMouseUpでタイマー停止,タイマーのOnTimerに目的の処理….
書くまでもないかもしれませんが,一応補足します.
0281デフォルトの名無しさん
2005/07/29(金) 20:02:28当方delphi暦一週間未満です。どうかお願いします。
0282デフォルトの名無しさん
2005/07/29(金) 20:14:17自分で変数を確保するかTag使う
学校の課題なら前者がいいと思われ
0283デフォルトの名無しさん
2005/07/29(金) 20:28:42よろしければある程度コードエディタ?を書いて頂くことはできないでしょうか?
極端な資料不足のため見当もつかないのです。
0284デフォルトの名無しさん
2005/07/29(金) 20:54:42やっぱそうきたか
変数が何か分かってないなら学校の教科書読め
変数の宣言はDelphiのヘルプ読め
これ以上聞くな、他でマルチするな
以上
0285デフォルトの名無しさん
2005/07/29(金) 21:58:18極秘情報
0286246
2005/07/29(金) 22:13:47まだあんまり検証してませんが、FORTRANのコンソールアプリと
比べてDelphiって動作速いですね。苦労したかいがあった・・・。
アルゴリズムあんまり考えずにダラダラと書いた場合、
やっぱり高級言語では一般的にCが最速なんでしょうか。
Delphi好きなんで、このまま突き進みますが…。
0287デフォルトの名無しさん
2005/07/29(金) 22:23:40コンパイラ型の言語ならどれも大差ないと思う。
最適化の違いはあるだろうけど。
0288デフォルトの名無しさん
2005/07/29(金) 22:32:23動作速度、開発効率、おまけに習得の容易さ等申し分ないと思う
0289268
2005/07/29(金) 22:36:45すんません。
辞書引きながらページ見ました。
分かりませんでした。
どうしたらいいんでしょうか?。・゚・(ノД`)・゚・。
0290デフォルトの名無しさん
2005/07/30(土) 04:04:14起動時に画面からはみ出して操作不能になった場合の
対策って特に何もしないのが一般的なの?
0291デフォルトの名無しさん
2005/07/30(土) 05:23:04> 直すの大変ぽいのですが
記事をざっと読んだだけだが、一番簡単なパターンなら
Register関数を新しいパッケージ(設計時パッケージ)に移動して
DesignIntfとDesignEditorsと、Registerで使用するコンポーネントのユニットをuses。
(コンポーネント本体のユニットからはDsgnIntf のusesを消す)
designide.dcpとコンポーネント本体(実行時パッケージ)をrequiresに追加。
設計時パッケージをコンパイルしてインストール。
プロパティ・エディタやコンポーネント・エディタがある場合も同様
関連コードを探して、設計時パッケージに移動するだけ。
0292デフォルトの名無しさん
2005/07/30(土) 08:20:11アクティブ状態でAlt+Space > Mで移動すればいいだけじゃ?
0293デフォルトの名無しさん
2005/07/30(土) 08:57:18http://onigiri.s3.xrea.com:8080/delphi/index.php?%A5%BD%A1%BC%A5%B9%C3%D6%A4%AD%BE%EC#content_1_1
のTPDJButtonならできますよ
0294デフォルトの名無しさん
2005/07/30(土) 11:24:300295デフォルトの名無しさん
2005/07/30(土) 12:35:240296デフォルトの名無しさん
2005/07/31(日) 04:26:10例えば
image1 → image1 反転 → image1 元に戻るのように交互に表示させるにはどうしたらいいのでしょうか?
0297デフォルトの名無しさん
2005/07/31(日) 04:39:22のはどうすればできますか
0298デフォルトの名無しさん
2005/07/31(日) 04:45:25フック。
0299デフォルトの名無しさん
2005/07/31(日) 06:38:30普通に組めばそうなるはずだが
毎回元のイメージを反転して表示したりしてないか確認汁
0300デフォルトの名無しさん
2005/07/31(日) 09:26:320301デフォルトの名無しさん
2005/07/31(日) 09:59:06ンポと TabControl の境界が3ピクセルぐらいできてしまいます(タブの部分を除く)。
これをなくする方法があるでしょうか? TabControl には BorderStyle がないので
困っています。
0302デフォルトの名無しさん
2005/07/31(日) 10:50:33>>299 >>300くれた方ありがとうございます。 Image1.Refresh を使ったら反転してくれました。
0303デフォルトの名無しさん
2005/07/31(日) 12:17:53受取側のiniファイルが変更されたら、イベントが発生するようなプログラムは
可能ですか?
0304デフォルトの名無しさん
2005/07/31(日) 12:29:100305デフォルトの名無しさん
2005/07/31(日) 12:29:550306303
2005/07/31(日) 12:59:42ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200410/04100091.txt
本当はiniファイルを使わず↑を参考にして、SendDlgItemMessageで自作フォームにあるTEditに文字を入力させたいんです。ところが自作アプリのTEdit(edtNameというnameプロパティ)のコントロールIDを知る方法がわかりません。
コントロールIDってどうやれば調べられるのでしょうか。
0307ミ,,゚Д゚ミノ ◆A6VzDeLphI
2005/07/31(日) 13:25:59http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200503/05030108.txt
0308303
2005/07/31(日) 14:10:41を参考に、TEdit(edtNameというnameプロパティ)のコントロールIDを7777に変えました。
しかし、edtNameに値を入力できません。
s := 'OK';
SendDlgItemMessage(hMainWnd,7777,WM_SETTEXT,0,LongInt(PChar(s)));
SendDlgItemMessageの書き方が間違っているのでしょうか。
すみません。もう少しアドバイスを・・。
0309|Д゚彡 ◆A6VzDeLphI
2005/07/31(日) 14:42:06コントロールIDに脊髄反射でURL出しただけなので
アドバイスなんて全然ムリポ
手元の情報に
SendDlgItemMessage
でサーチかけてみましたが
サンプルプログラム PC-FAXの操作
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_PC_FAX.htm
第23章 ダイアログボックスの研究 その1
http://homepage2.nifty.com/Mr_XRAY/Halbow/Chap23.html
あとは
[Delphi-ML:1025] すいません、いっぱい質問して....
[Delphi-ML:20537] RE: Re: [Q] Application.MessageBoxの Close
[Delphi:59301] OpenDialog でファイル削除させたくない
[Delphi:73597] 他アプリ操作コンポーネント
このへんですかね。
MLログ閲覧は死んでるみたいですが、
0310303
2005/07/31(日) 14:44:58無理言ってすみません。
後は自力で解決します。
0311デフォルトの名無しさん
2005/07/31(日) 14:49:17> MLログ閲覧は死んでるみたいですが、
随分前に直ってるぞ。
0312デフォルトの名無しさん
2005/07/31(日) 15:08:210313デフォルトの名無しさん
2005/07/31(日) 15:24:04割り算に使ってるせいで空欄になったらエラー、あと間違えて文字などを
入力してもエラー、という状態です。
そのへんの例外処理はどうやったらいいんでしょうか?
0314デフォルトの名無しさん
2005/07/31(日) 15:30:15EConvertErrorをcatch
0315デフォルトの名無しさん
2005/07/31(日) 15:32:550316デフォルトの名無しさん
2005/07/31(日) 15:51:41DelphiはPascalからやるもんですか?いきなりGUI作れるもの?
0317デフォルトの名無しさん
2005/07/31(日) 16:15:58作れる。
もちろん最低限のObjectPascalの文法は覚える必要はあるが。
6Perなら落としたファイルの展開先にクイックスタート、言語ガイド、開発者ガイドのpdfが入ってるから前二つを読むと吉(チュートリアルのTActionManagerはperにないからTActionListで代用)
前者はPascal無視していきなりObjectPascalでいいかと。C++なりJavaなり触ったことがあるならすぐ覚えられる。
0318|Д゚彡 ◆A6VzDeLphI
2005/07/31(日) 16:51:44About Delphi
http://www2.big.or.jp/~osamu/Delphi/
0319303
2005/07/31(日) 19:43:06WinHnd : HWND; //ウィンドウのハンドル
begin
//自作ソフトを探す
WinHnd := FindWivar
WinHnd : HWND; //ウィンドウのハンドル
begin
//自作ソフトを探す
WinHnd := FindWindow('自作ソフトのパス', nil);
//自作ソフトをアクティブにする
SetForegroundWindow(WinHnd);
end;
自作ソフトがアクティブになった時に発生するイベントはありませんか?。
そこで処理をさせたいのですが。
メインフォームのActiveControl、 OnActivateでイベントが発生すると思ったのですが、
何も起こりませんでした。
0320303
2005/07/31(日) 19:44:30WinHnd : HWND; //ウィンドウのハンドル
begin
//自作ソフトを探す
WinHnd := FindWindow('自作ソフトのパス', nil);
//自作ソフトをアクティブにする
SetForegroundWindow(WinHnd);
end;
こちらになります
0321デフォルトの名無しさん
2005/07/31(日) 19:46:27Application.OnActivate (ApplicationEvents.OnActivate)
0322デフォルトの名無しさん
2005/07/31(日) 20:00:04( ゚Д゚)
0323303
2005/07/31(日) 20:00:27Application.OnActivate (ApplicationEvents.OnActivate) とは。
procedure TForm1.FormActivate(Sender: TObject);
begin
・・・この間の処理
end;
OnActivateで発生するイベントとは違うのですか?。
すみません。Application.OnActivateの使用例を教えていただければ・・。
0324デフォルトの名無しさん
2005/07/31(日) 20:05:06TForm.OnActivate はそのアプリ内でのアクティブウィンドウの変化に応答するイベント。
~~~~~~~~~~~~~~~~
TApplication.OnActivate/TApplicationEvents.OnActivate はそのアプリの所有するウィンドウがアクティブになった時に応答する。
>> 使用例
TApplicationEvents コンポ置いて普通にイベントハンドラ作る。
0325303
2005/07/31(日) 20:13:15TApplicationEventsを貼り付けて、イベントが発生しました。
判り易い説明有難うございました。
0326ななしへたぐらま ◆XcB18Bks.Y
2005/07/31(日) 20:27:58>>270-273
これだと[BackSpace]キーによる処理(キャレットの直前の文字を削除する)が無効になってしまいます.
また['c'..'p']だと'C'〜'P'が入力されたときに無効になってしまいます.
if not(Key in [#8, 'C'..'P', 'c'..'p']) then Key := #0 などとしなければなりません.
※#8がBackspaceを意味します.
>>283 = >>281
どうやら「『変数』って何?」っていうレベルみたいですね.
まずここで最初から順に『変数』のところまで勉強するよろし.
ttp://kakinotane.s7.xrea.com/delphi/d/toc.html
話はそれから.
#もしかしてガッコの先生は例題を出す前に変数についてちゃんと教えてくれなかったのでしょうか.
#もしそうならその先生が悪いと思います.
0327デフォルトの名無しさん
2005/07/31(日) 20:30:41教えてもらったことなんて一回もないな、先生の名前も顔も覚えてない
0328ななしへたぐらま ◆XcB18Bks.Y
2005/07/31(日) 21:30:40そもそもそれなら先生なんていらないのではないかと思うわけで.
でも現実にそんな先生があまりにも多いのでしょうね.
私の大学時代も同様でした.
>>313
Editコンポのテキストが変更されるたびに計算しているようなのでその前提で書きます.
以下,エディットコンポEdit1の文字列を数値に変換してForm1のInteger型フィールド変数FNumberに値を入れる場合の一例.
procedure TForm1.Edit1Change(Sender: TObject);
begin
try
{ 入力された文字列を数値に変換.
※StrToInt関数は変換に失敗するとEConvertError例外を生成する}
FNumber := StrToInt(Edit1.Text);
※計算などの処理
except
{ 変換に失敗したならそのことを表示し,Editコンポのテキストを元に戻す. }
on EConvertError do
begin
beep;
ShowMessageFmt('"%s"は整数にできないナリよ.', [Edit1.Text]);
Edit1.Undo;
end;
end;
end;
あとは数字以外の文字の入力をできないようにするのも有効かと思います.
>>270-273,326が参考になると思います.
0329デフォルトの名無しさん
2005/08/01(月) 09:41:30入力されない数値があるなら StrToIntDef というのもある
0330デフォルトの名無しさん
2005/08/01(月) 13:45:23四角い表みたいのがでるんですが、えらーですよね? これはなんですか?
0331デフォルトの名無しさん
2005/08/01(月) 14:04:15bmpを表示するのですが、どうも大きい画像を読み込んだ時に、四角い表見たいのがでるようです。
小さい画像だと大丈夫でした。
0332デフォルトの名無しさん
2005/08/01(月) 18:23:08どこかに画像をアップロードできませんか?
0333デフォルトの名無しさん
2005/08/01(月) 22:02:540334デフォルトの名無しさん
2005/08/02(火) 00:32:11例外捕まえきれない場合に表示される
0335デフォルトの名無しさん
2005/08/02(火) 09:17:590336デフォルトの名無しさん
2005/08/02(火) 09:25:39みなさん、ありがとうございます。
肛門ダイアログの意味はわかりませんが、かなりアホな質問したみたいなので、失礼しました。
CPUウィンドウなんですね。 メモリを増やせば出なくなるとかで出なくなるのかな?
0337デフォルトの名無しさん
2005/08/02(火) 09:34:13Windows自体ビットマップに弱いみたい。
メモリを節約するコンポを使うか、エラー時は処理出来ませんエラーダイアログ出すかしかないかも。
ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/FAQ.htm
0338デフォルトの名無しさん
2005/08/02(火) 10:03:47http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
0339デフォルトの名無しさん
2005/08/02(火) 10:54:54これをtrueにしたときとfalseにしたときの違いがまったく分かりません!
F1押してヘルプを読みましたがややこしく理解に苦しむ文章でよく分かりません。
テスト用プログラムを作って実際にtrue、falseにしたときの動作を
比較してみましたがまったく同じでした!
(GroupIndexプロパティを1にしたSpeedButtonを3つ使って実験しました)
一体何が違うのでしょうか! 気になって昼寝も出来ないのでどうかご教授下さい!
0340デフォルトの名無しさん
2005/08/02(火) 11:04:41trueだとすべてのボタンをOFFにできる。
0341デフォルトの名無しさん
2005/08/02(火) 11:13:28あああぁぁぁぁあああ!! そういうことだったんですか! やっと分かりました!!
同じボタンを二回連続で押せば違いが分かったのか、盲点でした!
どうもありがとうございました!!!!!!!!
0342ななしへたぐらま ◆XcB18Bks.Y
2005/08/02(火) 14:18:41ここのらいぶらりのTBigBitmapを使うのが手っ取り早そうですね.
"Delphi Graphic Secrets"によれば
Windowsの種類によってはいくらメモリを足しても駄目みたいですし.
0343デフォルトの名無しさん
2005/08/02(火) 20:20:10年はしょうがないか・・・
0344デフォルトの名無しさん
2005/08/02(火) 20:22:410345デフォルトの名無しさん
2005/08/02(火) 22:09:500346デフォルトの名無しさん
2005/08/02(火) 23:15:480347デフォルトの名無しさん
2005/08/02(火) 23:34:18レスくれた方ありがとうございます。
BigBitmap使ってみます。
"Delphi Graphic Secrets" ← まったく手に入りません。(;_; 誰かください。
0348デフォルトの名無しさん
2005/08/03(水) 00:21:59( ゚Д゚) ハァ?
0349デフォルトの名無しさん
2005/08/03(水) 18:25:260350デフォルトの名無しさん
2005/08/04(木) 01:02:29*.dpr,*.pas,*.dfm,*.dof,
あと必要に応じて*.icoとか*.bmpとか、この辺で抜けや漏れはないですかね?
0351デフォルトの名無しさん
2005/08/04(木) 01:09:561.プロジェクトファイルをダブルクリックして起動する。
2.別の「何も入ってないフォルダ」に全部保存する。
これで必要なのは入ったと思うけど、どうか。
0352デフォルトの名無しさん
2005/08/04(木) 01:15:200354デフォルトの名無しさん
2005/08/04(木) 08:19:40以前ここで紹介されたmadコンポーネントを使っているのですが、UpdateResourceWの使い方が
よく分かりません。簡単なサンプルを書いていただけないでしょうか。。
0355デフォルトの名無しさん
2005/08/04(木) 08:46:41ヘルプ見ろよバカ
0356デフォルトの名無しさん
2005/08/04(木) 09:03:56てかまたこいつかw最近見ないと思ったら、とうとう痺れを切らしたようだなw
てかまだ出来てなかったのか(´・ω・`)
0357デフォルトの名無しさん
2005/08/04(木) 15:27:440358デフォルトの名無しさん
2005/08/04(木) 15:43:340359デフォルトの名無しさん
2005/08/04(木) 15:58:52マジ笑ったw
0360デフォルトの名無しさん
2005/08/04(木) 16:49:28収めようと思っています。そこで、
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200301_03010018.html
ここにあるpgetを使ってみました。
procedure TForm1.Button1Click(Sender: TObject);
begin
if Clipboard.HasFormat(CF_BITMAP) then
begin
Image1.Picture.Assign(Clipboard);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var point:TPoint;
r,g,b:byte;
begin
point.X:=0;
point.Y:=0;
pget(Image1.picture.Bitmap,point,r,g,b);
showmessage('R='+inttostr(r)+' G='+inttostr(g)+' B='+inttostr(b));
end;
Button1でビットマップをペーストできますが、Button2を押した時点で
貼り込んだ画像が消えて常にRGBともにゼロの値しか得られません。
Button2でペースト画像を取得するにはどうしたらよいでしょうか。
0361デフォルトの名無しさん
2005/08/04(木) 17:01:34'A□□2:B□12:C123'(□は半角スペース)
という文字列を作りたいんだけど、簡単に作る方法あります?
0362デフォルトの名無しさん
2005/08/04(木) 17:07:28Button1Click内の
Image1.Picture.Assign(Clipboard);
を
Image1.Picture.Bitmap.Assign(Clipboard);
としてみてはどうか。
0363デフォルトの名無しさん
2005/08/04(木) 17:12:37format
0364デフォルトの名無しさん
2005/08/04(木) 17:15:23Format('A%3d:B%3d:C%3d',[a,b,c])?
0365デフォルトの名無しさん
2005/08/04(木) 17:22:01おっしゃるとおりで、一瞬で解決しました。本当にありがとうございました!
もうひとつ後学のために、この”Bitmap”によって処理が
どのように変わっているか教えて頂けないでしょうか?
0366デフォルトの名無しさん
2005/08/04(木) 17:28:37助かりました。
0367デフォルトの名無しさん
2005/08/04(木) 18:53:16ビットマップに大量アクセスする場合はpget/pset使わずにScanlineプロパティ使った方がいい。
Pset/Pgetは破滅的に遅い。
0368デフォルトの名無しさん
2005/08/04(木) 19:24:35TImageのPictureってのが複数フォーマットを対応しているがために、
Assignコールされても何をして良いか分からないから何もしない。
で、Picture.Bitmap.Assignコールされてやっとこさビットマップをアサインするルールになってる。
0369デフォルトの名無しさん
2005/08/04(木) 23:02:42どんなふうにするの?
0370デフォルトの名無しさん
2005/08/04(木) 23:05:480371デフォルトの名無しさん
2005/08/04(木) 23:07:02ありがとん
0372デフォルトの名無しさん
2005/08/04(木) 23:10:190373デフォルトの名無しさん
2005/08/04(木) 23:11:07VBSのスレで質問してください
0374デフォルトの名無しさん
2005/08/04(木) 23:15:18MsgBox"(-_-;)う〜ん?"
こまった。
0375デフォルトの名無しさん
2005/08/04(木) 23:20:420376デフォルトの名無しさん
2005/08/04(木) 23:22:26分からないけど死滅しないで欲しいなぁ。
0377デフォルトの名無しさん
2005/08/04(木) 23:29:51IBQueryを使う場合は、
IBQuery1.Active := False;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('○○○');
IBQuery1.Active := True;
IBSQLを使う場合は、
IBSQL1.Close;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add('○○○');
IBSQL1.ExecQuery;
これでOKですか?
0378デフォルトの名無しさん
2005/08/05(金) 13:17:16検索して探してたんですが無いっぽいんです。
サービス立てるとかじゃなくてもっとスマートな方法ないでしょうか?
0379デフォルトの名無しさん
2005/08/05(金) 15:30:36何を判別したいの?シャットダウン・再起動・ログオフをそれぞれ判別したいの?
それとも終了されるかどうかを判別したいの?
0380デフォルトの名無しさん
2005/08/05(金) 16:18:280381デフォルトの名無しさん
2005/08/05(金) 18:37:40なんかメッセージが飛んでくるはずだけど
0382デフォルトの名無しさん
2005/08/05(金) 20:47:40詳しくはここ嫁
http://homepage1.nifty.com/kazubon/progdoc/tclock/end.html
0383デフォルトの名無しさん
2005/08/05(金) 20:52:26あとこれもか。
0384ななしへたぐらま ◆XcB18Bks.Y
2005/08/05(金) 21:13:37ぐぐってみたらこんなのが
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200308_03080048.html
WM_ENDSESSIONメッセージを処理するのですね.
0385ななしへたぐらま ◆XcB18Bks.Y
2005/08/05(金) 21:14:310386デフォルトの名無しさん
2005/08/05(金) 21:26:080387デフォルトの名無しさん
2005/08/06(土) 02:00:592kは駄目なのか解決されてるの見たこと無いです。
0388デフォルトの名無しさん
2005/08/06(土) 13:10:01例えば実行直後にレジストリとかに記録してる何かとかで裏技的にでも
わかんないのだろうか。
0389デフォルトの名無しさん
2005/08/06(土) 16:06:190390デフォルトの名無しさん
2005/08/06(土) 17:41:230391デフォルトの名無しさん
2005/08/06(土) 22:06:310392デフォルトの名無しさん
2005/08/06(土) 22:49:29StringGridのデータをSaveToFileを使って、ユーザーが設定したファイル名を使って保存するという事はできるのでしょうか?
例えば、
ユーザーがEdit1にhozonと入れた時に、
begin
StringGrid1.SaveToFile(Edit1.Text)
end;
という記述で毎回違うファイルに保存する事は可能でしょうか?
心やさしい方、御教授よろしくお願いします!
0393デフォルトの名無しさん
2005/08/06(土) 22:50:370394デフォルトの名無しさん
2005/08/06(土) 22:51:180395デフォルトの名無しさん
2005/08/06(土) 22:52:07やってから質問しなよ。
0396デフォルトの名無しさん
2005/08/07(日) 14:21:51マウスカーソルがOKボタンに移動してくれないバグを発見したのですがどうすれば治るでしょうか?
0397デフォルトの名無しさん
2005/08/07(日) 14:29:120398デフォルトの名無しさん
2005/08/07(日) 14:32:15詳しく
0399デフォルトの名無しさん
2005/08/07(日) 14:43:15だからこそTButtonにDefaultというPropertyが存在している
0400デフォルトの名無しさん
2005/08/07(日) 15:10:36Delphiで配置したOKボタンの場合はそれが動作しない
という意味じゃまいか
たぶんだけど
0401デフォルトの名無しさん
2005/08/07(日) 19:06:56マウスのプロパティだったか
0402デフォルトの名無しさん
2005/08/07(日) 19:11:040403デフォルトの名無しさん
2005/08/07(日) 19:16:28また、各プロパティの変更部分はどれとどれですか?
0404デフォルトの名無しさん
2005/08/08(月) 15:19:07procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit1.SelectAll;
end;
としても、文字列は選択されません。なんででしょ?
0405デフォルトの名無しさん
2005/08/08(月) 15:39:55begin
Edit1.SelectAll;
Edit1.Refresh;
end;
0406デフォルトの名無しさん
2005/08/08(月) 16:00:15Edit1EnterじゃなくてEdit1ClickでやればOK
0407デフォルトの名無しさん
2005/08/08(月) 17:50:00ありがとう!
0408デフォルトの名無しさん
2005/08/08(月) 21:23:45help難し杉
0409デフォルトの名無しさん
2005/08/08(月) 21:35:27begin
// todo:ここにコードを書く
end;
0410デフォルトの名無しさん
2005/08/08(月) 21:43:410411408
2005/08/08(月) 22:16:24うーん・・・
>>410
StringGridのセルに入ってる名前のデータです
例えば、StringGrid.csv[1,1]にはヤマダ、[1,2]にはタナカ、[1,3]にはスズキ・・・(以下ずっと続く)
といった具合の1列目のデータを、綺麗に50音順でソートしたいのです
あほな質問でスンマセン・・・
0412410
2005/08/08(月) 23:32:30時間が空いたので書いてみた。ソートは文字列リストに任せる手抜き処理。
SortGrid(対象のStringGird, ソートカラム�ajで呼び出す。件数が多くなると遅くなりそう。。。
改行が多いって怒られたのでちょっと詰めてカキコするから見づらいのは勘弁。
procedure SortGrid(oGrid: TStringGrid; iSortCol: Integer);
type PCellData = ^TCellData; TCellData = record sData:array of AnsiString; end;
var oSortList:TStringList; iCol, iRow, iIndex:Integer; pData:PCellData;
begin
oSortList := TStringList.Create;
try
for iRow := oGrid.FixedRows to oGrid.RowCount - 1 do begin
New(pData); SetLength(pData^.sData, oGrid.ColCount);
for iCol := oGrid.FixedCols to oGrid.ColCount - 1 do
pData^.sData[iCol] := oGrid.Cells[iCol, iRow];
oSortList.AddObject(oGrid.Cells[iSortCol, iRow], TObject(pData));
end;
oSortList.Sort;
for iIndex := 0 to oSortList.Count - 1 do begin
pData := PCellData(oSortList.Objects[iIndex]); iRow := oGrid.FixedRows + iIndex;
for iCol := oGrid.FixedCols to oGrid.ColCount - 1 do
oGrid.Cells[iCol, iRow] := pData^.sData[iCol];
Dispose(pData);
end;
finally
oSortList.Free;
end;
end;
0413408
2005/08/09(火) 00:02:29わざわざありがとうございます!
ソートっておっそろしく大変な作業だったんですね・・・
てっきり何かしらの関数でもあるものかと思ってました。
ソース睨んで勉強してみます、どうもでした!
0414410
2005/08/09(火) 00:16:13先のソースは
1) Grid の内容を TStringList にコピー
2) TStringList の Sort メソッドを呼び出してソート
3) TStringList の内容を Grid に書き戻し
という構成で、ソート部分は TStringList のメソッドに任せているだけで
ソースの大部分は 1) と 3) の処理なんだわ。
そんなわけで、先のソース睨んで勉強と言われると本質的な部分(ソート)の
勉強はできないんでちょっとツライ。
できればソート関連についてはググって勉強してくださいまし。
0415デフォルトの名無しさん
2005/08/09(火) 00:18:37ありえない
そんなのがゆるされるのは前世紀まで
0416デフォルトの名無しさん
2005/08/09(火) 01:05:530417デフォルトの名無しさん
2005/08/09(火) 01:06:570418デフォルトの名無しさん
2005/08/09(火) 01:12:49書いちゃったイベントの内容(begin〜endの中だけ)を
選択して消す。
後は「構文チェック(S)」すれば、イベントの記述自体が消えます。
ほっといても、イベントの内容が空なら問題無し(コンパイル時に消えるし)。
0419デフォルトの名無しさん
2005/08/09(火) 01:34:05ありがとうございます。
前に下手に消してエラー祭りになっちゃったことがあるんで・・・。
助かりました。
0420404
2005/08/09(火) 07:04:30Edit は Hight を 24 に設定しても実行時には 20 に戻ってしまいます。またフォ
ントサイズを変えれば Hight は自動的に変化してしまいます。
フォントサイズと Hight を思い通りに(たとえば FontSize = 9、Hight = 24 のよ
うな) 指定はできないのでしょうか?
0421デフォルトの名無しさん
2005/08/09(火) 07:59:46なんだ貴様やる気あるのか!!
フォーム生成時に
Edit1.Font.Size := 6;
Edit1.Height := 30;
とかやっとけ糞ぼけちんかすまんちょすv^−^v
0422410
2005/08/09(火) 08:32:16自己フォロー。今更ながらTStringGridにCols, Rowsプロパティなんてものがあることに
気づいてしまった。あんな無駄なことをしなくてももっと簡単に書けるぢゃないか。
恥ずかしいソースを晒してしまったorz...朝から鬱になりそうなので修正版。
procedure SortGrid(oGrid: TStringGrid; iSortCol: Integer);
var
oSortList, oCellData:TStringList;
iRow:Integer;
begin
oSortList := TStringList.Create;
try
for iRow := oGrid.FixedRows to oGrid.RowCount - 1 do begin
oCellData := TStringList.Create;
oCellData.Assign(oGrid.Rows[iRow]);
oSortList.AddObject(oGrid.Cells[iSortCol, iRow], TObject(oCellData));
end;
oSortList.Sort;
for iRow := oGrid.FixedRows to oGrid.RowCount - 1 do begin
oCellData := TStringList(oSortList.Objects[iRow - oGrid.FixedRows]);
oGrid.Rows[iRow].Assign(oCellData);
end;
finally
while oSortList.Count > 0 do begin
TStringList(oSortList.Objects[0]).Free;
oSortList.Delete(0);
end;
oSortList.Free;
end;
end;
0423デフォルトの名無しさん
2005/08/09(火) 12:57:20maelto:を使い、プログラム内で件名も埋め込んで起動させていますので、フォーム
キャプションは予めわかっています。
OEのメーラーや、Outlook2003のWord2003で表示するにチェックを入れた場合のメー
ラーの監視はできますが、Outlook2003のWord2003で表示するにチェックを外し、
html形式にしたメーラーの場合、
l_Han4 := FindWindow(nil,PChar( '無題 - メッセージ(HTML形式)'));
で、監視ができません。タイマーを使って、監視していいますが、帰ってくるハンド
ルは0です。
キャプション内の「(HTML形式)」を全角湖に変更して調べていますがハンドルは0で
す。
キャプション設定が悪いのが原因かと思っていますが、いっそうこと現在起動されて
いるフォームキャプション名を収得する方法はないかと思っています。直接Delphiに
は関係ないかもしれませんが、現在起動されているフォームキャプション名を収得す
る方法をご存じの方みえましたら、アドバイスしていただけますよう、宜しくお願い
致します。
0424デフォルトの名無しさん
2005/08/09(火) 12:58:010425デフォルトの名無しさん
2005/08/09(火) 12:59:39Delphi-MLにまったく同じ文言の投稿があったのだけど釣り?
0426デフォルトの名無しさん
2005/08/09(火) 13:36:28明日休みだし風呂で待ってようかな。
一緒に入る?
洗い合う?
なんてね。
0427デフォルトの名無しさん
2005/08/09(火) 13:40:460428デフォルトの名無しさん
2005/08/09(火) 16:38:06AutoSizeプロパティを False にしたらどーなる?
0429デフォルトの名無しさん
2005/08/09(火) 23:17:2710M以上のバイナリのデータを書き換えたいのですけど
BlockReadだと用意した配列 Var F_Data :Array[0..90000000]でエラー出ちゃいます。
一気に大きなファイル内容を読み書きする方法とか、メモリに入れなくても、直接編集できるような
なるべく簡単な方法ないでしょうか。よろしくお願いします。
※ポインタ使えません。ユーザが定義する関数も使ったことないです・・・
0430デフォルトの名無しさん
2005/08/09(火) 23:54:27TFileStreamというそういう目的にぴったりのオブジェクトが存在する。
メモリに読み込むような作業をしなくても
ファイルの任意の場所から任意の長さのデータが読み書きできる。
しかしvar変数の意味を理解していないと使うのが難しい罠。(ある意味ポインタより間際らしい)
ちなみにオブジェクトって解る?解らないならそこから勉強すべきだ。
0431デフォルトの名無しさん
2005/08/10(水) 00:01:02ファイルをメモリ上の配列のように扱うことができるから読み書きのコードがシンプルになる。
0432デフォルトの名無しさん
2005/08/10(水) 01:14:33今は0から1500読んで1000書く
1000から2500読んで2000書くとやっていますが
どうしても跨ぐデータ(500以上のデータ)が出てしまって手も足もでませんでした。
両方ともしらべてがんばってみます。
どうもありがとうございました!! _(_ _)_
オブジェクト・・・コンポーネントのことかな・・・?
なんかそれ以外にも難しい説明があったようななかったような・・^^;
0433デフォルトの名無しさん
2005/08/10(水) 01:16:560434デフォルトの名無しさん
2005/08/10(水) 01:22:57ああそうだ。。。確か車がオブジェクトで、デザインがプロパティで、メソッドが各部品の機能でってあったような・・・
あとクラスっていうのもありますよね-_-;
0435デフォルトの名無しさん
2005/08/10(水) 02:57:46ここ何時からネタスレになったの?
0436デフォルトの名無しさん
2005/08/10(水) 05:18:45お前がネタだろwオブジェクトが手続きじゃなくて何だw
0437デフォルトの名無しさん
2005/08/10(水) 05:52:42それから先は談話室でやれ。
0438デフォルトの名無しさん
2005/08/10(水) 08:10:000439デフォルトの名無しさん
2005/08/10(水) 10:07:31禁止するにはどうしたらいいのでしょ?
0440デフォルトの名無しさん
2005/08/10(水) 10:10:010441デフォルトの名無しさん
2005/08/10(水) 12:49:00^−^
0442デフォルトの名無しさん
2005/08/10(水) 14:25:37{$I-}
処理1
処理2
{$I+}
処理3
これはどういう意味なのでしょうか?
宜しくお願いします。
0443デフォルトの名無しさん
2005/08/10(水) 14:55:23つ ヘルプ
0444デフォルトの名無しさん
2005/08/10(水) 16:31:02コメント
0445デフォルトの名無しさん
2005/08/10(水) 18:54:43stringGrid のソートをしたくて、けど自分でロジックが組めなくて
ttp://forum.nifty.com/fdelphi/faq/00084.htm
こんなん見つけました。
非常に便利そうなんですが、使ってみると何も入力されていない列が一番上に来てしまいます。
(stringGridの一番下で文字列はちゃんとソートされてる。)
これを防いで入力のない列は無視するようにするにはどうしたらいいのでしょうか?
よろしければご教授ください。ペコリ
0446445
2005/08/10(水) 19:03:41ただ、後学のためにリンク先のコードをどう改変すれば文字列だけをソートできるのか、
教えていただけると助かります。
0447デフォルトの名無しさん
2005/08/10(水) 20:19:48・St.Sort→St.CustomSortに変更して自前でソート用比較関数を書く。
・St.Sortの前後を、St内の空文字←→大きな文字コード(例:#$FF#$FF等)に変換、逆変換処理で挟む
パフォーマンスを考慮すれば前者の方がいいか。
まだ他にも方法はあるかもしれないがパッと思いついたのはこれぐらい。
0448ななしへたぐらま ◆XcB18Bks.Y
2005/08/10(水) 21:13:41それは $I というコンパイラ指令です.
ヘルプにある $I の説明がわかりにくいので説明しますが,
ソースコードに{$I-}というコンパイラ指令があると
それ以後のコードはファイルの読み書きに関する手続き(ResetやRead, BlockReadなど)で
読み書きの処理に失敗(ファイルがない,ディスクがいっぱい,など)したときに
EInOutError例外を生成しなくなります.
この場合,これらの手続きごとにIOResult関数を参照して
正しく読み書きできたかどうかを調べなければなりません.
{$I+}の場合は逆に失敗時に上記の例外を生成します.
どちらも指定しない場合はプロジェクトオプションの『I/Oチェック』をチェックしているかどうかによります.
☆ ☆
この指令は恐らく過去に書かれたPASCALのソースコードとの互換性を取るためにものだと思われます.
Delphiで新規にプログラムを書く場合は使う必要はありません.
お手持ちのソースコードの処理1と処理2には恐らくIOResult関数でのチェックが入っていると思います.
もしなければ読み書きに失敗しても無視するだけの極悪手抜きコードかもしれません.
0449442
2005/08/10(水) 21:31:25大変参考になりました。ありがとうございます。
ちなみに、
>お手持ちのソースコードの処理1と処理2には恐らくIOResult関数でのチェックが入っていると思います
、、、入ってませんでした。
極悪手抜きコードつかまされたようですorz.............
0451デフォルトの名無しさん
2005/08/11(木) 01:16:40一応、今のところ物凄い量のifを使って
if S = 'Hoge' then ....
else if S = 'HogeHoge' then ...
else if S = 'HogeHogeHoge' then...
↑こんな風に処理していますが、ソースが凄く汚くて困ってます。
0452デフォルトの名無しさん
2005/08/11(木) 01:17:46クラス作ったら?
0453デフォルトの名無しさん
2005/08/11(木) 01:19:200454デフォルトの名無しさん
2005/08/11(木) 01:25:39無い。
しかしIf文の中身次第では最適化の余地はある。
少し晒してみれ。
0455デフォルトの名無しさん
2005/08/11(木) 01:30:47前後の処理にもよるけれどこんな方法も一応あり。
List := TStringList.Create;
List.Add('Hoge');
List.Add('HogeHoge');
List.Add('HogeHogeHoge');
case List.IndexOf(S) of
0: ShowMessage('Hoge');
1: ShowMessage('HogeHoge');
2: ShowMessage('HogeHogeHoge');
else
ShowMessage('Ohter');
end;
0456デフォルトの名無しさん
2005/08/11(木) 01:33:17procedure Hoge(Meirei: String);
begin
Meirei:= AnsiLowerCase(Meirei);
if Meirei = 'meirei1' then
ShowMessage('命令1が呼ばれた')
else if Meirei = 'meirei2' then
ShowMessage('命令2が呼ばれた');
end;
以下、延々と else if が続きます。
TEdit等にユーザーが入力した文字列を命令として認識し、
その命令に応じて予め用意した処理をしたいと思ってます。
しかし、用意した命令が30を超えた辺りからコードに虚しさを感じ始めました。
0457デフォルトの名無しさん
2005/08/11(木) 01:37:28文字列とその処理ハンドラの組を作り
ループで回してやるのが一般的かな。
文字列一致の判定には2分探索やハッシュなんかを使う手もあるけど。
0458デフォルトの名無しさん
2005/08/11(木) 01:40:20HashMap+MethodPointer
最近、JavaベッタリなんでDelphiの文法を忘れ気味なんだが、Delphiは
インスタンスメソッドのアドレスを普通に取れたはず。
だから、後はそれをHashMapに登録しておいて必要な時に呼び出すだ
け。パフォーマンスの点でも効率いいし、処理の追加や削除も楽々。
0459デフォルトの名無しさん
2005/08/11(木) 01:52:32とりあえず455さんのようにTListでごりごりやってみます。
ありがとうございました。
0460453
2005/08/11(木) 01:54:43命令クラスを作成。
TStringList.AddObjectでKeyの文字列と命令クラスを追加。
命令クラスの呼び出しはTStringList.Objects[TStringList.IndexOf(文字列)];でどうぞ。
0461デフォルトの名無しさん
2005/08/11(木) 06:20:400462デフォルトの名無しさん
2005/08/11(木) 06:50:24Memoコンポーネントに表示させたいのですがどういったコードを書けばいいのでしょうか?
0463デフォルトの名無しさん
2005/08/11(木) 07:42:29TreeViewのMouseUpイベントで
1. TreeView.GetNodeAtメソッドを使ってクリックされたノード特定
2. ノードからテキストファイル名取得
3. Memo.Lines.LoadFromFileメソッドを使ってテキストファイル読み込み
TreeViewのノードとテキストファイル名の関連付けをどうやっているのか判らないので(Node.Text or Node.Data?)
2. の処理は自分で考えてね。
0464デフォルトの名無しさん
2005/08/11(木) 10:57:15ないが、その TShellTreeView はそれ以前からあった伊藤隆志氏の TShellTreeView
(ttp://www.bekkoame.ne.jp/~itotaka)とほとんど同じだと聞いたことがあるので、
もしそうなら
procedure TFolderOpen.ShellTreeView1ShDragDrop(Sender: TObject;
const DragObject: TShellDragObject; Node: TTreeNode; Shift: TShiftState;
X, Y: Integer; var DefaultAction: Boolean);
begin
MessageDlg('フォルダーの移動はできません!',mterror, [mbok], 0);
DefaultAction := False;
end;
でいけるはず。
------
2つのTShellTreeViewがほとんど同じということは伊藤氏が Borland にソースを
提供したのだろうか?
0465デフォルトの名無しさん
2005/08/11(木) 17:30:18一つのデータをロードしたら、他のフォームにあるデータもロードしたいんですがやり方が分かりません・・・。
同じ様にセーブも一回でしたいです。
どなたかよろしくお願いします!
ちなみにDelphi4 proffesionalです。
0466デフォルトの名無しさん
2005/08/11(木) 17:34:11もう少し具体的にお願いします。
0467デフォルトの名無しさん
2005/08/11(木) 17:34:19すいません、まったく意味がわかりません。
0469デフォルトの名無しさん
2005/08/11(木) 17:49:47わたしはLoadFromFileとオープンダイアログコンポーネントで、ファイルを選択して読み込む事はできるんですが、そのファイルに関連したファイルも一度に読み込みたいんです。
セーブダイアログで選択して保存する際も、他の関連するファイルも一度にセーブしたいです。
分かりにくくてごめんなさい(>_<)
0470デフォルトの名無しさん
2005/08/11(木) 18:00:31ExtractFileDir(OpenDialog1.FileName) でフォルダパスに変換して
それに好きなファイル名足してロードしてください
関数の名前うろ覚え
0471デフォルトの名無しさん
2005/08/11(木) 18:17:27OpenDialog1.FileName :='';
if OpenDialog1.Execute then
ロードする位置.LoadFromFile(OpenDialog1.FileName);
のあとにExtract 〜
と記述すればいいんですか?
0472デフォルトの名無しさん
2005/08/11(木) 18:55:09AFileDir: string;
(中略)
// OpenDialog1.FileName :=''; 要らない
if OpenDialog1.Execute then
begin
ロードする位置.LoadFromFile(OpenDialog1.FileName);
AFileDir := ExtractFileDir(OpenDialog1.FileName);
別のロードする位置.LoadFromFile(AFileDir + '別のファイル名');
別のロードする位置その2.LoadFromFile(AFileDir + '別のファイル名その2');
end;
後は自分でがんばって
0473デフォルトの名無しさん
2005/08/11(木) 19:00:06ないのか? 答えようがないぞ。
たとえば拡張子がtxtである普通のテキストファイルなら
SL :TStringList;
SL := TStringList.Create;
try
for i := 0 to OpenDialog1.Files.Count - 1 do
begin
SL.LoadFromFile(OpenDialog1.Files[i]);
//・・・・SLを処理する
end;
finally
SL.Free;
end;
0474デフォルトの名無しさん
2005/08/11(木) 19:07:57ファイルはストリンググリッドです。
試してみて、だめだったらまた質問します☆
0475デフォルトの名無しさん
2005/08/11(木) 19:16:370476デフォルトの名無しさん
2005/08/11(木) 22:18:54ボタンをクリックすると、直接プリンターから出力されるといったかんじでやりたいです
0477デフォルトの名無しさん
2005/08/11(木) 23:21:50procedure TForm1.Button1Click(Sender: TObject);
var
hDWnd:THandle;
DC:HDC;
DRect:TRect;
DCanvas:TCanvas;
begin
hDWnd := GetDesktopWindow;
GetWindowRect(hDWnd,DRect);
DC := GetDC(hDWnd);
DCanvas := TCanvas.Create;
DCanvas.Handle := DC;
Self.Canvas.CopyRect(Self.ClientRect,DCanvas,DRect);
ReleaseDC(hDWnd,DC);
DCanvas.Free;
end;
ボタン貼り付けてこのコード実行してみれ。
Self(この場合Form1)のかわりにTPrinterオブジェクトを使えば印刷できるんじゃないかな?
0478デフォルトの名無しさん
2005/08/12(金) 00:48:260479デフォルトの名無しさん
2005/08/12(金) 05:03:570480デフォルトの名無しさん
2005/08/12(金) 05:30:50なかったらウィンドウメッセージを察知してがんばれ
0481デフォルトの名無しさん
2005/08/12(金) 08:26:02TopLeftChangedというメソッドをオーバーライドすれば出来る
0482デフォルトの名無しさん
2005/08/12(金) 08:47:45これっといって用途が思い浮かばないんだが。
0483デフォルトの名無しさん
2005/08/12(金) 09:14:36思い浮かばないなら黙っててください
0484デフォルトの名無しさん
2005/08/12(金) 09:33:120485デフォルトの名無しさん
2005/08/12(金) 10:15:11自分は楽だしGUIだからTortoiseProc.exe呼んでるけど。
0486デフォルトの名無しさん
2005/08/12(金) 10:32:42SubversionのEXEにパラメータを送るだけじゃ駄目なのかな?
0487デフォルトの名無しさん
2005/08/12(金) 10:38:180488486
2005/08/12(金) 10:46:42なんか見つからないのですが orz
0489デフォルトの名無しさん
2005/08/12(金) 17:37:55for i := 0 to memo1.Lines.Count-1 do
begin
p := PChar(memo1.Lines[i]);
if p^ = '@' then...
なんてやってたんですがこのやり方はどうなのかなと思ったので。
0490デフォルトの名無しさん
2005/08/12(金) 18:01:40でいいだろ。p^なデリファレンスよりは速い。
0491デフォルトの名無しさん
2005/08/12(金) 18:35:28: if Length(memo1.Lines[i])>0 then
: if memo1.Lines[i][1]='@' then ・・・
0493デフォルトの名無しさん
2005/08/12(金) 19:49:03s := '';
c := PChar(s)^;
でc = #0になることが保証されているからLengthのチェックは必要ない。
だから
c := PChar(Memo1.Lines[i])^;
if c = '@' then ...
で桶。
0494デフォルトの名無しさん
2005/08/12(金) 22:05:15USBから232Cへの変換ケーブル使った通信って、
通信がとぎれがちになる?
0495デフォルトの名無しさん
2005/08/13(土) 01:03:070496デフォルトの名無しさん
2005/08/13(土) 02:31:200497デフォルトの名無しさん
2005/08/13(土) 11:06:15列や行の幅を変更したときにそれを通知するイベントを発生させたいのですが、
どうすればいいのでしょうか?
0498デフォルトの名無しさん
2005/08/13(土) 11:36:27ColWidthsChanged と RowHeightsChanged をオーバーライド、かな
0499497
2005/08/13(土) 11:42:110500デフォルトの名無しさん
2005/08/13(土) 18:17:370501デフォルトの名無しさん
2005/08/13(土) 18:24:560502デフォルトの名無しさん
2005/08/13(土) 18:25:33ありがとう。
0503デフォルトの名無しさん
2005/08/13(土) 18:35:560504デフォルトの名無しさん
2005/08/13(土) 18:37:220505デフォルトの名無しさん
2005/08/13(土) 20:35:00http://homepages.borland.com/strefethen/index.php?pagename=Main.Delphi6
0506494
2005/08/13(土) 22:15:010507デフォルトの名無しさん
2005/08/13(土) 22:19:28スレ違いだが…
速度が速過ぎるんじゃね?
0508デフォルトの名無しさん
2005/08/16(火) 05:50:55稀に for 文の挙動がおかしくなります。
for ps := psA to psB do // ps は列挙型
としても実行してみると
for ps := psB + 1 downto psA + 2 do
のような動作になってしまう事があります。
ならない場所は何度実行してもなりませんが、なる場所は何度実行しても上記のようになってしまいます。
カウンタ変数に Integer を使ったり、while 文を使えば問題なく動くのですが…
何が原因なのでしょうか?
0509デフォルトの名無しさん
2005/08/16(火) 05:58:43for i := n downto m doに置き換えられることはFAQだけど
計算結果が異なるような形に置き換えられることはないよ。
0510508
2005/08/16(火) 06:19:52psCount: array[psA..psB] of Integer;
for ps := psA to psB do // psA が最初の、psBが最後の要素
begin
Inc(Result.foo, psCount[ps] div 3); // ココにブレークポイント
Inc(Result.bar, psCount[ps] mod 3 div 2);
end;
ブレークポイント置いて、ps を覗くと範囲外の値になっています。
配列のインデックスにそのまま使っているので変なことになってしまうんです。
0511デフォルトの名無しさん
2005/08/16(火) 07:48:53自分のコードを疑ってみれ。それから509氏のも考慮して。
0512デフォルトの名無しさん
2005/08/16(火) 07:58:450513デフォルトの名無しさん
2005/08/16(火) 11:38:55結果が変わるとも思えないけど
0514508
2005/08/16(火) 18:15:57結果的に正常に動いていました。
デバック関連の機能で覗くと最適化は考慮されないんですね。
失礼しました。
0515デフォルトの名無しさん
2005/08/16(火) 22:21:39Button1を押したらHoge.dllからアドレスをグローバル変数に読み込み、
Button2を押したらその変数を解放したいと思っています
0516デフォルトの名無しさん
2005/08/16(火) 22:57:17MSDN見たの? 解放するのはむしろLoadLibrary()でとってきたハンドルのほうじゃないかね。
0517デフォルトの名無しさん
2005/08/16(火) 23:09:52…もしかして、
var
Hoge: procedure;stdcall;
という変数にGetProcAddressでアドレスを割り当てたとしても、
Hoge:= nil;
とすれば良く、解放の必要はない、ということでしょうか?
0518デフォルトの名無しさん
2005/08/16(火) 23:35:09GetProcAddressはDLL内の関数テーブルの値を読み取っているだけ(アドレスを割り当てているわけではない)なので
Hoge:=nil;も不要。
単に配列の値を読み取っているようなものだと思えばよろし。
0519デフォルトの名無しさん
2005/08/16(火) 23:37:38アドレスの解放
アドレスの解放
アドレスの解放 www
0520デフォルトの名無しさん
2005/08/16(火) 23:47:050521デフォルトの名無しさん
2005/08/16(火) 23:48:270522デフォルトの名無しさん
2005/08/16(火) 23:49:41まあ、くだすれだし気にすんな
0523デフォルトの名無しさん
2005/08/16(火) 23:51:24GetProcAddressで割り当てた後の処理はなかったんですか
笑いを提供した代償としてやっと納得を得られました
ありがとうございました
0524デフォルトの名無しさん
2005/08/17(水) 02:52:31参照と実体の区別がついてないのは気にすべきだと思うけどね
0525デフォルトの名無しさん
2005/08/17(水) 13:58:25DELPHIにて二次元配列の定数を記述するにはどのように記述すればよいのでしょうか?
宜しくお願いします。
0526デフォルトの名無しさん
2005/08/17(水) 14:26:42const
a: array[0..2] of array[0..2] of string
= ( ('ab','cD','Ef'),('gh','IJ','kL'),('mO','pq','RS'));
begin
ShowMessage(a[1,2]);
end;
0527デフォルトの名無しさん
2005/08/17(水) 15:11:13他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0528デフォルトの名無しさん
2005/08/18(木) 02:30:35ヘルプ見たんですがよく分かりませんでした…
0529デフォルトの名無しさん
2005/08/18(木) 02:35:26Keybd_event(VK_END, 0, 0, 0);//キーを押す
Keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0);//キーを離す
※「仮想キーコード(Virtual-Key Codes)」を検索。
※※「押す」だけだと、アレなので「離す」もセットで(色々実験すれば
意味が分かると思う)。
0530デフォルトの名無しさん
2005/08/19(金) 00:01:23Delphi 6 Personal.txt の通りにやったんですが、どうしても出来ません。
やり方教えて下さい。
0531デフォルトの名無しさん
2005/08/19(金) 03:53:120532デフォルトの名無しさん
2005/08/19(金) 04:42:370533デフォルトの名無しさん
2005/08/19(金) 08:13:31現在PCにログオンしているユーザの権限
(制限ユーザか管理者か、或いはAdministratorかそれ以外か)の情報を取得する 方法を、
お教え下さい。
OSはWindows系です。
0534デフォルトの名無しさん
2005/08/19(金) 09:42:01GetUserNameでログオンユーザー取得、NetUserGetLocalGroupsでログオンユーザーが所属するグループ取得。
NetAPI系はDelphiでは扱いが面倒だけど。ガンガレ。
Win2000以降でかつ、Administratorsグループか、そうでないかだけが判ればいいのならIsUserAnAdminを
使う方が簡単かも。
0535デフォルトの名無しさん
2005/08/19(金) 11:18:59お教え下さいエロい人
0536デフォルトの名無しさん
2005/08/19(金) 11:34:580537デフォルトの名無しさん
2005/08/19(金) 11:40:110538デフォルトの名無しさん
2005/08/19(金) 11:46:44ハンドルなのかね。もしそうなら使えるんじゃないかなあ
0539デフォルトの名無しさん
2005/08/19(金) 11:49:20質問の仕方が悪いのでお前のケツマンコを犯す事にした。
0540デフォルトの名無しさん
2005/08/19(金) 19:34:18正規表現使って云々ってぐらいは解ったんですけど・・・(´・ω・`)
最小限のサンプルでいいんでどなたか作ってくれませんか?
0541デフォルトの名無しさん
2005/08/19(金) 20:06:05サンプルとかいわれてもなー
エスパー能力を発揮すると、正規表現で表示するタイミングと表示する内容を取得し、
それにしたがって逐次出力していけばいいのでは?
0542デフォルトの名無しさん
2005/08/19(金) 20:09:56StrToIntで数値にして、
時刻になったら表示すればいいんでないの?
正規表現なんて特に必要だとは思わない。
0543デフォルトの名無しさん
2005/08/19(金) 22:28:58こんなサル以下なPQなんだったら辞めろよって感じ。
0544デフォルトの名無しさん
2005/08/19(金) 23:46:300545デフォルトの名無しさん
2005/08/20(土) 01:32:540546デフォルトの名無しさん
2005/08/20(土) 01:46:370547デフォルトの名無しさん
2005/08/20(土) 02:12:440548デフォルトの名無しさん
2005/08/20(土) 05:18:00その Word 文書を操作することは可能でしょうか?
0549デフォルトの名無しさん
2005/08/20(土) 11:51:33int h, m, s;
sscanf("[%02d:%02d:%02d]", &h, &m, &s);
bccで作った関数ってDelから呼べたっけ?
BCBからPascalユニットの関数やクラスは呼べるけど‥‥
0550デフォルトの名無しさん
2005/08/20(土) 12:00:090551デフォルトの名無しさん
2005/08/20(土) 12:36:58DelphiのサンプルソースかSDKってどこかにありませんか?
0552デフォルトの名無しさん
2005/08/20(土) 16:27:29関数とかの互換性はありますか?
0553デフォルトの名無しさん
2005/08/20(土) 16:40:29Borland Delphi 7.1 Professional(http://www.amazon.co.jp/exec/obidos/ASIN/B000AY6Z00/249-5773639-4421953)
と
Borland Delphi 2005 Professional (http://www.amazon.co.jp/exec/obidos/ASIN/B0006INAFI/249-5773639-4421953)
はどっちが最新なの?
7.1のほうは発売予定日が2005/09/20
みたいなんだけど
0554デフォルトの名無しさん
2005/08/20(土) 17:05:03TOleContainer.OleObjectInterface で IOleObject インターフェイスを受け取って、
それに対して QueryInterface で IDispatch を取得すると、
それが Word の Document オブジェクトのオートメーション オブジェクト
になっているかも。
0555デフォルトの名無しさん
2005/08/20(土) 18:53:40互換性はある。
>>553
Delphi 2005=最新。Delphi 7=実用的。
ちなみに年末にDelphi 2006が出る。
0556デフォルトの名無しさん
2005/08/20(土) 21:20:456perでも触って2006の評判見つつ7買うか2006買うか決めるのがいい気がする。
ちなみに2005はPascalの他にC#が、2006はC#とC++(C++Builder統合)が使える。
0558デフォルトの名無しさん
2005/08/20(土) 23:10:50バグ修正と新機能に伴うバグ抱き合わせで押し付けられて常にバージョンアップを強いられる。
まあ信者はそれがたまらんのだろうけどな。
0559デフォルトの名無しさん
2005/08/21(日) 03:01:21そうだよな。MSDN 税金は高いし。
OSX みたいに OS に IDE 付き揮発環境がくっついてくるとかしてくれないと。
まぁ信者はそれがたまらんのだろうけどな。
0560デフォルトの名無しさん
2005/08/21(日) 14:10:05あっちで馬鹿にされたからって必死でスレ違いしなくてもいいよ
0561デフォルトの名無しさん
2005/08/21(日) 20:35:39AMDでOS作ろう
0562デフォルトの名無しさん
2005/08/21(日) 22:30:130563デフォルトの名無しさん
2005/08/22(月) 09:57:56実行した瞬間、パソコンが爆発するようなプログラムが組みたいんですが、可能でしょうか?
あと、画面から手が出てきて相手の顔をぶん殴るようなソフトが作りたいです。
誰か教えてください
0564デフォルトの名無しさん
2005/08/22(月) 10:00:46そこから手がけてみてはどうでしょうか。
0565デフォルトの名無しさん
2005/08/22(月) 12:17:22ご迷惑をお掛けしました。
0566デフォルトの名無しさん
2005/08/22(月) 14:03:33えら呼吸にしてみたら?
0567デフォルトの名無しさん
2005/08/22(月) 19:45:390568デフォルトの名無しさん
2005/08/22(月) 21:58:56中学生はプラクラでも作るのがお似合いなんだよ(プケラ
0569デフォルトの名無しさん
2005/08/22(月) 22:02:27面白いと思ってるのか?
0570デフォルトの名無しさん
2005/08/22(月) 22:10:360571デフォルトの名無しさん
2005/08/22(月) 22:19:090572デフォルトの名無しさん
2005/08/22(月) 23:58:21Delphi2005Proで、FTPクライアント機能を含んだソフトを開発しています。
IndyのTIdFTPを使っています。
複数のFTPサーバに同時に接続する必要があり、TIdFTPを複数貼り付て
それぞれ別のサーバに接続しています。
そこで、イベントのOnWorkEndをひとつだけ記述して、Sender引数でどの
インスタンスのイベントなのかを知りたいのですがうまくいきません。
TidFTP(Sender).Tag はすべて0に、
TidFTP(Sender).Name はすべて''になります。
TagプロパティやNameプロパティはもちろん別々のものを設定してあります。
切り分けとしていくつか試したのですが、
iSender is TidFTP がFalseで帰ってきます。
TidFTP(Sender).Username は変な文字列(大半が#0)が帰ってきます。
どなたかお助け願えませんか。
0573デフォルトの名無しさん
2005/08/23(火) 00:25:38SenderはTidFTPのインスタンスではなく別の型のインスタンスが起こしたイベントだ。(本来あり得ない筈だがなぁ)
ClassNameプロパティの値を調べてみれ。
ちなみにキャストはas演算子使った方が安全。
0574572
2005/08/23(火) 00:27:17自作プログラムだけではなくIndyのデモで、TidFTP(Sender).Tag等を
調べても同じ結果になります。
Label1.Caption:=InttoStr(TidFTP(Sender).Tag);
みたいなコードを貼り付けて調べました。
0575572
2005/08/23(火) 00:31:59アドバイスありがとう。本来ありえないですよねえ。
is演算子を調べると、Senderがnilの時にもFalseになるらしい。だから何?といわれるとそれ以上は
わからないのですがなんか手がかりになるかしら?
ClassNameプロパティとas演算子は知りませんでした。明日出社したら試してみます。
0576デフォルトの名無しさん
2005/08/23(火) 04:37:56TStringListは保存できるみたいなんですが・・・
0577デフォルトの名無しさん
2005/08/23(火) 04:42:04それにしても、結構不便なものなんですね・・・
エクセルみたいに一つのファイルに保存できたら便利そうなんですが。
0578デフォルトの名無しさん
2005/08/23(火) 07:20:58自分で書くんだよ。
0579デフォルトの名無しさん
2005/08/23(火) 08:41:55PGの言葉とは思えんな
0580デフォルトの名無しさん
2005/08/23(火) 09:00:49一つのファイルに保存出来るけど。
なんでも作れる、ってことは、エクセルみたいな専用ソフトをつくるときには
ちゃんとコードを書くんだよ。プログラミングとは、そういうことなんだ。
0581デフォルトの名無しさん
2005/08/23(火) 09:07:100582デフォルトの名無しさん
2005/08/23(火) 09:56:22で、TStreamから派生させたんだけど間違ってないよな?
0583デフォルトの名無しさん
2005/08/23(火) 10:23:24Pointer 型プロパティ持たせてアクセスさせてる。
0584デフォルトの名無しさん
2005/08/23(火) 20:49:32A<>B<>C
A<>B<>C
A<>B<>C
A<>B<>C
と、A、B、Cの三種類の要素を一組毎に行にしてあるデータがテキストになっているのを、
Arr = record
A,B,C : String;
end;
という配列のrecordに入れたいのです。
最初に考えたのはTStringListに読み込んで、for文で一行ごとに<>をString内で検索してその前後をそれぞれArr[x].A、Arr[x].B、Arr[x].Cに代入するのを繰り返す方法なのですが、これよりも効率のいい方法があったら教えて下さい。
0585572
2005/08/23(火) 23:37:21TIdSimpleServer が返ってきました。
ヘルプを見るとIndyのいろんなクラスで使われてるらしいですが、
どう使われてるかわらかんし、そこを手がかりにイベント発生元の
インスタンスを調べようがありません。
as演算子は不正な型キャストでコンパイル通りませんでした。
なんとかならないものですかね?
引き続きご助言募集中です。
0586デフォルトの名無しさん
2005/08/24(水) 02:53:20正直そういう奴だ
0587デフォルトの名無しさん
2005/08/24(水) 04:32:55> TIdSimpleServer が返ってきました。
正解。
TidFtp(TidSimpleServer(Sender).Owner).Tag などと書くらしい。
以下、受け売りw
OnWork のSender はidFtp そのものではなく、idFtp が作成したFDataChannel
Owner を見れば、idFtp が分かるはずだが、肝心のオーナーがnil
よってIndy 9の場合、ソースを変更する必要がある。
http://groups.google.co.jp/group/borland.public.delphi.internet.winsock/msg/862c35e8cc99b759?hl=ja&
0588デフォルトの名無しさん
2005/08/24(水) 04:39:08OnWork のSender はidFtp そのものではなく、idFtp が作成したTidSimpleServer (FDataChannel フィールド)
と読み替えてくれ。
0589デフォルトの名無しさん
2005/08/24(水) 07:17:09JavaScriptのような
document.getElementById("hoge");
こんな感じの命令でHTMLを解析できるライブラリってないでしょうか?
0590デフォルトの名無しさん
2005/08/24(水) 07:21:260591デフォルトの名無しさん
2005/08/24(水) 08:09:14なるほど!
0592デフォルトの名無しさん
2005/08/24(水) 08:46:19HTMLパーサーを使えばいいんじゃないか。ググルと色々出てくる。
Delphiで有名なのって何だろ?
0593デフォルトの名無しさん
2005/08/24(水) 09:11:26ぐぐってみたのですがなかなか見つかりません。
キーワードを教えてもらえませんか?
0594デフォルトの名無しさん
2005/08/24(水) 09:16:110595デフォルトの名無しさん
2005/08/24(水) 09:16:440596デフォルトの名無しさん
2005/08/24(水) 09:22:05すみません。本当に2ちゃんブラウザを作るわけではないので。
>>595
さんくす
0597デフォルトの名無しさん
2005/08/24(水) 09:29:59ATagParser
http://www.compnet101.com/atagparser/
DIHtmlParser
http://www.yunqa.de/delphi/
0598デフォルトの名無しさん
2005/08/24(水) 10:00:11Delphiやってると英語も得意になったりする
0599デフォルトの名無しさん
2005/08/24(水) 10:03:58TWebBrowser
0600デフォルトの名無しさん
2005/08/24(水) 10:17:33・検索ワードを尋ねる
・「なるほど!」と言う
なんか知り合いに凄く似てる奴がいるんだが気のせいだろうか。
このスレも勿論見てるしそいつ。
0601デフォルトの名無しさん
2005/08/24(水) 10:30:200602デフォルトの名無しさん
2005/08/24(水) 10:35:31何か悪い意味で取られてしまったようなのですが、追い出そうとしてるとかいう事は
ありませんよ(笑
似たような奴はいくらでもいるし俺の知り合いとあんたは別人かもしれないじゃない
ですか。ただ似てたから言いたくなっただけですよ。
0603デフォルトの名無しさん
2005/08/24(水) 10:54:00では復活しました。
HTMLパーサー自分で作ってみようと思います。
完全なものではなくていいので。
0604デフォルトの名無しさん
2005/08/24(水) 11:02:12HTML上のスクリプトと同じ感じで使えるぞ
0605デフォルトの名無しさん
2005/08/24(水) 11:36:03[ファイル]-[プロジェクトに名前を付けて保存...]
から
保存ダイアログにデフォルトで
$(DELPHI)\Projects\
のディレクトリが表示されますが、
これを、別の任意のディレクトリに設定
する方法をご教示ください。
[ツール]メニューでも該当の設定を
見つけることができませんでした。
0606605
2005/08/24(水) 11:44:06解決しました。
0607デフォルトの名無しさん
2005/08/24(水) 11:50:30デフォルトの保存先 = カレントディレクトリ
IDE起動用ショートカットの作業フォルダ変更しれ
0609デフォルトの名無しさん
2005/08/24(水) 16:45:350610デフォルトの名無しさん
2005/08/24(水) 16:49:140611デフォルトの名無しさん
2005/08/24(水) 18:15:08ExpandFileName(pathstr + '\..')
とかどうかな?
0612572
2005/08/25(木) 00:20:01やったやったアリガトウ!うまくいったよ。587の方法で完璧。
ただ、TIdFTPのソースを書き直した後、それを更新するやり方
で半日てこずった。最初いくらやっても書き直しが反映されないの。
なんかわかりにくいよね。2005になってなんか変更あった?
他の人のためにパッケージ更新のやり方書ければいいんだけど、
あれこれやってたらいつのまにか出来たって感じなので残念ながら
まとめきれん。
恩返しできなくてスマン
0613デフォルトの名無しさん
2005/08/25(木) 08:57:04とってもw
0614デフォルトの名無しさん
2005/08/25(木) 13:01:12巷の評判ではVBの圧勝と聞きました。
0615デフォルトの名無しさん
2005/08/25(木) 13:03:570616デフォルトの名無しさん
2005/08/25(木) 13:06:010617デフォルトの名無しさん
2005/08/25(木) 13:09:470618デフォルトの名無しさん
2005/08/26(金) 09:20:22閉じようとすると「デバック中ですが何か?」ってきいてくる。
で、閉じるとそれまで使っていたソフトも強制終了されてしまいます。
これと防ぐのって、ユーザーを変えてDelとその特定のソフトをインスコしないと駄目?
PC自体別じゃないと駄目?
0619デフォルトの名無しさん
2005/08/26(金) 09:28:050620デフォルトの名無しさん
2005/08/26(金) 09:37:400621デフォルトの名無しさん
2005/08/26(金) 09:38:460622デフォルトの名無しさん
2005/08/26(金) 10:11:43不思議だな。
0623618
2005/08/26(金) 10:12:24仕事で使う専用ソフトなので一般的ではないのです。
お客には一応売ってはいますが。
>>620
ハイ、バカです。よくこんなものン百万で売る気になるなと。
買う方も買う方だと、思ってます。
>>621
その指定ってどこで解除出来るのでしょう?
書き忘れましたが、WinXPを使っています。
ユーザーを分ければ回避出来ますでしょうか?
0624デフォルトの名無しさん
2005/08/26(金) 10:32:36のDebuggerにDelphiが指定されてるだろうから、それを消すだけでいいはず。
0625デフォルトの名無しさん
2005/08/26(金) 11:13:490626デフォルトの名無しさん
2005/08/26(金) 12:30:43もともと改行コードが入っていると駄目だが
0627デフォルトの名無しさん
2005/08/26(金) 12:42:08普通の例外とは違うのですよね?
0628デフォルトの名無しさん
2005/08/26(金) 12:45:34Delphiの外で、よくわからん例外が発生しているつー事だ。
0629デフォルトの名無しさん
2005/08/26(金) 23:00:06Form上にAという作業領域があって、B、C、D〜というストリームにデータが入っています。
で、LoadFromStreamでA←Bと読み込んで、作業終了したらまたA→BとSaveToStream。
指示ごとにA←C、A→C、A←D、A→D………というふうに。
TMemoryStreamを無数保持する場合の弊害とかはないですか?
どうも中間オブジェクトとしてしか使われるところを見ないものですから…。
0630デフォルトの名無しさん
2005/08/27(土) 00:38:15TStreamに合わせて使えるようにしただけのクラス。
当然相応にメモリを消費するが…
0631デフォルトの名無しさん
2005/08/27(土) 00:58:09うるう年以外なら@MONTH = ('',31,28,31,30,31,30,31,31,30,31,30,31);
を配列に代入して
MONTH[入力された月の変数]を変数に代入して表示されるプログラムを
Delphiでやろうとして検索しては試行錯誤していますがまったく解決できません;;
これをDelphiでやるにはどうしたらよいでしょうか?
0632デフォルトの名無しさん
2005/08/27(土) 01:21:29SysUtils.pasにMonthDays定数がある。
var
LeapYear: Boolean; //閏年か否か
AMonth: Integer;
begin
LeapYear := False;
AMonth := 2;
ShowMessage(IntToStr(MonthDays[LeapYear, AMonth]));
end;
0633Delフサギコ ◆A6VzDeLphI
2005/08/27(土) 01:23:18ミ,,゚Д゚彡
ミつ日(ミ
こんばんは。
簡単なテキスト整形をしたくなりました。
行頭禁則と行末禁則文字指定ができて
指定桁数折り返し整形処理を
行うようなコード、どなたかすでにお書きじゃないかしら。
知ってたらおしえいてくださいま。
なけりゃ、作るかしら(*´・д・)(・д・`*)ネー
0634デフォルトの名無しさん
2005/08/27(土) 01:40:15631の者です。
有難うございました。
先ほど閏年を計算してくれる関数があるのを知って驚いてたばかりなので
日にちの定数まで存在するんですね・・・Delphiに圧倒!
数行必要なプログラムが数文字にばけました、驚きです。
途方に暮れていたので有難うございました。
助かりました。
MonthDays[IsLeapYear(year),month]
0635デフォルトの名無しさん
2005/08/27(土) 08:56:08うまく動きません、
memo1.line[0]とnow2 には200508270800という文字列が入っています。
これが一緒なら音を鳴らすというプログラムです。
まだ始めたばかりでプログラムが汚いですがお願いしますTT
文字数が多いのでプログラムの部分は次へ
0636デフォルトの名無しさん
2005/08/27(土) 08:56:42var
Present : TDateTime;
nowtime : string;
i : integer;
now2 :string;
nowyear,nowmonth,nowday,nowhour,nowmin,nowsec,nowmsec : word;
begin
nowtime := DateTimeToStr(now);
Present := now;
nowtimelabel.Caption := nowtime;
DecodeDate(Present, nowyear, nowmonth, nowday);
DecodeTime(Present, nowhour, nowmin, nowsec, nowmsec);
for i := 1 to Memo1.Lines.Count do
begin
now2 := IntToStr(nowyear)+Ttime(IntToStr(nowmonth))+Ttime(IntToStr(nowday))+Ttime(IntTostr(nowhour))+Ttime(IntToStr(nowmin));
if Memo1.Lines[i] = now2 then
begin
beep();
end
else
end
end;
0637デフォルトの名無しさん
2005/08/27(土) 09:49:04DateTimeToStr を FormatDateTime?? だかにすればどうかなぁ
0638デフォルトの名無しさん
2005/08/27(土) 10:47:42試してみました。
比較は、保持内容がテキストなので、TStringList。
for内でCreateと40kほどのファイルをLoadFromFile。
で、300ほど回して、タスクマネージャで見てみました。
TMemoryStreamは、増約12M。
TStringListは、増約25M。
消費量はTMemoryStreamのほうが小さいですけど……ううむ。
0639デフォルトの名無しさん
2005/08/27(土) 13:08:07>>630が言ってるようにTMemoryStreamは動的確保したメモリブロックにTStreamのインタフェース乗っけただけのクラスだから
GB単位とか無茶なことやらない限りは問題ない。
0640デフォルトの名無しさん
2005/08/27(土) 17:40:330641デフォルトの名無しさん
2005/08/27(土) 17:48:46ただし、扱いには少しくせがあるから気をつけろ
0642デフォルトの名無しさん
2005/08/27(土) 18:52:420643デフォルトの名無しさん
2005/08/27(土) 21:31:410644デフォルトの名無しさん
2005/08/28(日) 13:03:47ソリューションが複数ある場合、なんか上手くいかない orz
なんかコツがあるのだろうか?
0645デフォルトの名無しさん
2005/08/28(日) 13:06:59談話室と間違えて投稿しましたが、わかる方が居たらお願いします mOm
s2dotnet
http://s2dotnet.oscj.net/
0646デフォルトの名無しさん
2005/08/28(日) 16:10:33alt+F4とかF10とか
0647デフォルトの名無しさん
2005/08/28(日) 16:21:48OpenToolsAPIの付属デモを弄って、新しいショートカットキーのセットを作れば可能。
拡張モジュールじゃ駄目かも。
0648デフォルトの名無しさん
2005/08/28(日) 17:16:36ToolsAPI\Editor Keybinding デモ
0649デフォルトの名無しさん
2005/08/28(日) 20:08:10Delphi6で、制御系のプログラム組んでるんですが、作ったアプリのタイトルバーをクリックしてるとメッセージ関係が止まってしまって困っています。
タイトルバーをクリックしたまま動かす(ドラッグ)と、ウィンドウの移動モードになり回復するのですが、クリックしたまんま動かさないと、止まったまんまです。
とりあえず、現状では WM_NCLBOTTONDOWN が来たら mouse_event で4ポイントほどマウスを動かしてこれを何とか回避してますが、当然ながら、いまいちすっきりしません。
#ファイルコピーの時のプログレスバーも、タイトルバーをクリックしてると止まるので
#Windowsの仕様っぽいかんじですが。。。
で、質問ですが、タイトルバーをクリックしても止まらないようにする方法はないでしょうか。
または、マウスを移動することなく、ウィンドウを移動モードにする方法をお教え願います。
よろしくお願いいたします。。
0650デフォルトの名無しさん
2005/08/28(日) 20:46:51>>649
それは下位デバイスとの通信中だけに起きる現象か?
そうならば解決させる方法は通信部分をスレッド化するしかない。
そうでないならば正しくメッセージ処理が行われていないだけ。
0651デフォルトの名無しさん
2005/08/28(日) 22:19:36タイトルバーを掴んだときの動作はWindows固有の問題。
解決方法は >650 のとおりスレッド化。
まぁ >649 のやり方で支障がないならokのような。
0652649
2005/08/29(月) 00:24:08簡単なサンプルですが、検証コードです。
Form1 にEditコントロールをひとつ貼り付けてください。
これでも見事に、タイトルバーをクリックすると止まってくれます。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
THogeThread=Class(TThread)
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
Edit1: TEdit;
procedure frmShow(Sender: TObject);
private
procedure WMHoge(var Msg:TMessage); message WM_USER+$100;
{ Private 宣言 }
public
{ Public 宣言 }
end;
0653649
2005/08/29(月) 00:26:01Form1: TForm1;
implementation
{$R *.dfm}
{ THogeThread }
procedure THogeThread.Execute;
var a:integer;
begin
a:=0;
while not terminated do begin
Sleep(200);
SendMessage(Form1.Handle,WM_USER+$100,0,a);
inc(a);
end;
end;
var hogeThread:THogeThread;
procedure TForm1.frmShow(Sender: TObject);
begin
hogeThread:=THogeThread.Create(False);
end;
procedure TForm1.WMHoge(var Msg: TMessage);
begin
Edit1.Text:=IntToStr(Msg.LParam);
end;
end.
0654649
2005/08/29(月) 00:56:41また、どうも TEvent なども使うと止まってくれるみたいです。
>>651 さんの言うように、Windows固有の問題とすれば、これはどうしようもないということなんですね。
それでは、マウス移動しないでウィンドウの移動モードに移行する方法というのはどうでしょうか。
WM_COMMAND を飛ばすとかいろいろやってみたのですが、どうもうまくいきません。
>>649 のようにマウス移動させて、逆のマウス移動するというのもやってみましたがそれでもだめなようです。
よろしくお願いいたします。
0655デフォルトの名無しさん
2005/08/29(月) 02:25:08サンプルに関して言えば、
PostMessageにすると、表示は変だけどカウントアップは止まらない。
Synchronizeなら、ほぼ完璧に見えるが・・・そういう問題ではない?
0656デフォルトの名無しさん
2005/08/29(月) 03:51:10なんだから、回避するとそれは誤動作の元だろ。
0657デフォルトの名無しさん
2005/08/29(月) 06:54:06つまり、
if 条件 = true then
begin
StringGrid1.Cells[x,y]のフォントカラー=グリーン
end;
といった具合です。
begin
StringGrid1.Cells[x,y].font.color := clgreen ;
なんて文章を考えたのですができずに・・・
分かる方いらっしゃったらよろしくお願いします。
0658デフォルトの名無しさん
2005/08/29(月) 08:43:35回避すると互換性がなくなって「糞アプリ」のレッテルを貼られるだけだよ
0659デフォルトの名無しさん
2005/08/29(月) 09:26:07StringGrid OnDrawCell でぐぐれ
0660デフォルトの名無しさん
2005/08/29(月) 10:10:37>外部との通信、イベント通知、などで、SendMessage をつかうと、そこで止まってくれます。
っ[ Classes.AllocateHWnd関数 ]
TTimerのソース追っかけてみると吉
0661デフォルトの名無しさん
2005/08/29(月) 10:11:190662デフォルトの名無しさん
2005/08/29(月) 12:56:140663デフォルトの名無しさん
2005/08/29(月) 16:11:18すなおにSynchronizeを使いなさい。
しかし、Delphiのスレッドの資料ってホント無いね。
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/forms/Thread.htm
THogeThread=Class(TThread)
private
FCount: Integer;
protected
procedure SyncHoge;
procedure Execute; override;
end;
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private 宣言 }
FHogeThread: THogeThread;
public
{ Public 宣言 }
end;
0664デフォルトの名無しさん
2005/08/29(月) 16:11:52procedure THogeThread.Execute;
begin
FCount := 0;
while not Terminated do
begin
Sleep(200);
Synchronize(SyncHoge);
Inc(FCount);
end;
end;
procedure THogeThread.SyncHoge;
begin
Form1.Edit1.Text := IntToStr(FCount);
end;
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
FHogeThread := THogeThread.Create(True);
FHogeThread.FreeOnTerminate := True;
FHogeThread.Resume;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FHogeThread.Terminate;
end;
0665デフォルトの名無しさん
2005/08/29(月) 16:12:560666デフォルトの名無しさん
2005/08/29(月) 16:15:280667デフォルトの名無しさん
2005/08/29(月) 16:27:38http://www.wwlnk.com/boheme/delphi/techdoc/dad0010.html
言わずと知れたDelphi Acid Floor
0668デフォルトの名無しさん
2005/08/29(月) 16:37:41http://www.borland.co.jp/tips/delphi/dh004/thread_2.html
0669デフォルトの名無しさん
2005/08/29(月) 17:14:53お奨めじゃないよ、そんなの。ちゃんと HTML の空白文字で埋めろよ。
そんなアプリ作るの5分で出来るでしょ。
0670デフォルトの名無しさん
2005/08/29(月) 17:16:510671デフォルトの名無しさん
2005/08/29(月) 17:21:510672デフォルトの名無しさん
2005/08/29(月) 17:23:060673デフォルトの名無しさん
2005/08/29(月) 17:53:43http://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=%A5%EA%A5%F3%A5%AF%2F%A4%BD%A4%CE%A3%B1%A4%CE%A3%B2#content_1_3
0674ななしへたぐらま ◆XcB18Bks.Y
2005/08/29(月) 21:17:19例によって遅いレスですいません.
見たところたくさん問題があるようですがコンパイルはうまくいきましたか?
少なくとも以下の行がコンパイルエラーになっているはずですが.
> now2 := IntToStr(nowyear)+Ttime(IntToStr(nowmonth))+Ttime(IntToStr(nowday))+Ttime(IntTostr(nowhour))+Ttime(IntToStr(nowmin));
#ちなみソースコードは特に汚くないと思います.
0675デフォルトの名無しさん
2005/08/30(火) 03:43:070676デフォルトの名無しさん
2005/08/30(火) 06:11:45FormatDateTime関数を使って現在の時刻を取得する事によって簡単に比較できるようになりました。
ありがとうございます。
>>674
うまくいきました。
Ttimeというのは自分で作成した関数で
入力された数値が一桁、つまり9以下の場合のみ文字列型で0を前方に追加する関数です。
now2には文字列型で200508300630みたいに入ります。
入力された数値と現在の時刻をひとつのIF文で比較するのには文字列型の方がやりやすかったので・・・
まだまだプログラミングは始めたばかりでしかも1から独学でやってるので
知らないことだらけで適切な関数を使えてないのでやはり他の人のプログラムをみると
自分のは汚いなと思います^^;
0677デフォルトの名無しさん
2005/08/30(火) 06:16:45midとmp3の再生方法が全くみつかりません。
これらを簡単に再生できるようになる関数は存在するのでしょうか?
関数が無ければどの様な方法でやったらいいのでしょうか?
あとファイルネームを取得してラベル等で表示させると
C:\aaaaa\aaaa\aaaa\aaa.wavと表示されてしまうのですが
aaa.wavだけを表示するにはどうしたら良いでしょうか?
0678デフォルトの名無しさん
2005/08/30(火) 06:28:14ソースはどこ?EXEしか見つからない orz
0679デフォルトの名無しさん
2005/08/30(火) 07:31:210680デフォルトの名無しさん
2005/08/30(火) 08:01:20あらかじめメモリにロードしなくていいならMCI or DirectShow
0681デフォルトの名無しさん
2005/08/30(火) 08:14:17そんな多くの資料が必要なものかね?
0682デフォルトの名無しさん
2005/08/30(火) 09:14:08mciSendString(PChar('open ' + 'Hoge.mid' + ' type sequencer alias midifile'), nil, 0, 0);
mciSendString(PChar('play midifile'), nil, 0, 0);
mciSendString(PChar('stop midifile'), nil, 0, 0);
mciSendString(PChar('close midifile'), nil, 0, 0);
MediaPlayer1.FileName := 'Hoge.mp3';
MediaPlayer1.Open;
Mediaplayer1.Play;
MediaPlayer1.Stop;
MediaPlayer1.Notify := False;
MediaPlayer1.Close;
0683デフォルトの名無しさん
2005/08/30(火) 09:28:46http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/openirvine/
コンパイルしようと思うと色々大変だけど
0684デフォルトの名無しさん
2005/08/30(火) 09:37:05おおアリガ�d
0685デフォルトの名無しさん
2005/08/30(火) 13:11:21×の文字入れると「RichEditの行挿入エラー」とかって表示されて
それ以降Itemsプロパティを編集できなくなってしまいます。
これってうちのだけですか?
0686デフォルトの名無しさん
2005/08/30(火) 15:02:17できました、ありがとうございます。
>>682
バージョンが古いせいなのかわかりませんが
色々試行しましたが上記の方法ではmidi,mp3ともに再生されませんでした
Mediaplayerを使用してwavとmidiは再生できましたがmp3はだめみたいです。
バージョンは6パーソナルです。
0688デフォルトの名無しさん
2005/08/30(火) 18:01:410689デフォルトの名無しさん
2005/08/30(火) 19:58:01まさかWindows95じゃあるまいな?
98+IE5以降ならmp3は再生できるはずだが‥‥
0690デフォルトの名無しさん
2005/08/31(水) 09:58:32とデータが入っているとき
buffを$008000と認識して32768を得たいのですがどうすればいいのでしょうか?
0691デフォルトの名無しさん
2005/08/31(水) 10:40:360692デフォルトの名無しさん
2005/08/31(水) 10:51:27buf[0] * $10000 + buf[1] * $100 + buf[2];
0693690
2005/08/31(水) 10:54:59ありがとうございます。
試行錯誤したところ
sTemp := IntToHex(bBuff[0], 2) + IntToHex(bBuff[1], 2) + IntToHex(bBuff[2], 2);
IntToStr( StrToInt('$' + sTemp) ) );
で出来ましたが間違っていないでしょうか?
0694デフォルトの名無しさん
2005/08/31(水) 10:58:030695デフォルトの名無しさん
2005/08/31(水) 11:06:280696デフォルトの名無しさん
2005/08/31(水) 11:13:29var
buf:array[0..2] of byte;
v: cardinal;
begin
buf[0] := $0; buf[1] := $80; buf[2] := $00;
v := ((buf[0] shl 8) or buf[1]) shl 8 or buf[2];
Label1.Caption := IntToHex(v, 6);
end;
0697デフォルトの名無しさん
2005/08/31(水) 12:00:590698デフォルトの名無しさん
2005/08/31(水) 12:20:50WWWWWWWWWWWWWWW
0699デフォルトの名無しさん
2005/08/31(水) 12:31:390700デフォルトの名無しさん
2005/08/31(水) 13:59:150701デフォルトの名無しさん
2005/08/31(水) 14:00:320702デフォルトの名無しさん
2005/08/31(水) 14:08:35OSはXPです。
実行すると指定した拡張子からはデバイスの種類は判別できません。と警告されます。
MediaPlayerのプロパティーでDeviceTypeを確認してもmp3と表示されてるものは無く
dtAutoSelectで自動に判別させるようにしています。
Delphiのverの問題なのかなと思えてきました。
無料の6パーソナルだと色々と使えない物が多いみたいなので・・・
趣味に7万はきついので製品版購入は難しい;;
0703デフォルトの名無しさん
2005/08/31(水) 15:13:360704デフォルトの名無しさん
2005/08/31(水) 15:29:42MCIは試したか?
TMediaPlayer使わずにMCI使うことを勧める。
個人的にはDirectShow推すけどCOMだのなんだのあるからMCI推し。
//再生ボタン
mciSendString(PChar('open ' + 'Hoge.mid' + ' alias stream1'), nil, 0, 0); { ファイル形式は勝手に判断してくれるからtype省略 }
mciSendString(PChar('play stream1'), nil, 0, 0);
//終了ボタン
mciSendString(PChar('stop stream1'), nil, 0, 0);
mciSendString(PChar('close stream1'), nil, 0, 0);
参考URL
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_command_strings.asp
0705デフォルトの名無しさん
2005/08/31(水) 16:56:38別のPC(XP)では正常に動きましたが、今使用しているPCではやはり鳴りません・・・
何が原因なのでしょうか・・・・・
0706デフォルトの名無しさん
2005/08/31(水) 17:39:07スピーカーが無いとか・・・
0707デフォルトの名無しさん
2005/08/31(水) 18:02:22ボリュームを現在値の10分の一に設定する方法は無いでしょうか?
昔のFDELPHIにあったソースを使って今まではやっていたのですが、この方法だと、
ノートパソコンでしか動作しませんでした。
自作機だとMCIデバイスが見つからないとエラーになってしまうので、どのパソコンでも
使えるように改造したいと思ってます。
0708デフォルトの名無しさん
2005/08/31(水) 21:23:15メディアプレーヤーでちゃんと音出るか?
0709デフォルトの名無しさん
2005/08/31(水) 23:31:43Delphi TMixerでぐぐれ
0710デフォルトの名無しさん
2005/09/01(木) 12:08:47普通に再生するのはできます。
プログラムを通すとなりません。
他のソフト系の影響かと思いOSからインスコしましたがやはりなりません・・・
0711デフォルトの名無しさん
2005/09/01(木) 13:26:060712デフォルトの名無しさん
2005/09/01(木) 18:08:56設定で保存が効くようになるのでしょうか?
宜しくお願いします。
0713デフォルトの名無しさん
2005/09/01(木) 18:20:51ブレークポイントは環境オプションのプロジェクトデスクトップの自動保存をONにすれば保存される
0714デフォルトの名無しさん
2005/09/01(木) 18:28:07ありがとうございました!
0715デフォルトの名無しさん
2005/09/01(木) 20:07:410716デフォルトの名無しさん
2005/09/01(木) 23:27:080717デフォルトの名無しさん
2005/09/02(金) 00:13:27つttp://homepage1.nifty.com/Que/plamo/ib4linux/
しかしDBコンポーネントがPersonalでは存在しないので制約がかなり大きい罠。
0718デフォルトの名無しさん
2005/09/02(金) 03:11:54たとえば
「aaaaaaaabc」と打ちたいとき、KeyPressだとaのキーを押しっぱなしになってしまいます。
押した瞬間にしか認識できないようにしたいのですが、
Chr('a')などして、KeyUpとKeyDown試しましたが、これもうまくいきませんでした。
方法教えてください。
0719デフォルトの名無しさん
2005/09/02(金) 05:05:30連続で文字を出力させたくないって事?
0720デフォルトの名無しさん
2005/09/02(金) 05:21:290721デフォルトの名無しさん
2005/09/02(金) 05:33:468回押さないと駄目なようにしたいって事か?
0722>>718
2005/09/02(金) 08:28:220723デフォルトの名無しさん
2005/09/02(金) 08:30:44WM_KEYDOWNメッセージのlParam30ビット目
0724デフォルトの名無しさん
2005/09/02(金) 08:31:430725デフォルトの名無しさん
2005/09/02(金) 08:40:260726デフォルトの名無しさん
2005/09/02(金) 09:11:06タイピングソフトがオートリピート殺してたって誰も文句言わねーだろ
0727デフォルトの名無しさん
2005/09/02(金) 09:14:16const
BeforeChar: Char = #0;
begin
if Key = BeforeChar then begin
Key := #0;
end else begin
BeforeChar := Key;
end;
end;
0728デフォルトの名無しさん
2005/09/02(金) 09:17:24それって押しっぱなしだけじゃ無くて、2回押すのも無視されないか
0729727
2005/09/02(金) 09:39:50private
KeyUp: Boolean;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if not KeyUp then begin
Key := #0;
end else begin
KeyUp := False;
end;
Caption := Caption + Key;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
KeyUp := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyUp := True;
end;
0730デフォルトの名無しさん
2005/09/02(金) 10:03:43http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_keydown.asp
lParam
Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table.
<中略>
30
Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
0731デフォルトの名無しさん
2005/09/02(金) 10:38:30OS のキー入力の標準動作と違うタイピングソフトって、意味なくね?
0732727
2005/09/02(金) 11:51:26なら、これだろ?
private
BeforeKeyDown: Boolean;
procedure WMKEYDOWN(var Msg: TMessage); message WM_KEYDOWN;
procedure TForm1.WMKEYDOWN(var Msg: TMessage);
begin
BeforeKeyDown := (((Msg.LParam shr 30) and 1) = 1);
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if BeforeKeyDown then Key := #0;
caption := caption + Key;
end;
0733デフォルトの名無しさん
2005/09/02(金) 13:46:13オートリピートごときで意味なくならねーよ。あほか。
0734デフォルトの名無しさん
2005/09/02(金) 13:55:11グリッドラインも併せて印刷できないでしょうか?
宜しくお願いします。
0735デフォルトの名無しさん
2005/09/02(金) 15:11:40あぁ俺もタイピングソフト作ってみよう
</チラシの裏>
0736デフォルトの名無しさん
2005/09/02(金) 15:13:480737デフォルトの名無しさん
2005/09/02(金) 15:54:32その「オートリピートごとき」で、なんでわざわざOS標準動作を変える必要があるのかが分からんところだな
しかも、必死だし(藁
0738デフォルトの名無しさん
2005/09/02(金) 16:01:14そんだけ君がアホな事言ってるのさ
0739デフォルトの名無しさん
2005/09/02(金) 16:02:230740デフォルトの名無しさん
2005/09/02(金) 16:30:290741ななしへたぐらま ◆XcB18Bks.Y
2005/09/02(金) 16:47:40すいません,まだご覧になっているかわかりませんがTTimeの件,了解です.
うまくいかないというのは指定した時刻になっても期待した処理が実行されないということでいいのでしょうか?
> TForm1.ontimer
このメソッド,ちゃんと実行されていますか?なんか実行していないような気がします.
> begin
この行にブレークポイントを置いて([F5]キー)実行時に止まるかどうか調べてみてください.
止まらないようならタイマーコンポのプロパティ(イベントも)を確認してみて下さい.
0742ななしへたぐらま ◆XcB18Bks.Y
2005/09/02(金) 17:35:36OnKeyDown/OnKeyUpイベントを使うのがよいと思います.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
CapsLocked: boolean;
IsUpperCase: boolean;
begin
// CapsLockがOnかどうかを得る.←やり方は今調べた(笑)
CapsLocked := ((GetKeyState(VK_CAPITAL) and 1) > 0);
// 大文字にするかどうかを決める.
IsUpperCase := (ssShift in Shift) xor CapsLocked;
case Key of
ord('A')..ord('Z'): // [A]〜[Z]なら
begin
if IsUpperCase then
Caption := Caption + chr(Key)
else
Caption := Caption + AnsiLowerCase(chr(Key));
end;
end;
end;
このイベントで渡される値は文字ではなく『仮想キーコード』といって,キーごとに割り振られた番号です.
(これは文字コードとは異なりますが[A]〜[Z]は文字コードと同じ番号が割り振られています.)
たとえば[A]キーが押されていれば 61 という値が返ってきます.
Shiftキーを押しながらでもCapsLockがONでも同じです.
実際にコードを書くときはそのまま数をを書くと何を意味するのかわかりにくいので
[A]ならord('A'),[Z]ならord('Z')と書いて下さい(それぞれ'A'と'Z'の文字コードを意味します).
その他のキーについてはGoogleで『仮想キーコード』で検索すれば一覧表ページを見付けられるでしょう.
0743デフォルトの名無しさん
2005/09/02(金) 19:21:55?
質問と関係なく、タイピングソフトのアドバイスしてるってことか?w
0744デフォルトの名無しさん
2005/09/02(金) 19:30:38そのコードは
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Caption := Caption + Key
end;
とどこが動作が違うの?
そもそも >>718 の質問って
> 「aaaaaaaabc」と打ちたいとき、KeyPressだとaのキーを押しっぱなしになってしまいます。
この意味が分からないんだよね。オートリピートとはなにも関係なさそうだし。
0745デフォルトの名無しさん
2005/09/02(金) 19:37:180746デフォルトの名無しさん
2005/09/02(金) 19:39:01aのキーを押しっぱなしでも打ててしまいます。
押した瞬間にしか認識できないようにしたいのですが
って事だべ?
0747デフォルトの名無しさん
2005/09/02(金) 19:40:14タイピングソフトの意味ないし。
0748デフォルトの名無しさん
2005/09/02(金) 19:43:190749デフォルトの名無しさん
2005/09/02(金) 19:49:09そりゃ全然違うだろ
0750デフォルトの名無しさん
2005/09/02(金) 19:49:370751デフォルトの名無しさん
2005/09/02(金) 19:52:180752デフォルトの名無しさん
2005/09/02(金) 19:56:11repeat
Write('Input A-Z:'); Readln(s);
until s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Writeln('Time:', GetTickCount-n, 'ms');
0753デフォルトの名無しさん
2005/09/02(金) 19:56:47そう思いたいのですね :-)
0754デフォルトの名無しさん
2005/09/02(金) 20:05:250755デフォルトの名無しさん
2005/09/02(金) 20:17:230756デフォルトの名無しさん
2005/09/02(金) 20:24:530757デフォルトの名無しさん
2005/09/02(金) 20:26:530758デフォルトの名無しさん
2005/09/02(金) 20:27:080759デフォルトの名無しさん
2005/09/02(金) 20:40:180760デフォルトの名無しさん
2005/09/02(金) 20:48:200761ななしへたぐらま ◆XcB18Bks.Y
2005/09/02(金) 21:21:470762デフォルトの名無しさん
2005/09/02(金) 21:23:380763デフォルトの名無しさん
2005/09/03(土) 10:21:30文字列に変換するにはどうすればよいのでしょうか?
Buff[0] = なんたら、Buff[1] = かんたら、Buff[2] = こんたら・・・
と入っているデータを文字列をして取得したいのです
よろしくお願いします。
0764デフォルトの名無しさん
2005/09/03(土) 10:28:25UTF32で入ってるの?
0765デフォルトの名無しさん
2005/09/03(土) 10:34:32バイト配列から2個ずつ取得してそれをWideStringに
代入すればよいと思うのですがやり方がわかりません。
0766デフォルトの名無しさん
2005/09/03(土) 10:49:120767デフォルトの名無しさん
2005/09/03(土) 11:13:00dest: widestring;
begin
dest := PWideChar(@Buff);
とか
var
dest: widestring;
begin
SetLength(dest, BuffSize div 2);
if BuffSize > 0 then
Move(Buff, dest[1], BuffSize);
みたいな感じ?
0768デフォルトの名無しさん
2005/09/03(土) 13:00:08折りたたまれているノードは高さに含まれないので、
ひとつひとつ表示されているかチェックしてその数×ノードの高さだとどうも。
0769デフォルトの名無しさん
2005/09/03(土) 13:08:06>取得したのですが
もうできてるがな!
0770デフォルトの名無しさん
2005/09/03(土) 13:22:40すまん、書いた文章読み直さないおいらが阿呆だった。
まだ取得はできていないっ。
0771デフォルトの名無しさん
2005/09/03(土) 14:08:48ありがとうございました!出来ました!
バイト配列が動的配列だったのでそのまま渡して
後にヌル文字を付けることで出来ました。
0772デフォルトの名無しさん
2005/09/03(土) 15:00:23トップから再帰的に潜って TTreeNode.Count 数えていくとか
0773デフォルトの名無しさん
2005/09/03(土) 15:12:36TTreeNode.GetNextVisibleを使って数えるとか?
uses CommCtrl;
procedure TForm1.Button1Click(Sender: TObject);
var
node, next: TTreeNode;
count: Integer;
begin
node := TreeView1.Items.GetFirstNode;
if node=nil then
Exit;
count := 1;
while true do
begin
next := node.GetNextVisible;
if next=nil then Break;
node := next;
Inc(count);
end;
ShowMessageFmt('ノードの高さの計 = %d個 × %d ピクセル/個', [count,
TreeView1.Perform(TVM_GETITEMHEIGHT, 0, 0)]);
end;
0774デフォルトの名無しさん
2005/09/03(土) 15:45:210775768
2005/09/03(土) 16:59:48変更ある度に全チェックというのも微妙だし、ということで質問したのです……
例えばTreeViewのスクロールバーは、どうやってサイズを決めてるんでしょう。
あれがGetNextVisibleでサイズ取得してるのなら問題なさそうですけど。
0776デフォルトの名無しさん
2005/09/03(土) 20:49:180777デフォルトの名無しさん
2005/09/03(土) 22:11:540778デフォルトの名無しさん
2005/09/03(土) 23:56:04の一覧を取得して、呼び出す(Java のリフレクションに相当)
ことをしたいのですが、できるんでしょうか?
0779デフォルトの名無しさん
2005/09/04(日) 01:03:23OpenToolsAPIでプロパティの取得は可能らしい。
ただ、資料が少なかったり、バージョンによって細かい違いが
あったりと、色々と扱い難い部分があるらしい。
0780デフォルトの名無しさん
2005/09/04(日) 04:18:030781デフォルトの名無しさん
2005/09/04(日) 04:21:270782デフォルトの名無しさん
2005/09/04(日) 08:36:57RTL
0783780
2005/09/04(日) 08:41:40MultiSelectはtrueにしてありますが、駄目です。
エクスプローラなどの様に、マウスドラッグで範囲選択したいのですが…
0784デフォルトの名無しさん
2005/09/04(日) 09:54:00できるよ。操作感もエクスプローラーとおなじだし。
0785デフォルトの名無しさん
2005/09/04(日) 10:02:19君はListBoxとListViewを混同してはいないか?
0786デフォルトの名無しさん
2005/09/04(日) 18:30:50で、質問なのですが、ListView の Report で右詰で表示したいのですが、
どのような方法があるのか、ご存知の方がいましたら教えていただきたく
お願いします。
0787デフォルトの名無しさん
2005/09/04(日) 18:46:470788デフォルトの名無しさん
2005/09/04(日) 18:52:450789デフォルトの名無しさん
2005/09/04(日) 19:05:230790デフォルトの名無しさん
2005/09/04(日) 20:21:16ありあとあんした。
0791デフォルトの名無しさん
2005/09/04(日) 20:22:01このような病的で異常な社会になったのは、朝鮮部落出身の指導者池田が動かす公明党が政権をとるようになってからだ。創価の反仏教仏道に反するテロ行為は以前から。町でテロ、地方でテロ、国では公明が異常で創価構成員の為だけの法律を次々に捏造し続けている。
今度の選挙で自公連立政権が続くことになれば、日本はマジにおしまい
0792780
2005/09/05(月) 00:00:27>>785
ListViewと勘違いはしてません。
普通にできますか。なにか設定する必要は無いんですよね?
僕の環境の問題なんですかね。キーボードでしか複数選択できないんですよね。
なんかまちがっちゃってプロパティとかを弄った可能性があるので、
これからListBoxを使った簡単なプログラムを作って試してみます。
0793デフォルトの名無しさん
2005/09/05(月) 03:42:30Del6Personalでコマンドラインアプリを作りたいんですがどうすれば良いですか?
コンソールアプリを作ったり、起動時にメインフォームを非表示にする方法とかは解るのですが
コマンドラインアプリ(の土台)の作り方が解りません。(コマンドライン引数の扱いとかは解ります
ググってもコマンドラインアプリが作れるという情報だけで
具体的な方法は解りませんでした。どうかご教示願います。
0794デフォルトの名無しさん
2005/09/05(月) 03:46:33意味不明。
とりあえずReadlnでユーザの文字列を受け取れるが?
0795デフォルトの名無しさん
2005/09/05(月) 03:55:560796デフォルトの名無しさん
2005/09/05(月) 03:56:32というかコマンドラインアプリって、cmd.exeみたいなやつのことだよね?
0797デフォルトの名無しさん
2005/09/05(月) 03:57:34作った事ないけどww
0798デフォルトの名無しさん
2005/09/05(月) 04:07:10{$APPTYPE CONSOLE}
uses
SysUtils;
var
yourName: String;
begin
Write( 'Please type your name here: ' );
Readln( yourName );
Writeln( 'Hello, ' + yourName + '.' );
{ 終了メッセージを表示 }
Write( 'Press any key to continue' );
Readln;
end.
0799デフォルトの名無しさん
2005/09/05(月) 04:08:45とかで起動するアプリなら、たんにコンソールアプリでコマンドラインパラメータ
受け取って処理するだけ。
0800デフォルトの名無しさん
2005/09/05(月) 04:31:04ListBoxを貼る
項目を適当に10個くらい追加する
MultiSelectをTrueにする
実行
一番上の項目からドラッグ開始
一番下の項目でドラッグ終了
これで複数選択できなかったらおかしい
0801デフォルトの名無しさん
2005/09/05(月) 16:26:49スキル 超初心者
環境 Windows200SP4 + Delphi 6 Personal
作成目標アプリ 学校の数値解析用デジタイザー(Jpeg画像からXとYの位置をリスト形式で取り出す)
質問1
fStr := OpenPictureDialog1.FileName;
Image4.Picture.LoadFromFile(fStr);
で張り付けた画像をボタンで90度回転させたいのですが、どうしたらいいのですか?
質問2
StringGridのセルの幅を個別に決めたいのですが、どう書けばいいのですか?
初心者的質問ですが、よろしくお願いします。
0802デフォルトの名無しさん
2005/09/05(月) 16:53:52>質問1
メソッド一発で回転させるなんてのは無理なはず
自分でゴリゴリソース書いてください
>質問2
こんな感じ?
StringGrid1.ColWidths[0] := 10;
StringGrid1.ColWidths[1] := 20;
StringGrid1.ColWidths[2] := 30;
0803デフォルトの名無しさん
2005/09/05(月) 17:01:12回答ありがとうございました。これでリスト関係は「見た目」だけ完成しました。
(まだ変換式や計算式を書いてない)
今、画像から拾ったXYの点をプレビュー表示させる下準備を書いてました。
がんばるべ。完成したら公開します。
0804デフォルトの名無しさん
2005/09/05(月) 17:57:39画像の回転なら↓を参考にすればどうかなぁ
http://wblue.web.infoseek.co.jp/lecture/one/04/o004.htm
0805デフォルトの名無しさん
2005/09/05(月) 18:49:54>張り付けた画像をボタンで90度回転させたいのですが
90度の回転は x,y をちょっと考えて入れ替えるだけ。簡単
0806801
2005/09/05(月) 19:27:57回答ありがとうございます。
うはーーー・・・・結構な行数のコードになりそうですね。
でも確かに私が求めていたコードのようです。自由角度で変換できるのは魅力です。
学生の為に頑張ってプログラムしてみます。
0807デフォルトの名無しさん
2005/09/05(月) 19:35:29自前での処理に挫折したら探してみ
0808デフォルトの名無しさん
2005/09/05(月) 21:09:170809デフォルトの名無しさん
2005/09/05(月) 21:59:41> 自由角度で変換できるのは魅力です。
自由角度の回転と90度の回転はロジックが全く別だよ。後者はロスレスだし。
0810デフォルトの名無しさん
2005/09/05(月) 22:01:5389度と90度は難しさの程度が段違い。
0811デフォルトの名無しさん
2005/09/05(月) 22:55:22>張り付けた画像をボタンで90度回転させたいのですが、どうしたらいいのですか?
横に並んだピクセルを縦に並べるだけ。Pixels つかっても Scanline つかっても
>>805 で書いたとおり、並べ替える部分のコードはたった1行
0812デフォルトの名無しさん
2005/09/05(月) 22:58:31正確に言うと、for文二行、ピクセルを移すコード1行、そのはかは幅と高さを入れ換えたビットマップ
を用意するコードだけ。
0813デフォルトの名無しさん
2005/09/06(火) 01:26:320814デフォルトの名無しさん
2005/09/06(火) 01:55:45時計回り90度 Pixels版
uses
Jpeg;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.AutoSize := true; Image1.Picture.LoadFromFile('c:\test.jpg');
end;
0815デフォルトの名無しさん
2005/09/06(火) 01:56:35procedure TForm1.Button1Click(Sender: TObject);
var
src, dst: TBitmap;
w, h, x, y: integer;
begin
w := Image1.Width; h := Image1.Height;
src := TBitmap.Create;
dst := TBitmap.Create;
try
src.PixelFormat := pf24bit;
src.Width := Image1.Width;
src.Height := Image1.Height;
src.Canvas.Draw(0,0, Image1.Picture.Graphic);
dst.Assign(src);
dst.Width := h;
dst.Height := w;
for y := 0 to h-1 do
for x := 0 to w-1 do
dst.Canvas.Pixels[h-1-y,x] := src.Canvas.Pixels[x,y];
Image1.Picture.Bitmap.Assign(dst);
finally
src.Free;
dst.Free;
end;
end;
0816デフォルトの名無しさん
2005/09/06(火) 01:58:35procedure TForm1.Button2Click(Sender: TObject);
var
src, dst: TBitmap;
w, h, x, y: integer;
ps, pd: PRGBTriple;
begin
w := Image1.Width; h := Image1.Height;
src := TBitmap.Create; dst := TBitmap.Create;
try
src.PixelFormat := pf24bit;
src.Width := Image1.Width; src.Height := Image1.Height;
src.Canvas.Draw(0,0, Image1.Picture.Graphic);
dst.Assign(src);
dst.Width := h; dst.Height := w;
for y := 0 to h-1 do
begin
ps := src.ScanLine[y];
for x := 0 to w-1 do
begin
pd := dst.ScanLine[x]; inc(pd,h-1-y);
pd^ := ps^;
inc(ps);
end;
end;
Image1.Picture.Bitmap.Assign(dst);
finally
src.Free; dst.Free;
end;
end;
0817デフォルトの名無しさん
2005/09/06(火) 02:50:280818デフォルトの名無しさん
2005/09/06(火) 08:47:00ここにあるかも
ttp://code.junki.main.jp/
0819デフォルトの名無しさん
2005/09/06(火) 08:58:58http://blog.livedoor.jp/junki560/archives/29060007.html
[Delphi] VCL TBitmap Rotate
http://blog.livedoor.jp/junki560/archives/29406038.html
[Delphi] VCL TBitmap Rotate revised
http://blog.livedoor.jp/junki560/archives/30000740.html
0820デフォルトの名無しさん
2005/09/06(火) 22:17:280821デフォルトの名無しさん
2005/09/06(火) 22:20:010822デフォルトの名無しさん
2005/09/06(火) 22:20:030823デフォルトの名無しさん
2005/09/06(火) 23:10:12なるほど・・・
C++とかのほうが就職に役立つ?
0824デフォルトの名無しさん
2005/09/06(火) 23:14:530825デフォルトの名無しさん
2005/09/06(火) 23:27:05重要なのは「プログラミングやってた」という話のネタが増えること
適当に嘘やでっち上げ絡めながら離せば、必ず役には立つだろう
そして、DelphiはC++よりも初心者に向いてるからやっといて損はないだろう
0826デフォルトの名無しさん
2005/09/06(火) 23:28:17各行が"C121"とか"TR300"とかのような、
" (何文字かの)アルファベット+(何文字かの)数値"というようなパターンの文字列のアルファベットと数値の境に
タブ文字を入れる関数を作っています。
境目を特定する方法までは実装できたのですが、その境目の位置にタブ文字を入れる方法がわかりません。
できればヒントなどをください。
0827デフォルトの名無しさん
2005/09/06(火) 23:35:09そこにタブを入れれば良いんじゃね?
0828デフォルトの名無しさん
2005/09/06(火) 23:42:24境目を特定できているのなら
s := 'TR300';
pos := 2; //境目の位置
s := Copy(s, 1, pos) + #9 + Copy(s, pos + 1, Length(s) - pos);
0829826
2005/09/06(火) 23:43:56それって、たとえば仮に文字列の変数をS、問題の位置をiとした場合、
S[i] := #9;
ってするんですよね? (今のところそれしか知らないので、ほかにあったら教えてください)
一応、それやってみて(すみません、最初に書いておくべきでした)アクセス範囲エラーがでたので、質問させてもらったんで・・・
0832828
2005/09/06(火) 23:55:20s := 'TR300';
pos := 2; //境目の位置
Insert(#9, s, pos + 1);
まだ見ているといいんだが。
0833826
2005/09/07(水) 00:19:39まだ見てますよ。その方法だと短くて済みますね。(それにシンプルだし)
最初、関数と同じようにやってしまって少しとまどいましたが、バッチリでした。
おかげでソフトが完成しそうです(といってもまだ試作品なんですが)。
ありがとうございました。
0834デフォルトの名無しさん
2005/09/07(水) 07:19:30そういう文字列処理は最初にバッファを大きくとって { SetLength }
先頭から順に1文字づつ処理しながらコピーして
最後にバッファを切り詰めるというのが言語問わず定型で、それに慣れた方がいいよ
0835デフォルトの名無しさん
2005/09/07(水) 07:22:45Delphi5 Win98SE です。
C:\Program Files\'アプリ名'フォルダにコピーした
ファイル'File.dat'を'File.cab'に変更する方法をお教え下さい。
コピー前に'File.dat'は'File.cab'から手作業で拡張子を変更しています。
ファイルのコピーはできましたが、
拡張子を変更する方法が分かりません。
宜しくお願いします
0836デフォルトの名無しさん
2005/09/07(水) 07:26:45Copy('File.dat','File.cab',True);
0837デフォルトの名無しさん
2005/09/07(水) 07:54:50WinXP Del6Personalでコンソールアプリを作ってるのですが
入力位置を表すカーソル(キャレット)を一時的に非表示にするにはどうすれば良いですか?
非表示にする方法(消去ではなく非表示であり、Writeによる入力は出来ないと困ります)と
再度表示する方法を教えてください。
0838デフォルトの名無しさん
2005/09/07(水) 08:09:240839デフォルトの名無しさん
2005/09/07(水) 08:11:05http://quake3.delphigl.com/
0840デフォルトの名無しさん
2005/09/07(水) 08:39:50どうしたの?
0841デフォルトの名無しさん
2005/09/07(水) 08:42:210842デフォルトの名無しさん
2005/09/07(水) 08:48:290843デフォルトの名無しさん
2005/09/07(水) 09:13:470844デフォルトの名無しさん
2005/09/07(水) 09:16:25久々にわろうた(AA略
0845デフォルトの名無しさん
2005/09/07(水) 09:54:54バカジャネーノ
0847デフォルトの名無しさん
2005/09/07(水) 10:37:36さらに的外れなレスを被せると、Kylixなめんなよと
0848デフォルトの名無しさん
2005/09/07(水) 11:30:12あれPASCALじゃなくてC++でしょ?
0849デフォルトの名無しさん
2005/09/07(水) 12:25:01Kylix3からは Object Pascal & C++
0850デフォルトの名無しさん
2005/09/07(水) 13:01:27サンキュー
0851デフォルトの名無しさん
2005/09/07(水) 13:25:18Kylix3からは Delphi言語 & C++
0852デフォルトの名無しさん
2005/09/07(水) 13:29:59有難うございました
0853デフォルトの名無しさん
2005/09/07(水) 14:31:18Windowsで動いてるくせにM$の悪口いうな!
いいたいのだよきっと
0854デフォルトの名無しさん
2005/09/07(水) 15:12:23趣味でやるなら好きなの選べばいいし、仕事なら仕事なりの都合ってものもある。
ただそれだけの話なのにね。
0855デフォルトの名無しさん
2005/09/07(水) 15:14:16Windowsを使っててMSの悪口いう分裂病だな
っていいたいのだよきっと
0856デフォルトの名無しさん
2005/09/07(水) 15:15:410857デフォルトの名無しさん
2005/09/07(水) 15:24:31ほほー、俺は今も仕事ではD6だから、それ以降は知らんのだけれど
そんなに糞なんだ。
0858デフォルトの名無しさん
2005/09/07(水) 15:40:560859デフォルトの名無しさん
2005/09/07(水) 16:16:190860デフォルトの名無しさん
2005/09/07(水) 16:36:210861デフォルトの名無しさん
2005/09/07(水) 17:57:43var
i: Integer;
s: String;
begin
i := 128;
s := IntToHex(i, 2) <-- s = '0080'
この時、バイト配列bBuff[0]に00を、bBuff[1]に80を入れるには
どうすればよいのでしょうか
end;
0862デフォルトの名無しさん
2005/09/07(水) 17:58:410863デフォルトの名無しさん
2005/09/07(水) 18:12:53s := IntToHex(i,4); //IntToHex(i,2)だと '0080' にはならない
bBuff[0] := StrToInt('$' + Copy(s, 1, 2));
bBuff[1] := StrToInt('$' + Copy(s, 3, 2));
文字列 s を介さない方が簡単なんだが
bBuff[0] := i shr 8;
bBuff[1] := i and $FF;
0864デフォルトの名無しさん
2005/09/07(水) 18:13:47でいいじゃん。とおもったけどバイトオーダーが逆になるな・・・
0865863
2005/09/07(水) 18:19:56なるほど。頭いいな。バイトオーダーは最初からひっくり返しておけばいいか。
PWORD(@bBuff[0])^ := Swap(128);
0866861
2005/09/07(水) 18:20:57>>863
ちょうど今、私も上の方法思いつきました。
下の方は・・・意味不明ですがこっちの方がエレガントっぽいので調べてみます。
>>864
バイトオーダーとかまた謎の単語が出てきました。
こちらも調査してみます。
0867デフォルトの名無しさん
2005/09/07(水) 18:22:09ここ読むといいのに
ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N016.html
0868861
2005/09/07(水) 18:24:04じっくり学んでみたいと思います。
0869デフォルトの名無しさん
2005/09/07(水) 18:32:44http://www.de.freepascal.org/lazarus/
ここで落とせるよ
0870デフォルトの名無しさん
2005/09/07(水) 18:57:580871826
2005/09/07(水) 21:39:55あーなるほど、たしかに。
この関数を組み込むソフトは、仕事場Win98マシン(MMX Pentium搭載機。開発マシンとは別)のExcel上の作業を支援するソフトで、
Excelとの同時使用を前提にしたものですから、少しでもリソース(これ重要)とかオーバーヘッド(これは無視してもいい?) とかを
切りつめないと話にならないので・・・(でなきゃ作業支援の意味がなくなってしまいますし)
仰るとおり、自分もその方法の方が確かに汎用的だと思います。
まぁこの場合は例外中の例外ということで・・・今後改良していく場合などには参考にさせてもらいます。
ありがとうございました。
0872デフォルトの名無しさん
2005/09/07(水) 21:55:03黒、粟色など、16色しか選択できません。ColorBox のようにオプションでカスタムを
選択することもできません。16色以外を選択するようにはできないものなのでしょうか?
0873デフォルトの名無しさん
2005/09/07(水) 22:19:05var
a, b: TPoint;
begin
a := Point(5, 3);
b := a;
というように、同じレコード型なので代入することができますが
if a = b then
のように、比較は無理なのでしょうか。
0874デフォルトの名無しさん
2005/09/07(水) 22:22:390875デフォルトの名無しさん
2005/09/07(水) 22:29:07でどうよ。
TPointだったら
if Int64(a) = Int64(b) then
こういうのもあるにはあるが・・・
0876デフォルトの名無しさん
2005/09/07(水) 22:30:210877デフォルトの名無しさん
2005/09/07(水) 22:35:380878デフォルトの名無しさん
2005/09/07(水) 22:39:590879デフォルトの名無しさん
2005/09/07(水) 22:44:320880デフォルトの名無しさん
2005/09/07(水) 22:54:010881デフォルトの名無しさん
2005/09/07(水) 22:55:000882デフォルトの名無しさん
2005/09/07(水) 22:59:060883デフォルトの名無しさん
2005/09/07(水) 23:04:50DelphiってOOPLとして10年は遅れてますね。
0884デフォルトの名無しさん
2005/09/07(水) 23:08:260885デフォルトの名無しさん
2005/09/08(木) 02:03:07気がすまないんだろうなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
自分が使いたい言語+開発環境使ってればいいじゃんwwwwwwwwwwwwwwwww
いちいち他人に干渉してるとか相当暇なんだなwwwwwwwwwwwwwwwwwwwwwww
さすが厨房言語wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0886デフォルトの名無しさん
2005/09/08(木) 02:42:26これもかなり恥ずかしい
0887デフォルトの名無しさん
2005/09/08(木) 03:46:14趣味なら好きに選べばよい。
仕事なら、作って納めて金もらってナンボだから、
信頼性とか安定性とか生産性とか実行環境とか、総合的に判断して
使用言語は決められるものだ。
単に「いつも使ってるから」でも十分に理由になる。
クライアントに納めて問題がないなら。
10年遅れていようが関係ねーんだ、んなもん。
現場で「できません」は通用しない。「やらなきゃいけない」のが仕事だ。
他の言語をけなして、自分の好きな言語の優越性にしがみついてるなら
プロとは言えない。
アマチュアなら、せいぜいほざいてろ。
0888デフォルトの名無しさん
2005/09/08(木) 03:55:220889デフォルトの名無しさん
2005/09/08(木) 04:11:04言語のけなしあいはつまんないからやめとけ。
0890デフォルトの名無しさん
2005/09/08(木) 04:26:520891デフォルトの名無しさん
2005/09/08(木) 04:35:22あえてVB.NETを使わずにドマイナーなDelphiを使うのもその為。
0892デフォルトの名無しさん
2005/09/08(木) 04:35:23個人差あるんじゃないのかなあ・・・
僕はプロ目指してC++とかDelphi勉強してるが、なるべくきれいに書くようにしてる。
デバッグのときに見やすいし
0893デフォルトの名無しさん
2005/09/08(木) 04:39:18でも仕事で何度もプログラム書いてくると、
当然、バグとか発生した場合にデバッグするわけだけど、
汚いコードだとデバッグする本人が苦労したりするわけで。
すると自然になるべくきれいなコードを書くようになるわけさ。
そうしないと自分が大変だからね。
経験がコードをきれいにするって感じかな。
全ての人にあてはまるわけじゃないと思うけどね。
0894デフォルトの名無しさん
2005/09/08(木) 04:40:210895デフォルトの名無しさん
2005/09/08(木) 04:48:180896デフォルトの名無しさん
2005/09/08(木) 07:23:05構造体の場合は代入はメモリ内容を複製すればいいけど
「一致」の概念は人、状況によって違いがありえるから難しい。
もちろんTPointであれば2つのメンバが同じ値という定義で全員納得するだろうけどね。
というわけで TPointについては PointsEqual という関数が用意されている。
0897デフォルトの名無しさん
2005/09/08(木) 08:33:27うーむ、一理ある。 とか思ってしまった。
0898デフォルトの名無しさん
2005/09/08(木) 09:24:43コメント抜いたコード渡すだけで十分。
0899デフォルトの名無しさん
2005/09/08(木) 10:11:47プロよりきれいなコードを書く趣味グラマは結構沢山いるに違いない・・・と思うけど
0900デフォルトの名無しさん
2005/09/08(木) 10:20:34ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その25
http://pc8.2ch.net/test/read.cgi/tech/1125304359/
0901デフォルトの名無しさん
2005/09/08(木) 13:05:070902デフォルトの名無しさん
2005/09/08(木) 14:50:07DefaultExtは、すでに拡張子がついている場合はつけないはずですよね?
DefaultExtで[ini]と書いているんですが、ファイル名.iniで保存すると
ファイル名.ini.iniになってしまいます。
DefaultExtに何も書かなくても拡張子が勝手につくんですが、Filterにそういう機能があるんでしょうか・・?
0903デフォルトの名無しさん
2005/09/08(木) 15:17:160904デフォルトの名無しさん
2005/09/08(木) 16:06:47Delphi5です。
Windows各OS(98以降)の、システムフォルダのパスを取得する方法をお教え下さい。
0905デフォルトの名無しさん
2005/09/08(木) 16:13:54SHGetSpecialFolderLocation
SHGetPathFromIDList
0906デフォルトの名無しさん
2005/09/08(木) 16:46:03へえ(もしかしたら初耳じゃないかも知れないけど記憶が曖昧)
自分は普通にGetSystemDirectory (API)を使ってるな〜
0907デフォルトの名無しさん
2005/09/08(木) 17:11:52JCL(JEDI)はどうよ。
GetPersonalFolderみたいな感じで色々あるが。
0909デフォルトの名無しさん
2005/09/08(木) 17:16:420910デフォルトの名無しさん
2005/09/08(木) 17:28:22すんません。事故解決。自分で拡張子つけるコ−ドを昔書いたんだった・・。馬鹿すぎ。
0912904です
2005/09/08(木) 21:54:50906さんの方法で解決しました。
板違いと分からず質問してました。
他の方のアドバイスの方法も調べてみます。
0913デフォルトの名無しさん
2005/09/09(金) 00:10:360914デフォルトの名無しさん
2005/09/09(金) 00:31:33KS?
0915デフォルトの名無しさん
2005/09/09(金) 00:42:531.httpsのページへIDとパスワードを入力しログインする。
2.ログイン後のページにある入力項目を送信する。
ログインさえも出来ません・・・
よろしくお願いします
0916デフォルトの名無しさん
2005/09/09(金) 06:19:44自分で書いたコードぐらい示せよ
0917デフォルトの名無しさん
2005/09/09(金) 06:41:230918デフォルトの名無しさん
2005/09/09(金) 06:46:54この aaaa の部分に改行を入れて複数行に表示したいのですが
どうすればいいのでしょうか?
0919デフォルトの名無しさん
2005/09/09(金) 07:05:370921デフォルトの名無しさん
2005/09/09(金) 10:56:25コードっていうより、libeay32.dllとssleay32.dllをダウンロードしてあるか
それが問題。
0922デフォルトの名無しさん
2005/09/09(金) 13:15:41Interceptとか使うんじゃなかったっけ
0923デフォルトの名無しさん
2005/09/09(金) 13:30:12詳しく教えて。
0924デフォルトの名無しさん
2005/09/09(金) 13:58:58Indy I/O Handlers に明らかにそれっぽいのあるから
それを IdHTTP とかの I/O Handler に指定してがんばって
後Delphiに関係なくOpenSSL用のdllは必要>>921参照
0925デフォルトの名無しさん
2005/09/09(金) 14:02:34http://onigiri.s3.xrea.com:8080/delphi/index.php?Indy
0926デフォルトの名無しさん
2005/09/09(金) 20:18:17あれって背景というか枠というか、その辺はいじれないんでしょうか。
ハイライト+シャドウじゃなくて、平面のメニューにしたかったんですが。
0927デフォルトの名無しさん
2005/09/09(金) 20:26:120928915
2005/09/09(金) 21:44:42を参考にしましたが・・・
サンプル欲しいとは言わないけど、ヒントだけでも教えて欲しいと思ってのかきこです。
htmlのソースは次のとおり
<INPUT type="text" name="loginid" maxlength="8" size="12" onFocus="fb_chk(1)" onBlur="focus_passwd();fb_chk(0)" style="ime-mode:disabled" AUTOCOMPLETE="on">
<INPUT type="PASSWORD" name="passwd" maxlength="10" size="15" value="" onFocus="fb_chk(1);LoginCheck(document.F1.set.value)" onBlur="fb_chk(0)">
試したコードは以下のものです。
procedure TForm1.IdSSLIOHandlerSocket1GetPassword(var Password: String);
begin
Password := 'aaaa';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Text := IdHTTP1.Get('https://www.********');
end;
function TForm1.IdSSLIOHandlerSocket1VerifyPeer(Certificate: TIdX509): Boolean;
begin
if Pos('INTELICOM', UpperCase(Certificate.Subject.OneLine)) > 0 then
Result := True
Else
Result := False;
end;
Indyスレ向きでしょうかね
0929デフォルトの名無しさん
2005/09/09(金) 22:02:45一番重要なフォームタグを省かないで欲しい。話はそれからだ。
0930デフォルトの名無しさん
2005/09/09(金) 22:13:09http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=511&lngWId=7
http://homepage1.nifty.com/wizman/component/menudeco/index.html
http://www.shagrouni.com/english/software/xpmenu.html
このへんか?
0931デフォルトの名無しさん
2005/09/09(金) 23:37:57まさに。
ソース見て勉強してきます。
0932915
2005/09/10(土) 21:17:37>>916
おまえみたいなヤシが居るからDelphiはマイナーなままなんだよ!ほーあw
0933915
2005/09/10(土) 21:19:32おまえ解るのか?
って喪前みたいな超初心者じゃ解らんだろうなw
プゲラ
0934名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:19:46(v ゚,_ゝ゚)v < てめーはもう用無しだ
/ \ \________
/ /\ / ̄\
_| ̄ ̄ \ / ヽ \_
∧_∧ \ ̄ ̄ ̄ ̄ ̄ ̄ \__)、
/(´Д` )ヽ → ||\ \
mn´(_(_nm .||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
 ̄ ̄ ̄  ̄ ̄ .|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
教えてくださいお願いします .|| .||
Before After
こうですか?わかりません><
0935名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:50:570936名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:57:51かわいい・・ハァハァ
0937名無しさん@そうだ選挙に行こう
2005/09/11(日) 10:21:180938デフォルトの名無しさん
2005/09/12(月) 02:22:47可能なら方法もちらっと教えてください
0939デフォルトの名無しさん
2005/09/12(月) 02:32:010940デフォルトの名無しさん
2005/09/12(月) 02:49:310941デフォルトの名無しさん
2005/09/12(月) 10:49:58Indy9のIdTCPClientというコンポーネントを使ってサーバーへの接続を試みているのですが
IdTCPConnectionの878行目で必ずデバッカ例外が発生して
EIdNotConnectedの例外を生成しましたとでて落ちてしまいます。
ソースを見てみたのですがどういう作業をしている時に何が悪くて落ちているのかもわからないです
超初心者でごめんなさい。解決方法等あれば教えて下さい。お願いします。
Delphi6Personal使用です。
0942デフォルトの名無しさん
2005/09/12(月) 11:12:060943デフォルトの名無しさん
2005/09/12(月) 12:02:31>>941
Indyスレ行ってみれば?
0944ななしへたぐらま ◆XcB18Bks.Y
2005/09/12(月) 12:15:27過去スレはh抜きでも特に不評はなかったのでこれでいこうと思いますが.
0945デフォルトの名無しさん
2005/09/12(月) 16:21:14そこまで言うなら誘導してあげなよ
>>941
http://pc8.2ch.net/test/read.cgi/tech/1093654251/l50
>>944
くだC++には兄弟の紹介あるのに、くだDelに紹介が無いのは何故?
0946デフォルトの名無しさん
2005/09/12(月) 16:36:25Delphiを使う分にはBCBの知識は必要ないからでは
0947デフォルトの名無しさん
2005/09/12(月) 17:48:390948ななしへたぐらま ◆XcB18Bks.Y
2005/09/12(月) 19:09:56C++Builderのくだすれへのリンクも追加してみました.
これで問題なければ建ててみます.
==== >>1用テンプレ:はじめ ============
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その26
http://pc8.2ch.net/test/read.cgi/tech/1121249711/
<兄弟スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/
<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その25
http://pc8.2ch.net/test/read.cgi/tech/1125304359/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
==== >>1用テンプレ:おわり ============
つづく
0949ななしへたぐらま ◆XcB18Bks.Y
2005/09/12(月) 19:14:43==== >>2用テンプレ:はじめ ============
過去スレ
25 ttp://pc8.2ch.net/test/read.cgi/tech/1119008091/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1115581376/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1110470895/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1107332482/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1104511938/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1101530485/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 ttp://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1076609666/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1074523803/
09 ttp://pc5.2ch.net/test/read.cgi/tech/1071294733/
08 ttp://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
07 ttp://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
06 ttp://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
05 ttp://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 ttp://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
03 ttp://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
02 ttp://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
01 ttp://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
==== >>2用テンプレ:おわり ============
以上.
0950デフォルトの名無しさん
2005/09/12(月) 19:15:24・変数Aを外部プログラムへ引数として渡して処理
→外部プログラムの終了を確認してShowMessage
というのはどうやればいいんでしょうか?
LAMEのフロントエンドを作りたいんですが…
(既存のものは、曲間の無音無しを指定できないので)
0951デフォルトの名無しさん
2005/09/12(月) 19:34:36どちらもAPIを使用すればオケ。
CreateProcessで起動、WaitForSingleObjectで終了待ち。
上記でググればサンプルはいくらでも見つかると思う。
0952デフォルトの名無しさん
2005/09/12(月) 20:16:08これに相当するものはどれにあたるのでしょうか?
0953941
2005/09/12(月) 20:20:060954デフォルトの名無しさん
2005/09/12(月) 20:40:30即レスありがとうございます。CreateProcess+WaitForSingleObjectで何とかなりそうです。
ついでと言っては何ですが、もうひとつお願いします。
外部DLL(Lame_enc.DLLやogg_enc.DLL)の利用はどうすれば良いのでしょうか?
0955デフォルトの名無しさん
2005/09/12(月) 20:45:54>>950→>>951
0956デフォルトの名無しさん
2005/09/12(月) 21:02:440957デフォルトの名無しさん
2005/09/12(月) 21:30:57ハケーソww
ありがとうございました。
0958906
2005/09/12(月) 21:35:52VBのFrame同様の左肩に文字列を入れたいのならGroupBox
それ以外だとPanel、Shape、Bevelあたり
GroupBoxはRadioButtonを載せる場合が主で
コンテナとして一番良く使われるのはPanel
ShapeとBevelは見た目だけの枠
0959ななしへたぐらま ◆XcB18Bks.Y
2005/09/12(月) 21:50:00もっとも私のは想像だったのでVB利用者のレスが来て良かったです.
>>952
ちなみにBevelコンポはStyleプロパティをbsFrameにすると
VBのFrameみたいな(GroupBoxコンポと同じ)枠になります.
0961デフォルトの名無しさん
2005/09/13(火) 06:05:15これは本当ですか?
0962デフォルトの名無しさん
2005/09/13(火) 07:07:19>380 名前:デフォルトの名無しさん 投稿日:2005/09/06(火) 05:37:51
>MMXも使えるけど
>Delphi自体が遅いから速度的な解決はできないけどな
>Delphiはパッパッと作るためのものだから(言語的, 開発環境的に)
>深く何かを作ろうと思うとできない
これは正確ではない。
Delphiのコンパイラ出力は最適化を最大にしたC++と比べると多少
落ちる面がある。 が、その差が何割もあるわけではない。
最適化を使わないC++出力よりも良いコードを標準の状態で出す。
>Delphiはパッパッと作るためのものだから(言語的, 開発環境的に)
>深く何かを作ろうと思うとできない
これは全くあたらない。 同じ時間コーディングに時間をかけるなら
俺にはDelphiの方が効率が良いデータ構造・アルゴリズムで書ける。
つまり深く作るならDelphiの方が勝る
一般的にはデータ構造・アルゴリズムの改善の方が速度の改善につながる。
現時点のDelphiは表現可能なデータ構造はC/C++に勝るとも劣らない。
いや、列挙型、動的配列型、標準のvariant、そしてabsolute等、
C以上に低レベルの表現も可能だ。
言語構造にない表現 をしなければならない場合(たとえばコルーチン等)も、
インラインアセンブラ・アセンブラ関数を使える。
Cのコードは簡単にDelphiに変換出来るが
DelphiのコードはCには簡単に変換出来ない。
C++の場合はテンプレートを使っていると他言語に移植する作業量が大きくなる。
0963デフォルトの名無しさん
2005/09/13(火) 07:21:28お前Cやったことあるのか?
俺は両方使うけど、そいつがいってる通りパッパッと作るようだぞ
あと、Cより低レベルに扱える言語なんてアセンブリ以外にない
しかも、アルゴリズムも言語なんか関係ない
> 俺にはDelphiの方が効率が良いデータ構造・アルゴリズムで書ける。
> つまり深く作るならDelphiの方が勝る
そりゃ、お前がCできないだけだろ
> 一般的にはデータ構造・アルゴリズムの改善の方が速度の改善につながる。
うむ、でもC出かかれてきたDelphiがCの速度を越えれるわけが無い
非常に非効率
> 現時点のDelphiは表現可能なデータ構造はC/C++に勝るとも劣らない。
かなり劣る。 メモリをCの用に扱えるのか、ポインタ演算はできるのか。
> C以上に低レベルの表現も可能だ。
無理。 上でもいったけど、元がC出かかれている以上それ以下の扱いはできない
> Cのコードは簡単にDelphiに変換出来るが
> DelphiのコードはCには簡単に変換出来ない。
あたりまえ、Delphiには抽象的な扱いのものが多数ある、それをCに変換することはできない
また、CのコードもDelphiになんてできない
0964デフォルトの名無しさん
2005/09/13(火) 07:26:40一生懸命書いたんだからちょっとは褒めてやれ
> これは全くあたらない。 同じ時間コーディングに時間をかけるなら
> 俺にはDelphiの方が効率が良いデータ構造・アルゴリズムで書ける。
> つまり深く作るならDelphiの方が勝る
C言語でそんなに抽象的なデータ構造を書ける君が、
君以外の人間のことを全く考えていない君が、
すごい
0965デフォルトの名無しさん
2005/09/13(火) 07:27:04フサスレに帰れよ。ゴミ人間
0966デフォルトの名無しさん
2005/09/13(火) 07:28:19なんだ、ネタだったのか
真面にやっちゃったよ
0967962
2005/09/13(火) 07:37:26C/C++はよく使うよ。 組み込みの仕事が多いから特に。
組み込み先の環境のエミュレートコードをDelphiで書いてDLLで接続してデバッグ
後でobjにして一体のexeにして客に渡して動作チェックさせたりしてるよ。
アルゴリズムってのは、まずデータ構造ありきだよ。
その言語で、そのデータ構造が効率良く表現できないなら、その言語ではそのアルゴリズムはまともに使えない。
>でもC出かかれてきたDelphiがCの速度を越えれるわけが無い 非常に非効率
これは論理的な間違いだ。
>asmで書かれたcがasmを超えられないという事になる。
一見まともに見えるが、これだって間違いだ。
同じ時間かけてasmで書いたコードよりcのコードの方が高速な事が多い。
実際組み込みの世界でも遅延詰め込みのあるチップだと
asmレベルで必死に最適化するよりもはやc上で工夫したコードの方が速いんだよ。
>メモリをCの用に扱えるのか、ポインタ演算はできるのか。
出来る。absoluteを使えば Cより効率良く扱える。
>CのコードもDelphiになんてできない
なんで? 無理なコード書いてみて
0968デフォルトの名無しさん
2005/09/13(火) 07:40:15お前が書けないだけだろ
プゲラ
0969デフォルトの名無しさん
2005/09/13(火) 07:42:37じゃあ君は、カーネルをアセンブリで書くより
Delphiで書いたほうが早いっていってるの?
とりあえず、何もいわずにカーネルのコード読んで
どこがアセンブリで書かれてて、それはなぜCで書かれなかったのか
考えてみ
0970962
2005/09/13(火) 07:42:42書けるなら書いてみろよ。
たとえば SHの遅延スロットをアセンブラで埋めてみろ。
俺はCに負けた事は素直に認めるが、やったことない奴が
書けるというのは認められないな。
俺はお前の書いたアセンブラコードより早くなるCコードを書いてみせるよ。
0971962
2005/09/13(火) 07:45:46必要があって、CでもDelphiでも使っていいと言われたら
カーネルもDelphiで書くだろうよ。
タスク切り替えは単にスタックポインタの置き換えじゃないか。
0972デフォルトの名無しさん
2005/09/13(火) 07:49:00スイッチなんて、Cで書いても遅いからアセンブラで書くのに
Delphiなんかでかいたら、どうなるかな最新スペックのマシンでも
一気に68Kに逆戻りか?
0973デフォルトの名無しさん
2005/09/13(火) 07:51:54よく社会で渡っていけるなと関心する
0974デフォルトの名無しさん
2005/09/13(火) 07:52:580975962
2005/09/13(火) 07:54:51ハードも叩けないというのは認識が正しくない
CというがCこそ言語仕様上はハードを叩けない。
Delphiは言語仕様上インラインアセンブラが組まれているので言語上で叩ける事になる。
カーネルのようなOSの助けが少ない場面で必要になるのはリンカーだ。
Cだと、Cの言語仕様にはないリンカで柔軟に再配置が出来る。
Delphiの場合、普段はリンカを意識する事は殆どない。
が、こいつさえ作り直せばいいわけだ。
スイッチ? switch/ caseの事? あるいは別の専門用語?
0976デフォルトの名無しさん
2005/09/13(火) 08:12:28見てて痛いからもういいよ
0977デフォルトの名無しさん
2005/09/13(火) 08:24:360978962
2005/09/13(火) 08:25:47SHにはSH特有の問題があるのでasmで書くよりCの方が早い事が多いのであって
PCのようなCISCの場合は、asmで工夫すれば早く出来る場面も多い。
SH特有の問題というのは
・ バス幅より狭い命令ワード・この為に埋めるべきスロットが生じる
・ 貧弱な命令体系 asmで工夫して使えるような命令が無い
(DSP命令は命令ワードが倍になる為、結局スロットが埋まって効率が上がらない)
0979デフォルトの名無しさん
2005/09/13(火) 08:29:30http://www.forest.impress.co.jp/article/2005/08/31/whinny.html
ってどう思う?
結構いい感じな気がするんだが。
0980デフォルトの名無しさん
2005/09/13(火) 08:33:340981デフォルトの名無しさん
2005/09/13(火) 08:39:08紙2001よりは良さそうだな
0982デフォルトの名無しさん
2005/09/13(火) 08:40:24埋めたいんならネタじゃなく何か有意義な事書けよ
0983デフォルトの名無しさん
2005/09/13(火) 08:58:46http://hp.vector.co.jp/authors/VA014436/prg_memo/ccpp/c_d.html
int *temp temp:^Integer ポインタ変数の定義
*temp temp^ ポインタ変数の示す中身
&ptr @ptr 又は Addr(ptr) 変数のアドレスを得る
0984デフォルトの名無しさん
2005/09/13(火) 09:41:35イタイ比表?
0985デフォルトの名無しさん
2005/09/13(火) 09:55:57でも後半>>962が言ってる事が理解できない俺の頭も痛いかもしれん
勉強しよう・・・。
0986デフォルトの名無しさん
2005/09/13(火) 10:12:27やるべき事は、
スレッドの場合レジスタの保存とスタックの切替、コルーチンとほぼ同じだ。
タスクの場合はさらに、仮想メモリとかの資源の切り替え。
スタックを切り替える時点で、どっちにしてもアセンブラを使わないと書けない。
0987デフォルトの名無しさん
2005/09/13(火) 13:52:090988デフォルトの名無しさん
2005/09/13(火) 14:23:410989デフォルトの名無しさん
2005/09/13(火) 14:26:280990906
2005/09/13(火) 14:27:30そうじゃないとCの存在意義がなくなるでしょ?
だってDB関連の開発では
Delphi>>>>>>>>>>>>>>>>>>>>>>>>>C
なんだから
0991デフォルトの名無しさん
2005/09/13(火) 14:37:220992906
2005/09/13(火) 14:42:17↑次スレ立てたよ
0993デフォルトの名無しさん
2005/09/13(火) 14:44:16くだすれDelphi(超初心者)その27
ttp://pc8.2ch.net/test/read.cgi/tech/1126590039/l50
ただ1は>>948じゃねぇみたいだな
0994デフォルトの名無しさん
2005/09/13(火) 16:47:300995デフォルトの名無しさん
2005/09/13(火) 16:48:010996デフォルトの名無しさん
2005/09/13(火) 16:48:390997デフォルトの名無しさん
2005/09/13(火) 16:49:100998デフォルトの名無しさん
2005/09/13(火) 16:49:410999デフォルトの名無しさん
2005/09/13(火) 16:50:571000デフォルトの名無しさん
2005/09/13(火) 16:51:3210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。