◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

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


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1089779142/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 :デフォルトの名無しさん:04/07/14 13:25
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

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

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

2 :デフォルトの名無しさん:04/07/14 13:26
<過去ログ>
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc2.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html

3 :デフォルトの名無しさん:04/07/14 14:15
>>1

4 :デフォルトの名無しさん:04/07/14 15:25
多用する変数などをクリックするだけで
エディタに打つソフトなどってありますか?
よろしくお願いします。

5 :デフォルトの名無しさん:04/07/14 15:59
漏れは普通にエディタにはっつけて、
ダブルクリックで範囲してい、ctrl+Cとctrl+Vでコピペ

これ軽くて最強

6 :デフォルトの名無しさん:04/07/14 16:24
>>4
CLCL

7 :デフォルトの名無しさん:04/07/14 16:41
・・・・・・・。
ctrl+Mじゃだめなの?

8 :デフォルトの名無しさん:04/07/14 16:49
学校の課題でDelphiのプログラム提出しなきゃいけないんですが、なんかいい例ないですか??

9 :デフォルトの名無しさん:04/07/14 16:51
>>8
とりあえず何でもOKということ?

Flash暗算とか。

10 :デフォルトの名無しさん:04/07/14 16:52
なんでもいいっす!締め切り迫ってるので


11 :デフォルトの名無しさん:04/07/14 17:03
>>9
そのプログラムの作りかたってわかりますか?まるでちんぷんかんぷんなので…

12 :デフォルトの名無しさん:04/07/14 17:04
>>11
作り方ってあんた。。

Timer1つ使えばできるけど。。

13 :デフォルトの名無しさん:04/07/14 17:07
ラーメンタイマーがおすすめ

14 :デフォルトの名無しさん:04/07/14 17:09
12>>
Timerってなんでしょう…??

15 :デフォルトの名無しさん:04/07/14 17:17
授業で習ったことをやればいいじゃん

16 :デフォルトの名無しさん:04/07/14 17:20
>>4
CTRL+J
関係ないけどコレも使っとけ
http://www.gexperts.org/

>>8
ゲ製作技術板でソース付のプログラムがイパーイあるよ

17 :7:04/07/14 17:51
すいません。
CTRL+SPACEでした。どうしても訂正しておきたくて・・スレ汚しスマソ

18 :デフォルトの名無しさん:04/07/14 18:02
>>16
うひょー
Ctrl+J便利だな。知らんかった

19 :デフォルトの名無しさん:04/07/14 18:07
>993 :デフォルトの名無しさん :04/07/14 11:35
>TIdHTTPでGetメソッドを実行するとき、タイムアウトはどこで設定出来ますか?

>998 :デフォルトの名無しさん :04/07/14 13:13
>普通にReadTimeoutプロパティじゃないのか?

タイムアウトが発生したことは分かるプロパティのようですが、
タイムアウト時間の設定が分かりませんでつ。

20 :デフォルトの名無しさん:04/07/14 18:14
>ReadTimeout は,読み出し可能な接続まで待機する,ミリ秒単位の時間を示します。
>
>property ReadTimeout:Integer;
>
>説明
>
>ReadTimeout は Integer プロパティで,その接続が,プロトコルスタックを使用してピア接続が読み出し可能になるのを待機する時間をミリ秒単位で示します。
>
>ReadTimeout はReadFromStackで使用します。

したがってミリ秒を入力してやればいいんじゃない?

21 :19:04/07/14 18:34
しまった、自分が使ってるのはDel7でなくてBCB6なのでIndy古いかも。
ヘルプには無いし、IDEでも出てこない!

22 :デフォルトの名無しさん:04/07/14 18:35
>>16
GJ

23 :デフォルトの名無しさん:04/07/14 19:18
ランダム関数で、一度出た数値を出さないようにすることはできますか?



24 :デフォルトの名無しさん:04/07/14 20:36
ShowModalで開き、mrOKのボタンで閉じたフォームから
値をstring型を受け取る方法はありませんか?

25 :前スレ 942:04/07/14 21:06
前スレ 972
buf → @buf に変更したところ
コンパイルは出来ましたが、ERROR_MORE_DATA が帰ってきました。
bufSize の値を確認すると 4 となっていましたので 適当に 255 に変更しました。

そうすると次のエラーメッセージが表示されます。

プロジェクト .........\Project1.exe が例外により実行を停止しました。
'access violation at 0x6c90c28c: read of address 0x6c90c28c'
再開するにはステップ実行または実行を選択してください。

途中でShowMessage(msg);を実行すると期待した結果が表示されますが
戻り値では正しい値を返していないようです。
ぬるぽ みたいなのですがどこがおかしいのでしょうか?


26 :前スレ 942:04/07/14 21:06

function GetUNCName(PathStr : String) : String;
var
bufSize : DWord;
buf : TUniversalNameInfo;
msg : String;
begin
// bufSize := SizeOf(TUniversalNameInfo);
bufSize := 255; //変更する
if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL,
@buf, bufSize) > 0) then
case GetLastError of
ERROR_BAD_DEVICE : msg := 'ERROR_BAD_DEVICE';
//   ・・・ 略 ・・・
end
else
begin
msg := buf.lpUniversalName;
ShowMessage(msg); //期待した結果が表示された
end;
Result := msg;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := GetUNCName(Edit1.Text); //access violation エラー
end;


27 :デフォルトの名無しさん:04/07/14 21:50
GetMem(Pointer(buf), MAX_PATH);
bufSize := MAX_PATH;
if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL,
Pointer(buf), bufSize) > 0) then
 :
FreeMem(Pointer(buf));

28 :デフォルトの名無しさん:04/07/14 21:52
>>24
class function を使って開く

29 :デフォルトの名無しさん:04/07/14 22:11
>>26
WNetGetUniversalName を呼ぶ前に文字列を受け取るためのバッファを確保して、
そのポインタを buf.lpUniversalName に入れておくんじゃないですか?

buf は初期化されてないから、そこに入っていた値のアドレスで bufSize 分の
メモリを破壊してるんだと思います。

bufSize := 255;
buf.lpUniversalName := StrAlloc(bufSize);
if WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL,
  Pointer(buf), bufSize) > 0 then
// 略
else
  Result := buf.lpUniversalName;
StrDispose(buf.lpUniversalName);

>>24
Free する前なら Form2.Edit1.Text みたいにしてアクセスできますよ。

それとも ModalResult として文字列が欲しいんですか?
文字列を動的変数にしてそのポインタを TModalResult にキャストすれば
それも可能ですが、どこで解放するのかよく考えてください。

30 :A:04/07/15 00:25
>>23
一度出た数値を記録しておいて、もし出た数値がそれなら、
もういちど、やり直す。とか。
出る数値の数が、少なくて一定なら、あらかじめ全ての数を用意しておいて
それをランダムに並べ替えておく。とか。

31 :デフォルトの名無しさん:04/07/15 00:37
if (Hoge = 'A') or (Hoge = 'B') or (Hoge = 'C') then ...
というようなコードがあるのですが、
if Hoge = 'A' or 'B' or 'C' then ...
のような具合に簡素に記述するにはどうすれば良いのでしょうか?

32 :デフォルトの名無しさん:04/07/15 00:42
()

33 :デフォルトの名無しさん:04/07/15 00:46
1バイトなら in が使える。

34 :デフォルトの名無しさん:04/07/15 01:04
>>31
Char 型なら if Hoge in ['A'..'C'] then とか。
string なら多分それが一番短いから諦めろ。

35 :デフォルトの名無しさん:04/07/15 01:07
そうですか…ありがとうございました

36 :デフォルトの名無しさん:04/07/15 01:08
>>31
自分で関数作ってみては?

37 :デフォルトの名無しさん:04/07/15 01:10
関数の中を美しく記述したかったのです

38 :デフォルトの名無しさん:04/07/15 01:30
string対応なら AnsiIndexStr(Hoge, ['A', 'B', 'C']) >= 0 とか

39 :デフォルトの名無しさん:04/07/15 01:42
と、なると当然引数も偉いことになってるワケかな。

40 :A:04/07/15 02:06
>>24
Form2側のpublic部に、Text: string を作成。
閉じる前に、Textに、渡したい値を記憶しておく。

if Form2.ShowModal = mkOK then s := Form2.Text;

とか。

41 :デフォルトの名無しさん:04/07/15 05:14
>31
if AnsiMatchStr(Hoge, ['A', 'B', 'C', ...]) then

42 :名無しさん@5周年:04/07/15 08:41
前スレ982です。

まだ解決はしていませんが、とりあえずのんびりやっていきますね。

いろいろありがとうございましたm(_ _)m

43 :デフォルトの名無しさん:04/07/15 11:01
こんにちは、はじめまして。

DBEditなどで入力したTableデータをQuickReportにて
郵便振替など書式の決まった用紙に印刷したいのですが
(特に金額や口座番号で、機械読取りの為に枠が決まっている箇所)
QRDBTextでは文字間隔を設定する事ができません。

D6proを使用しておりますが、なにか良い解決方法を
ご指南頂ければ幸いです。

44 :デフォルトの名無しさん:04/07/15 14:20
Del対応の、いいデバッグツールってない?

45 :デフォルトの名無しさん:04/07/15 14:25
標準デバッガしかねーよ
TDは却下

46 :デフォルトの名無しさん:04/07/15 17:56
すいません、教えてください。
Form1からForm2を作って、Form2でShowMessageでダイアログを表示しました。
Form1でイベントが発生してForm2を閉じると、表示したShowMessageやMessageDlgが
そのまま残ってしまうのですが、これもForm2を閉じるタイミングで一緒に閉じる方法って
ありますか?あるようでしたら、方法を教えていただけないですか?

47 :デフォルトの名無しさん:04/07/15 18:15
ShowMessageで開いたダイアログを自動的に閉じる方法は最近の過去ログにあるはず。

48 :デフォルトの名無しさん:04/07/15 22:00
前スレでtrgbtripleについて質問したのですが
まさかもう消えているとは思わず、見れませんでした。うう・・・
どなたか回答していた人はおられたでしょうか?

49 :前スレ 942:04/07/15 22:02
>27,29

提示していただいたサンプルを試してみました。
両方ともエラーは無くなりますが、
帰ってくる値は期待しているものとは違い
文字化けしたデータが帰ってきました。

色々私なりに調べてみましたがAPIなどの
高度なレベルは手が出ませんでした。

今回はあきらめてまたレベルが上がったら挑戦してみたいと思います。
おつきあいいただき、ありがとうございました。

50 :デフォルトの名無しさん:04/07/15 23:21
>>48
どんな質問だったか忘れたが、「RGBTRIPLE」で検索してみれ。それと同じ物だ。

51 :デフォルトの名無しさん:04/07/15 23:32
>>48
windows.pasに、以下の宣言があるよ。

tagRGBTRIPLE = packed record
  rgbtBlue: Byte;
  rgbtGreen: Byte;
  rgbtRed: Byte;
end;

TRGBTriple = tagRGBTRIPLE;

ただのR、G、Bの値を入れるレコード型みたいだよ↓こんな感じで保持かな
var
  RGB : TRGBTriple;
begin
  RGB.rgbtBlue := 255;
  RGB.rgbtGreen := 255;
  RGB.rgbtRed := 255;
end;



52 :デフォルトの名無しさん:04/07/15 23:43
JEDI の言うコンポーネント集を使用したいのですが
Mozilla Public Licence ライセンスということらしいのですが、よくわかりません
↓ここを見つけたのですが意味が理解できませんでした。

http://jt.mozilla.gr.jp/MPL/MPL-1.1J.html

簡単に説明してもらえませんか
商用可なのかとかソースを公開しないといけないのかなど
注意点を教えてください

53 :デフォルトの名無しさん:04/07/15 23:57
不正確な翻訳を2chで解説してもらったライセンスなんて怖くて使えないわけだが。
原文読んで法務と相談しとけ。

54 :デフォルトの名無しさん:04/07/16 02:04
下のような手続きで、TEditに入力できるキーを制限したいのですが
引用符( ' )を「許可する入力キー」に加えると当然エラーが出てしまいます
こういう場合どうすればいいのでしょうか。
低レベルな質問で申し訳ないですがよろしくお願いします。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
AcceptStr: string;
begin

// 許可する入力キー
AcceptStr := '01234567890.,\;:@';

if (Pos(Key, AcceptStr)=0) and (Ord(Key) <> VK_BACK) then
Key := #00
else
Key := Key;

end;


55 :デフォルトの名無しさん:04/07/16 02:12
''

56 :デフォルトの名無しさん:04/07/16 02:14
#39を使え。

57 :54:04/07/16 02:15
できました('A`)
簡単な質問にわざわざ答えて頂き申し訳ない・・

58 :デフォルトの名無しさん:04/07/16 06:22
>>53
【GPL】ライセンス問題すれ 2【BSDL】
http://pc5.2ch.net/test/read.cgi/linux/1070819470/

59 :デフォルトの名無しさん:04/07/16 09:42
>>52

http://itpro.nikkeibp.co.jp/NIP/license.html
> 米ネットスケープ・コミュニケーションズが作成したライセンス
> 規定。ソースコードを複製・改変したオブジェクトコードを頒布
> するときにはGPLと同様にソースコード公開の義務が発生するが,
> GPLほど公開すべき範囲は広くない。MPLのソースコードと独自開
> 発のソースコードを組み合わせたソフトを作成し,そのソフトの
> オブジェクトコードを頒布する場合は,MPLのソースコードの部
> 分だけを公開すればよい

http://jt.mozilla.gr.jp/MPL/mpl-faq.html
> 私のプロプライエタリ・アプリケーションに MPL 化コードを使用した場合、
> 全てのソースコードを手放さなければならないのでしょうか?

> ファイルが変更または変更を含んでいるために MPL 化されたファイルは
> ライセンス(またはこの FAQ 中)で定められた通りに入手可能にしなけれ
> ばなりません。その他のファイルはプロプライエタリとして保持することが
> できます

60 :デフォルトの名無しさん:04/07/16 15:20
フォルダ監視しててアプリがロードしたよ!って、
画面を点滅させたいんですが、どうしたら良いですか?

FlashWindowを使ってみましたが、タイトルバーが点滅して、
まるで画面からフォーカス外れただけみたいな地味な感じですた。

61 :デフォルトの名無しさん:04/07/16 15:54
>>60
標準の機能はそれくらいしかないよ。
あとはタスクトレイのアイコンを表示したりバルーンヘルプを表示したりとか。
自分で使うだけならマウスに追尾するTipHelpライクなウィンドウでも表示したら。

62 :デフォルトの名無しさん:04/07/16 15:58
>>60
背景を白と黒で定期的に塗りつぶせば点滅になるんじゃないの?

63 :60:04/07/16 15:58
バルーンヘルプが楽で良さそうですね。

TAnimateで良いんだけど、数秒動かすためには、これだけのためにスレッドかタイマーか、、、面倒。

64 :デフォルトの名無しさん:04/07/16 16:03
いいじゃん、そのぐらい
タイマーならポトペタだし

65 :デフォルトの名無しさん:04/07/16 16:36
48です。どうもありがとうございました。
検索してもほとんど出てこないんですよね。。。

66 :デフォルトの名無しさん:04/07/16 17:09
>>63
面倒ならプログラマやめたほうがいいよ。面倒なことだらけだし

67 :デフォルトの名無しさん:04/07/16 23:26
TStringGridについて質問です。
固定セル(FixedRows)を1行にしている場合に
その固定セル行(FixedRows)をクリックするとイベントが発生するように
OnClickイベントを記述したのですが、
イベントは発生せずクリックしたセルの左側の縦線が黒くなるだけの状態です。
例えば、以下のコードをOnClickイベントに書いても反応なし(上記の状態)です。

if SG.Row=0 then showmessage('0row');

FixedRowsを無くして普通のセルの1行目をクリックすればコード通りにShowMessageされます。
固定セルでもOnClickイベントが効く様にするにはどっかのプロパティを設定をするのでしょうか?
教えてください。お願いします。




68 :デフォルトの名無しさん:04/07/17 00:01
OnMouseDown or OnMouseUpイベントで、
var
ACol, ARow: Integer;
begin
SG.MouseToCell(X, Y, ACol, ARow);
if ARow = 0 then showmessage('0row');
end
と、するよろし

69 :デフォルトの名無しさん:04/07/17 00:35
>>69
ありがとうございます。
OnMouseDown 使ってできました。
でも、何故固定セルの時はOnClickは使えないんだろう
そういうものなのでしょうか?

70 :デフォルトの名無しさん:04/07/17 00:45
ソースみれば理由が解かるよ。 Pro版へバージョンアップしよう。

71 :デフォルトの名無しさん:04/07/17 07:21
XLSファイルを読み込んで
テキストの一致や日付の比較してエラーログ吐き出すのって
Del7パーソナル版でも出来ますか?
データベース関係はヘルプも見れないから使えないのだろう・・・
BaseCLXとやらで作るか、全部プログラムするしかないの?

72 :デフォルトの名無しさん:04/07/17 07:37
Excel XLSはデータベースとは関係ないので手間はどれを使っても似たようなもの。
なお BaseCLX はデータベースとは関係ない。


73 :71:04/07/17 21:12
そうですか・・・。


74 :デフォルトの名無しさん:04/07/17 22:42
関数でTStringList型を戻り値にしたのですが
コンパイラにEAccessViolation errorを表示され怒られてしまいました
例えば、ButtonOnClickイベントの中で下記のようなコードを書くとできません。

BT:=TStringList.Create; //OnClickイベントでTStringList型のBT
try //戻り値の型がTStringListの関数TEST()
BT:=TEST(); //?コンパイルはできるけどエラーが出る
BT.Add(TEST());     //?コンパイルすら通らない
BT.SaveToFile('C:\te.txt');
finally
BT.Free;
end;
上の?,?はどちらかって事です。
***** TEST() ******
begin
FuncT:=TStringList.Create;
try
for i:=1 to 5 do
begin
FuncT.Add(IntToStr(i));
end;
Result:=FuncT;
finally
FuncT.Free;
end;
end;

長文になりましたが、TStringListを戻り値として扱う時
どうしたらいいのでしょうか? 


75 :デフォルトの名無しさん:04/07/17 23:27
>>74
そりゃTEST0内でFreeしたら消えちゃうだろ。
TEST0でTStringList(TStringsの方がいいかも?)の引数を取るようにして
呼び出し側でCreateしたBTを渡すのが基本かな。

BT:=TStringList.Create;
try
TEST()(BT);
BT.SaveToFile('C:\te.txt');
finally
BT.Free;
end;

procedure TEST0(FuncT: TStrings)
begin
FuncT:=TStringList.Create;
for i:=1 to 5 do
begin
FuncT.Add(IntToStr(i));
end;
end;
end;


76 :デフォルトの名無しさん:04/07/17 23:28
あ、end;が一個多かった。

77 :デフォルトの名無しさん:04/07/17 23:30
なんでFuncTをCreateしてんだ<俺
そんなわけで修正。

BT:=TStringList.Create;
try
TEST()(BT);
BT.SaveToFile('C:\te.txt');
finally
BT.Free;
end;

procedure TEST0(FuncT: TStrings)
begin
for i:=1 to 5 do
begin
FuncT.Add(IntToStr(i));
end;
end;

78 :デフォルトの名無しさん:04/07/18 01:36
>>75-77
ありがとうございます。
>そりゃTEST0内でFreeしたら消えちゃうだろ。
ぽっくり気が付きませんでした。
しっかりEAccessViolation言ってくれてるのに…やばい_| ̄|○



79 :デフォルトの名無しさん:04/07/18 08:00
class functionってなんなのでしょうか?
調べてみたのですが使い方、用途が全くわかりません。
よろしくお願いします

80 :デフォルトの名無しさん:04/07/18 12:07
自分でprocedureを作り、その時procedureに渡す引数の数が違ってくる時の
対処法ってありますか?

procudure ABC(int1:Integer; int2:Integer);
procedure ABC(int1:Integer);

要は、手続きABCを幾つか使用する時に
Integer型の引数2つを渡さなければ出来ない場合と
Integer型に引数1つを渡してその一つだけで何とかなる場合があるのです。
後者の例として、var1だけ渡した時にABCの中でvar1,var1+1という感じに
できるので引数が1つで済むと言う事です。
手続きに渡す前に var2:=var1+1; とし結局引数を2つ渡せば済むのですが
あまり賢くない気がします。
他に方法はあるんでしょうか? 


81 :デフォルトの名無しさん:04/07/18 12:13
overloadしたら?

82 :80:04/07/18 12:24
>>81
overloadって引数として渡す変数の型が違う時のですよね。
overloadについていつも思っていた事があるんですけど
overloadするよりも型変換してから同じ関数に渡す方がよくないですか?
overloadする関数が長い時は、コードが倍になってしまって勿体無い気がするんですけど
この辺はどうなんでしょうか?



83 :デフォルトの名無しさん:04/07/18 12:31
別にoverloadは引数の型のためだけにあるわけじゃないよ。
同じような動作だけど実装が異なる場合とか

>overloadするよりも型変換してから同じ関数に渡す方がよくないですか?

いちいち型変換してつかってちゃめんどうじゃん。
それならoverloadした関数の中で型変換して元の関数を呼び出すようにした方が
ソースの見栄えも(多少)よくなる。と思う。

84 :デフォルトの名無しさん:04/07/18 12:32
別にoverloadは引数の型のためだけにあるわけじゃないよ。
同じような動作だけど実装が異なる場合とかいろいろ。

>overloadするよりも型変換してから同じ関数に渡す方がよくないですか?

いちいち型変換してつかってちゃめんどうじゃん。
それならoverloadした関数の中で型変換して元の関数を呼び出すようにした方が
ソースの見栄えも(多少)よくなる。と思う。

85 :80:04/07/18 13:01
>>83

>それならoverloadした関数の中で型変換して元の関数を呼び出すようにした方が
>ソースの見栄えも(多少)よくなる。と思う。
これは確かに私もそう思います。
ありがとうございました。


86 :80:04/07/18 14:08
度々申し訳ございません。
overloadの事がやっぱり気になります。
overloadで同じようなコードを二つも書くんだったら
最初から関数名を解りやすく二つ書いて引数も各々の型で渡せばいいのに、と思ってしまいます。
正直overloadのメリットが解らないです。
コードが膨大になるとやっぱりoverload使った方がすっきりするのでしょうか?

87 :デフォルトの名無しさん:04/07/18 14:31
場合にもよるけど、同じ動作部分だけ別に作っておいて、
オーバーロードする関数で適宜処理をしてからその関数を呼び出せば
コード量はそんなに多くはならないと思うけどな。

処理内容がまったく異なるなら、オーバーロードするよりも別の
関数にしたほうがわかりやすいと思う。

88 :80:04/07/18 15:02
>>87
度々の回答ありがとうございます。

私とても大きな勘違いしていたかもしれません。
今までオーバーロードの中身って全く一緒だと思っていたんですが
自分の激しい思い込みだということに気づきました…
これは只見やすくするための便宜的なものだったのですね。
極端な話、関数をオーバーロードで宣言すれば
同じ名前の関数で全く違うコードがかけるみたいだし。
今読んでいる参考書の例だと
オーバーロードされた二つの関数の中身5行のコードが全く同じだったもので・・・。

>オーバーロードする関数で適宜処理をしてからその関数を呼び出せば
>コード量はそんなに多くはならないと思うけどな。
この一言で気づかされました。
こんな阿保に付き合ってもらって本当に申し訳ございませんでした。


89 :デフォルトの名無しさん:04/07/18 19:03
処理時に大量のワーク変数を使用する場合、
処理→開放→処理→開放と繰り返すより、ある程度保持して再利用したほうが
結果的にメモリの消費を抑えられるでしょうか?

90 :デフォルトの名無しさん:04/07/18 20:30
>>89
保持している間は他に使うことが出来ないわけだから、すぐ解放した方がメモり消費を抑えられると思うんだけど。
あと、保持していたりすると解放し忘れたりするかも。

処理時間を短くするのなら保持する手もあると思うけど、純粋にメモり消費量だけなら解放した方がよさそう。
メモリーマネージャあたりが上手につくってあれば、その手の処理はある程度自動的に行われるかもしれないし。

91 :デフォルトの名無しさん:04/07/18 21:27
Terapadみたいに行番号を表示するRichEditコンポーネントってありますか?

92 :デフォルトの名無しさん:04/07/18 21:40
Synedit

93 :デフォルトの名無しさん:04/07/18 21:53
サンクス

94 :デフォルトの名無しさん:04/07/18 23:54
>>79
Create しなくても使えるメソッド。
あまり使わないから、今知る必要はない。

>>89
メモリのフラグメンテーションが気になるなら、自分で管理した方が良い。

95 :デフォルトの名無しさん:04/07/19 01:17
やべっ、無限ループ書いちゃったかも、
なときに、コードの実行を中断するには、どうすりゃいいんでしょう

96 :デフォルトの名無しさん:04/07/19 01:18
一時停止

97 :>>96:04/07/19 01:36
パニクッてました、ごめんなさい
Windodw Stateを画面いっぱいにしていたためにメニューバーの存在を忘れてました。
わけもわからず Ctrl + Pause とか、ALT + Ctrl + Del とか押して、
けっきょくタスクマネージャからDelphi終了
「デバッグを終了しますか」のメッセージに救われました。

作成の段階では画面いっぱいにはしないほうがいいですね。

98 :デフォルトの名無しさん:04/07/19 13:18
CTRL+F2

99 :デフォルトの名無しさん:04/07/19 15:01
Delphiでのメソッドの呼び出しで、()の付加を強制させるにはどこを設定すればいいのでしょうか?

100 :デフォルトの名無しさん:04/07/19 15:48
DelphiとVB.NETでどちらが生産性が高いですか?

101 :デフォルトの名無しさん:04/07/19 19:06
>>100
Delphi使えるレベルの人間が使った場合は同程度かそれ以上。
VBしか使えないレベルの人間が使った場合はVB6以下。
残念ながら世の中そんなモンです。

102 :デフォルトの名無しさん:04/07/19 21:35
DelphiとC++Builderは、言語が違うだけで
生産性は同等と見ていいの?
なんかDelphiいまいちなんでどうせならBuilderにした方が・・・と思ってきた。

103 :デフォルトの名無しさん:04/07/19 21:45
csvファイルの読み込み方、またはタブ区切りテキストファイルを読んで
タブで分けて配列に入れる方法を教えて下さい。

104 :デフォルトの名無しさん:04/07/19 21:51
その前にTStringListというオブジェクトについて調べてみるのも一興だ。

105 :デフォルトの名無しさん:04/07/19 22:10
定数constは型を指定できないのですか?
参考書には指定しないでInteger型、String型(''で囲んでる時)として
扱っている感じでしたの。
ちなみにTColor型の定数を使いたいです。
String型で指定して型キャストしたけどやはりダメでした。
解決策をお願いします。

106 :デフォルトの名無しさん:04/07/19 22:14
s: shortstring = 0;

107 :デフォルトの名無しさん:04/07/19 22:24
>>106
ありがとうございました

108 :デフォルトの名無しさん:04/07/19 22:29
>>107
ごめん。なんかshortstringなのに0とか書いてるし。
まあ察してくれたみたいだけど。

const
 s: shortstring = 'てすと';

109 :デフォルトの名無しさん:04/07/19 23:21
>>102
そのレベルで言語を選ぶなって偉い人なら起こるだろうな。

110 :デフォルトの名無しさん:04/07/19 23:27
というか「生産性」って何よ?すげー抽象的

111 :デフォルトの名無しさん:04/07/19 23:29
>>108
いえいえ、わざわざありがとうございます。
ヘルプ見てみたら、それらしき例文も載っていたので申し訳ないと思ってます。
これからはヘルプでまず調べたいと思います。
それにしても、参考書もネットでの検索でも
delphiの情報少ないな…
当たり前の文法も載ってないような気がする。

112 :デフォルトの名無しさん:04/07/19 23:39
HBitmapからTBitmapを取得する方法を教えてください


113 :デフォルトの名無しさん:04/07/19 23:47
>>99
脳内設定。

114 :デフォルトの名無しさん:04/07/20 00:13
TTreeViewに、
TCheckListBox みたいな
Check 部分を付けるプロパティはありますか?


115 :デフォルトの名無しさん:04/07/20 00:24
>>114
ない。
Imageで自力処理すべし。

116 :114:04/07/20 00:38
>>115
やはりないですか。
わかりました。無念!

117 :デフォルトの名無しさん:04/07/20 00:45
>>114
プロパティは無いが、SetWindowLong で TVS_CHECKBOXES 付けてやれば出来る
チェック状態の取得も SendMessage 使うけど

118 :114:04/07/20 00:55
>>117
?クス。それは良いこと聞いた。
試してみまス。

119 :デフォルトの名無しさん:04/07/20 01:47
昨日始めたばっかりなんですけど、formを動的に作成するのはどうするのでしょうか?
というか、ヘルプの通りやってみたら、新しく出来た1つのフォーム以外操作不能になるんですけど、
これを操作できるようにするにはどうするのでしょうか?

120 :デフォルトの名無しさん:04/07/20 02:22
PCゲームのセーブデータ改変ツールを作ってます
セーブデータをバイアンリエディタで開いたとき
アドレス00000058の値を、00から01に変換するツールをつくりたいんですが
どうやったらできますか?

ボタン1を押すと、アドレス00000058の値が0だったら1にする
1だったら変えないというやり方を教えてください。

121 :デフォルトの名無しさん:04/07/20 04:56
何気にNewtone社のImageKit6がGIFとTIFF-LZWのロックを解除してくれたね
米ユニシスの著作権切れの影響?

122 :デフォルトの名無しさん:04/07/20 05:23
ShowModalとShowの違い。
TFileStream

123 :デフォルトの名無しさん:04/07/20 05:24
TMemoryStreamの方がいいか。

124 :デフォルトの名無しさん:04/07/20 09:33
GIF切れ祝い。バンジャーイ。

125 :デフォルトの名無しさん:04/07/20 10:06
>>121
なるほど。対応が素早いな。


126 :デフォルトの名無しさん:04/07/20 10:34
>>103
遅レスですまんが
TStringListのcommatext(だっけか?)

127 :デフォルトの名無しさん:04/07/20 10:36
>>103
遅レスですまんが
TStringListのcommatext(だっけか?)

128 :デフォルトの名無しさん:04/07/20 10:43
>>127
TStringListのDelimiterText。
但しTStringListはDelimiterTextを使っても文字列にスペースがあると
勝手に区切り文字として解釈してしまいます。ダブルクォーテンションで
囲めばよいのですが、Excelなどでcsvファイルを作るとスペースがある
文字列でもダブルクォーテンションを付加してくれません。

129 :デフォルトの名無しさん:04/07/20 13:41
データ群を扱うときに
レコードにするかとクラスにするか、って何を基準にすればいいのでしょう?

130 :デフォルトの名無しさん:04/07/20 13:45
>>129
レコードで済むならレコード、そうでないならクラス。

131 :デフォルトの名無しさん:04/07/20 13:45
>>129
固有(である必要はないと思うけど)の操作が必要かどうかではないのかな。
貴方はクラスがあるのにレコードを使うメリットって何だと思うの?


132 :129:04/07/20 13:54
>>130-131
わたしもその通りだと思います。
ちょっと今回作ったクラスがあまり使い勝手が悪くて悩んで(迷って)いるのです。

>貴方はクラスがあるのにレコードを使うメリットって何だと思うの?

いちいち作成・破棄を気にしなくてもいいとか、たくさんあります。
逆にレコードだとstring型を含んでいるとき保存がやっかい。

133 :デフォルトの名無しさん:04/07/20 13:54
俺はclassを使うかな。
作って、TObjectListに格納させれば管理も楽だし。
ついでに継承させれば、データを加工するメソッドも
簡単に追加できるし。

134 :ななしへたぐらま ◆XcB18Bks.Y :04/07/20 14:44
>>120
まず「ボタン1を押すと…」「読み込んだ値が1だったら変えない」とかだけなら作れますか?
もしそれが作れないようならまずそこから勉強してください.以下,それを理解している前提で.

ファイルの読み書きは以下のような流れで行います.
・ファイルを開く→読み書きしたい場所に移動する→読み書きする→ファイルを閉じる

以下,単純な読み込みのサンプルです
procedure TForm1.Test01;
var
 Stream: TFileStream; // ファイルストリーム(ファイルを読み書きするモノ)
 ByteData: byte; // 読み出した1バイトの値を格納する
begin
 // ファイルを開く
 Stream := TFileStream.Create(OpenDialog1.FileName {←目的のファイル名}, fmOpenReadWrite {←既存のファイルを読み書きするモード});
 try
  // 読みたい場所に移動する
  Stream.Seek($00000058, soFromBeginning {←先頭から} );
  // 読む(読むと読み込んだ分だけ後ろに移動します)
  Stream.Read(ByteData, sizeof(byte));
  finally
   // 閉じる
   Stream.Free;
  end;
 ShowMessageFmt('読み出した値は%d($%x)です', [ByteData, ByteData]);
end;
書き込むときはストリームのWriteメソッドを使います
ByteData := 1;
Stream.Write(ByteData, sizeof(byte));


135 :デフォルトの名無しさん:04/07/20 15:52
Case 文って場合によってはifより使いやすいですよね?
変数aが1から5までの場合、

136 :デフォルトの名無しさん:04/07/20 16:01
>>132
>>いちいち作成・破棄を気にしなくてもいいとか、たくさんあります。
>>逆にレコードだとstring型を含んでいるとき保存がやっかい。

言ってることが無茶苦茶だな。

137 :デフォルトの名無しさん:04/07/20 16:08
Case文で

Case a of

1:Label1.Caption:='まさお'
2:Label1.caption:='かずお'
3:Label1.Caption:='ひろみ'

みたいに、たくさん増えていったら一つ一つに
Label1.Caption:=を打つのが面倒なんですが
これを簡略化する方法ってありますか?
Label1.caption自体を短くしちゃうとか・・・

138 :デフォルトの名無しさん:04/07/20 16:10
>>137
with

139 :デフォルトの名無しさん:04/07/20 16:13
case文の中で、Label1のCaptionを変える以外の処理もあるなら

var
 s: string;

case a of
 1: s:='まさお';
 2: s:='かずお';
 3: s:='ひろみ';
end;
Label1.Caption := s;

140 :デフォルトの名無しさん:04/07/20 16:15
>138様
>139様
おー、なるほど
そういう方法を使えばよかったんですか。
ありがとうございます

141 :デフォルトの名無しさん:04/07/20 16:15
case を使わないってのは

const
 AStr : Array[0..2] of String = ('まさお', 'かずお', 'ひろみ');
begin
 Label1.Caption := AStr[a-1];
end;

142 :デフォルトの名無しさん:04/07/20 16:16
Label1のCaptionを変えるだけなら

const
 names: array[1..3] of string = ('まさお', 'かずお', 'ひろみ');

Label1.Caption := names[a];

143 :デフォルトの名無しさん:04/07/20 16:27
何が違うんですか?

144 :デフォルトの名無しさん:04/07/20 16:34
同じだな。多分ほとんど同時にカキコしたんだろう

145 :デフォルトの名無しさん:04/07/20 16:34
>>143
aの値に応じてCaptionを変えるだけなら>>141-142の方法でいいけど
例えば同時に、aに応じて色やフォントも変えるとなったらcase使うほうがいい

146 :デフォルトの名無しさん:04/07/20 16:35
あれ、>>141>>142のちがいについて(;´Д`)?

147 :デフォルトの名無しさん:04/07/20 16:37
>>137
お前はプログラマに向いてない。間違いない!

148 :141:04/07/20 16:39
ごめん、余計なこと書いたかな
caseでの話だもんな

149 :デフォルトの名無しさん:04/07/20 16:40
>>147
いやいや「もっと楽できないかな」と考えるのも必要な資質だと思うぞ。
自分で考えればなおいい

150 :デフォルトの名無しさん:04/07/20 16:59
var P : PChar;

P := P + 'hogehoge';

これはコンパイルエラーになりますが、
これをstring等にキャストしないでやるにはどのようにすればいいでしょうか?

151 :デフォルトの名無しさん:04/07/20 17:05
copystrかstrcopyかなんかそんな関数があったはず

152 :151:04/07/20 17:07
ごめんなさい。勘違いだったようです

153 :デフォルトの名無しさん:04/07/20 18:52
フォームやボタンの大きさを変更できないようにするにはどうやったらいいですか?
最大化も不可

154 :デフォルトの名無しさん:04/07/20 19:01
procedureやfunctionなどの手続きを簡単に作成する方法は
ないでしょうか、、D6Perです。。

155 :デフォルトの名無しさん:04/07/20 19:02
>>122-123
サンスコ。ほぼDelphi歴=プログラム歴なのでヘルプの内容すらいまいち理解できませんが、
取り合えずできました。やり方あってるのか知らないけど。
そしてまた疑問だらけになりますた。あぁ入門書買ってこよう・・・

156 :150:04/07/20 19:21
>>151
StrCopyを調べて見つけたStrCatで出来ました
ありがとうございました

157 :デフォルトの名無しさん:04/07/20 20:58
TcpClientを使ってIRCクライアントを作っています
パケットを監視しているとちゃんとメッセージを受信しているのに
OnReceiveイベントが発生しません なぜでしょうか?

158 :デフォルトの名無しさん:04/07/20 21:30
>>119
失敗するコードあげろ

159 :デフォルトの名無しさん:04/07/20 21:30
>>154
気合

160 :103:04/07/20 21:31
>>127 >>128 どうもありがとう。やってみます。
それにしてもHELPって初心者には探し難い作りだねぇ。

161 :デフォルトの名無しさん:04/07/20 22:43
同じ処理を100回繰り返すにはどうしたらいいの?


162 :デフォルトの名無しさん:04/07/20 22:51
var
 i: integer;
begin
 for i := 1 to 100 do
  ShowMessage('1回ぐらいヘルプ見れ');
end;

163 :デフォルトの名無しさん:04/07/20 23:07
>>154
ツール → エディタオプション → 支援機能 → コードテンプレート

164 :デフォルトの名無しさん:04/07/20 23:15
>>154
定義を書いて Shift + Ctrl + C

165 :デフォルトの名無しさん:04/07/20 23:30
>>164
横からでスマンが、それってどうやって使うの?

166 :デフォルトの名無しさん:04/07/20 23:30
D6"Per"

167 :A:04/07/20 23:52
>>165
Pro以上のDelphiにしかない機能なので、stdとかperの人には使えない。
DelphiのIDEを拡張するGExpertsに同等の機能があるらしいが、
入れてないので詳しいことは知らない。

168 :デフォルトの名無しさん:04/07/21 00:54
お前らAnsiMatchStr, AnsiIndexStr/Textくらい知っとけ。
それからTStrings.CommaTextが扱う形式はCSVではなくSDFだ。
これらを知らずしてこのスレで質問することは不許可だ分かったかこの低脳ども。

169 :デフォルトの名無しさん:04/07/21 01:05
ずいぶんと低い敷居だな

170 :デフォルトの名無しさん:04/07/21 01:11
>>158
既に解決しますた。Del6perのヘルプにまんま載って宝そのままやったら119

171 :デフォルトの名無しさん:04/07/21 01:13
>>168
口調は悪いがいい奴だな

172 :デフォルトの名無しさん:04/07/21 04:06
自衛隊?
比較方法が問題無のですよ。



173 :デフォルトの名無しさん:04/07/21 06:43
TStringGridの各セルに自分で打ち込むのではなく
決められた幾つかの選択肢から選ぶようにしたいのですが
どうしたらいいでしょうか?
マウス操作だけでできるようにしたいのです。



174 :デフォルトの名無しさん:04/07/21 10:47
入力したいセルをクリックしてから、コンボボックスから選択

175 :デフォルトの名無しさん:04/07/21 10:48
PopupMenuから選択。

176 :デフォルトの名無しさん:04/07/21 10:56
>>173
無理。
ComboBoxを動的に生成したら。

177 :デフォルトの名無しさん:04/07/21 13:11
どっかでドロップダウンやってるの見たことあるような気がするんだけど
多分DBGridと記憶がごちゃ混ぜになってるんだろうな俺、うん。

178 :デフォルトの名無しさん:04/07/21 13:29
TStringGridの編集開始メソッドを派生して、
元の処理を殺してコンボボックスを表示すれば出来るよ。

179 :デフォルトの名無しさん:04/07/21 14:16
>>177
市販のActiveXなグリッドコントロールにそういった機能があるよ。
Excelにもね。割りにポピュラーな機能ではあるけどStringGridにはその機能は無いと。

180 :デフォルトの名無しさん:04/07/21 14:22
同じようなのに挑戦してる人がいるね

http://forum.nifty.com/fdelphi/samples/00485.html
http://forum.nifty.com/fdelphi/samples/00200.html

TStringGridのObjectsに、そのセルに入力できるデータを
TStringListあたりで保持しておいて、そのセルがクリック
されたときに、セルの上にTComboBoxを動的に生成。

TComboBox.ItemsにTStringListをAssignすればいけそうだね。

181 :デフォルトの名無しさん:04/07/21 14:34
これはTCheckBoxだけど、役に立つかな?

http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=15441

182 :デフォルトの名無しさん:04/07/21 14:35
> TStringGridのObjectsに、そのセルに入力できるデータを
> TStringListあたりで保持しておいて、

うひゃー、それは無駄すぎ。改行込みのテキスト1つで十分。

183 :180:04/07/21 14:41
>>182
項目数とデータ量にもよるけど、
まー一つの案ということでw

テキストで持つとすると、どういうフォーマットにすれば、
簡単なんだろうね?考えるの('A`)マンドクセから考えもしないけど。

184 :デフォルトの名無しさん:04/07/21 14:44
>テキストで持つとすると、どういうフォーマットにすれば、

一番簡単なのは、stringの二次元の動的配列。Col Row の対応が一意。 

185 :デフォルトの名無しさん:04/07/21 14:52
自分だったら、派生したTStringGridにレコード配列持たせて、
DrawCellをオーバーライドして自分で書く。

TStringGridのセルにデータを保持させるとやっかい。
VIEWにデータを保持させるべからず。

186 :デフォルトの名無しさん:04/07/21 14:55
>派生したTStringGridにレコード配列持たせて、

>VIEWにデータを保持させるべからず。

矛盾してない?

187 :デフォルトの名無しさん:04/07/21 14:58
ポインタを配列みたいに使いたいんで

type
TIntArray = array[0..0] of integer;
PIntArray = ^TIntArray;

とかやるのって問題ある?


188 :デフォルトの名無しさん:04/07/21 14:58
グダグダ逝ってないでとっととコード書いてうpれや

189 :デフォルトの名無しさん:04/07/21 14:59
もうすこし細かく書くと、

派生したTStringGridにドキュメントクラス・プロパティ(レコード配列)持たせて、
外からドキュメントクラスを渡してやる。

こうすれば、1つのドキュメントクラスを複数のViewが描画しても矛盾起きないし、
VIEW同士のデータの出し入れは要らないし。

また、DBに書き込むメソッドは、VIEWが持つ必要は無く、ドキュメントクラスだけに持たせる。

190 :デフォルトの名無しさん:04/07/21 15:03
>>187
TIntArray = array[0..High(Integer) div SizeOf(Integer)-1] of Integer;
にしとけ

191 :デフォルトの名無しさん:04/07/21 15:04
試してみた

type
TIntArray = array[0..0] of integer;
PIntArray = ^TIntArray;

procedure TForm1.Button1Click(Sender: TObject);
var
pIA:PIntArray;
i:integer;
begin
GetMem(pIA,SizeOf(integer)*100);
for i := 0 to 99 do pIA^[i]:= 10000-i;
for i := 0 to 99 do Memo1.Lines.Add(IntToStr(pIA^[i]));
FreeMem(pIA);
end;

192 :デフォルトの名無しさん:04/07/21 15:07
>>190
意味不明。
PIntArray 使いたいなら TIntArray = array[0..1000000] of integer; でもOK

193 :デフォルトの名無しさん:04/07/21 15:10
[0..0]でも[0..1]でもOK

194 :デフォルトの名無しさん:04/07/21 15:10
>>189
そんじゃ、行や列が削除されても対応できるように
TStringGrid派生classは、本来表示すべき配列aと、選択肢を持つ配列bを
渡せるように二つのプロパティを持ってて、ただそのデータに従って描画
するだけのclassになるのね。

行の削除とかはドキュメントクラスが行って、aとbの整合性は、その時点で
保証されているものとすると・・・。

なんか大がかりだなw

195 :デフォルトの名無しさん:04/07/21 15:12
>>192
意味不明なリテラルばら撒くな。

>>191
0..0だと
$R+でエラー出るだろ。

196 :デフォルトの名無しさん:04/07/21 15:17
> $R+でエラー出るだろ。

出る。範囲チェックなのね。

ところで

> High(Integer) div SizeOf(Integer)-1

は、なぜ High(Integer) じゃないの? 


197 :デフォルトの名無しさん:04/07/21 15:17
>>194
>本来表示すべき配列aと、選択肢を持つ配列bを
そうなんだけど、ドキュメントクラスというきっちりしたクラスが配列を持ってる方が良い。

単なる配列だと、メソッド足せないし。

198 :デフォルトの名無しさん:04/07/21 15:20
Help より

添字型は範囲が 2GB を超えない順序型です。

なるほど。

199 :デフォルトの名無しさん:04/07/21 15:23
>>191
で、結果は?

200 :デフォルトの名無しさん:04/07/21 15:26
> VIEWにデータを保持させるべからず。

> ドキュメントクラスというきっちりしたクラスが配列を持ってる方が良い。

正論だけど、>>182 のような用途では大げさ杉。

201 :デフォルトの名無しさん:04/07/21 15:27
ということは1GBの構造体の場合は[0..1]が限度ということか・・・

202 :デフォルトの名無しさん:04/07/21 15:28
>>199

{$R+} しなけりゃ問題なし。でも >>190 に従うよろし。

203 :デフォルトの名無しさん:04/07/21 15:31
>>200
なことない。

ドキュメントクラスが配列メンバを持つだけだし、数行。

204 :デフォルトの名無しさん:04/07/21 15:33
TColorBox に任意の色のみを表示させるにはどうしたら良いのでしょう?

1. Clear して、Items.Add('clBlack') など追加していくと、近い感じではあるの
だが、色がすべて黒になってしまう。

2. Items.Delete で必要なもの以外を削除。

2. で実現できそうではあるのですが、できれば、1 の感じの方法で実現したいのです。

205 :デフォルトの名無しさん:04/07/21 15:34
> VIEWにデータを保持させるべからず。

ねぇ、これって厳密に適用すると、TMemo のテキストやら、ListBox の Items
やら、StringGrid の Cells[] やら Edit の Text やら、Doc クラスだらけ
にならんのか?

206 :デフォルトの名無しさん:04/07/21 15:35
>>204
Items.AddObject('clBlack'、色)
とかでねーの。未確認だけど

207 :ななしへたぐらま ◆XcB18Bks.Y :04/07/21 16:06
>>145
こんな手もありますよ.
type
 TPersonalInfo = record
  Name: PChar;
  Color: TColor;
  FontName: PChar;
 end;

const
 cPersonalInfos: array [1..3] of TPersonalInfo = (
  (Name: 'まさお'; Color: clRed; FontName: 'MS Pゴシック'),
  (Name: 'かずお'; Color: clBlue; FontName: 'MS P明朝'),
  (Name: 'ひろみ'; Color: clGreen; FontName: 'MS ゴシック')
 );

begin
 Label1.Caption := cPersonalInfos[Index].Name;
 Label1.Font.Color := cPersonalInfos[Index].Color;
 Label1.Font.Name := cPersonalInfos[Index].FontName;
end;


208 :デフォルトの名無しさん:04/07/21 16:18
>>207
なぜ Name と FontName は string じゃなくて PChar なの?

209 :デフォルトの名無しさん:04/07/21 16:23
>>205
一つのデータを複数箇所に表示する可能性があって、
それぞれデータの整合性が保たれていなければいけ
ないときとかぐらいでいいんじゃね?

俺もちと大げさだと思う。

210 :デフォルトの名無しさん:04/07/21 17:08
>>205
Form一個にドキュメントクラス1個で良いよ。
ただ、Gridは再描画とか高機能な編集のために、例外的に持たせるみたいな。

211 :デフォルトの名無しさん:04/07/21 17:20
>>209
クラスを記述出来る言語で、非クラス化は損するだけ。
見た目的にも損だし、ちょっと作り出すとすぐに非クラス側の行数が膨らんで行数的にも損する。

212 :デフォルトの名無しさん:04/07/21 20:21
Delphi付属デモの解説、どこかにないですか?

213 :デフォルトの名無しさん:04/07/21 20:24
コメント嫁

214 :デフォルトの名無しさん:04/07/21 20:44
>>213
コメントのないデモも、ちらほらと・・・
libraryやActiveXだと、実行方法も良く分からず・・・とほほ

215 :デフォルトの名無しさん:04/07/21 21:50
デルファイのエディタに窓をドロップしたときに付く

=======X

↑はどうやってつければいいのですか?

216 :デフォルトの名無しさん:04/07/21 22:17
Delphiってフリーソフトなんですか?

217 :ななしへたぐらま ◆XcB18Bks.Y :04/07/21 22:40
>>208
・Cの構造体定数と同じノリで作ったから
・stringだとうまく動かないかなと思ったから
です.

でもちょっと実験してみた限りではstringでも動いてくれているようです.



218 :デフォルトの名無しさん:04/07/21 22:42
begin
end

これ、なんとかなりません?
{
}
でやりたいんですけど・・・

219 :デフォルトの名無しさん:04/07/21 22:43
{ } がコメントで使われてるから永遠にならないと思う。

220 :デフォルトの名無しさん:04/07/21 22:45
b+(Ctrl+J)で出るようにコード支援設定しとけ

221 :デフォルトの名無しさん:04/07/21 22:53
OpenToolsAPIで、好きなキーで好きな文字列を短縮入力できるようにしとけ

222 :218:04/07/21 22:53
>>219-221
わっかりました!

223 :デフォルトの名無しさん:04/07/21 22:59
そう素直に返事されると気楽に書いたのが恥ずかしくなるな…
OpenToolsAPIによる短縮入力は、↓が大変参考になります

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1007345219&rm=100

224 :デフォルトの名無しさん:04/07/21 23:49
http://218.230.101.165/

225 :デフォルトの名無しさん:04/07/22 00:08
PersonalじゃOpenToolsAPI使えないんだけどな

226 :デフォルトの名無しさん:04/07/22 00:15
>>167
Pro以上のみの機能だったのですか。
でもこの機能が無くてすべて手書きなんて・・・ 考えられない。

227 :デフォルトの名無しさん:04/07/22 00:17
>>207-208
PChar型だと、長い文字列型へコピーが行われる。
リテラルなstring型ならポインタのコピーのみで済む。
(リテラルなので参照回数は-1のまま。 詳しくはマニュアルに載っている。)
よってstring型の方が効率が良い。

228 :デフォルトの名無しさん:04/07/22 00:31
>>215
これおながい

229 :デフォルトの名無しさん:04/07/22 00:36
demos見れ

230 :デフォルトの名無しさん:04/07/22 00:43
受け側のウィンドウの UseDockManager を True にすれば、
ドッキングしたときにそういうのが出るけどそれのこと?

231 :デフォルトの名無しさん:04/07/22 02:13
どうしてWideStringは参照カウンタが無いのですか?


232 :デフォルトの名無しさん:04/07/22 02:40
付箋みたいなの作りたいんだけど、Memoじゃなくて、Labelみたいな編集できない領域に
テキストファイルを読み込ますのはどうするの?
このスレ見ると超初心者って俺だけじゃん、って気がプンプン

233 :デフォルトの名無しさん:04/07/22 02:45
>>232
似たようなレベルだけど・・・

MEMOコンポーネントで、ReadOnly := True; じゃ駄目なの?

234 :デフォルトの名無しさん:04/07/22 03:34
えぇとなんて言うのかな。これ。
それだと編集はできなくても、メモ領域で操作できますよね。
それを不可能にしたいんです。

235 :デフォルトの名無しさん:04/07/22 04:23
>>234
TStringList.LoadFromFile して
Lable.Captionにセットかな?

改行が有る場合は、自分で連結(たぶん)

236 :デフォルトの名無しさん:04/07/22 04:57
普通にLabel1.Caption:='12'#13#10'34;だとできるけど、
LoadList:=TStringList.Create;
LoadList.LoadFromFile('test.txt');
x:=LoadList.Count;
for i:=1 to x do
Label1.Caption:=(LoadList[i-1])+#13#10;

だと改行しないんだけど、何が間違ってるのかしら?
恥を晒した所で寝ま。ヒャッホー

237 :デフォルトの名無しさん:04/07/22 05:01
あぁ改行しないんじゃなくて上に書いてるだけなのか、漏れ。

238 :デフォルトの名無しさん:04/07/22 05:04
できますた。解りますた。サンスコ

239 :デフォルトの名無しさん:04/07/22 05:04
オレならForm1.Canvas.TextOutでいく。

240 :デフォルトの名無しさん:04/07/22 05:15
>>239でもアッサリできました。こんな簡単な事に悩んでたのか・・・

241 :デフォルトの名無しさん:04/07/22 05:58
TextOutだとOnPaintとかで毎回書かないと消えちゃうから、その辺を考慮しないと。

242 :デフォルトの名無しさん:04/07/22 06:29
>>236
つーか、わざわざ1行づつ読まなくても
Label1.Caption := LoadList.Text;
でいいじゃん

243 :デフォルトの名無しさん:04/07/22 07:15
98使ってるんですが、マイドキュメントに画像をおいて、
picload ""で画像を指定しても、画像は無いってなります、
どうしてでしょうか?
教えて、エロい人

244 :デフォルトの名無しさん:04/07/22 08:11
>>243
98って何よ?
PC-9801だったら、漏れはお前を尊敬する

245 :デフォルトの名無しさん:04/07/22 08:24
>>243は夏厨。スルーよろ。

246 :デフォルトの名無しさん:04/07/22 08:24
picloadって聞くと、HSPを思い出す
懐かしや

247 :デフォルトの名無しさん:04/07/22 08:30
>>244
>>245
わかって煽るお前等が噂に聞く夏厨ですね

248 :デフォルトの名無しさん:04/07/22 08:42
6001mk?使ってるんですが、マイドキュメントに画像をおいて、
picload ""で画像を指定しても、画像は無いってなります、
どうしてでしょうか?
教えて、エロい人


249 :デフォルトの名無しさん:04/07/22 08:46
持ってるけど今更出して調べる気にもならんよ。
Talk命令で遊んどけ。

’カキクエバ カネガナルナリ ホウリュウジ ’ピッ(エラー音) ←これ知ってるやつナカーマ

250 :デフォルトの名無しさん:04/07/22 08:46
>>248
カセットテープデッキのヘッドが汚れている可能性が高い
クリーナを麺棒につけて掃除が吉

251 :デフォルトの名無しさん:04/07/22 09:04
あまり猛暑が続くと猛暑脳になるらしいな

252 :デフォルトの名無しさん:04/07/22 10:41
>>217
> でもちょっと実験してみた限りではstringでも動いてくれているようです.

Delphi でレコード型のフィールドで文字列を保持するのなら、むしろ
string 型の方が普通です。サイズを固定にするのなら、array[0..100] of Char
とか短い文字列の string[100] とかにします。PChar にすると、今回のような
const で文字列リテラルで初期化するときは問題ありませんが、通常の変数や
クラスのフィールドのときは、代入する前にいちいちメモリを確保してから
コピーする必要があります。また、破棄も個別に行わなくてはなりません。

253 :デフォルトの名無しさん:04/07/22 10:46
>>210
> Form一個にドキュメントクラス1個で良いよ。

そうなの? それで実行時にユーザが Memo や Edit で文字列を編集したときは
どうやって同期を取るの? なんだか、原則にに溺れて本質を見失ってる感じが
するね。

254 :デフォルトの名無しさん:04/07/22 13:28
>>232
今更だけど、俺ならパネルの上にMemo置いてパネルを無効に。

255 :デフォルトの名無しさん:04/07/22 14:20
イロエロな方法があるんですね・・・他の機能付けてからどれが良いか考えてみまつ。

256 :デフォルトの名無しさん:04/07/22 16:12
>>230
UseDockManagerをTrueにしても出ませんでした

ドラッグするためのバーと閉じるためのボタンを表示して欲しいのです

======X ←こんなやつ

Memoをドックできるようにするとクリックするだけでドック状態になるので
Memoをクリックしてフォーカスを移動させることが出来ないのです

>>229
Demosのどれを見ればいいのでしょうか?

257 :デフォルトの名無しさん:04/07/22 17:33
>>256
C:\Program Files\Borland\Delphi7\DemosのDockingというデモがそれだな。
ウィンドウ表示させて、メインのフォームにドラッグすると、それでてくるよ。

258 :デフォルトの名無しさん:04/07/22 17:33
>>256
C:\Program Files\Borland\Delphi7\DemosのDockingというデモがそれだな。
ウィンドウ表示させて、メインのフォームにドラッグすると、それでてくるよ。

259 :デフォルトの名無しさん:04/07/22 17:36
あのデモだけじゃとてもコードを流用しようという気にはなれないし
フォームの退避・復旧のコードも抜け落ちてるしで
はっきり言って使い物にならないんだけどな。

260 :デフォルトの名無しさん:04/07/22 18:07
>>256
こんな感じ
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi7ProDemos%2FDemos3%5D%5D

261 :260:04/07/22 18:08
ページの一番下でつ

262 :デフォルトの名無しさん:04/07/22 19:23
>>257-261
ありがとうございます
Panelに乗せるだけで実現できるんですね

263 :デフォルトの名無しさん:04/07/22 21:15
レコード型の中の変数から、条件付で最小値を割り出す関数なんてあります?
ネストを使わずに処理したいのですが。

わかりにくいですね。詳細を書きますと、

A[0..15]という配列をレコードで定義していまして、
レコードの中にXpos(:Integer)、Ypos(:Integer)、等を定義しています。
それで、例えばA[1]を基準として、
比べるA[n]のXposが同じであることと、
Yposが基準とする変数よりも大きいこと、
その条件をクリアしたA[n]の中から、最小のYposを求めたいんです。

ちなみにver6を使ってます。

264 :デフォルトの名無しさん:04/07/22 21:26
ない
ループ使って自分で検索しろ

265 :デフォルトの名無しさん:04/07/22 21:28
>>263
そんなに非常に特殊な場合のための関数なんて、どう考えても汎用にはならないから標準では用意されているわけないと思う。

自分で作るならこんなかな

result := 考え得る最大値;
for 最初 to 最後 do
  if Xpos が一緒で、Yposが基準より大きくて、result < Ypos then
    result := Ypos;


266 :デフォルトの名無しさん:04/07/22 22:04
>ネストを使わず
これってどういう意味だろう?

267 :デフォルトの名無しさん:04/07/22 22:05
>>266
一直線に処理したいんだろ

268 :デフォルトの名無しさん:04/07/22 22:06
>>263
オブジェクトにすればクイックソートが付いてくるよ

269 :デフォルトの名無しさん:04/07/22 22:08
ソートしたいわけじゃないだろ
検索にソートするのは無駄大杉

270 :263:04/07/22 22:22
ここのレスめちゃくちゃ早いですね。皆さんありがとうございます。
>>266
すいません、大それた目的は無いのですが、単純に計算量を減らしたかったんです。
Timerを使って何度も計算をさせるため、少しでも短縮化できれば、と。
現状でも動作が鈍くなることが見受けられるので、
これ以上プログラムを複雑化するとマトモに動かないんじゃないかと。

ちなみに作ってるのはシミュレーションのアニメです。
車の挙動をシミュレートして、アニメーションで表示するんですよ。
それでお互いの車両の距離を算出するのに、先に書きましたプログラムが必要となるんです。
Xposが車線、Yposが車両の位置です。

271 :デフォルトの名無しさん:04/07/22 22:35
OpenGL使ったほうが早かったりして

272 :265:04/07/22 22:45
>>270
16台くらいなら何とかなるんじゃない?最近のコンピュータは速いから。

あと、車を動かすのは自分のプログラム?それとも他のプログラム?
自分のプログラムで動かすのなら、動かすところを細工をすれば、もっと高速化できそうだけど。

273 :デフォルトの名無しさん:04/07/22 23:26
誰か >>231 をプリーズ





274 :デフォルトの名無しさん:04/07/22 23:33
>>273
必ず実体化されるからでは?

275 :デフォルトの名無しさん:04/07/22 23:33
>>273
そういう風に実装してあるから・・・じゃダメなんだろうな。

276 :デフォルトの名無しさん:04/07/22 23:53
>>231
気にするな

277 :デフォルトの名無しさん:04/07/23 00:02
Oleで使うから、わざわざVBの文字列と互換にしてある。
OleVariantとVariantのように、OleWideStringを作ってもよかった気がするが、
>>276が正解なんだろう。

278 :デフォルトの名無しさん:04/07/23 00:17
TThreadのスレッドは
Execute関数を実行し終わったらスレッドは開放されるのですか?
いったんExecute関数を通り抜けてしまったらその後でResumeしても
もうExecute関数は起動しませんか?

279 :デフォルトの名無しさん:04/07/23 00:29
Delphi6使ってます。
WindowsXPでRC2入れたら、
デバッグ中にやたらntdll.dbgbreakpointとやらが発生して
いちいち止まっちゃうんですが。
ほかに同様の現象にあってる人いません?
もしくは対策ご存知の方いらしたらぜひ情報をお願いします。

おとなしくDelphi7買えってことかな…。

280 :263:04/07/23 00:30
>>272
あ、16台っていうのは、あくまで例なんです。
ソフトを起動した際に、交通量に関する情報をユーザーが入力して、
その上で計算結果を、画面内で制御する車両の台数と認識させるので、何台になるかわからないんですよ。
紛らわしい書き方失礼しました。

車を動かすプログラムですが、僕が作ったものです。全てゼロから作ってます。
レコードの中にYposへの加算値(画面上では車両速度)も定義してまして、
それを前方との車両の距離で随時変更させるという方法を取っています。
アニメーションの表示は・・かなり原始的と言われそうですが・・
(Xpos,Ypos)に画像を描写⇒背景を描写⇒(Xpos,Ypos+加算値)に画像を描写、の繰り返しです。
全て同じTimer内で制御しています。

281 :デフォルトの名無しさん:04/07/23 00:40
>>279
とりあえずWIN2000互換モード

282 :デフォルトの名無しさん:04/07/23 00:51
>>281
だめですた。

283 :デフォルトの名無しさん:04/07/23 00:58
>>282
ちょっとぐぐってみたら、メモリ開放関係のエラーっぽい。
なんか複雑なことやってない?

284 :デフォルトの名無しさん:04/07/23 01:10
>>283
特に複雑なことはやってませんよ。
RC2入れる前はふつーにデバッグできてたものなので。
もしかしてRC2から導入されたメモリ関連のセキュリティにVCLがひっかかってんじゃないかなぁ、と。
RC2アンインスコしようかな…。

285 :デフォルトの名無しさん:04/07/23 01:12
開発マシンに変なもん入れるなよ

286 :デフォルトの名無しさん:04/07/23 01:13
DLLの読み込みがらみ?
DELPHI-MLの過去ログ72316にも同じ話が・・・

こちらはWIN2000SP2。SP3にしたら直ったらしい。
Delphiの問題じゃなくて、SPの問題(バグ)の予感。

解決策はRC2止めるか、Ctrl+F9でEXE作ってIDE外でEXE実行するか
どちらかしか無い模様

287 :デフォルトの名無しさん:04/07/23 05:51
WriteProcessMemoryでDbgBreakPointの先頭にRET(C3h)を書き込むとか、
INT3の位置にNOP(90h)でも書き込めばいい。

288 :デフォルトの名無しさん:04/07/23 09:06
>>278
FreeOnTerminate := Trueで自動的に破棄される

SuspendすればResumeで再会できるけど、
Executeを通り過ぎたらdestructorが呼ばれて破棄される

289 :デフォルトの名無しさん:04/07/23 09:35
>>278
再利用したいなら、処理が終わった段階でExecuteを抜けずにSuspendさせておき、
外からプロパティ等を設定してResume。
Suspend中に破棄する時はTerminateを呼び出してResume。

という方法使ってます。

290 :デフォルトの名無しさん:04/07/23 09:43
>>288-289
Thx

291 :デフォルトの名無しさん:04/07/23 09:52
jpeg.pasがないのは仕様ですか?

292 :デフォルトの名無しさん:04/07/23 10:04
DelphiのCD
:\Info\Extras\Jpeg\jpeg.pas

293 :デフォルトの名無しさん:04/07/23 10:52
>>292
ありがとうございます。そんなところにあるとは思いませんでした

294 :デフォルトの名無しさん:04/07/23 11:29
232ですけど、解らない事だらけになったのでマズは付箋ソフトその物を作ろうと思ったんですが、
完全にサイズ境界線?を見えなくして且つサイズ変更可にするのはどうすれば良いのでしょうか?
キャプションなし、フラットなウィンドウでサイズ変更可能にするって事でつ。

295 :デフォルトの名無しさん:04/07/23 12:00
変数名や関数名を、変数にセットして参照や実行は出来ますか?

296 :デフォルトの名無しさん:04/07/23 12:20
>>294
これで、我慢しろ!
SetWindowLong(Panel1.Handle, GWL_STYLE, GetWindowLong(Panel1.Handle, GWL_STYLE) or WS_THICKFRAME);
SetWindowPos(Panel1.Handle, Form1.Handle, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOSIZE or SWP_NOMOVE or SWP_DRAWFRAME);


297 :デフォルトの名無しさん:04/07/23 12:25
>>295
ポインタ使えばできるんじゃね?

298 :デフォルトの名無しさん:04/07/23 12:31
>>295
クラスのプロパティやメソッド名ならできる。
TObject.MethodAddressとか

299 :デフォルトの名無しさん:04/07/23 12:41
>>294
http://forum.nifty.com/fdelphi/samples/00845.html

300 :デフォルトの名無しさん:04/07/23 13:18
>>295
できるはず。ヘルプの「手続き型」のような話だよね?

>手続き型を使用すると,手続きや関数を値として扱い,
>変数に割り当てたりほかの手続きや関数に渡したりすることができます。
>たとえば,2 つの整数パラメータを受け取って整数を返す Calc という関数を定義したとします。
>
>function Calc(X,Y: Integer): Integer;
>
>Calc 関数は変数 F に代入できます。
>
>var F: function(X,Y: Integer): Integer;
>F := Calc;

301 :A:04/07/23 15:04
>>295
変数”名”や関数”名”をセット、っていうことだから、こういうことがしたいんじゃないの?

var s: string;
s := 'FuncA';
Exec( s );

これで、 procesuer FuncA; が実行される。ての。

>300のと組み合わせて、
名前、と、手続き型をセットにした、リストを作っておいて、
使うときは、名前で検索、手続き型を呼び出し、って感じにすればいいのかな?

もっといい方法があるかもしれないけど。

302 :デフォルトの名無しさん:04/07/23 17:21
Execってなに?ヘルプに出てこないし
コンパイルも通らないけど

303 :デフォルトの名無しさん:04/07/23 17:23
例だから動くわけがない。

304 :デフォルトの名無しさん:04/07/23 17:51
type
TFunc = procedure (fn: string);

//引数にする関数
procedure Exec( fn: string );
begin
Form1.Caption := fn;
end;

//メイン
procedure main
begin
CallFunc( FileName, @Exec );
end;

//関数を渡されて処理する関数
procedure CallFunc( fn: string; func: TFunc );
func( fn );
end;

305 :デフォルトの名無しさん:04/07/23 17:56
type
TFunc = procedure (s: string);

//引数にする関数
procedure Exec( s: string );
begin
Form1.Caption := s;
end;

//関数を渡されて処理する関数
procedure CallFunc( s: string; func: TFunc );
begin
func( s );
end;

//メイン
procedure main;
begin
CallFunc( 'test', @Exec );
end;

306 :デフォルトの名無しさん:04/07/23 18:00
すみません、質問させてください。
実行時に、Alt+F4を行うと画面が閉じますよね?
そういうファンクションキーの設定を行いたいのです。
実行時にフォーム1が表示されるとして
F3を押下したときにTForm2を表示、F2を押下したときにTForm2をCloseさせたいのですが。
TActionListなどを使うとできるのでしょうか?
簡単なソースであれば是非教えてください。

307 :デフォルトの名無しさん:04/07/23 18:06
ActionかMenuItemのShortCutにF3とかF2とか設定するだけ

308 :デフォルトの名無しさん:04/07/23 18:30
>>296のは駄目ぽい。>>299だとできそうでつ。さんきゅぅ

309 :デフォルトの名無しさん:04/07/23 21:30
Webアプリで、CGIを置く場所はどこですか?

IISを使用する場合、C:\Inetpub\Scriptsに置けと書いてある事が多いのですが
上手く動きません。

310 :デフォルトの名無しさん:04/07/23 21:33
>>309
とりあえずセキュリティを気にしなければ
C:\Inetpub\wwwroot\YourSite\YourApp.exe
とかでいいんじゃないの。

311 :デフォルトの名無しさん:04/07/23 21:37
>>310
仮想ディレクトリを作成しないと駄目という事でつか?
C:\Inetpub\Scriptsって、何の為に有るんでしょう?

312 :デフォルトの名無しさん:04/07/23 22:12
>>311
別に駄目って事は無いよ。
ScriptsにファイルYourApp.exeを置くと
http://localhost/Scripts/YourApp.exeにアクセスできるようなる。
開発・テストは仮想ディレクトリとして公開したほうが手っ取り早い。
実際はCGIなんてどこに置いても動くよ。

313 :デフォルトの名無しさん:04/07/23 22:46
StringGridのような升目ではなくて、不定形な形にデータを表示させたいのですが
Excelのセルの結合みたいな感じです
どうすれば出来るのでしょうか


314 :デフォルトの名無しさん:04/07/23 22:56
メモリー上にファイルを作ること出来ますか?
Wavを鳴らすときにいちいちHDDに読みに行くのをやめさせたいのですが

315 :デフォルトの名無しさん:04/07/23 22:57
StringGridもしくはDrawGridのDrawCellをオーバーライドして枠消し&自分でデータ書き。

OnDrawCellイベントでも同じことできまつ。

316 :デフォルトの名無しさん:04/07/23 23:13
>>299
どうやっても、漏れの頭では斜めにサイズ変更できませんですた(´・ω・`)ショボーン
解決方法キボンヌ

317 :デフォルトの名無しさん:04/07/23 23:36
あ、できますた。スマソ

318 :313:04/07/23 23:43
>315

すみません、もう少し詳しく教えてもらえませんでしょうか
>StringGridもしくはDrawGridのDrawCellをオーバーライドして枠消し&自分でデータ書き。
 こっちはなんのことか、よくわかりません(ごめんなさい)

>OnDrawCellイベントでも同じことできまつ。
 これについて考えてみたのですが

Excel風にA列-C列,1行-3行あるとして
_______A______B______C
1[_____________][______] A1B1結合
2[_____][______][^^^^] C2C3結合
3[_____][______][______]

のようにしたい考えたとき
Acol,ARow = 0 のとき Rectには
A1の範囲がわかると思うのですが、B1の範囲はどのようにしてわかるのでしょうか


319 :デフォルトの名無しさん:04/07/23 23:57
A1を描けと言われたらA1に入る部分だけ描いて、
B1を描けと言われたらB1に入る部分だけ描けばよろし

320 :デフォルトの名無しさん:04/07/24 00:02
EXCELみたいな事をやりたいならEXCEL埋め込めばいいのに。

321 :デフォルトの名無しさん:04/07/24 00:11
データ表示だけでOffice必須ソフトにするのはまずいだろ。

322 :デフォルトの名無しさん:04/07/24 00:41
>>299を使ってる時にフォームのダブルクリック判定はどうするのん?
1つ解決したら1つ問題が出るよウワァァァン

323 :デフォルトの名無しさん:04/07/24 02:55
>>322
Labelを貼り付けてAlignをalClientに設定して、ダブルクリックを関連付ければよろし。
・・・根本的な解決になってないな。

324 :デフォルトの名無しさん:04/07/24 05:49
>>322
GraphicControl のマウスイベントは親に飛んできたメッセージから
呼ばれるから、親で取れないならどっちにしろ無理。

非クライアント領域をクリックしたことになってるので、クライアント
領域をクリックしたことにしてやればいい。

procedure TForm1.WMNCLButtonDblClk(var Message: TWMNCHitMessage);
var
  Point: TPoint;
begin
  if Message.HitTest = HTCAPTION then
    with TWMMouse(Message) do
    begin
      Msg := WM_LBUTTONDBLCLK;
      Keys := MK_LBUTTON; // 面倒なので手抜きです
      Point := SmallPointToPoint(Pos);
      Point := ScreenToClient(Point);
      Pos := PointToSmallPoint(Point);
      WindowProc(TMessage(Message));
    end
  else
    inherited;
end;

325 :デフォルトの名無しさん:04/07/24 10:46
うぅむ解んない・・・・

326 :デフォルトの名無しさん:04/07/24 10:52
>>322
ナニゲニメッセージ系を沢山処理が必要になるようだったら、
根本というか使うコンポーネントから変えた方が良い。

コンポーネントの何を使うか実験は、数分で出来るっしょ。

327 :デフォルトの名無しさん:04/07/24 15:51
>>322
思いつきでこういう手を考えてみたが、どうだろう。

グローバル変数を宣言する。
ver
 FormDblClick: Integer;

Procedure TForm1.WMNCHITTEST(Var Msg: TWMNCHITTEST);
に以下のコードを加えてみる。

if not (Pos.X > (Left + CBorder)) and (Pos.X < (Left + Width - CBorder))
 and (Pos.Y > (Top + CBorder)) and (Pos.Y < (Top + Height - CBorder)) then
  FormDblClick := FormDblClick + 1;
if FormDblClick > 1 then
 begin
  //( ゚Д゚)<ダブルクリック時処理
  //( ゚Д゚)<正確にはダブルクリック以上時処理?みたいな
  //( ゚Д゚)<コードは自分で書くように
  FormDblClick := 0;
 end;

タイマーをフォーム上に置いて、以下のコードを記述する。
procedure TForm1.Timer1Timer(Sender: TObject);
 //( ゚Д゚)<Timer.Intervalは250以上くらい?
 if FormDblClick > 0 then
  FormDblClick := FormDblClick - 1;
end;

なお、まともに動作しなくても当局は関知しない。

328 :デフォルトの名無しさん:04/07/24 15:59
//( ゚Д゚)<書いてから気が付いたけど
//( ゚Д゚)<別にグローバル変数宣言しなくてもForm1.Tag使えばいいと思った

329 :デフォルトの名無しさん:04/07/24 16:04
>>327
×if not (Pos.X > (Left + CBorder)) and (Pos.X < (Left + Width - CBorder))
  and (Pos.Y > (Top + CBorder)) and (Pos.Y < (Top + Height - CBorder)) then
○if (Pos.X > (Left + CBorder)) and (Pos.X < (Left + Width - CBorder))
  and (Pos.Y > (Top + CBorder)) and (Pos.Y < (Top + Height - CBorder)) then


330 :デフォルトの名無しさん:04/07/24 16:57
>>327
これだとクリクしなくてもFormDblClick増えません?

331 :デフォルトの名無しさん:04/07/24 17:33
//( ゚Д゚)<・・・
//( ゚Д゚)<あ、本当だ
//( ゚Д゚)<大失敗

332 :デフォルトの名無しさん:04/07/24 18:42
メインフォームは通常でサブフォームを常に手前に表示てどうするのでしょうか?
ジケーン用にフォーム2にボタン置いて、ボタンClickとフォームのOnPaintに
SetWindowPos(Form2.Handle, HWND_TOPMOST, 〜
てしたんだけど、効かない時が有るんですけどwhy why why?

333 :デフォルトの名無しさん:04/07/24 18:49
あ、↑且つ同時にメインフォームも操作可って事で

334 :デフォルトの名無しさん:04/07/24 19:06
FormStyleをfsStayOnTopにするのは?

335 :デフォルトの名無しさん:04/07/24 19:13
>>334
勿論駄目ですた

http://www.asahi-net.or.jp/~HA3T-NKMR/tips025.htm
こんな感じにメインフォームを非表示でやれば良いのかな?

336 :デフォルトの名無しさん:04/07/24 19:32
C言語でいう#defineみたいなのないですか。

337 :デフォルトの名無しさん:04/07/24 20:13
>>332
ちょと別の方法を使った方がいい気がして来たから、これなしで

338 :デフォルトの名無しさん:04/07/24 21:58
やっぱ分かんない。
複数のウィンドウを操作可能な状態で、個別に通常状態と常に手前に表示切替可に
するのはどうすれば良いのでしょうか?根本的に知識が欠けててスマソ

339 :デフォルトの名無しさん:04/07/24 21:59
あ、ごめ。代用方法今度こそ思いついた。駄目だったらまた来る

340 :313:04/07/24 22:18
>319
A1に入る部分を書くときにB1の大きさがわからないと
A1の部分を確定できません。
幅が A1(2)でB1(3)のときに "abc"をセンタリング処理をして表示したいとする
A1には余白と"a"、B1には'bc'と空白をセットするがA1の描画のときには
B1の大きさがわからないと決定できないと思う。

どのようにすればよいのでしょうか?




341 :デフォルトの名無しさん:04/07/24 23:29
CellRect

342 :313:04/07/25 00:23
>>341
こんな感じでとりあえずセル結合みたいに表示できました。
ありがとうございます。

A1,B1で値を編集すると表示が変になるようなのでもう少し検討してみます。

Rect(a1.Left, a1.Top, b1.Right, b1.Bottom);
としたとき、Rect: TRect; と定義しているところと
rect関数が名前の衝突をしてしまいました。
とりあえずRect: TRect → ARect: TRect に変更して回避したのですが
このような場合どのように回避するのが一般的なのでしょうか

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
ARect: TRect; State: TGridDrawState);
var
A1,B1,AB1 : TRect;
begin
if (ACol = 1 ) and (ARow = 0) then
begin
a1 := StringGrid1.CellRect(0,0);
b1 := ARect;
AB1 := Rect(a1.Left, a1.Top, b1.Right, b1.Bottom);
StringGrid1.Canvas.FillRect(AB1) ;
StringGrid1.Canvas.TextRect(ab1,50,5,StringGrid1.Cells[0,0]);
end;
end;

343 :デフォルトの名無しさん:04/07/25 01:26
今indyでローカルからCGIにアクセスするアプリを作ってるんですが、
postでデータを送信するさい、文字列に「&」が含まれていると
CGIの引数を連結する「&」と勘違いしているらしく、送信結果がおかしくなってしまいます。
「%26」などの形にURLエンコードしても、そのまま表示されるだけで効果がありません。
どうすれば良いでしょうか?

344 :デフォルトの名無しさん:04/07/25 02:11
>>342
Rect 関数の方を Classes.Rect() と書いたらどうですか?

>>343
Indy を使ったことないので見当違いかもしれませんが、送るデータに
Content-Type: application/x-www-form-urlencoded
というヘッダはついてますか?

CGI での扱いによっては %26amp%3B にしないとダメかも。

345 :デフォルトの名無しさん:04/07/25 03:15
自作VBアプリをdelphiに移植中なのですが
その中でwinsockを使っています。
この際例外処理をVBではon error gotoで処理していたのですが
delphiではどのように処理すればよいでしょうか?
やりたいのはエラーメッセージは表示させずエラーは
ログとして吐き出すだけで処理をそのまま続けたいです。


346 :デフォルトの名無しさん:04/07/25 03:17
try
 Win32Check(WINSOCKAPI);
excepion
 on E:EOSError do
  ShowMessage(E.ClassName + ':' + E.Message);
end;

347 :デフォルトの名無しさん:04/07/25 03:49
システムモーダルのメッセージボックスを出す方法
ありますか?

348 :デフォルトの名無しさん:04/07/25 04:57
MB_SYSTEMMODAL

349 :347:04/07/25 09:17
>>348
ありがとうございます。できました。

またひとつ質問があります。
フォームが最小化されたイベントを取得したいのですが
OnResizeイベントでは取得できないようです。
どこで取得すればよいのでしょうか?


350 :デフォルトの名無しさん:04/07/25 09:24
>>349
Application.onMinimize?

351 :347:04/07/25 09:41
>350
できました。さんくす!

352 :347:04/07/25 10:33
おかしいなぁ
最小化でタスクトレイ格納をしてるのですが
1回目はタスクトレイに入れた後、フォームをhideして
タスクバーから消えるのですが、いったん元に戻して
再度最小化するとタスクバーから消えてくれません。


353 :347:04/07/25 10:50
事故解決
showwindowにapplication.handleを渡したら直りました。

354 :347:04/07/25 11:31
昨日はじめたばかりですがDelphi(・∀・)イイ!!

355 :ななしへたぐらま ◆XcB18Bks.Y :04/07/25 12:12
>>227
なるほど!
string型の定数にしておけば
『string型からstring型変数への代入では文字列データのコピーは行われない』
という仕様によって代入時の実行効率が上がるわけですね.

string型の方が変数の初期化時の処理量が多くなるような気がしたので
PCharのほうがよいかなと思ったのですが木を見て森を見ず,だったようです.

>>252
ええ,今回はレコードを丸ごとコピーする場合や
ファイルに対して読み書きする場合は想定していなかったので
上のような意図であえてPCharを使っていた訳です(結局逆効果でしたけど).


356 :デフォルトの名無しさん:04/07/25 13:05
Captionなどに変数を表示するのはどうやったらいいのですか?

たとえば
var
i : integer;



i := 320;
Button1.Caption:='iの値は%dです',i;
などとやってもエラーになります

357 :デフォルトの名無しさん:04/07/25 13:08
>>356
Button1.Caption:='iの値は' + IntToStr(i) + 'です';

358 :デフォルトの名無しさん:04/07/25 13:09
IntToStrってやらなきゃいけなかったのか・・C言語と違うんですね
ありがとうでした

359 :デフォルトの名無しさん:04/07/25 14:41
フォームに張られているコントロールの座標を取得する方法はありませんか?

360 :デフォルトの名無しさん:04/07/25 14:43
>>359
ぷ( ´,_ゝ`)、、ププ
ろくに調べることもできない夏厨か、
ぱーなのか?頭の中も
てきとうにわからないときは聞くというのか
ぃってよし

361 :デフォルトの名無しさん:04/07/25 15:00
left, top, clientorigin

362 :デフォルトの名無しさん:04/07/25 15:02
>>359
left と topです
でも一回ぐらいヘルプ読もうよ(´・ω・`)

363 :デフォルトの名無しさん:04/07/25 15:34
>360
わらた

364 :デフォルトの名無しさん:04/07/25 15:41
>>358
本当にC言語知っているのですか?

365 :デフォルトの名無しさん:04/07/25 17:01
>>360
今気づいた
貴方いい人でつね

366 :デフォルトの名無しさん:04/07/25 17:11
TListViewで項目を右クリックしてもOnMouseUpが発生しないのは、なしてですか。

367 :A:04/07/25 18:05
>>356 >>358
C言語でも、いきなり、Button1.Caption:='iの値は%dです',i; なんてコードは通らないよ。
C言語だって、IntToStr相当の方変換は必要。
整数型をいきなり文字型に代入したら期待した結果は得られない。

たぶん、printf()関数を使うことを想定してるのだろうけど、
それだったら、Delphiにも、同等の Format 関数があるよ。

Button1.Caption:=Format( 'iの値は%dです' , [ i ] );

これでできる。Format関数の詳しい仕様はヘルプ参照。

368 :359:04/07/25 19:13
>>360-362
レスありがとうございます

すいません。質問の仕方が悪かったです。
Form1
 Panel1
  Panel2
 Panel3
  Panel4
   Panel6
  Panel5

こんな風に設計したとして
Panel6のLeft,TopではPanel4からの値です。
Form1からの値を取得するにはどういう風にすればいいのでしょうか?

369 :デフォルトの名無しさん:04/07/25 19:17
Panel6.Parentをたどっていって算出

370 :デフォルトの名無しさん:04/07/25 19:19
pos := Panel6.ClientToScreen(Point(0, 0));
pos := Form1.ScreenToClient(pos);

371 :359:04/07/25 20:39
>>369-370
ありがとうございます。無事に取得することができました

372 :デフォルトの名無しさん:04/07/25 20:57
QuickReportについて
グループフッターをディティールのように可変にすることは可能ですか?

373 :372:04/07/25 20:57
たとえば

商品が2種類ある場合
-------------------------------------------------
  担当者   得意先   商品   金額
-------------------------------------------------
  担当者A  得意先A  商品A  ¥100
              商品B  ¥200
-------------------------------------------------
        得意先計  商品A  ¥100
              商品B  ¥200
-------------------------------------------------
  担当者B  得意先B  商品A  ¥300
              商品B  ¥400
-------------------------------------------------
        得意先計  商品A  ¥300
              商品B  ¥400
-------------------------------------------------

374 :372:04/07/25 20:58
商品が3種類ある場合
-------------------------------------------------
  担当者   得意先   商品   金額
-------------------------------------------------
  担当者A  得意先A  商品A  ¥100
              商品B  ¥100
              商品C  ¥300
-------------------------------------------------
        得意先計  商品A  ¥100
              商品B  ¥200
              商品C  ¥300
-------------------------------------------------

のように、商品数によってグループフッターの行数を変えたいのです。
商品は、商品マスタの数によるので、一定ではありません。
このような帳票は、可能でしょうか?

375 :347:04/07/25 23:52
delphiにはVBでいうapp.previnstanceはありますか?

376 : ◆OUFPNullPo :04/07/26 00:10
ちょぃと質問させてください

タイマーをたくさん同時に使用するソフトを作らなくちゃいけなくて、
でもタイマーたくさんポトペタするのいやだったので、下のような
タイマーコンポを作りました。

1) コンポに実行するprocedureとInterval(procedureを実行する間隔)を複数登録できる
2) そのコンポでは一つだけタイマーが動いていて、ある時間ごとに経過時間を保存していく
3) 2)の経過時間が1)で設定したInterval以上にっていれば1)で設定した
   procedureをTThread内で実行し、2)のカウントをゼロに戻す。

ダイアログ等の表示で処理が帰ってこないことがあるので、procedureの実行は、
わざわざTThreadから行っているわけですが、これだとタイマーをたくさんポトペタ
するのと負荷はそれほどかわらないですかね?

CPU使用率等みても、いまいちわからなかったので、どなたか詳しい方が
おられましたら教えて頂けませんか?

377 :デフォルトの名無しさん:04/07/26 01:04
>>375
そろそろ検索くらいしてくれますか?

378 :デフォルトの名無しさん:04/07/26 02:17
最近 1 のこれ無視されてるよな

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。



379 :デフォルトの名無しさん:04/07/26 03:45
虹彩による個人認証システムの簡単なものを作りたいと考えております

ある画像ファイルを入力し その画像の中から新円もしくは楕円に近い軌跡を描く線のみを抽出して別画像ファイルとして
出力するということを考えているのですがその画像ファイル内には他にも多くの直線部分や、塗りつぶし部分などが含まれているため
曲線部分のみの抽出方法をどうしたらいいのか悩んでおります。

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

たとえばこのような画像を入力した場合ある程度のフィルタ処理をした後データ-ベース上にある登録された個人との
照合をしある程度以上の適合率が出た場合はOKサインを出すといった手法で考えております。
ファイルタ処理は完全に白黒レベルまで虹彩と書いてある目の外側にある放射線状に延びている多くの線は残した状態にまで
フィルタをかけデータベース上にある画像ファイルの一番外側の楕円軌道と入力画像の大外の楕円軌道が一致するよう
拡大縮小処理をした後にその2画像の適合率のようなものを出したいと考えています。

上記のような画像ファイルの中から曲線部分の抽出することを考えた場合どのような手法が考えられるでしょうか?


380 :デフォルトの名無しさん:04/07/26 04:16
>>372
2ちゃんにQuickReportに詳しい人はいなさそう。

>>376
一般的にスレッドの方がタイマより負荷は高い。
タイマはシステムリソースなので、沢山貼り付けると9x系でリソース不足を起こしますよ。

>>379
画像処理スレの過去ログ読んで、なければそっちで質問した方が良いでしょう。

381 :デフォルトの名無しさん:04/07/26 04:37
> 沢山貼り付けると9x系でリソース不足を起こしますよ。

で、沢山ってどのくらい?10個なら >>376 のコンポよりましだと思うが

382 :デフォルトの名無しさん:04/07/26 05:04
試してみたら?
もっとも、みんなで仲良く使うものだから、
自分だけ良くても駄目ですよ。


383 :デフォルトの名無しさん:04/07/26 05:13
> 試してみたら?

<沢山>だとリソース不足を起こす、と主張してる香具師が試せば

384 :デフォルトの名無しさん:04/07/26 05:20
好きなようにすれば?

385 :デフォルトの名無しさん:04/07/26 05:25
383を怒らせちゃったみたいだね。
なんでかな。

386 :デフォルトの名無しさん:04/07/26 05:26
「沢山」って抽象的すぎる。TBrush だって TPen だって
共通リソース沢山つかえばリソース不足が起こる。
だから、沢山つかうな、って言ってもなぁー

387 :デフォルトの名無しさん:04/07/26 08:02
前に100個ぐらい使っても大丈夫と言ってた人がいたような>タイマー

かくいう自分は今作ってるアプリでポップアップメニューをひい、ふう、みい・・・19個使ってる。
わはー。

388 :デフォルトの名無しさん:04/07/26 08:23
ifとかCaseとか増えすぎて、変数も何十個とか合っていみがわからなくなってしまったい!

389 :デフォルトの名無しさん:04/07/26 08:52
>>388
オブジェクト指向使えば、ifやcaseでグジャグジャにならないよ〜
って言うじゃない。言うじゃない・・・切腹

390 :デフォルトの名無しさん:04/07/26 08:53
ちゃんとコメントをつけましょう

391 :デフォルトの名無しさん:04/07/26 09:01
>>388
モジュール分割、クラス設計がヘタレって事
リファクタリングしろ

392 :デフォルトの名無しさん:04/07/26 09:36
ClientSocketコンポーネントのOnErrorイベントで
ErrorCodeが取れますが、これをメッセージに変換するには
どうすればよいでしょうか?


393 :デフォルトの名無しさん:04/07/26 11:28
ツールバーに配置したボタンにショートカットキーを割り当てるには
どうしたらよいでしょうか?

394 :デフォルトの名無しさん:04/07/26 11:47
>>393
ActionListかMenuを使う。

395 :デフォルトの名無しさん:04/07/26 12:27
>>394
ありがとうございます。調べてみます。

396 :デフォルトの名無しさん:04/07/26 13:18
Delphi作成したアプリケーションのアイコンを、エクスプローラーでの表示形式で”アイコン”
を選んだときの32ピクセルのサイズと、”一覧”を選んだときの16ピクセルのサイズの
2つを別々のものにしたいのですけど、どうすればできるでしょうか?
プロジェクトオプションでは一個しか設定できないですし、ちょっとわかりません。

397 :デフォルトの名無しさん:04/07/26 13:24
>>396
.icoファイルの中に16ピクセルと32ピクセル
両方持つんだよ。

398 :デフォルトの名無しさん:04/07/26 13:31
>>397
そうだったのですか、わかりました。
早速アイコンエディタでも探してきます。

399 :デフォルトの名無しさん:04/07/26 16:06
Delphiに付属のイメージエディタだと色数に制限がかかるんだよな・・

400 :デフォルトの名無しさん:04/07/26 16:09
あれの下の256色のパレットの使いにくさ最強。

401 :デフォルトの名無しさん:04/07/26 16:31
てかイメージエディッタって全く進化なしだな。

何年前のアプリだよ。

402 :デフォルトの名無しさん:04/07/26 16:36
イメージエディタにはVC使ってる

403 :デフォルトの名無しさん:04/07/26 16:53
Paintgraphics で psd 出力。
@icon変換でコンバート。
で俺は作っている。

404 :デフォルトの名無しさん:04/07/26 18:09
イメージエディタならフリーいいのがいくらでもあるだろ

405 :デフォルトの名無しさん:04/07/26 19:19
Delphi6で、ランダムな数作るのはどうしたらいいんでしょうか。
どの本にも載ってないし、ヘルプとか探してもそれらしいのは見つからないし。

406 :デフォルトの名無しさん:04/07/26 19:27
random

407 :デフォルトの名無しさん:04/07/26 19:28
>>405
randomizeも忘れずにな。

408 :366:04/07/26 19:29
解決しました。MSDNにそういうもんだと書いてました。

409 :デフォルトの名無しさん:04/07/26 19:52
>>406
>>407
有難うございます。
後からいろいろなサイト見て回ったんですが、
こんな書き方であってるのでしょうか(;´Д`)
Randomize;
hoge := Random(3);

なんか弾かれたんですがorz
参考にしたサイトが間違っていたのか、自分の書き方が違ったのか。

410 :デフォルトの名無しさん:04/07/26 19:55
>>409
hogeはちゃんと宣言したか?

411 :デフォルトの名無しさん:04/07/26 20:02
>>409
エラーコードぐらい書け

412 :デフォルトの名無しさん:04/07/26 20:02
>>410
ええ、ちゃんとIntereger型で宣言されてます
でも「(が必要な場所に:=があります」
と、コンパイルエラー。
そのあたりを括弧とかいろいろ付けてみたんですが
相変わらずです。

413 :デフォルトの名無しさん:04/07/26 20:03
Integer型な

414 :デフォルトの名無しさん:04/07/26 20:05
>>413
タイプミス鬱・・・。
宣言はタイプミスはありませんでしたがw

415 :デフォルトの名無しさん:04/07/26 20:08
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Form2.Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;

このついでにForm2を画面最前列に表示させるにはどうしたらいいんですか?

416 :デフォルトの名無しさん:04/07/26 20:11
>>415
TForm.BringToFrontとかなかったか?

417 :デフォルトの名無しさん:04/07/26 20:13
>>412
「(が必要な場所に:=があります」 場合には、本来(があるべきなのに
ないわけだから、その行のはるか以前に(があるべきなのにないんでしょう。

どこが問題なのか、一つ一つコメントアウトさしてみれ。


418 :416:04/07/26 20:19
>>415
てか、コードをみていて思ったのだが、Form2上のTImageをいじるんだから、
OpenDialogも含めてForm2上でやったほうがいいと思った。

Form2上のオブジェクトをいじるんじゃなくて、Form2のprocedureなり、
functionとして作成して、そのメソッドをForm1のOnClickイベントで
実行させたほうがいいよ。

じゃないと同じ処理や似た処理をするとき、なんでもForm1に書かないと
いけなくなって、修正があったときとか大変。

まあ好みなんだろうけど。

419 :デフォルトの名無しさん:04/07/26 20:32
一通りやってみました。
procedure TForm1.gaClick(Sender: TObject);
begin
nullpo.Caption:='ga';
hoge:=0;
end;
//この処理の前にhogeは宣言済み
一部分をくりぬくとこんな感じなんですが
ここでbigenをコメントアウトすると
hogeのエラーはなくなってこの前の行がエラーになります。
他のをコメントアウトしてもこういうのはならなかったので
書いてみました。


420 :405:04/07/26 20:34
>>419
このときのは[エラー] janken.pas(47): 不正なコンパイラ指令 : 'nullpo'ですね。

421 :デフォルトの名無しさん:04/07/26 20:36
何で一部をくりぬくんだ
全部出せよ

422 :デフォルトの名無しさん:04/07/26 20:39
馬鹿にされてるんだろうか?

423 :デフォルトの名無しさん:04/07/26 20:43
ランダムと関係ないコード出されて
エラーの原因を教えろだからな

424 :デフォルトの名無しさん:04/07/26 20:48
>>419
random使ってるあたりを晒せ

425 :デフォルトの名無しさん:04/07/26 20:56
良く釣れるすれでつねwww

426 :デフォルトの名無しさん:04/07/26 21:02
厨ってワンパターンだね( ´ー`)y-~~ 

427 :デフォルトの名無しさん:04/07/26 21:03
こんなんで釣り気取りでつか?

428 :デフォルトの名無しさん:04/07/26 21:28
ScrollBarを動かしたときその値をLabelに表示させたいと思っているのですが
SCROLLBARの何を拾ってくればいいのかわかりません 教えてください。

429 :デフォルトの名無しさん:04/07/26 21:32
>>428
TScrollBar.OnChangeでTLavel.Caption := IntToStr(TScrollBar.Position);

430 :デフォルトの名無しさん:04/07/26 21:39
>429
ありがとうございました

431 :デフォルトの名無しさん:04/07/26 21:44
どうして、データってリトルエンディアンとかいって
123456ABCDっていう数値はメモリやファイル上だと
CDAB563412ってなるの?わかりづい。

432 :デフォルトの名無しさん:04/07/26 21:47
Word型とInteger型ってWord型のほうがいいの?
INTって負の数もつかえるけど、32000くらいまでしか出来ないんだよね?

433 :デフォルトの名無しさん:04/07/26 21:47
配線の関係です。

434 :デフォルトの名無しさん:04/07/26 21:55
>>432
Integer-2147483648..2147483647 符号付き 32 ビット
Cardinal0..4294967295         符号なし 32 ビット


Smallint-32768..32767         符号付き 16 ビット
Word0..65535            符号なし 16 ビット

435 :デフォルトの名無しさん:04/07/26 21:58
>>431
先に下位のデータを取り出せたほうが、CPUの計算上で
有利だからじゃない?
上位から取り出さないといけないと、1桁目まで読まないと
計算できないから不利になるんじゃないかな?

と適当なことを言ってみる。

436 :デフォルトの名無しさん:04/07/26 22:04
リトル・エンディアン方式は、小さい数を小さいアドレスに書くべきだという考えから来ている。
ビッグ・エンディアン方式は、数字は高位の数を左側に書くべきではないか、という考えから来ている。

だとさ


437 :デフォルトの名無しさん:04/07/26 22:11
>>432
Integerは4バイトで、Wordは2バイト。
倍違うからさ、扱いたい整数の範囲によってどっち使うかを選択汁


438 :デフォルトの名無しさん:04/07/26 22:13
>>435
バス幅が32bitなら4バイト一度に読み込まれるが?

439 :ななしへたぐらま ◆XcB18Bks.Y :04/07/26 22:36
>>404
前にベクターとかで探してみたのですが,案外良いものがなくて困りました.
自作しないとだめかなぁ.

>>401
Delphi 2.0の頃から変わってないようなので約8年前.

>>419
変数hogeを宣言する場所を間違っているような気もします.
ちゃんとTForm1のフィールド変数になるように宣言しないとだめですよ.たとえば
type
 TForm1 = class(TForm)
 private
  hoge: integer;
 public
 end;
みたいに.あとはbeginとendの数を間違えているとかかなぁ.

>>432
ほとんどの場合integer型のほうがよいと思います.
Delphiを動かせる環境は32ビット以上のCPUをもつPCであり,
16ビットデータの読み書きや計算の速度は32ビットの場合と変わらないので
16ビット変数を使っても速度上のメリットはないはずです.

Word型を使うとすれば
・取り扱おうとしているデータが16ビット符号なしに収まる範囲である場合
・APIの呼び出しなどで16ビット符号なしでなければならない場合
などでしょうか.

440 :デフォルトの名無しさん:04/07/26 22:55
> 16ビットデータの読み書きや計算の速度は32ビットの場合と変わらないので

16ビットデータを扱うと遅くなるよ

441 :デフォルトの名無しさん:04/07/26 22:57
>>438
そのバス幅が32bitでない頃のCPUと下位互換で、
ここまできたわけで。

442 :デフォルトの名無しさん:04/07/26 22:59
TMemo並に軽快で、文字列ごとにフォントの色を変えたりできる
コンポーネントはどこかにありませんか?

443 :デフォルトの名無しさん:04/07/26 23:11
>>431
モトローラのMPUだと123456ABCDとそのままメモリやファイルに書いてくれるぞ。

444 :デフォルトの名無しさん:04/07/26 23:28
>>443
よかったな

445 :デフォルトの名無しさん:04/07/26 23:34
>>443
Power PCとか68000の話しか?

446 :デフォルトの名無しさん:04/07/26 23:41
Delphiのお粗末な生成コード見たことあるなら
速度を気にするのが馬鹿らしくなるはずなんだが。

447 :デフォルトの名無しさん:04/07/26 23:42
6809

448 :デフォルトの名無しさん:04/07/26 23:47
>>446
どれならいいのん?

449 :デフォルトの名無しさん:04/07/26 23:59
PeekNamedPipe関数でパイプ内からメッセージを読み取って
いるのですが、これがすべて終了しないとパイプ内にメッセージが
かえってこない…。パイプを作成しないとサクサクと結果が表示され
るのにどうしてだろう…orz ただのヘタレなのかなぁ

450 :デフォルトの名無しさん:04/07/27 00:39
>>439
変数のスコープの間違いなら
「定義されてない・・・です」というエラーになるはず。
コンパイラなんたらエラーなら、もしnullpo.captionの
とろでエラーになってるなら、Tnullpoクラスでなんか
まちがってるんでしょう。

451 :デフォルトの名無しさん:04/07/27 00:45
ほんとに困ってるならコードを出すよ
放置してるって事はネタか解決したと思われ

452 :デフォルトの名無しさん:04/07/27 00:53
TString型とString型の違いがよくわからないです
TString型って配列(?)なの?


453 :デフォルトの名無しさん:04/07/27 00:55
抽象クラス

454 :デフォルトの名無しさん:04/07/27 01:00
>>452
とりあえず、ソレが分からない内は「String」だけ使ってればよろしいかと。
「TString型が理解出来る頃」が来るまで必要無いかと。
自然に違いが分かる時が来るから焦ることは無いかと。

455 :デフォルトの名無しさん:04/07/27 01:16
俺もよくわかんないや
TStringsの事?

456 :454:04/07/27 01:19
あ、失敗。

>>455
イジワルネ♥

457 :455:04/07/27 01:23
>>456
あ、なんだ
意地悪したワケじゃないよホント。

458 :デフォルトの名無しさん:04/07/27 11:30
Delphiでつくったプログラムからバッチファイルを実行するにはどうしたら良いでしょうか?

具体的にはボタンを押すとバッチファイルを起動するようにしたいのです

Delphiのバージョンは6.0です

459 :デフォルトの名無しさん:04/07/27 11:32
ShellExecute

460 :ななしへたぐらま ◆XcB18Bks.Y :04/07/27 14:11
>>440
そうでしたか.ふぉろーありが?です.


461 :デフォルトの名無しさん:04/07/27 16:39
Delphi6PersonalのClientSocketコンポーネントですけど
OnReadよりOnDisconnectが先に実行されてしまうことが
あるんですけど、これってコンポーネントの問題ではなく
通信上の問題なんでしょうか?
VBでやってたころはこんなことなかったので不思議です。

462 :デフォルトの名無しさん:04/07/27 16:42
VBだと何かデータを送ってからじゃないと切断できないのか
大変だな

463 :デフォルトの名無しさん:04/07/27 16:46
最後の一文がなかったら絡まれることもなかったろうに・・

464 :デフォルトの名無しさん:04/07/27 16:46
もっとわかりやすく書いてやれよ

disconnectは回線が切断された状態
これは通信の内容に関係しない

readで受け取るべきデータがあるなら
受け取ってから切断するようにするべき

sendで送ってからすぐ切断とか言うアホなコード書いてないだろうな

465 :デフォルトの名無しさん:04/07/27 16:47
ここはVBに過敏なスレですね

466 :461:04/07/27 16:55
レスが4つも。びっくり。
HTTPでゲットしてます。
処理の流れ
1. ボタンクリック -> clientsocket.open
2. OnConnectイベント -> SendText('GET ほにゃらら');
3. OnRaadイベント -> buff := ReadText();
4. OnCloseイベント -> clientsocket.close; データ加工

という流れです。
そもそも、この流れが問題ですか?
ほとんどはうまくいってるのですが
たまにデータが取得できないことがあります。
VBではこの方法でもほとんどデータが取得できない状態は
発生しませんでした。

467 :461:04/07/27 16:59
あっ!OnErrorイベントでsocket.closeをしてなかった。
これかな。

468 :デフォルトの名無しさん:04/07/27 17:00
>>466
Readの後にCloseしてるのにデータが取得出来ないとは?
データが取得できなければCloseしないんだよな?
OnDissconnectはいつ起きたんだ?

469 :デフォルトの名無しさん:04/07/27 17:03
>>468
サーバが送信し終わると自動的に切断する仕様なんじゃないの?

TIdTCPServerとかしか使ったことないのでアレだけど、
バッファがゼロになってから切断するとか、相手から受信完了
メッセージがきてから切断するとかのほうがいいんじゃないかと。

470 :461:04/07/27 17:06
>>469
はい。そういう仕様だと思っております。
とりあえずOnErrorにcloseを入れて様子を見てみます。

471 :デフォルトの名無しさん:04/07/27 17:07
切断するような鯖(ほとんどそうだと思うが)でも最後まで拾えるよ
途中で切れるなら組み方が悪いだけ
まったくこないなら送信したリクエストが悪い
Readは何回も発生するってのはわかってるだろうな
情報小出しにしないでもっと詳細きぼん

472 :461:04/07/27 17:10
OnErrorにclose入れたけど、さっそく発生。

>>471
readは何回も発生するのはわかっています。
書き間違えましたが
3. OnRaadイベント -> buff := ReadText();

3. OnRaadイベント -> buff := buff + ReadText();
です。

たまになのでリクエストが悪いようには思えないのですが

473 :デフォルトの名無しさん:04/07/27 17:12
>>471
なんか、データを全部受信する前にサーバ側が切断しちゃって、
データが全部送られてこないってこと、なんかあったよーな記憶があるよ。

VBかC++だたかもしれんが・・・

474 :461:04/07/27 17:16
>>473
あっ!そうなんですか?
じゃあ、VBでも発生していたのかも。
ちなみにVBのときはconnectする前にローカルポートを0に
してましたけど、Delphiだとどうやるんでしょう?
clientsocket.Socket.LocalPort := 0
だと読み取り専用プロパティでエラーになってしまいます。

475 :デフォルトの名無しさん:04/07/27 17:18
ちょっと待て
VBとDelphiで全く同一の条件で試してDelphiだけで不具合が起きるって
ことじゃないのか?

476 :461:04/07/27 17:23
>>475
VBでも試してみました。
やはりVBでは発生しません。なんだろう。

477 :デフォルトの名無しさん:04/07/27 17:24
VBで問題ないならVBで作ればいいじゃん

478 :461:04/07/27 17:26
VBは持ってないので。

479 :デフォルトの名無しさん:04/07/27 17:27
言ってることが支離滅裂だな

480 :デフォルトの名無しさん:04/07/27 17:27
>>476
まずサーバ側で送信し終わったら切断するルーチンを省いて検証してみなよ。
発生しない→全部送信し終わったら切断するという処理を作る
発生する→その他の問題
と一つ一つ切り分けをしていけばいい。

481 :デフォルトの名無しさん:04/07/27 17:29
不具合がある鯖って晒せる?

482 :デフォルトの名無しさん:04/07/27 17:36
ソケットコンポなんて使うからおかしくなるんだよ。
WinInet使えよ。

483 :461:04/07/27 17:42
>>480
どうやらOnRead1回、その後OnDisconnectの模様

>>481
それはちょっとできかねます。

>>482
やっぱりそうですね。
VB5.0のWinsockコントロールも不具合があったので
信用できないんですよね

484 :461:04/07/27 17:43
まあ、通信には失敗を想定するのが普通だと思うので
リトライすることにします。お手数お掛けしました。

485 :デフォルトの名無しさん:04/07/27 17:53
後味の悪い解決の仕方だけど、まあいいか

486 :461:04/07/27 17:56
RTLパッチというのを当ててなかったのでちょっと試してみます。

487 :461:04/07/27 18:22
RTLは関係ありませんでした。
OnCloseでもReadText()やってみました。
いいかも。

488 :461:04/07/27 18:27
おぉ!問題ない。
DelphiのこのコンポーネントはデータとFINパケットをくっつけて
取ってくるのかなー。まあ、これが仕様ならそれで問題なし。

489 :461:04/07/27 18:35
OnDisconnectイベントでReadTextしたら
やっぱり残りのデータが取得できました。
すっきり爽快です。
みなさまもお気をつけ下さい。

490 :デフォルトの名無しさん:04/07/27 18:39
こんなログを保存してないスレでどうしろと

491 :デフォルトの名無しさん:04/07/27 18:50
当面VBにしときます

492 :デフォルトの名無しさん:04/07/27 19:17
ブービー賞だな

493 :デフォルトの名無しさん:04/07/27 19:19
(;^ิД^ิ)

494 :デフォルトの名無しさん:04/07/27 19:26
>>492
             / ̄ ̄ ̄ ̄ ̄\
         /           \
         /              ヽ 
   / ̄\ l      \,, ,,/      | 
  ,┤    ト |    (●)     (●)   |  0点!
 |  \_/  ヽ     \___/     |  
 |   __( ̄ |    \/     ノ 
 ヽ___) ノ

495 :デフォルトの名無しさん:04/07/27 19:44
TListViewのvsReport形式にて、特定の行だけ、左詰に文字を配置したいのですが
可能でしょうか?。また、どのようにやればよいのでしょう?
教えてください

496 :デフォルトの名無しさん:04/07/27 19:56
>>495
Columns[0]は左寄せしか出来ないが、他のカラムは右寄せできるよ
ListView1.Columns[0].Alignment := taLeftJustify; // 左寄せ
ListView1.Columns[1].Alignment := taCenter;    // 真ん中
ListView1.Columns[2].Alignment := taRightJustify;// 右寄せ


497 :デフォルトの名無しさん:04/07/27 19:57
列じゃなくて行?

498 :デフォルトの名無しさん:04/07/27 20:00
無限の配列って作れないの?

procedure TForm1.Button1Click(Sender: TObject);
var I:array of integer;
begin
I[1]:=1;
I[2]:=3;

end;
これ実行したら途中でエラーになります。
配列の要素数が決定できない場合はどうすればいいの?
SetLengthつかっても、それじゃプログラマしか設定できないから不便だし

499 :デフォルトの名無しさん:04/07/27 20:00
ごめんなさい列ですね…すみません

500 :デフォルトの名無しさん:04/07/27 20:03
>>498
integerだけを含むTObject型派生クラスをつかって
TListってのは冗長かな…

501 :デフォルトの名無しさん:04/07/27 20:04
列なら496のだね

502 :496:04/07/27 20:04
ごめん。良く質問読んでなかった
行単位での話しだったら、
CustomDraw
CustomDrawItem
CustomDrawSubItem
でガリガリ書かないと駄目かな

503 :デフォルトの名無しさん:04/07/27 20:09
>>498
追加するルーチンを実行するたびに、配列数を数えて、
配列数+1をsetlengthすればいいんちゃうの?

504 :デフォルトの名無しさん:04/07/27 20:33
http://218.230.101.165/

505 :デフォルトの名無しさん:04/07/27 20:42
Object Pascalって
C言語と同じように関数作れる?


506 :デフォルトの名無しさん:04/07/27 20:44
似たような感じで作れる

507 :デフォルトの名無しさん:04/07/27 20:44
Image.canvasからある座標の点の色(RGB)を取得するにはどうしたらいいんですか?

508 :デフォルトの名無しさん:04/07/27 20:46
>>507
Pixels

509 :デフォルトの名無しさん:04/07/27 21:01
プログラムを開始して
OpenDialog1実行して
ファイルが選択されなかったら終了するプログラム作りたいんだけど

procedure TForm1.FormCreate(Sender: TObject);
begin
if OpenDialog1.Execute then
else Form1.Close;
end;


これ実行しても、プログラム開始してOpenDialog1をキャンセルしても
フォーム1がCloseしません。どうしたらいいでしょうか?

510 :デフォルトの名無しさん:04/07/27 21:05
終了できたにょ

511 :デフォルトの名無しさん:04/07/27 21:05
>>509
Application.Terminateならうまくいったぞ

512 :デフォルトの名無しさん:04/07/27 21:07
>>509
FormCreate
で書いているから駄目
FormShowで書いてみ

513 :デフォルトの名無しさん:04/07/27 21:07
150*150くらいの小さい画像情報の色情報を配列に格納したいんだけど
x,y座標の二次元の配列作って

for x := 0 to BMP.Width do
begin
for y := 0 to BMP.Height do
begin

//現画像から値の抽出
pxlRGB[x,y] := ColorToRGB( Form2.Image1.Canvas.Pixels[x,y] );
  end;
 end;

こんな感じにしたらオー-バーフローしてしまいました
pxlRGB[x,y]はどのような方宣言する必要があるんでしょうか?教えてください。

514 :デフォルトの名無しさん:04/07/27 21:10
>>513
とりあえず、
for x := 0 to BMP.Width - 1 do
               ~~~
じゃね?
Height も同じく

515 :デフォルトの名無しさん:04/07/27 21:12
PxlRGB array [0..150,0..150] of TColor

516 :デフォルトの名無しさん:04/07/27 21:13
お前等ブレークポイントとか
ステップ実行とかやってるか?

517 :デフォルトの名無しさん:04/07/27 21:19
やっても変数の値みれねーもん

518 :デフォルトの名無しさん:04/07/27 21:21
>>517
何で?俺見れるよ

519 :デフォルトの名無しさん:04/07/27 21:24
Withって配列に関しては書き換えたりできないの?

var
Ary:Ary[0..2] of Char;

begin
with Ary do
[0]:='s';

とかやってもエラーになっちゃう

520 :デフォルトの名無しさん:04/07/27 21:27
>>519
もしそれがとおるとしても何の意味が

521 :デフォルトの名無しさん:04/07/27 21:36
>>519
Ary.[0]とは書かないだろ
だから無理ぽ

522 :デフォルトの名無しさん:04/07/27 21:39
中心が[a,b] 半径がr の円が描く軌跡の座標をすべて列挙させるにはどうしたらいいですか?

523 :デフォルトの名無しさん:04/07/27 21:40
OpenDialogコンポーネントとSaveDialogコンポネントの違いって何?
ボタンの文字が「開く」か「保存」かの違いだけじゃないの?
どっちもファイルを選択してFileNameに入力するだけでしょ。

524 :デフォルトの名無しさん:04/07/27 21:42
SaveDialog
・上書きの確認
・存在しないファイル名を入力可能 など

525 :デフォルトの名無しさん:04/07/27 21:51
test

526 :デフォルトの名無しさん:04/07/27 22:13
文字コードを取り出したりするのはどうやるの?
数値から文字への変換なら
ShowMessage(#49)とかやれば
1って表示されるけど
たとえば漢字の「愛」の文字コードとか取り出すにはどうしたら?

527 :デフォルトの名無しさん:04/07/27 22:57
>>526
ShowMessage('1バイト目:'+IntToHex(Cardinal('愛'[1]), 2)+sLineBreak+
'2バイト目:'+IntToHex(Cardinal('愛'[2]), 2));

528 :A:04/07/27 23:01
>>498
配列の要素数が決まっていない時、に、SetLengthを使うものだと思うけど?
プログラマしか設定できないってのが、よくわからないけど、
SetLengthの引数には、固定値だけじゃなくて、変数が使えるよ。

ユーザーが要素を増減したいと望んだ時に、内部で、SetLength(要素数+増減数); って
やってやればいいかと。

529 :デフォルトの名無しさん:04/07/28 01:05
セミコロンとコロンの違いがよくわからん。小さく見分けづらい

530 :デフォルトの名無しさん:04/07/28 01:15
>>529
設定でフォント変えてみたら?

531 :デフォルトの名無しさん:04/07/28 02:08
Memo1.Lines[0]:='あいうえお'+#10#13+'かきくけこ';
ってやるのと
Lines[0]:='あいうえお';
Lines[1]:='かきくけこ';
ってやるのは全く同じ?

532 :デフォルトの名無しさん:04/07/28 02:08
Delphi5を使って、win用アプリを作ってます。
特定のプログラムのメモリ使用量を監視して、
ある一定の値以上になったらそのプログラムを閉じる、
というアプリを作っている途中なのですが、
メモリ使用量を取得できずに困っています。
取得できないと言うか、取得する方法がわからないのです。
どうすれば各プロセスのメモリ使用量を取得できるのでしょうか。
インターネットやヘルプで関数名をずいぶん探したのですが、
それでもそれらしきものは見つからず、わかりませんでした。
どなたか方法を教えていただけませんでしょうか。


533 :A:04/07/28 02:10
>>522
泥臭い方法でよければ。

円が納まるサイズのTBitmapを作成。
Canvasに円を描く。
TBitmap全体をスキャンして指定した色のドットの座標を拾っていく。
中心に合わせて座標を調整。

巨大な円だとメモリも処理も無駄が多すぎるから、まじめに数学で計算する。

534 :A:04/07/28 02:15
>>531
違う。

Memo1.Lines[0]:='あいうえお'+#13#10+'かきくけこ';
なら、同じw
(厳密には、内部の処理は違うかもしれないけど)

535 :デフォルトの名無しさん:04/07/28 02:53
>>531
違う。
前者は行数が増える(2行目以降がずれる)が
後者は2行目を上書きする。

536 :デフォルトの名無しさん:04/07/28 04:43
>533
方程式でといた場合、数字の丸め方がわからんと同じx座標に対して
微妙な数値のyが出てきた場合の処理に若干困るんですよね。
同じxに対してyが複数(4個とか)塗りつぶされている場合ってどういう風に適応しているんですかね


Canvas.Ellipseのばあい方程式上では
xの値がaでyの解が2.5とかだった場合(a,2)と(a,3)って両方塗りつぶしされているっぽいような気がするのですが。
方程式解く方法でやった場合底ラ変の処理が若干不安なんですよね。

537 :A:04/07/28 05:53
>>536
たぶん、見た目で丸く繋がった円を描くために、Canvas.Ellipseは結構面倒な
処理をしてると思われ。
むかーし、そういう処理のやり方を雑誌の記事でみたのだけど、なにぶん、もう
10年以上前だと思うので、ちょっと探せない。

あー。xの精度を16倍とかで計算して、あとから丸めてみるってのは?(思いつき)
<1つのxに対して複数のyが存在する問題。

538 :デフォルトの名無しさん:04/07/28 07:05
四次元の 0-255 integer 配列を使いたいのですが宣言方法がわかりません教えてください。

539 :デフォルトの名無しさん:04/07/28 07:08
256^4*SizeOf(Integer)=16GBの配列なんて作れるか

540 :デフォルトの名無しさん:04/07/28 07:14
3次元で20*20*60程度だと宣言方法はどうなる出よう?

541 :デフォルトの名無しさん:04/07/28 07:22
var arr: array[0..19,0..19,0..59] of Integer;
arr[1,2,3] := 4;

542 :デフォルトの名無しさん:04/07/28 07:55
四次元配列を使おうとしている時点で設計を間違ってると思う

543 :デフォルトの名無しさん:04/07/28 10:02
SHFileOperationの例外はexceptで捉まえられないのですか?

var
 SHF : TSHFileOpStruct;
begin
 try
  SHF.wFunc := FO_RENAME; // とりあえずリネーム
  SHF.pTo := PChar('Hoge' + #0); // わざと例外発生
  (その他要素は適切に設定したとして省略します)

  SHFileOperation(SHF);
 except
  ShowMessage('Hoge');
 end;
end;

このコードだとShowMessage('Hoge');が実行されません。
例外を捉まえるにはどうすれば良いのでしょうか?

544 :デフォルトの名無しさん:04/07/28 10:06
それWin32APIだろ。
Win32Checkしとけ。

545 :デフォルトの名無しさん:04/07/28 11:12
ファイルの入出力で質問です。
vbの

open "hoge.log" for append as #1
print #1, log_buff
close #1

をdelphiで書きたいのですが
検索してもなかなか見つかりません。
よろしくお願いします。

546 :デフォルトの名無しさん:04/07/28 11:31
>>545
var
F:TextFile;
begin
AssignFile(F,'hoge.log');
Append(F);
Writeln(F,log_buff);
CloseFile(F);
end;


547 :デフォルトの名無しさん:04/07/28 11:58
>>546
ありがとうございます。
ぜんぜん予想だにしていなかったコードです。


548 :デフォルトの名無しさん:04/07/28 13:34
Delphiでoo4o使えますか?

549 :デフォルトの名無しさん:04/07/28 13:47
>>548
http://www.wwlnk.com/boheme/delphi/tips/tec1000.htm

550 :デフォルトの名無しさん:04/07/28 14:11
引数無しのプロシージャをName(String型)と対応させて呼び出したいのですが
現在は下記のようなクラスを作成して管理しています。
TStringListを使えばもっと効率よく管理できると思うのですが、
うまくいきません・・・
他に何かよい方法はありましたらよろしくお願いします

const
MAX_PROC_COUNT = 10;
type
TProc = procedure of object;
 TManager = class
 private
  FCount: Integer;
  FNames: array of String;
FProcs: array of TProc;
public
constructor Create;
destructor Destroy; override;
procedure AddProc(Name: String; Proc:TProc);
end;


551 :550:04/07/28 14:11
constructor TManager.Create;
begin
 FCount := 0;
 SetLength(FNames, MAX_PROC_COUNT);
 SetLength(FProcs, MAX_PROC_COUNT);
end;
destructor TManager.Destroy;
begin
 Initialize(FNames);
 Initialize(FProcs);
inherited;
end;
procedure TManager.AddProc(Name: String; Proc: TProc);
begin
 Inc(FCount);
 FNames[FCount-1] := Name;
 FProcs[FCount-1] := Proc;
end;


552 :デフォルトの名無しさん:04/07/28 15:33
フォームを開いて、閉じたあと、また開くと
前の状態が残っています。
閉じたらちゃんとアンロードしたいのですが
どのようにすればよいでしょうか?

553 :デフォルトの名無しさん:04/07/28 15:35
Release/Create

554 :デフォルトの名無しさん:04/07/28 15:46
frmSub.Create(frmMain);
frmSub.ShowModal;
frmSub.Release;

だと例外エラーになってしまいます。
どのように使えばよいのでしょうか?

555 :デフォルトの名無しさん:04/07/28 15:48
frmSub := TfrmSub.Create(nil);

556 :デフォルトの名無しさん:04/07/28 15:49
>frmSub.Create(frmMain);

frmSub := TfrmSub.Create(frmMain);

557 :デフォルトの名無しさん:04/07/28 15:51
グッジョブ!
サンクス

558 :デフォルトの名無しさん:04/07/28 15:55
>TStringListを使えばもっと効率よく管理できると思うのですが、

メソッドポインタは、普通の関数や手続きとは違って8バイトなんです。
なので簡単には TStringList.AddObject() は使えない。
メソッドポインタのポインタだといいとは思うんですが今のところうまくいってない。

TProcData = record
Proc:TProc;
Name:string;
end;

みたいなレコード型にして、New で TList に Add() 。使用後 Dispose。

でも本当はそれ専用のリストクラスを作る方がよい。名前で検索するメソッド
なんかも入れて。

559 :デフォルトの名無しさん:04/07/28 16:00
Jpegユニットと同じような使い方のできるspiコンポって無い?

560 :デフォルトの名無しさん:04/07/28 16:03
spiコンポっって、スージープラグインだっけ。
これは、画像フォーマットが一意ではないので、Jpegユニットみたい自動登録
できないのでは。

561 :554:04/07/28 17:09
モードレスダイアログの場合はどこでReleaseすればよいのでしょう?

562 :デフォルトの名無しさん:04/07/28 17:12
OnClose イベントで Action := caFree;

563 :デフォルトの名無しさん:04/07/28 17:18
>>532

GlobalMemoryStatusで取りましょう。

564 :デフォルトの名無しさん:04/07/28 17:24
>>563

>特定のプログラムのメモリ使用量を監視して、

だから GlobalMemoryStatus ではプロセスごとの使用量は分からないのでは?

565 :デフォルトの名無しさん:04/07/28 17:25
スレ違い棚

566 :デフォルトの名無しさん:04/07/28 17:26
TJPEGImageで、JPEGImage.Assign(Bitmap)/SaveToFileして、
Jpegファイルを作っていますが、
何か下に空白が大きいHeightとかが少し大きめの画像が出来てしまいます。
それか、Assignで縦が圧縮されているのかな。
何か気を付ける点があったら教えて下さい。

567 :554:04/07/28 17:27
>>562
ありがとうございました。
試してみたところshowだと、同じフォームがどんどん開けてしまいます。
すでに開いている場合は、もう開かないようにするには
どうすればよいでしょうか?

568 :デフォルトの名無しさん:04/07/28 17:29
NT 系では PSAPI の GetProcessMemoryInfo

Win9X、WinNT系両方だと ToolHelpAPI のヒープウォークでゴニョゴニュ

569 :デフォルトの名無しさん:04/07/28 17:34
>>567
>試してみたところshowだと、同じフォームがどんどん開けてしまいます。

クラスとインスタンスの関係はそんなものです。

>すでに開いている場合は、もう開かないようにするにはどうすればよいでしょうか?

Screen.FormCount と Screen.Forms[] をつかって、is で TForm2 がすでにあるかどうか
確認できる

570 :デフォルトの名無しさん:04/07/28 17:34
VB.NETとDelphiでどっちが安全なコードが書けますか?

571 :デフォルトの名無しさん:04/07/28 17:38
>>566
>何か下に空白が大きいHeightとかが少し大きめの画像が出来てしまいます。

日本語が変。こんな経験はないな。Bitmap の PixelFormat は pf24bit になってる?

572 :デフォルトの名無しさん:04/07/28 17:39
>>570
Delphiです。

573 :デフォルトの名無しさん:04/07/28 17:39
> VB.NETとDelphiでどっちが安全なコードが書けますか?

何をもって「安全」というかによる

574 :デフォルトの名無しさん:04/07/28 17:41
>>564

ああ、そういうことね。失礼

575 :デフォルトの名無しさん:04/07/28 17:41
>>573
釣られてマジレスしてる割に意味不明だな
Delphiの方が安全なものってなんだ?

576 :554:04/07/28 17:41
>>569
スペシャルさんくす。
できました。

577 :デフォルトの名無しさん:04/07/28 17:42
>>570
.NETは簡単に逆コンパイルされちゃいますよ。

578 :デフォルトの名無しさん:04/07/28 17:42
.NET なくても安全に実行できる。

579 :デフォルトの名無しさん:04/07/28 17:43
待て、定期的に荒らしてくる'VB.NET使い'とかいうのに相手すんなよ。
何をどう間違ってもBASICなんて使わないんだから。

580 :デフォルトの名無しさん:04/07/28 17:45
>>532はメモリリークしまくりでデバッグ不可能な
Delphi製アプリを強制再起動するツールを作ってるんだな。

581 :デフォルトの名無しさん:04/07/28 17:47
荒らし?比較することが荒らしなんだ。ふーん。

Delphiが勝つ比較なら、荒らしにはならないんだろうけどね。w

582 :デフォルトの名無しさん:04/07/28 17:47
>>580
お前の決めつけは根拠がないし書き込みのタイミングも悪い。

583 :564:04/07/28 17:48
>>532

もう一回。

GetProcessMemoryInfoあたりで取れると思います。GetProcessMemoryInfoに渡す
ハンドルはProcessIDを取得してOpenProcessでハンドルを取れると思うよ。あっ
ProcessIDはEnumProcessesあたりで取れるかな?

584 :デフォルトの名無しさん:04/07/28 17:48
>>581
おとなしくVB使ってろ

585 :デフォルトの名無しさん:04/07/28 17:48
>>580

それはそうかもね! Delphi製かどうかは氏欄が。マルチポストだしな

586 :デフォルトの名無しさん:04/07/28 17:49
>>577
Dotfuscator知らんの?
って知るわけ無いか。

587 :デフォルトの名無しさん:04/07/28 17:50
>>583
>>568

588 :564改め563:04/07/28 17:50
>>583

564じゃなく563でした。失敬。

589 :デフォルトの名無しさん:04/07/28 17:52
>>586
そんものとっくに知ってるw
つーかそんなのに頼らなきゃならない時点で終わってるなw

590 :550:04/07/28 17:53
>>558
なるほど。。。

>でも本当はそれ専用のリストクラスを作る方がよい。名前で検索するメソッド
>なんかも入れて。

この方向でコーディングしていこうと思います

ご回答ありがとうございました

591 :566:04/07/28 17:54
すみません、別のバグでした。TImageを画面に貼り付けてAnchors設定していたためにサイズ勝手に変わってますた。

>>571
サンクス。Bitmap の PixelFormat を pf24bit に設定するようにしましたが、何か良いことあるんですか?

592 :デフォルトの名無しさん:04/07/28 17:57
>>577
は、大嘘であることが判明したわけだが
Delphiの方が安全なものってなんだ?

593 :デフォルトの名無しさん:04/07/28 17:58
>何か良いことあるんですか?

いや、もしかしたら、と思ったもので。Jpeg が24ビットなので。

594 :デフォルトの名無しさん:04/07/28 18:00
>>592

「安全」ってどういう意味だよ。Safe とか Unsafe とかはネイティブにはない。
ハックされにくい、という意味なら VB.NET の方だ。

595 :デフォルトの名無しさん:04/07/28 18:02
>>594
俺に聞くな
>>573に聞け

596 :デフォルトの名無しさん:04/07/28 18:03
.NET あってもなくても安全に実行できるのはDelphiのほう。

597 :デフォルトの名無しさん:04/07/28 18:06
あのー 594=573 なんだが。

>>573 は疑問文というか注釈な。>>570 に「安全」の意味を問うている。

598 :デフォルトの名無しさん:04/07/28 18:09
VB厨には「安全」の意味も分からず、Safe コードの直訳だから、相手にするな

599 :デフォルトの名無しさん:04/07/28 18:11
Delphiのほうが安全なケースは存在しないってことで
次の話題行きましょう↓

600 :デフォルトの名無しさん:04/07/28 18:12
>>599
.NET あってもなくても安全に実行できるのはDelphiのほう。

601 :デフォルトの名無しさん:04/07/28 18:15
Del厨って馬鹿なんですか?

602 :デフォルトの名無しさん:04/07/28 18:16
もうゴキブビ虫はムシ。

603 :デフォルトの名無しさん:04/07/28 18:17
絶対無視できないのがDel厨

604 :デフォルトの名無しさん:04/07/28 18:18
>>601
VB厨には適いませんが。

605 :デフォルトの名無しさん:04/07/28 19:32
夏休みだな(しみじみ

606 :デフォルトの名無しさん:04/07/28 20:15
.NETは簡単に解析されるよ

607 :570:04/07/28 20:20
荒らすつもりはなかったのですが・・・。
まあ、逆に答えがよく分かりました。VB.NETの方が安全で優れているのですね。

608 :デフォルトの名無しさん:04/07/28 20:20
>>606
>>586

609 :デフォルトの名無しさん:04/07/28 20:51
夏だねえ。

610 :デフォルトの名無しさん:04/07/28 21:08
でもねえ、DelphiよりVB.NETの方が安全で生産性が高いのは否定できないと思うわけですよ。
Delphi使いも視野を広げないとやばいと思うよ。
Delphi8も売れてないそうだし。

611 :デフォルトの名無しさん:04/07/28 21:15
>>610
VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/l50

612 :デフォルトの名無しさん:04/07/28 21:30
巨大OSメーカーといち開発ツールメーカーを比べたら答えは明らかでツマラン。

613 :デフォルトの名無しさん:04/07/28 22:10
Delphiでプログラムを作りたいのですが、参考になるソースとか置いてあるサイトってないでつか?

614 :613:04/07/28 22:12
ちなみにVB.NETの経験はあります

615 :デフォルトの名無しさん:04/07/28 22:22
>>613
リンクみれ
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D

616 :613:04/07/28 22:30
>>615
ありがとう。
614は偽者なんでスルーしてくだされ。

617 :デフォルトの名無しさん:04/07/28 23:49
スタックや平衡木の様なコンテナは標準で用意されていますか?

618 :デフォルトの名無しさん:04/07/29 00:03
>>617
ない。自分で実装する。

619 :617:04/07/29 00:08
>>618
ありがとうございます.
難しい物でもないのでがりがり書く事にします.

620 :デフォルトの名無しさん:04/07/29 00:29
メモリのデータを書き換えるのってどうやるの?
ゲームの改造がしたい。
hpとか65535にしたいです
メモリのデータの書き換えのやり方キボン。

フリーの改造ツールだと出来ることに限度があってやりたいこともできない

621 :デフォルトの名無しさん:04/07/29 00:43
ReadProcessMemory と WriteProcessMemory


622 :デフォルトの名無しさん:04/07/29 01:41
実行ファイルと同じフォルダの名前をSTRING型で返す関数は何ですか?

実行ファイルがC:\HOGE\PIYO\ABC.exeだとすると
C:\HOGE\PIYOを返す関数

623 :デフォルトの名無しさん:04/07/29 01:52
ExtractFileDir()

624 :デフォルトの名無しさん:04/07/29 03:01
DelphiとVB.NETだと最近はVB.NETの方が優秀なん?

625 :デフォルトの名無しさん:04/07/29 03:11
Delphi6 vs VB6 → Delphi余裕の勝利

Delphi7 vs VB.NET(2002, 2003) → 実績の差でDelphi辛勝、ポテンシャルではVB.NET大勝

Delphi8 vs VB2005 → Delphi完敗で先の希望もないまま

626 :デフォルトの名無しさん:04/07/29 03:26
ぶっちゃけ今はVB.NETの方がいいと思う。

627 :デフォルトの名無しさん:04/07/29 04:26
>>622
ExtractFileDir(Application.ExeName);

628 :デフォルトの名無しさん:04/07/29 05:10
a
b
c
という3行が書かれているtxtがあるとき

ボタンを押すとEditに入力されていた文字列が
このtxtのb(2行目)に上書きされるコードは

AssignFile();
            ←の間にどのようなコードを記述すれば良いのでしょうか?
CloseFile();

629 :デフォルトの名無しさん:04/07/29 05:21
sl := TStringList.Create;
sl.LoadFromFile('data.txt');
sl[1] := Edit1.Text;
sl.SaveToFile('data.txt');
sl.Free;

630 :デフォルトの名無しさん:04/07/29 06:08
>>628
seek

631 :デフォルトの名無しさん:04/07/29 08:26
IEのお気に入りのようにメニューを動的の追加したいのですが
どのようにやればよいでしょうか?

632 :デフォルトの名無しさん:04/07/29 08:35
MainMenu.Items.Add()

633 :デフォルトの名無しさん:04/07/29 13:37
リストビューの行をマウスのドラッグアンドドロップで順番を
変えることはできますか?

634 :デフォルトの名無しさん:04/07/29 14:01
Timerを、ボタンクリック時に開始する、なんてことできますか?
特にボタンに限定する必要は無いのですが、
何かアプリ上で操作したら、Timerが作動するようにしたいんです。

635 :デフォルトの名無しさん:04/07/29 14:08
>>634
普段はTimer1.EnabledをFalseにしておいて
ボタンを押したときにTrueにする。

636 :デフォルトの名無しさん:04/07/29 14:21
DelphiでDebug/Releaseビルドを切り替える方法を教えてください。
VB.NETだと設定できるのですが・・・

637 :デフォルトの名無しさん:04/07/29 14:23
>>636
デバッグとリリースとで何を切り替えたいのですか?


638 :デフォルトの名無しさん:04/07/29 14:24
VB厨はVBでできるんだから問題なしでは?
ここ読んで煽る気になったの?
http://pc5.2ch.net/test/read.cgi/tech/1009080085/l50

639 :デフォルトの名無しさん:04/07/29 14:26
VB.NETなら要らない

640 :デフォルトの名無しさん:04/07/29 14:29
>>635
あ!なるほど。ありがとうございました。

641 :636:04/07/29 14:34
できないんですか。Delphiって存外しょぼいんですね。
失望しました・・・

642 :デフォルトの名無しさん:04/07/29 14:38
VBではShift+TABでインデントを下げることができますが
Delphiでできないようです。代替の方法はありますか?

643 :デフォルトの名無しさん:04/07/29 14:39
^KI

644 :デフォルトの名無しさん:04/07/29 14:40
まあ、VBには応答しないことにしようよ。

645 :デフォルトの名無しさん:04/07/29 14:40
>>642
たぶんCtrl+Shift+I
ヘルプみて

646 :デフォルトの名無しさん:04/07/29 14:42
DelphiでGC(ry

647 :デフォルトの名無しさん:04/07/29 14:42
VBネタは専用スレで

VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/l50

648 :デフォルトの名無しさん:04/07/29 14:46
>>645
ありがとうございます。
逆方向はどうすればよいでしょうか?

649 :デフォルトの名無しさん:04/07/29 14:46
DelphiはVB.NETより高速だと聞いてましたが、Delphi8では最適化が効かずにVB.NETの方が高速です。
私の勘違いでしょうか?

650 :デフォルトの名無しさん:04/07/29 14:46
Ctrl+Shift+U

651 :デフォルトの名無しさん:04/07/29 14:47
>>650
おお!できました。ありがとうございます。

652 :デフォルトの名無しさん:04/07/29 14:50
>>651
エディタ・オプションを、Visual Studioエミュレーションにすれば
VSと同じキーマップになる

653 :デフォルトの名無しさん:04/07/29 14:56
体感速度という意味ではVB.NETで作ったアプリは使い物にならないので、ご安心下さい。

654 :デフォルトの名無しさん:04/07/29 15:07
負けは負けと素直に認めようよ

655 :デフォルトの名無しさん:04/07/29 15:08
VB.NETは負け組みコンパイラと認めます。

656 :デフォルトの名無しさん:04/07/29 15:11
VB厨は文字が読めんのか? 専用スレ行けよ
あっちで好きなだけやってよし

657 :デフォルトの名無しさん:04/07/29 15:14
>>652
それ俺が使うショートカットは、ことごとく変わってないんだよな…

658 :デフォルトの名無しさん:04/07/29 15:18
コードの編集に使うキーは何一つ変わってないんだよな

659 :デフォルトの名無しさん:04/07/29 15:25
お前らいい加減に気付け。
VB厨のフリしてるのはDelphiからC#に移った奴らだ。

660 :デフォルトの名無しさん:04/07/29 15:26
>>659
それなんか根拠あんの?

661 :デフォルトの名無しさん:04/07/29 15:32
>DelphiからC#に移った奴らがVB厨のフリ

分裂症か。

662 :デフォルトの名無しさん:04/07/29 15:32
>>660
ageで書き込んでるだからネタだろ。
オレもC#やってるけど、Delユーザでもあるんで、完全移行してるやつなんて
いないだろうな。

663 :デフォルトの名無しさん:04/07/29 15:35
お題を提供。
そのアプリ使っているすべての TComponent の派生クラスを列挙して、その Name
を Memo1 に表示せよ。

664 :デフォルトの名無しさん:04/07/29 15:40
訂正

>そのアプリ使っているすべての TComponent の派生クラスを列挙して

そのアプリで使っている TComponent の派生クラスのインスタンスをすべて列挙して

665 :デフォルトの名無しさん:04/07/29 15:47
質問じゃないならよそでやれや

666 :デフォルトの名無しさん:04/07/29 15:59
そのアプリ使っているすべての TComponent の派生クラスのインスタンスを列挙して、
その Nameを Memo1 に表示するにはどうしたらいいですか?

667 :デフォルトの名無しさん:04/07/29 16:19
できません

668 :デフォルトの名無しさん:04/07/29 16:39
VB.NETに負けたのが晒されて、このスレ殺伐としてきたな

669 :デフォルトの名無しさん:04/07/29 17:03
すべて某が悪い。
Delphi8がまともだったらこんなVB.NETに負けることはなかった。
今はVB.NETに完敗だ。

670 :デフォルトの名無しさん:04/07/29 17:16
自作クラスから、そのクラス自身のポインターを取得するにはどうすればいいのでしょうか?
TTreeNodeのParentプロパティを見れば親がわかるのと同じようにしたいのですが

671 :デフォルトの名無しさん:04/07/29 17:17
Self
で良いんじゃない?

672 :デフォルトの名無しさん:04/07/29 17:23
>>671
ありがとうございます
おかげで完成できそうです

673 :最搦VB厨:04/07/29 17:31
あのさあ、.わざわざ.NET覚えて使うなら、C#逝けば?
.NETの修得にかかる時間を考えれば、C#の文法覚えるのなんて一瞬じゃん。
.NETなんて不安定なもの、なんで純正環境以外で使おうと思うかな?

674 :デフォルトの名無しさん:04/07/29 17:34
>>673
> あのさあ、.わざわざ.NET覚えて使うなら、C#逝けば?

アドバイスされるまでもなく、ほとんどのDelユーザはC#やってますけど。

675 :デフォルトの名無しさん:04/07/29 17:35
>>674
それ根拠あるの?

676 :デフォルトの名無しさん:04/07/29 17:37
おれの周りのDelユーザでは全員。Del8購入者ゼロ。

677 :デフォルトの名無しさん:04/07/29 17:38
MLの回答者のほとんどがC#ユーザだね

678 :デフォルトの名無しさん:04/07/29 17:39
勝手に「ほとんどのDelユーザ」にすんなよw

679 :VB.NET使い(勝ち組):04/07/29 17:40
まあ、いずれにしてもDelphiが落ち目なのは誰も否定できないわけで。

680 :デフォルトの名無しさん:04/07/29 17:41
>>677
そういえば、Delphi と C# の比較をやってたね、以前。
あれは Delphi8 発売後にやり直そうぜ、という感じで終わっていたんだと思うけど、
発売後は誰もやらないのはどうして?

681 :デフォルトの名無しさん:04/07/29 17:42
つーかDelphiスレで言語討論すんなヴぉけ

682 :デフォルトの名無しさん:04/07/29 17:42
>>679
わざわざ言うまでもない
でも俺はDel使い続けるよヽ(´ー`)ノ

683 :デフォルトの名無しさん:04/07/29 17:43
Delphi作った人がC#作ったならC#に移行するのは当たり前のことだよね

684 :デフォルトの名無しさん:04/07/29 17:43
> 発売後は誰もやらないのはどうして?

Del8スレ見れば理由は嫌でも分かる。

685 :デフォルトの名無しさん:04/07/29 17:43
>>678
> 勝手に「ほとんどのDelユーザ」にすんなよw

いや、ほとんどのDelユーザはC#もやってるよ。やってないのはDel厨だけ。

686 :デフォルトの名無しさん:04/07/29 17:44
>>685
それ根(ry
以下ループ

687 :デフォルトの名無しさん:04/07/29 17:58
>>684
Del8スレ、軽く見てきた。なぜかユーザがいないらしい。だからできないのか

688 :デフォルトの名無しさん:04/07/29 18:16
Delユーザで、Delphi8を使わないとすると.NET対策としてC#を始めるだろうな、普通。
VC++.NETやVB.NETには行かない罠。

689 :デフォルトの名無しさん:04/07/29 18:17
.NET対策イラネ

690 :デフォルトの名無しさん:04/07/29 18:19
>NET対策イラネ

厨房には無用かもね

691 :デフォルトの名無しさん:04/07/29 18:22
超初心者スレでする話ではないな

692 :デフォルトの名無しさん:04/07/29 18:24
超初心者にこそ現実を知って欲しい

693 :デフォルトの名無しさん:04/07/29 18:24
いやいや、Del超初心者≒ブビ/ブビドトネト ヘビーユーザ

694 :デフォルトの名無しさん:04/07/29 18:31
>>693
あっ、そうなの? ほかのDel関係の掲示板でもVBユーザらしくEditBoxとかいったり
VBのコードのDELへの移植とか、VBのXXXの相当するDelの関数について質問したり、
このごろ目立つね。そうか、VB.NET はまだデスクトップアプリの作成には向いてないし、
VB6は発売中止だし、Delに流れ込んでいるのか。

695 :デフォルトの名無しさん:04/07/29 18:36
目立つって言うかおんなじ奴が連続で質問してるだけだろ

696 :デフォルトの名無しさん:04/07/29 18:36
なんだ、Del超初心者スレは暖かくブビを受け入れるべきなんか?

697 :デフォルトの名無しさん:04/07/29 18:38
そろそろスレ立てて移れば(´д`)

698 :デフォルトの名無しさん:04/07/29 18:40
RaveReportsについて詳しい方がいたら教えてください。
表形式のレポートを作成しています。中に入る文字列の長さによって、
セル内の行数を増やしたり、フォントの大きさを調整してくれるような
機能を実現させるためにはどうしたらよいでしょうか。

今DataMemoコンポーネントを使用していますが、一行の時にはフォントが
小さすぎるし、セルの真ん中より上に文字が出力されるので不格好なのです。

よろしくお願いします。




699 :デフォルトの名無しさん:04/07/29 18:45
客によって言語とか環境を指定されることもあるし
DelとC#は使い分けでしょ。普通。

.netつかわにゃいかん時のためにC#ももちろん
勉強するにこしたことはないわけで。

むかしASPとVBSとかも触ってたから、今更VBを
勉強する気にもならんし。



700 :デフォルトの名無しさん:04/07/29 20:15
超初心者だと思ってDelphi勧めるなんて悪質だ。
VB.NETの方がまだまともな選択肢だ。

701 :デフォルトの名無しさん:04/07/29 20:27
ええと・・。非常に簡単な質問をしたいのですが、
そんな雰囲気じゃないような。

702 :デフォルトの名無しさん:04/07/29 20:33
いちいち断るなようっとうしい。
暑いし。ガァー!

703 :デフォルトの名無しさん:04/07/29 20:38
   ,_  _, パーン
 ( ‘д‘) あーもうっ
  ⊂彡☆))Д´)

704 :デフォルトの名無しさん:04/07/29 20:53
[ ] でくくってあるパラメータってどういう意味なんですか?

705 :デフォルトの名無しさん:04/07/29 20:54
非常に簡単な質問をしたいのですが、
DelphiとVB.NET、どっちが優れてますか?

706 :デフォルトの名無しさん:04/07/29 21:04
>>704 集合型です(゚д゚)
例えばドラゴンボール型としてBall1〜7を宣言
持ってるボールを  [Ball1,Ball3,Ball5] となるとどれがあってどれが無いのかすぐ解る(゚д゚)

707 :デフォルトの名無しさん:04/07/29 21:04
非常に簡単な質問をしたいのですが、
DelphiとVB.NET、どっちが安全なコードが書けますか?

708 :デフォルトの名無しさん:04/07/29 21:05
>>706
orで繋ぐやつとは違うんですか?

709 :デフォルトの名無しさん:04/07/29 21:06
>>705
C#
>>707
Delphi

710 :デフォルトの名無しさん:04/07/29 21:08
キーボードのキーを押す、っていう条件のイベントハンドラって何て名前なんですか?
ボタンクリックとかはすぐ分かったんすけど
キーだとヘルプの項目多すぎてよくわからんす

711 :デフォルトの名無しさん:04/07/29 21:10
CopyRectとか使ったらTImageとTBitmapが互換性ない、と叱られた。
処理はbitmapの方が速いけど、フォルダとかディレクトリとか面倒なんで
LoadFromFile使って読み込みたくないから、一旦Formに全部Imageで貼り付けたのを
TBitmapとして使いたい。
どうすれば簡単でしょうか?

712 :デフォルトの名無しさん:04/07/29 21:11
or はタダの演算子ですよ。

if( a=1 or a=2) then hogehoge ;

というように aが1か2なら ほげほげするんです。


>>710
OnKeyDown
OnKeyUp
OnKeyPress

713 :デフォルトの名無しさん:04/07/29 21:13
無理矢理自作自演で質問して、スレの流れ変えようとするの止めようね。


で、VB.NETとDelphi、どっちが優れてるの?

714 :デフォルトの名無しさん:04/07/29 21:14
>>713
自作かどうか連投してみたら?

715 :デフォルトの名無しさん:04/07/29 21:14
>>713
うざい。消えろ。氏ね

716 :デフォルトの名無しさん:04/07/29 21:15
>>713
みえみえの煽りウザイ

717 :デフォルトの名無しさん:04/07/29 21:15
>>713
VB.NETの完勝だ。
満足したら巣に帰れ。

718 :デフォルトの名無しさん:04/07/29 21:16
>>713 氏ね Σ(´Д`lll)

719 :デフォルトの名無しさん:04/07/29 21:17
超初心者の皆さん、このスレの回答者がどうしてVB.NETと比較されると嫌がるのか、よく考えてみましょう。
勝てるならば余裕の構えなはずですが・・・。

720 :デフォルトの名無しさん:04/07/29 21:18
>>712
ありがとうございます
「var key」って出てるから、これでどのキーを押すのかを指定するんですよね?
・・・・すいません。記述のしかたがわかんないです・・。

721 :デフォルトの名無しさん:04/07/29 21:19
超初心者様に満足な回答もできねえのか。
これじゃあ、VB.NETより優れてる理由も答えられるわけがねえ。

722 :デフォルトの名無しさん:04/07/29 21:20
>>719 (・x・)コロヌ

723 :デフォルトの名無しさん:04/07/29 21:21
これが噂のSpoke厨か

724 :デフォルトの名無しさん:04/07/29 21:22
× どうしてVB.NETと比較されると
○ 他言語のスレである特定言語マンセーの投稿をすると


725 :デフォルトの名無しさん:04/07/29 21:22
よそでやれよ

726 :デフォルトの名無しさん:04/07/29 21:23
そういや、Delphi Personalの値段でVS.NETが2つ買えちゃうんだな。
超初心者様にお勧め。

727 :デフォルトの名無しさん:04/07/29 21:23
あんまりかまうなよ(w
喜んで夢中になるぞ(w

728 :デフォルトの名無しさん:04/07/29 21:24
>>720 helpの例を見れ


729 :デフォルトの名無しさん:04/07/29 21:27
>>726
DelphiにPersonal版なんてないよ。Pro版から。

730 :デフォルトの名無しさん:04/07/29 21:29
>>728
どれを調べたらいいか分からなくて書き込んだんですが
適当に調べてみたら見つかりました。努力不足だったようです。失礼しました。

731 :デフォルトの名無しさん:04/07/29 21:29
だまされてPersonal版から始めた人、一生バージョンアップできない。高いお金を払わないと。


カワイソウ

732 :デフォルトの名無しさん:04/07/29 21:30
釣ってるつもりのMS信者が、からかわれて遊ばれてたって落ち(w

733 :デフォルトの名無しさん:04/07/29 21:31
ええっ、タダでバージョンアップってできるの?

734 :デフォルトの名無しさん:04/07/29 21:31
と、いうことにしたいんですね

735 :デフォルトの名無しさん:04/07/29 21:31
よそでやれば

736 :デフォルトの名無しさん:04/07/29 21:32
>>731
大変だ。早く他の言語に移行しないと。

737 :デフォルトの名無しさん:04/07/29 21:39
>>734
>>732 はたぶんメール欄のことだろうね

738 :デフォルトの名無しさん:04/07/29 21:45
Delphi使っていると、IDEのツールバーの辺りでやたらとマウスカーソルが別の所に瞬間移動
するのですが、これは普通なのでしょうか?

739 :デフォルトの名無しさん:04/07/29 21:52
>>738
オプションでマジックカーソールのチェックをはずせ。

740 :738:04/07/29 21:57
>>739
なおりました アリガト!(´▽`)

741 :720:04/07/29 22:20
>>728
できたと思ったんですが、できませんでした。例の通りにしたつもりだったんですけど・・。
「↑」キーを押すと、変数Aに2をプラスする、という処理をしたいんですが、
演算はできないんですかね。先述の通りボタンでは動いたんですが。

742 :720:04/07/29 22:26
たびたびすいません。先に定義していたボタンのイベントハンドラを消去したところ、
正常に処理されました。死。

743 :デフォルトの名無しさん:04/07/29 23:18
split、もしくは同等の機能を持つ関数はないのですか?

744 :デフォルトの名無しさん:04/07/29 23:37
標準ではない。TStringList.DelimiteredTextでしのげるならそれ使っとけ。
それでも駄目なら正規表現ライブラリ入れとけ。

745 :ななしへたぐらま ◆XcB18Bks.Y :04/07/30 00:11
>>536
傾きが大きいところはyからxを,小さいところはxからyを求めればよいと思います.
たとえば第一象限の場合,0〜45度まではyからxを求め,45〜90度ではxからyを求めます.

どうも昔のパソコンがこんなふうに描画していたようです.


746 :デフォルトの名無しさん:04/07/30 03:28
基礎からわかるDelphi6って言う本を買ってみました

初めてやる人にとってはちと難しいかなー。
わからないことがあったらこのスレにきます。でわでわ。。。

747 :デフォルトの名無しさん:04/07/30 04:08
>>698
遅レスだが・・・
イベントで文字数判断して、フォントの大きさを変えれば良い。

コード例は、このあたりかな?
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BRaveReports%2FRaveTips2%5D%5D
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BRaveReports%2FRaveTips3%5D%5D

748 :デフォルトの名無しさん:04/07/30 08:19
vbのapp.previnstanceのようにコピーしたexeでは
2重起動できて、同じexeでは2重起動できないように
するにはどうすればよいでしょうか?
mutexだとまったく2重起動できなくなってしまいます。
よろしくお願いします。

749 :698:04/07/30 09:08
>>747

待ってました!TXT!

750 :デフォルトの名無しさん:04/07/30 10:50
Application.Minimize;していると
FindWindowでウィンドウハンドルを取得したときに
そうでないときと取得できるウィンドウハンドル異なってしまいます。
なぜでしょうか?

751 :デフォルトの名無しさん:04/07/30 10:50
>>748
mutexで引っかかったら、プロセス列挙して、メインモジュールのフルパスを
取得して、自分と同じかどうか調べる。
メンドクサー。

>コピーしたexeでは2重起動できて、

これ糞仕様だと思う。

と、ここまで書いて、いいこと思いついた。CreateMutex の第三パラメータには
自分のフルパスを設定するとよい。MAX_PATH バイトまで設定できるから。



752 :デフォルトの名無しさん:04/07/30 10:58
>>750
あり得ない。メモ帳を一つだけ起動しておいて、タイマーつかって

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Memo1.Lines.Add(IntToHex(FindWindow('Notepad',nil),4));
end;

でやってみたら、最小化してもしなくても同じ値が得られた。

もしかして、対象ウィンドウを複数起動してない?

753 :デフォルトの名無しさん:04/07/30 11:01
IDEから起動するとTApplicationクラスが最低二つある。自分のアプリとIDEのと。
まさか、これ?

754 :デフォルトの名無しさん:04/07/30 11:16
>>753
それでした。

755 :デフォルトの名無しさん:04/07/30 11:33
アプリケーションで共通に使う定数はどこに
記述すればよいでしょうか?

756 :デフォルトの名無しさん:04/07/30 11:38
>>755
新規作成から「ユニット」を選んで、その interface 部に書いて、
たとえば MyConst.pas とかで保存する。
それをつかいたいユニットからは use MyConst; するとどのユニット
からでも見られる。

757 :デフォルトの名無しさん:04/07/30 11:43
>>756
ありがとうございます。さっそくやってみます。

758 :デフォルトの名無しさん:04/07/30 11:45
>>756
できました。ここは初心者に優しいスレですね。

759 :デフォルトの名無しさん:04/07/30 12:33
今日はVB.NET使いはいないの?

760 :デフォルトの名無しさん:04/07/30 13:11
Delphiを始める上でお勧めの本ありますか?
一冊買ったのですが、コンポーネントの機能の説明ばかりでした。
標準関数の仕様とか、ライブラリとかの情報が欲しいのですが・・・

761 :デフォルトの名無しさん:04/07/30 13:18
>>760
『くだすれDelphi(超初心者用)』が一冊あれば事足りる。

762 :デフォルトの名無しさん:04/07/30 13:20
>>760
一名様ご案内〜い
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%B4%D8%CF%A2%BD%F1%C0%D2%5D%5D

763 :デフォルトの名無しさん:04/07/30 13:23
>>762
完全にテンプレ見るの忘れてました。
どうも失礼しました。

764 :デフォルトの名無しさん:04/07/30 15:24
謝らんでいいよ. 見落としは誰にでも。 >>762

DelWiki, また復活してきたかな?夏休みだからか?



765 :デフォルトの名無しさん:04/07/30 15:56
>>764
> DelWiki, また復活してきたかな
ネタ提供よろ〜

766 :デフォルトの名無しさん:04/07/30 16:13
serversocketコンポーネントのonClientReadイベントが
発生したとき、どのクライアントからデータを読み込むか
わかるのでしょうか?
socket.sockethandleでいいでしょうか?

767 :デフォルトの名無しさん:04/07/30 16:34
>>766
いまいち意味不明だが、
RemoteHostでもRemoteAddressでも参照してちょ。

768 :デフォルトの名無しさん:04/07/30 16:38
>>767
複数同時接続されている場合、どのソケットから読み込んだか
わからないと、困るかなと。


769 :デフォルトの名無しさん:04/07/30 18:07
ボタンを一度クリックすると選択状態になってしまいますが、
これを自動で解除するにはどうしたらいいでしょうか?

770 :デフォルトの名無しさん:04/07/30 18:25
>>769
TForm1.FocusControl(フォーカスを移したいコントロール);

もしくは、ボタンに文字を表示しなくてもいいのならSpeedButtonに変える

771 :デフォルトの名無しさん:04/07/30 18:30
DecodeDateで獲得した西暦を
Editに表示するときに2004から04に変えたいのですが
どうすれば良いでしょうか?

772 :デフォルトの名無しさん:04/07/30 18:36
FormatDateTime('yy年mm月dd日hh時nn分ss秒',Now);

773 :デフォルトの名無しさん:04/07/30 18:37
リストビューのレポート表示の1行の高さを取得するには
どうすればよいですか?

774 :771:04/07/30 18:51
>>772
あ、すいません
説明不足でした

DecodeDateで獲得した西暦、月、日の各データを
Edit1.Text := 西暦
Edit2.Text := 月
Edit3.Text := 日
としたいのですが
この場合西暦が2004となってしまいます
この2004を04という形でEditに表示することはできないのでしょうか?

お手数ですがお教え願えないでしょうか?

775 :デフォルトの名無しさん:04/07/30 19:05
>>774
FormatDateTime('yy年mm月dd日hh時nn分ss秒',Now);
yyなら下二桁表示
yyyyなら4桁表示

776 :デフォルトの名無しさん:04/07/30 19:17
えーとじゃあ、西暦とか関係なく

4桁の数値を2桁の文字列で表示するにはどうしたらいいですか?

777 :デフォルトの名無しさん:04/07/30 19:17
Edit1.Text := Copy(IntToStr(year), 3, 2);
4桁決め打ちで。

778 :デフォルトの名無しさん:04/07/30 19:21
>>776
だから
DecodeDate(TDateTime, Year, Month, Day);
で、4桁を2桁に縮めてもいいんだけど、それだと桁数によっては
エラーになる可能性があるので、
Edit1.Text := FormatDateTime('yy',TDateTIme);にしなさいっていってるの。


779 :771:04/07/30 19:22
>>772
>>775
>>777

ありがとうございました

780 :デフォルトの名無しさん:04/07/30 23:18
TrackBarコンポーネントにはMouseDownやMouseUpなどのイベントがないのですが
マウスイベントに対応させる方法はありませんか?

781 :デフォルトの名無しさん:04/07/30 23:23
>>780
TTrackBar 派生コンポーネントを作成して、
TControl からそれ系イベントを継承すれば良いと思った。

782 :デフォルトの名無しさん:04/07/30 23:33
>>781
ありがとうございます
Del6Pesnalでコンポーネントのソースなしでも可能なのでしょうか?

783 :デフォルトの名無しさん:04/07/30 23:41
>>782
可能です。わたくしも Personal 寄生虫ユーザーですが、
ガシガシとカスタムコンポーネントを作成しています。

784 :デフォルトの名無しさん:04/07/30 23:45
>>770
書いてみたんですが、「ソースファイルへのパスが見つかりません」って出てしまいました。
何をどう宣言すればよいのでしょう・・。


785 :A:04/07/30 23:51
>>784
何をどう書いて、そのエラーが出たのか、を書くのが先ではないかと思われ。

786 :デフォルトの名無しさん:04/07/30 23:51
>>783
publishedで公開したら使えるようになりました
ありがとうございます

787 :デフォルトの名無しさん:04/07/31 00:03
>>784
どんな風に書いたのか教えれ

788 :デフォルトの名無しさん:04/07/31 00:38
今日はVB.NET使いがいなくて盛り上がらないな

789 :デフォルトの名無しさん:04/07/31 00:43
>>785
ああ、すいません。今組んでるのは簡単なゲームのアプリなんですが、
矢印キーを押すことで表示キャラクタの座標に変数を加減するよう組んでます。
で、一定条件下でプログラムが一時停止・・要するに「ゲームオーバー」になるんですが、
このとき「リトライ」ボタンを押すことで、リセットするようにしたいんです。
で、そのボタンを置いたはいいものの、それを押すとボタンが選択状態になってしまい、
キー操作を受け付けなくなってしまいます。
以上が症状で、
私が書いたのは、>>770さんの書いてくれた助言にまんまForm1とぶっこんだものです・・。
Form1.FocusControl(Form1);とか書いてます・・。
ボタンクリックのプロシージャ内に。

790 :デフォルトの名無しさん:04/07/31 01:34
KeyPreviewをいじってみて。

791 :デフォルトの名無しさん:04/07/31 01:53
>>790
TRUEにしてみましたが、だめでした・・。

792 :デフォルトの名無しさん:04/07/31 01:54
あ、矢印だとダメって書いてありますね。まずは別のキーで試してみます。

793 :A:04/07/31 02:29
>>789
Form1.FocusControl(Form1);
この行に対して、ソースファイルへのパスが見つかりません、ってエラーが出るの?
その状況が想像つかないのだけど……。

ヘルプによると、そのエラーが出るときには、どのファイルが見つからないのか、
表示されるはずなのだけど、何か出てない?

あと、どうやら、プロパティ等に不正な値をセットしたときに、その影響でVCL内部での
エラーが発生すると、そういうことが起こるらしい。
ぐぐったら、こんなのが出てきた。
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200303_03030034.html

794 :デフォルトの名無しさん:04/07/31 02:39
>>792
ゴメンゴメン。
WantChildKeyを使ってみて。



795 :デフォルトの名無しさん:04/07/31 04:51
delphi勉強中の者です

DirectXを使ってポリゴンを扱えるアプリを制作しようとしているのですが、
DelphiからDirectXの関数を呼び出したい際、

DirectX = Win32API として考えて良いのでしょうか?


796 :デフォルトの名無しさん:04/07/31 04:56
DirectXは技術的には単なるWin32APIと同等な構造体+関数呼び出しではあるが。

797 :デフォルトの名無しさん:04/07/31 09:49
Del房ってVB房を自作自演してまでDelphiの名を広めようとするんだな

798 :デフォルトの名無しさん:04/07/31 09:53
Delphi6Personalみたく、ただで使えるC++Builderないですか?

799 :デフォルトの名無しさん:04/07/31 09:53
ない

800 :デフォルトの名無しさん:04/07/31 11:11
delphiを昨日今日始めたような初心者で申し訳ないんですが
perlで言うところの
split(/\t/,$Date[$i]);
みたいな処理をしてくれる関数はないでしょうか?

801 :デフォルトの名無しさん:04/07/31 11:20
ないです

802 :デフォルトの名無しさん:04/07/31 11:28
var sl: TStringList; i: Integer;

sl := TStringList.Create;
sl.Delimiter := #9; sl.DelmitedText := 文字列;
for i := 0 to sl.Count-1 do Writeln(sl[i]);

803 :デフォルトの名無しさん:04/07/31 11:55
同じ処理じゃないです。しかも1行じゃないし。

804 :デフォルトの名無しさん:04/07/31 11:59
>>803
おいおい
せっかく教えてくれた人に文句言うのは失礼だぞ
それに1行で書かなければならない理由はなぜ?

805 :デフォルトの名無しさん:04/07/31 12:11
あまりに無礼すぎてワロタ

806 :789:04/07/31 12:16
>>793
「Form1」とダイアログボックスには表示されてます。なお、そのエラーは、
実行時(コンパイルはできます)に、ボタンを押したときに表示されるので、例の文が問題だと考えてます。
以前も似たような事がありまして、その時「見つかりません」と指摘されたファイルは「Graphics」でした。
その原因は「:=TBitmap.Create」の文が抜けてたからだったので、
今回も似たようなもんではないかと思ってるのですが。

807 :デフォルトの名無しさん:04/07/31 13:35
答えが変であれば教えて貰ってないのと一緒です!

808 :デフォルトの名無しさん:04/07/31 13:48
>>807
>>801

809 :デフォルトの名無しさん:04/07/31 13:59
>>789
> Form1.FocusControl(Form1);
              ^^^^^^
コントロールじゃないジャン

810 :789:04/07/31 14:26
>>809
ああ・・、やっぱそうですよね・・。そうなんじゃないか、くらいにしか思えなくて・・。
原因の一つとして考えはしたんですが、解決策がわからないどころか確信も持てなかったんです。
要するに、ほんと素人なんすよ。すんません。
コントロールって、フォームの中にあるコンポーネント、って認識でいいんですか?

ヘルプを参照しても使い方が分からない文も多々あるんです。どう勉強すればいいんでしょう・・。
せっかく教えてくれてるのに申し訳ないです。>>794さんの助言も使い方がわからなくて試せず・・。

811 :デフォルトの名無しさん:04/07/31 14:54
誰かこのページの関数をdelphiに移植してくれませんか?
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabereg.htm

812 :811:04/07/31 14:55
間違えました。こっちです。
http://www.geocities.co.jp/SilkRoad/4511/vb/ieright.htm

813 :デフォルトの名無しさん:04/07/31 15:11
いやです

814 :811:04/07/31 15:29
TRegistry使ったら簡単にできました。
ありがとう。

815 :デフォルトの名無しさん:04/07/31 16:09
>>810
ゲーム作りに関しては
こちらの方が適切なアドバイスをくれると思うので貼っておきます

Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/

816 :デフォルトの名無しさん:04/07/31 16:14
>>810
一応解決策も書いておきます

Form1.FocusControl(nil);
これでどのコンポーネントも選択していない状態になります

817 :789:04/07/31 17:08
>>815>>816
おお!解決しました!括弧内の記述が正しければ使えたんですね。
てっきり何かしらの型宣言がいるものだとばかり。
親切にありがとうございました。

818 :デフォルトの名無しさん:04/08/01 02:10
Delphi6PersonalでActiveXDLLは作成できますか?

819 :デフォルトの名無しさん:04/08/01 04:20
多分できると思う。

820 :デフォルトの名無しさん:04/08/01 07:53
多分できないと思う。

821 :デフォルトの名無しさん:04/08/01 08:42
オブジェクトとコンポーネントわからねぇー。
なんて見難いHELPなんだ・・・
逆引き無いの?


822 :デフォルトの名無しさん:04/08/01 09:44
質問です

メモコンポーネントの入力欄が

aa
改行
bb
cc
dd
ff
改行
改行

となってるいるとして
これをファイルに

aa
bb
cc
dd
ff

と文中、文後の改行を削除し
入力されてる文字列を
行ごとにつめて出力したい場合
どうすれば良いでしょうか?

823 :デフォルトの名無しさん:04/08/01 10:08
for i := Lines.Count-1 downto 0 do if Lines[i] = '' then Lines.Delete(i);

824 :デフォルトの名無しさん:04/08/01 10:29
>>821
個人的には「VCLリファレンス」「ルーチン一覧(カテゴリ別)」が
一番探しやすいと思う。

825 :デフォルトの名無しさん:04/08/01 11:27
>>824
ルーチン(カテゴリ別)はわかるけど
VCLリファレンス?  それすら探せない・・・O几

826 :822:04/08/01 11:58
>>825
スタート→すべてのプログラム→Borland Delphi →ヘルプ→VCLリファレンスヘルプ
だと思われ
起動中のヘルプからでもいけるよ

>>823
ありがとうございます

続けて質問心苦しいのですが
>>823の文を実行すると
ほかの改行を消すことはできたのですが

aa
bb
cc
dd
改行

と1つだけ改行が残ってしまいます
いろいろやってみたんですが
どうもLines.Countにこの最後の改行が認識されてないようです
これを解消して
最後の改行を消す方法はあるのでしょうか?

827 :デフォルトの名無しさん:04/08/01 12:06
aa改行
bb改行
cc改行
dd改行

つーかじゃないの

828 :デフォルトの名無しさん:04/08/01 12:07
なんだ、つーかじゃないのって >俺
orz

829 :デフォルトの名無しさん:04/08/01 18:56
コンパイル時には意図した通りに回ってるのに、実行ファイルを動かすと、別の動き(意図してない動き)をする、
なんて状況になってるんですが・・。
具体的に書きますと、ボタンクリックのプロシージャ内で、ラジオグループのアイテムインデックス値によって
タイマー1〜3のインターバル値を変更するようにケース文を組んでいます。
コンパイル時にはちゃんと変更されてるんですけど、
後に実行ファイルを回してみると、一部のインターバルが変更されないんです。
わけわからん・・。

830 :デフォルトの名無しさん:04/08/01 19:01
訂正します。
Delphiの起動時のみ、意図通りに動くようです。

831 :デフォルトの名無しさん:04/08/01 19:02
すいません。更に訂正なんですが、
別のPCで回してみたところ、通常通りに処理されました・・・。

832 :デフォルトの名無しさん:04/08/01 19:49
そのTButton.OnClick内のコードさらしてみそ

833 :デフォルトの名無しさん:04/08/01 20:31
まんまコピペです。
begin
//初期値再設定
  case Form1.RadioGroup1.ItemIndex of
   0:begin
Form1.Timer1.Interval := 50;
Form1.Timer2.Interval := 3000;
Form1.Timer3.Interval := 50;
DDKASAN := 0;
end;
   1:begin
Form1.Timer1.Interval := 30;
Form1.Timer2.Interval := 300;
Form1.Timer3.Interval := 30;
DDKASAN := 4;
end;
   2:begin
Form1.Timer1.Interval := 50;
Form1.Timer2.Interval := 3000;
Form1.Timer3.Interval := 50;
DDKASAN := 1;
end;
end;
Form1.Timer1.Enabled := True;
Form1.Timer2.Enabled := True;
Form1.Timer3.Enabled := True;
Form1.FocusControl(nil);
end;

834 :デフォルトの名無しさん:04/08/01 20:37
Form1.Timer1.Enabled := False; Form1.Timer1.Enabled := True;
Form1.Timer2.Enabled := False; Form1.Timer2.Enabled := True;
Form1.Timer3.Enabled := False; Form1.Timer3.Enabled := True;

835 :デフォルトの名無しさん:04/08/01 20:38
Enabledを一度FalseにしてからTrueに

836 :デフォルトの名無しさん:04/08/01 21:06
>>835
できました!ありがとうございます。
他のプロシージャで一度Falseになってるんですけど、こうすると解決するんすね。
理由がわかりませんが・・、ヘルプ検索しまくってみます。

837 :デフォルトの名無しさん:04/08/01 21:41
スロットを作りたいんですけど、どういう風に作ればいいですか?

838 :デフォルトの名無しさん:04/08/01 21:56
>>837
スレ違い

こらなければ、3つのTLabel.Captionに0〜9の数字を順番に表示させて、
その下にそれぞれボタンつけて、ボタンクリックでそれぞれの数字を止める。
3つの数字が揃っていたら当たり。

コイン賭けたいなら何枚かけるとか、今何枚あるとか、各数字によって配当
決めたりとか。

839 :デフォルトの名無しさん:04/08/01 21:57
>>837
メールスロット?それならAPIで一発だよ。

840 :デフォルトの名無しさん:04/08/01 22:39
StringGrid で、OnSelectCell でダイアログ表示させ、そこで入力して値をセット、としています。
なんですが、セルを選択した時点では、セルのフォーカス(?)というか、縁どりが、
現在選択中のセルでなく、一つ前のセルに縁どりされていて、ダイアログを閉じると
縁どりが値を設定したセルに移動します。

ダイアログ表示時に、選択したセルに縁どりを付けるにはどうしたら良いでしょう?

わかりにくい説明ですまんです。

841 :デフォルトの名無しさん:04/08/01 22:53
>>838>>839
全然凝らない単なるスロットでいいんですけど、イマイチやり方分かんなくて・・・。

842 :デフォルトの名無しさん:04/08/01 23:08
各スロットの状態遷移図描けば分かる

843 :デフォルトの名無しさん:04/08/01 23:38
>>841
スロットって、パチスロのスロットかとおもたよww

844 :デフォルトの名無しさん:04/08/01 23:43
>>843
パチスロのスロットでは?

845 :デフォルトの名無しさん:04/08/02 00:02
>>840
OnSelectCell はセルを選択する前に発生するイベントなので、そのイベント
手続きが終了するまでは選択されないという動作で正しい。
(無理にその中で選択すると再帰呼び出しになってしまう。)

PostMessage で WM_APP よりも上の適当なメッセージを親フォームに投げて、
そのメッセージハンドラで入力用のフォームを開くようにすればいい。
割り込みが入った場合のことを考えてフラグを立てるなどの処理が必要かも。

846 :デフォルトの名無しさん:04/08/02 00:25
パチスロのスロットかな・・・。
とりあえず数字が回ればいいのですけど・・・。

847 :デフォルトの名無しさん:04/08/02 00:48
やはりOpenGLでしょう。 プレイステーションでも正式採用だしね。

848 :デフォルトの名無しさん:04/08/02 00:49
とりあえず827はどっちかハッキリしろ

849 :デフォルトの名無しさん:04/08/02 00:50
違う、837だ orz

850 :デフォルトの名無しさん:04/08/02 00:52
837=833だろ
タイマ三つまわして他に何をするって言うんだよ

851 :デフォルトの名無しさん:04/08/02 01:06
どうして PByte(nil)^ := 0; は
アドレス 0 ではなくて、FFFFFFFF への読み込みになるのですか?

852 :デフォルトの名無しさん:04/08/02 01:24
ならないだろ

853 :デフォルトの名無しさん:04/08/02 03:34
Delphi6Personalでデータベース連携できるフリーコンポありませんか?

854 :デフォルトの名無しさん:04/08/02 08:07
>>853
ありません。Professional 買いましょう。

855 :デフォルトの名無しさん:04/08/02 17:13
Delphiの動的配列ってポインタなの?

856 :デフォルトの名無しさん:04/08/02 17:51
>>853
コンポーネントではないけど
>http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200302_03020035.html
に似たような議論が。


857 :デフォルトの名無しさん:04/08/02 17:55
長々とやってるけどよーするにできないと

858 :A:04/08/02 19:51
>>856,857
結論は「出来ない」ではなくて、
DelphiのRADを使って、簡単にやりたいなら、Proを買うのが一番の近道。
ってことじゃ?

Personalでデータベース連携、に関しては、これが結論では?

--------
データベースサーバを別に用意すれば、BDE経由でなくてもできます。
# たとえばOracle。フリーでならPostgreSQLなど。

MS-Accessも、DAOのOCXさえあれば接続できますが、配布条件によってはDAOを添付して配布する事ができないかもしれません。
これはMicrosoftに確認してください。

いろいろなデータベースに接続するには、ODBC接続にすると便利です。
ODBCは、BDE経由でなくても利用できると思います。ただし、DLLを直接叩かないといけません。

遠回しですが、JDBC-ODBCドライバを用いて、Java経由で接続、という手もあります。
# あまりメリットはありません。
---------

よーするに、面倒な道だけどやってできないこともない、と。

859 :デフォルトの名無しさん:04/08/02 20:04
>>858
禿同。

> 面倒な道だけどやってできないこともない
Qアメリカまで、運賃払わずに行く方法はありますか?
Aやってできないこともないです。ゴムボートで行った人も居ますから。

というレベルの話だが・・・

860 :デフォルトの名無しさん:04/08/02 20:27
WindowsMeで2GBを超えるファイルを開く方法を教えてください。
先頭の64Kbyteの読み込みができれば結構です。

861 :デフォルトの名無しさん:04/08/02 20:29
CreateFileじゃ駄目なのか?

862 :デフォルトの名無しさん:04/08/02 20:31
XMLで済むんならMSXML使うとか

863 :デフォルトの名無しさん:04/08/02 20:32
>>859
そこまで遠いかね

864 :デフォルトの名無しさん:04/08/02 20:36
500メートル先のコンビニ
歩いていくか自転車で行くかくらいしか違わないね

865 :デフォルトの名無しさん:04/08/02 20:50
500なら徒歩だろ
チャリキの方がかえってメンドクサイ

866 :ななしへたぐらま ◆XcB18Bks.Y :04/08/02 23:23
>>855
はい,動的配列変数は内部的にはポインタです.
詳しくはヘルプの『動的配列』のところをご覧ください.
(『トピックの検索』『キーワード』タブで『動的配列』と打ち込んで検索)

>>858
知り合いがVisual C++でDAOだったかADOだったかに接続するソフトを書いていましたが,
DelphiのPersonal版でも同じようにコードを書けばできそうな気もします.

ただDelphiのPro版以上ならず〜〜〜〜〜〜っと簡単にできてしまうので
あえてやろうとする人がいないのでしょうね.


867 :デフォルトの名無しさん:04/08/02 23:33
みんなは、>>851 で FFFFFFFF にはならないの?

868 :A:04/08/03 02:02
>>859
そこまで遠くないかとw
せめて、東京から北海道ぐらいじゃないかな?w

>866にもあるみたいに、要するに特別なサポートの無い他言語と同じだけの労力が必要になる。
でも、逆にいうと、他言語と同じレベルの努力をすればできる、ということでもある。

お金を出しさえすれば、すごく楽な道がすぐそばにあるのをわかっていて、
手を出す人は少ないだろうけど。

あと、昔のDelphiってたしか、一番下のバージョンでもデータベース系コンポがついてたはず。
Delphi4 std. とか。そゆのを安く手に入れるっていうほうほうもあるかも。

…ふとおもったけど、Delphi4 Stdの正規ユーザーが、Delphi6で、D4のコンポを使うことは
ライセンス的にどうなるんだろう?
それ以前に、コンポーネントが移植できるのかどうかも知らないけど。


869 :デフォルトの名無しさん:04/08/03 10:32
駄目に決まってる。
厳密に言えばバージョンアップしたら以前のバージョンを使う権利すら消滅する

870 :デフォルトの名無しさん:04/08/03 10:57
Delphi4 Stdの正規ユーザーが、Delphi6personal を使うとバージョンアップした
ことになるのか?

871 :836:04/08/03 14:48
>>846
漏れならTEditなりTLabelのコンポを作る。
type
TSlotLavel = class(TLavel)
private
 fSlotNum: Integer;
 fTimer: TTimer;
 procedure TimerEvent(Sender: TObject);
protected
 procedure Start();
 procedure Stop();
 procedure AddCount();
public
 constructor Create();
 destructor Destroy(); override;
end;

procedure TSlotLavel.AddCounr();
begin
 fSlotNum := fSlotNum + 1;
 if fSlotNum > 9 then
 fSlotNum = 1;
 Self.Caption := IntToStr(fSlotNum);
end;

872 :デフォルトの名無しさん:04/08/03 14:50
そもそも実装方法が分からんといってるんだから
コンポーネント化云々以前の問題だろ

873 :デフォルトの名無しさん:04/08/03 14:54
関係ないレス番が入ってた_| ̄|○

Createでタイマーのインスタンスをつくって、Startでタイマースタート、
Stopでタイマーストップ。イベント発生でAddCountを実行させる。
文字を入れたければ配列を使ったり汁。
ボタンを押したあと止めるのにラグがほしければ、AddCountで
適当な数値をカウントさせて、ある数値以上になったらStopを実行する
ように汁。

画像だと上下に移動させないといけないので、やや難しげ。

Delで書いたわけじゃないので、コードは脳内補正ヨロシク

874 :698:04/08/03 15:56
Rave Reportsについて

いろいろ調べてみたんですが、日本語のドキュメントがどこにもなくて、
Raveイベントの記述の仕方がさっぱりわかりません。>>747さんに教えて
もらったところも見てみたのですが、まず文字列の長さをどうやって判断するのか
すら・・・

ヘルプにたいした事が書いてないし挫折しそうです。どなたかお教え頂ければ
幸いです。

875 :デフォルトの名無しさん:04/08/03 16:14
オフィシャルコースウェアにあるらすぃよ

876 :デフォルトの名無しさん:04/08/03 17:19
>>874
正直QuickReportの方が(情報もあるし)マシだと思う。


877 :698:04/08/03 17:21
>>875

今本屋でオフィシャルコースウェアを立ち読みしてきました。ですが、
内容的にはDelWikiの翻訳済みドキュメントと同じぐらいで、それ以上
の事は書いてませんでした。

引き続きよろしくお願いします。

878 :698:04/08/03 17:23
連書きスンマソ
>>876
7ProでもQuickReportって使えるんですかね?
使えるようであれば試してみます。実はQuickReportについて
記述がある本は持っているので・・・

879 :876:04/08/03 17:34
>>878
もう一度本屋で応用編の535ページを見ると吉。

だけでは何なんで、
コンポーネントメニューからパッケージのインストールを選び
追加で"Delphi7\bin\dclqrt70.bpl"を選ぶと使えるようになるよ。
(単に標準でインストールされてないだけらしい)


880 :デフォルトの名無しさん:04/08/03 17:38
>>877

> 日本語のドキュメントがどこにもなくて、
ネットでは、DelWikiとミガロ。書籍はオフィシャルコースウェアのみ。
後はNewsGroup(英語)

> 文字列の長さをどうやって判断するのか
たぶんTBaseReportのTextWidthメソッド
(RaveDevGuide.pdfのP273。コード例あり)

RaveDevGuide.pdfのコツ
=巻末の索引と、PDF 内の検索を使いこなす

>>878

> 7ProでもQuickReportって使えるんですかね
使える。デフォルトでインストールされていなければ、追加インストール。

881 :デフォルトの名無しさん:04/08/03 18:50
RaveReportって普通にヘルプにあるけど、それとは違う
解説が欲しいってことなのかな??

ところで激しくスレ違いで申し訳ないんだけど、なぜか
C#をやることになったのですが、DelphiでいうTObjectListや
TStringList、TStringStream系のクラスってC#にあるんで
しょうか。誰か両刀使いの人、教えてください。

882 :デフォルトの名無しさん:04/08/03 18:52
>>874
> Raveイベントの記述の仕方がさっぱりわかりません
「値によって違う色で印刷するには」みたいに、Rave内に記述する場合は

1. Raveのビジュアル・デザイナを開く
2. イベント・エディタを開く
3. OnBeforeReportなどイベントを選択
4. コンパイル・ボタンを押す

883 :デフォルトの名無しさん:04/08/03 19:25
ファイルの階層を知るにはどうすれば良いですか?

例えば
C:\abc\def\ghi\jkl\xyz.txt
となってるときに
\の数を調べたいのです

よろしくお願いします

884 :デフォルトの名無しさん:04/08/03 19:56
>>883
そういう関数があるかもしれんけど、わからんので
AnsiPosで\の位置を求めて、わかったら左から\までを削除。
Count+1して0が返るまで続ける。
なんてどうだろう?

よく使いそうな関数はpasにまとめて記述しといてusesしとくとよいよ。

885 :デフォルトの名無しさん:04/08/03 20:10
ありがちだと思うのですが
半角文字を全角文字に変換する関数って用意されてないですかね?

886 :デフォルトの名無しさん:04/08/03 20:12
ない

887 :デフォルトの名無しさん:04/08/03 20:15
>>885
LCMapString APIを使う

888 :883:04/08/03 20:19
>>885
http://www.geocities.jp/fjtkt/problems/2004_0030.html
このサイトの参考サイトメモを参照すると
コード例も出てますよ

>>884
ありがとうございます
でもへたれな私は
>AnsiPosで\の位置を求めて、わかったら左から\までを削除。
>Count+1して0が返るまで続ける。
っていうのがどういうコードか理解できません(;´Д`)

どなたかご教授願えないでしょうか?



889 :デフォルトの名無しさん:04/08/03 20:30
>>888
function CountChar(const S: string; const Char: Char): integer;
var
 i: integer;
begin
 Result := 0;
 for i := 1 to Length(S)-1 do
  if (S[i]=Char)and(ByteType(S,i)=mbSingleByte)then inc(Result);
end;

実装方法は違うけど同じ結果が得られるはず。

890 :885:04/08/03 20:35
>>886-888
サンクスです。
LCMapStringをどう使うのかわからなかったのでコード例が見れて助かりました。
某もこれぐらいの関数用意してくれればいいのに・・

891 :A:04/08/03 21:40
>>869
>870 にあるとおり、バージョンアップをしたわけではないので、
Delphi6 perと、Delphi4 Stdの両方のライセンスが活きているはず。

892 :デフォルトの名無しさん:04/08/03 21:45
駄目といったら駄目

893 :デフォルトの名無しさん:04/08/03 22:02
Interface部に書いてある宣言から
implementation部の実装に飛ぶ方法ってないの?
あると思うんだけどなぁ・・

894 :デフォルトの名無しさん:04/08/03 22:07
>>893
?

895 :デフォルトの名無しさん:04/08/03 22:08
コードエヂタでのショートカットのことだろ?
プロ版以上には付いてるらしいよ。

896 :デフォルトの名無しさん:04/08/03 22:13
な・・なんと、そうだったのか。
貧乏人には不要な機能なのね・・

897 :デフォルトの名無しさん:04/08/03 22:41
ヘッダーファイルと実装ファイルにジャンプする必要無いんだから我慢しる!




自分はPro版だけど。

898 :デフォルトの名無しさん:04/08/03 22:47
pro版ユーザだけど、そんなん知らないから我慢汁。

エディタウィンドウ左側のエクスプローラーから選択してたけど、
そんなんあるのね。

899 :デフォルトの名無しさん:04/08/03 23:19
>>898
> pro版ユーザだけど、そんなん知らないから我慢汁。
ありえない・・・

Ctrl+Shift+上矢印キー
Ctrl+Shift+下矢印キー

900 :デフォルトの名無しさん:04/08/03 23:49
マジありえないと思う。
少し規模が大きくなるとほとんど必須の機能だと思うのだが。

901 :デフォルトの名無しさん:04/08/04 00:49
>>899
?クス

902 :デフォルトの名無しさん:04/08/04 01:15
本当に古いバージョンを使ってはいけないの?


903 :デフォルトの名無しさん:04/08/04 01:39
>>900
> 少し規模が大きくなるとほとんど必須の機能だと思うのだが。
分かっているじゃないか。
少し規模が大きくなると必須。
それにもかかわらず知らないということは、
規模が小さいということだ。Delphiだしな。


904 :デフォルトの名無しさん:04/08/04 01:54
みんなの所では、
PByte(nil)^ := 0;
はどんな例外が出るのですか?


905 :デフォルトの名無しさん:04/08/04 02:08
nullpo

906 :デフォルトの名無しさん:04/08/04 02:21
ga!

907 :デフォルトの名無しさん:04/08/04 02:29
NullPointerException

908 :デフォルトの名無しさん:04/08/04 07:09
>>883
>\の数を調べたいのです

function EnumYen(const path:string):integer;
var
ws:WideString;
i:integer;
begin
result := 0;
ws := path;
for i := 1 to Length(ws) do
if ws[i] = '\' then Inc(result);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(EnumYen('C:\abc\def\ghi\jkl\xyz.txt'));
end;

909 :デフォルトの名無しさん:04/08/04 07:13
>>904
何度もウザい奴。
お前がまずエラーメッセージ晒せ。
それからアセンブラのコード調べてみろ。
それからDWord(nil)の値調べてみろ。

910 :デフォルトの名無しさん:04/08/04 10:01
>>908
function CountUp(s: WideString; c: WideString): Integer;
にしとけ

911 :デフォルトの名無しさん:04/08/04 10:39
リストビューでカラムヘッダーをクリックしたら
その列でソートしたいのですが、どのように書けばよいでしょうか?

912 :デフォルトの名無しさん:04/08/04 10:42
>>911
ちょっとググればすぐ見つかります

913 :デフォルトの名無しさん:04/08/04 11:01
見つけたんならURL晒せよボケ

914 :デフォルトの名無しさん:04/08/04 11:30
913 名前:デフォルトの名無しさん[sage] 投稿日:04/08/04 11:01
見つけたんならURL晒せよボケ

915 :デフォルトの名無しさん:04/08/04 11:38
歩けない赤ん坊をずっと抱えたままでいると決して歩けるようにはならない

916 :デフォルトの名無しさん:04/08/04 11:40
>>912
ぐぐったけど見つかりませんでした。

917 :デフォルトの名無しさん:04/08/04 11:45
http://www.google.com/search?num=50&lr=lang_ja&q=TListView+%E3%82ス%E3%83シ%E3%83%88
Delphi Tips - Win95


918 :デフォルトの名無しさん:04/08/04 12:24
>>917
おお。すばらしい。さんくす。

919 :デフォルトの名無しさん:04/08/04 12:43
nkf32.dllを使用してファイルをeucからsjisに変換するサンプルはありませんか?

920 :デフォルトの名無しさん:04/08/04 12:44
>>919
ちょっとググればすぐ見つかります

921 :デフォルトの名無しさん:04/08/04 12:49
「nkf32.dll delphi」でぐぐったのですが
肝心のページが404でした。

922 :デフォルトの名無しさん:04/08/04 12:54
>>920
おお。すばらしい。さんくす。

923 :デフォルトの名無しさん:04/08/04 12:57
長所新車スレなんだから早く教えれ

924 :デフォルトの名無しさん:04/08/04 12:59
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=nkf32%2Edll+delphi
トップサイトにライブラリがあるわけだが。

925 :デフォルトの名無しさん:04/08/04 13:00
>>924
あれ?さっきみたときはnot foundだったのに。
なんでやー

926 :デフォルトの名無しさん:04/08/04 15:52
ShellExecute関数で呼び出したプログラムを
ボタンを押すと閉じるようにしたいのですが
どうしたらよいでしょうか?

実行ファイルはバッチファイルです
(Win98のMS-DOSでは実行後、窓が閉まってくれないのです・゚・(つД`)・゚・)

927 :デフォルトの名無しさん:04/08/04 16:00
command /c だか /kでもだめなん?

928 :926:04/08/04 16:29
>>927
>command /c だか /k
とは何でどういう意味なのでしょうか?
またどこに書けば良いのでしょうか?

恐らくかなり基本的なこととは存じますが
私はShellExecute関数をこの間覚えて
やっとバッチファイルが動いて喜んでいるほどの初心者なんです
恐れ入りますが教えていただけないでしょうか

一応バッチファイルの最後にexitは書いているのですが
窓が閉まってくれません

929 :デフォルトの名無しさん:04/08/04 17:42
WinExecやCreateProcessではどうだろう

930 :デフォルトの名無しさん:04/08/04 18:03
さて、ここで問題です。
vbでいうところの

Dim aData() As Byte
Winsock1.GetData aData, vbArray Or vbByte

Dim f As Integer
f = FreeFile
Open "hoge.dat" For Binary As #f
Seek #f, LOF(f) + 1
Put #f, , aData
Close #f

をDelphiに移植してください。



931 :デフォルトの名無しさん:04/08/04 18:08
('A`)1000円くらいでどうだ?

932 :デフォルトの名無しさん:04/08/04 18:09
>>931
そこを何とかお願いしますだ。

933 :デフォルトの名無しさん:04/08/04 18:16
>>932
ShowMessage('ワラワラ');

934 :デフォルトの名無しさん:04/08/04 18:20
殴り書きでいいのでお願いしますだ。

935 :デフォルトの名無しさん:04/08/04 18:34
ウィニーのクラックローダーとかっていうのは
Shell関数でクラック.exeの子プロセスとして実行して、そこのやり取りを傍受してるんですか?

936 :デフォルトの名無しさん:04/08/04 18:38
>>930
ここは質問スレであって依頼スレではありません
質問スレに問題だしてどうするんだVB厨w

937 :デフォルトの名無しさん:04/08/04 18:41
では質問です。
vbでいうところの

Dim aData() As Byte
Winsock1.GetData aData, vbArray Or vbByte

Dim f As Integer
f = FreeFile
Open "hoge.dat" For Binary As #f
Seek #f, LOF(f) + 1
Put #f, , aData
Close #f

をDelphiではどのように書けばいいでしょうか?
よろしくお願いしますだ。



938 :デフォルトの名無しさん:04/08/04 18:43
大丈夫かこいつ・・・

939 :デフォルトの名無しさん:04/08/04 18:46
ふざけた質問(の仕方を)する香具師はスルー

940 :デフォルトの名無しさん:04/08/04 18:48
残念ながらVBを使えるDelphi使いはいません。あきらめましょう

941 :デフォルトの名無しさん:04/08/04 18:49
ほんとはわからないんですね?
じゃあ、自分でやるか

942 :デフォルトの名無しさん:04/08/04 20:08
煽って聞こうとしていますがスルーしましょう

943 :デフォルトの名無しさん:04/08/04 20:11
コード丸投げってのがむかつくな

944 :デフォルトの名無しさん:04/08/04 20:13
必死だな>VB

945 :デフォルトの名無しさん:04/08/04 20:24
まぁVBやってる時点で(ry

946 :デフォルトの名無しさん:04/08/04 20:30
おねげーしますだ。マジで。よろしく。


947 :デフォルトの名無しさん:04/08/04 20:31
やれやれ仕方ないな









948 :デフォルトの名無しさん:04/08/04 20:35
期待age

949 :デフォルトの名無しさん:04/08/04 20:38
>>937
var
 vbString: String;
begin
 vbString:='Dim f As Integer'+#13#10
       +'f = FreeFile'+#13#10
       +'Open "hoge.dat" For Binary As #f'+#13#10
       +'Seek #f, LOF(f) + 1'+#13#10
       +'Put #f, , aData'+#13#10
       +'Close #f';

 ShowMessage(VBtoPascal(vbString));
end;

950 :デフォルトの名無しさん:04/08/04 20:39
>>949
解決しました。
ありがとうございます。

951 :デフォルトの名無しさん:04/08/04 20:40
そんなの書いてる暇あったらちゃんとしたやつ頼みます。マジで。

952 :デフォルトの名無しさん:04/08/04 20:42
ではひとつずつお願いします。
ReadBuffで読み込めばいいでしょうか?
これだとバッファサイズを指定しなければいけませんが
VBのように動的配列に自動的に最適な長さで
取得できないのでしょうか?

953 :デフォルトの名無しさん:04/08/04 20:43
http://www.freewarefiles.com/programs.php?ProgramID=2101&categoryid=10&subcategoryid=115

954 :デフォルトの名無しさん:04/08/04 20:47
マジであるんかい

955 :デフォルトの名無しさん:04/08/04 21:00
この辺も参考になるだろう

VBtoDelphi
http://www.wwlnk.com/boheme/delphi/vbtodel/index.html

956 :デフォルトの名無しさん:04/08/04 21:00
>>952
TFileStreamを使え。あとはヘルプを見ればわかる。


957 :デフォルトの名無しさん:04/08/04 22:35
 TreeViewの全てのノードにアクセスするのに次のようにコーディングしているのですが
あまり早くありません。もっと早い方法はないでしょうか?

var
 Node: TTreeNode;
begin
 TreeView1.OnChange := nil;  //repeat ループで呼ばれるのを防ぐ
 TreeView1.OnChanging := nil;
 TreeView1.Items.Beginupdate;

 Node := TreeView1.Items.GetFirstNode;
 if Node <> Nil then
 repeat
  //処理 syori(Node);
  Node := Node.GetNext;
 until Node = nil;

{ //この方法もスピードは変わらない
 for i := 0 to TreeView1.Items.Count-1 do
  //処理 syori(TreeView1.Items.[i]);
}
 TreeView1.Items.EndUpdate;
 TreeView1.OnChange := TreeView1Change;   //元に戻しておく
 TreeView1.OnChanging := TreeView1Changing;
end;


958 :デフォルトの名無しさん:04/08/05 00:07
公開されてる正規表現ライブラリっていくつかありますが
みなさんのオススメはどれですか?

959 :デフォルトの名無しさん:04/08/05 00:12
断然VBScript_RegExp_55
MS様のお墨付き。

960 :デフォルトの名無しさん:04/08/05 00:51
NullPointerException って、Javaの例外ですよね?
真面目に聞いているのにな。
ちなみに PByte(1)^ := 0 も $FFFFFFFFへの読み込み違反になりました。
どうしてですか?


961 :デフォルトの名無しさん:04/08/05 00:51
(´♀`)

962 :デフォルトの名無しさん:04/08/05 00:53
なりません。

963 :デフォルトの名無しさん:04/08/05 00:56
>>960
最小限のプロジェクト作ってそのコードだけ記述して実行してみろ。
絶対何か別の要素が無関係なメッセージを出してるよ。

964 :デフォルトの名無しさん:04/08/05 01:52
>>963
これです。 Delphi3ですけど、関係ありますか? (大ありの予感…)

program Project1;

uses
 Windows, SysUtils, Dialogs;

begin
 try
  PByte(1)^ := 0;
 except
  on E:Exception do ShowMessage(E.Message);
 end;
end.

965 :デフォルトの名無しさん:04/08/05 02:10
on E:Exception do

どうしてコレを入れたがる人がいるんだろう?
適切な場合は構わないけど。

966 :デフォルトの名無しさん:04/08/05 02:11
>>964
モジュール 'Project1.exe' のアドレス 00455689 でアドレス 00000001 に対する書き込み違反がおきました。

>>965
今回のケースはいいんじゃない?

967 :964:04/08/05 02:19
>>965
IDEが例外を表示するから意味が無いって事ですか?
たしかにそうですけど。
それとも、Application.HandleException(?)を使った方が良いって事ですか?

>>966
ありがとうございます。
VCLに問題がありそうなので、VCLソースを追ってみます。

968 :デフォルトの名無しさん:04/08/05 02:33
>>967
提示したソースがそのもので、特に変えてある部分が無いなら、
「on E:Exception do」を入れなくても結果は同じだっちゅーこと。

時々無意味に(?)分岐するようなコードを書く人がいるので
不思議に思ったと。
そーゆーこってす。

969 :デフォルトの名無しさん:04/08/05 02:56
分岐の為ではなくて、E.Message を使うためにやってるのですけど。

ShowMessage(E.Message);
だけだと、Eが未定義の識別子になりますよ。

それとも、
if ExceptObject is Exception then ShowMessage(Exception(ExceptObject).Message);
の方が良いって事ですか? 確かにVCLでも使っている所がありますけど…。

970 :デフォルトの名無しさん:04/08/05 04:06
>>953
トロイ・・・?

971 :964:04/08/05 04:44
TExceptionRecord ってDelphi固有の構造体かと思ったら、
APIの EXCEPTION_RECORD だったんですね。
私の力量ではこれ以上は無理っぽい。
なんとなく、9x系では $FFFFFFFF になる気がします。

972 :デフォルトの名無しさん:04/08/05 05:49
iniファイルReadIntegerとかWriteIntegerとか何度も呼び出して非常に面倒なんだけど
何か簡単にできる方法はありませんか?

973 :デフォルトの名無しさん:04/08/05 06:36
質問よろしいかな?
6のパーソナル使ってるのですけど、コンパイルしたときの
コンパイルエラーメッセージを別のファイルに移すことはできませんか?

コピーして貼り付けようにも1行づつなんで時間がかかってしまいます。
一度に行う方法はありませんか?

974 :デフォルトの名無しさん:04/08/05 07:18
>>972
type TMyInifile = class(TInifile)
 property Section: String;
 procedure Write(Ident: String; Value: String); overload;
 procedure Write(Ident: String; Value: Integer); overload;
 function Read(Ident: String; Value: String): String; overload;
 function Read(Ident: String; Value: Integer): Integer; overload;
みたいなラッパーを書く

975 :デフォルトの名無しさん:04/08/05 09:30
>>972
iniファイルを使わずにDocumentクラスというのを作り、それに構造体 or 構造体配列を持たす。
構造体とファイルの入出力には、Documentクラスにload/saveメソッド1つ作る。

976 :952:04/08/05 09:34
>>956
ありがとうございました。なんとかここまでできました。
でも、↓だと上書きになってしまってだめなので
追記で書き込みたいのですがどうすればよいでしょう?

var
fp: TFileStream;
buff: array[1..4096] of Byte;
ret: Integer;
begin
fp := TFileStream.Create('hoge.dat', fmCreate);
ret := Socket.ReceiveBuf(buff, sizeof(buff));
fp.WriteBuffer(buff, ret);
fp.Free;

end;

977 :デフォルトの名無しさん:04/08/05 09:35
fmCreate

978 :952:04/08/05 09:47
できました。
var
fp: TFileStream;
buff: array[1..8192] of Byte;
ret: Integer;
begin
if FileExists('hoge.dat') then
fp := TFileStream.Create('hoge.dat', fmOpenReadWrite)
else
fp := TFileStream.Create('hoge.dat', fmCreate);
fp.Seek(0, soFromEnd);
ret := Socket.ReceiveBuf(buff, sizeof(buff));
fp.WriteBuffer(buff, ret);
fp.Free;
end;


979 :952:04/08/05 09:55
動的配列使ってみました。
var
fp: TFileStream;
buff: array of Byte;
ret: Integer;
begin
if FileExists('hoge.dat') then
fp := TFileStream.Create('hoge.dat', fmOpenReadWrite)
else
fp := TFileStream.Create('hoge.dat', fmCreate);
fp.Seek(0, soFromEnd);
SetLength(buff, Socket.ReceiveLength);
ret := Socket.ReceiveBuf(buff, sizeof(buff));
fp.WriteBuffer(buff, ret);
fp.Free;
end;

EAccessViolationが発生します。
なぜでしょう?

980 :デフォルトの名無しさん:04/08/05 10:01
>>979
Socketって通信して、そのデータを保存してるってこと?
なら、TIdTcpClientつかえばTStreamの形のままやりとり
できるから、そっちの方が便利。

動的配列を使う場合、確か本来のデータ量+最後の終了
を示すコードだから、RecieveLength+1とかしなくちゃいけ
ないんじゃなかたけ。テキトウデスマソ

981 :デフォルトの名無しさん:04/08/05 10:05
sizeof(buff)=4
length使え

982 :952:04/08/05 10:10
var
fp: TFileStream;
buff: array of Byte;
ret: Integer;
begin
if FileExists('hoge.dat') then
fp := TFileStream.Create('hoge.dat', fmOpenReadWrite)
else
fp := TFileStream.Create('hoge.dat', fmCreate);
fp.Seek(0, soFromEnd);
SetLength(buff, Socket.ReceiveLength);
ret := Socket.ReceiveBuf(buff, Length(buff));
fp.WriteBuffer(buff, ret);
fp.Free;
end;

としてみたところ「CPU」というウィンドウが出てきました。
これはなんでしょう?結果も思わしくありません。

983 :952:04/08/05 10:16
この行がだめみたいです。
ret := Socket.ReceiveBuf(buff, Length(buff));


984 :デフォルトの名無しさん:04/08/05 10:22
Delphiでシステムコールはどうすればいいのでしょう

985 :デフォルトの名無しさん:04/08/05 10:25
さぁてそろそろ次スレの季節だな

986 :952:04/08/05 10:27
Socket.ReceiveLengthって受信したバイト数じゃないみたいですね。
あきらめました。

987 :デフォルトの名無しさん:04/08/05 10:29
>>984
WindowsAPIなら普通にコールするだけ。

uses句にWindowsと書く必要はあるけど、通常既に入ってる。

988 :デフォルトの名無しさん:04/08/05 10:35
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

Windows・・WindowsAPI
Message・・メッセージダイアログ?
Variants・・バリアント型使わないなら不要?
Classes・・クラスを用いないなら不要?
Graphics・・画像使わないなら不要?
Controls・・?
Form・・フォーム
Dialogs・・?

989 :デフォルトの名無しさん:04/08/05 10:38
( ゚Д゚)ポカーン

990 :デフォルトの名無しさん:04/08/05 10:41
>>987
何という関数でしょうか?
いまいちWindowsAPIというのが分かりません。。
Delphi システムコールでググってるんですが。。

991 :デフォルトの名無しさん:04/08/05 10:53
何がしたいのか具体的に書け

992 :デフォルトの名無しさん:04/08/05 10:55
だから、システムコールです。
Cでいうsystem()みたいなのを

993 :デフォルトの名無しさん:04/08/05 11:00
産め

994 :デフォルトの名無しさん:04/08/05 11:00


995 :デフォルトの名無しさん:04/08/05 11:00
生め

996 :デフォルトの名無しさん:04/08/05 11:01


997 :デフォルトの名無しさん:04/08/05 11:02
膿め

998 :デフォルトの名無しさん:04/08/05 11:06
998ゲッツ

999 :952:04/08/05 11:06
1000

1000 :デフォルトの名無しさん:04/08/05 11:07
rm / -rf

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

gc
lud20190720005257ca
このスレへの固定リンク: http://5chb.net/r/tech/1089779142/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「くだすれDelphi(超初心者用)その16」を見た人も見ています:
くだすれC++Builder(超初心者用)その5
くだすれDelphi(超初心者用)その57 [無断転載禁止]
くだすれDelphi(超初心者用)その58【Embarcadero】
くだすれDelphi(超初心者用)その59【Embarcadero】
くだすれFORTRAN(超初心者用)その6
くだすれDelphi(超初心者用)その60【Embarcadero】 (277)
くだすれAjax(超初心者用)
くだすれC++/CLI(初心者用)part2
くだすれPython(超初心者用) その31
くだすれPython(超初心者用) その39
くだすれPython(超初心者用) その40
くだすれPython(超初心者用) その38
くだすれPython(超初心者用) その37
くだすれPython(超初心者用) その33©2ch.net
くだすれPython(超初心者用) その36
くだすれPython(超初心者用) その48【まず1嫁】
くだすれPython(超初心者用) その51【まず1嫁】
くだすれPython(超初心者用) その50【まず1嫁】
くだすれPython(超初心者用) その42【Ruby禁止】
くだすれPython(超初心者用) その44【Ruby禁止】
くだすれPython(超初心者用) その47【Ruby禁止】
【まず1嫁】くだすれPython(超初心者用) その56
【第五人格】IdentityV 初心者用スレ 30
【第五人格】IdentityV 初心者用スレ 14
【第五人格】IdentityV 初心者用スレ 24
【第五人格】IdentityV 初心者用スレ 12
UWSC初心者用スレ
ふらっとC#,C♯,C#(初心者用) Part88
ふらっと C#,C♯,C#(初心者用) Part137
【初心者用】マイニング情報交換スレ36
【初心者用】マイニング情報交換スレ20
【初心者用】マイニング情報交換スレ60
ふらっと C#,C♯,C#(初心者用) Part141
ふらっと C#,C♯,C#(初心者用) Part152
ふらっと C#,C♯,C#(初心者用) Part154
【初心者用】マイニング情報交換スレ19
ふらっと C#,C♯,C#(初心者用) Part150
ふらっと C#,C♯,C#(初心者用) Part148
ふらっと C#,C♯,C#(初心者用) Part160
ふらっと C#,C♯,C#(初心者用) Part128
【初心者用】マイニング情報交換スレ30
ふらっと C#,C♯,C#(初心者用) Part144
ふらっと C#,C♯,C#(初心者用) Part134
ふらっと C#,C♯,C#(初心者用) Part138
ふらっと C#,C♯,C#(初心者用) Part141
ふらっと C#,C♯,C#(初心者用) Part129
ふらっと C#,C♯,C#(初心者用) Part146
ふらっと C#,C♯,C#(初心者用) Part134
[初心者用]スマブラXアイテム無しタイマンスレ
【初心者用】パズル&ドラゴンズ【パズドラ】★121
UWSC初心者用スレ2 (280)
ふらっと Q#,Q♯,Q#(初心者用) Part 1 (10)
ふらっと C#,C♯,C#(初心者用) Part161 (36)
【初心者〜】モンスト5hit目
初心者に読ませたい本を教えてください!
初心者にもおすすめなディスクガイド教えてください
プログラミング初心者ですが質問させてください
Fate/GrandOrder初心者スレ★22 [無断転載禁止]
Philadelphia 76ers 29th
【Delphi】Embarcaderoオッチャ その31【C++ビルダ】
【コードギアスレ】Delphi for PHP【RADツール】
将来性ないプログラミング言語。Delphi含まれず安心
【Delphi互換!?】FreePascal/Lazarus その2【GPL】
ONE OK ROCK 「Deeper Deeper / Nothing Helps」リリース記念特番!!
【5/8-10】サファリゾーン フィラデルフィア Safari Zone Philadelphia【代替開催】
11:49:38 up 51 days, 12:53, 1 user, load average: 10.05, 21.21, 19.88

in 0.011898994445801 sec @0.011898994445801@0b7 on 030601