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

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

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

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

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさんNGNG
<過去ログ>
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
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
0003デフォルトの名無しさんNGNG
http://3266ubzprnx3.my-age.net/tyhio6.html
http://0b9tonzzn4si.hotusa.org/ze9fb1z.html
0004デフォルトの名無しさんNGNG
>3 はブラクラ。踏まないように。
0005デフォルトの名無しさんNGNG
TStringListのLoadFromFileメソッドで「ファイルXXXXXは開けません」というメッセージがでます。

それは使用中のファイルなのですが、これを回避して開きたいのですがどうしたらいいでしょうか?

メモ帳など他のソフトではそのまま開けるので完全?にロックされているわけじゃないようなので
ファイルオープンの方法が変わればいけるんだと思うんですが
こういう場合はどういった命令で読めばよろしいでしょうか?
0006デフォルトの名無しさんNGNG
TFileStreamで開いてTStringListのLoadFromStreamじゃダメかな?
00075NGNG
ありがとうございます
さっそくTFileStreamで開いてみましたが同様のエラーがでてしまいました
00085NGNG
開けるはずなので色々調べたんですがどうしてもDelphiの命令で開けません。

あきらめ半分でWin32APIを使ったら・・・なんとすんなり開けてしまいました。
以下が結果で、ヘルプを見た感じだとどっちも同じことをするようにしか見えないのにできない。
D6Personalゆえソース見えないんですが内部でどのAPI呼んでるんですか?
FileStream.Createがどうしてダメなのか、わかる方いませんか?


//開けない
TFileStream.Create('test.txt', fmOpenRead, fmShareDenyNone );

//fmShareCompatFCB によりファイルを開く方法と互換性がある
//fmShareExclusive他のアプリケーションはファイルを開くことができない
//fmShareDenyWrite他のアプリケーションは読み出し用にファイルを開くことはできるが,書き込み用に開くことはできない
//fmShareDenyRead他のアプリケーションは書き込み用にファイルを開くことはできるが,読み出し用に開くことはできない
//fmShareDenyNone他のアプリケーションからのファイルの読み出しおよび書き込みを妨げる処理は行われない

//開ける Win32API
CreateFile('test.txt', GENERIC_READ, 3, nil, OPEN_EXISTING, 0, 0);

//0 共有しない 他のアプリケーションからオープン出来ない
//FILE_SHARE_READ = 1 他のアプリケーションから読み込み可能
//FILE_SHARE_WRITE = 2 他のアプリケーションから書き込み可能
//READとWRITEをあわせて 3 (定義はなし)
0009デフォルトの名無しさんNGNG
>>8
もしかして「読み書き属性」のままファイルを開こうとしているじゃない?
読み書き属性なら「書き込めないと困る」からエラーが出ても不思議じゃ
ないんだけど。

LoadFromFileの前にFileMode=0を入れてエラーが出るか確認してみて。
00105NGNG
>>9
FileMode は Reset 手続きでしか使わないのでは?
TFileStream.Create('test.txt', fmOpenRead, fmShareDenyNone );
の命令文でEFOpenErrorになります。
直前にFileMode := 0 にしてもやはり変わりませんでした。
0011デフォルトの名無しさんNGNG
ん? TFileStream.Createの3番目の引数はWindowsでは使わないはずだが。
TFileStream.Create('test.txt', fmOpenRead or fmShareDenyNone );
じゃないかな?
00125NGNG
>>11
勘違いしてました_| ̄|○
指摘の通りorで指定しなおしたのですが、やはりEFOpenErrorになりました
00135NGNG
ごめんなさい、前のEXEファイル動かしてました
動きました!!

引数指定ミスだったとは・・・・・・ご迷惑おかけしました。
回答くださったみなさんありがとうございました。
00149NGNG
>>10
あ、ほんとだ。前ここで引っかかったことがあったから、
てっきりそうだと思ってた。
0015デフォルトの名無しさんNGNG
くだスレらしくてよいな、ここまでの流れ。
0016デフォルトの名無しさんNGNG
くだらしいとき、くだらしく、くだらした
0017デフォルトの名無しさんNGNG
IDEを拡張するやつで、
関数一覧を表示してオブジェクトツリーにドッキング出来るの
あったら教えて。(D6パーソナル)
0018デフォルトの名無しさんNGNG
Personal には無い。
0019デフォルトの名無しさんNGNG
文字列データが扱いたいのですが、TStringsプロパティを作るとコンパイラに怒られます。
string型でもいいのですが、LoadFromFileとかのメソッドが使えたほうが便利なんです。
仕方がないので、TMemoを非表示にして、TMemo.Linesにデータを入れてるんですが、
何かもっと普通の方法があるはずだと思うのですが。。
どなたか教えてくださいませ m_ _m
0020デフォルトの名無しさんNGNG
コンパイラは何て言ってる?
0021テレパス名無しさんNGNG
× TStrings.Create
○ TStringList.Create
0022デフォルトの名無しさんNGNG
>>19
TStringlist
0023デフォルトの名無しさんNGNG
くれぐれも
「SL.Create」としないように。

経験者談w
002419NGNG
TStringListでできましたー。
ありがとうございます。^o^

>>20
「警告」抽象メソッドを含む'TStrings'のインスタンスを作成しています。
といわれました。
0025デフォルトの名無しさんNGNG
フォーム上の全てのコントロールのフォント名を指定されたものに置き換えるには
どうすればいいですか?
0026デフォルトの名無しさんNGNG
フォームのフォントを変える
0027ななしへたぐらま ◆XcB18Bks.Y NGNG
>>25
設計時の話だと思いますのでその前提で.

フォーム上のコントロールのフォント設定はどうなっていますか?
全くいじっていない場合はコントロールはその親となるコントロールの設定に合わせますので,
フォームのフォント設定を変更すればすべてのコントロールの設定も同様に変わります.

いじっている場合には個別に変換することになるでしょうが,
フォームをテキスト形式で表示させれば
ユニットファイルのソースコードと同じように文字列置換できます.

フォームがテキスト形式で表示するには
対象となるフォームを右クリックして『エディタで編集』をクリックします
(または対象となるフォームがアクティブな状態で[Alt]+[F12])

ソースコード中の Font.Name というところでフォント名を指定しているので
ここの既存のフォント名を任意のフォント名に置き換えます.
フォント名がデフォルトだとこの記述がないので自分で書き足す必要があるかもしれません.
念のため,あらかじめバックアップを取ってください.

※テキスト形式の表示をやめるには[Alt]+[F12]です.
002825NGNG
>26
いやそうじゃなくって…

プログラムで行うにはどうすればいいかな?っていう質問です。
ParentFontを使うのも無しでお願いします。

下のようにすればいいのかなあと思ったけど、エラーが出るので‥‥。

procedure SetFont( TheControl: TControl );
var
i: Integer;
begin
TheControl.Font.Charset := DEFAULT_CHARSET;
TheControl.Font.Name := "MS 明朝"; //ここはフォントにするとか
for i:= 0 to TheControl.ControlCount - 1 do
begin
SetFont( TheControl.Control[i] );
end;
end;
0029デフォルトの名無しさんNGNG
> プログラムで行うにはどうすればいいかな?っていう質問です。

Form1.Font.Name :=

TControl では Font プロパティーにアクセスできない。protected だから
0030デフォルトの名無しさんNGNG
TEditorを使って、行間にいろいろ表示できるようにしようとしています。
Paintメソッドをoverrideして、そこに描画命令を書くと、一応表示はされるのですが、
スクロールすると、残像が残ってうまく描画できません。
リサイズすると、きれいに再描画はされるのですが、スクロール量に
関係なく、canvasの原点から描画されるので、テキストの途中が
表示されてても、ページの先頭が描画されてしまいます。

スクロールされているときに、
実際に表示されている領域の原点が、(隠れている部分を含めた)
画像全体の原点から何ピクセルずれているのか
取得する方法がありますか?
0031デフォルトの名無しさんNGNG
フォントの大きさにも依存するし。
作者は日本人なんだし、サポート掲示板もあるし、そっちで訊いたら
0032デフォルトの名無しさんNGNG
なんで ParentFont を True じゃだめなの?
0033デフォルトの名無しさんNGNG
あ。自分で全部コントロールしたい。って話なのかな?
29 さんのがヒント。

あなたの SetFont 関数の引数を TWinControl にし、
子コントロールをなめるときに、TWinControl またはそれの子孫のクラスかどうかを
判定して再起呼び出しすればよい。
0034デフォルトの名無しさんNGNG
>TWinControl またはそれの子孫のクラスかどうかを

ラベルのフォントが変更できないでしょ
0035デフォルトの名無しさんNGNG
D6のヘルプだと TWinControl でも Font プロパティーないけど
0036デフォルトの名無しさんNGNG
RTTIでFontプロパティを持ってるかどうかを判断しとけ
0037デフォルトの名無しさんNGNG
再帰プログラムの練習でしょ? 実用性からみて ParentFont を使わないってことはない。
003825NGNG
知り合いから相談された質問なんで詳しいことは分からないけど、
なぜParentFontを使わないのかというと「フォントサイズは
デザイン時のを使いたいから」らしい‥‥。

んで、>36の言うようなFontプロパティの有無を確認するっていう
方法は探したら下のように出てました。
http://130.158.124.192/~takeuchi/delphi/browse.cgi?index=068731

これと再帰と組み合わせれば実現可能ですね。
勉強になりました。
0039デフォルトの名無しさんNGNG
何故Delphiってよくバカにされたり嫌われたりするんですか??
0040デフォルトの名無しさんNGNG
>>39
ソースが分からんと答えようがない
0041デフォルトの名無しさんNGNG
>>40
>>39
0042デフォルトの名無しさんNGNG
つまり、>>39がDelphiをバカにして嫌っているのだから、
理由は>39の胸に手を当てて聞いてみるとよい。
0043デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0044デフォルトの名無しさんNGNG
lnkファイルの参照先を取得したいのですが
どうすればいいでしょうか?
0045デフォルトの名無しさんNGNG
DrawGridにサムネイルを表示させているんですが
スクロールして再描写している最中に更にスクロールすると残像が残ってしまいます
再描写の部分をスレッド化すれば防げますか?
0046デフォルトの名無しさんNGNG
>>44

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=018949

のパクリだけど

uses
  ComObj,ActiveX,ShlObj,ShellApi;

function GetLinkedFilePath(LinkFile:string):string;
var
  PersistFile:IPersistFile;
  ShellLink:IShellLink;
  wsz:array[0..MAX_PATH] of WideChar;
  pfd:TWin32FindData;
begin
  ShellLink:=CreateComObject(CLSID_ShellLink) As IShellLink;
  OleCheck(ShellLink.QueryInterface(IPersistFile,PersistFile));
  Assert(Assigned(PersistFile));
  MultiByteToWideChar(CP_ACP,0,pChar(LinkFile),-1,wsz,MAX_PATH);
  OleCheck(PersistFile.Load(wsz,0));
  result := StringOfChar(#0,MAX_PATH);
  OleCheck(ShellLink.GetPath(PChar(result),MAX_PATH,pfd,SLGP_SHORTPATH));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := GetLinkedFilePath('C:\Documents and Settings\All Users\デスクトップ\+Lhaca.lnk');
end;
0047デフォルトの名無しさんNGNG
> 再描写の部分をスレッド化すれば防げますか?

いいえ。

> スクロールして再描写している最中に更にスクロールすると残像が残ってしまいます

うーむ、シングルスレッドで再描画しながら同時にスクロールするってことがあるとは思えないが
0048デフォルトの名無しさんNGNG
> 再描写の部分をスレッド化すれば防げますか?

いいえ。

> スクロールして再描写している最中に更にスクロールすると残像が残ってしまいます

うーむ、シングルスレッドで再描画しながら同時にスクロールするってことがあるとは思えないが
0049デフォルトの名無しさんNGNG
あ、二重投稿すまん
0050デフォルトの名無しさんNGNG
Delphiで、とあるクラスのメンバ関数を、同じクラス内で宣言している関数ポインタ配列にセットしたいんですけど、
どうすればよいのでしょうか?
0051デフォルトの名無しさんNGNG
type TMyEvent = procedure(a, b: Integer) of object;
type TMyClass = class
MyMethods: array [0..99] of TMyEvent;
procedure MyMethod(a, b: Integer);
end;

var obj: TMyClass;
obj := TMyClass.Create;
obj.MyMethods[0] := obj.MyMethod;
0052デフォルトの名無しさんNGNG
>>51
よくわかりました。ありがとうございました。
この場合、クラス生成後に自分で配列に関数を登録しますよね。
(見たまんまですが)
初期化付き?(というんでしたっけ?)で宣言する事はできないですか?
0053デフォルトの名無しさんNGNG
52です。
初期化付きと言っているのは

aaa:array [0..6-1] of integer = (
0, 1, 2, 3, 4, 5
);

みたいな感じで。この0〜5が、要はクラスのメンバ関数にしたいんです。
とりあえず格納する配列はクラス外でもいいんですけど・・。
0054デフォルトの名無しさんNGNG
無理
基本的にメソッドポインタはクラスインスタンスに従属してるから。
全部クラスメソッドにすれば可能かもしれないけど。
0055デフォルトの名無しさんNGNG
配列プロパティにすればそれっぽく見えるけど…多分使い物にならない可能性大。
使い道よくわからんけど。
0056デフォルトの名無しさんNGNG
皆さんは以下のような機能を実装したい場合にはどうしますか?

「ディレクトリにあるファイルをすべてにたいして適切な加工を施す。」
と言うプログラムを作りたいとします。

これをメインスレッドでやってしまうととんでもないことになるので、別途
ディレクトリの中のファイルを読み出し、適切な加工を施す処理を行う専用スレッドを作って、メインスレッドから
そのスレッドを起動して、処理させるという方法をとりました。

ところが仕様上である制約があるのです。

作業状態をこと細かくメインスレッドのForm上のLabelに報告せねばならない。(ユーザーがなにをしているか分かるように)
たとえば今〜フォルダの〜というファイルを処理しています。
処理結果は進行状態は何%ですといった具合にです。

ところがこれを実装しようとすると、処理専用スレッドの中で、いたるところでSynchronizeメゾットを呼び出さねばならず
スレッドの中はSynchronizeだらけになってしまいます。

これでは大変効率が悪いと思うのですが。皆さんならどのように実装しますか?
お知恵を拝借したいと思います。
長文失礼いたしましたm(_ _)m

0057デフォルトの名無しさんNGNG
進捗の更新のタイミング=Synchronizeなんだからしょうがない。

進捗表示がいい加減でいいなら
スレッドセーフなCurrentDir, Positionプロパティを用意して
Timer使って一秒毎にラベルを更新するとか。
005856NGNG
レスありがとうございます


なんか自分のコードを見てですね。 Synchronizeばかり呼び出しているのをみて。
「かっこわるいコードだなぁ…」とおもっていたものですから…

やはりこれは仕方が無いのですね。もっとエレガントな実装方法があるのかなぁなんて思ったものですから…
0059デフォルトの名無しさんNGNG
>もっとエレガントな実装方法
アスペクト指向であれば指定した一連のメソッドを抜ける際に
自動的にSynchronizeを呼び出すってできるんだけどね。
Delphiじゃサポートしてないけど。
0060デフォルトの名無しさんNGNG
>>56
1:
Synchronizeを呼び出す別のメソッドを定義すればよい。
ファイル名や進行状況の値をクラスの変数などにして。

2:
ファイル名など排他制御が必要なものだけSynchronizeまたはクリティカルセクションで保護して更新。(取得時も保護ね)
進行状況の値は32bitの変数などで保護なしで更新もあり。
GUIの更新はタイマで定期的にそれらの値を参照して行う。
こっちの方法はGUIの更新頻度を一定にできるので負荷が少ない。

被ってる内容だが2が個人的にお勧め。1だと大抵の場合処理が遅くなるし負荷も高い。
0061デフォルトの名無しさんNGNG
基本は子スレッドにファイル処理だけをやらせて、VCLの更新はメインスレッドにやらせる事ですな。
0062デフォルトの名無しさんNGNG
ヘルプを見ると、配列の記憶域が2GBと書いてありますが、
これは例えば、
A[0..100,0..100]という配列があった場合、Aの中身全てを総合して2GBが限度ということですか?
006356NGNG
みなさんありがとうございます
>>60さんの二番でアプローチしてみたいと思います。


次いで質問で申し訳ないのですが…
>進行状況の値は32bitの変数などで保護なしで更新もあり。
integer型はクリティカルセクションの保護が必要ないのですか!?
0064デフォルトの名無しさんNGNG
>ヘルプを見ると、配列の記憶域が2GBと
2G byte は Windows の制限/制約ですから、乗り越えることは大変ですよ。

配列は、実体を宣言した時点でメモリを確保されますから、
A[1..256, 1..256] の2次元配列は 64K (65536) 個の要素を格納します。
ひとつの要素の大きさが 1K (1024) byte だとしたら全体で 64M の(連続した)
メモリ領域が必要となります。

Delphi では、このトータルの最大値が 2G.

ビジネスアプリなどではめったに 2G の制限に達することはありませんが、
科学計算などで三次元配列とか使うと、限界に到達するのは早いです。
0065デフォルトの名無しさんNGNG
>>62
SizeOf(A)が2G以上になったらコンパイルエラー。
0066デフォルトの名無しさんNGNG
>>63
Windowsの動いているPCは大抵32bit以上だから、32bitの変数は1命令で変更される。(4バイトがバラバラに取得変更されることはない)
この特性から、変数書きこみが1スレッドだけならば保護しなくてもただしく値を取得できる。
0067デフォルトの名無しさんNGNG
>>64
迅速な対応に感謝します。確かに、普通に使っていて2Gを超えることは無いと思うのですけど、
今回、2次元配列をサイズが448×448のビットマップ型で宣言しているんですよ。
それで、その変数がA[400,400]くらいのでかい配列なので。無理かな、と。
というか、普通はやんないことですよね・・。
0068デフォルトの名無しさんNGNG
4バイト×448×448×400×400って100Gバイトを簡単に超えますけど・・・。
0069デフォルトの名無しさんNGNG
>>68
ええと、ビットマップのサイズは、ファイルサイズではなくて画像の大きさです。
いずれにしろ、無駄なことをやってるには違いないんですが。
横着なことやってないで、Byte型で宣言して、
それに対応した画像描画プロシージャを呼び出すようにします。
0070デフォルトの名無しさんNGNG
>>66
SMP環境でバグるけどな
0071デフォルトの名無しさんNGNG
64bit CPU ならまた別だが、拡張されていない IA32 アーキテクチャそのものが
一度に 4G byte までしかアクセスできません。さらにその空間を OS や各種データ
でやりくりしなきゃいけないわけだから..

物理メモリの半分以上をひとつのデータで確保しなきゃいけなくなったら、何か間違っている。
と思わないと。

なお、フォトショップとかの画像処理アプリケーションでは、自前でメモリ管理をするのが定番です。
0072デフォルトの名無しさんNGNG
>>70
>書きこみが1スレッドだけならば
って予防線張ってるじゃん
0073デフォルトの名無しさんNGNG
>>72
それは関係ない
0074デフォルトの名無しさんNGNG
>>71
参考になります。重いデータを扱うなら相応の気配りが必要ですね。

処理上のことで、もう一つ質問がしたいんですが、
単純な四則演算や、if文は一度に(単位時間あたり)どれくらいの演算ができるんでしょうか。
変な質問ですみません。演算量の多いプログラムを組んでいまして、処理落ちを心配しています。
試しに秒間数十万回の四則演算、数万回の条件文を組み込んだプログラムを回してみました。
そうしてもCPU使用率はほぼゼロ%になるんですが、ほとんど際限なく演算ができると考えていいのでしょうか?
(完璧なのかどうかは分かりませんでしたが、処理が行われてることも確認しました。)
演算の処理上、CPU使用率を参考にしていいのかどうかもわかっていないので、恐らくおかしなことを言ってるんだと思います。
また指摘していただければ幸いです。
0075デフォルトの名無しさんNGNG
はじめましてハイパー初心者です。
エディタ部とブラウザ部に分かれた
HTMLエディタを作成しています。

エディタ部に書き込んだソースを
リアルタイム(エディタ部が変更されたときに対応)で
ブラウザ部に反映(更新)させているのですが
「ブラウザに表示される内容が縦長になった」場合
ブラウザの縦スクロールバーを一番下まで下ろしておいて
その状態でエディタにソースを書きたすと
ブラウザの縦スクロールバーが一番上に勝手に上がって更新されます。

これを回避し、ページを更新する方法がありましたら
教えていただきたいのです。


   スクロールバーの位置を記憶させておいて
   更新と同時にそこに飛ばす
   (記憶させたところにスクロールバーを戻す)
   という感じ・・ですか?
0076デフォルトの名無しさんNGNG
>>74
CPUによるっしょ。際限無く、ってのはあり得ない
0077デフォルトの名無しさんNGNG
>>70
SMPでも問題ない。マルチプロセッサのメモリアクセスについて勉強したほうがいいよ。
0078デフォルトの名無しさんNGNG
atomicity
0079デフォルトの名無しさんNGNG
SMP ネタは、別のスレでよろしくお願い。
0080デフォルトの名無しさんNGNG
>>74
あなたのコードによるので、実測するしかない。

が、ものすごく大雑把に。クロック 1G の P3 クラスの CPU を考える。
1秒間に 1000 * 1000 * 1000 クロック存在する。
32bit の四則演算をキャッシュアクセスできたとして4クロックで処理できるとする。

そうすると一秒間に 250,000,000 / 2億5千回の単純計算が可能だ。

「秒間数十万回の四則演算」は、データがキャッシュ等 CPU の近傍に存在するうちは
CPU の能力の1%も使わずに処理できる。わけだ。

大雑把な数字でいいから、だいたいの目安を一度計算、会得しておくと、異常な結果に
気づきやすいぞ。
0081デフォルトの名無しさんNGNG
9個のボタンを作って、それぞれクリックすると
キーボードの「1」「2」「3」〜
が押されたことにするようにするのはどのように書けばよいのでしょうか。

procedure TForm1.Button1Click(Sender: TObject);
begin
(ここに、キーボードの数字の「1」が押されたことにするように書きたい)
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key =('1') then
  showmessage:=('1が押されました')
008281NGNG
ごめんなさい自己解決しました。
0083デフォルトの名無しさんNGNG
>>81
解決したようですけど、せっかくやったので・・・
Form1 の KeyPreview を true にし、Button1〜9 の OnClick イベントハンドラを
共有して、

procedure TForm1.Button1Click(Sender: TObject);
var
  KeyCode:Byte;
  Caption:string;
begin
  If Sender is TButton then begin
    Caption := TButton(Sender).Name;
    KeyCode := $30+StrToInt(Copy(Caption,Length(Caption),1));
    keybd_event(KeyCode,0,0,0);
    keybd_event(KeyCode,0,KEYEVENTF_KEYUP,0);
  end;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case Ord(Key) of
    Ord('1')..Ord('9'):ShowMessage(Format('%d キー が押されました',[Ord(Key)-$30]));
  end;
end;
008481NGNG
>>83
すいません。ほんとにありがとうございました。
私は

procedure TForm1.Button1Click(Sender: TObject);
var c : Char;
begin
c := '1';
  form1.KeyPress(c);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key =('1') then
   showmessage:=('1が押されました')
end;

一応これでやりたいことは出来ました。
82さんのは私の知識を遥かに超えていて良く分らない・・
0085デフォルトの名無しさんNGNG
>>70
釣られないよw
0086デフォルトの名無しさんNGNG
>>84

それはキーを押してることにはならない。ただ、ハンドラを呼び出してるだけ。
それが目的ならいいけど。

> form1.KeyPress(c);

これじゃコンパイルできないとおもうけどなぁ。

FormKeyPress(Sender,C);

だと思う。
0087デフォルトの名無しさんNGNG
>>84
ハンドラを呼び出すだけでいいにしても、ButtonClick のイベントハンドラを
9つも書くのは無駄です。Button2〜Button9 までを選択して、OnClick イベント
ハンドラを Button1Click に設定すると一つですみます。

procedure TForm1.Button1Click(Sender: TObject);
var
  KeyCode:Byte;
  Caption:string;
  c:Char;
begin
  If Sender is TButton then begin
    Caption := TButton(Sender).Name;
    KeyCode := $30+StrToInt(Copy(Caption,Length(Caption),1));
    c := Chr(KeyCode);
    FormKeyPress(Sender,c);
  end;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case Ord(Key) of
    Ord('1')..Ord('9'):ShowMessage(Format('%d キー が押されました',[Ord(Key)-$30]));
  end;
end;
0088デフォルトの名無しさんNGNG
Delphi6 Personalで作成したソフトは無償なら配布可能でしょうか?
0089デフォルトの名無しさんNGNG
オープンソースの2ちゃんブラウザのほとんどはDelphi6 Personalでもビルドできる。
0090デフォルトの名無しさんNGNG
もちろんDelphi製のやつね。
0091デフォルトの名無しさんNGNG
RPGやシミュレーションなどを作る場合にはHSPよりDelphiの方が向いてるんですか?
0092デフォルトの名無しさんNGNG
>>91
RPGツクールに汁!
0093デフォルトの名無しさんNGNG
>>91
Delphiの方が細かい事ができる。
難易度は変わらない。 後は好みの問題。
0094デフォルトの名無しさんNGNG
SLGなど大量のデータ扱う場合はその手段が豊富なDelphiの方が有利だと思う。
0095デフォルトの名無しさんNGNG
type
 THoge = record
0096デフォルトの名無しさんNGNG
すいません間違えて途中で送信してしまいました

type
 PHoge = ^THoge;
 THoge = record
  Child : array of THoge; TArratHoge
 end;

 PArrayHoge = ^TArrayHoge;
 TArrayHoge = array of THoge;

THogeのChildをPArrayHogeにしたいのですができるでしょうか?
009796NGNG
誤
  Child : array of THoge; TArratHoge
正
  Child : array of THoge; //TArrayHoge
です
009896NGNG
Child : array of THoge;
これ自体だめだったみたいですね
他の方法で実装することにします
0099デフォルトの名無しさんNGNG
ていうかrecordなんて使うな
010075NGNG
>>75

ないんですね。
0101デフォルトの名無しさんNGNG
TUIWebBrowserって、Delphi6パーソナルじゃぁインストできないんでしょうか?
本家いっても記述がないし、BBSもないので。。。
0102デフォルトの名無しさんNGNG
>>101
ttp://www33.ocn.ne.jp/~takoyakusi/delphi/UIWebBrowser/
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200309_03090064.html
0103デフォルトの名無しさんNGNG
APIで、SetForegroundWindowの逆ってありませんか。
最前面から最後面に送るやつ。
0104デフォルトの名無しさんNGNG
SetWindowPos
0105デフォルトの名無しさんNGNG
>>104
できますたサンクスです
0106デフォルトの名無しさんNGNG
>>102
ありがとうございました
0107デフォルトの名無しさんNGNG
>>91
ツクールより自由でDelphiより高性能
でもDelphi製なんだけどな

【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc5.2ch.net/test/read.cgi/gamedev/1087068523/
0108101NGNG
>>102
vclieってのがないとDelphiに怒られて、やっぱりインストできませんでした。・゚・(ノД`)・゚・。
0109デフォルトの名無しさんNGNG
質問です
override指令とoverload指令を同時に使用することはできませんか?
0110デフォルトの名無しさんNGNG
override して引数変更できるわけないでしょ
0111デフォルトの名無しさんNGNG
overload; virtual; がついているメソッドは reintroduce; overload; で
下位クラスで overload できるけど、override したことにはならない。
0112デフォルトの名無しさんNGNG
引数ってヒキスウって読むんですね。ずっとインスウだと思ってた…
0113デフォルトの名無しさんNGNG
引数で変数Rectが使われているときに関数Rectはどうやって使えばいいのでしょう?
0114デフォルトの名無しさんNGNG
>>113
何も考えずにそのまま使っても、
関数として使われているか変数として使われているか
コンパイラが自動的に判断してくれる。

逆に言い換えれば変数か関数か識別できない構文は使えないと。
0115デフォルトの名無しさんNGNG
>>114
即レスありがとうございました!
0116109NGNG
レスありがとうございました
とりあえずReintroduceで解決しました。
0117デフォルトの名無しさんNGNG
>>113
ユニット名を明示する
SysUtils.Rect(Rect.X, ...)
とか。SysUtilsじゃなかったような気もするけど。
0118デフォルトの名無しさんNGNG
>>117
Classesにある。
で、ClassesのRect関数はTypesのRect関数を呼び出してる。
Point関数なんかも同じようになっている。
0119デフォルトの名無しさんNGNG
変わりにBoundsを使えばいいかも。
0120デフォルトの名無しさんNGNG
114ってあってんの?
0121デフォルトの名無しさんNGNG
あってる
0122デフォルトの名無しさんNGNG
114 はあっているけど、117 にあるように名前空間を指定することで区別することも
できる。ということ。
0123デフォルトの名無しさんNGNG
勇気を出して質問します。

ディレクトリが空かどうかを調べたいのです。
具体的にはワールドカードでディレクトリをfindfirstで検索して見つかったファイルの数が0ならTRUEという手順なのですが、空ディレクトリを調べても絶対2になってしまいます。

なにかいい方法はありませんか?
0124デフォルトの名無しさんNGNG
.
..
だろ、2なら空で良いんじゃねぇか?
0125デフォルトの名無しさんNGNG
>>123-124
使い方を間違えてないか?
0126デフォルトの名無しさんNGNG
.
..

があるんだろ
0127デフォルトの名無しさんNGNG
>>123
拡張子がないファイルは必ずディレクトリとは限らないのでワイルドカードで引っかけてはダメ。
Pathは"*.*"にして、AttrにfaDirectoryを使うべき。

それと"."".."というディレクトリをカウントに含めない。
0128デフォルトの名無しさんNGNG
おお、オレも同じようなことで悩んでたんだ。

.と..を取り除く方法って
(F.Name = '.')or(F.Name = '..')でifにかけるだけでいいの?

なんか原因不明のバグがあってこのifが原因かなぁと疑っているのだが
0129デフォルトの名無しさんNGNG
>>127
faAnyFileじゃないとだめだろ。

>>128
それでいいよ。
処理はしょってF[1]='.'で原因不明のバグを生んだことがあったけどw
0130デフォルトの名無しさんNGNG
良い初心者的質問ですね。>>123
2ch は匿名掲示板ですから、恥ずかしさは脇においといて聞くだけ聞いてみましょう。

コマンドラインで DIR やった場合にも

04/10/17 11:12 <DIR> .
04/10/17 11:12 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,540,747,264 バイトの空き領域

と出ますね? . と .. は必ず存在します。これらの意味、利用方法がわからない
場合は google で「親ディレクトリ カレントディレクトリ」のキーワードで調べて
みましょう。
0131デフォルトの名無しさんNGNG
そのまんまじゃねーかw
0132デフォルトの名無しさんNGNG
つーか、FindFirstのサンプルをぐぐれば出てくるだろ
0133デフォルトの名無しさんNGNG
ルートディレクトリでやったら . も .. もなかった。
.. は知ってたけど、. もないとは意外なり。
0134デフォルトの名無しさんNGNG
>>133
ルートディレクトリはカレントディレクトリとする意味ないし。
親ディレクトリがないのはあたりまえ。
0135デフォルトの名無しさんNGNG
>ルートディレクトリはカレントディレクトリとする意味ないし。
いみふめ
0136デフォルトの名無しさんNGNG
TInifile.ReadStringでキーが存在しなかった場合ってどうやって処理するの?
DefaultValueに変な値入れとくとかはなしで。
0137デフォルトの名無しさんNGNG
>>136
どうやってってデフォルト値がセットされてるとして処理するだけだろ
0138デフォルトの名無しさんNGNG
>>136
DefaultValueに変な値入れといて、変な値であったら存在しなかったと判断する。
0139デフォルトの名無しさんNGNG
ReadSectionしてNamesで拾ってけ
0140デフォルトの名無しさんNGNG
>>135
.はカレント、..はペアレント
0141デフォルトの名無しさんNGNG
delphi5に付属しているInstallShieldについて教えてください。
BDEも一緒にインストールさせたいのですが、どうしても、BDEがインストールできません。

この辺のやり方を解説しているサイトがあったら教えていただけないでしょうか?

具体的にはインストールしたマシンで実行しようとするとそんなデータベースは無いと怒られてしまいます。
0142デフォルトの名無しさんNGNG
Delphiインストールしたときにフルインストールしてあるのか?
0143141NGNG
>>142
即レスありがとうございます。
はい。きちんとインストールしてます。

すみません、私の質問の意味がきちんと伝わってないといけないので書きますと、
Delphi環境の入っていないマシンに自分の実行ファイルとBDEをインストールするように
InstallShieldで設定しているのに、InstallShieldを実行した後で、自分の作った
プログラムを実行するとそんなデーターベースソースは無いって怒られるんです。
0144デフォルトの名無しさんNGNG
Delphi製オープンソースアプリってどのくらいあるの
まとめサイトとかあればプリーズ
0145デフォルトの名無しさんNGNG
ttp://sourceforge.net/softwaremap/trove_list.php?form_cat=160
1581 件
0146デフォルトの名無しさんNGNG
Visual Basic (1951 projects)
が意外ですね。
0147デフォルトの名無しさんNGNG
ユーザー数の多さから言えば妥当だと思われ。
すでに C#にも抜かれているんだな。
> C# (1879 projects)
もうそろそDelphiから手を引くのには良い潮時か。
0148デフォルトの名無しさんNGNG
宣言する奴って停めて欲しいのかなw
ばかだなw
0149デフォルトの名無しさんNGNG
なんの宣言?
なんでも宣言に読める奴もばかだなw
0150デフォルトの名無しさんNGNG
ユーザー数だけで決めたいのなら、C# より C/C++/Java となりますが?>>147
0151141=143NGNG
色々とチェックするところがあって答えずらいかも知れませんがどなたかお願いします。
0152ググってきた。NGNG

269 :デフォルトの名無しさん :04/09/09 00:22
 BDEは付属のInstall Shieldでインストーラを作成し配布する。
 その他、BDEのディレクトリにあるBDEINST.CABを使ってWebで
 配布する方法もある。同じディレクトリにあるBDEINST.TXTを参照の事。
0153141=143NGNG
>>152
たぶんそれはくだすれの過去ログだと思いますが、その質問をしたのは私です。
で、そのアドバイスに従ってやってみてBDEはたぶんきちんとインストールできたのですが、
どうもデータソース絡みの設定がきちんとできてないみたいでしてデータソース絡みが
きちんとインストールされていないようです。

一月悩んでもまだ解決しないのでどなたかお知恵を貸してください。
0154デフォルトの名無しさんNGNG
>InstallShieldで設定しているのに、InstallShieldを実行した後で、自分の作った
>プログラムを実行するとそんなデーターベースソースは無いって怒られるんです。

じゃいくつか質問。
・ファイルは展開されていますか?(展開後の BDE ファイルがどれかはわかりますね?)
・BDE アドミニストレーターはコントロールパネルにありますか?それは起動できますか?

この二つがクリアされていれば、問題は BDE インストーラーではなく(おそらく)データベースの
Alias が定義されていないだけ。でしょう。

とりあえず、ここまで確認を
0155141=143NGNG
>>154
レスありがとうございます。

>展開後の BDE ファイルがどれかはわかりますね?
がはっきりとは分からないのですが、実行ファイルはきちんと展開してあります。

あと、BDEもコンパネにあります。しかし、インストールしたいdatasourceは
表示されないです。
0156デフォルトの名無しさんNGNG
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;

F5キーを押すとこのメソッドでエラーになるんですが、何でかな。
ショートカットキーは割り当ててないし。

ビジュアルコンポーネントをFreeした後にだけ発生します。
0157156NGNG
エラーはEAccessVaiolationで、また、エラーが起きるときのself.nameは空っぽです。
0158156NGNG
それと、F5キーを押すと、
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;
2回目でエラーが出ます。

エラーが出ない場合は5回ほど飛んできます。

self.nameに値が入ってる場合は、「ActionList1」です。
0159デフォルトの名無しさんNGNG
質問させて下さい。

あるアプリを起動させ、そのアプリのあるウィンドウが終了するのを待ちたいと思ってます。
アプリ自体の終了を待つならばWaitForSingleObjectでできるみたいですが、
そのアプリの特定のウィンドウの終了を待つにはどうしたら良いのでしょうか?

宜しくお願いします。
0160デフォルトの名無しさんNGNG
>>159
簡単にやるならウインドウハンドルが有効かどうかポーリングする。

一瞬の隙も見逃すわけに行かないなら
SetWindowLong関数を使ってウインドウプロシージャを書き換えてWM_CLOSEを拾う。
0161デフォルトの名無しさんNGNG
>>156
そのビジュアルコンポーネントのオーナーを
TCustomActionListのオーナーと同じものにすれば良いかと。
0162159NGNG
>>160
ありがとうございます。前者の方法でできました。
0163156NGNG
サンクス>>161
正常に動作するときにTCustomActionListのオーナーみてたら、
Freeされるフレームが混ざってました。

でも、ActionListのOwner差し替えしてなさそうなんだけどな...

とりあえず、アドレス違反を起こすコンポーネントが特定できたので、
サイアクの事態は回避しました。
0164156NGNG
ついでに知識として知っておきたいのですが、
ActionListによって、
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;
がコールされるものとされないものと、どこで分かれるんでしょうか。
ソースをざっと見たところ、ショートカットは設定されてないし...
いくらDelphiでも、アドレス違反エラーが出る場合の対処は(´・ω・`)ショボーン
0165デフォルトの名無しさんNGNG
IsShortCut はメニューアイテムに関連付けられた Action に対して、
フォーム等で押されたキーが TAction で処理されるべきかどうかを判定するための
メソッド。
TForm (かその祖先クラス)のメッセージハンドラ近辺から読んでいくと呼び出している
コードが見つかるだろう。
0166デフォルトの名無しさんNGNG
その「ビジュアルコンポーネント」が TActionlist を持っているのでは?
あと、Free じゃなくて FreeAndNil を使ってみたら?

0167デフォルトの名無しさんNGNG
サンクス>>165
なるほど、ショートカットを割り当ててるからコールされるんでなくてショートカットの割り当てを判定してるんですね。

じゃぁ、毎回コールされるのかな思って、幾つかあるフレームクラス(これらのCreate/Freeが繰り返される)を見直してみたら、アクションリストがあるのはアドレス違反起こすフレームにだけありました。
つまり、フレームクラスにアクションリスト貼り付けない方が良いのかな。
0168デフォルトの名無しさんNGNG
TFrame にメニューを貼るのは珍しいことではなく、よってアクションリストが貼りつくのも
問題ないと思うけど、頻繁に Create/Free? そいうコードはあまり経験ないなぁ。
多分、Free の方に何か問題があるのだと思うけど、ここから先はコードがないと何ともいえない。
0169デフォルトの名無しさんNGNG
メッセージでポストして遅延してFreeすれば大抵のFreeでのバグは回避される。
アクションとか使って、そのアクションのターゲット自体が破棄される時、
ターゲット自体にまだ実行されるコードが残っているとAVが発生する。
これは仕様だ。唯一の回避方法は正しい使い方をすること。
Releaseなんてのがあるのはそういった問題の回避のためなんだよね。
0170デフォルトの名無しさんNGNG
>>169
なるほど、参考になりました。

AVが発生するというより、
アクションリストが破棄されてるのにアクションリストのキーチェック処理がレジストされたまま、
みたいな感じなんで、もしかしたら今回の件は若干違うかもしれませんが。
テスト結果は今日明日にこのスレに報告致します。
0171デフォルトの名無しさんNGNG
TThreadを継承したオブジェクトで,Executeは完走しているのにWaitForから制御が戻りません。
故にデストラクタから制御が戻らず困ってるのですが,原因として何が考えられるでしょうか。
0172デフォルトの名無しさんNGNG
ちゃんとoverrideしているか?
0173171NGNG
procedure Execute; override;
としています。純粋仮想なのでinheritedは書いていませんが。
デストラクタが呼ばれた時Terminatedを見てExecuteのループから抜けてるのは確認しています。
0174171NGNG
あ,書き込んだあとで気付いたけどデストラクタの方のことですよね。
オーバーライドして,基底のデストラクタも呼んでます。
TThread.Destroyの
Terminate;
if FCreateSuspended then
Resume;
WaitFor;
この部分で止まってしまう訳なのです。
0175デフォルトの名無しさんNGNG
もう一度自分のコードを見直せ。
まさかデッドロックを引き起こす様なコードは書いてないだろうな?
WaitFor中にはSynchronizeの処理が行われたりするのだが、その時待機状態になるコードがある場合そこで止まる可能性がある。
いづれにしても、自分でトレースすればわかることだ。
0176デフォルトの名無しさんNGNG
フラグで止まってるヨカーン。
オレの経験上w
0177171NGNG
原因
 finalizationの中でスレッドを終了しようとした時,EndThreadが呼ばれてもスレッドが走行中のまま終了しなかった。
 故にシグナル状態にならず,MsgWaitForMultipleObjectsのあたりのループをぐるぐるしてた。
対策
 TThread派生オブジェクトのフィールドにExecute実行中かどうかを表すフラグを追加。
 (イベントオブジェクトだとResetしてもWaitForSingleObjectが返ってこなかったから)
 finalizationではTerminateを呼んだ後そのフラグを監視。
 実行中フラグが外れたらTerminateThread呼んだ後Free。

finalization中ではカーネルオブジェクトの扱いはやめた方がいいのかな。
お騒がせしました。
0178デフォルトの名無しさんNGNG
type
TTestThread = class(TThread)
protected
procedure Execute; override;
end;

procedure TTestThread.Execute;
begin
Sleep(3000);
end;

var
Thread: TTestThread;

initialization
Thread := TTestThread.Create(False);
finalization
Thread.Free;

現象を再現できない。バグの原因は違うところだと思う。もう一度自分のコードを見直せ。
0179デフォルトの名無しさんNGNG
すみません。質問させて下さい。
MessageDlgでボタン[mbYes,mbNo]を使用しているのですが、
ダイアログが表示された際にフォーカスが必ずmbYesに当たっているので
これをデフォルトでmbNoにフォーカスを当てたいのですが、方法が分かりません.
どなたかご教授ください。
0180デフォルトの名無しさんNGNG
CreateMessageDialog でダイアログを作成し、
FindChildControl で 'No' {No ボタンの Name}
を取得して、SetFocusedControl で上のコント
ロールを TWinControl にキャストしてフォーカ
スし、 ShowModal で返り値を得る。

泥臭い方法の一つ。
0181デフォルトの名無しさんNGNG
VCL ソースコードを持っているのなら、MessageDlg 丸ごとコピーして好きに改造。
これが一番早い
0182デフォルトの名無しさんNGNG
>>179
TApplication.MessageBox使え。
flagにMB_DEFBUTTON2。
API直でもいいけど。
0183180NGNG
やっぱスマートな方法はあるもんだなぁ。
いつも感心するぜ。
0184171NGNG
>>178
失礼。説明が足りないばかりに話を長引かせてしまって。
解放するのはDLLファイルなのです。
ホストアプリとしてボタンを2個持つアプリケーションを作成,一方を
 module := LoadLibrary('Project2.dll')
他方を
 FreeLibrary(module);
を行うよう設定
DLL側はTThreadから派生するクラスTMyThreadでExecuteだけをオーバーライド
グローバルにMyThread: TMyThreadを確保してプロジェクトのbegin〜end;で生成
他は下に示すようなものを作って検証
procedure TMyThread.Execute;
begin
 while not Terminated do
  Sleep(100);
end;

initialization
finalization
 if Mythread <> nil then
  Mythread.Free;
結果同様の現象が起こりました
0185デフォルトの名無しさんNGNG
>>184
確認できました。そんでもって調べました。Windowsの仕様です。結論としてはそのような使い方をしてはいけない。

参考
ttp://www.numeric.co.jp/Win32.htm#Q0004

DLL_PROCESS_DETACHが呼ばれた状態でスレッドが存在しないようにしましょう。
まあ開始終了の関数をエクスポートしておけば無事解決。
0186デフォルトの名無しさんNGNG
フォーム内でパネル1、パネル2 と分割し、パネル2 に Edit1 を配置しています。
実行すると、パネル2 からはみ出した、パネル1 内での位置っぽい感じで Edit1 が表示されます。
オブジェクトツリーでは Edit1 は間違いなくパネル2 の下にあります。

新たにパネル2 上に別の Edit2 を追加すると、そのように表示されるので、Edit1 が
何からおかしいようなのですが、その理由がわかりません。

何か思い当たることはあるでしょうか?
コードで位置を変更したりはしていません。
0187デフォルトの名無しさんNGNG
ソースコード持っていないのですが、TPanelコンポーネントのCaption
プロパティのWriteに使われているメソッドの書式を教えてください。
0188デフォルトの名無しさんNGNG
>>187 ご所望の Delphi のバージョンは?
0189デフォルトの名無しさんNGNG
>>187 ご所望の Delphi のバージョンは?
Delphi6 でも Doc ディレクトリに公開されているインターフェースのソースが公開されていますが
そちらは確認済みですよね?
0190デフォルトの名無しさんNGNG
MEMOコンポーネントに、URLリンクを貼ることは可能なのでしょうか?
もしくは、代替で実現できるコンポーネントはあるのでしょうか?
初心者すぎてすみません・・・
Delphi6使用です。
0191デフォルトの名無しさんNGNG
ListView(vsReport) で行ごとや項目ごとに文字色を変えるにはどうしたらいいのでしょうか?

VBのListItemsにはそんな感じのプロパティがあった気がするんですが
Delphiでみあたりません、教えてください
0192デフォルトの名無しさんNGNG
>>190
TEdit

>>191
OwnerDraw
0193デフォルトの名無しさんNGNG
>>187
こういうこと?
procedure TCustomPanel.SetText(const Value: TCaption);

>>188-189
答える気がないならレスしなくていいよ。ここはそういうスレだから。
0194デフォルトの名無しさんNGNG
>>193はCLXだった。
procedure TControl.SetText(const Value: TCaption);
0195デフォルトの名無しさんNGNG
>>186
TPanel でフォームの領域分割をする場合はTPanet.Align を
片方のパネルを alBottom、alLeft、alRight、alTop のいづれか
もう片方を alClient とする。
0196デフォルトの名無しさんNGNG
>>192
レスありがとうございます。
どこで使えるのか探してみていますが、TEdit内で
「○○はここです \\サーバ名\フォルダ...」のように、
通常文字とリンクを混合させた場合でも、リンクははれるのでしょうか?

要は、コメント欄を作って、その中でファイルへのリンクを貼りたいのです。
クリックすると、ファイルが開くような・・・
0197デフォルトの名無しさんNGNG
Delphi5Proにて…

ClientSocketのHostプロパティに無効なURLを入力すると
OnErrorイベントが発生しないで
「'ASync Lookup' APIでWindows ソケットエラー:そのようなホストは不明です。(11001)」
というメッセージが表示されちゃうのはなんとかできないのでしょうか?
0198デフォルトの名無しさんNGNG
そんなバナナ
0199デフォルトの名無しさんNGNG
>>192
あ〜、DelphiはItemにそういう項目はなくてListViewのCanvasをそこでいじるんですね
解決しましたー、ありがとう
0200デフォルトの名無しさんNGNG
OnAdvancedCustomDrawItem あたりで変えれますよ。ヘルプくらい読めよ。
0201デフォルトの名無しさんNGNG
TEditでリンクを貼る方法が見つからない・・・
ヘルプとか参照してみたんですが分からないです・・・orz
0202デフォルトの名無しさんNGNG
>201
TRichEdit
0203デフォルトの名無しさんNGNG
TThread.OnTreminate のヘルプに
> OnTerminate イベントハンドラは,メイン VCL スレッドのコンテキスト内で呼び出され,
> VCL メソッドおよびプロパティを自由に呼び出せるようにします。
とありますが、これは Synchronize を使用したときのようにスレッドセーフでないオブジェクトも気にせず扱えるということですか?
0204デフォルトの名無しさんNGNG
TThread.DoTerminate; のコード見ろよw
0205デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0206デフォルトの名無しさんNGNG
TFrameをダイアログにして表示する方法を教えて下さい。
0207デフォルトの名無しさんNGNG
Frame.Show;

じゃ表示されないんだYO!
0208デフォルトの名無しさんNGNG
ダイアログフォームにはっつけて表示
0209デフォルトの名無しさんNGNG
FrameのScreenに対するRectのとり方教えて下さいでつ。
0210デフォルトの名無しさんNGNG
まったくここの奴らは使えないな。
0211デフォルトの名無しさんNGNG
やり手のDelユーザはもうめっきり少なくなったからね
回答の質のレベルダウンは目を覆うばかりだな。あちこちのBBSも同じ状況
0212デフォルトの名無しさんNGNG
Formが表示されたり消えたりするとき、

Form.ManualFloat(Rect)

したくて、かつ、Formの位置を変えずに表示させたいんですが、
Rectには何を入れたら良いですか?
0213デフォルトの名無しさんNGNG
TStringsをStringで表示するにはどうすればいいのですか?
0214デフォルトの名無しさんNGNG
>>213
Textプロパティ
0215デフォルトの名無しさんNGNG
Delphiのプログラム中から指定のURLで新規にブラウザ(IE)を起動させたいのですが

WinExec('IEXPLORE.EXE' ,SW_SHOW);
ShellExecute(0, 'OPEN', Pchar('http://www.yahoo.co.jp/'),nil, nil, SW_SHOWNORMAL);

このようにやっていて一応目的は果たせているのですが、
環境によってはブラウザ起動後ホームに設定してあるページが1,2秒表示され、やっとyahooへ飛ぶといった挙動になってしまいます

HTMLのリンクをクリックした時のように最初からURLをセットした状態で新規に起動したいのですが、何か解決方法はありますでしょうか?
0216デフォルトの名無しさんNGNG
>>215
ん?1行目要るか?
0217デフォルトの名無しさんNGNG
>>216
一行目を入れないとすでに開いているブラウザにURLをセットしてしまいます
新規に起動させたブラウザにyahooをセットしたいのです
0218デフォルトの名無しさんNGNG
>>213
CommaTextつうのもある
0219ななしへたぐらま ◆XcB18Bks.Y NGNG
>>197
TClientSocket 11001 でぐぐってみたら一発目にこんなのが出てきましたよ.
http://www.talkaboutprogramming.com/group/comp.lang.pascal.delphi.misc/messages/242762.html
0220デフォルトの名無しさんNGNG
>>215
これでは駄目ですか?
ShellExecute(0, 'OPEN','IEXPLORE.EXE' ,'http://www.yahoo.co.jp/', nil, SW_SHOWNORMAL);
0221215NGNG
>>220
できました!
ありがとうございます
0222デフォルトの名無しさんNGNG
ShellExecute(0,nil,nil,...で十分。明示はダサい。
0223デフォルトの名無しさんNGNG
そのurlにこだわるのは孫さんとこの雇われグラマ?あんまり世間に迷惑かけないでね。
0224初心者NGNG
Delphiを使い始めて間もない者です。

テキストファイルに保存してある文字列を、
ComboBoxやMemoに読み込んで表示させたいのです。

テキストファイルの中身を、
a1,a2,a3,a4,a5,a6
b1,b2,b3,b4,b5,b6
c1,c2,c3,c4,c5,c6
と仮定して、
a1,b1,c1をComboBoxに
a2,b2,c2をMemo1に
a3,b3,c3をMemo2に
・・・
a6,b6,c6をMemo5に
というふうに、コンマごとに区切って表示させたいんです。
さらに、ComboBoxで選ばれた文字に対応するデータをMemoに表示させたいんです。
例えば、
ComboBoxで、a1を選んだとすると、
Memo1はa2、Memo2はa3、Memo3はa4、Memo4はa5、Memo5はa6が、
とこんな感じで。

LoadFromFileメソッドを使うってのは分かるんですが、
イマイチ良く分からないんです・・・。
よろしくお願いします。
0225デフォルトの名無しさんNGNG
個人的には設計をやり直した方がいいと思うぞ。
そんな処理、かなり強引なコード書くしかないと思う
0226デフォルトの名無しさんNGNG
代案すら出さない代案厨乙
0227デフォルトの名無しさんNGNG
目的もわからないのに代案が出せるか
0228デフォルトの名無しさんNGNG
目的がわからないのに代案を提案したくせにw
0229215NGNG
マターリおしえてやれ
0230デフォルトの名無しさんNGNG
にるぽ
0231デフォルトの名無しさんNGNG
>>224
丸投げイクナイ
もう少しポイントを絞って質問しなよ
0232デフォルトの名無しさんNGNG
>>224
正直お勧めはしない
procedure TForm1.FormCreate(Sender: TObject);
const
  TextFile = 'test.txt';
var
  str : TStringList;
  i,j,k : integer;
  tmpstr,substr : string;
  Control : array [0..5] of TWinControl;
begin
  Control[0] := ComboBox1;
  for i := 0 to 4 do
    Control[i+1] := TWincontrol(FindComponent('Memo'+inttostr(i+1)));
  str := TStringList.Create;
  try
    str.LoadFromFile(TextFile);
    for i := 0 to str.Count-1 do
    begin
      tmpstr := str[i];
      for j := 0 to 5 do
      begin
        k := pos(',',tmpstr);
        if k = 0 then
          k := Length(tmpstr)+1;
        substr := Copy(tmpstr,1,k-1);
        if Control[j] is TMemo then
          TMemo(Control[j]).Lines.Add(substr)
        else if Control[j] is TComboBox then
          TComboBox(Control[j]).Items.Add(substr);
        Delete(tmpstr,1,k);
      end;
0233232NGNG
    end;
  finally
    str.Free;
  end;
0234デフォルトの名無しさんNGNG
TStringListのCommaText使えばもっと簡単に出来ねえか?
0235デフォルトの名無しさんNGNG
CommaTextでやってみました。

procedure TForm1.FormCreate(Sender: TObject);
const
  TextFile = 'test.txt';
var
  str,str2 : TStringList;
  i,j : integer;
  Control : array [0..5] of TWinControl;
begin
  Control[0] := ComboBox1;
  for i := 0 to 4 do
    Control[i+1] := TWincontrol(FindComponent('Memo'+inttostr(i+1)));
  str := TStringList.Create;
  try
    str.LoadFromFile(TextFile);
    str2 := TStringList.Create;
    try
      for i := 0 to str.Count-1 do
      begin
        str2.Clear;
        str2.CommaText := str[i];
        for j := Low(Control) to High(Control) do
        begin
          if Control[j] is TMemo then
            TMemo(Control[j]).Lines.Add(str2[j])
          else if Control[j] is TComboBox then
            TComboBox(Control[j]).Items.Add(str2[j]);
        end;
0236デフォルトの名無しさんNGNG
      end;
    finally
      str2.Free;
    end;
  finally
    str.Free;
  end;
end;
0237デフォルトの名無しさんNGNG
コンボボックスのリストをセレクタとしてMemoの内容を切り替えるのだから、クラスやレコードの配列に保持しておくのだと思う。
0238デフォルトの名無しさんNGNG
そうそう、一回限りセットしても駄目
0239デフォルトの名無しさんNGNG
TStringGrid を使うのはどぉ?
0240デフォルトの名無しさんNGNG
TStringGridのRowsのCommaTextに入れて
ColsのCommaTextで読み出すのが一番簡単かな
0241初心者NGNG
返事が遅れて、すいません。
出掛けていたもので・・・。
質問の丸投げなんてとんでもないです。
ほんとスイマセン。
確かに強引なのは分かっているんですけど、
237でおっしゃっておられるように、
ComboBoxのリストをセレクタとしてMemoに表示させる内容を変更させるのが目的なんです。
教えていただいた方法で試してみます。
で、238でおっしゃっておられるように、
ComboBoxのリストのセレクタを変更させる毎に、
Memoに表示させる内容を変更させたいんですよね。
240でおっしゃっておられる方法ですれば、上手くいくのでしょうかね?
試してみたいと思います。
また行き詰まったら、質問してもいいでしょうかね?
よろしくお願いします。
0242デフォルトの名無しさんNGNG
string型の二次元配列つくって、ファイルから読み込んで、代入する。
あとはどうとでもできる。既出の TStringList の CommaText の使い方を
覚えるのがポイント。
0243240NGNG
Form上にComboBox,Button,Memoを5個,StringGridをポトペタ。
Cドライブに>>224の内容をtest.txtいうテキストファイルを用意。
Buttonをダブルクリックしてイベントハンドラに以下を記述。
procedure TForm1.Button1Click(Sender: TObject);
var
 SL,SL2: TStringList;
 i: Integer;
begin
 SL := TStringList.Create;
 SL2 := TStringList.Create;
 try
  SL.LoadFromFile('c:\test.txt');
  StringGrid1.RowCount := SL.Count;
  SL2.CommaText := SL.Strings[0];
  StringGrid1.ColCount := SL2.Count;
  for i := 0 to SL.Count - 1 do
   StringGrid1.Rows[i].CommaText := SL.Strings[i];
  ComboBox1.Items.CommaText := StringGrid1.Cols[0].CommaText;
  Memo1.Lines.Add(StringGrid1.Cols[1].CommaText);
  Memo2.Lines.Add(StringGrid1.Cols[2].CommaText);
  Memo3.Lines.Add(StringGrid1.Cols[3].CommaText);
  Memo4.Lines.Add(StringGrid1.Cols[4].CommaText);
  Memo5.Lines.Add(StringGrid1.Cols[5].CommaText);
 finally
  FreeAndNil(SL2);
  FreeAndNil(SL);
 end;
end;
0244240NGNG
続いてComboBox1をダブルクリックして以下を記述。
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 Memo1.Lines.Add(StringGrid1.Cells[1,ComboBox1.ItemIndex]);
 Memo2.Lines.Add(StringGrid1.Cells[2,ComboBox1.ItemIndex]);
 Memo3.Lines.Add(StringGrid1.Cells[3,ComboBox1.ItemIndex]);
 Memo4.Lines.Add(StringGrid1.Cells[4,ComboBox1.ItemIndex]);
 Memo5.Lines.Add(StringGrid1.Cells[5,ComboBox1.ItemIndex]);
end;
あとは実行してみれ。
0245240NGNG
エラー処理やもっとスマートな記述方法については自分で考えれ>>241
0246デフォルトの名無しさんNGNG
procedure Hoge(var X);
こういう手続きを宣言したとき引数の型を調べるにはどうすればいいのでしょうか?
0247デフォルトの名無しさんNGNG
二次元配列にGUIコンポを使うのは最低
0248デフォルトの名無しさんNGNG
>>246
無理
0249デフォルトの名無しさんNGNG
New Disposeは特殊で同等のものはユーザーは作れないと言ってみる
0250デフォルトの名無しさんNGNG
Move() とか TStream.Write とかなら、アドレスからポインタに変換してつくれそうだな。
New Dispose は難しそう。
0251246NGNG
>>248-250
ありがとうございました。
型によって一部の処理を変えたかったのですが素直にoverloadすることにします。
0252初心者NGNG
教えていただいた皆さん、ありがとうございました。
0253デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0254デフォルトの名無しさんNGNG
ファームを常に前に表示したいのですがどうすればよいのでしょうか?
0255デフォルトの名無しさんNGNG
FormStyleを一番下に
0256254NGNG
>>255
・・・すいません。見逃してました。。
ありがとうございます。
0257デフォルトの名無しさんNGNG
どうでもいいが、ファーム違う。フォーム。
0258デフォルトの名無しさんNGNG
>>254
SetWindowPosを使った方法もあります。
こっちの方が強力です。

SetWindowPos、HWND_TOPMOST
あたりを検索してみてください。
0259デフォルトの名無しさんNGNG
FormStyleのだと一瞬フォームが消えるけど
>>258だと消えないという違いもあるな。
0260デフォルトの名無しさんNGNG
>>251
recordなどの代わりにclassで実装するのも手だよ。
0261デフォルトの名無しさんNGNG
やたら前面に居座るフォームがあると、うざいんだよな。
初心者ほど使いたがるが。
0262デフォルトの名無しさんNGNG
>>261
感想は書かなくていいよ。スレ違い。
0263デフォルトの名無しさんNGNG
はたして、そうかな?
0264デフォルトの名無しさんNGNG
>>261

禿同。ユーザの立場からはそういえるね。
0265デフォルトの名無しさんNGNG
TMemoなんかにWindows標準のポップアップメニューが付いてますよね。

そのポップアップメニューを差し替えるのではなくて、追加メニューしたい場合はどうしますか?
0266デフォルトの名無しさんNGNG
TSpeedButtonのGraphにTImageListのImageをセットする方法を教えて下さいでつ。
0267デフォルトの名無しさんNGNG
>>265
無理でした
0268デフォルトの名無しさんNGNG
Visual Basicにてあるレーベルの上にカーソルを合わせた時にボタンコントロールを表示させたい
のですが、どのイベントプロシージャを使えば良いですか?
0269デフォルトの名無しさんNGNG
OnMouseMove
0270268NGNG
>>269
早い返事ありがとうございます。ついでにカーソルをはずした時のイベントプロシージャも
教えていただければ幸いです。
0271デフォルトの名無しさんNGNG
>>266

ImageList1.GetBitmap(0,SpeedButton1.Glyph);
0272デフォルトの名無しさんNGNG
フリーのDelphi 6.0を使ってプログラムの勉強中です。
練習でデスクトップのキャプチャーを作ってみたのですが、思うように動作しません。

  bmp:=Tbitmap.Create;
  bmp.width:=screen.Width;
  bmp.height:=screen.Height;
  dc:=getdc(0);
  hide;
  sleep(500);   {←※}
  bitblt(bmp.canvas.handle,0,0,bmp.width,bmp.height,dc,0,0,srccopy);
  show;

フォームにボタンを貼り付け、
ボタンを押したら自分自身を隠してからキャプチャーしようと思ったのですが、
※の行がないと、ウィンドウが消える前の状態がキャプチャーされてしまいます。
これだとマシンの処理速度によっては待ち時間が無駄になってしまうので、
もっとスマートに、hideの処理が終わったら次に進むようにするには
どう書けばよいのでしょう?
0273デフォルトの名無しさんNGNG
よくスクリーンセーバーで画面の左上隅にマウスを持って行ったり緊急起動キーを
押したら自動的にスクリーンセーバーが立ち上がるソフトがありますよね。

あれって、タスクトレイにアイコンも無くてタスクバーにもアプリのタブが無いソフトが
時々ありますけど、ああいうのってどうやって作るのでしょうか?
参考になるサイトなどありましたら教えてください。
0274デフォルトの名無しさんNGNG
半角カナを全角カナへ変換する関数はありますか?
0275デフォルトの名無しさんNGNG
>>273
普通にプロジェクトを作ればタスクトレイには何も出ない。
Hide;と書けば自分自身のウィンドウも消える。
タスクバーからも消すにはちょっと手間がかかる。
http://pc3.2ch.net/tech/kako/1022/10229/1022921598.html
ここの22以降を見るべし。
0276デフォルトの名無しさんNGNG
>>274
Windows APIを呼ぶとコンパクトにできる。
ttp://www.wwlnk.com/boheme/delphi/tips/tec1310.htm
0277デフォルトの名無しさんNGNG
>>272

オレのところでは Sleep なくてもいいけどね。
かわりに

while IsWindowVisible(Handle) do;

とかしておけばいいんでは? API使うのはOSにききたいからだけど。
0278272NGNG
>>277
ありがとうございます。さっそく試してみたのですが、
残念ながらその方法ではダメでした。

どうやら、Hideメソッドが呼ばれると、まずVisibleプロパティをクリアしてから
デスクトップを再描画しているみたいです。

Slot 1のセレロン300という化石のようなマシンなので、ものすごく遅いんです。
ウィンドウも上下左右の枠を順番に描画しているのがわかるぐらいなのです。
0279デフォルトの名無しさんNGNG
Application.ProcessMessages
または
PostMessageして遅延させろ
0280デフォルトの名無しさんNGNG
>>278
Sleep なしでもうまくいく環境もあることからアプリ内のメッセージ処理の問題ではない。
デスクトップの再描画の速度の問題だから、アプリ内で本質的な遅延時間を決めることはで
きない、と思われ。タイマやSleepなどで逃げるしかない。
0281デフォルトの名無しさんNGNG
コンポーネントのParentを設定すると、Ownerも差し替えられるんでつか?

なんか迷惑だな。
0282272NGNG
>>279-280
いただいたヒントでぐぐって調べてみたのですが、PostMessage等は
いったん別のプロセスに制御を渡して(?)、待ち時間を有効に使う手段のようですね。

つまり、GDIで再描画の完了を検出する方法はないということなのでしょうか?
0283281NGNG
あれ、勘違いでだったかも。

FormのParentがFreeされても、Formの実態はFreeされませんね。
Formの場合だけ???
0284デフォルトの名無しさんNGNG
今さらというか今日気付いたことなんですけど
TEditってAlignmentプロパティ無いんですね。
意外でした・・。
0285デフォルトの名無しさんNGNG
VBのコレクションのようなことはできますか?
(たとえば複数のTEDITを配列のように扱うなど)
0286デフォルトの名無しさんNGNG
今、Windowsから送られてくるMessageをきっかけに動くプログラムを改良中なんですけど
あるメッセージが送られてきたときに特定のキーが押されているかどうかを調べるにはどうすればいいのでしょうか?

ぶっちゃけて言うと、WM_LBUTTONDOWNを受け取ったときにShiftキーが押されているどうかを調べたいんですけど
0287286NGNG
すんません
GetKeyStateを使ったらアホみたいに簡単にできました。
お騒がせしてすんません。
0288デフォルトの名無しさんNGNG
> コンポーネントのParentを設定すると、Ownerも差し替えられるんでつか?

何言ってるの?
例えば、Form1 の Panel1 に Button1 をのせたら Button1 の Owner は Form1、
Parent は Panel1。
0289デフォルトの名無しさんNGNG
> FormのParentがFreeされても、Formの実態はFreeされませんね。

TForm にはふつう parent はない。無理に設定すると、親が Free するとき
ウィンドウは破棄されて、言語上のオブジェクトが生き残る、という珍妙な状況になる。
0290デフォルトの名無しさんNGNG
その状況で、はたしてオブジェクトは生きているのかな?
0291デフォルトの名無しさんNGNG
画面の再描画が必要になると、デスクトップや他のウィンドウにWM_PAINTとWM_NCPAINTが
PostMessageで送られると思われるので、BitBlt実行時にはまだ WM_PAINTの処理が
終っていないのかも知れませんね。

RedrawWindow で強制的に再描画させる事は出来ないかな?
0292デフォルトの名無しさんNGNG
>>289は TWinControl.Parentと親ハンドルを混同している。
0293デフォルトの名無しさんNGNG
>>241
一個分のデータ構造を自前で定義しておいて TComboBox の Items.Objects に
つっこんでおいたらどうですか?
データの部分は TStringList を使うとか、array[] of PChar へのポインタとか
お好みのものでどうぞ。
いずれの場合も、Items はデータ自身を所有しないので、自分で確保したものは
適切な方法で解放する必要があります。

>>289
Form には Owner があり、自動生成なら Application グローバル変数。
Application グローバル変数が廃棄されるときに Form も廃棄されます。
オブジェクトが存在しないとウィンドウは存在できないけど、オブジェクトが
存在するからといってウィンドウが存在するとは限りません。
0294デフォルトの名無しさんNGNG
>>293

289 です。そう、そのとおり。それを言っている。TForm の Owner はデフォルトで
Application であり、Parent はない。 SetParent(Handle) で無理矢理設定すると
Windows の仕組みによって、Parent が破棄されるとき Form のウィンドウは破棄され
るけど、インスタンスの破棄の権利はVCLの仕組みによって Owner が持っている。
0295デフォルトの名無しさんNGNG
>>291
> RedrawWindow で強制的に再描画させる事は出来ないかな?

いや、だから再描画をトリガすることはできるけど、一般にそれが終わったことを
検出するのが難しい、ということ。とくに他アプリでは。前面のウィンドウを最小化
したり、Hide したりするだけで自動的に再描画されるし。
0296デフォルトの名無しさんNGNG
>>292
>TWinControl.Parentと親ハンドルを混同している。

そうなの? Parent のウィンドウハンドルと、その「親ハンドル」とはどこが違うの?
0297デフォルトの名無しさんNGNG
配列型について質問させてください。
格納されるデータ数が同じだとしたら、次元を増やしても問題ないでしょうか?
配列内で同一の性質を持つデータ間で演算を行いたいのですが、
例えばデータを二次元配列で定義していると、条件判断文を相当な回数行わなければならなくて、
その条件事態を配列の数値で判断してしまえば(つまり性質を配列の数字で定義します)
if文やらを使う必要は無くなるのですが、その場合五次元以上の配列になってしまいます。
単純に演算回数だけを見れば後者のほうが少ないのですが、
あまり配列を複雑にするのはマズイような気がしました。
分かりにいうえ、つまらなくて申し訳ないですが、どなたかアドバイス頂けると助かります。
0298297NGNG
すいません、少し説明が抜けました。配列はレコードで定義してます。
ですので、次元を下げた場合、レコードの中で性質を定義する変数が増えます。
条件判断文はそのプロパティを使用して行うということです。
0299デフォルトの名無しさんNGNG
if 文の数が多くなっても、配列の構造が単純なほうを選ぶと、バグの少ない、
メンテが楽な、そして、ロジックが見えやすいコードになると思います。
0300297NGNG
>>299
ありがとうございます。
やはり配列が複雑だとバグの危険性が伴うのですね。
三次元配列くらいなら、極端に条件判断が増えることもないので、ひとまずはそれで組んでみます。
0301194NGNG
>>219
 いろいろありがとうございました。
 なにぶん…いろいろあってレス返せない環境にいたもので反応遅れてすみませんでした
 今後はきをつけます
0302デフォルトの名無しさんNGNG
配列を一気にクリアする方法ってないですか?
文字列は''、数値は0になるだけでいいんですが
0303デフォルトの名無しさんNGNG
>>302
FillChar
0304デフォルトの名無しさんNGNG
>>303
サンクス!早速試してみます
0305デフォルトの名無しさんNGNG
すみません。
Delphiは複数インストールすることはできないのでしょうか、、
Delphi6において、Update Pack2を当てているとエラーがでるソースがあるので
当てているものと当てていないものと、二つ環境を作りたいのですが。。
0306デフォルトの名無しさんNGNG
ソースを修正すべきだろ
0307デフォルトの名無しさんNGNG
自分が作ったものではないのでまだあまり弄れないという状況なので。。
できればDelphiを複数用意したいのです。。(´Д`;
0308デフォルトの名無しさんNGNG
vmware体験版
0309デフォルトの名無しさんNGNG
>>305
それはUpdatePackを当てていないものならエラーはでない。という保証はあるの?

漏れの場合、OSをMeからXPにしたところ
ActiveXの取り込みを使ってるプロジェクトが、終了時に原因不明のエラーを吐く様になった。
わざわざOSのクリーンインストール(途中で致命的ミスがあったため結局こうするしかなくなった泣)から
UpdatePackの当てなおしやら、いろいろやりなおしたけど、結局解消しなかった。
今でも解消してないけどデバッグ・プログラミングには影響ないから我慢してそのまま使ってる。
0310デフォルトの名無しさんNGNG
コンソールアプリケーションでRandom関数使うと、
吐き出される乱数が整数なんです・・・
実数の乱数を吐かせるにはRandG関数を使うのでしょうか?
GUIだと範囲指定しなくても使えるけど、
コンソールだと範囲指定しれ!ってコンパイラさんに怒られるんですぅ('A`)
0311テレパス名無しさんNGNG
× Random()
○ Random
0312デフォルトの名無しさんNGNG
レベルが低くて申し訳ないと思うのですが質問させてください。

あるtxtファイルの、最後の行の内容を変数に代入して使いたいのですが、
どうすればいいでしょうか。

(a.txt)
あいうえお
かきくけこ
さしすせそ

というものがあったとして、
さしすせそを変数に入れたいということです。

書き込むときには、
TStringList.CreateしてLoadFromFileで読み込み、Add→SaveToFileとしています。

応用で、
(b.txt)
あ,い,う,え,お
か,き,く,け,こ
さ,し,す,せ,そ

という、各行が,区切りになっているものがあったとして、
さ,し,す,せ,そをそれぞれ別の変数に入れたいのですが
これはどうでしょうか?
これも最後の行だけでいいのですが。
0313デフォルトの名無しさんNGNG
>>296
知りたければVCLソースを読みなさい。
0314デフォルトの名無しさんNGNG
>>312
宿題ですか? ではヒントだけ。
ヘルプでTStringListとTStringsのプロパティーを全部見れば解かる。
0315デフォルトの名無しさんNGNG
>>312
>>243-244を見てね
0316デフォルトの名無しさんNGNG
>>313
VCLソースに「親ハンドル」の定義が書いてあるのか?
0317デフォルトの名無しさんNGNG
親ハンドルってなに? 親のハンドルなら Parent = TWinControl.Handle と同じじゃないの?
0318デフォルトの名無しさんNGNG
D6personal のヘルプ

TControl.Parent

Parent プロパティは,コントロールの親の名前を示します。

property Parent: TWinControl;

これって、間違いだよな。「親の名前」が TWinControl なわけないし。
ヘルプ書いた人は、インスタンスと「インスタンス変数の名前」を混同してるな
0319デフォルトの名無しさんNGNG
広場、落ちてるな。このまま閉鎖ってことはないだろな、たのむよ、管理人さん・・・・
0320デフォルトの名無しさんNGNG
動的配列を扱っていて、
●●●○○○○
↓
●△△●●○○
ということをやっています。
○は空、●は既存データ、△は挿入したデータです。
データの数は数百から数千ほどを想定しています。
●を移動するのに、二つ方法を考えています。
1、forで一つずつコピーする
2、データ挿入後SetLengthで切る
どちらが高速ですか?またはもっとマシな方法ありますか?
0321デフォルトの名無しさんNGNG
List 関係のクラスを使うと自動的に insert できる
0322デフォルトの名無しさんNGNG
>>320

挿入や途中の要素の削除などをする場合は、動的配列は面倒だし、有効データの数も管理してくれない。
どんなデータかわからないけど、TObject の派生クラスにして、TObjectList を使うのが
おすすめ。インスタンス管理も自動化されるし。欠点は、いちいちコンストラクタを実行しなければ
ならないことと、データの入出力部分をキャストしなければならないこと。専用のリストクラスを
つくれば、どちらも解消される。ファイルアクセスのメソッドも作れるし。
0323デフォルトの名無しさんNGNG
>>321-322
現在、TList使ってますが、楽したいんじゃなくて速くしたいんです。
面倒でも高速な方法をとりたいということで考えてるところです。
要素が増えたり減ったりするたびにメモリを確保したり解放したりしない方法で
何とか速くできないかと思い、その一つのアイデアとして上のように想像してます。
0324デフォルトの名無しさんNGNG
>>320
System.Moveをつかうとよろし。
範囲チェックしてくれないから自分でいろいろ管理する必要があるけど
0325デフォルトの名無しさんNGNG
実行中、Formの右上の×で閉じた時
「はい」「いいえ」のダイアログをMessageDlgで出して
「いいえ」が選択された場合フォームは閉じないようにしたいのですがどうしたら良いですか?

それとイベントのOnCloseとOnCloseQueryはどちらに書いたほうがよいですか?
0326デフォルトの名無しさんNGNG
>>323
>要素が増えたり減ったりするたびにメモリを確保したり解放したりしない方法

それなら、はじめから必要最大限の要素を作っておけば、並び替えは TList でも
TObjectList でもポインタだけだから高速なはず。動的配列のように、内容をすべて
コピーしなおすのはスピード重視なら愚の骨頂。
0327デフォルトの名無しさんNGNG
自分でポインタのリストを管理したいなら、ポインタの動的配列にしたらいいんでは。
自分で Move してずらすこともできるし。実体は別に確保する必要があるが。

それでも TList の方が使い勝手がいいと思うけど
0328デフォルトの名無しさんNGNG
USBに接続するバーコードリーダから読みとった値をプログラム内で
処理しようとしています。
このバーコードリーダはキーボードとして動作する為、読みとった値を
あたかもキーボードから入力したかのごとくPCに送り込んできます。
そのため、バーコード内にキーコード外のデータ(漢字など)が含まれて
いると、正しく値を読みとれません。

Keydownイベントで値を読みとろうとしてみたのですが、仮想キーコードに
変換済みの値しか読みとれず、上手くいきません。
キーコードが何であろうと関係なく送られてきたデータを読みとりたいの
ですが、何か良い方法はないでしょうか?
0329デフォルトの名無しさんNGNG
>TCustomForm::FormStyle
>実行時に FormStyle の値をなるべく変更しないでください。

とありますが、実行時にfsStayOnTopしたい場合はどうしますか?
0330デフォルトの名無しさんNGNG
「なるべく」なんだから、変更してもいいんでは
0331デフォルトの名無しさんNGNG
>仮想キーコードに変換済みの値しか読みとれず、上手くいきません。

うまくいかない例(漢字など)をあげてください。どのようにうまくいきませんか。
0332329NGNG
変更しましたが、StayOnTopになりませんですた。
0333329NGNG
ごめんなさい、コーディングのバグですた。StayOnTopになりますた。
0334デフォルトの名無しさんNGNG
StayOnTopウィンドウの下に、エラーダイアログやShowMessageダイアログが隠れますが、回避する方法はありまつか?
0335334NGNG
別ウィンドウのオープンをフックできれば...
0336デフォルトの名無しさんNGNG
>>334
回避って、それが普通では?
0337334NGNG
>>336
エラーメッセージウィンドウが出たときだけはStayOnTopをオフにしたいでつぅ
0338デフォルトの名無しさんNGNG
StayOnTopになっているウィンドウのハンドルを指定してMesssageBox APIでメッセージを表示。
0339デフォルトの名無しさんNGNG
1つのPopupMenuを複数のコンポに割り当てて、
PopupMenuのクリックイベントでどのコンポで発生したのか判断で期末か?
0340デフォルトの名無しさんNGNG
TMemoのタブ幅はどうやって設定しますか?
0341デフォルトの名無しさんNGNG
>>325
OnCloseQueryをヘルプで検索して説明をよく読めば
あなたの疑問は解決するだろう
0342デフォルトの名無しさんNGNG
>>325
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 CanClose := MessageDlg('閉じる?', mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end;

>>339
PopupComponentってのがそれな希ガス
0343デフォルトの名無しさんNGNG
>>340
EM_SETTABSTOPS
0344デフォルトの名無しさんNGNG
>320
インデックスによる参照がいらないなら、
リンクリストを自作すると移動が不要なので理論上は最速。
>329,334
正しくはNormalizeTopMostsとRestoreTopMostsを使う。
エラーってのが例外の事ならApplication.OnExceptionに
ShowExceptionをNormalizeTopMostsとRestoreTopMostsで挟んだ
自作の例外ハンドラを指定する。
0345デフォルトの名無しさんNGNG
> リンクリストを自作すると移動が不要なので理論上は最速。

それは、削除や挿入はそうですけど、たとえば1000番目の項目にアクセスするときは
リンクを辿って行かなければならないでしょ。
0346デフォルトの名無しさんNGNG
じゃあ好きなようにしたら?
0347デフォルトの名無しさんNGNG
TApplication.NormalizeTopMosts

NormalizeTopMosts メソッドは,一番上のフォームとして指定した
フォーム(FormStyle が fsStayOnTop のフォーム)の上に別のフ
ォームを重ねて表示できるようにします。

だから、とにかく fsStayOnTop をフォームに設定するところは同じなんでは?
0348デフォルトの名無しさんNGNG
>たとえば1000番目の項目にアクセスするときは

いや、1000番目に挿入するときも削除するときもそう。追加するときは大変。

リンクリストはシークエンシャルアクセス以外は使い道なさそう。そもそもインデックス
でアクセス出来なければ、挿入や削除もあんまり意味ないし
0349デフォルトの名無しさんNGNG
配列でって前提で話してるんだから代案不要
0350デフォルトの名無しさんNGNG
そんなことはないだろ。

>またはもっとマシな方法ありますか?
0351デフォルトの名無しさんNGNG
挿入するのに配列つかって全部実体コピーして後ろにずらすのはアホだけだろ

まっ、ポインタと同じサイズのintegerなんかの配列だったらそれでもいいけど。
0352325NGNG
>>341-342
ありがとうございます
なかなかレスがつかなかったのでくだすれにすらふさわしくないくだらない質問だったのかと思って過去ログ漁ってたら同じような質問があって解決しました
0353デフォルトの名無しさんNGNG
>>350
配列というランダムアクセスがO(1), 挿入・削除がO(n)なデータ構造選んでるんだから
そこを覆すような代案するなんてアホだろ。
オーダー変えずにオーバーヘッドの削減する方法を聞いてるんだろ。
0354デフォルトの名無しさんNGNG
> オーダー変えずにオーバーヘッドの削減する方法を聞いてるんだろ。

で回答は?
0355デフォルトの名無しさんNGNG
> オーダー変えずにオーバーヘッドの削減する方法を聞いてるんだろ。

TList も TObjectList も同じオーダー。実体コピーかポインタコピーかの違い。
0356デフォルトの名無しさんNGNG
TObjectListってAssignを使って実体コピーしてたの?
知らなかった。
0357デフォルトの名無しさんNGNG
>>289-294

Parent は GetParent(Form.Handle) で得られるウィンドウの事で、
Free は DestroyWindow の事だったのか!

それなら正しい。
0358デフォルトの名無しさんNGNG
>>356
違う。TList も TObjectList も挿入・削除ではポインタコピー。
配列なら実体コピーだろ、て意味。
0359デフォルトの名無しさんNGNG
ちょっとでも速くしたいのなら、思い付いたやり方を全部測定するべき。
0360334NGNG
サンクスでつ>>347

ShowModalなウィンドウが開く前後をトラップというか監視できれば、
>Application->NormalizeTopMosts();
>Application->MessageBox("This should be on top.", "Look", MB_OK);
>Application->RestoreTopMosts();
で回避できますね。

FormクラスとApplicationクラス調べてみまつ。
0361334NGNG
やっぱ、ShowModalに色々種類があるので、
>Application->ShowException(E);
の前後で、NormalizeTopMosts/RestoreTopMostsしてみまつ。
0362334NGNG
テストプログラム作っててわかったんですが、
MainFormの場合はShowModalやエラーダイアログがTopMostウィンドウより上に来てくれますね。
その時点のMainFormみたいなのを設定できないんだろうか。

NormalizeTopMostsの中のソース見ましたが、ちょっと追い難いでつ。
0363デフォルトの名無しさんNGNG
FormParent: TFormの中で、

>FormChild.Parent := FormParent;
>FormChild.Show;

とすると、フォームの中にフォームが入りますが、
FormChild上のMomoコンポーネントがマウス受け付けません。
タブキーでFocusがくるとキーボードは受け付ける、みたいな。
どうすれば普通に動作しますか?
0364デフォルトの名無しさんNGNG
MDIにする
0365デフォルトの名無しさんNGNG
やっぱMDI以外では無理で塚。
0366334NGNG
他ダイアログのShowModalメソッドコールをイベントで受け取れないでしょうか?
0367デフォルトの名無しさんNGNG
ShowModal を呼ぶ前にフラグ立てるなり、メソッドを呼ぶなり、好きにできるでしょ
0368デフォルトの名無しさんNGNG
イベントにしたいなら、PostMessage() で適当にメッセージ投げるとか
0369334NGNG
自分で呼ぶShowModalじゃなくて、エラーダイアログ等のイベントを取りたいで津。
0370デフォルトの名無しさんNGNG
TApplication.OnException

OnException イベントは,アプリケーション内で処理されない例外が生成されたときに発生します。
0371デフォルトの名無しさんNGNG
>>334

fsStayOnTop を使いたい気持ちはわかるけど、君みたいなプログラマがたくさんいて、
他のアプリでも同じようなことしてたら、君のフォームが最前面にくる保証はないよ。
0372334NGNG
>>371
他アプリじゃなくて、自アプリ内でつ。
フォームが変わる度に、それらについてくる付箋紙みたいな画面、みたいな。
0373372NGNG
MDIにすると、チャイルド画面が親画面と親画面のコントロールの間に挟まれてへんなんなっちゃうし。
0374372NGNG
↑
334の間違いでつ。
0375デフォルトの名無しさんNGNG
DLLで他のプロセスをフックしたフックプロシージャをブレークポイントに設定しても止まってくれません。
他のプロセスのフックプロシージャを止めるのは無理なのでしょうか?
0376●NGNG
いいえ
0377375NGNG
>>376
レスありがとうございます。
やりかたをおしえてもらえないでしょうか?
0378デフォルトの名無しさんNGNG
>親画面のコントロール

MDIの親フォームにメニューとステータスバー以外のコントロールをおくのは間違い
0379334NGNG
NormalizeTopMostsもNormalizeAllTopMosts効かないけどなんでだろ。

>ChildForm.Parent := ParentForm;
>ChildForm.ManualFloat(Rect);
>ChildForm.Show();

みたいなことしてまして、ManualFloatでParentがNilになってます。
parentがnilのFormだと駄目なんかな?
0380デフォルトの名無しさんNGNG
ttp://koti.mbnet.fi/jutanu/pics/foorumit/ffdshow.jpg
みたいな挙動をするソフトを作るには、どうすればいいか、ヒントとかを教えてください。
(リンク先のは、DelphiでいえばTreeViewコンポーネントみたいなものだけど、実際に自分が聞きたいのは、ListBoxを使った時の
実装方法のヒントとかを教えてください。)
0381デフォルトの名無しさんNGNG
ShowMessageしたとき、Disableなのに、Enabledを見るとTrueになりますでつ。

正しく判断する方法はありますか?
Win32APIのIsWindowEnabledでも駄目ですた。
0382デフォルトの名無しさんNGNG
>>380
TCustomListBoxを継承して作ればいいんじゃないのかな。
実装方法はTCheckListBoxが参考になるとおもう。
0383デフォルトの名無しさんNGNG
重なったウィンドウをMoveして重ならなくするライブラリとかコードは無いで塚?
0384デフォルトの名無しさんNGNG
最大化してたり、スクリーンのサイズが実行環境によって違うし。
0385デフォルトの名無しさんNGNG
ここで聞いていいのかな?
「Delphi オブジェクト指向プログラミング」技術評論者からでていた本ですが
他に同等のおすすめ本ありませんか? 去年復刊したときに買い逃した
0386デフォルトの名無しさんNGNG
なさそう。Delphi本自体が少ないし。
0387デフォルトの名無しさんNGNG
>>385
在庫僅少、今すぐに注文しろよ。Amazon はじめ、品切れ続出のようだ。
http://bookweb.kinokuniya.co.jp/htm/4774104272.html
0388デフォルトの名無しさんNGNG
この本、去年復刊される前はヤフオクとかですごい高値(一万以上とか)で出品
されてたよな。「人の足下見やがって...」と出品者を呪ったもんだ。
復刊されたから俺でも入手できた訳だが、復刊.com と (このスレにも多数いるで
あろう)賛同者の皆様方には、ほんと感謝してる。ありがとう。
0389デフォルトの名無しさんNGNG
>>381
VCLソースのShowModalを見なさい。
0390224NGNG
前日はいろいろとありがとうございました。
で、実行してみたのですが、どうも上手くいきません。
テキストファイルに入っている文字列は、スペースを含むものがあるのですが、
スペースで言葉が区切られてしまいます。
例えば、
a b,のような文字列があるとすると、a bを一つの文字で扱いたいのに、
aとbが区切られてMemoに表示されてしまいます。
aがMemo1に、bがMemo2にと言う感じです。
ComboBoxにも同じ現象が起きています。

さらに、ComboBoxで選んだ文字列に関連する文字列だけが
Memoに表示されるのではなく、全て表示されてしまいます。
テキストファイルを前回と同じで
a1,a2,a3,a4,a5,a6
b1,b2,b3,b4,b5,b6
c1,c2,c3,c4,c5,c6
と仮定して、
ComboBoxでa1をえらんだところ、
Memo1にa2,b2,c2を
Memo2にa3,b3,c3を
・・・
Memo5にa6,b6,c6を
と全て表示されてしまうんです。
なぜでしょう?
お手数ですが、またご教授願います。
0391デフォルトの名無しさんNGNG
前にも回答したけど、表示するのと文字列を保持する配列を分離すること。
配列に代入出来さえすると、なんでもできる。それから、TStringList の
CommaText は空白も区切りにするから、"" で囲むなどの工夫が必要。
0392デフォルトの名無しさんNGNG
>>389
ShowModalん中で無限ループでメッセージ読み続けてるだけで、
親フォームには何にも通知されないんだね。
0393デフォルトの名無しさんNGNG
親フォームって何のこと?

> 無限ループでメッセージ読み続けてるだけで、

モーダルループっていう。
自分以外はちゃんと EnableWindow( ,false) にされてるでしょ
モーダルダイアログが TCustomForm の派生クラスなら、Screen.ActiveCustomForm
の FormState に fsModal が入ってるから分かる
0394デフォルトの名無しさんNGNG
ウィンドウハンドルで、それが自分のアプリ内のウィンドウかどうか判断できましたっけ?
0395224NGNG
テキストデータの文字列のスペース部分は、アンダースコアを入れることにします。
また、ご教授いただいた通り、テキストファイルから取り出すのに使用した配列から、
さらに必要な部分だけを取り出して保存させる別配列も作成してみます。
ありがとうございました。
0396デフォルトの名無しさんNGNG
>>393
にしては、他ウィンドウのEnabledを見てみたらtrueなんだけど?
0397デフォルトの名無しさんNGNG
>fsStayOnTop を使いたい気持ちはわかるけど、君みたいなプログラマがたくさんいて、

fsStayOnTopを使わずに、自アプリ内でいつもトップウィンドウにする方法教えて下さいでつ。
0398デフォルトの名無しさんNGNG
試したわけでもないが、FormのOnActivateでSetWindowPosしてZオーダー変えれば?
0399デフォルトの名無しさんNGNG
>>394

EnumThreadWindows で列挙した中に入ってるかどうか。
あるいは、もっと簡単に GetWindowThreadProcessId を使って ThreadID か
ProcessID が Application.Handle のそれと一致するかどうかでわかる
0400デフォルトの名無しさんNGNG
>>393
>他ウィンドウのEnabledを見てみたらtrueなんだけど?

いまソースが見られないところにいるんだけど
VCL のプロパティーに EnableWindow API の結果が反映されてないだけでは?
IsWindowEnabled API だとどうなる?
0401デフォルトの名無しさんNGNG
>>398
>FormのOnActivateでSetWindowPosしてZオーダー変えれば?

TScreen.OnActiveFormChange イベントのほうがいいと思う
0402380NGNG
>>382
ありがとうございます。ちなみにそれは自分でコンポーネントを作る必要があると
解釈してよろしいのでしょうか?
継承とか使わないところは調べていないのでイマイチ意味がわかりませんが、
もう少し自分で勉強してみます。ありがとうございました。
P.S.レス遅くなってすみませんでした。
0403デフォルトの名無しさんNGNG
アプリケーションを起動するとすでに起動されているかどうかをチェックして
起動されていなければそのまま実行し、
起動されていればParamStrを渡して終了というのをやりたいんですが、
どうやればいいのでしょうか?
0404デフォルトの名無しさんNGNG
mutex in google
0405デフォルトの名無しさんNGNG
サンクス>>400
勘違いしてたけど、APIだとfalseになってる。これで判定しやすくなった。
0406405NGNG
>VCL のプロパティーに EnableWindow API の結果が反映されてない
ということは、イベントハンドラとかメソッドは期待できないんだな。
変更を監視しとかなきゃならんのか。Timerしかないんか。
0407デフォルトの名無しさんNGNG
Delphiで作ったコントロールをOCXにコンパイルしたいのですが、
やさしく教えてくれるサイトとかありませんか?
ちなみにTCustomControl派生です。
0408デフォルトの名無しさんNGNG
>>405
>>401
0409405NGNG
ごめんなさい、読み落としてマスタ>>408
0410405NGNG
>TScreen.OnActiveFormChange イベントのほうがいいと思う

TApplicationEventsアイコンみたく、Screenアイコンは無いんでつか?
0411デフォルトの名無しさんNGNG
GetActiveWindowでアクティブなウィンドウのハンドルを取ったとして、
どうやったらVCLオブジェクトを参照できるんでしょうか。
0412デフォルトの名無しさんNGNG
>>410
ないから、型を調べて Form1 のメソッドにして代入する。
0413デフォルトの名無しさんNGNG
TForm.Handle全検索
0414デフォルトの名無しさんNGNG
>>411
>GetActiveWindowでアクティブなウィンドウのハンドルを取ったとして

Screen.ActiveCustomForm.Handle と比較して一致したら好きにキャストしてつかう。
一致しなかったら、VCL のフォームじゃなく、API やコモンダイアログのウィンドウだから
VCLオブジェクトとウィンドウは無関係かもしれない
0415デフォルトの名無しさんNGNG
>TApplicationEventsアイコンみたく、

アイコンって・・・・
コンポーネントだろ。
0416デフォルトの名無しさんNGNG
ValueOf(>>415)=0
0417デフォルトの名無しさんNGNG
ValueOf(>>416-417)<0
0418デフォルトの名無しさんNGNG
>Screenアイコンは無いんでつか?

なんか馬鹿っぽくて、教えた句ねー
0419デフォルトの名無しさんNGNG
サンクス>>412-414
GetActiveWindowをやめて、Screen.ActiveCustomFormを使い待つ。
0420デフォルトの名無しさんNGNG
DelphiでDAOの使い方書いてあるサイトとかないでしょうか?
コンポーネント使わずCreateOleObjectでから始めたいのですが
0421デフォルトの名無しさんNGNG
TPaint を使って描画をしているのですが、激しくちらついてしまいます。
OnPaint イベントで Paint.Canvas に描き込むだけでは駄目なのでしょうか?
0422デフォルトの名無しさんNGNG
×TPaint
○TPaintBox

です。
すみません。
0423デフォルトの名無しさんNGNG
つたない知識ですが

>>421
Refreshメソッドは×
あれは背景色で塗りつぶしたあとPaintをメソッドを呼ぶからどうしてもちらつく

プロパティでcsOpaqueを追加すると領域をクリアしないでベタッと描画する
ただし領域全体を塗りつぶさない場合じゃない前の色のがゴミとなって残るので使えない
0424デフォルトの名無しさんNGNG
TPaintBox.OnPaint だけで描画してちらつくことはないですよ。移動させない限り。
0425デフォルトの名無しさんNGNG
>>395=224
>テキストデータの文字列のスペース部分は、アンダースコアを入れることにします。

スペースを生かすために "" で囲むのは簡単だよ。
こんな感じ。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
  sl:TStringList;
begin
  s := 'a b,c d,efg h,i j,klm';
  sl := TStringList.Create;
  try
    sl.CommaText := '"' + StringReplace(s,',','","',[rfReplaceAll]) + '"';
    Memo1.Lines.Assign(sl);
  finally
    sl.Free;
  end;
end;
0426375,377NGNG
やはり無理なのでしょうか?
0427デフォルトの名無しさんNGNG
>>420
昔ここで紹介されていたサイト
ttp://hp.vector.co.jp/authors/VA036663/dbmsbyd6p.htm
ttp://www.geocities.jp/fjtkt/program/_frame.html

0428デフォルトの名無しさんNGNG
>>427
これだけわかれば十分です
ありがとうございました
0429デフォルトの名無しさんNGNG
>>187さんでも書かれているTPanelのCaption(正確にはTControl.Captionですかね)の
プロパティのアクセスメソッドの詳細を知りたいのですけど、???の部分のメソッド名とプ
ロトタイプをどなたか教えてください。

バージョンはDelphi6 Personalです。

property Caption: TCaption read ??? write ??? ;
0430デフォルトの名無しさんNGNG
TControl = class(TComponent)
property Caption: TCaption read GetText write SetText stored IsCaptionStored;
つうか*.intで調べろ。
0431デフォルトの名無しさんNGNG
>>430
controls.int の記述?
パーソ版には無いっぽい。
0432デフォルトの名無しさんNGNG
delphiでXML操作にTXMLDocumentを使ってるのですが、xpathを利用する方法はないですか?
特定のパスの集合をとってきたいのですが。
0433デフォルトの名無しさんNGNG
学生なのですがDelphi6Personalにはまりました
それでDelphi8のアカデミック版を購入しようと思っているのですが見当たりません
どこに行けば購入できるのでしょうか?
0434デフォルトの名無しさんNGNG
>>433
http://pc5.2ch.net/test/read.cgi/tech/1095325802/201-300
0435デフォルトの名無しさんNGNG
usesに書いたユニット名にマウスカーソルをあわせたとき出るヒントに、
最後にカッコ数字がでるけど、何を表してるの?
Windows.pas (12)っていうやつ
0436デフォルトの名無しさんNGNG
unit 宣言の行番号。

unit Windows;
とかの。
0437デフォルトの名無しさんNGNG
ラベルのCaptionに改行を入れたいのですが、
コードを書いて入れるしか無いのですか?(プロパティエディタとかから入れる事は出来ないのですか?)
0438デフォルトの名無しさんNGNG
>>433
ぐぐったら
http://store.nttx.co.jp/_II_BOL1112JDL
あったけど
0439デフォルトの名無しさんNGNG
>>437
.dfm を直接編集すれば出来る
0440デフォルトの名無しさんNGNG
タスクトレイに
NID : TNotifyIconData;
NID.cbSize :=Sizeof(TNotifyIconData);
NID.uID := 1;
NID.hIcon := Application.Icon.Handle;
NID.Wnd :=Form1.Handle;
NID.szTip :='Test';
NID.uCallbackMessage :=WM_USER + 100;
NID.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP ;
Shell_NotifyIcon(NIM_ADD, @NID);

としてうまくタスクトレイに入ったのですが
そのアイコン上で右クリックしても
タスクバーを右クリックしたようなメニューがたまに出て
反応が悪いんです
左クリックの反応はちゃんと出るんですが
おそらくタスクバー上で左クリックしても何もならないからたまたまかなっと思っております

これってどうやったらなおるんですかね?

クリックしたときの処理は
SetForegroundWindow(Handle);
GetCursorPos(Point);
if (Msg.wParam = WM_LBUTTONDOWN) then
PopupMenu1.Popup(Point.x, Point.y)
else if(Msg.wParam = WM_RBUTTONDOWN) then
PopupMenu2.Popup(Point.x, Point.y);
です
0441デフォルトの名無しさんNGNG
>>438
サンクスです
0442デフォルトの名無しさんNGNG
>>440
漏れのプログラムで動いている同じようなコード

procedure TForm1.WndProc(var Message: TMessage);
begin
 case Message.Msg of
     WM_LBUTTONDOWN:
      PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
     WM_RBUTTONDOWN:
      PopupMenu2.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
 end;
  inherited;
end;
0443デフォルトの名無しさんNGNG
>> case Message.Msg of

じゃなくて

if Message.Msg = WM_USER + 100 then
case Message.LParam of

だろな、この場合。
0444デフォルトの名無しさんNGNG
>>440
> if (Msg.wParam = WM_LBUTTONDOWN) then

wParam と lParam を間違えてるよ。
0445440NGNG
>>442
>>443
>>444
情報ありがとうございます。

>>442
>>443
受け取りがTMessageにしてますが
ソース上部での
procedure宣言の部分はどうしてるんですか?

>>444
lParamにするとメニューが出なくなりました・・・。
ソースコピー元は
ttp://homepage1.nifty.com/MADIA/delphi/Win32API/Tasktray.htm
です。

引き続きよろしくお願いします。
0446デフォルトの名無しさんNGNG
> procedure宣言の部分はどうしてるんですか?

WndProc の override でしょ。

WM_USER+100 なら procedure(var Msg:TMessage);message WM_USER+100;
を TForm1 のメソッドにするのでは?

> lParamにするとメニューが出なくなりました・・・。

MSDN の NOTIFYICONDATA Structure のところでは

The wParam parameter of the message contains the identifier of the
taskbar icon in which the event occurred. The lParam parameter holds
the mouse or keyboard message associated with the event.

だから、メッセージID は LParam だよ。
0447440NGNG
>>446
ん〜やってみましたが
依然変わらずですねぇ

メニュー出す処理自体は
TMsg型で受けてるのでwParamなのでいいと思うんですが

ポップアップメニューを出してから
他の部分をクリックするとメニューが消えるように
SetForegroundWindow(Handle);
をやってまして
(>>440で書いてますけど)

それをコメントにすると
誤反応がなくなりましたので
もしかしたらSetForegroundWindow(Handle);の部分が悪いのかな?っと思ったり・・・。

>>442さんは
SetForegroundWindow(Handle);
を書いても誤反応とかしないですか?
0448デフォルトの名無しさんNGNG
フォームの再描画無理やりとめるのってどうやるの?
0449デフォルトの名無しさんNGNG
>433
ここのところのBorland製品は、ライセンスがけちで、
アカデミック版に関してはDelphi7以降、プログラミング学習用途以外の禁止を
利用規程で明確に記している。
で、MSのVisual Studio系とは違ってアカデミック版では商用利用は確実にできないし、
下手するとフリーソフト公開も危ういライセンスなので気を付けろ。
0450デフォルトの名無しさんNGNG
>>447
>TMsg型で受けてるのでwParamなのでいいと思うんですが

ソースは?
0451デフォルトの名無しさんNGNG
>>447
原理がわかってないんだろ?
それ用のコンポがいっぱいあるから、DLして使ったほうがいい
0452440NGNG
>>450
ttp://homepage1.nifty.com/MADIA/delphi/Win32API/Tasktray.htm
ここのコピーです
0453デフォルトの名無しさんNGNG
>>452

それ、メッセージハンドラ で TMsg 型で受け取ってるのが間違いのもと。
TMessage 型で受け取るべき。そうするとドキュメントと一致する。

TMessage 型の lParam の領域が TMsg 型の wParam の領域に相当してる。
ウィンドウメッセージを受け取るときは TMessage 型にするように。
0454デフォルトの名無しさんNGNG
delphiでp2pソフトって作れますか?
0455デフォルトの名無しさんNGNG
>>448
LockWindowUpdate
0456デフォルトの名無しさんNGNG
Share(仮称)はDelphi7製
0457デフォルトの名無しさんNGNG
>>433
8は.NET用だぞ。ProfessionalにはDel7Studioもついてるけどマニュアルは無い。
0458デフォルトの名無しさんNGNG
来月Delphi 2005も出るしな
0459デフォルトの名無しさんNGNG
いまからDel8買うのは狂気の沙汰。
0460デフォルトの名無しさんNGNG
今Delphi 8を買えば無償でDelphi 2005にアップグレードできる。
0461デフォルトの名無しさんNGNG
Del8Pro買えば同封されているDel7でネイティブアプリが作れて、Del8で.NETアプリや既存アプリ(プロジェクト)の.NET化ができるということで合っていますよね?
2005のことは全く知らないけどどうなるんでしょう?
0462デフォルトの名無しさんNGNG
ny1はVC++でny2はBCBだっけか?
0463デフォルトの名無しさんNGNG
PageControlで作ったタブを右クリックでも切り替わるようにしたいのですがどうしたら良いのでしょうか?
0464デフォルトの名無しさんNGNG
>>463
こんな感じ

uses
  CommCtrl;

procedure TForm1.PageControl1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  hti:TTCHitTestInfo;
  ret:integer;
begin
  if Button = mbRight then begin
    hti.pt := Point(X,Y);
    ret := TabCtrl_HitTest(PageControl1.Handle,@hti);
    if ret <> -1 then
      PageControl1.ActivePage := PageControl1.Pages[ret];
  end;
end;
0465デフォルトの名無しさんNGNG
>>460
詳しく
0466463NGNG
>>464
ソースまでつけてもらってありがとうございます
明日試してみます
0467440NGNG
>>453
TMessage型に変更しましたが変わりませんでした

しかし開発環境はWinXP(SP2)なのですが
Win2000(SP4)上でコンパイルしたプログラムで確かめると
誤動作をしなくなりました

しかし同じプログラムをWinXP(SP2)上で実行すると
やはり誤動作を確認できました

もうちょっと頑張ってみます・・・。
0468デフォルトの名無しさんNGNG
インラインアセンブラでMMX使うと浮動小数点のエラ−が出ます。
なにか宣言しないと使えないんでしたっけ?
DELPHIは6、CPUは当然MMX有効。
0469デフォルトの名無しさんNGNG
>>468自己レス
emmsを書き忘れてました・・・

別な質問ですが、BITMAPはSCANLINEで調べるとY方向が連続してない
ようなのですが、これをきれいにメモリ上に連続した状態にする方法はありませんでしょうか。
for文でY方向のSCANLINEをやると遅くなるので、インラインアセンブラ内の
演算だけでアドレスを計算したいのですが・・・
0470デフォルトの名無しさんNGNG
>>469
Windowsのビットマップはメモリ内だと上下がひっくり返って格納されてる。
左下ピクセルのアドレスを先頭にw*bpp*hバイトのサイズで連続した領域になってたはず。
0471デフォルトの名無しさんNGNG
ビットマップの一部だけを処理するならScanline[y]を事前に配列に突っ込んでキャッシュしておく方法もあり。
0472デフォルトの名無しさんNGNG
>>468
もっとMMXを勉強しろ。それはMMXの仕様を知っていない証拠だ。
0473デフォルトの名無しさんNGNG
>>468
FPUレジスタとMMXレジスタは共用です
0474デフォルトの名無しさんNGNG
>>469
ビットマップのサイズを8の倍数にしる。
0475デフォルトの名無しさんNGNG
VBAでいうところの、
On Error Resume Next
にあたる命令ってある?
0476デフォルトの名無しさんNGNG
ない。例外処理使え。
0477デフォルトの名無しさんNGNG
>>476
�d
0478385NGNG
>>387

遅レスになってしまったがそこでなんとか買えました
情報thx
0479デフォルトの名無しさんNGNG
Delphiのデフォルトアイコンって、どのファイルを参照すればいいの?

一度変えたものの元に戻そうと思ったらファイルがどれだかわからなくなっちゃった。
0480デフォルトの名無しさんNGNG
TStringGridのコンポーネントを作っているのですが、
ColCountを変更したときに、ある動きをさせたいと思っています。

ところが、VCLでColCountプロパティのSetColCountメソッドが
privateになっているので、overrideすることができません。
ColCountが変更されたことを取得するイベントもみあたらないよう
なのですが、列数を変更された場合に処理を行うにはどうすれば
いいでしょうか?
0481デフォルトの名無しさんNGNG
>>480
TCustomGrid.SizeChangedをオーバーライド
0482デフォルトの名無しさんNGNG
>>481
おお、こんなのあるんすね。
ちとみてみます。また、あとで報告します。
0483デフォルトの名無しさんNGNG
>>481
バッチリです。できました。ありがとうございました。
しかし、SizeChangedて・・・、てっきりコンポの幅かと思って見過ごしてました。
今度からは引数もちゃんとみまつ・・・・
0484デフォルトの名無しさんNGNG
またコイツかぁ
0485デフォルトの名無しさんNGNG
Delphiでボタンをクリックすると僕の口座にお金が振り込まれるようなソフトって出来ないでしょうか。
0486デフォルトの名無しさんNGNG
デバッグ中は二重起動防止しない、ミューテクスも作らない、
単独動作中は二重起動防止する、という動作をさせて楽したいのですが、
アプリの側からデバッガ接続の有無を知るにはどうしますか?
0487デフォルトの名無しさんNGNG
できるよ。Button1Click にそのようなコードを書くだけ
0488デフォルトの名無しさんNGNG
>>486

function IsDebuggerPresent:bool; stdcall; external 'kernel32.dll' name 'IsDebuggerPresent';

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsDebuggerPresent then
    ShowMessage('Debugger is Present')
  else
    ShowMessage('Debugger is not Present');
end;
0489デフォルトの名無しさんNGNG
>>488
ありがとうございます。
Windows.pasにはなくて、宣言しなきゃいけないみたいですね。
0490デフォルトの名無しさんNGNG
DebugHook
0491デフォルトの名無しさんNGNG
>>489

Win95 では使えない。VCL に相当するシンボル定数がありそうだけどしらない。
リリース版では、宣言消して

const
IsDebuggerPresent = false;

みたいにしておけば完璧かな
0492デフォルトの名無しさんNGNG
>432
>delphiでXML操作にTXMLDocumentを使ってるのですが、xpathを利用する方法はないですか?
>特定のパスの集合をとってきたいのですが。

ヘルプ見てもないような感じですね。。
自分もこの機能がほしかったのですが、、
しょうがないからまたMSのパーサにまたお世話になるか、、
0493デフォルトの名無しさんNGNG
propertyのdefaultに文字を指定する方法を教えてください
0494デフォルトの名無しさんNGNG
StringGridの行をタブ区切りテキストにして
クリップボードにコピーしたいんですが、
タブ区切りテキストの作り方がよくわからなくて・・・
何を挿入すればタブになるんですか?
0495デフォルトの名無しさんNGNG
昨日2005のup案内のハガキ来たけど悩むなぁ。。。
0496デフォルトの名無しさんNGNG
>>494
タブじゃないのか?
VK_TAB、またはChar(9)、または#9
0497デフォルトの名無しさんNGNG
>>496
仮想キーコードで良かったのですね。
早速やってみます。ありがとう。
0498デフォルトの名無しさんNGNG
> 仮想キーコードで良かったのですね。

えっと、普通文字列のなかに挿入するときは Char(9)、または#9 の方をつかいますよ。
0499デフォルトの名無しさんNGNG
>>493
ヘルプくらい嫁

>default 指令と nodefault 指令は,集合の基本型の上限と下限が 0 〜 31 の範囲の順序値である順序型と集合型のみサポートしています。

つまり不可能
0500デフォルトの名無しさんNGNG
>>499
エエー
VCLだとキャプションとか表示されてるのに・・・・・
無理なのかぁぁ さんくす
0501デフォルトの名無しさんNGNG
Caption にはデフォルトはないでしょ。dfm に必ず保存されるし。
コンストラクタで設定してるだけじゃないの
0502デフォルトの名無しさんNGNG
ってかIDEが設定してるのか。動的につくると設定されないし、Button1 とか。
0503デフォルトの名無しさんNGNG
>>495
エディタとかinline展開とか小技は効いている。
個人的にはローカルで履歴が持ててDiff取れるのがいい。
(プロジェクトごとではないような気がしたが半分寝てたので)

で、半分寝てたのでx86-64(EM64T)に対応したかどうか聞き忘れた。
どうだったか教えてエロイ人!
0504デフォルトの名無しさんNGNG
>個人的にはローカルで履歴が持ててDiff取れるのがいい。
これプロジェクトの管理機能としてはかなりお粗末だよな。
旧IDEでも外部ツールのやりくりで簡単に実現できるレベル。
0505デフォルトの名無しさんNGNG
個人の趣味で適当に作るツールまで外部ツールを使えと
0506デフォルトの名無しさんNGNG
拡張子に番号付けする程度かよ
0507デフォルトの名無しさんNGNG
個人の趣味で適当に作るツールには履歴なんかいらんだろ
0508デフォルトの名無しさんNGNG
つまり金出して、重いIDE使いたくもないのにVerUpする価値はない
0509デフォルトの名無しさんNGNG
> で、半分寝てたのでx86-64(EM64T)に対応したかどうか聞き忘れた。

してない。
0510デフォルトの名無しさんNGNG
おんめら、そげな話題わ談話室でやってけろ
0511デフォルトの名無しさんNGNG
>>507
Explorerでプロジェクトフォルダごとバックアップとって
WinDiffにSendToで渡して比較するのはめちゃ便利だぞ。
0512デフォルトの名無しさんNGNG
>>510

枯れ木も山のにぎわい。近頃ここすたれすぎだから景気づけ。
0513デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0514デフォルトの名無しさんNGNG
超低レベルDelphiユーザの在庫僅少ってことだ
0515デフォルトの名無しさんNGNG
>>512 >>514
たしかに初心者レベルの質問がいたるところで激減してる・・・・・・
なんか地殻変動があったのかな?
Delphi入門者が減ったのか? みんなGoogle使いがうまくなったのかな・・・・・
0516デフォルトの名無しさんNGNG
入門者が減ったんではなく、初心者がいなくなっただけ。こだわりがない分、
沈みかけた船から逃げ出すのも早いってことだ
0517デフォルトの名無しさんNGNG
ネガティブ思考は禿るよ
0518デフォルトの名無しさんNGNG
現実をみなきゃ。戦わなきゃ。 > アポジカ 禿対策
0519デフォルトの名無しさんNGNG
AOwnerってどうして必要なんでしょ?
Parent Windowだけあればいい気がします。
何にも考えないで常にCreate(Self)って書いてますが、
Selfじゃなければなにか問題あるのかと。
0520デフォルトの名無しさんNGNG
AOwner のほうは解放の責任も負ってくれるんじゃない?
0521デフォルトの名無しさんNGNG
perl、php、delでcgiを作ったらどれが一番実行速度が早いの?
当然、Windows上のwebサーバーで実行するとして。
0522デフォルトの名無しさんNGNG
速度で言ったらコンパイラが速いだろ。
0523デフォルトの名無しさんNGNG
mod_perl, mod_php > Delphi > perl, PHP
DelでApacheモジュール作れるならそれが最速
0524デフォルトの名無しさんNGNG
あるコンポを作っていて、そのconstructorで以下をすると、
コントロール''は親ウィンドウを持っていますってエラーになるんだけどなぜ??
Formatを指定しなければ、エラーにならず、FormのOnCreateに書いても
エラーにならないのに!!

fDateTimePicker := TDateTimePicker.Create(Self);
fDateTimePicker.Parent := Self;
fDateTimePicker.Format := 'yyyy';
0525デフォルトの名無しさんNGNG
constructorの時点でまだWindowハンドルが割り当てられていない。
ハンドルが割り当てられていないとParentになれない。
割り当てられているかどうかはHandleAllocatedで確認できる。
CreateHandleをオーバーライドしてブレークポイントを置いてみればわかりやすい。
0526デフォルトの名無しさんNGNG
98系のpcしかないんだけどプロ版どれ買えば良い?
0527デフォルトの名無しさんNGNG
PC買え
0528デフォルトの名無しさんNGNG
4文字かよ
0529デフォルトの名無しさんNGNG
パーソナルコンピューターをお買いあげになってくださいませ
0530デフォルトの名無しさんNGNG
>>526
PCカエ
0531デフォルトの名無しさんNGNG
7買ったら駄目なああああああああああああん?
0532デフォルトの名無しさんNGNG
>>531
普通に8カエヨ 7ツイテクル
0533デフォルトの名無しさんNGNG
PC買うのが正解だろ
0534デフォルトの名無しさんNGNG
delphi7買ってC#は他でやろうと思ったんだけど
0535デフォルトの名無しさんNGNG
学生ならJ、C++、C#、VB全部で5kだよ
ただし.net 2003だけど

と布教してみる
0536デフォルトの名無しさんNGNG
いや、だから98系のPCで今から始めるのは駄目。
まず、PC買え。
0537デフォルトの名無しさんNGNG
98系ってのはWin98系だよね?
まさかPC98じゃないよね?
0538デフォルトの名無しさんNGNG
いくらなんでもそれはないだろ・・・
0539デフォルトの名無しさんNGNG
>>534
Del2005カエヨ Win32、.netデツカエルシ、.netナラC#モツカエル
0540デフォルトの名無しさんNGNG
PC-9801VM21しかないんですがどれを買えばいいのでしょうか?
0541デフォルトの名無しさんNGNG
TurboPascal
0542デフォルトの名無しさんNGNG
つーか、ただでさえ安定しないDelphiで開発し、
ブルーバック出したくないならNT系買え。
0543デフォルトの名無しさんNGNG
Delphi オブジェクト指向プログラミング 
ってオブジェクト指向を学ぶもの?それともDelphiを学ぶもの?
オブジェクト指向については他の専門書籍あったよね?
0544デフォルトの名無しさんNGNG
Delphiにおけるオブジェクト指向を学ぶもの。

あの本がでた当時、ポインタを意識しなくていいけど、
そのかわりに、クラス変数がデフォルトで参照渡しな、オブジェクト指向言語が
他にあんまりなかったので、あの本は有用だったと思うよ。
今読んでも、Delphiのオブジェクト指向の知識は、JAVAやC#にかなり流用できるしね。
0545544NGNG
あ、でもやっぱり、オブジェクト志向の習得には、本読むだけじゃだめで、
基本的な知識を本読んで得た後、
上手く書かれた他言語のオブジェクト指向を取り込んだソースコードを
Delphiなりなんなりに移植してみるのが、一番勉強になると思う。
0546デフォルトの名無しさんNGNG
OOPL なら Java から入門しれ ただだし 本もいっぱいある
0547デフォルトの名無しさんNGNG
Delphi はOOPLとしては中途半端。グローバル変数やら、ただの関数やらがあって
手続き型言語との中間。Java や C# のような言語が入門にはいいだろう。
0548デフォルトの名無しさんNGNG
> Java や C# のような言語が入門にはいいだろう。

当分死滅しないしな
0549デフォルトの名無しさんNGNG
確かに他の言語のこととかもわかるようになってくると
中途半端間は否めないな・・
今ではDelphiの中途半端感に慣れてしまったのでDelphiが一番使いやすいけど
これからプログラミングを学んでいくなら
完全OOPL型の言語の方が学びなおす手間がかからなくていいかもね
0550デフォルトの名無しさんNGNG
>>542
安定しないのはおまえが組んだプログラムだけだろ(大爆笑)
0551デフォルトの名無しさんNGNG
まあ、Delphi本にしろ、他の言語にしろ、
オブジェクト指向に関しては、
塚越本は、なかなかいいよ。
0552デフォルトの名無しさんNGNG
いくらなんでも内容古すぎ
0553デフォルトの名無しさんNGNG
ホットキーが押されたらフォームを最前面に表示したいのですが
どのようにすればよいでしょうか?
サンプルなどあったら教えてください。よろしくです。
0554デフォルトの名無しさんNGNG
>>553 CTRL+A

  public
    id:ATOM;
    procedure WMHotkey(var Msg:TWMHotkey);message WM_HOTKEY;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  id := GlobalAddAtom('HogeHogeHotkey');
  RegisterHotkey(Handle,id,MOD_CONTROL,Ord('A'));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnregisterHotKey(Handle,id);
  GlobalDeleteAtom(id);
end;
0555デフォルトの名無しさんNGNG
つづき

procedure TForm1.WMHotkey(var Msg: TWMHotkey);
var
  ThreadID1,ThreadID2: DWORD;
begin
  if Msg.HotKey = id then begin
    ThreadID1 := GetWindowThreadProcessId(GetForegroundWindow,nil);
    ThreadID2 := GetCurrentThreadId;
    AttachThreadInput(ThreadID2,ThreadID1,true);
    SetForegroundWindow(Handle);
    AttachThreadInput(ThreadID2,ThreadID1,false);
    BringWindowToTop(Handle);
  end;
end;
0556デフォルトの名無しさんNGNG
for構文の処理なんですが、
Memo1〜Memo8までを対象とした処理を書くときに、

var
i:integer;
begin
for i:=1 to 8 do
begin
{処理内容}
end;
end;

となりますよね?
このときに、MemoiもMemo[i]もコンパイルされないんですが、
どういう表記をすればコンパイルされますか?
0557デフォルトの名無しさんNGNG
FindComponent('Memo'+IntToStr(i)) as TMemo
0558デフォルトの名無しさんNGNG
ColorBoxの表記を日本語ではなく英語にすることはできないでしょうか?(´Д`;
0559553NGNG
>>554
すぺしゃるさんくす。
後ほど試して見ます。
0560556NGNG
Memo1.Textや、
Memo1.Color:=clRed
を557さんの方法でやると、エラーが出ます。

FindComponent('Memo'+IntToStr(i)) as TMemo.Textや,
FindComponent('Memo'+IntToStr(i)) as TMemo.Color:=clRedは、
コンパイルされません。
どうすれば良いですか???
ほんとくだらない質問ですいません;;
0561デフォルトの名無しさんNGNG
>>560
おぬし、OOPの勉強しなおし

FindComponent('Memo'+IntToStr(i)) as TMemo までが TMemo のインスタンス
だから

(FindComponent('Memo'+IntToStr(i)) as TMemo).Text := 'おぬし、OOPの勉強しなおし';

な感じ
0562556NGNG
はい、勉強しなおしますw
0563デフォルトの名無しさんNGNG
delphiで作ったソフトがメモリーリークを起こしているみたいなのですが、
本当にメモリーリークを起こしているか確認するソフトは無いでしょうか?
0564デフォルトの名無しさんNGNG
標準でついてるユニットから使わない部分を削除すれば実行形式ファイルは小さくなりますか?
たとえばuses FileCtrl;としてもSelectDirectory()しか使わない場合、他の関数を残しておくと何か無駄が生じたりしませんか?
0565デフォルトの名無しさんNGNG
>>563
MemCheck使え。
0566デフォルトの名無しさんNGNG
>>564
unitのinitialization/finalization部分にコードが記述されてるユニットはusesするだけで
強制的に一定のコードがリンクされる。
記述されてないユニットは明示的に使っていない関数・変数・クラスは削除される。
0567デフォルトの名無しさんNGNG
>>566
お答えありがとうございます。よくわかりました。あまり気にしないことにします。
0568デフォルトの名無しさんNGNG
http://www.monazilla.org/document/directwrite.html

この内容通りやってうまく表示されたのですが再び表示しようとすると真っ白になってしまいます。
どうすればうまく表示できるでしょうか?
0569デフォルトの名無しさんNGNG
>>568
「再び表示しようとすると」って、Refresh のこと? 動的に書き込んだ内容は
表示してるだけでどこにもドキュメントがないので Refresh したら、書き込む
前の空白が表示されるんでは
0570デフォルトの名無しさんNGNG
ここは低レベルなDelphoiですね。
0571デフォルトの名無しさんNGNG
超初心者用ってスレ見に来るくらいだから低レベルで当たり前。
もちろん答えてる側のレベルの話だよな。
0572568NGNG
>>569
いえ、新しくHTMLを作成しそれを表示した場合です。
言い換えますと>>568の方法では一度表示したら内容を変更することができません。
(直接 HTML を表示するのではなく一度htmlファイルを作りそれを表示した場合はうまくいきます。)
0573デフォルトの名無しさんNGNG
詳細忘れたけどなんかのイベントハンドラで再度HTML書き込めばいいんじゃないの。
0574デフォルトの名無しさんNGNG
ページプロデューサーで透過タグを複数使いたい時って、
どうすれば良いんでしょうか?
ヘルプ読むと、ページプロデューサーからページプロデューサーへ、
コンテンツを引き継ぐことが出来るようなことは書いてあるんですが、
分からん。
0575デフォルトの名無しさんNGNG
571 名前:デフォルトの名無しさん [sage] 投稿日:04/11/10 22:35:56
超初心者用ってスレ見に来るくらいだから低レベルで当たり前。
もちろん答えてる側のレベルの話だよな。
0576デフォルトの名無しさんNGNG
>>565
563ではないけど、MemCheckでSystemユニットやらGraphicsユニットでリーク出る。
なにを信じればいいのかわからん。
0577デフォルトの名無しさんNGNG
使い方間違ってるかパッチ当ててないか新種のバグを発見したか放置されてるバグのどれかだな。
0578デフォルトの名無しさんNGNG
readすげーなw
memoにいったん書き出してから保存だと死ねたけどread,readlnなら一瞬だなw
0579デフォルトの名無しさんNGNG
なぜにmemoと比較するか
0580デフォルトの名無しさんNGNG
ListBoxで選択された内容をボタンを押したときにクリップボードに格納したいのですがどうしたらいいでしょうか?
0581デフォルトの名無しさんNGNG
はじめのうちは意味不明な事をするものさ
0582デフォルトの名無しさんNGNG
http://forum.nifty.com/fdelphi/faq/00058.htm
0583デフォルトの名無しさんNGNG
>>582
ありがとうございます
さっき検索していたときの一番にそこに辿りついたのですが見逃してました
0584デフォルトの名無しさんNGNG
delphiXの使い方を解説しているサイトってありませんか?
インストールしてサンプル読んだけど、さっぱり使い方がわかりませぬ。
0585デフォルトの名無しさんNGNG
書籍があったような。
0586デフォルトの名無しさんNGNG
iniファイルが64KBを超えたらどうなってしまうのですか?
0587デフォルトの名無しさんNGNG
>>586
俺も知りたいので5分で試して報告しなさい。
0588デフォルトの名無しさんNGNG
現状でDelphiX使用する場合の優位点って、
Direct Drawだけかな?
0589デフォルトの名無しさんNGNG
>>587
PCが爆発しそうでできません(><
0590デフォルトの名無しさんNGNG
何と比べた優位?
0591デフォルトの名無しさんNGNG
恐らくQuadruple D
0592デフォルトの名無しさんNGNG
そうだな、例えばQD3系に関してならDirectDrawだろうし、
WDirectXなら日本語対応だろうし、
QD2に対してなら、Inside DirectXの存在かね、優位な点って。

UnDelphiXがあんまり盛り上がって無さそうなのが気がかりだな。
0593592NGNG
Inside DelphiXの誤りね。スマソ。
0594デフォルトの名無しさんNGNG
>>586
500KBのIniファイルつくって試したが別に問題なく読み書きできた。
0595デフォルトの名無しさんNGNG
盛り上がってるのでDirectXラッパーの一覧表を貼っておきますね。
http://turbo.gamedev.net/wrappers.asp
0596568NGNG
>>573
すいません、もうちょっとヒントいただけないでしょうか。
一通り試してみたのですがイベントハンドラで再度HTML書き込むだけではうまくいきませんでした。
0597デフォルトの名無しさんNGNG
>>596
余計なお世話かもしれんが、「なぜ再表示する必要があるのか」を書くと
もちっとレス付くかも。
0598568NGNG
>>597
2ちゃんねる専用ブラウザを作っているのですが一度スレを表示した後
別のスレを表示したいからです。
0599デフォルトの名無しさんNGNG
んん?「Navigate」ではダメな理由は?
0600568NGNG
>>599
一度、HDDにファイルを作らないといけないから。
0601デフォルトの名無しさんNGNG
んんん???
ソレは「何か処理して動的に表示するから」ってこと?
0602デフォルトの名無しさんNGNG
ここ読んだ?
http://hogehoge2001.at.infoseek.co.jp/note-delphi.html
0603568NGNG
うまくいきました!

about:blankを表示 → OnNavigateComplete2でHTMLを書き込み
とすることで何度でも表示できるようになりました。
about:blank以外ではうまくいったりいかなかったりすることがありました。
ありがとうございました。
0604デフォルトの名無しさんNGNG
IE系2chブラは飽和状態で需要なし。
0605デフォルトの名無しさんNGNG
p2以外は雑魚
0606デフォルトの名無しさんNGNG
TFormのonCreateイベントについて質問です

ヘルプを見るとonCreateはFormが作成される'とき'呼ばれるとあります
ということはonCreateイベント内ではForm内のコンポーネント
(ボタン、ラベル等)の実体がないこともあるのでしょうか?

だとするとonCreateイベント内でコンポーネントのプロパティを
変更するような処理はEAccessViolationを引き起こす恐れがあるので
onShowイベント内で記述した方がいいですか?
0607デフォルトの名無しさんNGNG
いいえ
0608デフォルトの名無しさんNGNG
>>606
OldCreateOrderがtrueだとそうなる。
falseだとAfterConstructionで呼ばれるから貼ったコンポーネントはできあがってる。
0609デフォルトの名無しさんNGNG
>>608
ありがとうございます
TCustomForm.OldCreateOrderをヘルプで調べて
より理解が深まりますた

便乗質問なんですが
Formのコンストラクタをオーバーロードした時には
inherited Create(AOwner);と継承元コンストラクタを呼び出す必要があり
それによってonCreate→オーバーロードしたコンストラクタ
という順番で呼ばれるのでしょうか

0610デフォルトの名無しさんNGNG
Window生成やイベント発生のタイミングなど、
深く追い求めるならどうしてもVCLソースが必要になる。
Pro版以上買って読め。
0611デフォルトの名無しさんNGNG
TPageControlのTabSheetにTWebBrowserを貼り付けて
あるページを表示しました。
その中の「ウィンドウを閉じる」ボタンを押したら
TWebBrowserが消えてしまいました。
TWebBrowserが消えたらTabSheetも消したいのですが
どのイベントを拾えばいいのでしょうか?
0612デフォルトの名無しさんNGNG
デスクトップでマウスをクリックしながら動かすと矩形領域ができるじゃないですか。
あれをDelphiでやるにはどうしたらいいですか?
0613デフォルトの名無しさんNGNG
機能は、同等でTMOStringGridよりよさげなグリッドコントロールはありませんか?
//TStringGridEXは×

フォーカス周りでバグがあって使いにくいのです。
バグの修正は今試みているのですが、なんとも・・・
0614デフォルトの名無しさんNGNG
> クリックしながら動かす
> クリックしながら動かす
> クリックしながら動かす
0615デフォルトの名無しさんNGNG
いつものダメ回答者は今日は元気ないね
0616デフォルトの名無しさんNGNG
>>613
機能が同等なら何を以って「良い」とするのか
0617デフォルトの名無しさんNGNG
困ったことがあり、質問があります。

自分でコンポーネントを作成中なのですが、コンポーネントをパレットから
フォームに追加してコンパイルすると、コンポーネントのユニットがUSES節
に追加されますが、コンポーネントのユニットだけではなく、特定のユニット
(ComCtrlsとか)も同時に自動的に追加されるようにしたいのですが、どう
すればいいでしょうか?
0618613NGNG
>>616
ぶっちゃけ、バグ直して欲しいだけです。
おなじようなの、ないですかねぇ
0619613NGNG
元がバグってやがった
あーあ
0620デフォルトの名無しさんNGNG
Delphi で inline 関数を定義することはできないのですか?
0621デフォルトの名無しさんNGNG
>>620
これ買え
http://store.borland.co.jp/upgrade/Delphi2005_upgrade_0897.html
0622デフォルトの名無しさんNGNG
>611
WindowClosing Event
0623デフォルトの名無しさんNGNG
>>617
できません
0624ななしへたぐらま ◆XcB18Bks.Y NGNG
>>586
調べてみたところではWin9x系でWindows APIで読み書きする場合は
64kBを超えるとうまく動作しないという情報もあるようです.

TIniFileは内部で上記APIを呼び出していますのでこの制限を受けると思われますが,
TMemIniFileではこれは使われず,自力で読み書きしているのでこの制限を受けません.
要はTMemIniFileを使えばOK.

>>612
クリック:押した直後にその場で離す
ドラッグ:押しっぱなし

たとえばペイントツールでドラッグによって画像の処理範囲を指定する場合は,
一般的なやり方は知りませんが,
私はキャンバスに直接点線の矩形を描画したり消したりしています.
(キャンバスのDrawFocusRectメソッドで描画すると消すのが楽でしょう.)
0625デフォルトの名無しさんNGNG
>>617
publishedなプロパティに影響される。
例えばTFont型のFontプロパティが公開されていれば、
TFontを定義してあるGraphicsユニットも自動で追加される。
ComCtrlsが追加されると言うことは、
ComCtrlsで定義された型がpublishedなプロパティにあるはず。
0626612NGNG
>>624
でけた!thk
0627617NGNG
>>625さん
>ComCtrlsが追加されると言うことは、
>ComCtrlsで定義された型がpublishedなプロパティにあるはず。
試してみたのですけど、>ComCtrlsは追加されず無理でした。

因みに、新規作成してプロジェクトを起動したときに、初めからUSES
節にあるGraphicsを削除してからFontプロパティがあるTLabelを追加し
てコンパイルしても、Graphicsユニットは追加されませんでした。
0628デフォルトの名無しさんNGNG
SQL Server 2000の一時テーブルをTTableで使いたいのですが
グローバル一時テーブルはOK、ローカル一時テーブルでは
Open時に無いと言われてしまう。
一時テーブルはOpen直前のTQueryで
CREATE TABLE #TableA ・・・ してます。




0629デフォルトの名無しさんNGNG
>>628
ふーん、それで?
学校の宿題は先生に聞いた方が早いよ。
以上。
0630デフォルトの名無しさんNGNG
>>629
わからなかったら書かなきゃいいのに。w
0631デフォルトの名無しさんNGNG
超初心者が見るスレだからそんな物だということで
0632デフォルトの名無しさんNGNG
>>628
セッションが終了しているか、別セッションで使用しようとしてません?
0633デフォルトの名無しさんNGNG
>>632
どうもです。
こんな感じで直後にOpenしてます。
もちろんTDataBaseも同じです。

Query1.ExecSQL; [CREATE TABLE #TableA (aaa int null)]
Table1.Open; [Table1.TableName:#TableA]

Query1.Open (SELECT * FROM #TableA) だと問題なしです。
0634デフォルトの名無しさんNGNG
Commitしてみたら?
0635デフォルトの名無しさんNGNG
>>634
Commitでもダメでした。


0636デフォルトの名無しさんNGNG
と言う事はTable1とQuery1は別のセッションに続しているとみるのが妥当。
てかなんでTQueryじゃ駄目なの?
0637デフォルトの名無しさんNGNG
ステータスバーを付けるとでてくる、
右下の//←こんなようなウィンドウサイズを変える部分が描画できるコンポーネントってないですか?
どっかで見かけたような気がするんですが。
0638デフォルトの名無しさんNGNG
>>636
複雑な処理でのワークファイルに使いたいのでTTableじゃないとダメなんです。
勘違いしてグローバル一時ファイルで作りまくってしまい、本番前テストしたら
他のユーザーとぶつかってしまい慌てているところです。w

ローカルの寿命:作ったユーザーのセッションが切れるまで。
グローバルの寿命:使っているユーザーのセッションが切れるまで。
TDataBaseを使ってセッションも明確にしているのに
グローバルができてローカルができないのは?です。

0639デフォルトの名無しさんNGNG
>>637
APIで自分で書いたら?
0640デフォルトの名無しさんNGNG
>>637
DrawFrameControl API

SizeGrip

http://www.delphi3000.com/articles/article_3785.asp?SK=
0641デフォルトの名無しさんNGNG
TQueryを使ってファイル名を動的に変更してテーブルを
作りたいんですけど下記の方法ではダメでした。
何故なんでしょう?

Query1.ParamByName('TableName').AsString := 'Table1';
Query1.ExecSQL;・・・・CREATE TABLE :TableName (Field1 varchar(1) null)
0642デフォルトの名無しさんNGNG
>>639さん>>640さん、ありがとうございます。
さっそくやってみます。
0643デフォルトの名無しさんNGNG
MainMenuの(&T)とかを表示しないようにするにはどうしたら良いですか?
キャプションに(&T)とつけなくても実行すると勝手についてしまうので・・・
0644デフォルトの名無しさんNGNG
>>643
「メニュー&」って書いたら消えた
0645デフォルトの名無しさんNGNG
AutoHotKeysをFalseにしろ
0646644NGNG
!

適当なこと言ってごめんなさい
0647デフォルトの名無しさんNGNG
>>644
それだと「_」だけ残りました

>>645
AutoHotKeysのプロパティはmaParent,maManual,maAutomaticでどれを選んでも変化ありませんでした
0648デフォルトの名無しさんNGNG
>>647
そんなはずはない.
大元の TMenu.AutoHotKeys を maManual に設定すれば勝手にホットキーが付加されることはない.
0649デフォルトの名無しさんNGNG
>>648
あ、大元をmaManualにしていませんでした
できました、ありがとうございました
0650デフォルトの名無しさんNGNG
>>638
ログを採取するかSQLモニタで投げられるSQLを監視してみたら。

>>641
テーブル名はリテラルじゃないからねえ・・・素直にクライアント側でSQLを編集すれ。
0651初心者NGNG
あの質問なんですけど、テキストファイルの拡張子がdatとなっているのですが、
変なプログラムに関連付けてしまって、テキストが見れなくなってしまいました。
もとのテキストを見るには、どのプログラムから開けばいいですか?
0652デフォルトの名無しさんNGNG
notepad
0653初心者NGNG
ありがとうございまつ。
0654デフォルトの名無しさんNGNG
Delphiっていうより、Windows の初心者だな。
0655デフォルトの名無しさんNGNG
Delphi6Personalでいわゆる「XPスタイルのボタン」を使うにはどうすればいいですか?
それとも無理?
0656デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&c2coff=1&q=Delphi+WindowsXP+manifest&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0657655NGNG
>>656
マニフェストファイルを自動生成するソフトを使って
なんとか目的は達成できました。
ちょっと自分のイメージと違ったけど
0658デフォルトの名無しさんNGNG
ファイルの指定した場所から指定された終わりの場所までの内容をbit反転したいのですが、
どのようにしたらいいのでしょうか?
0659デフォルトの名無しさんNGNG
>>658
ファイルをメモリに読み込んで反転したい場所をNOTしてまたファイルに書き込む。
0660デフォルトの名無しさんNGNG
assignfile, reset, seel, read, write
Win32APIのメモリマップファイル使っても簡単。
0661デフォルトの名無しさんNGNG
>>659
notじゃなく、$ffffとのxorだろ
0662デフォルトの名無しさんNGNG
not でOK。
0663デフォルトの名無しさんNGNG
そうか?
少なくともnotじゃないと思うぞ
0664デフォルトの名無しさんNGNG
とりあえずつくってみてれば?
0665デフォルトの名無しさんNGNG
xor は別のビットパターンとの演算だからnotでいいよ。

00110101
↓not↑
11001010

01110011
xor ↑
10111001
↓ xor
11001010

0666デフォルトの名無しさんNGNG
ていうかどっからxorが出てくるんだ?
0667デフォルトの名無しさんNGNG
恐らく勘違いだろ。
A := B xor $FFFF;
も
A := not B;
も結果的には一緒だが。
0668デフォルトの名無しさんNGNG
たのむからデルファイ以前にビット演算ぐらいまともにしてくれ
0669デフォルトの名無しさんNGNG
面倒なことやってないで言いたい事があるならはっきり言いなさい。
0670デフォルトの名無しさんNGNG
>>661
わざわざひねくれるのはなぜ?
普通に反転ならnotだろ
0671デフォルトの名無しさんNGNG
delは型でビット演算用のnotと論理演算用のnotを使い分けます。
0672デフォルトの名無しさんNGNG
で?
0673デフォルトの名無しさんNGNG
サンプルプログラムをUPしてみようか?
0674デフォルトの名無しさんNGNG
まぁ勝手にがんばっておくれ
0675デフォルトの名無しさんNGNG
レベル低すぎ
プログラム以前
0676デフォルトの名無しさんNGNG
658もこれ以上なにも無いようだからこの話題はこれにて終了。
0677デフォルトの名無しさんNGNG
質問よろしいかしら。
TMedeaPlayerを扱うような感じで、Flashを組み込みたいと思っているのですが、
できるのでしょうか。できるとしたら、どのようにすればよろしいのでしょうか。
0678デフォルトの名無しさんNGNG
アクチヴXコントロールの取り込み
0679デフォルトの名無しさんNGNG
>>677
変な口調。(w
それはさておき、TShockwaveFlashをタイプライブラリ取り込みする。
0680デフォルトの名無しさんNGNG
100個くらいあるテキストファイルの各一行目だけを取得するには、
どうするのが効率的な処理なのでしょうか?
現在はとりあえずStringListでファイルを読み込み、
Strings[0]で読み込んでいますが、非常に非効率的な気がします
0681デフォルトの名無しさんNGNG
AssignFile, Reset, Readln
0682デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0683デフォルトの名無しさんNGNG
>>681
ありがとうございます
それでやってみます
0684デフォルトの名無しさんNGNG
>>622
遅レス申し訳ありません。
ShDocVwだとだめなんですね。
ActiveXのインストールでShDocVw_TLBを作ってusesを変えたら
CTRL+SPACEで選べるようになりました。
ヒントをいただき大変助かりました。ありがとうございました。
0685デフォルトの名無しさんNGNG
ファイル読み込みはread
書き込みはwrite
0686デフォルトの名無しさんNGNG
ファイルもフォルダも選択できるダイアログってありますか?
0687デフォルトの名無しさんNGNG
あ、同時にではなく、例えばフォルダを選択すればフォルダ、ファイルを選択すればファイル、という動作とか。
0688デフォルトの名無しさんNGNG
>>687
OpenDialogでFileNameを'(フォルダの選択)'にしといて
ExtractFilePathでパス(フォルダ名)を取得とかやったことはある。
ファイル選びたければ選べるし。
0689デフォルトの名無しさんNGNG
>>688さん早速にありがとうございます。
なるほど!それは思いつきませんでした。やってみます。
0690デフォルトの名無しさんNGNG
IBDataSetの使い方を教えてほしいのですが、
取得したレコードの項目を更新したいのです。

IBDataSetのプロパティに
SelectSQL には SELECT文
ModifySQL には UPDATE文 設定していた場合、
このUPDATE文を実行する方法はどのようにしたらいいのでしょうか?

環境はFirebird1.5 Delphi7です。
0691デフォルトの名無しさんNGNG
>>690
よーわからんが、
CasheUpdatesをTrueにして
OnAfterPostイベントで
ApplyUpdatesして、トランザクションのCommitRetainingを実行汁。
0692690NGNG
>>691 さん、ありがとうございます。
CasheUpdatesをTrueにしていませんでした。
0693デフォルトの名無しさんNGNG
>>686
[Delphi-ML:76040] フォルダもファイルも選べるダイアログ
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=076040
0694デフォルトの名無しさんNGNG
へ〜っ。すげぇ
確かに「ショートカットの作成」の「参照」ってファイルもフォルダも選べるな。
想像もしてみなかった。
0695デフォルトの名無しさんNGNG
>>693さんありがとうございます。
おおー、これも面白いですね。
0696デフォルトの名無しさんNGNG
おもしろいつーか、ピンポイント的にファイル選ぶときは、TOpenDialog より便利かも
0697デフォルトの名無しさんNGNG
C++オンリー(と少しだけJava)でしたが、Delphi始めてみようと思ってます。
Delphiの欠点って何ですか?
0698デフォルトの名無しさんNGNG
スルーよろ。
0699デフォルトの名無しさんNGNG
欠点を認めない信者
0700デフォルトの名無しさんNGNG
ここの人間
0701デフォルトの名無しさんNGNG
その欠点ってのは具体的になに?
0702デフォルトの名無しさんNGNG
>>697
そのネタは荒れやすいので釣りじゃないならこっちで聞きなよ。
質問が漠然としすぎだから、やりたいことがあるならそこらへんも詳しく書いてさ。
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その17
http://pc5.2ch.net/test/read.cgi/tech/1099706362/
0703デフォルトの名無しさんNGNG
Delphiの欠点って何ですか?
0704デフォルトの名無しさんNGNG
しょぼい最適化
0705デフォルトの名無しさんNGNG
変な言語。
0706デフォルトの名無しさんNGNG
chromeみたいに変数宣言できればいいのに
0707デフォルトの名無しさんNGNG
将来性
0708デフォルトの名無しさんNGNG
厨が多い事
0709デフォルトの名無しさんNGNG
定期的に煽られること
0710デフォルトの名無しさんNGNG
信者がくさいこと
0711デフォルトの名無しさんNGNG
すいません、質問です。
あるコントロール(例えばパネル)にマウスポインタが入ってきた、
もしくは出て行った事を感知するにはどうすれば良いのでしょうか。
0712デフォルトの名無しさんNGNG
CM_MOUSEENTER
0713デフォルトの名無しさんNGNG
出ていったもあったか。
CM_MOUSELEAVE
0714デフォルトの名無しさんNGNG
>>712,713
速レスありがとうございます。
ぐぐって調べつついろいろ試したいと思います。

というか、質問する前に検索するの忘れてました。すみません。
0715デフォルトの名無しさんNGNG
オブジェクトインスペクタのコンポはパーソにはないんですか?
0716デフォルトの名無しさんNGNG
全バージョンにありません
0717デフォルトの名無しさんNGNG
DelphiはDelphiじゃ作れないんですか?
0718デフォルトの名無しさんNGNG
Delphiの中の人はDelphiです
0719デフォルトの名無しさんNGNG
>>717
BorlandのDelphiはDelphi自身でできています
0720デフォルトの名無しさんNGNG
BorlandのDelphi2005の一部はMSのC#コンパイラをつかってつくられています
0721デフォルトの名無しさんNGNG
つくれるかどうかと、標準のコンポでついてくるかどうか、は関係ない
0722デフォルトの名無しさんNGNG
.NETアプリはすべてMSのJITコンパイラでコンパイルされる
0723デフォルトの名無しさんNGNG
C# コード → MSIL へ変換する csc.exe はコンパイラではないと?
0724デフォルトの名無しさんNGNG
そういった高度な議論はフサスレで
0725デフォルトの名無しさんNGNG
DelphiはDelphiで作られてるってよく聞くけど・・・
最初のDelphiは何で作られたの?
0726デフォルトの名無しさんNGNG
初心者激減
0727デフォルトの名無しさんNGNG
Delphiは信者の愛でできてます。
0728デフォルトの名無しさんNGNG
Delphiなど存在しない!
0729デフォルトの名無しさんNGNG
半分はやさしさで出来てるらしいぞ。
0730デフォルトの名無しさんNGNG
タスクバー上のタスクウィンドウ?を右クリックしたときに出るメニューを変えたい・編集したいときは
なにをいじればよいのでしょうか?
0731デフォルトの名無しさんNGNG
>>725
IDEがDelphi製、dcc32はDelとは別の言語らしい。
0732デフォルトの名無しさんNGNG
>>730
「Delphi システムメニュー」でぐぐれ
0733デフォルトの名無しさんNGNG
TFileStreamの使い方で質問します

type
TRec = record
tree:TTreeNodes;
files: string;
end;

var
fst:TFileStream;
rec:Trec;
この前提の元

Rec.tree := TreeView1.Items;
Rec.files := 'aaaaaa';

fst := TFileStream.Create(ExtractFileDir( Application.ExeName ) +'\aa.txt', fmCreate);
fst.Write(Rec,sizeof(Rec));
fst.Free;

と実行したのですが出力されたファイルはたった8バイトのサイズでした
どこが悪いのでしょうか?
0734デフォルトの名無しさんNGNG
>733
そりゃ、TTreeNodesもstringもポインタ保持だからだろう。

参照型変数と値型変数で調べてみな。
他の言語のリファレンスが多いと思うが、それでも勉強になるだろう。
0735デフォルトの名無しさんNGNG
ちょっとかみ砕いてやると、
用は、おまいさんのしたいことをするためには、
値型変数じゃなきゃいけないんよ。バッファは。

だから、stringはchar配列に、TTreeNodesは各メンバーをintegerとかchar配列にして
Filestreameで書き込んでみな
0736デフォルトの名無しさんNGNG
>type
>TRec = record
>tree:TTreeNodes;
>files: string;
>end;
こういった複合型のデータをファイルに読み書きするには
recordではなくclass(TComponent)にして
TStream.Read/WriteCompoenentすればいいんだけど
ちょっと難しいかも。まあ調べてみなよ。
0737デフォルトの名無しさんNGNG
お尋ねします。イメージコンポーネントにピクセル単位で色を付けたいのですがうまくいきません。
TThreadを利用して次の方法で描画を試みているのですがどこか間違っているでしょうか。

Form1.Image1.Canvas.Pixels[x, y] := $00000000; //右辺は任意のCardinal値。

0738デフォルトの名無しさんNGNG
>>737
Canvas プロパティは,Picture プロパティが TBitmap オブジェクトを表しているときのみ有効です。
Picture プロパティが TBitmap以外のほかのグラフィックイメージを表しているときに
Canvas プロパティを読み出そうとすると,TImage は EInvalidOperation 例外を生成します。
0739デフォルトの名無しさんNGNG
>>738
ありがとうございます。TBitmap.Createを試みます。
0740デフォルトの名無しさんNGNG
巨大なビットマップをBeginDoc/EndDocで連続印刷してると、
印刷されなくなってしまい、PCを再起動しないと回復しなくなります。

こんな症状はどうやって回避すれば良いでしょうか?
0741740NGNG
http://www.asahi-net.or.jp/~HA3T-NKMR/tips004.htm
ビットマップがプリンタに印刷できないを参考にしてたんですが、
よく読むと、
>この問題は以下のコードのように ビットマップを
>Device Independent Bitmap に変換し StretchDIBits API で印刷すれば、
>かなり成功率を高めることができます。
>但しこれは完璧では有りません。
>いぜんとして印刷に失敗することがあります。
となってる...
0742デフォルトの名無しさんNGNG
Delphi 2005とVB 2005でどっちが優秀なんですか?
0743デフォルトの名無しさんNGNG
どなたかDelphiに詳しくて下らない質問に一丁答えてあげようか
って人お願いすます。

Delphi2005でC#を使ってMDIアプリケーションを作れるでしょうか?
それと、DBCtrlGridはC#で使えるでしょうか?
それが出来ればDBのフロントエンドに使おうとおもってます。
0744デフォルトの名無しさんNGNG
>>743
くだらなくないのでお答えできません。
0745デフォルトの名無しさんNGNG
>>744
そうですか。ボーランドのHPを見ても詳しいことが分かりません。
といって会員登録してまで資料を見るのもなんだし...。
困ったな...。
0746デフォルトの名無しさんNGNG
OnIdleすげーなwwwwwwwwwww
5000fpsキターちっこい円の描画だけどwwwwwwwwww
CPU死ぬけどwwwwwwww
0747デフォルトの名無しさんNGNG
sleep使うとCPUしなねぇええwwwwwwwwwwwww
0748デフォルトの名無しさんNGNG
>743
Delphi2005のC#でできることは、VC#でも殆ど出来ることなんだから、
既存のVC#文献や.NET Framework SDKのドキュメントを読め。
0749デフォルトの名無しさんNGNG
既存のC#と既存のDelphiをまとめて起動するが、
同時にはどれか一つしか使えないのがDelphi2005なわけで、
当然C#からDelphi機能は使えないし、DelphiからもC#機能は使えない。
VSと一緒だね。
0750デフォルトの名無しさんNGNG
質問させて下さい
サイズ変更可能なタイトルバーなしのフォームを作りたく思い、
検索してサンプルなども見つかって動作するのですが、不満な点があります。

探したところCreateParamsをoverrideしてWS_THICKFRAMEを指定してあげる方法しか
見つからなかったのですが、これだと当然ながらフォームの縁に太い線が出来てしまいます。
出来れば縁がないものを作りたいのですが、良い方法がありますでしょうか?
※BorderStyleでbsNoneにしたときのような外観にしたいのです。
0751デフォルトの名無しさんNGNG
>>748>>749
有難うございます。
どうも私はDelphiでコーディングする時にObjectPascalの
代りにC#が使えると勘違いしてました。
単にC#BuilderとDelphiの機能が合体しただけなんですね。
お騒がせして済みませんでした。
0752デフォルトの名無しさんNGNG
うほっ!いいPDF
http://www.impress.co.jp/ebook/title/263-1.html
0753デフォルトの名無しさんNGNG
>>740-741 もヨロ

TBigBitmapで何が良くなりますか?
0754デフォルトの名無しさんNGNG
Printer.PageWidth
とは、紙全体でつか?
マージンを除いた範囲で塚?
0755デフォルトの名無しさんNGNG
>>754
印刷可能領域の幅。
てか試せばわかるだろうに・・・
0756デフォルトの名無しさんNGNG
>>753
特定のOS固有の問題なのか特定のマシン固有の問題なのか
Delphiアプリの問題なのかの切り分けはできてるのか?
0757デフォルトの名無しさんNGNG
サンクス>>755
いや、紙全体と思ってプログラム作ったら、印刷可能領域の幅のように印刷されたんです。

で、そう理解してプログラムして、あるプリンタだとマージンが0になったりしたらアウトだし、
念のため確認させて貰わないと怖かったんで津。
0758デフォルトの名無しさんNGNG
>>757
GetDeviceCaps使えよ。
0759デフォルトの名無しさんNGNG
TDataSetにデータベースから取得したデータをいれてるんですが、
これを他のTDataSetの変数にコピーするって可能ですか?
たとえば、TStringList.Assign()のように。

デストラクタとコンストラクタの関係で、データの中身だけをコピー
したいのですが、そういう関数ってあるのでしょうか?
0760デフォルトの名無しさんNGNG
>>757
TNkPrinter使え
0761デフォルトの名無しさんNGNG
Delphier と VBer(+.NETによるOO能力) ってどちらが優秀なんですか?
0762デフォルトの名無しさんNGNG
とりあえずDelphier代表として中村タンを推してみようか
0763デフォルトの名無しさんNGNG
webアプリケーションデバッガでCGIのテストをすると、
ブラウザに「404ファイル未検出」って出ます。
環境はXP SP2です。
2000 sp4だとデバッグ出来ます。
おおざっぱな質問で申し訳ないですが、どなたかヒント下さい。
webアプリケーションデバッガ自体の設定は何も変えていません。
よろしくお願いします。

0764デフォルトの名無しさんNGNG
>>763
404ファイル未検出
0765デフォルトの名無しさんNGNG
> 環境はXP SP2です。

......
0766デフォルトの名無しさんNGNG
ドラッグして並べ替え出来るメニューって実現出来ませんか?
0767デフォルトの名無しさんNGNG
出来る。 がんばれ。
0768デフォルトの名無しさんNGNG
描画のちらつきおさえるのってDoubleBuffered以外にどんなのがあるの?
0769デフォルトの名無しさんNGNG
何の描画?
0770デフォルトの名無しさんNGNG
VSYNC同期。
0771デフォルトの名無しさんNGNG
VSYNCで垂直同期だから、同期は不要だった。
0772ななしへたぐらま ◆XcB18Bks.Y NGNG
>>756
>>741のリンク先の中村拓男氏の本によるとWindowsでは
巨大なビットマップの拡大縮小,さらにそれが印刷と絡むとかなり厄介みたいです.
で,それを回避したのがTBigBitmapみたい.
0773デフォルトの名無しさんNGNG
TBigBitmap使ってる人いまつか?

TBitmapをそれに置き換えたいのでつが、クラス宣言差し替えるだけ?
0774ななしへたぐらま ◆XcB18Bks.Y NGNG
特殊なプロパティやメソッドを使っていなければ置き換えだけで行けると思います.

・uses節にユニット名を追加 BigBitmap
・変数宣言 FNantokaBitmap: TBitmap → FNantokaBitmap: TBigBitmap
・実体(インスタンス)を生成しているところ.FNantokaBitmap := TBitmap.Create → FNantokaBitmap := TBigBitmap.Create
0775デフォルトの名無しさんNGNG
>プリンタにビットマップを印刷するには、以下のことを守る必要があります
>DIBの拡大は4倍以下にとどめ、それ以上の拡大が必要な場合は、Scanlineプロパティなどを使ってアプリケーション側で拡大処理を行う。

単純にTBitmap上で拡大して、それをStretchDIBitsすれば無問題なんかな???
0776デフォルトの名無しさんNGNG
Timerがこわれた・・・10倍!?????
10000で1秒だよorz
0777デフォルトの名無しさんNGNG
StringにNULL入りバイナリデータを入れる方法教えて下さい。
0778デフォルトの名無しさんNGNG
SetLength(s, 100);
s[10] := #0;
move(PChar(s), p, 100);
0779デフォルトの名無しさんNGNG
サンクス>>778

BCBの場合はどうなりまつか?
0780デフォルトの名無しさんNGNG
>>779
すれ違い
0781デフォルトの名無しさんNGNG
>>779
めんどくさくなるだけだからやめておけ。
char配列では出来ない理由でもあるのか?
0782デフォルトの名無しさんNGNG
ファイルがあろうとなかろうと強制的にフォルダを削除する命令はありませんか?
0783デフォルトの名無しさんNGNG
ない
0784デフォルトの名無しさんNGNG
ないのか_| ̄|○

中のファイルを削除しようとするといつも削除失敗するわけですが・・・
属性や使用中の問題はないはずなんですが、なんでだ・・・
0785デフォルトの名無しさんNGNG
>>782
ttp://hp.vector.co.jp/authors/VA009712/take/delphi/kabesys.htm#shfileoperation
0786デフォルトの名無しさんNGNG
>>785
うまくいきました。ありがとうございました。
0787デフォルトの名無しさんNGNG
既出かもしれませんが、検索してもでてこなかったので、書きます。
TShellListViewで、 '*.txt'のように拡張子で限定して表示させたのですが、どのプロパティに設定すればいいのでしょうか。
オブジェクトインスペクタを見ても該当のプロパティが見当たりません。
ソースを解析するしかないのでしょうか。

直接の情報でなくても、このサイトに詳しい情報があるということでもかまいませんので、よろしくお願いします。
0788デフォルトの名無しさんNGNG
意味がわからない
0789787NGNG
すみません。書き方が不十分でした。
たとえば、ファイルリストボックスだと、MASKというプロパティがあって、その値は、デフォルトで’*.*'になっています。
これを
  FileListBox1.Mask := '*.txt'
と記述すると、拡張子がTXTのファイルだけが表示されます。これをTShellListViewでも行いたいのです。
よろしくお願いします。
0790デフォルトの名無しさんNGNG
>>787

OnAddFolder イベントで ファイル名により CanAdd 引数を False にする
0791デフォルトの名無しさんNGNG
SetFocusを実行しても、適応されない時があります。
timer を使ってやると必ず実行されるのですが・・・
0792787NGNG
>>790
ありがとうございます。早速試してみます。
0793デフォルトの名無しさんNGNG
>>791
タイマーを使うと確実にできるけど、使わないとできないというなら、
考えられるのは、SetFocusの次のコードで意図せずにフォーカスを
動かしてしまっている場合だけど、具体的なことがわからないので
これ以上は答えられない。
もう少し詳しく書いて。できれば当該個所のコードを書いてもらったほうがいい。
0794デフォルトの名無しさんNGNG
delphiのエディタって16色しかつかえないの?
0795デフォルトの名無しさんNGNG
>>794
エディタって統合環境のこと?16色あれば十分だと思うが。8色でもいいくらいだ。
0796デフォルトの名無しさんNGNG
残念ながら使えないっぽい。
0797デフォルトの名無しさんNGNG
画面のプロパティでシステムカラー変えれば?背景色だけは変えられたよ。
0798デフォルトの名無しさんNGNG
できないならできないとはっきりいえばいいのに。
そんなに負けを認めたくないの?
0799デフォルトの名無しさんNGNG
そんなに勝ちにこだわりたいの?一体何と競ってるの?
0800デフォルトの名無しさんNGNG
イメージエディタのことじゃね?
0801デフォルトの名無しさんNGNG
イメージエディタなら256色使えるぞ。
0802デフォルトの名無しさんNGNG
イメージエディタでもフォームエディタでもなく、コードエディタの話だろ?
[デフォルトを使用]にチェックを入れた項目はWindowsのシステム色と同じになる。
0803デフォルトの名無しさんNGNG
フォーム本体は表示しつつ、タスクバーには非表示にしたい。
ということは出来ますか?
0804デフォルトの名無しさんNGNG
Application のウィンドウを消すんじゃなかったかな
0805デフォルトの名無しさんNGNG
キー入力があったかなかったかだけを取得するには
どうやるのが一番簡単でしょう。大昔のIOポートをずっと見てる
みたいなイメージなのですが。
入力の内容には全く用はなく、他のアプリへの入力も感知したいのですが。
0806デフォルトの名無しさんNGNG
キーロガー? ぁゃιぃ。



0807デフォルトの名無しさんNGNG
ちちちちがいます
スクリーンセーバーみたいに長いこと入力がないと
動くようなプログラム書きたいんです。

0808デフォルトの名無しさんNGNG
じゃあ、いっそのことスクリーンセイバー形式にしてしまったら。
0809デフォルトの名無しさんNGNG
意外と難しそう。
システムフックか、GetAsyncKeyStateで全キーを頻繁に調べる。
0810デフォルトの名無しさんNGNG
> スクリーンセーバーみたいに長いこと入力がないと

マウスは動かしても関係ないの?

[Delphi-ML:79020] windows がアイドル状態を検知
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=079020
0811デフォルトの名無しさんNGNG
あ、そうかそっちでいいんだ。<アイドル状態
0812デフォルトの名無しさんNGNG
犯罪を幇助するとその人も罪になるからアホな真似だけはしないように。
0813デフォルトの名無しさんNGNG
>>810
マウスでやってるんですが、それだとキーボードだけでやってる間に起動しちゃうんです。
参考にさせていただきます。

>>812
だから違いますって_| ̄|○

0814デフォルトの名無しさんNGNG
WM_KEYDOWN というのを使えないでしょうか。
なんだかよくわかってませんが・・・
0815デフォルトの名無しさんNGNG
つかえないだろ。システムレベルなんだから
0816デフォルトの名無しさんNGNG
つくったexe起動したら5000kぐらいメモリ使ってるんだけど
いったん最小化してから元のサイズに戻すと半分以下になるよ
なんで?
0817デフォルトの名無しさんNGNG
そういうもん。気にするな
0818ななしへたぐらま ◆XcB18Bks.Y NGNG
>>794
レジストリエディタでいじれば…と思ったら,
Delphi 5は0〜15の値で記録してた(´・ω・`).
DWORD値を使って4ビットの値なんか書き込むなよなぁ.
システムの文字色と背景色を使うオプションで何とかするしかないようです.
(Delphi 7は違うらしいのですが持っていないので未確認)

>>814
WM_KEYDOWNを,どうしたいのですか?
やりたいことを具体的に書いた方がレスはつきやすいですよ.
ちなみにDelphiで使えます.
0819デフォルトの名無しさんNGNG
>>804
ありがとうございます、
Application のウィンドウを消すとは具体的にはどうすればいいですか?
0820814NGNG
>>818
失礼しました>>814=>>813=>>805です。
結局ENTERやBSといった良く使うキーを拾ってお茶を濁しました。皆さんサンクスですー
0821デフォルトの名無しさんNGNG
>>820
意味がわかりません。そんなことで >>805 の内容が実現できるの?
0822デフォルトの名無しさんNGNG
>>819

ShowWindow(Application.Handle,SW_HIDE);
0823デフォルトの名無しさんNGNG
なんかもう本当にキーロガー作るのが目的だったんじゃないかと思えてくるな
0824デフォルトの名無しさんNGNG
TWebBrowserのPaintToメゾットを使いたいんだけど上手くいかないです。
ヘルプ読むとPaintToメゾット使う前にキャンバスをロックしろって書いてあるけど
TWebBrowserにはそんなメゾット無いみたいだし…。
分かる方いませんか?
0825デフォルトの名無しさんNGNG
(´-`)。o ○ (ツッコミ入れるべきかなぁ… それとも濁点付いてんのが正しいのかなぁ…)
0826デフォルトの名無しさんNGNG
(´-`)。o ○ (って、見直してみたら「ト」に濁点付いて無いし…)
0827デフォルトの名無しさんNGNG
>>824
ワロタ
0828デフォルトの名無しさんNGNG
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%A1%E3%82%BE%E3%83%83%E3%83%88&num=50
ごく一部では静かなブームっぽいがw
0829デフォルトの名無しさんNGNG
広げて済まない。
本当済まない。
が、
>>828
その中に「メゾット」ってタイトルで、ファイル名に「mezotto.html」と
付けてるのが…。
ああああああ。

>>824
早めに訂正してくれ。済まんな。
0830デフォルトの名無しさんNGNG
method
だから、イタリア語読みとかすると、メゾットになるのだろうか。

そういや
はじめてのObject Pascalプログラミング テクニカルマスターシリーズ
って本で、英単語系のふりがなが、一般的なものとめちゃくちゃかけはなれて
笑ってしまった記憶があるなあ。
0831デフォルトの名無しさんNGNG
キノコメゾット
0832デフォルトの名無しさんNGNG
>>830 の本
ChangeFileExt (チェンジファイルエクステンション)、
WriteLn (ライトライン) …てことか?まぁ確かに。
でも俺はあの本で "Width" の読みを知ったよ。10年以上「ワイズ」と読んできたが
「ウィドス」が正しいのな。 ハァ?と思って辞書を引いたら _| ̄|○

更に話がそれるが、プログラミング入門書には Procedure と 引数 の読み方
ぐらいは書く事にしておいても良いと思うんだが。 ぷろせでゅあ〜 マンセー♪
0833830NGNG
>832
俺が一番笑ったのが、そのプロセデュアーなんだけど。
記憶違いじゃなかったら、確かあの青い本もそう書いてあったよね?

一応 dictionary.goo.ne.jp/search.php?kind=ej&MT=procedure
で確認したが、多分プロシージャが普通だよなあ。
0834830NGNG
いや、プラシージャかな。自己レスすまん。
ネイティブな人の発音を聞いてみたいやね。
0835デフォルトの名無しさんNGNG
ニッポンジンには「てつづき」でよかんべぇ。

↓次の質問か、>>824の続きか
0836デフォルトの名無しさんNGNG
プロシージャ の検索結果のうち 日本語のページ 約 90,900 件中 1 - 100 件目 (0.39 秒)


プラシージャに該当するページが見つかりませんでした。
"プラシージャ"を含むページは見つかりませんでした。
0837デフォルトの名無しさんNGNG
プロセデュアー の検索結果のうち 日本語のページ 約 5 件中 1 - 4 件目 (0.29 秒)
てつづき の検索結果のうち 日本語のページ 約 3,580 件中 1 - 30 件目 (0.35 秒)
0838デフォルトの名無しさんNGNG
Procedureは、たぶん「プラージャー」が英語の発音に一番近そう。
「プロセデュア」というのは、経営学の方面でよく使われる読み方。
世間一般には、プロセデュアのほうがとおりがよさそう。
0839デフォルトの名無しさんNGNG
ちょうどいいから聞くけどinheritedてなんて読めばいいの?
インハリテッドって読んでるけどちょっと違う気がする
0840デフォルトの名無しさんNGNG
インハーライテッド。
0841デフォルトの名無しさんNGNG
>>831
それはリゾット
0842デフォルトの名無しさんNGNG
0843824NGNG
うわ!ずっとメゾットだと思ってました。
メソッドでしたか…。道理でATOKが一発で変換してくれないわけだ…。
失礼しました。
0844デフォルトの名無しさんNGNG
>>839
インヘリテッド
Heritec -> ヘリテック
0845デフォルトの名無しさんNGNG
辞書引けよ。
0846デフォルトの名無しさんNGNG
RichEditで折り返し文字数を設定できますか?
どこかの掲示板にSendMessageで出来ると書いてあったので調べたんですが、
全くわかりませんでした。漏れの目が節穴なのは承知ですが、どなたかご教示ください。
0847デフォルトの名無しさんNGNG
incとdecは?
俺はインクリメント、デクリメントと心で読んで打っている。
でもインクリーズ、デクリーズかもしれないので人には言えずにいた。
0848デフォルトの名無しさんNGNG
radioGroupのItemsの1項目内の文字列を
改行コード等で区切って2行で表示するとかいうことはできますでしょうか?
0849デフォルトの名無しさんNGNG
>>848

procedure TForm1.Button1Click(Sender: TObject);
var
  hRadio:HWND;
  ctrl:TControl;
  Style:LongInt;
  s:string;
begin
  hRadio := TWinControl(RadioGroup1.Controls[0]).Handle;
  Style := GetWindowLong(hRadio,GWL_STYLE);
  SetWindowLong(hRadio,GWL_STYLE,Style or BS_MULTILINE);
  s := '1111111111'+#13#10+'22222222';
  SetWindowText(hRadio,PChar(s));
end;
0850デフォルトの名無しさんNGNG
sLineBreak使え
0851デフォルトの名無しさんNGNG
Kylix 使う予定なし
0852デフォルトの名無しさんNGNG
>>850
D5以下ではつかえません
0853デフォルトの名無しさんNGNG
DelphiでJava作れるの?
0854デフォルトの名無しさんNGNG
そりゃ Windows 上の Java VM ならつくれるだろうさ。可不可だけならね。
0855848NGNG
どうもです。 
やはりプロパティ上ではなく、コードでなんとかしろということですね。
0856デフォルトの名無しさんNGNG
procedureとかfunction宣言してなんかキー押したら実現部にコードのテンプレート自動生成されるってホント?
ホンとならやり方教えて♪
0857デフォルトの名無しさんNGNG
プロ版以上なら右クリック→定義の補完
0858750NGNG
申し訳ありませんが上級スレの方でも聞かせて頂きます。
0859デフォルトの名無しさんNGNG
Shift + Ctrl + C
0860デフォルトの名無しさんNGNG
”超”初心者はDelphiの勉強よりもコンポの勉強をしたがっている。
コンポで出来るか出来ないかが重要で、出来ないことはあきらめる。
コンポで出来ないことはDelphiでは出来ないことになる。
0861デフォルトの名無しさんNGNG
独り言はこちらで
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0862デフォルトの名無しさんNGNG
>>860

ふーむ、そうだね。背後にある原理とかは興味がないんだね。残念。
0863デフォルトの名無しさんNGNG
エディットボックスにファイル名を入力させたいのですが・・・。
ファイル名には特定の文字が使用できませんよね。[*]とか[:]とか[?]とか・・。
で、エディットボックスのKeyPressイベントで入力制限をしているのですけど、
コピペされたとき、どんな文字でも入ってしまいます。
もし、コピペする文字に無効な文字が入っていたらコピペ不可!
という処理をしたいのですが、どうすればよいのでしょうか?

0864832NGNG
>>833 & >>ALL
すまん、俺の書き方がまずかった。>>830の本に『プロセデュアー』と書いてあった
訳ではない(表記は「手続き」、読み仮名はなし)。正しい読みを知るまで *俺は*
「プロセ…」と読んでしまっていたぞ、というだけの話。 <だから読みも欲しい、と。

スレ違いを更に広げてしまい、スマンかった。
0865デフォルトの名無しさんNGNG
>>863
コピペ処理を自分で書き直せば良い。
TMainMenuをフォームに置いて「貼り付け」メニューを作成。
キーボードショートカットはCtrl+Vに設定。
procedure TForm1.Paste1Click(Sender: TObject)の中で貼り付けされる前のクリップボードの中を検閲。
クリップボードについてはヘルプのTClipboardの項のプロパティとかメソッドとかを色々調べること。
0866デフォルトの名無しさんNGNG
MaskEditじゃあるまいし、完璧に余計な文字が入るのを防ぐコードを書くより
アクション時に不正な文字がないかチェックした方が早いんとちゃう?
0867デフォルトの名無しさんNGNG
>>863
こんな。usesは自分で調べて追加してな。

procedure TForm1.Paste1Click(Sender: TObject)
var
  str: String;
begin
  if Clipboard.HasFormat(CF_TEXT) then
    str := Clipboard.AsText
  else
    Exit;

  if AnsiPos(str, '*') > 0 then
    Exit
  else if AnsiPos(str, ':') > then
    Exit
  else if AnsiPos(str, '?') > 0 then
    Exit
  else
    Memo1.SelText := str;
end;
0868デフォルトの名無しさんNGNG
>>866
同意。実際はWin32APIに頼るのが一番確実。
未来永劫ドライブレター付のFAT/NTFSでアプリが動くとは限らないし。
0869デフォルトの名無しさんNGNG
OnChangeとかなかったっけ?
0870デフォルトの名無しさんNGNG
結局コンポのプロパティーではできないと・・・・・・
0871デフォルトの名無しさんNGNG
コンポのプロパティーではできないことを工夫してできるようにすることがプログラミングの面白さだと思うそ。
0872デフォルトの名無しさんNGNG
つか、[*]とか[:]とか[?]とかだけ入力不可能なエディットボックスって見たことあるか?
もしあったとしてもかえって使いにくいと思うが
0873デフォルトの名無しさんNGNG
とかいいながらこの前の「ファイルもフォルダも選択できるダイアログ」に驚いてた奴>872
0874デフォルトの名無しさんNGNG
>>871
なんが違う気がするぅ〜
0875833NGNG
>>864

あれ? と思ったので、今日あの本を買ってみた。
(以前読んだときは会社の備品だったので)
……どこにもプロセドゥアーなんて無かった。著者さん、すまんす。
どこでこんな記憶が入り込んだんだろう。

┃━┏┃。oO(……でも、exitはイグザットじゃないと思う)

スレ違いスマソ。
0876デフォルトの名無しさんNGNG
みなさんありがとうござーます。
確かに、[*]とか[:]とか[?]とかだけ入力不可能なエディットボックスて見たことありません。
けど、winXPでエキスプローラ起動して、新規ファイルを作成して名前を変更しようとして[*]をペーストするとペーストされませんよね。
で、ちょっと作ってみたくなったんです。
>>865さんと
>>867さんの方法で、いろいろさぐってみます。ありがとうございました。
0877デフォルトの名無しさんNGNG
ありがとうござーます
ありがとうござーます
ありがとうござーます
ありがとうござーます
0878872NGNG
>winXPでエキスプローラ起動して、新規ファイルを作成して名前を変更しようとして[*]をペーストするとペーストされませんよね。

!・・・OTZ
これからはもう少し謙虚に生きようと思います。
0879デフォルトの名無しさんNGNG
スズキメソードと言いますから、メソードでしょ。
0880デフォルトの名無しさんNGNG
エキスプローラなのか
エクスプローラだと思ってた
0881デフォルトの名無しさんNGNG
マジで悩んでるんだけどFalseってなんて発音するのが正しいの?
0882デフォルトの名無しさんNGNG
ふぁるす?
0883デフォルトの名無しさんNGNG
>>881
http://dictionary.goo.ne.jp/search.php?MT=False&kind=ej&mode=0&base=1&row=1
「フォース」って感じかな。
音声聞けるから聞いてみれ。
0884デフォルトの名無しさんNGNG
>>883
うぉぉぉサンクス。
自分の発音とも職場の発音とも違うぜ〜
0885デフォルトの名無しさんNGNG
でも現場ではふぁるすといわなければ通じない罠。。。
0886デフォルトの名無しさんNGNG
うちの職場では ふぉーるす って発音するな。
0887デフォルトの名無しさんNGNG
>>881
「フォルス」だけど、「ル」は、はっきり聞こえない。
0888デフォルトの名無しさんNGNG
http://distrowatch.com/table.php?distribution=freebsd
0889デフォルトの名無しさんNGNG
そこでバルスですよ
0890デフォルトの名無しさんNGNG
日本では「ウソ」「ホント」で統一すべき。
0891デフォルトの名無しさんNGNG
「真」「偽」でええやん。
発音記号風に書くと"tru:", "fo:ls" な。
0892デフォルトの名無しさんNGNG
情報処理用語の読み方を確認するスレ
http://pc5.2ch.net/test/read.cgi/tech/1056173956/
0893デフォルトの名無しさんNGNG
のっととぅるぅだろ?
0894デフォルトの名無しさんNGNG
>>887
>「フォルス」だけど
大丈夫か?
0895デフォルトの名無しさんNGNG
うわintegerよりrealの方が精度いいんだなw
入力はintegerでも計算するときはrealの変数に代入してから計算したほうがいいの?
0896デフォルトの名無しさんNGNG
用途次第。スクリーン上の真ん中の座標を算出するのにわざわざRealに変換する奴はいない。
0897デフォルトの名無しさんNGNG
>>895
そのかわり計算速度が遅いよ。メモリも余計に喰うよ。
0898デフォルトの名無しさんNGNG
精度がいいというか、表現できる幅が広いわけですよ。
試しに、今のDelphiなら、
自分で$7FFFFFFFに1を足すコードを書くとよくわかる。

integerは、OSやCPUといった環境ごとで、一番速度が速くなるように
使用バイト長が変わるんだけど、(現在のWindows環境だとほぼ4バイト長)
将来それが問題になる可能性もあるところでは、
4バイト長固定のlongintを使った方がいいよ。
0899デフォルトの名無しさんNGNG
Win64でもsizeof(int)は4
0900898NGNG
>899
10年後くらいには、integerは8バイト長とかになってるのかなー?
というかDelphi自体が無くなっていませんように。
0901デフォルトの名無しさんNGNG
うぁぁああおもしれえぇえええ
10億回計算してみたよ
GetTickCountで時間計ってみたよ
単位はミリ秒

初期値
a:=1
       real    integer
a:=a+1   13389   2103

a:=a-1   13259   2143

a:=a*1   15411   2644

a:=a/1   19448   2114
a:=a div 1
0902デフォルトの名無しさんNGNG
整数が速いのは常識なんだが、お前は何を言いたいんだ?
0903デフォルトの名無しさんNGNG
>>901
どうせならIntegerとCardinalで比べれば面白いのに。
0904デフォルトの名無しさんNGNG
realのほうが時間かかるってのをただ数値として出した
ということだろう
何を言いたいとか意味のわからない質問されても困るねぇ
0905デフォルトの名無しさんNGNG
最近は裏が白いチラシが少なくてのう。
0906デフォルトの名無しさんNGNG
[Delphi-ML:55751] Re: タブ文字の変換
ttp://130.158.124.192/~takeuchi/delphi/article/055/055751.html

というのをちょっと使わせてもらっているのですが
Result := Result + Copy(S, 1, Index - 1) + ' ';
この部分で
'String' と 'TAction' には互換性がありません
というエラーが出てしまいます

どうしたらよいのでしょうか?
0907デフォルトの名無しさんNGNG
S はなんの型かな? ハンドラ全体を見ないと誰にもワカラン
0908デフォルトの名無しさんNGNG
いまなら StringReplace() で一発でできる
0909デフォルトの名無しさんNGNG
>>907
SはStringです

>>908
ありがとうございます、試してみます
0910デフォルトの名無しさんNGNG
function TabSpace(S: string; TabSize: Integer): string;
begin
  result := StringReplace(s,#9,StringOfChar(' ',TabSize),[rfReplaceAll]);
end;
0911デフォルトの名無しさんNGNG
>>910
それだけじゃダメだろ
\tX\tXX\tXXX\tXXXX\t
でそれぞれ展開するサイズが違う。
0912ななしへたぐらま ◆XcB18Bks.Y NGNG
英語の読みはGooなりエキサイトなどで確認するのがよさそうですね.
>>847
私は単純に「いんく」「でっく」って読んでますが,
動詞ならincrease/decrease,でも名詞ならincrement/decrementかな?
意味的にはどちらでも合っているから大丈夫だと思います.
0913デフォルトの名無しさんNGNG
あっ、そうか。そうだね。(TabSize の整数倍)+1にそろえるわけね。
ところで過去ログどおりに動作するね。Pos は AnsiPos を使うべきだと思うけど。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s := #9'1'#9'22'#9'333'#9'4444'#9'55555'#9'666666';
  s := TabSpace(s,4);
  Memo1.Lines.Add(s);
end;
0914デフォルトの名無しさんNGNG
substrが#9だから結果として無問題>Pos
ただ他人に余計な突っ込みと不安を生まないために
AnsiPosにするというのもひとつの見識では歩けど。
0915デフォルトの名無しさんNGNG
> substrが#9だから結果として無問題>Pos

なるほど。二バイト文字の二バイト目に #9 が来ることはないのね。ありがとう。
0916デフォルトの名無しさんNGNG
お、面白い。
俺も無駄にタブ展開してみようかな。
0917デフォルトの名無しさんNGNG
MDBからデータを読んでExcelファイルに書き込むPGを組んでるんですが、
書き込んだセルの文字色を変えるのは可能でしょうか?
0918デフォルトの名無しさんNGNG
セルのフォントオブジェクトのカラープロパティをいじる
0919デフォルトの名無しさんNGNG
>>918
XlsApp.Cells.Font.color で合ってますか?
ちなみに設定値はどうなりますでしょうか。
0920デフォルトの名無しさんNGNG
インデックスでセルを指定する必要があるんじゃないかな。
Cellsでは、レンジオブジェクトが参照できないのでは。
0921デフォルトの名無しさんNGNG
とりあえず、単一のセルだけでも文字色を変える方法を知りたいです。

PGが冗長って言うか、面倒になっても構わないので……
0922デフォルトの名無しさんNGNG
アクティブウインドウにkeybd_event()を使って「,」(カンマ)を
送りたいのですが、

keybd_event(44, 0, 0, 0);

とやっても出来ません。
アルファベットやスペースなんかはできるんですが、
どうやってら出来るんでしょうか?
0923デフォルトの名無しさんNGNG
>>922
「VK_SEPARATOR」では。
0924922NGNG
>>923
返答ありがとうございます。
それも駄目でした。


今、Excelのセルに入力したX,Y座標の値を読み取って、
CADソフトに自動的に線を書くソフトを作ってます。

ALT(VK_MENU)、ENTER(VK_RETURN)、数値を
CADソフトに送ることは出来ているんですが
唯一カンマを送ることが出来ません…
0925デフォルトの名無しさんNGNG
CADソフトはカンマを受け取れるようになってるの?
0926デフォルトの名無しさんNGNG
Delphi6(無料) をダウンロードして使ってみました。
マニュアルが微妙なんですが、製品版はどうなんでしょうか?
0927デフォルトの名無しさんNGNG
a,b,c,を入力しaX²+bX+cの解を計算。
二次方程式を判別するプログラムおねがいします
0928デフォルトの名無しさんNGNG
いやです
0929デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0930デフォルトの名無しさんNGNG
根の公式に代入するだけ。複素数かどうかも判断できる。
プログラミングの要素としてはくだらなすぎ
0931デフォルトの名無しさんNGNG
=0 が抜けてるから解はない、が正解
0932シスシスNGNG
文字列のAND検索はどうすればいいの?(VB.NET)
0933デフォルトの名無しさんNGNG
すれ違い
0934922NGNG
925

受け付けます。もともとX、Y座標をカンマで区切るので。
試しにメモ帳でやってみても、カンマは送れないです。
とりあえず、他の方法も考えてみます。

一応、環境は
Win2000
Delphi7Pro
0935デフォルトの名無しさんNGNG
44 は VK_SNAPSHOT だね。コンマのほかにも中括弧とかコロンとかどうやるのかな?
0936デフォルトの名無しさんNGNG
>>926
クイックスタート、言語ガイド、開発者ガイドのPDFのことなら全く同じ。
0937デフォルトの名無しさんNGNG
AnsiPosとかで文字列内の最後部にある位置を知りたいんですけど方法ありますか?

abcabcで二つ目(一番後ろ)のaの位置を取得したいっす
AnsiPosだと1しか返ってこないけど、他に関数とか用意されてるんでしょうか?

一応、先頭が見つかるごとに検索開始位置をずらしてやってみたりしたんですけど文字数が多いととてつもなく時間食ってしまいます
0938デフォルトの名無しさんNGNG
StrRScan
0939デフォルトの名無しさんNGNG
訂正:AnsiRScan
0940デフォルトの名無しさんNGNG
>>939
即レスサンクスです
調べてみます
0941デフォルトの名無しさんNGNG
StringGrid1.Rows[StringGrid1.Row].Delimiter:=#9;
Text:=StringGrid1.Rows[StringGrid1.Row].DelimitedText;

とやると、セルの内容に半角スペースが含まれるときに、そこが
ダブルコーテーションで囲まれちゃうんですが、これをしないように
する方法はありますか?
0942デフォルトの名無しさんNGNG
>>941
QuoteChar := ''でいけるかも
0943デフォルトの名無しさんNGNG
>>942
即レスありがとうです。やってみたんですが、
QouteChar:=''だと、StringとCharに互換性がないと言われます。
#0ではエラーが出ました。
0944デフォルトの名無しさんNGNG
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
i := -1;
if i in [-1, 0] then ShowMessage('');
end;

コンパイルエラーが出るのは何故ですか?
0945デフォルトの名無しさんNGNG
>>944
集合型は負数の指定は不可。
InRange使え。
0946デフォルトの名無しさんNGNG
文字をS-JISからEUCに変換したいのですが、
HenkanJ.pasの使い方を教えていただけないでしょうか。

len := Length(Line);
for ch := 1 to len do
begin
moji := SJisToEUC(ord(Line[ch]));
mojis := mojis + chr(moji);
end;

何故かデータが難しい漢字ばかりになってしまいます。
0947デフォルトの名無しさんNGNG
レイブレポートの使い方を教えてくれる学校とかないですか?
0948デフォルトの名無しさんNGNG
がっこう・・・
0949デフォルトの名無しさんNGNG
>>946
二バイト文字の判断をしなくちゃだめでしょ。文字ごとじゃなくて文字列で変換してくれる
HenkanJ2.pas というのを使ったらいい

http://forum.nifty.com/fdelphi/samples/00959.html
0950デフォルトの名無しさんNGNG
>>949
凄い助かった。ありがとう。
後から二バイトの判断には気づいたんだが、
その後の処理がめちゃくちゃだった。

これで家に帰れる。
0951デフォルトの名無しさんNGNG
Delphi2005トライアルで作ったソフトは配布してもいいですか?
0952デフォルトの名無しさんNGNG
Delphi2005トライアルの規約をお読みください
0953922NGNG
これでカンマを送ることが出来ました。
keybd_event(188, 0, 0, 0);

お騒がせしました。


>>935

コロンは「186」
中括弧は不明です。
0954デフォルトの名無しさんNGNG
>>953
ありがとう。こっちでも試してみた。virtual-key code が Windows.pas で未定義な 166 から 228 の間で

keybd_event(Code, 0, 0, 0);
keybd_event(Code, 0, KEYEVENTF_KEYUP, 0);

で意味ある「文字」を送れるのは

186 : :
187 : ;
188 : ,
189 : -
190 : .
191 : /
192 : @
219 : [
220 : \
221 : ]
222 : ^
226 : \
228 : 00 (?)

たとえばキーボードを見ると { は shift + [ だから

keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(219, 0, 0, 0);
keybd_event(219, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

でOK。以下おなじ。
0955922NGNG
>>954
なるほど。
0956デフォルトの名無しさんNGNG
WM_CHARでも送っとけ
0957デフォルトの名無しさんNGNG
keybd_event() のとこを話すと必ず一人は現れるね > WM_CHAR
0958デフォルトの名無しさんNGNG
>>922
カンマとかのキーコードはキーボードレイアウトによって変わる。
VkKeyScanを使えば、任意の文字に対応する仮想キーコードと修飾キーを調べられるよ。
0959デフォルトの名無しさんNGNG
>>958

>>922 じゃないけど試してみた。ありがとう。

function GetVirtualKey(ch:Char):string;
var
  ret: word;
  func,code: byte;
begin
  ret := VkKeyScan(ch);
  func := HIBYTE(ret);
  code := LOBYTE(ret);
  if (func = $FF) and (code = $FF) then
  begin
    result := 'not found';
    exit;
  end;
  result := '';
  if (func and $01 <> 0) then result := 'SHIFT + ';
  if (func and $02 <> 0) then result := result + 'CTRL + ';
  if (func and $04 <> 0) then result := result + 'ALT + ';
  result := result + IntToStr(code);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add(GetVirtualKey('a'));
  Memo1.Lines.Add(GetVirtualKey('A'));
  Memo1.Lines.Add(GetVirtualKey(','));
  Memo1.Lines.Add(GetVirtualKey('['));
  Memo1.Lines.Add(GetVirtualKey('{'));
end;
0960デフォルトの名無しさんNGNG
つづき

結果

65
SHIFT + 65
188
219
SHIFT + 219

うまくいった!
0961デフォルトの名無しさんNGNG
実際に使うときは文字列じゃなくて、結果をフラグと数値にして

keybd_event()

を SHIFT を押すかどうかなどを判断するようにコードを書けばいいね。
0962デフォルトの名無しさんNGNG
やってみた

function KeybrdEvent(ch: Char; CtrlCode:Boolean=false):Boolean;
var
  ret: word;
  func,code: byte;
  fShift,fCtrl,fAlt:Boolean;
begin
  result := false;
  if CtrlCode then
  begin
    keybd_event(byte(ch), 0, 0, 0);
    keybd_event(byte(ch), 0, KEYEVENTF_KEYUP, 0);
  end
  else
  begin
    ret := VkKeyScan(ch);
    func := HIBYTE(ret);
    code := LOBYTE(ret);
    if (func = $FF) and (code = $FF) then exit;

    fShift := (func and $01 <> 0);
    fCtrl := (func and $02 <> 0);
    fAlt := (func and $04 <> 0);
0963デフォルトの名無しさんNGNG
つづき

    if fShift then keybd_event(VK_SHIFT, 0, 0, 0);
    if fCtrl then keybd_event(VK_CONTROL, 0, 0, 0);
    if fAlt then keybd_event(VK_MENU, 0, 0, 0);
    keybd_event(code, 0, 0, 0);
    keybd_event(code, 0, KEYEVENTF_KEYUP, 0);
    if FAlt then keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    if FCtrl then keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    if FShift then keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  end;
  result := true;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  KeybrdEvent('D');
  KeybrdEvent('e');
  KeybrdEvent('l');
  KeybrdEvent('p');
  KeybrdEvent('h');
  KeybrdEvent('i');
  KeybrdEvent(Char(VK_RETURN),true);
  KeybrdEvent('@');
  KeybrdEvent('<');
  KeybrdEvent('|');
  KeybrdEvent('8');
  KeybrdEvent('_');
  KeybrdEvent(Char(VK_LEFT),true);
  KeybrdEvent(Char(VK_LEFT),true);
end;
0964デフォルトの名無しさんNGNG
結果

Delphi
@<|8_

となって、期待通りキャレットが8の前に来る
0965デフォルトの名無しさんNGNG
D6パソナルで作ったexeを配布したらどうなるとですか?
0966デフォルトの名無しさんNGNG
対価を得なければいいんじゃないの。フリーソフトなら。
0967デフォルトの名無しさんNGNG
あわわ、overload を使った方がきれいだね。

function KeybrdEvent(VKey: Byte):Boolean;overload;
begin
  keybd_event(VKey, 0, 0, 0);
  keybd_event(VKey, 0, KEYEVENTF_KEYUP, 0);
end;

function KeybrdEvent(ch: Char):Boolean;overload;
var
  ret: word;
  func,code: byte;
  fShift,fCtrl,fAlt:Boolean;
begin
  result := false;
  ret := VkKeyScan(ch);
     省略
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  KeybrdEvent('D');
  KeybrdEvent('e');
  KeybrdEvent('l');
  KeybrdEvent('p');
  KeybrdEvent('h');
  KeybrdEvent('i');
  KeybrdEvent(VK_RETURN); // 見かけ上同じに書ける
  KeybrdEvent('@');
以下略
0968デフォルトの名無しさんNGNG
Server/Clientプログラムで、Serverに接続した際にパスワード認証を行いたいのですが、
どのように書けば良いでしょうか。
0969デフォルトの名無しさんNGNG
下のようなテキストファイルがあるとき、
文字列 name から adress までに含まれる
文章1だけ指定するにはどうしたらいいんでしょうか?


name
 文章1
adress
 文章2
proffile
 文章3
end       
0970デフォルトの名無しさんNGNG
sl := TStringList.Create;
sl.LoadFromFile('foo.txt');
idx1 := sl.IndexOf('name');
idx2 := sl.IndexOf('address');
for i := idx1+1 to idx2-1 do
 Writeln(sl[i]);
0971デフォルトの名無しさんNGNG
AnsiPosでnameの位置とadressの位置を見つけて引き算する。
あとはCopyで文章1を抜き出す。
0972デフォルトの名無しさんNGNG
>>970さん
>>971さん
素早い回答ありがとうございます。
今から試してみたいと思います。
では・・
0973デフォルトの名無しさんNGNG
>>970-971
素晴らしい連携だな、おい
0974デフォルトの名無しさんNGNG
このスレでさえレベルの違う自分が嫌になってきたorz

ttp://hp.vector.co.jp/authors/VA015669/
ここのUIDHTMLEdっていうのをインストールしようとしたんですが、
どうもActiveXの初期化(?)の部分でエラーがでます。
未定義の識別子 action.UIEditon みたいな感じのです。
必要なコンポーネントはインストールしたんですけど全く駄目でした。
サポートもHPも死んでるみたいなので、どなたか対処法をご存じの方、
ご教示下さい。

>>973
同一人物では?
0975デフォルトの名無しさんNGNG
同一人物じゃないだろ。970は文字列単位で、971は文字単位で抜き出す方法。
前者が正解に近い
0976デフォルトの名無しさんNGNG
>>974
1週間前に更新してるから生きてるんじゃないの?
ttp://www33.ocn.ne.jp/~takoyakusi/index.html
0977デフォルトの名無しさんNGNG
簡単なシミュレーションを作りたいと思っています。
それにあたって、
プログラム内で、○日目○時○分という形で、
独自の時間を動かしたいのです。
現実の1秒=プログラム内の1秒ではなく、
速度を早めたりできるようにしたい。

今の知識で思いついたのは、
day,time,minuteという3つの変数をIntegerで定義して、
Timerコンポーネントの中に、
time=23 minute=59 なら time=0 minute=0 day+1
time=23 でなく minute=59 なら minute=0 time+1
それ以外なら minute+1
というような内容を書き込んで
時間を経過させていくというものです。
Timer.intervalによって速度も変えられますよね。

ただどうも原始的というかスマートではないですよね。
他にこういう時の定石みたいなものがあるのではと思ったんですが、
何かないでしょうか。
0978デフォルトの名無しさんNGNG
>>977
TDateTime型とIncSecond関数とかどうよ?
0979デフォルトの名無しさんNGNG
PAnsicharの変数をstringに変更するにはどうしたらいいですか?
0980デフォルトの名無しさんNGNG
>>978
難しそうで諦めたんですが
もう一度見てみます。
0981デフォルトの名無しさんNGNG
>>979
PAnsiCharが指す文字をString型に代入するという意味なら

a: PAnsiChar;
b: String;

b := a^;
0982デフォルトの名無しさんNGNG
>>980
独自の時間を秒単位で持つ変数をtとすると
second := t mod 60;
minute := t div 60 mod 60;
hour := t div 3600 mod 24;
day := t div 86400;
0983デフォルトの名無しさんNGNG
>>981
ありがとうございます
0984デフォルトの名無しさんNGNG
TMyRec = record
  aa : string[10];
  bb : Integer;
  cc : Boolean;
end;

こんな型で宣言時に値をつめたいと思っているのですが、
どうもうまくいきません。よろしくお願いいたします。

var
 MyRec : array [0..0] of TMyRec =
     ( (aa:'テスト'),(bb:0),(cc:True) );

こんな風にすると、要素数が異なるって怒られます
0985高野聖NGNG
  MyRec : array [0..0] of TMyRec =
   ((aa:'テスト';bb:0;cc:True));
0986裏高野NGNG
>>985
高野聖がこんな所で何をしておる!
0987デフォルトの名無しさんNGNG
>>985
できた!ありがとう
098820用テンプレNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

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

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
098920用テンプレNGNG
<過去ログ>
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
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://pc5.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
0990デフォルトの名無しさんNGNG
くだすれDelphi(超初心者用)その20
http://pc5.2ch.net/test/read.cgi/tech/1101530485/
0991デフォルトの名無しさんNGNG
あれ?
同じ引数を取る、別の型を返す同じ名前のfunctionって作れなかったっけ?

オーバーロードしようとしたら怒られたんだけど

function GetInput(const Prompt: string): string; overload;
function GetInput(const Prompt: string): integer; overload;
0992デフォルトの名無しさんNGNG
無理だよ。

SetInput(GetInput('xxx'));

でSetInputがoverloadされてたらあいまいさを解決できないから。
0993デフォルトの名無しさんNGNG
お訊ねします。
任意のファイルを開くまたは起動させるにはどうすれば良いですか?
TXTファイルを指定してメモ帳で開いたり、EXEを起動させたりということをプログラムから行いたいです。
よろしくご教授お願いします。
0994デフォルトの名無しさんNGNG
ShellExecuteやCreateProcess
0995デフォルトの名無しさんNGNG
>>994
お早い回答ありがとうございます。
助かりました。多謝。
0996927NGNG
A := StrToFloat(EditA.Text); B := StrToFloat(EditB.Text); C := StrToFloat(EditC.Text);
end; begin if A = 0 then begin X := -B / 2 * A;
end
else
begin
D := B * B - 4 * A * C;
end;
if D = 0 then
begin
X := -B / 2 * A;
Memo1.Lines.Add(Format('解は%g',[X]));

end
else
begin
E:=( -B + sqrt ( D ) ) / 2 * a;
F:=( -B - sqrt ( D ) ) / 2 * a;
Memo1.Lines.Add(Format('解は%gと%g',[E,F]));
end;
if D >= 0 then
begin
E:=-b/2+A+-sqrt(D);
F:=-b/2+A+-sqrt(D);
end
else
begin
Memo1.Lines.Add(Format('解なし')); end; end; end.
とりあえず自分で作ってみました
間違い指摘おねがいします
0997デフォルトの名無しさんNGNG
やってみて正しい解が得られればあってるんじゃないの

あとどうでもいいが
> end; end; end.
何だコレは
0998927NGNG
改行がおおいっていわれたから。
Memo1の定義ってどうやるんですか
0999デフォルトの名無しさんNGNG
うめ
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。