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

このエントリーをはてなブックマークに追加
676デフォルトの名無しさん
Delphi 7で作ったGUIのプログラムってVistaで動きますかね?
677デフォルトの名無しさん:2006/05/12(金) 08:25:09
ベータで試してみた限りだと6, 7, 2006はフォーム一枚のプログラムすら起動しなかったよ。
VB6.0やVB.NETは普通に動くのにこの現象はとても不思議。
Borlandが互換性向上に対する技術協力を拒んでいるのかな。
678デフォルトの名無しさん:2006/05/12(金) 08:31:50
そうそう、gccやBASIC/98やCOBOL.NETすら動かなかった。他社製品軒並み全滅。
逆にMSの開発言語だと16ビット版のVB2.0すら動く。
なんなんだろうな。
679デフォルトの名無しさん:2006/05/12(金) 08:36:19
>>632
FillChar(test,SizeOf(test),0);
680デフォルトの名無しさん:2006/05/12(金) 08:37:18
あ、寝ぼけてたw
>>679はあぼーんしといてねと
681デフォルトの名無しさん:2006/05/12(金) 08:43:51
普通に>>638が正解
682デフォルトの名無しさん:2006/05/12(金) 08:53:53
DelphiはVistaでは動かないのか・・・
VB2005やっているからVistaはそっちでやろうかな。
683デフォルトの名無しさん:2006/05/12(金) 09:19:53
>>677
VB信者必死の工作
ネイティブ捨てられたのがそんなに悔しいのかw

>>682
http://itpro.nikkeibp.co.jp/article/NEWS/20060302/231632/
684デフォルトの名無しさん:2006/05/12(金) 09:38:27
Vistaが出たら2006を投げ捨てて2007買いかえればいいということですね。
685デフォルトの名無しさん:2006/05/12(金) 09:40:43
DelアプリがXPで不安定だって書き続けてたブビ厨が板。

ウソを書き始めると歯止めが利かなくなると思うだけど。
つまり半在予備軍。
686682:2006/05/12(金) 09:45:48
>>683
読みました、ちょっと安心しました。
687デフォルトの名無しさん:2006/05/12(金) 09:56:27
Vistaはネイティブじゃなくて.netが主体になってくるから
遅かれ早かれWin32アプリは動かなくなるだろね
DelphiだろうとVCだろうがそれは変わらない

MSの口車に乗るのは悔しいけど
688デフォルトの名無しさん:2006/05/12(金) 10:00:18
つ Delphiドトネト
689デフォルトの名無しさん:2006/05/12(金) 10:02:26
誰か>>649の相手してけれ!
690デフォルトの名無しさん:2006/05/12(金) 10:11:00
>>689
なんとかExpertとかいう外部ツールをつかわないとエディタのフリーカーソルは
変更できないよ
691デフォルトの名無しさん:2006/05/12(金) 10:16:22
692デフォルトの名無しさん:2006/05/12(金) 10:16:57
693692:2006/05/12(金) 10:17:28
かぶった orz
694デフォルトの名無しさん:2006/05/12(金) 10:26:30
みんな教えてくれてありがとうだっぺ。
これで安心して裏の畑で糞にいけるっぺ。
695デフォルトの名無しさん:2006/05/12(金) 12:48:08
も、もしかして14時間も我慢してたのか?
696デフォルトの名無しさん:2006/05/12(金) 13:30:29
>>687
   ∩___∩     /
   | ノ      ヽ  /
  /  >   < |/ そんな餌パクッ
  | //// ( _●_)/ミ
 彡、     l⌒l  ノ
 / __  \ \ヽ
. (___)   \__)
. O|       /
  |  /\ \
  | /    )  )
  ∪    (  \
        \,,_)
697法の下の名無し:2006/05/12(金) 17:03:42
基本的なことを教えて欲しいんだけど
uses
hogehoge;
A
private
B
public
C
end
D
とあるけど、それぞれには何を書くの?
Bが内部用、Cが外部からも見えるってのは今まで理解してたんだが、AとDの区別がよく分からんもので。
698デフォルトの名無しさん:2006/05/12(金) 17:22:00
ヘルプ持ってないの?
699デフォルトの名無しさん:2006/05/12(金) 17:29:19
>>698
ヘルプで検索しても禿しく意味不明なのばかりヒットするもんで。
700デフォルトの名無しさん:2006/05/12(金) 17:38:32
A はpublishedだよ。IDE が自動的に永続化してくれる部分。イベントハンドラが
自動で書き込まれる。ユーザがここを使う必要はまずない。

D 単なる関数とか定数宣言やグローバル変数の定義場所。

ヘルプに詳しく書いてあるけど
701デフォルトの名無しさん:2006/05/12(金) 17:40:49
> ヘルプで検索しても

検索じゃなくて目次からの方が速い。ユニットファイルの構造とか、可視性とか
702不明なデバイスさん:2006/05/12(金) 17:45:26
PCの時間を0.01秒単位で修正する方法って無いですか?

出来るだけ正確にあわせたいのですが、Windows標準のタイムサーバーとこまめに同期しても
動機直後に0.5秒ぐらいずれてることがあるので。
703デフォルトの名無しさん:2006/05/12(金) 17:54:16
>>702
サーバをmfeed辺りに変えれば良いという話ではないのか?
704デフォルトの名無しさん:2006/05/12(金) 17:58:04
>>697>>125に見えて仕方がない。
705デフォルトの名無しさん:2006/05/12(金) 19:55:04
>>700
ありがとうございました。

>>704
このスレで書いたのは>>630が最初だよ。
706デフォルトの名無しさん:2006/05/12(金) 21:54:16
「特定のアドレスの特定のポートに発信するプログラム」
を特定するプログラムを作りたいのですが、
どのような方法があるでしょうか?
707デフォルトの名無しさん:2006/05/12(金) 22:23:23
ファイヤーウォールとかパケットモニターを参考にしる
708デフォルトの名無しさん:2006/05/13(土) 01:59:33
imageコンポーネントに表示させてる画像を左右反転させたり上下逆にしたりできるでしょうか?
709デフォルトの名無しさん:2006/05/13(土) 02:01:33
できます。
710デフォルトの名無しさん:2006/05/13(土) 02:50:12
どのようにすればいいのでしょうか?
711デフォルトの名無しさん:2006/05/13(土) 03:06:53
ScanLineプロパティを使って画像処理すればok
712デフォルトの名無しさん:2006/05/13(土) 03:27:00
無限ループ突入↓
713デフォルトの名無しさん:2006/05/13(土) 03:39:07
どのようにすればいいのでしょうか?
714デフォルトの名無しさん:2006/05/13(土) 03:41:18
procedure TForm1.Button1Click(Sender: TObject);
var
 i,j:integer;
begin
 for i:=0 to j do
 begin
  j := i+1;
  showmessage('m9(^Д^)プギャー');
 end;
end;
715デフォルトの名無しさん:2006/05/13(土) 03:41:42
716デフォルトの名無しさん:2006/05/13(土) 03:50:43
>>714
何がしたいんだ
717デフォルトの名無しさん:2006/05/13(土) 04:13:06
>>710-715
ありがとうございました
718デフォルトの名無しさん:2006/05/13(土) 10:31:32
> imageコンポーネントに表示させてる画像を左右反転させたり上下逆にしたりできるでしょうか?

ttp://junki.main.jp/delphigr/005Flip.htm
719デフォルトの名無しさん:2006/05/13(土) 11:12:23
スペースで区切られた文字列を分解したいのですが
Posでスペースを探して、自分で区切る以外に
なにか方法はありますか?
720デフォルトの名無しさん:2006/05/13(土) 11:49:20
DelimitedText で出来そうだが
721719:2006/05/13(土) 12:09:18
ありがとうございます。

> DelimitedText で出来そうだが
StringList のことでしょうか?

SList := TStringList.Create;
SList.Add(Text);
SList.Delimiter := ' ';

としても SList.Count は1のままです。
722デフォルトの名無しさん:2006/05/13(土) 12:28:48
>>719
p:=PChar(s);

while p^ <>#0 do begin
while p^ = ' ' do inc(p);
SetLength(w,length(s));
n:=1;
while p^ <> ' ' do begin
w[n]:=p^;
inc(p);
inc(n);
end;
SetLength(w,n);
wを使う
end;
723719:2006/05/13(土) 12:35:28
ありがとうございます。>>722
Pos より速そうですね。
724デフォルトの名無しさん:2006/05/13(土) 13:05:47
ふつうにDelimitedTextでできるでしょ
725722:2006/05/13(土) 13:06:50
よほど巨大な行を読み込む可能性がなければ 速度的な効果はないよ。
ただ、状態遷移型も慣れておいた方がいいとも思う。
そんなに長くないから、テンプレート的に使うクセを付ければいい

それと、 SetLength(w,n);  は間違い SetLength(w,n-1); だな
726デフォルトの名無しさん:2006/05/13(土) 13:08:12
ふつうにDelimitedTextでできるでしょ
727デフォルトの名無しさん:2006/05/13(土) 13:18:56
ちょっとしたユーティリティ関数。速くはないけど。

s := 'Foo Bar Baz';
repeat
   t := Strip(s, ' ');
   ShowMessage(t);
until s <> '';

function Strip(var s: String; Delimiter: String): String;
var
   idx: Integer;
begin
   idx := AnsiPos(Delimiter, s);
   if idx = 0 then
   begin
       Result := s;
       s := '';
   end
   else
   begin
       Result := Copy(s, 1, idx-1);
       s := Copy(s, idx+1);
   end;
end;
728デフォルトの名無しさん:2006/05/13(土) 13:48:32
ダウンロードした画像からアイコンを作って
タスクトレイにアイコンを表示しているのですが
元の画像が横長なので、つぶれてしまいます。

この画像の両端は無地なので
切り落とせば多少ましになると思うのですが、どうしたら良いでしょう。
729デフォルトの名無しさん:2006/05/13(土) 13:51:34
StringReplaceだとすげぇ楽だけど遅いの?
730デフォルトの名無しさん:2006/05/13(土) 14:00:20
Stringと便利関数使って切り貼りすると大概遅い。
遅いなと思ったらPCharとC言語系の文字列処理関数の出番。
731719:2006/05/13(土) 14:34:42
勉強になりました。
皆さん、ありがとうございました。
732デフォルトの名無しさん:2006/05/13(土) 15:52:55
>>728
無地の判定をしなくていいなら
元となる画像から適当な範囲をコピーして
アイコンを作ればよい。

with NewBmp do
begin
 Width := 24;
 Height := 24;
 for y := 0 to 23 do
  for x := 0 to 23 do
   Canvas.Pixels[x,y] := MotoBmp.Canvas.Pixels[x + 10, y + 5];
end;
733デフォルトの名無しさん:2006/05/13(土) 15:55:14
>>729
一般的に文字列処理で切り貼りするアルゴリズムは O^2 アルゴリズムで
操作するサイズが2倍になれば4倍の時間がかかる。

パソコンの性能が上がると、速度も速くなるけど処理するデータも大きくなるわけで
それに応じてデータサイズが大きくなるような場合逆に遅くなるわけ

ただし、1行のサイズが80行に限られているような場合は、別にそこまで拘る必要はない
734デフォルトの名無しさん:2006/05/13(土) 21:42:32
Delphi7proでIndyのSMTPコンポを使ってるのですが、
Indyの色々なバージョンを試してたら
>[致命的エラー] Main.pas(8): ユニット IdSMTPBase は異なるバージョン IdEMailAddress.TIdEMailAddressItem によりコンパイルされています

と言うようなエラーが出てくるようになってしまいました。

Indyのサイトにある4つのバージョンをすべて試したのですがすべて駄目でした。
これを回避する方法かIdEMailAddressとTIdEMailAddressItemのバージョンを確認する方法は
無いでしょうか。

IdEMailAddress.TIdEMailAddressItemは私自身は使ってないのですが、孫引きされてるみたいで、
他のものに入れ替える方法が無いので。
735Delフサギコ ◆A6VzDeLphI :2006/05/13(土) 21:42:58
   ∧,,∧
   ミ,,゚Д゚彡  コロコロ
   ⊂  ∪ミ  
g,,, (~,,(~,,,ミ@   

imageエディタってのがなくなったんですが
コンポーネントパレットのアイコンを編集したいので
dcrを扱えるソフトがほしいのですが

お勧めはありますか?

736デフォルトの名無しさん:2006/05/13(土) 21:57:19
>>735
お勧めかどうかは分からんが
パートナーDVDに XN Resource Editor が入ってる。
737デフォルトの名無しさん:2006/05/13(土) 21:59:50
> 1行のサイズが80行に
そいつは難しいなぁ。





ごめん。
738デフォルトの名無しさん:2006/05/13(土) 22:02:38
> これを回避する方法
Indyをアンインストール
Delphi7のbplフォルダにあるIndy系のパッケージを全部消して
ライブラリぱすにあるゴミを片付けて
Indyをインストール。

自分のプロジェクトのdcuを全部消して
再コンパイル。
739デフォルトの名無しさん:2006/05/13(土) 22:47:29
>>738
1 D7プロジェクト-オプションからIndyを削除
2 D7フォルダ内の*.Indy*.*で検索してすべて削除
3 ライブラリパスは見たけどゴミは無し。
4 Indy10.1.5を落としてきてインスコしようとしたら古いバージョンがまだ入ってると警告が出るけど無視してインスコ
5 自分のプロジェクトのDCUすべて消してプロジェクト開いてF9

これだけやったのですが、エラーでした。
740デフォルトの名無しさん:2006/05/13(土) 23:35:45
AnsiPosで部分文字列の位置を求める場合、返り値の位置が2バイト文字の
2バイト目かどうかチェックする必要はありますか?
マルチバイト文字セットをサポートするとあるので、その辺は関数内でやって
くれているのでしょうか?
741デフォルトの名無しさん:2006/05/13(土) 23:37:52
心配無用
よきに計らってくれるよ
742デフォルトの名無しさん:2006/05/13(土) 23:40:25
どうもです。
743デフォルトの名無しさん:2006/05/14(日) 00:02:13
>>739
bpl フォルダはMy Document だったかも。
744デフォルトの名無しさん:2006/05/14(日) 00:13:36
>>743
たびたびありがとうございます。
Cドライブをすべて検索しましたけど、スタートメニューとsystem32に二つファイルがあっただけでした。
745Delフサギコ ◆A6VzDeLphI :2006/05/14(日) 00:26:19
    ∧,,∧  コロコロ
    ミ゚Д゚,,彡 
  σ⊂  ∪ミ  
┳┳ (~,,(~,,,ミ@   

>>736
レス、紹介ありがとう。
XN Resource Editorを
インストールしてみました。

ランゲージのところにFont指定が文字化けしてますね。
それは仕方ないとしよう。
dcrファイルをSaveAsすることができない
なんていいかげんなつくりなんだ、、、、

で、結果は、アイコン、変わってくれないんだ....
TTrayIconってのがBDS2006で標準のクラス名とかぶっちゃって
TTrayIcoって名前に変更して使おうとしてるんだけど
Taskbar.dcrを編集してもアイコンが反映されないな。

わかんないや、、、、悲しい。

こういう時BDSが一歩、嫌いになる........
746デフォルトの名無しさん:2006/05/14(日) 00:42:14
>>745
うぅ、なんか変なアプリを紹介してしまったのかも orz

XN Resource Editor はrc ファイルを作れないらしい。
自分でNotepad を使って作らないと駄目とか。

もう少しマシな物を探してみます orz
747デフォルトの名無しさん:2006/05/14(日) 00:50:39
748デフォルトの名無しさん:2006/05/14(日) 01:05:54
>>739
> 2 D7フォルダ内の*.Indy*.*で検索してすべて削除
ここが問題なのかも。Idで始まるファイルも多いから。
Lib フォルダに古いdcuが残っているとマズイらしい。
749Delフサギコ ◆A6VzDeLphI :2006/05/14(日) 01:09:00
    ∧,,∧  キニシナイデ
    ミ,,゚Д゚彡 
  σ⊂  ∪ミ  
┳┳ (~,,(~,,,ミ@   

いや、むしろ、BDSの何かの関係かもしれないから
あんまりきにしないでください。

今、D6インストールしてみました。
イメージエディタで昔のやり方どおり設定して
新しいコンポーネント作成しても
やっぱり、なんかアイコン更新されない、、、、、

ユーザー数少ないと、
問題に出会う人も少なくなって、、、


と、、、、カキコしてから
BDS2006を再起動すればアイコンが更新されることがわかった
.......BDS........orz...........


750デフォルトの名無しさん:2006/05/14(日) 01:09:00
Indy のパッケージを自分でコンパイルして
dcu をLib フォルダにコピーすると良いらしい。
751デフォルトの名無しさん:2006/05/14(日) 01:13:32
>>749
> BDS2006を再起動すればアイコンが更新されることがわかった
> .......BDS........orz...........

それってD6でも同じじゃね?
752デフォルトの名無しさん:2006/05/14(日) 02:46:59
imageコンポーネントを複数横に並べて(左からimage1,image2・・)
いずれかがクリックされたときにどれがクリックされたか判定したいのですが、どのようにすればいいのでしょうか?
753デフォルトの名無しさん:2006/05/14(日) 03:59:31
人様のコードを眺めて勉強中ですが、ふに落ちない点があるので教えてください。
例えば

function hogehoge(strhoge: string): string;
var
P: PChar;
str: string;
begin
Result := '';        ←ここでResultって書いちゃってる。

str := str + hoge;
 ・
  ・
素人見解ですと、これって、Resultのとこで処理が終わって、このケースでは''(空白?)を返しちゃうんじゃないかって思うんですが、こういう関数をよく見ます。
関数の最初の方の行でResultに代入するワケを教えてくれませんでしょうか?
754デフォルトの名無しさん:2006/05/14(日) 04:12:11
エスパーな俺が推測するに
753はCやJavaを齧ったことがあり、
そしてResultとreturnを混同しているのであろう
755デフォルトの名無しさん:2006/05/14(日) 04:17:29
>>754
いや、学生でそんなキャリアないです!
平行してC++もやってるんですけど、returnとは違うんですか?
756デフォルトの名無しさん:2006/05/14(日) 04:25:41
難しいこと考えずに「関数の途中で無駄だったらexitって記述するだけで済むから」
って理由はダメなの?
もちろん「無駄なら空白返す」ってお約束前提で。
757デフォルトの名無しさん:2006/05/14(日) 04:29:37
>無駄なら空白返す

じゃ、「関数の処理ができなかったときに返すべき値を初めにいれておいた」ってことでいいんですか?
どのResultを返すかはコンパイラが判断してくれると?
758デフォルトの名無しさん:2006/05/14(日) 04:46:37
関数は全部走り終わって呼び出し元にResultを返す
Resultに代入するだけじゃ処理は終わらんよ
759デフォルトの名無しさん:2006/05/14(日) 06:30:17
>関数は全部走り終わって

なーる。そうだったんですか。
returnとは違うわけだ。

ありがとうございます。
760デフォルトの名無しさん:2006/05/14(日) 07:44:17
Delphi起動時にForm1とUnit1を
起動させないようにするにはどうすればいいの?
761デフォルトの名無しさん:2006/05/14(日) 07:48:08
なにをしたいの?
762デフォルトの名無しさん:2006/05/14(日) 07:56:42
プロジェクトから削除
763デフォルトの名無しさん:2006/05/14(日) 08:11:03
/np
764デフォルトの名無しさん:2006/05/14(日) 08:19:23
>>762
フォームをプロジェクトから削除したい
つ プロジェクト -> プロジェクトから削除

メインフォームを変えたい
つ プロジェクトオプション -> フォームで変更

起動時に出てくるのがうざい
つ ツール -> オプション -> どこか。デスクトップの保存をOFF
765デフォルトの名無しさん:2006/05/14(日) 09:09:03
オレはランチャーの引数に/npを設定して起動してる
766デフォルトの名無しさん:2006/05/14(日) 10:10:42
ランチャー(誤)
ショートカット(正)
767デフォルトの名無しさん:2006/05/14(日) 10:22:17
>>748>>750
1 Delphiを削除
2 Indyのソースのみ退避
3 Delphiフォルダを削除&SYSTEM32フォルダに残ってたIndyのファイルを削除
4 DelphiをIndy抜きで再インストール。LibパスにIndyソースフォルダを追加
5 Indyのソースを一つのフォルダにまとめてIndyProtocols40.bplを開いてコンパイル

[エラー] IdStreamRandomAccess.pas(23): 未定義の識別子 : 'TIdStream'

[エラー] IdStreamRandomAccess.pas(25): forward または external 宣言された 'TIdStreamRandomAccess.GetPosition' が見つかりません

[エラー] IdStreamRandomAccess.pas(26): forward または external 宣言された 'TIdStreamRandomAccess.GetSize' が見つかりません

[エラー] IdStreamRandomAccess.pas(27): forward または external 宣言された 'TIdStreamRandomAccess.SetSize' が見つかりません

[エラー] IdStreamRandomAccess.pas(28): forward または external 宣言された 'TIdStreamRandomAccess.SetPosition' が見つかりません

[エラー] IdStreamRandomAccess.pas(32): forward または external 宣言された 'TIdStreamRandomAccess.Skip' が見つかりません

[致命的エラー] IndySystem40.dpk(48): 'IdStreamRandomAccess.pas' ユニットはコンパイルできませんでした


となってしまいます。

もちろんIdStream.pasはソースフォルダにありますし、エラーの出たファイルのusesにはIdstreamがあります。
768デフォルトの名無しさん:2006/05/14(日) 10:59:15
delphi6 Personalで勉強を始めましたのですが、
デバッガについてですけどVBのローカルウインド
に相当するものはありますか?
ブレークポイントを設定して変数に
どんな値が入ってるか確認したいのですが。
769デフォルトの名無しさん:2006/05/14(日) 11:02:32
[V|D|L]
770デフォルトの名無しさん:2006/05/14(日) 11:04:36
>>768
たぶん
表示 -> デバッグ -> ローカル変数
771デフォルトの名無しさん:2006/05/14(日) 11:11:18
>>769
Lがありませんが、
カスタムインストールか何かをするとあわられるのですか?
772デフォルトの名無しさん:2006/05/14(日) 11:22:06
> IndyProtocols40.bpl
Delphi 4用なんてある?
773デフォルトの名無しさん:2006/05/14(日) 11:23:48
>>771
じゃあwatchするかマウスカーソルエディタ上の変数に合わせてインスペクトするしかない
Del6Perの機能制限は結構極悪なんだよな。
774デフォルトの名無しさん:2006/05/14(日) 11:33:49
>>773
そうですか有難うございmす。
ということはper盤はVer7とかでもやはり同じですか?
775デフォルトの名無しさん:2006/05/14(日) 13:50:22
>>772
レジストリの動的パッケージに追加されているとか。
776デフォルトの名無しさん:2006/05/14(日) 16:14:18
今、コンソールアプリケーションでプログラミングをしているんですが
var a,
b,
c:integer;
begin
{ TODO -oUser -cConsole Main : この下にコードを記述してください }
c:=a*b;
write('1000になるように2つの数字をかけてください。');
writeln('数字を入力してください');
readln(a);
writeln('aに値が代入されました');
writeln('次にその数字にかける数字を入力してください');
readln(b);
writeln('bに値が代入されました');
writeln('計算の結果',c,'の値が出ました');
case c of
1000..1000:write('正解です');
1..999 :write('数字が足りません');
1001..10000:write('数字が大きいです');
end.
実行すると、case c ofのところが表示できずにプログラムが終了します
どこが間違っているか指摘してくれませんか?
お願いします
777デフォルトの名無しさん:2006/05/14(日) 16:19:15
778デフォルトの名無しさん:2006/05/14(日) 16:37:53
>>777
writeln('計算の結果',c,'の値が出ました');
の後にreadln;を挿入したところ
case c of の前までは表示されるんですが、その後が表示せずに
終わってしまいます。
また一番最後にreadln;を追加してみたところ
[エラー] Project2.dpr(30): 'END' が必要な場所に ファイルの末尾 があります
になってしまいます。
何がおかしいかわからないです
779デフォルトの名無しさん:2006/05/14(日) 16:38:26
>>777
お礼忘れていました。
レスありがとうございます。
780デフォルトの名無しさん:2006/05/14(日) 16:52:10
>>776
コンソールアプリで練習する場合も
普通にGUIアプリとして作って
ボタンを一つおいて、ダブルクリック
その最初に AllocConsole; を入れておけば
そのコードを実行する事が出来るよ
781デフォルトの名無しさん:2006/05/14(日) 16:58:32
>>778
case c of
1000..1000:write('正解です');
1..999 :write('数字が足りません');
1001..10000:write('数字が大きいです');
end;
readln;
end.
782デフォルトの名無しさん:2006/05/14(日) 17:06:08
>>780
レスありがとうございます。
でもはじめたばかりの私には少し難しくてわかりません。
すいません。
>>781
ありがとうございます。
実行したところ、できましたが
適当な数字を入力してやってみたところ何故か
0になってしまいます。
c:=a*b; のところを+やーに変えたところ
すごい数字になってしまいます。
重ね重ねすみませんが、何がいけないのでしょうか?
783デフォルトの名無しさん:2006/05/14(日) 17:08:24
>>782
c:=a*b;
の位置を変えたところ、できました。
レスしてくださった皆さんありがとうございます。
784デフォルトの名無しさん:2006/05/14(日) 17:20:29
>>782
一番最初は Demoフォルダの EathPngあたりを開いて、コードを見ながら
速すぎる動きを遅くする改造からやるといいよ
785デフォルトの名無しさん:2006/05/14(日) 17:57:02
>>784
これはゲームか何かですか?
すごく早い動きでとてもゲームといえるレベルではないですね。
というか私自身、コンソールアプリケーションでプログラミング
始めたばかりでまったく無知なんですよね。
どこをいじっていいかというのがまったくわからない状況です。

pascalの予約語も6つぐらいしか使えないのでorz

786デフォルトの名無しさん:2006/05/14(日) 17:58:22
>>776
if DebugHook <> 0 then Readln;
787デフォルトの名無しさん:2006/05/14(日) 19:08:02
TStringListを継承した自前クラスを作ろうかとおもってるんですが

TMyStringList = class(TStringList)
   ・
   ・
public
 constructor Create;
 destructor Destroy; override;
  ・
  ・
このconstructorには「override;」をつけなくても大丈夫なんでしょうか?

788デフォルトの名無しさん:2006/05/14(日) 19:17:51
overrideする必要があるのはメソッド同様、親constructorにvirtual, overrideが付いている場合のみ。
というわけでTStringList継承クラスにつける必要はない。
もし必要あるけどつけ忘れた場合コンパイラが警告してくれるから警告チェックしておけばいい。
789デフォルトの名無しさん:2006/05/14(日) 19:38:28
>>788
ありがとうございます。そうします。
つけるのはdestructorだけでいいんですね?
790デフォルトの名無しさん:2006/05/14(日) 21:34:56
>>789
少しはヘルプ読め

下位オブジェクトのクラスで Destroy メソッドを宣言するときには必ず override 指令を追加し,
継承された Destroy メソッドをオーバーライドするメソッドの最後の文として呼び出します。
Destroy メソッドは仮想メソッドなので,継承された動作が正しく実行されるようにするにはそれをオーバーライドします。
791デフォルトの名無しさん:2006/05/14(日) 22:04:28
画像のファイル形式をbmpからwmfに
したいのですがどうすればいいでしょうか?
792デフォルトの名無しさん:2006/05/14(日) 22:27:07
拾ってきたコード
http://groups.google.co.jp/group/borland.public.delphi.objectpascal/msg/c7f9a562e0c0e5a4?hl=ja&

procedure TFM_Main.SaveWMFasBMP;
var
MyBmp : TBitmap;
MyEmf : TMetaFile;

begin

MyEmf := TMetaFile.Create;
MyBmp := TBitmap.Create;

MyEmf.LoadFromFile ('metafile.wmf');
MyBmp.Width := 640;
MyBmp.Height := 480;

// This is the line you're looking for
MyBmp.Canvas.StretchDraw (Rect (0, 0, 640, 480), MyEmf);

MyBmp.SaveToFile ('bmpfile.bmp');
MyBmp.Free;
MyEmf.Free;

end;
793デフォルトの名無しさん:2006/05/14(日) 22:32:24
逆だったか。
http://groups.google.co.jp/group/borland.public.delphi.winapi/msg/f5b40c73fb550619?hl=ja&

var
bmp: TBitmap;
wmf: TMetaFile;
wmfc: TMetaFileCanvas;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('c:\copy\kingsx_small.bmp'); // Any test image

wmf := TMetafile.Create;
wmf.MMWidth := 5000;
wmf.MMHeight := 5000;
wmf.Width := bmp.Width;
wmf.Height := bmp.Height;
wmfc := TMetaFileCanvas.Create(wmf, 0);
wmfc.StretchDraw(Rect(0, 0, wmf.Width, wmf.Height), bmp);
wmfc.Free;
bmp.Free;
wmf.SaveToFile('c:\copy\small.wmf');
wmf.Free;
end;
794デフォルトの名無しさん:2006/05/14(日) 22:51:14
>>793
変換できました。
感謝!
795デフォルトの名無しさん:2006/05/15(月) 03:38:48
BVから乗り換えた者です。少し質問させてください。

TArrayRec = record
 num: array[0..2, 0..6]of integer;
end;

みたいなレコード型があるとして、
var
FArrayRec: TArrayRec;

で、
FArraRec.Num := (
(1, 2, 3, 4, 5, 6, 7),
(1, 2, 3, 4, 5, 6, 7),
(1, 2, 3, 4, 5, 6, 7));

としても代入できません。(「.が必要な個所に)があります」というようなエラー)
ループで1個ずつなら入るはずですが、一発で代入することは無理なんでしょうか?
796デフォルトの名無しさん:2006/05/15(月) 04:36:51
無理
797795:2006/05/15(月) 04:48:58
いろいろ調べてみたんですが、無理みたいですね。
配列の宣言時に入れてしまう方法はあるみたいですが。

ありがとうございます。
798デフォルトの名無しさん:2006/05/15(月) 05:59:09
constとかで事前に定義しておけば代入出来るけど
799795:2006/05/15(月) 06:06:04
みたいっすね。ネットでconstに二次元配列を宣言してあるのを見ました。
functionの戻り値で二次元配列を返すクラスを作成しとこうと思ってたんですよ。

ちょっとやり方工夫しなければならないみたいです。
800デフォルトの名無しさん:2006/05/15(月) 07:21:16
デlpヒ6のパーソナルを使い出して気になったのだが、
for i:=1 to 10 do のiは、
デバグ時なんで10からカウントダウンしていくの?
801デフォルトの名無しさん:2006/05/15(月) 07:34:36
>>800
最適化してるからじゃないですか? iの順番に関係ないようなコードを使ってるんでしょ?
802デフォルトの名無しさん:2006/05/15(月) 09:22:34
>>799
setarray(arr: array of integer);
setarray([1,2,3]);
というのは可能だから工夫の足しになるかも
803デフォルトの名無しさん:2006/05/15(月) 14:50:50
Delphiを使ったグラフィックスを学べるサイトがあったら教えてください。
804デフォルトの名無しさん:2006/05/15(月) 14:53:59
>>803
ないよ。
805デフォルトの名無しさん:2006/05/15(月) 14:54:52
中村の里かな
初心者にはやや敷居が高いけど
806デフォルトの名無しさん:2006/05/15(月) 14:57:28
pdf版買え
807デフォルトの名無しさん:2006/05/15(月) 15:36:20
>>803
C#とDelphi の両方を学べてお得。
http://junki.main.jp/kako01.html
808デフォルトの名無しさん:2006/05/15(月) 18:05:22
>>800
iを使用していないときは、最適化により逆から数える
他のコンパイラでもこういう最適化するのははある。
809デフォルトの名無しさん:2006/05/15(月) 18:08:45
ClientSocketとServerSocketのことだけど、
非同期ソケットエラーは、try except構文で取得できないんですかね?
exceptのエラーメッセージじゃなくて、Windowsのメッセージが出てくるので
困ってます。

あと、同じprocedure内で一気にOpenとSendtextを使うと
接続はできますが送信した文字列を認識しません。
接続した後にSleepを入れてもだめなのに、
Buttonとかで後から送信すると認識します。
(でもそのprocedureからButton1.click;としてもうまくいきません)
何か回避方法はないでしょうか?
よろしくお願いします。
810デフォルトの名無しさん:2006/05/15(月) 20:19:48
イベントドリブンの考え方を正面から否定されても困るんですが
811デフォルトの名無しさん:2006/05/15(月) 20:35:55
>>807
すげぇ。ありがとう。
812デフォルトの名無しさん:2006/05/15(月) 21:12:34
>>809
通信が確立してからじゃないとだめだったと思うので
Connected以降でないと送信出来なかった気がする
813デフォルトの名無しさん:2006/05/16(火) 01:20:32
>>752お願いします
814デフォルトの名無しさん:2006/05/16(火) 01:29:51
>>752
OnClickイベントを共通にして、
Tagで判別するのはどうか?
815デフォルトの名無しさん:2006/05/16(火) 01:29:54
自作のクラスの中でMyRect: TRect;と書き、uses節にWindowsを追加し、コードのなかでMyRect:=Rect(10,10,100,100);としても
(未定義の識別子'Rect'と出て、コンパイルできません><
げんいんとしては何がかんがえられますか?
816デフォルトの名無しさん:2006/05/16(火) 01:31:12
>>815
RectはGraphicsじゃない?
817デフォルトの名無しさん:2006/05/16(火) 01:46:29
>>816
ヘルプを見たらWindowsでした。ちなみにGraphicsはすでにusesに追加してました><
どうしてコンパイル通らないのかわかりません。
818デフォルトの名無しさん:2006/05/16(火) 01:56:11
function Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;はClassesで宣言されているから。
819デフォルトの名無しさん:2006/05/16(火) 01:58:21
>>818
サンクスです!(^^
Classesを追加したら通りました!
820816:2006/05/16(火) 03:11:32
Classesが勘違いスマソ
821デフォルトの名無しさん:2006/05/16(火) 04:08:08
Double 型が取り得るすべての値(±Infinity, NaN, 0.0 を含む)の範囲から乱数を得たいのですが、
どのようにしたらようでしょうか?
822デフォルトの名無しさん:2006/05/16(火) 06:59:29
>>821 64bitの乱数ビット列を作ってそれをdoubleとして読みたいという事?
823デフォルトの名無しさん:2006/05/16(火) 07:09:18
>>812
てことはOnconnectに
処理を書いていけばおk?
connected以降って何?
824デフォルトの名無しさん:2006/05/16(火) 07:18:59
デルポイ
825デフォルトの名無しさん:2006/05/16(火) 09:35:46
>>823
そんな単純じゃないと思われ・・・
あるきっかけ(ボタンを押す?)から接続、送信、切断をしたいんでしょ?
だったら、接続完了後、送信(完了後?)、切断って流れになるわけで
まぁ、きっかけが一個しかないのならconnectedに処理を書けばうまく行くかも
826デフォルトの名無しさん:2006/05/16(火) 09:39:42
>>825
すまん、ClientSocketとServerSocketだった。connected -> Onconnect?で
827デフォルトの名無しさん:2006/05/16(火) 14:53:10
( ^ω^)・・・
828デフォルトの名無しさん:2006/05/16(火) 16:47:26
>>826
ありがとうございます。やってみます
829デフォルトの名無しさん:2006/05/16(火) 17:36:02
830デフォルトの名無しさん:2006/05/16(火) 17:49:01
Case hoge of
1:begin
end;
のような条件分岐を文字列でやる方法は無いでしょうか?
hoge='abc'などです。
今はIF文で大量に分岐させてるのでソースがとても醜く、困ってます。
831デフォルトの名無しさん:2006/05/16(火) 17:54:19
hash値に変換とかアホなことやらない限りはない。

あとはRegisterHandler('foo', @HandleFoo);
とか個別に処理関数を登録とか。
832デフォルトの名無しさん:2006/05/16(火) 18:19:17
TStringList と IndexOf() メソッドをつかえば簡単にできるでしょ。
833デフォルトの名無しさん:2006/05/16(火) 22:59:31
>>814
うまくいきました、ありがとうございました
834デフォルトの名無しさん:2006/05/16(火) 23:01:33
ポインタの指すアドレスの値を16進数で表示したいのですが、
文字列への変換がわかりません。

procedure TMainForm.ABC(Sender: TObject)
Label1.Caption:=XXX(Sender);

XXXのところが変換する関数になると思うのですが、
見つけられませんでした。すみませんがお助けください。
835デフォルトの名無しさん:2006/05/16(火) 23:04:22
Label1.Caption:=IntToHex(DWORD(Sender),8);
836デフォルトの名無しさん:2006/05/16(火) 23:10:57
だいたい文字列の比較にはいろんな方法がある。
大文字小文字を区別するかしないかとかね。
837デフォルトの名無しさん:2006/05/16(火) 23:34:57
>>835
ありがとうございます。DWORDだとなぜかうまくいかなかったので
longwordとしたらうまくいきました。
838デフォルトの名無しさん:2006/05/17(水) 00:55:18
自作したAのアプリで処理がファイルコピーなどの処理が終わったときに、
Bと言う別の自作アプリに処理が終わった信号を方法って無いでしょうか?
Handleを使えばできそうなのですが良く分からないもので教えてください。
839デフォルトの名無しさん:2006/05/17(水) 00:57:30
IPC
840デフォルトの名無しさん:2006/05/17(水) 04:45:24
>>838
PostMessage
841デフォルトの名無しさん:2006/05/17(水) 05:34:41
Delphi2006でデータベースをやろうとしていますが、
お勧めの解説サイトや本はないでしょうか。
842デフォルトの名無しさん:2006/05/17(水) 06:39:24
Delphiって本ないんだよな…
843デフォルトの名無しさん:2006/05/17(水) 09:19:38
ファイル読み書きで、
BlockWriteで書くやり方と、
ファイルストリームによるやり方があるけど、
これらの使い分けがよくわかりません。
844デフォルトの名無しさん:2006/05/17(水) 09:26:41
>>843
TStream系使っとけばよい。
845デフォルトの名無しさん:2006/05/17(水) 18:06:48
GoogleがDelphiを引き取ってくれる可能性はありますか?
846デフォルトの名無しさん:2006/05/17(水) 18:14:30
すれ違い
847デフォルトの名無しさん:2006/05/17(水) 18:20:02
>>844
はいわかいりました。
でもその理由はなんでしょう。
848デフォルトの名無しさん:2006/05/17(水) 18:23:36
古ーい Pascal からの I/O と、OOP な TStream 派生クラスで、両方でできることなら
TStream で済ますのは正解


ってことだ、と思う。
849デフォルトの名無しさん:2006/05/17(水) 18:38:46
>>848
そうですか。ありごとうごせいます。
オブジェクト指向になれるためにもクラスをつかうようにします。
850デフォルトの名無しさん:2006/05/17(水) 21:37:14
Cloneするメソッドを作りたいのですが、ClassTypeからCreateしちゃって大丈夫なんでしょうか・・・。
ちょっと自信がありません。

procedure THoge.Clone: THoge;
begin
 Result := THoge(ClassType.Create);
 Result.Assign(Self);
end;
851850:2006/05/17(水) 21:45:48
実験しましたが、THogeで、Createを再定義していると駄目ですね。
852850:2006/05/17(水) 21:46:21
駄目というか正確には、再定義したCreateが呼ばれないです。
853850:2006/05/17(水) 21:47:54
いけました!

 THogeClass = class of THoge;

としておいて、

function THoge.Clone: THoge;
begin
 Result := THogeClass(ClassType).Create
end;

とすれば、再定義したCreateも呼ばれますね
854デフォルトの名無しさん:2006/05/17(水) 21:50:53
>>839
IPCって何ですか?

>>841
Delphi DB&Webプログラミング
おいらはこれを使いました。

でも内容はなんとも言いづらいから立ち読みの上ドゾー
855デフォルトの名無しさん:2006/05/17(水) 21:57:34
最近VB荒らしが来なくて寂しいね
856デフォルトの名無しさん:2006/05/17(水) 22:22:25
VB厨からも見捨てられたとか・・
857デフォルトの名無しさん:2006/05/17(水) 22:37:52
>>854
>Delphi DB&Webプログラミング
どもー。参考にさせてもらいますー
858デフォルトの名無しさん:2006/05/17(水) 23:20:47
>>850
Result := THoge.Create;
じゃなんで駄目なの?
859デフォルトの名無しさん:2006/05/17(水) 23:56:16
>>858
あ、いや、サブクラスでもCloneの再定義なしに使いたいと思いまして・・・。
そういうことも書いておくべきでした orz
860デフォルトの名無しさん:2006/05/18(木) 02:39:27
BDSのドッキングウインドウってどうやって作ってるんだろ・・・
同じウインドウにドッキングするとタブ化しますよね?
これを実現するコンポーネントないすかね?

ToolBar2000+TBXがかなりいい感じなんですが、
タブ化できないみたいです・・・

標準のTDockTabSetはなんか違うみたいですし・・・
861デフォルトの名無しさん:2006/05/18(木) 02:57:04
あと、BDSのIDEのドッキングされているウインドウって、虫ピンアイコンとかありますよね。
あれも標準だとできないですよね。
コンポーネントないんだろうか・・・
862デフォルトの名無しさん:2006/05/18(木) 07:13:36
昔から某はIDE作ってる部品は公開してないよな・・・
863デフォルトの名無しさん:2006/05/18(木) 07:35:54
TDockTabSet でしょ。
虫ピンアイコンも出るよ。
http://www.ipentec.com/delphi/delphi2005/docktabset/index.html
864デフォルトの名無しさん:2006/05/18(木) 09:26:47
>>863
あ、ほんとだ出るっぽいですね。あとは、いかにIDEに近づけるか・・・
BDNにも記事ありました。
http://bdn.borland.com/article/0,1410,33446,00.html

同じウインドウだけタブでまとめるのってどうやるのがいいんだろ・・・

>>862
そうですねー、それが残念
865デフォルトの名無しさん:2006/05/18(木) 16:40:55
ユニットテストに興味を持って、どういうものか検索してみた。
ttp://www.hexe19.net/dunit/
で、読んだ限りassertと同じ事をわざわざやってるように見えるんだが。
>つづく…。
の後に、assertでは出来ないすばらしいデバッグ技法が書かれる予定だったはず。
dunitはわけもわからず使いたいので、assertでは不十分な事例とか教えてくれ。
866デフォルトの名無しさん:2006/05/18(木) 16:48:40
ちょっと前にPostmessageを教えてもらったものですけど、これの
BOOL PostMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

UINTの部分って数値とか文字列とか何でもいいの?
色々ぐぐってもWM_Closeとかの決まったものばかりなんだけど。

あと受け取りかたはどうすればいいのかもすみませんが、教えてください。
867デフォルトの名無しさん:2006/05/18(木) 16:55:53
>>864
記事試してみましたら、TDockTabSetって、虫ピン用のコンポーネントなんですね。
868デフォルトの名無しさん:2006/05/18(木) 16:57:16
UINTに入るのは符号なしの整数のみです。
でも、数字のままではわかりにくいので、
WM_CLOSEなどと数字に名前を付けています。
これが定数というものです。
869デフォルトの名無しさん:2006/05/18(木) 17:54:13
>>866
VCLのソースがあるならMessage.pasを参照するべき
WM_CLOSE = $0010;
と定義されているから
870デフォルトの名無しさん:2006/05/18(木) 18:12:27
で、受け取り方だけど
受け取りたい方のフォームにpublicに
procedure rcvMyMsg(var Message: TMessage);message WM_USER + 1と定義

実装部はこんな感じ
procedure TForm1.ReceiveMyMessage(var Message: TMessage);
begin
 ShowMessage('受信したのさ')
end;

送る方はFindWindowで送り先のフォームのハンドルを取得してメッセージ送信
こんな感じ
procedure TForm1.Button1Click(Sender: TObject);
var
 hndl: THandle;
begin
 hndl := FindWindow(nil, 'rcv-test');
 PostMessage(hndl, WM_USER+1, 0, 0);
end;
871デフォルトの名無しさん:2006/05/18(木) 21:12:35
.identcacheって必要なファイルなんですかね?
バージョン管理ソフトの無視リストに加えようと思ってるんですが・・・
872デフォルトの名無しさん:2006/05/18(木) 22:02:10
>>870
ありがとうございますた。
873Delフサギコ ◆A6VzDeLphI :2006/05/19(金) 00:08:59
     ∧,,∧
     ミ,,゚Д゚彡  
     ミ つ且~~
     ミ,,__ ヾ
 ⊂二二二UU二二⊃

DUnitについてはよーわからんのだが

Delphi界は世界が狭すぎてエクストリームプログラミング人口も
激少なので、情報もないので、自信もないが

ユニットテストってのはたぶん

if A = B then
ShowMessage=正しいよ
else
ShowMessage=まちがっとるよ;

の、程度の応用だと思われ。

で、その応用がエクストリームなプログラミングなので
爆発的にプログラムコードの品質が高まるという。

世にも素敵な方法論だったりする。




874デフォルトの名無しさん:2006/05/19(金) 01:15:12
Delphiで、ユニットテストしてる俺がきましたよ。
DUnitじゃないが自作のGUIのユニットテストランナー使ってるけど。

ユニットテストはあくまでテストの手法なので、
assertでできてるんならそれでも別にいいよ。
結局、内部ではTestメソッドから発生させた、例外捕まえてるだけだし。
でも、既存のDUnitとかのフレームワークにあわせた方がやりやすいってだけのことよ。

グイーンと伸びるバーとか見てハァハァできるようになったりするとしめたもの。
あとは、リファクタリングもあわせてできると生産性がアップする。
ユニットテストは慣れると、いいよー。
ちょっとの機能追加でも、バグでても一発でわかるし。

俺は、いまんところ、GUIソフトのユニットテストがやり方わからなくてこまってる。
いい方法ないかね。
875デフォルトの名無しさん:2006/05/19(金) 01:18:23
あ、あとコツだけど、わざとエラーを出させて例外が出なかったらテスト失敗!
みたいにエラー処理がうまくいっているかもユニットテストでチェックすると、
よりアプリが強固になる。
ただ、けっこう面倒なんだよね。
たいてい、本体より、テストをかいたunitの方がサイズがでかくなる傾向にある。
876デフォルトの名無しさん:2006/05/19(金) 08:28:46
> たいてい、本体より、テストをかいたunitの方がサイズがでかくなる傾向にある。

テストユニットのためのテストユニットとか、、無限連鎖しそうだな
877デフォルトの名無しさん:2006/05/19(金) 11:22:30
DelphiでVBのIIf関数や、Cの?演算子のような

if A then begin
 Hoge := 'あいうえお';
end else begin
 Hoge := 'アイウエオ'
end;

上記のコードを1行でできるようになる関数か演算子ってありませんか?
878デフォルトの名無しさん:2006/05/19(金) 11:32:21
IfThen
879デフォルトの名無しさん:2006/05/19(金) 13:12:50
>>878
こんな関数があったのか。
これで無駄にコードの行が増えなくてすみます。ありがとう!
880デフォルトの名無しさん:2006/05/19(金) 13:54:55
var
 a,b: Integer;
begin
 a := 10;
 b := 20;
 if a = b then ShowMessage('a=b') else ShowMessage('a<>b');
end;

一行で済むんだけど。
881デフォルトの名無しさん:2006/05/19(金) 13:59:38
>>879
その関数のソースを見てみると・・・
882デフォルトの名無しさん:2006/05/19(金) 14:05:57
マクロみたいなもん。便利とおもうならいいじゃないの
883デフォルトの名無しさん:2006/05/19(金) 16:17:24
注意点としては、C言語の?演算子と違って、両方とも評価されてから、IfThenに渡されることな。


IfThen(True, A(), B());

としたら、A()とB()が両方とも実行される。
副作用をともなう関数の場合、注意する必要あり。
まあ、見りゃわかるが。
884デフォルトの名無しさん:2006/05/19(金) 16:18:42
>>860
JVCLのJvDockingっがそれっぽいかも。
ドッキングしてタブ化もできるし、虫ピンもついてるみたい。
885デフォルトの名無しさん:2006/05/19(金) 16:18:46
>>881
そういうふうにソース追いかける方法を教えてください
886デフォルトの名無しさん:2006/05/19(金) 16:21:39
ソースついてるバージョンかってGrepするか定義の検索
887デフォルトの名無しさん:2006/05/19(金) 16:24:33
( д ) ゚ ゚
perじゃ駄目っすね? 
888デフォルトの名無しさん:2006/05/19(金) 16:44:03
ifthenで検索したら…
★クライアントサイド最強の Delphi に物申す★
http://pc.2ch.net/tech/kako/1001/10014/1001442200.html
889デフォルトの名無しさん:2006/05/19(金) 17:46:11
IfThen って書いて、Ctrl押しながらクリックしたらソース出るけどなあ。
890デフォルトの名無しさん:2006/05/19(金) 18:11:35
>>889
?
891デフォルトの名無しさん:2006/05/19(金) 18:42:32
>>888

はー、5年前もほとんど同じ議論の山。

186 名前: デフォルトの名無しさん 投稿日: 01/10/11 23:25

そこまでしてDelphiにこだわるのは
はっきり言って怠慢以外の何ものでもない。
C#が良いならC#に移ればよい。
今後Delphiに出来るのはC#の後追いだけ。


これはそうなったな・・・・
892デフォルトの名無しさん:2006/05/19(金) 18:47:05
Cと比べる事自体がナンセンス
893デフォルトの名無しさん:2006/05/19(金) 19:05:41
>>887

入信したいならPro版くらい買え。
いろいろできるぞ。
894デフォルトの名無しさん:2006/05/19(金) 19:17:12
>>888
そいつら余程暇なんだろうな。
自分が糞だと思ったら使わなければいいだけの話なのに。
余程鬱憤が溜まってるか暇か或いはその両方なんだろうな。
895デフォルトの名無しさん:2006/05/19(金) 19:17:56
他所でやれ
896894:2006/05/19(金) 19:18:23
勿論情報提供し合うのは良いけどね。
ただ批判するだけのクズに言ってる。
897デフォルトの名無しさん:2006/05/19(金) 19:31:33
他所でやれ
898デフォルトの名無しさん:2006/05/19(金) 20:09:21
いつのスレにレスしてんだよw
899デフォルトの名無しさん:2006/05/19(金) 20:34:34
自前のコントロールをホイール対応にしたいのですが、どうしたらよいでしょうか・・・
900デフォルトの名無しさん:2006/05/19(金) 20:40:06
DoMouseWheelDownと、DoMouseWheelUpのoverrideでいけました。サンクス。
901デフォルトの名無しさん:2006/05/19(金) 20:41:14
5年前にレスに興奮してる人がいるようだな・・・
902デフォルトの名無しさん:2006/05/19(金) 21:59:39
Delphiなんかやってる場合じゃないぞ!VBの時代が来たようだ。
http://www.atmarkit.co.jp/fdotnet/vblab/vbinterview_01/vbinterview_01_01.html
903デフォルトの名無しさん:2006/05/19(金) 22:16:02
>>901
今でも批判ばっかする奴はいるけどな
904デフォルトの名無しさん:2006/05/19(金) 22:35:09
配列が等しいかどうかチェックするのに = は使えないみたいですが、
どうしたら良いのでしょうか?
for で各要素を比較したりするのでしょうか?
905デフォルトの名無しさん:2006/05/19(金) 23:08:24
>>904
もし、配列の要素が基本的な型もしくは、packedな構造体なら、CompareMemでいけると思う。
普通の構造体なら、forでいちいち比較かな
906デフォルトの名無しさん:2006/05/19(金) 23:47:43
packedって何に使うの?
ヘルプ読むと「データを圧縮して格納」としか書いてなくて意味わからんちん
圧縮すると速度が低下するらしいけど、そのかわりに何か得るものがあるんだろうか
907デフォルトの名無しさん:2006/05/19(金) 23:54:45
XP+Delphi6を使ってます。
今、Form1とForm2を表示させて(Form2はForm1からForm2.Show;で表示)Form2のみ

private
procedure CreateParams(var Params: TCreateParams);override;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent := Application.MainForm.Handle;
end;

にて最前面表示にする事は出来たのですが、
Form2の背後に他の最前面表示のソフト「aaa」がある場合の時に
Form1を選択しアクティブにした場合Form2がこの「aaa」の後ろに隠れてしまいます。
これを回避する術はありますでしょうか?宜しくお願いします。
908907:2006/05/20(土) 00:00:45
すみません、Form2を最前面表示にする為に以下のコードも使ってます。
procedure TForm2.FormCreate(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
end;
909デフォルトの名無しさん:2006/05/20(土) 00:15:49
>>906
record A:Byte; B:Integer; end;みたいな場合、普通だとAとBの間に3バイトの空きが入る。32ビットCPUでは4バイトごとに区切って扱う方が高速だから。勿論Aも4バイトの変数だと空きは入らない。
これがpackedだとどんな風にデータを並べても空きが入らない。バイナリファイルのフォーマットに従って要素を並べて一気読みとかできるし、空きのゴミデータを気にしなくていいからCompareMemで比較もできる。
910デフォルトの名無しさん:2006/05/20(土) 00:19:29
>>909
すげえ
ものすごくよくわかった
thx
911デフォルトの名無しさん:2006/05/20(土) 00:20:07
>960
たとえば15Byte x 40要素の配列を定義したとすると、
非packedな方は8バイト境界に揃えられるため、実際のメモリ消費量は16x40=640Byteになるが、
packedだと600Byteになる。
912904:2006/05/20(土) 01:00:49
>>905
ありがとうございました。

>>906-
ついでに、packed も勉強になりました。どうもです。
913Delフサギコ ◆A6VzDeLphI :2006/05/20(土) 01:51:20
           _________
   ∧,,∧∩  / 
  ミ,,゚Д゚彡 < こんばわ。
   ミつ旦.ミ   \ 
 @ミ   ミ     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪  >>874、いいねー
ユニットテストしている漏まえがきてうれしいです。
> ユニットテストはあくまでテストの手法なので、
> assertでできてるんならそれでも別にいいよ。
そっそっそ。

いやあ、ホント楽しくなくて平行線をたどるだけの議論を
どうして繰り返すかしら、、、、、みなさん。

C#でもDelでもいいからファーストテストや
ユニットテストを学べっつーの。

そrで、漏れにDUnitの使い方を教えるために
猫でもわかるような解説ページ作ってください。>>誰か。

漏れはすでにリファクタリングできない開発
(よく人のコードを引き継ぐとあるよね〜)
は、できない体になってしもた。

> 俺は、いまんところ、GUIソフトのユニットテストがやり方わからなくてこまってる。
> いい方法ないかね。
まあ、それは永遠に近いテーマだが、library部分のテストの場合
サンプルプロジェクトを作っておくってのは大事よね。やっぱり。

>>876、無限連鎖はしないよ。
914デフォルトの名無しさん:2006/05/20(土) 08:40:47
くだすれでユニットテストがどうのって
915デフォルトの名無しさん:2006/05/20(土) 09:47:27
>>913
リファクタリングできるバージョンのDelphiだというなら、
ヘルプをDUnitで検索してみてね。
>>865よりもわかりやすい。

俺の理解した範囲では、プロジェクトグループにテストプロジェクトを追加し、
本体プロジェクトで使用するユニットをテストプロジェクトでもusesすることで、
関数に外部から値を送って戻り値をassertできるみたいな話だな。
実際はassertじゃなくて、うまくいったかどうかをGUIで表示するんだがね。
たしかに、本体にやたらassertを書かなくても良いし、
リリース版だけassert無効とかしなくて良いので、便利といえば便利かも。
916デフォルトの名無しさん:2006/05/20(土) 10:11:27
>>915
日本語でおk


なんか英語よりややこしいね
プログラム系の会話って
917デフォルトの名無しさん:2006/05/20(土) 10:32:45
でも予約語はアルファベットで書かないとよけい分からんべよ
918デフォルトの名無しさん:2006/05/20(土) 10:37:59
英語で書かれたXPの話だとさらにわからんぞ。
919デフォルトの名無しさん:2006/05/20(土) 10:39:49
つまりはその意味に沿った日本語がないっちゅうことなのでしょうか
920デフォルトの名無しさん:2006/05/20(土) 14:11:56
921デフォルトの名無しさん:2006/05/20(土) 14:16:04
ハッシュ(連想配列)を使うには、どうしたら良いのでしょうか
922デフォルトの名無しさん:2006/05/20(土) 14:22:52
コードを書く
923デフォルトの名無しさん:2006/05/20(土) 15:51:29
真面目に質問してるんですけれど……
924デフォルトの名無しさん:2006/05/20(土) 16:08:06
Delphi 連想配列 でググルと真面目に質問するより早いと思うけど・・・
925デフォルトの名無しさん:2006/05/20(土) 16:43:39
TStringListのValues使うんだっけ?
文字列以外も代入したくなって
結局俺は自作してしまった・・・。
926デフォルトの名無しさん:2006/05/20(土) 16:50:07
THashedStringList というのもあるけど、自作が一番使い易いのも確かだね
927デフォルトの名無しさん:2006/05/20(土) 18:17:56
record配列にしておけばいいやん・・・
928デフォルトの名無しさん:2006/05/20(土) 18:24:38
>>927
kwsk
929デフォルトの名無しさん:2006/05/20(土) 18:32:12
>>921
JEDIのJCLにHashMapがある
930デフォルトの名無しさん:2006/05/20(土) 19:06:20
>>929
それを先に知っていれば、自作せずにすんだのに・・・
931デフォルトの名無しさん:2006/05/20(土) 19:15:07
VB.NETにも標準であるよ
932デフォルトの名無しさん:2006/05/20(土) 19:31:33
VCL.NETで使えるね。
933デフォルトの名無しさん:2006/05/21(日) 01:02:51
>>907
所有されているウィンドウ(Form2)はHWND_TOPMOSTになることを
想定していなかったと思うけど、どうかな?

単にForm1がアクティブになった時は、 Form2 を手前に持ってくれば良いかもね。
934デフォルトの名無しさん:2006/05/21(日) 01:10:44
間違えました。
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_setwindowpos.asp?frame=true

>非最前面ウィンドウが最前面ウィンドウを所有することはありますが、

最前面同士のZ-Orderは別に管理されているのかな。
935907:2006/05/21(日) 02:29:47
>>933
レスありがとうございます。
うまく説明出来てるといいんですがもう少し詳しく書いてみると
Form1,Form2どちらも自動作成の対象に入れて
Form1からForm2の呼び出しはForm2.Show;のみ行ってます。
FormStyleプロパティはForm1,Form2どちらもfsNormal
Form2のみ>>907>>908のコードで最前面表示にしてます

>>単にForm1がアクティブになった時は、 Form2 を手前に持ってくれば良いかもね。
Form1のOnActivate 又は Form2のOnDeactivateでForm2を最前面表示にするコードを書くとForm1の操作が出来なくなってしまいます

Form2は最前面に表示したままForm1の操作は出来ない物でしょうか・・・
936デフォルトの名無しさん:2006/05/21(日) 02:48:31
>>935
外してるような気がするけど、一応書いてみる。

procedure TForm2.FormCreate(Sender: TObject);
begin
form2.ParentWindow:=form1.Handle;
end;

ってやるとform2がbsDialogだとform1の後ろへは行かない。
ただし、form1はform2の前へは行けない。
937デフォルトの名無しさん:2006/05/21(日) 03:20:41
>>936
ありがとうございます。書き忘れすみません、Form2のBorderStyleはbsNoneに設定しています。
さっそくやってみたのですが、BorderStyle(Form2)がbsNoneの場合だと
Form2がForm1の子コントロール(Form1の中のMemo1みたいな感じに)
になってしまい最前面表示も解除されてしまいました。
書いて下さってる通り、BorderStyleがbsDialogの場合だと上の様な状態にはならないのですが
Form2が他の最前面表示のソフト「aaa」より上に表示されてる状態で
Form1をアクティブ状態にすると、やはりForm2が「aaa」の後ろに隠れてしまいます。
938936:2006/05/21(日) 03:29:40
よく読み返してみたら、オレが思ってた質問と違った(汗
失敬。
939937:2006/05/21(日) 03:50:52
いえ、ParentWindow知らなかったので為になりました。
940デフォルトの名無しさん:2006/05/21(日) 05:15:54
意味不明だけど、Handle が再生成されてない?
もしそうなら、 HWND_TOPMOST も再設定する必要があるよ。
941デフォルトの名無しさん:2006/05/21(日) 05:39:48
確認しました。
Form1がアクティブになると、Form1よりaaaが手前に表示されているから、
Form2もaaaの後ろに表示されるという解釈かな。
でも、Form2がForm1に所有されていなくても変わらないよね。
942デフォルトの名無しさん:2006/05/21(日) 05:56:02
これかな。
>または最も前面ではないウィンドウの後ろに再配置されると、
>最も前面ではなくなります。このとき、 そのオーナー ウィンドウ、
>およびそのウィンドウが所有するウィンドウもすべて最も前面ではなくなります。

つまり、Form1はaaaより後ろにあるから、Form1が所有するForm2は前面で無くなる。

所有していなければ、Form1がアクティブな状態で Form2 は aaa より前に表示できます。
943デフォルトの名無しさん:2006/05/21(日) 06:04:45
うーむ上の >の説明は HWND_TOPMOST フラグがクリアされると言うかな…。

Form1がForm2を所有している場合は
Form1をアクティブにすると、Form2は必ず他のTopMostウィンドウより後ろに表示されるみたい。

Form1がForm2を所有していない場合は
Form2がアクティブな時にForm1をアクティブにすると、aaaがForm2より手前になる。
他のウィンドウがアクティブな時にForm1をアクティブにすると、Form2がaaaより手前になる。
944907:2006/05/21(日) 07:37:37
沢山のレスありがとうございます
改めて自分の無知さを実感してます。
Form2を所有してると言う部分が良く分からず、これをキーワードに検索してみると

Form2.ParentWindow := GetDesktopWindow();
Form2.Show();

上記のコードを見つけ、実際に組んでみると
>>907 のコードは削除し、>>908 のコードを OnShowの方に移動)
Form2がアクティブ、ノンアクティブに関係なくForm1をアクティブにしても
Form2が「aaa」に隠れる事無く、Form1も問題なく操作出来ました。
ParentWindow(Form2の所有権?)が、鍵だったんですね。
本当にありがとうございました。
945907:2006/05/21(日) 07:38:12
自動作成の対象:Form1, Form2

//Form1
BorderStyle = bsSizeable
FormStyle = fsNormal

procedure TForm1.Form2Show;
begin
Form2.ParentWindow := GetDesktopWindow();
Form2.Show;
end;

//Form2
BorderStyle = bsNone
FormStyle = fsNormal

procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
end;
946デフォルトの名無しさん:2006/05/21(日) 19:19:40
Borland社員の人へ。
サポートページの画像が、borland.co.jpのままになってますよ。
直してください。
例えば、ここ
http://support.borland.com/entry.jspa?externalID=4360
947デフォルトの名無しさん:2006/05/21(日) 22:24:19
すれ違い
948デフォルトの名無しさん:2006/05/21(日) 23:19:48
>>945
Form1がForm2を所有したままでやるなら、これで解決するよ。
procedure TForm2.WMActivateApp(var Message: TWMActivateApp);
begin
 inherited;
 if Message.Active then
  SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);

所有云々は日本語APIヘルプの「ウィンドウの概要」に詳しい。
949デフォルトの名無しさん:2006/05/22(月) 17:21:09
TClientSocketとTServerSocketでソケット通信を行っており、ClientTypeはstNonBlockingなのにサーバーが落ちているときにソケットエラーを起こしてくれません。
SendTextの戻り値も正常(送信バイト数)で、データが浮いてしまうのですが原因としてなにが考えられますか?
950デフォルトの名無しさん:2006/05/22(月) 20:53:19
Delphi2006で、演算子オーバーロードをやりたいんですが、
ヘルプに記述が見当たりません。
やり方を解説したサイトとかってないですか?
951デフォルトの名無しさん:2006/05/22(月) 20:56:05
952デフォルトの名無しさん:2006/05/22(月) 20:59:53
Add という名前と + という演算子の関係づけがわからんな、その例見ても。
953デフォルトの名無しさん:2006/05/22(月) 21:00:40
> ヘルプに記述が見当たりません。

ひどいね
954デフォルトの名無しさん:2006/05/22(月) 21:00:50
>>951
ありがとう。みました。

C:\Program Files\Borland\BDS\4.0\Demos\DelphiWin32\VCLWin32\ComplexNumbers\
にサンプルがありました。
でも、ヘルプには、全然ないのね。
955デフォルトの名無しさん:2006/05/22(月) 21:05:27
ComplexNumbersのサンプル面白ですね。
strict privateとか、staticとか新機能使いまくり。

staticは、ヘルプによると静的クラスメソッドだそうですが、クラスメソッドとどう違うんだろ
956デフォルトの名無しさん:2006/05/22(月) 21:12:42
ヘルプに説明ないのか?
957デフォルトの名無しさん:2006/05/22(月) 21:14:30
つ 静的クラスメソッド
958デフォルトの名無しさん:2006/05/22(月) 21:20:53
TMemoの最後の部分にスクロールバーを持ってくるにはどうしたらよいのでしょうか?
959デフォルトの名無しさん:2006/05/22(月) 21:31:52
SendMessage(Memo1.handle, WM_VSCROLL, SB_BOTTOM, 0);
960デフォルトの名無しさん:2006/05/22(月) 21:32:04
Memo1.PerForm(EM_SCROLLCARET, SB_BOTTOM, 0);

でどうよ
961デフォルトの名無しさん:2006/05/22(月) 21:34:16
> クラスメソッドとどう違うんだろ
通常のクラスメソッドとは異なり,静的クラスメソッドには
Self パラメータがまったくありません。

また,インスタンスメンバーにもアクセスできません。

また,クラスメソッドとは異なり,静的クラスメソッドは,virtual として宣言できません。

クラスプロパティのアクセッサは,静的クラスとして宣言する必要がある
962デフォルトの名無しさん:2006/05/22(月) 21:37:10
>>959-960
ありがとう!
963デフォルトの名無しさん:2006/05/22(月) 21:45:19
>>960

ヘルプより

EM_SCROLLCARET
wParam = 0 ; // not used now; reserved for future use; must be zero
lParam = 0 ; // not used now; reserved for future use; must be zero

SB_BOTTOM はなんで?
964デフォルトの名無しさん:2006/05/22(月) 21:46:35
そもそも末尾にキャレットあるとはかぎらんし
965デフォルトの名無しさん:2006/05/22(月) 21:47:58
>>961
なるほどー
つまり、クラスメンバ(class var)用なのか?
966デフォルトの名無しさん:2006/05/22(月) 23:12:21
自己流でdelphiをいじっているプログラマです。
複数のアプリケーションを立ち上げている状態で、タイマーで順次特定のボタンやリストボックスを
押下する機能を作りたいと思っています。

この場合、

アプリケーションのウインドウをアクティブにする
       ↓
マウスカーソルをボタンに移動
       ↓
クリックという手順で行うのでしょうか?

ヘルプや検索でタイマーは何とか実装することが出来ましたがここで躓いています。

参考になるソース等教えてもらえないでしょうか?
967デフォルトの名無しさん:2006/05/22(月) 23:20:59
APIのSleepを使うとフォームが固まってしまいます。
フォームを固まらせずに一定時間待機するにはどうすれば良いでしょうか?
何か良いAPIはありますか?

#タイマーコンポやスレッドを使うのは最終手段としたいです。
968デフォルトの名無しさん:2006/05/22(月) 23:26:46
>>967
スレッドを使わずにかー。
指定時間まで、ループ回して、
ループ内で、
Sleep(1);
Application.ProcessMessages;
って手もあるが。
969デフォルトの名無しさん:2006/05/22(月) 23:31:44
何をどれ位待つかにもよって、最適な手段が変わる。
もっと具体的に処理を示せ。

Application.ProcessMessageという物もあるが、
これは時間のかかる処理をしている間にフォームを固まらせないための処理で、
一定時間待つという用途にはあまり向いてない(予期しない挙動する可能性が増える)
970デフォルトの名無しさん:2006/05/22(月) 23:43:51
971デフォルトの名無しさん:2006/05/22(月) 23:47:56
>>966
> ボタンやリストボックスを押下する機能を作りたいと思っています。

別にアクティブにする必要はない。

1)ウィンドウハンドルを取得
2)動作させたいメッセージを送る。

これだけ。でも 1)が一番難しい。
972デフォルトの名無しさん:2006/05/22(月) 23:54:57
>>968
なるほど!ありがとうございます。

>>969
すいません。具体的にはクライアント/サーバ アプリを作成中で、
クライアントからサーバに連続でデータを取りにいく際、接続開始を
一定時間(200ms程度)待機する際に使いたいと思っています。
973966:2006/05/23(火) 00:06:10
>>970,971

早速のお答え有難うございます。
今日は遅いので明日拝見してみますね。
974ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/05/23(火) 00:43:40
procedure SleepProcessMessages(Milliseconds: Cardinal);
var
 StartTime, NowTime: Cardinal;
begin
 StartTime := GetTickCount;
 while true do
 begin
  NowTime := GetTickCount;
  if Milliseconds <= (NowTime - StartTime) then
   Break;
  Application.ProcessMessages;
 end;
end;
ただし、連続で呼び出すと挙動がおかしくなる。

ほかにあったら俺にも教えてくれ。
975デフォルトの名無しさん:2006/05/23(火) 00:54:28
>972
それなら悪いこと言わん。スレッドの使い方覚えた方が良い。後々簡単だから。
976デフォルトの名無しさん:2006/05/23(火) 01:01:36
ネットワークで待つ場合、スレッド必須だとおも。
スレッド覚えといたほうがいいよ・・・。
977967:2006/05/23(火) 01:40:35
皆さん助言ありがとうございます。
今回はスレッドを使ってみようと思います。
978デフォルトの名無しさん:2006/05/23(火) 08:30:21
200msって固まるって感覚じゃぁないと思うけど・・・
まぁ、長くするかも知れないのなら漏れもスレッド勧める
979デフォルトの名無しさん:2006/05/23(火) 11:58:17
TLogFont.lfWeightに対応するプロパティは何でしょうか?
TCanvas、TFont、TPen一通り探しましたがそれらしいものはなかったです。
980デフォルトの名無しさん:2006/05/23(火) 12:59:57
TFont.Style の fsBold 。 細かい設定はできない。
981デフォルトの名無しさん:2006/05/23(火) 13:24:49
他のアプリを監視して応答が無くなったら強制終了させるアプリを作りたいのですが、
終了ボタンを押しても終了しないアプリを強制終了させる方法がありましたら教えてください。
postmessageのWM_Closeだけでは無理でした。
982デフォルトの名無しさん:2006/05/23(火) 13:36:20
WM_TERMINATE
983デフォルトの名無しさん:2006/05/23(火) 13:38:24
>>979
API直接呼び出せばいいじゃない。 回転も出来るし
http://www2.big.or.jp/~osamu/Delphi/Tips/edit.cgi?file=0137.txt

>>981
窓ハンドルから相手のプロセスIDをGetWindowThreadProcessIdで手にいれて
OpenProcess で プロセスIDから プロセスハンドルを手に入れれば
 TerminateProcess で終了出来るかも
984デフォルトの名無しさん:2006/05/23(火) 14:05:56
TIdHTTP.ResponseCodeに対する処理って皆さんはどの程度されていますか?
ちなみに私は下に書いてるのみです。
200:; //正常処理
403:; //Forbidden
404:; //NotFound
500:; //InternalServerError
503:; //ServiceUnavailable
985デフォルトの名無しさん:2006/05/23(火) 16:04:28
実行中アプリのフルパスからトップレベルウィンドウのハンドルを得るにはどうすればいいでしょうか?
986デフォルトの名無しさん:2006/05/23(火) 16:11:34
>>985
日本語でOKよ。
987デフォルトの名無しさん:2006/05/23(火) 16:36:14
>>986
しね
988985:2006/05/23(火) 17:03:59
987は私ではないですよ。
んで、日本語じゃないらしいのでもうちっと詳しく書くと
テキストファイルにアプリのパスをずらずらっと書いてだ
そやつらにWM_CLOSEを送って終了させたい訳だ。
んでWM_CLOSEをPostMessageする為にはウィンドウハンドルがいると。
あらかじめクラス名とかを調べておくのは面倒なのでフルパスからなんとかトップレベルウィンドウのハンドルが得られないかと。
EnumWindowsとかやってみたんだがどれがトップレベルウィンドウかコードから判別する方法が知りたい訳だ。
パスが一致する物全てにWM_CLOSE送ってもいいんだが、かっちょ悪いっしょ?
989名無し募集中。。。:2006/05/23(火) 17:14:50
テキストファイルにずらずらっと書いたアプリを
CreateProccess使って自前で起動したのなら
プロセスIDからウィンドウハンドル取得が出来る

そうでないなら俺もやり方知らんから
知ってる人いたら教えて欲しい
990デフォルトの名無しさん:2006/05/23(火) 17:18:56
CreateToolhelp32Snapshot は使えないかな
991デフォルトの名無しさん:2006/05/23(火) 17:21:14
だいいち、一つのフルパスから複数起動されている場合だってあるだろうし。
992デフォルトの名無しさん:2006/05/23(火) 17:22:24
>あらかじめクラス名とかを調べておくのは面倒なので

こっちの方がずっと簡単だわな。FindWindow() つかえるから。
993デフォルトの名無しさん:2006/05/23(火) 17:23:28
どうでもいいが、他のアプリを勝手にKILLするって・・・・作成罪が成立したら気を付けろよ
994デフォルトの名無しさん:2006/05/23(火) 17:32:10
どうせ、まともなアプリじゃないんだろなぁ・・
995デフォルトの名無しさん:2006/05/23(火) 18:22:23
埋め995
996デフォルトの名無しさん:2006/05/23(火) 18:38:32
Cardinal や Int64 を IntToStr みたいに文字列にしたいのですが、
どうしたら良いのでしょうか?
997デフォルトの名無しさん:2006/05/23(火) 18:44:14
intToStr は複数定義されて overloadされてるから、心配ない

Caption:=IntToStr(Cardinal(-1)); 
Caption:=IntToStr(-1);
は違う結果になる
998デフォルトの名無しさん:2006/05/23(火) 18:52:46
ヘルプより

function IntToStr(Value: Integer): string; overload;
function IntToStr(Value: Int64): string; overload;

つかえるんじゃないの?
999デフォルトの名無しさん:2006/05/23(火) 19:01:58
すいません上で書いた者ですが、サーバーが繋がっていない時にSocket.SendTextで例外が発生しないのは仕様なんでしょうか?D5です。
1000デフォルトの名無しさん:2006/05/23(火) 19:03:59
1000だとかわいくて素直な彼女が出来る
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。