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

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

<前スレ>
くだすれDelphi(超初心者用)その20
http://pc5.2ch.net/test/read.cgi/tech/1101530485/
<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
2Project774.dpr:05/01/01 01:58:31
3デフォルトの名無しさん:05/01/01 02:10:32
>>1
4デフォルトの名無しさん:05/01/01 03:56:15
         ヘ  o ,    ── /   __,   /  _,   /_/_/       __,   /
          /  \ ´   ── /        /   ─'  /    _       / 
         _/    \   __ /   ___/   ___/     /   ___/
                                     ̄ ̄ ̄
                    _ , ― 、
                  ,−'  `      ̄ヽ_
                 ,'            ヽ
                (   `ー'ー'ヽ`ー'ー'ヽ  )        
               (  ノ ''''''   '''''':::::::ヽ  )
               ( . )(●),   、(●)、.:( ) +
               ( )   ,,ノ(、_, )ヽ、,, .::::( )    <ヨン様が華麗に4get!
               . ヽ )   `-=ニ=- ' .:::::::|ノ  +
                  \  `ニニ´  .:::::/      +
               ,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
               :   |  '; \_____ ノ.| ヽ i






5名有り:05/01/01 05:25:27
プログラミングについての質問なのですが以下のプログラムなのですがコンパイルして実行すると
hp: what had happend?
HpCheck(dmatrix.c, 178) : heap violation[ O]と出て、セグメンテーション違反です で終了してしまうのです
ちなみにdmatrix.cの178行は
double **dm_create(int n, int m)
{
int i, j;
double **aa;
aa = (double**)MALLOC(sizeof(double)*n);
for(i=0; i<n; i++){
aa[i] = (double*)MALLOC(sizeof(double)*m);
memset(aa[i], 0, sizeof(double)*m);
}
return(aa);
}
という所のaa[i]〜って所ですどうやったら回避できるのか分からないので教えて下さいよろしくお願いします
6名有り:05/01/01 05:26:02

void klt(double **U, double **Y, int K){
int i, n;
double a, **v, **d, **E, T, **y;
v = dm_create(K+1, K+1);
d = dm_create(K+1, K+1);
E = dm_create(K+1, K+1);
y = dm_create(K+1, K+1);
for(i = 1; i<=K; i++){
d[i][0] = 0.0;
U[i][0] = 0.0;
for(n = 1; n<=K; n++){
y[1][n] = Y[n-1][0];
v[i][n] = U[n-1][i]*y[i][n];
d[i][n] = 0.95 * d[i][n-1] + v[i][n]*v[i][n];
E[i][n] = y[i][n] - U[i][n-1]*v[i][n];
T = klt_T(d,i);
a = T*E[i][n]*v[i][n]/d[i][n];
U[i][n] = U[i][n-1] + a;
y[i+1][n] = y[i][n] - U[i][n]*v[i][n];
}
printf("for out1");
}
dm_free(y,K);
dm_free(v,K);
dm_free(d,K);
dm_free(E,K);
}
7デフォルトの名無しさん:05/01/01 05:27:57
(超初心者用)って文字だけ見たんだろうな
8デフォルトの名無しさん:05/01/01 10:45:33
しかしDelphiって何?とは少しも思わなかったのかねw
9名有り:05/01/01 18:03:35
すいませんおもいませんでしたorz
10初心者:05/01/02 18:00:15
前のスレッドで、処理の途中経過表示の件で質問した者です。
回答ありがとうございました。

Delphi Synchronizeで検索かけたら出ました
マルチスレッドアプリケーションの開発方法
http://www.wwlnk.com/boheme/delphi/techdoc/dad0010.html
色々あるけどこれが一番わかり安かった
11デフォルトの名無しさん :05/01/02 18:47:50
質問です。
Delphi6を使っています。

久し振りに起動しましたところ、ツールバーやメニューが消えてしまっています。
どうやって表示すればよいでしょうか。
よろしくお願いいたします。
12デフォルトの名無しさん:05/01/02 19:13:45
画面の解像度上げてみてはみ出していないかどうかを確認。
何も表示されていない領域を右クリックしてチェックをつけてみる。
別ユーザーを作ってログインしてIDEを起動してみる。
再インストール
13デフォルトの名無しさん:05/01/03 18:28:04
InputBoxなどでの質問なんですが、
英語版Windowsで表示すると日本語版WindowsだとOK,キャンセルになっている
ボタンはちゃんと英語になるんでしょうか。。
14デフォルトの名無しさん:05/01/03 18:39:36
ScrollBoxでスクロール量を変えるにはどうしたらいいですか?
プロパティではなく、プログラム中で動的に変化させたいです。
15デフォルトの名無しさん:05/01/03 19:11:53
>14
プログラム中で動的にプロパティに新しい値を代入する。
16初心者ですが:05/01/03 21:09:47
新規作成で
 ASP.NET Web
 VCLフォーム
Windowsフォーム
の違いが分かりません教えてください



17デフォルトの名無しさん:05/01/03 22:53:38
BMPファイルのヘッダ情報を取得するにはどうすればいいでしょう?
18デフォルトの名無しさん:05/01/03 23:02:39
>>17
BITMAPFILEHEADERでぐぐれ

BITMAPFILEHEADER、BITMAPINFOHEADER、(RGBQUAD)の各レコード型がそのまま書かれてるだけだ

>>16
BCBしか使ってないからよくわからんがDel8かな?
VCLフォーム: VCL.netのTForm派生のフォーム
WIndowsフォーム: .net FrameworkのWindows.Forms派生のフォーム
だと思われ
19デフォルトの名無しさん:05/01/03 23:28:35
インラインアセンブラを使って処理の最適化をしようと思うのだけど、
実行中のCPUウィンドウに表示されるシンボルと対応行表示付きの
逆アセンブルをそのままソースとして抜き出す方法はないでしょうか?
20ない:05/01/04 00:33:37
21デフォルトの名無しさん:05/01/04 05:46:41
特定の日付の色を変えられるカレンダーコンポーネントを作るには何から
派生させればいいのでしょうか?

Delphi7を使用してます。
SamplesのTCalendarからが楽そうなんですが、やり方がわかりません。
22デフォルトの名無しさん:05/01/04 07:29:45
>>19
CTRL-Cは別の意味になるから ALT+E+C
これで1行しかコピーできないから、これを送ってはカーソル↓を送って
というアプリを作ればなんとかなりそうだけど

残念ながら、ラベルの部分がコピー出来ない

ということで、DCU32INTを使うのが一番いいかもしれないよ。
どこで手に入れたか忘れたから自分で検索してくれ 
23デフォルトの名無しさん:05/01/04 07:45:04
24デフォルトの名無しさん:05/01/04 10:34:39
25デフォルトの名無しさん:05/01/04 13:14:49
フレームにEditとButtonを貼り、
擬似的なDateTimePickerのようなものを作成しようとしています。
カレンダークラスはDateTimePickerよりコピーしました。

ただ、ボタンクリック→カレンダー表示がどうしてもできません。
DateTimePickerはコンボのリスト内にカレンダーを描画しているいるようなのですが、
EditとButtonの場合の描画方法がわかりません。

初心者で申し訳ないのですが
よろしくお願いします。。
26デフォルトの名無しさん:05/01/04 13:45:02
それ激しく見当ちがい
27デフォルトの名無しさん:05/01/04 15:33:30
 以下はTTreeViewのあるノードの階層化のノードをすべてソートするためのものですが
自前のソートを使った場合うまくいきません。ノードをスワップしているところがまず
いのでしょうか?
procedure ChildNodeSort(Node: TTreeNode;);
var
 gap,width,i,j :Integer;
 dmy      :TTreeNode;
begin
 if Node.GetFirstChild <> Nil then
  for j := 0 to Node.Count-1 do ChildNodeSort(Node.Item[j]);
 //Node.AlphaSort; や Node.CustomSort(@CustomSortProc, 0); ならもちろんOK!
 gap := Node.Count-1;  //ShellSort(昇順)
 while gap > 0 do
 begin
  gap := gap div 2;
  width := Node.Count-1-gap;
  for i := 0 to width do
  begin
   j := i;
   while j >= 0 do
   begin
    CompareStr(Node[j].Text,Node[j+gap].Text) <= 0 then break;
    dmy := Node[j];  Node[j] := Node[j+gap];  Node[j+gap] := dmy; //これがまずい?
    j := j-gap;
   end;
  end;
 end;
end;
28デフォルトの名無しさん:05/01/04 16:06:15
インスタンスを入れ替えるんじゃなくて内容を入れ替える
29デフォルトの名無しさん:05/01/04 16:53:28
> インスタンスを入れ替えるんじゃなくて内容を入れ替える

dmy.Assign(Node[j]);
Node[j].Assign(Node[j+gap]);
Node[j+gap].Assign(dmy);

としましたがダメでした。そういうことではないのかな?
30デフォルトの名無しさん:05/01/04 17:57:18
TreeViewは windowsのコモンコントロールのラッパーだから、
VCL側だけで並べ直しても意味がない。
コモンコントロールに対して送らないと結果は反映されない。
だからVCLはTVM_SORTCHILDREN を送って処理させてる。

で、自前のソートがやりたいなら 
TTreeNode.CustomSort を使う方が簡単
31デフォルトの名無しさん:05/01/04 18:45:26
>>30
サンクス。とても勉強になりました。
32デフォルトの名無しさん:05/01/04 18:49:08
どーでもいいけどshellsortのgapは
h := 1;
while h < n do
 h := h * 3 + 1;

while h > 0 do
begin
 h := h div 3;
が効率的。
33デフォルトの名無しさん:05/01/04 21:17:00
>>32
 アルゴリズムの本にはそう書いてありますよね(^^;)。
 ソートいえば皆さん、やはりクイックソートを使うんでしょうか。
 私の貧弱なセカンドマシン(Pentium U 400Mzh)で Integer 型のデータ5万個をソートした場
>>27 のコードでもクイックソートと比較しても体感的な差は全くないです。文字列なら(テキ
ストの種類にもよりますが)1万行でも差が出るでしょうけど、そういうことをする必要に迫ら
れたことがないので私はシンプルなシェルソートを使うことが多いです。
34デフォルトの名無しさん:05/01/04 21:29:27
まったく貧弱じゃないな。
35肉体労働者:05/01/04 22:21:51

すみません質問させてください。

目的
2バイトコードとアスキーの混在するテキストファイルのコンバートをしようとしています。
最終的に日本語だけになれば完成。

ファイルの仕様
日本語2バイトコードとアスキーコードが混在しています。

自分のしたこと
TFileStreamのReadメソッドを利用して1バイトづつ読み込んでバッファに保持。
CRLFが出てきたら返す。

問題点
 sz := fs.Read( buf, 1);
 if buf = widestring(chr($0d)) then
begin
処理...

と書いたところ判断文で死んでしまいます。
szはlongintで、bufはwidestringで変数を取りました。
デバッガでリードした値を読むと読めないので変数の取り方がおかしいのかとも思っています
どうやって取ればいいのか教えていただけますか?

36デフォルトの名無しさん:05/01/04 23:06:11
1バイトずつならbufはbyte型にする。あとszの値チェックし忘れ。
Readlnじゃ駄目なのか?
37肉体労働者:05/01/04 23:09:18

ご指摘ありがとうございます。
これからやってみます。サイズチェックは実際にはしてますが
ここで書くには行数制限のために省きました。
ReadInは調べてみます

また分からないことがありましたらご指導ご鞭撻よろしくお願いします
38デフォルトの名無しさん:05/01/04 23:09:59
う・・う〜ん。どこから突っ込んだらよいのやら・・
ネタなのかなぁ。
でも俺も通った道だしなぁ・・。

35のどこが悪いか指摘するより
「最終的に日本語だけになれば完成。」のコードを書くほうが圧倒的に早い・・。

・SingleByteも混じってるのにWideStringで読んでどうするの、とか
・そもそもWideCharじゃなくてWideStringかよ!、とか
・そのくせなんで1ByteしかReadせぇへんねん!、とか
・1文字分づつ読んでたらオーバーヘッドがすごいことになるぞ大きいバッファにまとめて取り込め、とか
・そもそも、テキストファイルならTStringList.LoadFromFileで一発やんか、とか
39デフォルトの名無しさん:05/01/04 23:10:40
> 2バイトコードとアスキーの混在するテキストファイルのコンバートをしようとしています。
> 最終的に日本語だけになれば完成。
よくわからんけど、要するにテキストファイルから2バイトコードだけを取り出したいということ?
40デフォルトの名無しさん:05/01/04 23:11:46
41肉体労働者:05/01/04 23:44:22

ご指摘ありがとうございます。

>>38氏
大きなバッファに取り込んでやろうかとも思ったのですが・・・
所詮は肉体労働者なので脳が足りなくて、
バッファの読み込みタイミングを考えたりサイズを考慮するのが面倒だったことと
一行のデータを切り出せると後の処理の都合が便利だったというだけです。

>>39
仰るとおりです。ただ、将来的には行頭のアスキーコードで処理を分岐させたいと思っています

>>40
ありがとうございます。これから調べてみます
42デフォルトの名無しさん:05/01/04 23:57:18
>>41
function GetAnsiStr(S :string) :string;
var
 i,j,L: Integer;
 P : PChar;
begin
 if S = '' then Exit;
 L := Length(S);  i := 1; j := 0;
 P := StrAlloc(L+1);
 while i <= L do
 begin
  if (S[i] in [#$81..#$9F, #$E0..#$FC]) or (S[i] = #13) then
  begin //全角文字(と改行コード)の処理
   P[j] := S[i];  P[j+1] := S[i+1];
   Inc(i,2);  Inc(j,2);
  end else //アスキー文字の処理(読み飛ばす)
   Inc(i);
 end;
 P[j] := #0;
 Result := string(P);
 StrDispose(P);
end;

使用例
 Memo1.Lines.Text := GetAnsiStr(Memo1.Lines.Text);
 いうまでもないがアスキー文字列だけの行は空行(改行コードだけ)になる。
 そういうとき空行も不要というならちょっと上記のコードを改造すればいい。
43デフォルトの名無しさん:05/01/05 00:03:44
StringReplaceを繰り返し呼び、半角文字を全部削除する事もできるよ!
44肉体労働者:05/01/05 00:06:16
>>42
ああ、これは素晴らしいソースですね!
これはありがたい。
これなら行頭の文字などを判断文に追加することによりいろいろ出来ますね。
本当に助かります。感謝感激です。


あと、非常に初歩的な質問なのですが
現在、メニュを選択したときにこの処理を走らせているのでアプリが動作を占有して
死んでいるのか生きているのかもわかりません。
どうにかしたいのですがどうしたらいいんでしょうか?
自分でもヘルプとにらめっこしているんですがちょっとわからないのでご指導いただけますでしょうか?
甘えてばかりですみません。
45デフォルトの名無しさん:05/01/05 00:29:49
>>44
スレッド立てて処理するか、ループの最中に Application ProcessMessages とか
46デフォルトの名無しさん:05/01/05 00:58:35
TObjectから派生したクラスって簡単にコピーできないんでしょうか?
TPersistentから派生してないのでAssignできんとですorz
ググってもそれらしいのにひっかからないのでご存知の方がいれば
教えていただければと
47デフォルトの名無しさん:05/01/05 01:32:00
なにをどうコピーするのかはプログラマがきめることなんだよ。
48デフォルトの名無しさん:05/01/05 02:34:36
>>46
RTTIを使えばpublished propertyの代入の自動化は出来るかも。
ただしTPersistent, TStream.ReadComponent/WriteComponent相当の機能を
自力で実装しないといけないから結構面倒かも(その為のTComponentなわけで)。
永続化フレームワークがそれっぽいことをやってそうな気がしないでもないけど
たぶんTComponentの機能を利用しているだけだと思う。

ようは簡単には出来なさそうってこった。
49デフォルトの名無しさん:05/01/05 07:30:35
47の言葉が全てを語ってる。
漏れも自力で実装した。
つーか、どこかに「Assignは各クラス各々で実装すること」みたいなこと書いてなかったっけ?
前にVCLソースでAssignを継承の大元までたどったことがあったけど
結局「Assignメソッドが用意されているなら引数をメソッドに引き渡す。ないならなにもしない」というコードだったよ。
50肉体労働者:05/01/05 09:05:34

昨日は皆様のおかげで随分進んだような気がします。
ありがとうございました。

現在は昨日の最後の問題を解決すべく試行錯誤しております。
>>45氏のご指摘されたようなやり方を考えているのですが
ちょっとスレッドはむずかしそうなので・・・
あと、自分がやりたいことは、もしかしたらSendMessageを使うと可能かもしれないと思っています
まぁ、SendMessageの使い方もわからないのでどっちもどっちなんですがねw

プログラムはやっぱり難しいですね。
なにもわからず始めてみたものの、悩んでばっかりです。
51頭脳労働者:05/01/05 09:47:26
>>50
だって、簡単だったらプログラムに金払う奴なんていなくなるだろ?
52デフォルトの名無しさん:05/01/05 15:22:16
>>22-23
dクス。使ってみます。
53デフォルトの名無しさん:05/01/05 22:52:24
amazonでdelphiの本買おうと思ってるんですがおすすめの本とかありますか?
ちなみにほかのプログラミングもさわり程度しかやったことのない初心者です。
バージョンはdelphi6です。
54七誌:05/01/05 22:53:50
かなり初歩的な質問で申し訳ないのですが、PCと対戦する、ジャンケンプログラムを
作りたいのですがどこからはじめたらいいのかわかりません。
参考になるようなHPなどありますか。教えてください。
55デフォルトの名無しさん:05/01/05 23:02:51
56デフォルトの名無しさん:05/01/05 23:13:48
>>55ありです
57デフォルトの名無しさん:05/01/05 23:28:09
delphi2005はWinXP Homeでは使えないのでしょうか
58デフォルトの名無しさん:05/01/05 23:58:43
>>57
Borlandに問い合わせて報告汁
59デフォルトの名無しさん:05/01/06 01:50:42
>>54
そのレベルから入るなら(賢明だと思います)
自分なりのデザイン(ウィンドウのイメージね)を考えれば
書き加えるべきコード自体は単純そのものだから
どこぞのHPなど参考にするより、自分で試行錯誤した方がよさげです
60デフォルトの名無しさん:05/01/06 02:36:39
61デフォルトの名無しさん:05/01/06 03:08:22
>>51
誰でも出来る簡単な仕事にだって金を払ってるよ!
62デフォルトの名無しさん:05/01/06 03:59:35
42氏のコードを見てて思ったのだけど
最近 IsDBCSLeadByte は使われなくなったのだろか?

結果は同じなんだろうけど、こっちで行けるのならよりスマートじゃまいか
63デフォルトの名無しさん:05/01/06 04:16:42
全般的に42は変。
64デフォルトの名無しさん:05/01/06 06:24:18
> 最近 IsDBCSLeadByte は使われなくなったのだろか?
 D3以降ならByteType 関数もあるからそれを使う方が普通だろうね。
 だけど>>42の方法なら、たとえば半角・全角の英数字だけを取り出す
といったことも簡単にできる。

> 全般的に42は変。
 集合型を使った判定が珍しいとは思うけど、べつに変じゃないだろ。
65デフォルトの名無しさん:05/01/06 06:30:34
何で StrAlloc 使ってるの?
使ったこと無いから分からんけど、イイの?
下位互換性ルーチンちゃうの?
66デフォルトの名無しさん:05/01/06 06:48:48
くだすれが最も生産的なすれになっている予感w
67デフォルトの名無しさん:05/01/06 07:38:27
そもそもなぜPChar?Stringじゃだめなのか?
68デフォルトの名無しさん:05/01/06 07:39:15
>>65
全然問題なし。ヘルプでStrAlloc調べろ。
もっとも>>42の場合とくにPCharを使うこともないとは思うが・・・
69デフォルトの名無しさん:05/01/06 08:05:51
CかPascalかって悩んでる時点でだめだね。
プログラマに向いてる奴は4言語ぐらい使いこなすマルチリンガル。
そして、ただのコーダーに限って1言語しかできないとくる。
70デフォルトの名無しさん:05/01/06 12:26:22
Drag and Drop Component SuiteでDropFileSourceを
使用してアプリからD&Dでファイルをコピーしたいのですが、
ただたんにコピーするのではなく、違う処理を途中に
入れたいときがあるので、ドロップ先のフルパスを取得したい
のですが、そのようにすればドロップ先のフルパスを取得
できるのでしょうか?
71デフォルトの名無しさん:05/01/06 13:42:38
ちょっとすみません
二次元配列で
array[0][0..9] := (100,100,100,100,100,60,40,20,20,10);
みたいな感じで一気に代入する方法ってないものでしょうか
array[0][0] := 100;
array[0][1] := 100;
とやっていくのはどうにも間抜けな感じがするんですが
ループつかうには数値に規則性がないので悩んでます
72デフォルトの名無しさん:05/01/06 13:55:25
文法的なサポートはない。
SetArr(var dst; src: array of Integer);
でも作るしか。
73初心者:05/01/06 16:53:39
別Unitでクラスを定義したら
↓こんなメッセージが・・・
---------------------------------------------------------------
デバッガ例外が発生
XXX.exeがEAccessViolationクラスの例外を生成しました。
アドレスXXXXXXXXでアドレス000000に対する読み込み違反がおきました。
---------------------------------------------------------------
これってクラスの定義の方法が間違ってるの?
74デフォルトの名無しさん:05/01/06 17:04:43
直接クラスと関係なし。アクセス違反なだけ。インデックスの範囲外へのアクセスが一番多い原因
75デフォルトの名無しさん:05/01/06 18:06:06
>>71
配列定数とかグローバル変数の初期値ならこんな感じでできる。
ローカル変数だったり、処理の途中で代入したいのなら無理。

const a: array[0..1, false..true] of Integer = ((0, 1), (2, 4));
var a: array[0..1, 0..1] of Integer = ((0, 1), (2, 4));
76デフォルトの名無しさん:05/01/06 18:57:18
うんこ
77デフォルトの名無しさん:05/01/06 19:32:08
>>71
自分で関数を作ればよい。
でも初期値をずらずら並べるのはバグの元
78デフォルトの名無しさん:05/01/06 20:07:55
StringReplace高速化バージョン
http://dennishomepage.gugs-cats.dk/AnsiStringReplaceBV14.zip
79デフォルトの名無しさん:05/01/06 21:09:35
マルチバイト考慮なし?
8071:05/01/06 21:30:24
まだ勉強開始したところなのでまずは愚直に書き
ほかの部分が完成したら関数の作成にもチャレンジしてみたいと思います
お答えいただきありがとうございました
81デフォルトの名無しさん:05/01/06 22:35:01
>>71
コピペして、Var2Dimの値がどうなるか試してみな。

procedure Test;
type
  T2DimArray:array[0..1][0..1] of Integer;
const
  CONST2DIM:T2DimArray:array=( (0,1),(2,3) );
var
  Var2Dim:CONST2DIM:T2DimArray;
begin
  Var2Dim := CONST2DIM;
end;
82デフォルトの名無しさん:05/01/06 23:30:10
時々ヘルプに載ってない言葉に出会うことがあるのですが
みなさんどこで知り、どこで勉強してるのですか?
例えばEM_LINEFROMCHARとかEM_GETLINECOUNTとかです。

使ってるのはdelphi 6 personalです。
>>13
英語にはならないはずです.
InputBox関数の『OK』『キャンセル』のテキストはConstユニットで定義されているリソース文字列を使っているためです.
対策としては同等の関数を自前で作成して実行時にOSの設定言語に合わせてCaptionを書き換えるか,
プロ版以上をお持ちでしたらDialog.pasのInputBox関数とInputQuery関数(InputBox関数が内部で呼び出している)
のソースをコピペしたものをベースにしても良いと思います.

>>46
Delphiの言語仕様にはオブジェクト(インスタンス)を丸ごとコピーする機能はありません.
よって自分でコピーするメソッドを実装するしかありません.
なおTPersistentクラスのAssignメソッドはコピーを支援するだけでコピーそのものは各派生クラスの同メソッドが自力で行っています.
(※フィールド変数があまりにも多いようでしたら関連する要素ごとに
  集合型変数やオブジェクトにまとめた方がよいかもしれません)

>>64
文字列全体を調べる場合はLeadBytes変数を使って自分で判定する方が速度では有利かもしれません.
またLeadBytes変数やByteType関数を使うと日本以外で2バイト文字を使う国に移植する場合に
ソースコードをいじらなくて済むメリットがあります.
(『そんなのあり得ない!』,って思うかもしれませんが
 今,勤め先で開発しているDelphi製アプリケーションに韓国語版の話が来ています)

>>73
アドレス00000000と言うことですので,
宣言したオブジェクト変数の実体(インスタンス)を作っていないのかもしれません.
たとえばTNantokaクラスのフィールド変数FNantokaを宣言したものの
FNantoka := TNantoka.Create を実行する前に FNantokaのプロパティを参照したりメソッドを実行したのかも…と.
84デフォルトの名無しさん:05/01/06 23:42:51
厨な質問でスマン
Delphiでコンパイルしたファイルのアイコンってどうやって変換するんだ?
色んなツール試してみたが「アイコン以外のリソースを含むファイルは書き換えられません。」て出るんだよ・・・
つまらん質問、そして板違いなのかもしれんが誰か教えてくれ、頼む。
85デフォルトの名無しさん:05/01/06 23:45:59
ResourceHackerを使うか、
素直にプロジェクトオプションで最初からアイコンを用意しておく。
>>82
解説書を読む場合もありますがたいていはインターネットです.
http://www.google.co.jp/search?hl=ja&c2coff=1&client=firefox-a&rls=org.mozilla%3Aja-JP%3Aofficial&q=EM_LINEFROMCHAR+Delphi&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
Delphi固有でないWindows全般のキーワードはDelphiのヘルプには載っていません.
私も職場で毎日何回も検索しています.

>>84
確認していませんがリソースハッカー(Resource Hacker)でもだめですか?

87デフォルトの名無しさん:05/01/07 00:02:15
>>84
変えられるハズだがなぁ。
オレは「KH IconRewrite98」っツールを使ってるけど。

…って思ってちょっとやってみたら、
UPXで圧縮したのはダメだった…。
もしかして関係あるアルカ?
88デフォルトの名無しさん:05/01/07 00:02:50
>>86
Windows全般のキーワードなのですか。
なんだかややこしそうですが、少しずつ覚えていくことにします。
ありがとうございました。
89デフォルトの名無しさん:05/01/07 00:18:46
>>81
CとWin32APIでアプリケーション作ろうとすれば
否応なしに目にすることになる。
90デフォルトの名無しさん:05/01/07 00:31:26
APIの学び方について簡単に解説してもらえませんか?
DelWikiのFAQに掲載したいと思います。
9190:05/01/07 00:49:38
あ、気楽にお願いします。
後で何度でも修正できるWikiですから・・・
92デフォルトの名無しさん:05/01/07 01:19:21
だからあまり信用出来ないんだよなぁ
93デフォルトの名無しさん:05/01/07 01:50:59
初心者の質問とその回答以外は他所でやんなさい
9473:05/01/07 06:53:57
>>83
ありがとうございます。バカでした。
×ListA.Create;
○ListA := TMyList.Create;
95デフォルトの名無しさん:05/01/07 16:56:24
はじめまして。
Label1〜5を使うとして、FormatDateTimeで取得したHH:mm:ssをLabelに出力したのですが、
これを取り込んでLabel2〜4に順に現在の時間、5分後、10分後、15分後の時間(文字列として固定する)を
表示させたいと思っています。
どうすればいいのでしょうか。ご教示のほど、よろしくお願い致します。
96デフォルトの名無しさん:05/01/07 16:59:17
Label2〜5の間違いです。
97デフォルトの名無しさん:05/01/07 17:22:00
dt := Now; // 現在
dt := dt + 1/24; // 1時間後
dt := dt + 1/(24*60); 1分後
98デフォルトの名無しさん:05/01/07 17:40:35
>>97
ありがとうございます。
例えばその1時間後にタイマーを鳴らしたい場合、どうすればいいのでしょうか。
ググってみたんですが混乱してしまい・・・
99デフォルトの名無しさん:05/01/07 17:41:40
もう1点。
>>97
dtはintegerでしょうか。
100デフォルトの名無しさん:05/01/07 17:44:13
>>98
TTimer使え
Timer1.Interval := 3600 * 1000;

>>99
dt: TDateTime;
101デフォルトの名無しさん:05/01/07 17:51:24
>>95
IncMinute
102デフォルトの名無しさん:05/01/07 18:00:21
>>100
今Delphiが入っていないPCからなのでテストできず申し訳ないのですが、
Timer1.interval := 3600 * 1000;
とwavを組み合わせるにはどうすればいいのでしょうか。
初心者で本当に申し訳ありません。。
103デフォルトの名無しさん:05/01/07 18:03:06
Timerで一時間も待たせるとかなりズレが起きる予感。
10秒ごとに実行させて時間の差を求めてやったほうがいい予感。

>>102
方法はいくらでもある。というかそれくらいならしらべr
104デフォルトの名無しさん:05/01/07 18:14:07
>Timerで一時間も待たせるとかなりズレが起きる予感。
その根拠は?
メッセージを処理するまでのタイムラグだとしたら
10秒よりはるかに少ないが。
105デフォルトの名無しさん:05/01/07 18:21:19
>>104
なんでそんなに強気でかかるんだよ。。
精神的にもそっちのほうがいいと思うんだが・・。
106デフォルトの名無しさん:05/01/07 19:14:20
意味不明
107デフォルトの名無しさん:05/01/07 19:46:40
TTimer で十分
108デフォルトの名無しさん:05/01/07 20:09:14
漏れも103の意見に賛成なんだが・・。
例えばインターバルを1ミリ秒にセットして
OnTimerイベントに、1ミリ秒以上かかるような処理を書くと
おもむろにその分づつ時間がずれていく・・。

そんなTimerに信頼が置けるか?
109デフォルトの名無しさん:05/01/07 20:13:43
>>104
WM_TIMERそのものの精度が当てにならないのは常識じゃないか?
110デフォルトの名無しさん:05/01/07 20:13:55
>例えばインターバルを1ミリ秒にセットして

ありえない!
TTimer の分解能は約40msだよ。1時間で40ミリ秒ずれることに何の問題が
ある。>>103 の方法は最大10秒もずれるし、無駄な処理が多い。
111デフォルトの名無しさん:05/01/07 20:20:12
> WM_TIMERそのものの精度が当てにならないのは常識じゃないか?

「精度」の意味が分かってないのね。
1回のタイムアップで最大約40ミリ秒ずれる場合、1時間の計測で何が不満なの?
112デフォルトの名無しさん:05/01/07 23:49:37
お前らカップラーメンとかなめ過ぎ。
やっぱ時間計測はリアルタイムOSじゃないとな。
113デフォルトの名無しさん:05/01/08 00:22:37
マインスイーパのあの四角いマスってなにで出来てんの?
まさかボタンを並べてるわけじゃないよね・・
114デフォルトの名無しさん:05/01/08 00:37:53
ボタンじゃなくて自分で描いてるんだろ。
左上を白っぽく、右下を黒っぽくすれば出っ張ってるように見える。
OnMouseDownでクリックされた座標からどのボタンが押されたかを割り出す。
115デフォルトの名無しさん:05/01/08 07:54:18
>>113
リソースに格納してある。
116デフォルトの名無しさん:05/01/08 18:43:07
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/
なぜ>>624以降のようになるのか教えてください
117デフォルトの名無しさん:05/01/08 19:00:41
>>116
メモリアドレスが連続しているほうが速いから。
hoge[]のアドレス調べてみろ。遅いほうはアドレスバラバラだから。
そんなコード書いたらキャッシュ効率が恐ろしく悪くなる。
118デフォルトの名無しさん:05/01/08 19:02:40
>>117
CPUによって速度が逆転してる理由は?
119デフォルトの名無しさん:05/01/08 19:09:53
配列のサイズが約400kbだから一次キャッシュに収まれば速いし収まらなければ遅いと予想。
CPUごとの一次キャッシュサイズ調べてみたら。そこらへんは良く知らない。
120デフォルトの名無しさん:05/01/08 20:38:25
'C:\xxx\yyy\zzz'

これから'zzz'を抜き出すにはどうしたらいいですか?
121デフォルトの名無しさん:05/01/08 20:44:16
>>120
ExtractFileName
122デフォルトの名無しさん:05/01/08 20:56:12
>>120
助かりました
123120:05/01/08 20:56:56
間違ったorz

>>121
ありがとう。

124デフォルトの名無しさん:05/01/08 21:40:30
ケツ拭いたりマンコに突っ込んだりした指で食い物つかんでも平気なら好きにするがいいさ。
125デフォルトの名無しさん:05/01/08 22:00:54
( ゚Д゚) ?
126120:05/01/09 03:43:30
>>124
逝ってる意味が分からない。
既知害ですか?
127デフォルトの名無しさん:05/01/09 03:46:02
今日からDelphi6を使い始めたんですが、「;」を記述しているにもかかわらず、コンパイル時に以下のエラーが出ます。

[エラー] Unit1.pas(50): 演算子またはセミコロン (';') が必要です
[致命的エラー] Project1.dpr(5): 'Unit1.pas' ユニットはコンパイルできませんでした

なぜでしょうか・・・?
128デフォルトの名無しさん:05/01/09 03:50:06
あなたのハードディスクの中身を透視できれば多分わかるのだと思うのだけど。
129デフォルトの名無しさん:05/01/09 04:27:17
一行前の行にセミコロンがないんじゃないの?
130デフォルトの名無しさん:05/01/09 04:29:24
>>127
残念ながら私はエスパーではないのであなたが書いたソースが理解できません
131127:05/01/09 04:33:27
>>129
そのとおりですた・・・orz
すみませんありがとうございます。
132デフォルトの名無しさん:05/01/09 04:35:23
>>130
翻訳サイトが出したような日本語ワラタ
133デフォルトの名無しさん:05/01/09 05:00:23
129氏は冴えてるね
134127:05/01/09 05:04:25
しかし、なんかコンパイルのたびに間違っていない行で止まりますね。
何もしないでもう一回コンパイルを実行したらうまくいったり、
その行をもう一度書き直すとうまくいったりします。
とくに最後の行でよく止まります。なんででしょうか・・・?
135デフォルトの名無しさん:05/01/09 05:14:47
自演だろ
136デフォルトの名無しさん:05/01/09 05:51:05
セミコロンうんぬんのエラーは文法的にどっかおかしいと出る
必ずしもエラー発生行の手前とは限らない
137127:05/01/09 05:54:23
そうなのですか・・・。
いまDelphiでググって出てきたユーザーさんが開いているHPのチュートリアルを
やっているところなんです。
そのサイトに記述してあるとおりに自分でDelphiに記述してもエラー(というか止まる)が出るので
サイトのほうからコピペしてきてコンパイルするとうまくいったりします。
もちろん記述に間違いはなかったのですが・・・。
138デフォルトの名無しさん:05/01/09 07:16:55
>>137
よほど自信があるみたいだが、お前の目と手の精度がダメダメである確率は100%。
139デフォルトの名無しさん:05/01/09 08:24:03
>>137
セミコロンや、begin、end の過不足はソースを上から下へ検査して
いって矛盾が発生した時点でエラー発生となるから、入れ忘れたり
入れすぎた場所より後ろで発生するケースは多いよ。

if (hogehoge) then begin
 ・・・・・・・・;
 ・・・・・・・・;
end else
 ・・・・・・・・;

こんなif文書いたときなんかは要注意。
if文がネストしてる中にこういうのがあると間違えやすいから

140デフォルトの名無しさん:05/01/09 12:32:24
 TComponent を継承してクラス TMyComponent を作るときコンストラクタの引数が TComponent
と異なる場合 override 指定するとコンパイルエラーになります(マニュアルにもそう書いてあ
る)。
 ところが内部にオブジェクト変数(以下の例では FCollection)を持ち、それをコンストラク
タで生成する場合は override 指定しなければならないという説明が他の解説書(服部誠著
「Delphi2.0 コンポーネントセット」)にあり、困惑しています。以下の例では override 指定
しなくても(したくても上に述べた理由で、できない^^;)一応動いていますが、ほんとにこれで
いいのでしょうか?

TMyComponent = class(TComponent)
private
FCollection: TCollection;
public
constructor Create(AOwner: TComponent;
ItemClass: TCollectionItemClass);

・・・・・・・・・・・・・・・・・
published
property Collection: TCollection read FCollection write FCollection;
end;

constructor TMyComponent.Create(AOwner: TComponent;
ItemClass: TCollectionItemClass);
begin
inherited Create(AOwner);
FCollection := TCollection.Create(ItemClass);
end;
141デフォルトの名無しさん:05/01/09 12:38:28
constructor Create(AOwner: TComponent); override;
property ItemClass: TCollectionItemClass;
にしとけ。親のと異なるconstructorはoverrideできない。
142デフォルトの名無しさん:05/01/09 12:47:58
TmyCompo = class(TComponent)

constructor
143デフォルトの名無しさん:05/01/09 12:49:40
constructor TMyComponent.Create(AOwner: TComponent;
ItemClass: TCollectionItemClass);

でやった場合、コンポーネントを登録したときにおかしくなる。
フォームなんかに貼り付けて実行した場合
TMyComponent.Createが呼ばれずにTComponent.Createが呼ばれて
ItemClassの値がうまくセットされないはず。
144デフォルトの名無しさん:05/01/09 13:11:37
>>137みたいなやつは
自分が初心者であることに気づいていない。
初心者ほど自信満々で、すぐコンパイラを疑う。
100%お前が間違ってるんだから、
分かるまでソースを見直せ。
145デフォルトの名無しさん:05/01/09 13:15:11
コピペで動くのに、コンパイラを疑うのは100年早いってことだよな
146デフォルトの名無しさん:05/01/09 13:36:13
ふむ。けど、コンパイラが原因かどうかは解らないけれど不思議な現象が出る事有り。
今回の件は、論議する価値無しだけどね。
147デフォルトの名無しさん:05/01/09 13:41:54
>論議
馬鹿なのか?
148デフォルトの名無しさん:05/01/09 13:48:15
>>140
> TComponent を継承してクラス TMyComponent を作るとき
 単にクラスとして使うのならとくに変な使い方をしない限り問題はないだろう。
この場合 constructor を新規に作成したことになるから>>143 の指摘通りコンポーネント
としてインストールしても利用出来ない。
149デフォルトの名無しさん:05/01/09 13:53:38
>>147 意味不明
150sage:05/01/09 13:58:22
これからDelphiインストしようと思います
踏み込んでもいいですか?
151デフォルトの名無しさん:05/01/09 14:01:03
雑談は雑談スレで
152デフォルトの名無しさん:05/01/09 14:01:37
>>146
>不思議な現象が出る事有り
どんな現象?
153デフォルトの名無しさん:05/01/09 14:02:55
>>146みたいなやつは
自分が初心者であることに気づいていない。
初心者ほど自信満々で、すぐ不思議な現象にしてしまう。
100%お前が間違ってるんだから、
分かるまでソースを見直せ。
154デフォルトの名無しさん:05/01/09 14:11:23
内部エラー:L????
155デフォルトの名無しさん:05/01/09 15:03:24
>>152
関係無い所を変更してコンパイルするとエラーした。

filelistbox1の中のファイルを削除して
i:=filelistbox1.ItemIndex;

とするとiには0しか入らない
しかしこれで以前は正常な値が代入されていた
むしろこちらの方が不思議?
filelistbox1.ItemIndexの値が何時まで
保持されているかは不定?
Delphi6既知のバグは2つ程判明したけれど
ほんとに解るまでは大変ですよ。だから
>>153さんよ!
あんたの次元じゃないのさ。
156デフォルトの名無しさん:05/01/09 15:28:50
155は典型的な初心者w
157デフォルトの名無しさん:05/01/09 15:35:13
>>156
そのとうり。
158デフォルトの名無しさん:05/01/09 15:44:59
> 保持されているかは不定?

保持されていないよ。要求がある都度見に行く。そこが思い違い。
159デフォルトの名無しさん:05/01/09 15:52:26
どんな凄い現象かと思えば…
160デフォルトの名無しさん:05/01/09 15:54:45
ここは初心者がええかっこしたがるスレですから
161デフォルトの名無しさん:05/01/09 16:01:15
かわいいじゃん
162デフォルトの名無しさん:05/01/09 16:36:46
stringをcharに入れるにはどうすればいいですか?
163デフォルトの名無しさん:05/01/09 16:38:42
c := s[1];

PCharなら
p := PChar(s); // or @s[1];
164162:05/01/09 16:56:44
c : array[0..255] of char;
str : string;

str := 'abcdefghijklmn';
for i := 0 to length(str) do
 c[i] := str[i];

長い場合は、ループでひとつひとつ入れるのですか?
165デフォルトの名無しさん:05/01/09 17:00:38
StrCopy(c, str[1]);
Move(str[1], c, Length(str));
166デフォルトの名無しさん:05/01/09 17:33:23
ウインドウのハンドル?が変わった瞬間に何か動作をさせたいんですけど
どうすれば良いのでしょうか。例えばIEのウインドウをアクティブにした瞬間に
「Google - Microsoft Internet Explorer」みたいな感じで文字を表示させたいと
思っています。ウインドウのハンドルは取得できたのですが、取得するタイミング
がうまくいきません(;´Д`)
167デフォルトの名無しさん:05/01/09 17:39:19
OnActivateイベントに記述するとか
168デフォルトの名無しさん:05/01/09 17:40:55
ウィンドウがアクティブになるとハンドルが変わるの?
169デフォルトの名無しさん:05/01/09 17:42:35
フォアグラウンドタスクの変更を検出したいんだろ
170デフォルトの名無しさん:05/01/09 19:00:16
Delphiのソースコード説明一覧が載ってるサイトはないでしょうか?
171166:05/01/09 19:01:34
皆さんレスありがとうございます。

>>169さんの言っている通りの事をやりたいと思ってますた。
グローバルストリングにすべき文字列を間違った部分で宣言してました。
変えてみたらうまく動作しますた(;´Д`)

どうもお騒がせしました。
172デフォルトの名無しさん:05/01/09 19:58:17
そんなに簡単とは思われないけど > フォアグラウンドタスクの変更を検出
173デフォルトの名無しさん:05/01/09 20:44:27
FormのOnCreate時ってまだForm自体は作られていないの?
Formのサイズを変更する命令を発行してるのにサイズが変わらないときがあるんだけど・・
174デフォルトの名無しさん:05/01/09 20:50:32
フックすりゃいいじゃん。簡単かどうか知らんけど
175174:05/01/09 20:51:53
>>172 な。更新するの忘れてた
176173:05/01/09 20:52:38
すいません。自己解決しました。
勘違いが原因だったようです。
177デフォルトの名無しさん:05/01/09 22:10:36
>>158
>保持されていないよ。要求がある都度見に行く。そこが思い違い。
ん。確かに。しかしどこに読みに行くのでしょう?
ディスクにはアクセスしないから多分・・それで気が付いて・・
それにしても動いていたのは確かだし、再コンパイル後
エラーした為、処理の順序を入れ替えたので動くのは当然だし。
文法エラーはちゃんと出るんだけどなぁ・・・・
178デフォルトの名無しさん:05/01/09 23:27:11
> しかしどこに読みに行くのでしょう?

そりゃ、FileListBox のコントロールにAPIをつかって読みにいくのさ。
ListBox はウィンドウズのコントロールだからね
179デフォルトの名無しさん:05/01/09 23:54:22
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
180デフォルトの名無しさん:05/01/09 23:59:32
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
181デフォルトの名無しさん:05/01/10 00:01:35
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
182デフォルトの名無しさん:05/01/10 01:51:02
uho
183デフォルトの名無しさん:05/01/10 01:58:49
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
184デフォルトの名無しさん:05/01/10 03:12:49
>>170
無い。
185デフォルトの名無しさん:05/01/10 03:59:44
>>170
ソースコード自体を見ろ。結局それが一番勉強になる。
186デフォルトの名無しさん:05/01/10 04:40:24
Delphiって凄いね。。俺みたいな低脳でもプログラムが作れてしまうなんて。
ビジュアルプログラミングツールまじすげすげすげヴォー
187デフォルトの名無しさん:05/01/10 09:14:39
日本語Delphi6をダウソしたんですけど、表作成機能が英語なのはなんでですか?
題名とか日本語文字化けします。
188デフォルトの名無しさん:05/01/10 09:56:08
そんなことないけど?
189187:05/01/10 11:04:30
>>188
ActiveXのチャートコンポーネントを配置して右クリック>Wizard...を選ぶと全部英語なのですが。
190187:05/01/10 11:20:26
こんなかんじです・・・。
http://www.daizou.jp/up/upload/20050110111946.gif
191デフォルトの名無しさん:05/01/10 11:48:15
もちろんアップデートは入れてるよね?
192デフォルトの名無しさん:05/01/10 11:48:54
ActiveXのチャートコンポーネントが英語版なんでは
193デフォルトの名無しさん:05/01/10 11:54:23
>>177
メモリに読みに行くにきまってんじゃん。
スワップアウトしてたらハードディスクになるけど。
194187:05/01/10 12:09:16
>>191
よくわからんですが、Delphiのフリー版のやつです。
ちょっと確認してきます。
195デフォルトの名無しさん:05/01/10 13:29:32
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

196デフォルトの名無しさん:05/01/10 13:55:44
ファイルが使用中かどうか確認する方法を教えてください。D6パー
197デフォルトの名無しさん:05/01/10 14:08:16
とりあえずオープンしてみて成功したら少なくとも排他的には使用中でないことが分かる。
198デフォルトの名無しさん:05/01/10 14:48:17
ああ、便乗して質問させてもらおう・・

ファイルサイズを得たいのですが(必要なのはファイルサイズだけ)
WindowsAPIのGetFileSize関数やDelphiの付属の関数やTFileStreamなどをとっても
必ず一度ファイルを開く必要があります。(ファイルハンドルを得るため等)

そのため、使用中のファイルなどは場合によってはオープンに失敗して関数が失敗することが起こってしまいます。
ファイルサイズを求めたいだけなので、そういう使用中かどうかなどは関係ないように思うのですが

もっと簡単に(できればファイルを開く処理を使わずに)ファイルサイズを得る方法ってないですか?
199デフォルトの名無しさん:05/01/10 14:59:04
FindFirstとか
200デフォルトの名無しさん:05/01/10 15:10:56
>>198
TSearchRec型の変数を使う。
C:\Windows以下のファイル名とサイズを列挙するサンプル

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  F:  TSearchRec;
  RetValue: Integer;
begin
  ListBox1.Clear;
  RetValue := FindFirst('C:\windows\*.*', faAnyFile, F);
  try
      while RetValue = 0 do
      begin
        ListBox1.Items.Add(Format('%s(%dByte)', [F.Name, F.Size]));
        RetValue := FindNext(F);
      end;
  finally
    FindClose(F);
  end;
end;

201198:05/01/10 15:29:35
やはりそれしか手はないのか
某のことだからGetFileSize(const FileName: string;var FileSize: Cardinal): Boolean;
みたいな関数でも用意しておいてくれないかなぁと思ったが・・
FindFirstを利用して自分で作るか・・。
202デフォルトの名無しさん:05/01/10 15:40:48
function FileInfo(FileName: string): TSearchRec;
var f: TSearchRec;
begin
 Win32Check(FindFirst(FileName, faAnyFile, f) <> 0);
 Result := f;
 FindClose(f);
end;
203デフォルトの名無しさん:05/01/10 18:47:48
FindFirstでのファイルサイズは integerだから2G以上のファイルの場合は
別の手を考えないといけないよ。
204デフォルトの名無しさん:05/01/10 19:43:45
Delphi7のアップデートってありますか?
205デフォルトの名無しさん:05/01/10 19:54:08
>>203
FindData見れ
206デフォルトの名無しさん:05/01/10 19:57:29
>>204
Update1と非公式パッチがありますけど・・・
207デフォルトの名無しさん:05/01/10 21:31:59
D8のアップデートはまだか
開発環境でWinの最新パッチ当てられないのは問題だろ
208デフォルトの名無しさん:05/01/10 21:39:29
>>207
.NET 1.1 SP1 対策パッチなら、とっくに出てますけど。
54でも質問しましたが、GUIを使ったジャンケンプログラムを作っているんですが、
Jpgの表示は可能ですか?
210デフォルトの名無しさん:05/01/11 01:24:47
可能です
211デフォルトの名無しさん:05/01/11 01:41:56
ヘルプは見ない主義なのかな?
212デフォルトの名無しさん:05/01/11 01:54:35
TImageでもつかっとけ
213デフォルトの名無しさん:05/01/11 02:22:28
>>206
すみませんがもう少し詳しくお願いできませんか?
214デフォルトの名無しさん:05/01/11 02:59:57
215デフォルトの名無しさん:05/01/11 03:19:36
嗚呼全然わからない。http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%BD%A1%BC%A5%B9%C3%D6%A4%AD%BE%EC%5D%5D
のようなのでGUIで作ってるジャンケンソフトありませんか?参考にしたいのですが。。。
216デフォルトの名無しさん:05/01/11 03:56:04
>>215
あまりしつこいと、「それすら(略)なら諦めろ」ってレスが来ちゃうぞ。
もっと具体的に「○○が分からない」ぐらいまで、自分でやってからに
した方が良いと思う。
217デフォルトの名無しさん:05/01/11 04:17:27
218デフォルトの名無しさん:05/01/11 04:22:16
>>216 すみませんでした。もう時間がなかったのでつい言ってしまいました。
始めに、ボタン3つ(ぐーちょきぱー)作って押すと画像を出るようにしたいのですが
ひとつずつ異なる画像を表示させることができません。(ボタン1にAという画像を表示
させる、ボタン2にBを表示させたいのにAが出てきてしまう) 
 本当に超初心者なので質問するのも恥ずかしいのですが、教えてくださると大変
助かります。



219デフォルトの名無しさん:05/01/11 04:56:11
218です。解決できました。次はコンピューターにランダムにぐーちょきぱーを
出させるようにします。また質問させてください。 無駄レス本当にごめんなさい。
220デフォルトの名無しさん:05/01/11 05:33:46
グーちょきパーをランダムに表示させるやり方がわかりません。X=random(3)というのを使うらしいのですが
どうやったらいいかわかりません。教えてください。 今日はもう寝ることにします。
221デフォルトの名無しさん:05/01/11 05:53:51
まずは>>215のCUI版を理解しろ
222デフォルトの名無しさん:05/01/11 06:05:00
>>218
いや、「卑屈になれ」と言いたい訳じゃないのだが…。
あと、「該当のソース」をちょっとでもいいから見せるとレスが付きやすいかと。

個人的にはもっと「いじり倒してから」人に聞いた方がいいかと思うけど。
223222:05/01/11 06:06:34
ありゃ、続きがあったのか。218しか見てなかった。
うーん。
224デフォルトの名無しさん:05/01/11 07:05:06
>>222
220があってもなくても言ってることは正しいと思うぞ。同意だ。
225デフォルトの名無しさん:05/01/11 07:26:25
もう少し具体的に何がワカランのか書け。
226デフォルトの名無しさん:05/01/11 15:12:47
Delphi2005になって気づいたんだが"resourcestring"って昔からあったっけ?
偉い人教えて
227デフォルトの名無しさん:05/01/11 15:14:44
少なくとも6には既にある
もっと前は忘れた
228デフォルトの名無しさん:05/01/11 15:17:46
そうなんだ。
教えてくれてありがとう。
229デフォルトの名無しさん:05/01/11 18:06:25
ライブラリソース見る人は自ずといろんなこと気づくが
見もしないやつはずぅっと教えて君のままだな
230デフォルトの名無しさん:05/01/11 18:31:00
Personalのやつは見れない。
あと自分でできるやつは書き込まないから目立たない。
231デフォルトの名無しさん:05/01/11 18:41:02
何が分からないのか分かってるようなら自分で調べられるからね〜
要するにそういう人は初心者ではないわけで
ある程度やむを得ないかもしれないけど
早くまともな答が欲しかったら
恥ずかしがらずに自分のソースをうpしる>初心者
232デフォルトの名無しさん:05/01/11 18:57:33
初心者スレで玄人気取りとは恥ずかしい奴らだな・・・
233デフォルトの名無しさん:05/01/11 19:08:14
きちんと要点をまとめて物を尋ねられるかは人間関係の
素養の問題で、素人玄人は関係ないと思う。。。
234220:05/01/11 21:29:32
>>225 はい。わかる範囲具体的にいいます。
procedure TForm1.btnGuClick(Sender: TObject);
begin
Image2.Picture.LoadFromFile('./gu.bmp');
end;
という風にボタンを押すと画像が出るようにしました。後は、コンピュータ
相手にじゃんけんをしたいので、コンピュータがランダムにグーチョキパーを出すようにしたいのですが、
やり方がわかりません。


235デフォルトの名無しさん:05/01/11 21:34:48
お前が>>220で書いたX=random(3)がそのまんま答えだろ。
236デフォルトの名無しさん:05/01/11 21:36:01
>>234
グー、チョキ、パーのグラフィックを
あらかじめ3つのImageコントロールへ入れておいて
ImageコントロールのVisibleプロパティを操作した方が楽でないかい?
237デフォルトの名無しさん:05/01/11 22:54:35
プログラミングたのし〜〜〜〜
238デフォルトの名無しさん:05/01/11 22:55:46
gu1.bmp〜gu3.bmpまで3種類あって、グー用のイメージをランダムに出したいんだろ
#
つーかその度にロードするのはヨクナイ
239デフォルトの名無しさん:05/01/11 23:22:30
ボタンクリック時
※あらかじめ3つのイメージを同じ位置に重ねて配置しておく
procedure TForm1.btnGuClick(Sender: TObject);
begin
Image1.Visible := True; //グー
Image2.Visible := False; //チョキ
Image3.Visible := False; //パー
end;
↑↑GuClickとか固定じゃなく、3つのボタンクリックを同じイベントに充てて
Senderを見て振り分けるほうが良さげ


ジャンケンするとき ※FormCreateなどでRandomizeをしておく事
var
iCom: Integer;
begin
iCom := Random(3); // iComの値は 0 1 2 のどれか
case iCom of
0: //グーと仮定 判定して勝ち負けを決める
1: //チョキと仮定 ..
2: //パーと仮定 ..
end;

//..判定結果の表示
end;
240デフォルトの名無しさん:05/01/12 11:16:10
SHBrowseForFolderで.ulFlagsに
BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLEを指定したとき
なぜかBIF_RETURNONLYFSDIRSが無効(マイコンピュータなどが選択できてしまう)になってしまいます
さらに呼び出したときの表示位置が必ず画面中央になってしまう
解決法はありますか?
OLEInitializeで初期化はしてます
241デフォルトの名無しさん:05/01/12 11:19:32
WinAPI スレにいけば
242デフォルトの名無しさん:05/01/12 19:56:42
Delphi7でコンパイルしたユニットをDelphi5で使う方法ってないでしょうか?
SSE2使いたくてD7 Architect Trialを落としたけど、コンパイルしたdcuは
Delphi5で通らない……。
243デフォルトの名無しさん:05/01/12 20:12:51
初心者でもないんだが
今、SDKソースをDelphi用に書き直して(DirectXのDirectShow関係)色々やってるんだが
特定のインターフェースメソッドでIDE上デバッグだと例外が起きる
でもデバッグでは無く、直接実行だと正常に動く

ちなみにDelpi7(Ent)。6(Ent)でも同じく例外が起きる
浮動小数演算がなんとかかんとか・・
実数計算なんかなにもしてないし、どこでエラーが起きるのかブレークかけて
特定しようにもインターフェースメソッド時に例外なので追いかけられない

インターフェースが絡むとデバッガ信用できないのかな?
244デフォルトの名無しさん:05/01/12 20:53:45
>>242
*.pasならともかく、*.dcuでは同じバージョンではない限りむりぽ。
245デフォルトの名無しさん:05/01/12 21:04:12
その前にトライアルの生成物を他で副次利用しようとしてるのに、平然と聞いちゃうあなた!
246デフォルトの名無しさん:05/01/12 21:22:48
メディアプレーヤーでasfファイルを再生出来る?
Del7Proなんだけど、誰か教えて。
247デフォルトの名無しさん:05/01/12 21:58:52
つか、試してみたらどうよ?
ファイルと2分もあればできるだろ。
248デフォルトの名無しさん:05/01/12 22:44:25
すまん。書き方が悪かった。
日本語勉強しくる。
再生出来なかったのだよ。
249デフォルトの名無しさん:05/01/12 22:48:35
>>248
2分でできるといった責任もあるから試してみたぞ。
再生できたよ。
250デフォルトの名無しさん:05/01/12 22:50:30
そういやTMediaPlayerなんてのあったんだよな
Del3あたりの時いろいろ遊んではみたが
D7だがソースみると相変わらずmciSendCommand使ってるな
つまり再生できるかどうかは各マシンの環境によるって事だ

つーかActiveMovie取り込んだ方が手っ取り早い。当然稼働環境に無ければ再生出来ない
俺はDirectShow組み込んでるけどな
251デフォルトの名無しさん:05/01/12 23:03:45
そうそう言っておくが、単にasfといっても(wmvでも)種類が分かれるからな
ローカルファイルなのかネットワーク越しなのか、認証が必要なものなのか・・・
ActiveMovieと上に書いたがそれも既にWindowsメディアプレーヤー6.4の物だし
今はMediaFormatSDK9以降のものが新しい
そのエンコ物を6.4では、そのままでは再生出来ない
252249:05/01/12 23:08:34
C:\を*.asfで検索したらC:\Program Files\Movie Maker\sample.asfという
いかにもサンプルっぽいファイルがあったのでそれで試した。
253デフォルトの名無しさん:05/01/12 23:10:23
>>249
お前要らないから
254デフォルトの名無しさん:05/01/12 23:29:27
>>243
例外を無視っとくようにIDEを設定しろ。
自分以外のモジュールの例外もIDEは拾ってしまうからね。
またはおまじないコードを設定しておくとか。
255デフォルトの名無しさん:05/01/12 23:58:18
>254 サンクス でも駄目みたい、やりました。
インターフェースメソッドの戻り値はHRESULTなんだが
戻り値を返さないで例外が起きる。

他にも気味の悪いのがある。例外箇所とは別な所なんだけど
ここも戻り値はHRESULTなんだが、
この箇所にブレークして戻り値見ると、不正な値。←これがデバッガ上
不正値なら、処理を抜けてインターフェース解放としてるのだけれども、
直実行だとちゃんと動く。
デバッガ上では動かない・・・うーん・・・
256デフォルトの名無しさん:05/01/13 00:17:34
254が言ってるのは例外が発生してIDE=デバッガに戻って一時的に止まってるだけなのに
例外でプログラムが終了したと勘違いしてるんじゃないかってこと。
直接実行した場合はexceptされてそのまま実行されてるから分からないだけで。
止まった状態で"実行"押せば処理が再開されるよ。

という勘違いをしていないとしたらとりあえず最適化OFFにして
範囲チェックその他をONにして地道にデバッグするしかないね。
interfaceとIDEの相性が悪いというのは自分は聞いたことないな。
257デフォルトの名無しさん:05/01/13 00:36:47
おまじない
ttp://www.google.co.jp/search?q=cache:FWc9_5LiySYJ:cvs.corecodec.org/cgi-bin/viewcvs.cgi/dcdspfilter/dcdspfilter/DSP%2520Components/dmoI3DL2Reverb.pas%3Frev%3D1.4+Set8087CW+DirectShow&hl=ja

Get8087CWとSet8087CWのサンドイッチや、Set8087CW($133F)の効果があるかどうかやってみれ。
258デフォルトの名無しさん:05/01/13 01:52:35
ビルドによってインターフェース先のdllやocxを生成する訳じゃないから
Set8087CWは全く関係無い話だな
259246:05/01/13 08:15:43
>>249 ありがとう。こっちの環境の何かがおかしいと言うことか。
>>250 ActiveMovie、DirectShowか。ぐぐって見る。
260デフォルトの名無しさん:05/01/13 08:42:21
ここは粘着と健忘症の巣だな
261デフォルトの名無しさん:05/01/13 09:31:14
評論家は談話室へどうぞ
262デフォルトの名無しさん:05/01/13 09:37:59
MemoやListBoxは書かれてる文字がたくさんあると一定以上送受信できませんよね^^;
この場合どうすればいいんでしょうか。。変な質問ですみません;;
263デフォルトの名無しさん:05/01/13 09:46:27
TeamSourceの質問ってここに書いても良いですか?
264デフォルトの名無しさん:05/01/13 09:52:02
>>193
>メモリに読みに行くにきまってんじゃん。
>スワップアウトしてたらハードディスクになるけど。

それで、入れ替えたら動いた。不思議なのは、なんで
これまで問題が無かったかと言う事。
まだ有ります。関係無い所を変更したら別のところの表示が
変になり、そこを変更再コンパイル、元に戻してコンパイル
すると思ったとうりの表示に・・・・・・
こう言うの初心者には混乱の基だし何がなんだか解らない。
バグが有っても動くし無くても動かない!摩訶不思議なDelphi。



265デフォルトの名無しさん:05/01/13 09:58:51
OpenGLではSet8087CWで浮動小数例外をマスクしないといけないのだが、DirectXはどうなんだろ?
266デフォルトの名無しさん:05/01/13 10:00:30
>>264
抽象的なことばかり言ってないで具体例を出してくれないと。
267デフォルトの名無しさん:05/01/13 10:03:16
>>264
>バグが有っても動くし無くても動かない!摩訶不思議なDelphi。

たんに知識不足。いずれにしても FileListBox は Win16 の遺物なので使わないように
268デフォルトの名無しさん:05/01/13 10:04:19
>>262
> MemoやListBoxは書かれてる文字がたくさんあると一定以上送受信できませんよね^^;

送信? なんのこっちゃ
269デフォルトの名無しさん:05/01/13 10:40:58
>>267
ありがとう御座います。FileListBoxに固執するのは
ShelltreeViewが他の言語では使えないかもしれないと
思ったからです。Delphiでパスカルで記述した部分は
ちゃんと動くので、出来ればシステムに依存する部分を
減らせればすっきりすると思います。
270デフォルトの名無しさん:05/01/13 15:19:08
172.16.1.54 の IPアドレスを持つパソコンでのマスク値が 255.255.255.0 の
場合の ネットワークアドレスは何か、そのネットワークに接続されるアドレスの最小値
は何か? 最大値は何か?(ブロードキャスト除く) ブロードキャストアドレスは?
271デフォルトの名無しさん:05/01/13 15:44:52
>>270
全くDelphiと関係ない

ネットワークアドレス 172.16.1.0
最小 172.16.1.1
最大 172.16.1.254
ブロードキャストアドレス 172.16.1.255
272デフォルトの名無しさん:05/01/13 16:15:16
任意の形のウインドウを作りにはリージョンを使うってよく見るのですが、
ボタンとかの配置とかってどうすればいいのでしょうか?
ポトペタじゃなくて、createで動的に作っていくのでしょう?
273デフォルトの名無しさん:05/01/13 16:47:25
くり抜かれる場所にぽとぺたしておけばいつもと同じ
274デフォルトの名無しさん:05/01/13 17:18:00
>269
システムに依存ってさ、Windosユニット使ってりゃシステム依存なわけだが
275デフォルトの名無しさん:05/01/13 17:30:12
ウィンドウズのコントロールとVCLの独自コントロールの区別がつかないんだろう
276デフォルトの名無しさん:05/01/13 17:33:21
>>269の言ってる意味がよくわからない
他の言語で使えるかどうかってのは?DLL化してC++とかから利用出来るかの懸念?
それならエクスポート引数の話であって、処理が何なのかという事は関係無い。

それともShellTreeViewが他のマシンで動くか分からないという懸念?
シェルは、SH***、IShell***、ItemIDListなどを使っている。
これらはWindows95以降なら動く。動かないのはWin3.1以前のもの
今時Win3.1を使ってる輩はまず居ない。
一歩譲ってそれを考慮するとしたら、16ビットVerのDelphi1を使う事になる。
277262:05/01/13 17:39:30
>>268
説明不足すみません;;
クライアントソケットからサーバソケット(或いはその逆)にSendTextで送信した時
の事です。
278デフォルトの名無しさん:05/01/13 17:42:02
>>275
あ、あたり
279デフォルトの名無しさん:05/01/13 17:45:48
>>278
FileListBox も ShellTreeView もウィンドウズのコントロールなんだよ
280デフォルトの名無しさん:05/01/13 17:52:58
10年くらい前はWindows3.1でBorlandC++(当時4.0)使ってたな
CDメディアが台頭してきてSCSIからIDEに変わってE-IDEに変わる頃だ
当時はavi動画とか見て劇的だった
Win95が出回る頃は、WinGやWaveMixなんかが出てきてDirectXの基はこの頃だな
インターネットも当時モデム14400で電話代気にしながらチャットにはまってた頃だ
もう10年か・・・
281デフォルトの名無しさん:05/01/13 18:00:37
>277
鮮度テキストなんか使うからだろ
自分でバッファとって船頭バッファを複数回繰り返せ
282デフォルトの名無しさん:05/01/13 18:18:45
俺はWinGSDKのサンプルにあった256色ディザのハーフトーンなんちゃらとかいうのを今でも使っている。
厳密には誤差拡散ディザでは無く、ハイキューブリック式アルゴリズムだが
画像表示するアプリ書くとき、256環境時はこれでディザする
283デフォルトの名無しさん:05/01/13 20:12:37
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
284デフォルトの名無しさん:05/01/13 20:28:50
>>277
クライアントもサーバーも一回の受信イベントで全部受信できるとは限らんぞ
285デフォルトの名無しさん:05/01/13 21:23:03
他のスレッドでは書き込めない超低レベルの質問を勇気を持って書き込みます。
RichEditが2つあって、一方のRichEditに文を書いて改行するたびに、もう一方の
RichEditに同じものを表示させたいのですが、どうすればよいでしょうか。
286277:05/01/13 21:29:12
なるほど〜。ありがとうございます。

今までバッファとった事とかないのでどこかを参考にしながらやってみたいと思います。
今リモートファイルマネージャを作ってるところで、ファイルを実行させたり削除したりと
いうところまでは何とかできるようになりました^^;
そこでシステムフォルダみたいにファイル数(文字数)が多いフォルダをを取得した時に
途中でリストが切れてたのでなんでじゃあと思ったらそういう事だったんですね。
聞いてみて本当に良かったです。助言ありがとうございます!
287デフォルトの名無しさん:05/01/13 21:51:31
>>285

元になるricheditのonkeyupイベントに次のような処理を書く。

procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key = 13 then RichEdit2.Lines := RichEdit1.Lines;
end;

288デフォルトの名無しさん:05/01/13 21:54:48
>ファイルを実行させたり削除したりと.....何とかできるようになりました
要は独自文字列を受け取ったりして何かをするんでしょ(これを独自プロトコルと言う)
コマンド文字列がどのくらいの文字長あるのか知らないが、
低速な環境なら最初の何文字かしか受け取らないでタイムアウトする場合もある。
何とかできると言うが、たまたま動いてるだけで、ソケット通信としては堅牢とは言えない
まぁSendTextが何をやってるかソース見て、真似て、理解すれば、どんな大きなファイルでも受け渡し出来る
289デフォルトの名無しさん:05/01/13 22:10:38
DelphiとC++builderってどっちが超初心者向けなの?
290デフォルトの名無しさん:05/01/13 22:18:53
言語文法が違うだけでどっちもさほど川欄
どんな開発ツールでも込み入ったことやるには超初心者には直ぐに壁に当たる
291デフォルトの名無しさん:05/01/13 22:22:58

     壁の向こう
 
                    
壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁  
                    
 
    俺
292デフォルトの名無しさん:05/01/13 22:49:53
>>287
ありがとうございます。できました。
293デフォルトの名無しさん:05/01/13 23:01:57
すいません 質問させて頂きます。
Yahoo!メッセンジャーや,MSNメッセンジャーなどのクライアントを作りたいと思っています。

具体的にYahoo!メッセンジャーや,MSNメッセンジャーなどのサーバーに接続するにはどのようにしたらいいでしょうか?

どなたか 助言お願いします。
294デフォルトの名無しさん:05/01/13 23:06:24
295デフォルトの名無しさん:05/01/13 23:58:16
>>289
C++Builderは上級者向け。
296デフォルトの名無しさん:05/01/14 00:08:32
んなこたねぇだろ
297デフォルトの名無しさん:05/01/14 00:09:55
>295
どういう所が?
298デフォルトの名無しさん:05/01/14 00:14:05
言語仕様が汚くVCLとの相性も悪いから
初心者に向いているとは言いがたい
299デフォルトの名無しさん:05/01/14 00:20:17
マイナーな言語が初心者向きだと?
300デフォルトの名無しさん:05/01/14 00:22:57
メジャーが好きならVBでもやっとけ。
301デフォルトの名無しさん:05/01/14 00:24:22
そこでPythonですよ。
302デフォルトの名無しさん:05/01/14 00:55:02
VBは難い
標準のコンポーネントで事足りる程度ならいいけどデフォルト動作をオーバーライドしたい時や、直接ハンドル使ってなんやかんやしたい時は相当な労力を要する。
VCLも割とガチガチに思えるTWinControlでも、オーバーライドする労力はVBより容易い
303293:05/01/14 01:05:22
>>294
ありがとうございます。
Yahooメッセンジャーのはないんでしょうか?;;
304デフォルトの名無しさん:05/01/14 01:10:57
305293:05/01/14 01:42:58
>>304
ありがとうございます。
このサイトは知ってるんですが.....
Delphiでの接続の仕方がわからないんです....
具体的にどのようなコンポーネントを使ったらいいかとか、コードなどがわからないんです。

Delphi製のYahooChat用のクライアントは YMChat
ttp://www.the21world.jp/
などがあるんですが こんな感じのものを作りたいんです。

せっかくサイトを教えて頂いたのにすいません orz
306デフォルトの名無しさん:05/01/14 02:10:38
System.Xml.XmlTextReaderに似た使い勝手のXMLライブラリってどれですか?
307名無し募集中。。。:05/01/14 10:16:22
はじめまし



Label.captionに任意の文字を表示したいのですが
表示する文字が場合によって1文字だったり50文字だったりするので


またLabelの横にEditを置いているのでLabelに表示する文字列が長すぎると
すべて表示
308デフォルトの名無しさん:05/01/14 10:21:48
すいません途中で送信してしまいました
>>307はスルーでお願いします

TLabel TEdit というようにコンポーネントを配置して
Label.captionに任意の文字を表示したいのですが
表示する文字が場合によって1文字だったり50文字だったりするので
文字数が長いと全て表示されなくなり
またTEditにかかってしまい見栄えが悪くなります

ラベルに表示する文字列の長さは決まってないので
予め文字列最大長ぶんだけ確保するということができません
何かいい方法はないでしょうか?
309デフォルトの名無しさん:05/01/14 10:35:16
そんな場合は Label の横に何も配置しない。Edit は下に配置する
310デフォルトの名無しさん:05/01/14 10:44:38
みんな、どんな本で勉強してる?
マイナーなのか、ほとんど参考書が売ってない・・・orz
やっぱVBかC#に乗り換えるかな。しかし金がない・・・orz
311デフォルトの名無しさん:05/01/14 10:44:58
>>309
素早いレスありがとうございます

>そんな場合は Label の横に何も配置しない。Edit は下に配置する

やはりその方法しかないんですかね。
デザインが変わるから出来ればやりたくないんですが・・・・

とりあえず必死にヘルプよんでAutosizeやらAnchorsやらAlignmentやらを
色々いじってみます。
あとDelphian Worldも見て何かコンポーネントないか探してみます
駄目ならFormの幅と横に配置してあるTEditの幅等を計算して
ゴリゴリForm.Canvas.Textoutで描画するしかないかな・・・
312デフォルトの名無しさん:05/01/14 10:52:38
>>308
左右に幅があるならこんな方法もある
Label1.Left := Edit1.Left - Label1.Canvas.TextWidth(Label1.Caption);
313デフォルトの名無しさん:05/01/14 11:08:24
文字列設定するたびに Edit の方を動かす方がよくないか
314デフォルトの名無しさん:05/01/14 11:11:58
TLabeledEditを使うとか。
315デフォルトの名無しさん:05/01/14 11:12:39
>>312-313
貴重なご意見感謝します

アプリ起動時に言語ファイルを読み込みそれに応じて
Label.Captionを設定するのですがデザインを日本語ありきで作っていたので
英語や中国語だと日本語に比べて文字数が増えるので
横に突き抜けてしまっていたのです

>>312さんの方法は勉強になりました
>>313さんの言うとおりEditを動かしたほうがよい場合(Editの幅が狭い場合)
もあると思うので用途によって使い分けていこうと思います

316デフォルトの名無しさん:05/01/14 11:16:26
>>310
でかい本屋に行きなはれ。探せば意外とある。
あるいは、ココを参照。
ttp://onigiri.s3.xrea.com:8080/delphi/
317デフォルトの名無しさん:05/01/14 11:36:21
Labelに固執するなら、キャプションに割り当てる前に文字長カットすれば?
俺ならそんな箇所はラベルなんか使わず、ReadOnlyのEdit使うけどな
318デフォルトの名無しさん:05/01/14 11:54:25
iLabelPosition := label1.Left + Label1.Width;
edit1.Left := iLabelPosition + ○; //○はLabelとEdit間のスペース幅
左右に余裕があるので上のようにEditを動かすようにしました

>>317
確かにReadOnly、Color := clBtnfaceあたりのTEdit使えば
表示されない部分はキーでスクロールすればいいから楽ですね
でも、とある方の「強い」要望でTLabel使わざるを得ないのです
319デフォルトの名無しさん:05/01/14 12:28:28
「とある方」みたいな人がPMやSEな環境で仕事はしたくないな
320デフォルトの名無しさん:05/01/14 12:31:02
左右の余裕を超えた文字列が入ると、
フォームにスクロールバーが出るワケだ。
そこでまた君は苦労するワケだ。
321デフォルトの名無しさん:05/01/14 12:53:53
次はボタンの文字がはみ出しますという質問するに1000TButton
322デフォルトの名無しさん:05/01/14 13:05:24
フォントサイズを1にすればダイジョブ
323デフォルトの名無しさん:05/01/14 13:12:59
文字長見て適当に改行#13#10しちゃえば?
仕事なら仕様と確認して
324デフォルトの名無しさん:05/01/14 14:34:36
マルチランゲージで作るなら余白多めにUI作るのは定石。
それは置いといて、VCLは日本語環境と非日本語環境でデフォルトのフォントサイズが異なるので、
1バイナリでやろうとするとスケーリングのバランスが悪くなる問題がある。
この問題を回避するには、スケーリングを制御するコードを書き足すか、
VCLのデフォルトフォントの初期化部分を書き換えると回避できるぽい。
325デフォルトの名無しさん:05/01/14 16:17:13
超初心者にその助言は酷だな
326デフォルトの名無しさん:05/01/14 18:14:30
相手が分からなそうだと思いつつ敢えて>>324みたいな事言う人って酷いですぅ!
327デフォルトの名無しさん:05/01/14 18:25:32
フサスレ見ればどういう連中がレス付けてるのか分かるだろ。
328デフォルトの名無しさん:05/01/14 18:46:37
マルチランゲージで作るなら、
TForm.Scaled
は絶対falseにしとくこと。
329デフォルトの名無しさん:05/01/14 20:54:28
>>327
ユーザ激減で残ったのは精鋭というか、カスというか、苦しむところだ
330デフォルトの名無しさん:05/01/14 21:37:17
>>329
なんでユーザが減ったのでしょうか。
331デフォルトの名無しさん:05/01/14 21:47:52
ファイルのプロパティを開くにはどうしたらいいのでしょう?
(エクスプローラで、ファイルを選択→右クリック→プロパティと同じもの)
332デフォルトの名無しさん:05/01/14 22:08:24
333デフォルトの名無しさん:05/01/14 22:10:08
>>332
thx!
334デフォルトの名無しさん:05/01/14 22:21:34
Yahoo!メッセンジャー鯖に接続する具体的なコードはないんでしょうか。。orz
335デフォルトの名無しさん:05/01/14 22:37:57
activexの取り込みで、メディアプレーヤーを取り込んだんだけど、
playとかfilenameとかの命令が無いんだけど。。。
メディアプレーヤー9とかだと、変更されているのか?
336デフォルトの名無しさん:05/01/14 22:42:57
漏れは愚痴を言いながらも日曜プログラマとして
Delphiでツールを作り続けてまつ
Delphi7だけどね
337デフォルトの名無しさん:05/01/14 23:17:32
const
ary: array[0..2] = ('A', 'B', 'C');

として、if 'A' in ary then ...のような評価式が出来るメソッドはありますか?
TStringListに格納してIndexOfはちょっと使いにくいので・・・
338デフォルトの名無しさん:05/01/14 23:23:08
ansimatchstr
339337:05/01/14 23:26:38
おお!!ありがとう!
下記のコードが今までベストと思っていたので本当に感謝してる!
const
ary: array[0..2] = ('A', 'B', 'C');
begin
s2 := 'B';
for s1 in ary do
if s1 = s2 then ShowMessage(s1);
end
340デフォルトの名無しさん:05/01/15 00:48:14
そういう事だよ
.netならマッチングクラスと予想してクラスを見れば相応の関数が見つかる
でもDelphiだと、そこまでクラス化されてないから関数を知らない&気付かないで自分でコードを書いてしまう
341デフォルトの名無しさん:05/01/15 01:57:40
> マッチングクラスと予想して

Delphi だって「文字列処理ルーチン」と予想してヘルプみるとすぐ見つかるけどね。
342デフォルトの名無しさん:05/01/15 09:29:33
多次元配列の、2番目、3番目の添え字の最大値と最小値は、
どう求めればいいですか?
1番目はhighでいけるみたいだけど・・・
343デフォルトの名無しさん:05/01/15 09:51:27
添字付けする方法は,MyMatrix[2,45] と MyMatrix[2][45]の 2 種類があります。

High(MyMatrix)
High(MyMatrix[Low(MyMatrix)])
344デフォルトの名無しさん:05/01/15 10:03:08
>>343
おお、ありがとう!
345デフォルトの名無しさん:05/01/15 13:17:10
今作っているアプリでメインフォーム以外でAlt+F4を押されると
プロセスが残ってしまいます。
Alt+F4を無効にするにはどうすればいいでしょうか?
346デフォルトの名無しさん:05/01/15 13:29:08
>>345
フックしてAlt+F4来たらメッセージ捨てる
347デフォルトの名無しさん:05/01/15 13:42:26
OnClose で Application.MainForm.Close;
348デフォルトの名無しさん:05/01/15 13:47:23
プロセスをダイアログ代わりにするヤツ大杉。だめ設計の見本
349デフォルトの名無しさん:05/01/15 14:14:43
>>348
Windowsってそうやらないとコールバック関数登録デキネーんだよ。
350345:05/01/15 14:31:56
>>346
>>347
レスありがとうございました。
どちらの方法もこれから役に立ちそうです。
351デフォルトの名無しさん:05/01/15 14:34:20
GroupBox内にEditやらRadioGroupやらが乗っかってる場合
GroupBox.enable := Falseにすると中の各コンポーネントも自動的に
Falseになる方法はないのでしょうか?

力技で
if Boolean(RadioGroup.ItemIndex) then
 begin Edit1.Enable := True; Edit2.Enable := False; end
else
 begin Edit2.Enable := False; Edit2.Enable := True; end
これはコンポーネント増えたらマンドクセ

GroupBox内のParent辺りを見て
for i := 0 to GroupBox内のコンポーネント数 do
begin obj[i].Enable := False end
なんて出来れば嬉しいのですが
352デフォルトの名無しさん:05/01/15 15:07:24
procedure SetEnabledAll(Control: TWinControl; AEnabled: Boolean);
var
  c: TControl;
  i: Integer;
begin
  Control.Enabled := AEnabled;
  for i := 0 to Control.ControlCount-1 do
  begin
    c := Control.Controls[i];
    if c is TWinControl then
      SetEnabledAll(TWinControl(c), AEnabled)
    else
      c.Enabled := AEnabled
  end;
end;

SetEnabledAll(RadioGroup1, not RadioGroup1.Enabled);
353351:05/01/15 15:15:41
>>352
ヘルプ見てたらControlCountというプロパティ見つけたので
これ使えるなと思ってたら既に偉大なる先人が教えてくれた、感謝
しかも再起を使って入れ子にもバッチリ対応している、驚き

本当にありがとうございました
354デフォルトの名無しさん:05/01/15 15:27:14
フォームが表示されて一度描画された直後に処理を記述するにはどうすればいいですか?
今はTimerで1秒後に処理していてカコワルイ・・・
355デフォルトの名無しさん:05/01/15 15:36:47
>>354
onCreate後、フォームが完全に表示された時の
イベントを捕まえたいのかな

それだったら ↓
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm#showingchanged
356デフォルトの名無しさん:05/01/15 16:15:39
すいません、あまりに初心者な質問なのですが

a := b := 10
なんてことは出来ないのですか?
コンパイラに「代入できない左(ry」と怒られます
357デフォルトの名無しさん:05/01/15 16:19:40
代入は文であって式じゃないので無理
358デフォルトの名無しさん:05/01/15 16:27:48
>>357
どうもです
359デフォルトの名無しさん:05/01/15 16:49:53
>>356
素直に
b := 10;
a := b;
とかやるしかないと思うよ。
360359:05/01/15 16:50:13
うはwww更新しわすれてたwwwwwwおkkwwkkwkwk
361デフォルトの名無しさん:05/01/15 17:34:06
あまり使わないフレーム使って凝ったの作ったんだけど
フレームってデストラクタ呼ばれないのな。Freeを明示して解決したがそれまでハマッタ
362デフォルトの名無しさん:05/01/15 19:07:52
超初心者なのでお許しを。

Memo1.Lines.Add('text');

こうすると改行されるのですが、改行しない方法を教えてください。
363デフォルトの名無しさん:05/01/15 19:44:54
memo1.lines.text := memo1.lines.text + 'text';
364デフォルトの名無しさん:05/01/15 20:13:25
>>363
ありがとうございます
365デフォルトの名無しさん:05/01/15 21:42:01
棒グラフ(横)をアニメーションさせるプログラムを作っています。

TimageとTimerを使ってなんとかそれらしきものは作れたんですが
少しちらつきなどがでてしまいます。

何か他にいい方法は無いでしょうか?
366デフォルトの名無しさん:05/01/15 21:53:11
>>365
ヘルプから
DoubleBuffered  見てみるといいよ
367366:05/01/15 21:55:47
単なる棒グラフなら、右側の□を描いてから左の■を描くようにするという方法もあるよ。

全部を消してから描くからチラツクのだからさ

ただ、数字を棒上に描き込むという場合は、これは使えないけどね
368365:05/01/15 22:01:34
早速試してみたいと思います。
ありがとうございました。
369デフォルトの名無しさん:05/01/15 22:17:54
>>361
オーナー指定が間違ってるんだろ
370デフォルトの名無しさん:05/01/16 12:08:22
>>193と他の人。

>メモリに読みに行くにきまってんじゃん。
>スワップアウトしてたらハードディスクになるけど。

そこなんですよ。どんな風にタイミング取ればいいのか?

APIとVCLは、解りません。知りたいとも思いません。

先日も不可解な現象がありました。PaintBoxの表示が微妙に変なので
書き換えてコンパイル、元に戻してコンパイルすると元に戻りました。
371デフォルトの名無しさん:05/01/16 12:13:52
>>368
結果はどうでしたか?興味が有ります。
372365:05/01/16 12:40:15
>>371
無事成功しました。
form1.DoubleBufferd := true にするだけで画面のちらつきがなくなりました。


>>367の方法については今調べているところです。





373デフォルトの名無しさん:05/01/16 13:21:57
>>370
> APIとVCLは、解りません。知りたいとも思いません。

君の知りたいことはまさしくこれなんだが。
知りたくないのなら、質問しなければいい。
374デフォルトの名無しさん:05/01/16 13:53:36
>>370
とりあえずソースを見せてよ。
そうしたら原因が分かるかもよ。
375デフォルトの名無しさん:05/01/16 15:22:43
>>372
form1.DoubleBufferd := true
は、全体を描画するための、隠れビットマップを作成するから、負荷大。

だから、DoubleBufferdを使う時は丁度収まるサイズのパネルを使うのが一般的かな
376365:05/01/16 16:37:50
>>375
ご親切にどうも。
負荷の事は気になってましたので助かります。
教えていただいたとおりパネルを使いたいとおもいます。
377デフォルトの名無しさん:05/01/16 17:42:26
System.Random使わない乱数ルーチンってある?
複数の乱数列を同時にもてるようなの。
378デフォルトの名無しさん:05/01/16 18:29:33
>377
??
379デフォルトの名無しさん:05/01/16 18:33:28
>>377
独自の乱数を作ればいいジャマイカ
アルゴリズムの本でも嫁ばよかんべ
380デフォルトの名無しさん:05/01/16 19:41:24
FAQ以外はろくな答えが返ってこないなここ・・・
381デフォルトの名無しさん:05/01/16 19:57:35
しょぼい回答者しかいないときもあるさ
382デフォルトの名無しさん:05/01/16 20:13:42
だ が そ れ が い い
383デフォルトの名無しさん:05/01/16 21:35:37
フォーム上に配置された任意の画像にマウスカーソルが重なった時と
フォーム上に配置された任意の画像からマウスカーソルが離れた時、
イベント(画像の入れ替え)を発生させたいのですがどのようにすれば良いでしょうか。
384デフォルトの名無しさん:05/01/16 22:24:34
短いサンプルプログラムがたくさん載ってある、超初心者向けの本を教えてください
385デフォルトの名無しさん:05/01/16 22:34:10
>>383
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Panel1.Color := clRed;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Panel1.Color := clWhite;
end;

こんな感じですか?
386デフォルトの名無しさん:05/01/16 22:37:27
>383
OnEnter、OnExit。任意の位置ならOnMouseMoveで位置判断して処理する
イベントの無いコンポーネントなら継承コンポ作ってイベント公開すればいい
TWinControlの子孫ならpropertyをpublishedにするだけ。
387デフォルトの名無しさん:05/01/16 22:59:05
すまん嘘ついた。OnEnter、OnExitはフォーカスだった
なのでまともな回答として、コンポーネントとして作るが。取りあえずTPanelで例

TMyPanel = class(TPanel)
private
{ Private 宣言 }
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
protected
{ Protected 宣言 }
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
public
{ Public 宣言 }
published
{ Published 宣言 }
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;

...
procedure TMyPanel.CMMouseEnter(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TMyPanel.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
388デフォルトの名無しさん:05/01/17 00:18:33
procedure TForm1.Check;
begin if img1=img2 then begin
Label3.Caption:='あいこ';
Exit
end;
if (img1 =1)and(img2=3)then begin
Label3.Caption := 'あなたの勝ち';
Exit
end;
   if (img1=2)And(img2=1)then begin
Label3.Caption :='あなたの勝ち';
Exit
end;
   if (img1=3)and(img2=2)then begin
Label3.Caption:='あなたの勝ち';
Exit
end;
Label3.Caption:='あなたの負け';
end;

  

389デフォルトの名無しさん:05/01/17 00:19:27
procedure TForm1.Button1Click(Sender: TObject);
begin
if state=False then begin
state:=True;
Label3.Caption:='じゃんけん'
end
else begin
Image2.Picture.LoadFromFile('./gu.bmp');
img2:=1;
state:=False;
check;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin if state=False then begin
state:=True;
Label3.Caption:='じゃんけん'
end
else begin
Image2.Picture.LoadFromFile('./choki.bmp');
img2:=2;
state:=False;
check;
end;
end;

390デフォルトの名無しさん:05/01/17 00:20:49
procedure TForm1.Button3Click(Sender: TObject);
begin
if state=False then begin
state:=True;
Label3.Caption:='じゃんけん・・・'
end
else begin
Image2.Picture.LoadFromFile('./pa.bmp');
img2:=3;
state:=False;
check;
end;
 end;
391デフォルトの名無しさん:05/01/17 00:22:08

procedure TForm1.FormCreate(Sender: TObject);
begin Randomize;
img1:=Random(3)+1;
img2:=Random(3)+1;
State:=true
end;
end.
>>388-391までのプログラムですが、コンピューター側の画像が出ません。なにが問題かおしえてください。
392デフォルトの名無しさん:05/01/17 00:30:10
refreshでは。
393デフォルトの名無しさん:05/01/17 00:33:36
質問なんですがPos、もしくはAnsiPosで行を知ることができないでしょうか?
394デフォルトの名無しさん:05/01/17 00:36:36
行を知る?
395デフォルトの名無しさん:05/01/17 00:48:01
Memoのテキストか?
見つかった文字までの間にCRLFが幾つあるか数えれば?
396デフォルトの名無しさん:05/01/17 00:51:29
>>393
やりたいことがいまいちよく分からんけど、
TStringListに入れて行数(Count)調べた方がいいのでは?
397デフォルトの名無しさん:05/01/17 01:03:56
398デフォルトの名無しさん:05/01/17 01:07:13
>>377
Mersenne Twister法は?
一応乱数列を入れ替えることが出来る。
BSDライセンスだが。
399デフォルトの名無しさん:05/01/17 01:25:50
>>391
「いちいちファイルを読み込むな」って言われなかった?
400デフォルトの名無しさん:05/01/17 01:26:33
>>391
ImageListを使うとか汁
401デフォルトの名無しさん:05/01/17 01:33:06
>>399
まぁまぁ。
まずは「ひとまず完成」まで行かせてあげたら?
疑問はその後、湧いてきたら解決していけばいい。
402デフォルトの名無しさん:05/01/17 01:35:47
前回ずれた回答して全く理解させられず
さらにまた同じ回答してるのが笑えるな。
それがDelスレクオリティ。
403デフォルトの名無しさん:05/01/17 03:28:04
>>402
うるせーばか。
404デフォルトの名無しさん:05/01/17 03:28:41
>>387
通りがかりの者ですが、Delphi-MLにもありましたけど、
CM_MOUSELEAVEは必ず発生するとは限りません。
この現象を回避するのにかなり労力を使ってます
再現方法の一例:
フォームを二つダブらせる、下フォームの上にこのパネルを配置
上フォームをアクティブにしてマウスカーソルをクリックしないで下フォームのパネル上に持ってくると
CM_MOUSEENTERそのまま元の位置にカーソルを戻すとCM_MOUSELEAVEは発生しません。
同じ問題は、TSpeedButtonでも見られたはず。(Xpスタイル適応してDelphi7で確認しました)
何かいい方法無いですかねぇ…。
405デフォルトの名無しさん:05/01/17 03:51:21
大麻でマウス座標監視
406デフォルトの名無しさん:05/01/17 03:55:17
>404
どういう事?、いま試したけど。アクティブなフォームじゃなくても正常だったよ
TPanelで試したが、TControlの子孫なら大丈夫そうだけど
407デフォルトの名無しさん:05/01/17 03:56:18
構造上、タイマで調べるかフックで監視するかぐらいしか無いと思うぞ。
408デフォルトの名無しさん:05/01/17 04:25:38
TSpeedButtonは、
 CM_MOUSEENTER
 CM_MOUSELEAVE
を捉えてなんかやってるから上手くやってあげないと駄目なだけで、
このメッセージをスルーしてるコンポなら、>387の通りで大丈夫なハズ

と言うよりSpeedButtonとかはFlatとかがあるから、イベント作るならややこしいかも
とは言え、XPMan使うとおかしいのはVCLが浅はかと思うけどね
409デフォルトの名無しさん:05/01/17 11:01:52
Delphiの「グリットに合わせる」は標準で8*8ですけど
VCやVBの標準値がいくつかわかる方いますか?
410デフォルトの名無しさん:05/01/17 11:04:00
>>409
どうでもいいかもしれないけど「わかる方いますか?」って聞き方は微妙だと思う。
411デフォルトの名無しさん:05/01/17 11:33:18
他の方が作ったコンポーネントを利用させてもらおうと思ったら
コンパイル時にTDB,TDBGridが見つからないと言われました。
ネットやDelphiの中を探したのですが見つかりませんでした。
この2つのクラスもどこかで落としてくるのでしょうか?
412デフォルトの名無しさん:05/01/17 11:36:30
はじめまして。
TEdit内でCtrl+Aを押された場合に全選択状態にするには
どうしたらよいでしょうか?
Text1.SelectAllをすればいいのはわかったのですが
どういうイベントに記述すればよいのかわからないので
教えてください。
413デフォルトの名無しさん:05/01/17 12:09:25
>412
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = Ord('A')) then
Memo1.SelectAll;
end;


>411
DB関係はProfessional以上なら標準で在る。
ProとEntでも差異がある。パーソナルなら諦めかな。Midas絡みも無理でしょう
414411:05/01/17 12:30:09
>>413
使っているのがフリーのPersonal6です。
上位バージョンの試用版も米国のサイトから落としましたが、
Personalである限り無理ということですね。
丁寧にありがとうございました。

付け加えた質問で恐縮ですが、
データのセーブはcsv的にテキスト形式で保存し、
ロード時はMemoにロードし","を区切にして
TStringGridに貼り付けていこうと思うのですが
他に効率の良いコンポーネントや方法はあるでしょうか?
415デフォルトの名無しさん:05/01/17 12:33:49
>>413
それだと[Shift]+[Ctrl]+Aでも同じ挙動になってしまうから、
if ([ssCtrl] = Shift) ...
のほうがいいんじゃないかな?
416デフォルトの名無しさん:05/01/17 12:38:06
直接ODBCやADO使うコンポとか探せばあると思うよ
データが少なければ、そのcsv?独自データでもいいが
417デフォルトの名無しさん:05/01/17 12:40:05
>>413
>>415
ありがd
できました。
418デフォルトの名無しさん:05/01/17 12:41:23
> 4 1 5
細かい所は好きにすればいいじゃん
やり方はあれで分かるだろうから、不備があれば自分で考えられるだろ
419デフォルトの名無しさん:05/01/17 14:07:58
そんな言い方はおかしい
420デフォルトの名無しさん:05/01/17 15:08:50
>>412
TActionで標準のアクションを追加してTEditSelectAllのShortCutプロパティにCtrl + Aを割り当てる。
421デフォルトの名無しさん:05/01/17 16:17:16
>>387使ったブラウザのリンクみたいなラベルコンポがあったら教えてください。
422デフォルトの名無しさん:05/01/17 18:44:40
ラベルは古くから色々あるけど、その程度なら作ればいいじゃん
フォントカラーとアンダーラインを切り替えるだけじゃないの?
423デフォルトの名無しさん:05/01/17 18:57:09
424デフォルトの名無しさん:05/01/17 19:28:59
google厨乙
425デフォルトの名無しさん:05/01/17 19:29:32
代案の方が100倍マシ
426デフォルトの名無しさん:05/01/17 19:39:04 ,
いや、
387のコード見て理解出来てる人が、そんなコンポ教えてって言うのがオカシイ
427デフォルトの名無しさん:05/01/17 20:32:20
>>416
探せばありますか。今度時間をかけて漁ります。

試したところ上位の試用版にDB系のコンポーネントがありました。
でも試用版なので使い続けるわけにはいかない…。
428デフォルトの名無しさん:05/01/17 21:10:59
>>427
ODBCを直接叩くコンポーネントなら
ODBC Access for Delphi ttp://homepage1.nifty.com/TAK/download.htm
があるわけだけど、csvファイルを扱いたいだけなら、
椿 -List Editor- ttp://www.vector.co.jp/soft/win95/business/se110418.html
に入っているTListGrid, TListGridExのほうが楽チンかな。
429デフォルトの名無しさん:05/01/18 03:26:55
constructor Create; overload;
constructor Create(APara: Integer); overload;

でCreateからCreate(APara)を呼び出すことって出来る?
constructor Create;
begin
 Result := Create(0);
 や
 inherited Create(0);
end;
のようなことがやりたい(デフォルト引数というのはなしね)。
430デフォルトの名無しさん:05/01/18 03:30:54
やってみればいいだろ。アフォ?
431デフォルトの名無しさん:05/01/18 03:46:49
やってみてできないからやる方法があるか聞いてるんだけど・・・
432デフォルトの名無しさん:05/01/18 04:03:52
ん?DCUデバッグ有効で両方のコンストラクタにブレークすれば追えるよ
で、出来ると思うよ。

というか・・干渉ですが、
Createから別のCreate(**)を呼ぶならコンストラクタにする意味無いと思います。
Create(**)内でCreateならわかるけど
433デフォルトの名無しさん:05/01/18 04:21:31
どっちのインスタンス化でも大丈夫、引数無ければデフォルト値の零

TMyObject = class(TObject)
private
{ Private 宣言 }
FCount: Integer;
public
{ Public 宣言 }
constructor Create; overload;
constructor Create(APara: Integer); overload;

property Count: Integer read FCount default 0;
end;

...
constructor TMyObject.Create;
begin
inherited Create;
FCount := 0;
end;

constructor TMyObject.Create(APara: Integer);
begin
Create;
FCount := APara;
end;
434デフォルトの名無しさん:05/01/18 05:19:14
 Result := Create(0);
なんて出来るの?
435デフォルトの名無しさん:05/01/18 09:26:50
TDateTime型で二点間の時間差をLabelに表示しようと思い
ヘルプを見ながら試行錯誤したのですが、どうにも上手くいきません。

//aTimeはNowより以前の時刻を表すTDateTime型
Label1.Caption:=FormatDateTime('yyyy/mm/dd HH:nn:ss',(Now-aTime)-693594.0);

どこを訂正すれば良いでしょうか?
436デフォルトの名無しさん:05/01/18 10:52:07
西暦0年なんて存在しないって知ってる?
437デフォルトの名無しさん:05/01/18 11:14:01
delphiでPPCのアプリって作れますか?
438デフォルトの名無しさん:05/01/18 11:40:09
MAINMENUコンポーネントでCAPTIONが ファイル という項目を
作成したのですが、実行すると
ファイル(Z)と項目が表示されます。
(Z)を表示させないようにする方法と、
できれば()内の文字を任意にする方法を教えてください。
宜しく御願いします。
439デフォルトの名無しさん:05/01/18 11:51:21
ファイル(&F)
440438:05/01/18 12:01:39
>>439
ありがとうございます。
441デフォルトの名無しさん:05/01/18 12:05:41
ちなみに英語圏UIの場合は&File (Fの下に下線)
442デフォルトの名無しさん:05/01/18 12:42:56
いくらググっても僕の脳ではわからないのですが。
掲示板などに書き込みさせるようにはどうしたらいいのですか?
とりあえず、Indy9をインストールしました。
Postをするとか書いてあったんですが良くわかりません誰か教えてください。
443デフォルトの名無しさん:05/01/18 13:06:47
>442
http://で始まるアドレスを使ってダウンロードしたり、投稿したりする時は、
HTTPという規約に沿って行なわれます。
という事で、まずは、こことか見てHTTPの勉強をしてください。
http://www.studyinghttp.net/
444デフォルトの名無しさん:05/01/18 17:36:08
>>443はい、勉強してみます。
445デフォルトの名無しさん:05/01/18 18:54:43
AutoHotkeys = maManual
446デフォルトの名無しさん:05/01/18 19:44:05
PaintBoxの使い方がイマイチ理解できません

イメージとしてはPaintBoxという画用紙に
テキストなりイメージなりをペタペタ貼っていくのだと思いますが
参考になるページ等があれば教えていただけないでしょうか
447デフォルトの名無しさん:05/01/18 20:35:32
OnPaintイベントでDrowする、純粋なWinSDKの低レベル描画手法。というか基本
HDCはCanvas.Handle
448デフォルトの名無しさん:05/01/18 21:02:21
>>446
TCanvasのヘルプ嫁、の方が早いと思われ
449デフォルトの名無しさん:05/01/18 21:04:24
最良の学習方法は
DEMOフォルダにあるプロジェクトの中から興味のあるものを見つけて
コードやコンポーネントのプロパティを調べまくること
450デフォルトの名無しさん:05/01/18 22:22:28
位置付けとしては、GDIを使う場合のDCを表示枠として提供するもの
DCを提供するだけで、再描画はしないので永続表示するならOnPaintが必要

まぁほとんど全てのコンポがWM_PAINTで再描画してるんだけど、
ライブラリ化されてローレベルな部分は隠蔽されてるから、いきなり初心者がTImageなど使ってもそれなりのものは出来る。
ビットマップヘッダーやらなにやらGDIを直接使う場合は、本来のWindowsSDKに戻る。
とは言え、いきなり初心者がWindowsSDKのみでアプリを書くのは無理。
451デフォルトの名無しさん:05/01/18 22:57:41
TDateTime型の範囲を確認しましょう
差分なら実数を自分で日付形式表示しれ
452デフォルトの名無しさん:05/01/19 02:06:24
っていうか、秒単位なら SecondsBetween() で時間を求めて、あとは整数のわり算だけ
453デフォルトの名無しさん:05/01/19 03:28:28
>>452
閏年も考慮しないとな。
454デフォルトの名無しさん:05/01/19 04:42:23
結婚適齢期なんだが、考慮してくれ
455デフォルトの名無しさん:05/01/19 09:53:41
石を投げずに聞いてください

1ピクセルは何mmなのでしょうか?
456455:05/01/19 09:57:45
くだらない質問してすいません
Delphi-MLで調べたら見つかりますた
457デフォルトの名無しさん:05/01/19 10:17:25
>>456
delphiと関係ないじゃんw
458デフォルトの名無しさん:05/01/19 10:20:47
>>453
SecondsBetween() は閏年を考慮してるよ
459デフォルトの名無しさん:05/01/19 10:36:37
>>437
つくれないです。
460デフォルトの名無しさん:05/01/19 17:25:04
だれか教えてくれ〜
a(n)=1×2×...×n
b(n)=b(n-1)+b(n-2)、 b(1)=1、 b(0)=0

・n(≧1)が入力として与えられたとき、
 a(n)の値を返す再帰的なプログラムを記述せよ。

・上記の問題を再帰を用いないプログラムで記述せよ。

・n(≧1)が入力として与えられたとき、
 b(n)の値を返す再帰的なプログラムを記述せよ。

・上記の問題を再帰を用いないプログラムで記述せよ。
※ただし入力と出力は全ての整数型で与えられるとし、記述はDel-phiで記述せよ。
461デフォルトの名無しさん:05/01/19 17:46:17
>記述はDel-phiで記述せよ。
スレ違いですよ♪
462デフォルトの名無しさん:05/01/19 18:23:02
デジャヴだな Del-phi も
463デフォルトの名無しさん:05/01/19 20:05:28
アセンブラでも再帰を必要とするのに出来る訳ねーじゃん。寝たか
再帰的なプログラムを記述せよ・・で?・・再帰を用いないプログラムで記述せよ・・ハァ??
全部の値の定数でも並べればぁ
464デフォルトの名無しさん:05/01/19 20:12:46
再帰処理を見せないために、その再帰処理をする関数をDLLにしちゃえばいいんだよ
465デフォルトの名無しさん:05/01/19 20:12:54
>>463
おまいのレスこそネタだよな?ネタだと言ってくれ〜
466デフォルトの名無しさん:05/01/19 20:20:37
アセンブリまで砕いたら殆どのAPIは中で何度もジャンプループしてるだろうよ
467デフォルトの名無しさん:05/01/19 20:27:45
基本は足算引算とビットシフトしか無いんだよ
468デフォルトの名無しさん:05/01/19 23:50:06
VCLとして既にある関数を自分でわざわざ作っている予感がして不安になるときが多々あります。
469デフォルトの名無しさん:05/01/19 23:56:15
気にしないことだな。くだらない関数もたくさんあるし。
470デフォルトの名無しさん:05/01/20 05:39:50
新規プロジェクトを作ってフォームにImageList1を配置して実行するとうまくいくのですが、
画像(例えば"C:\Program Files\Common Files\Borland Shared\Images\Buttons\ABORT.BMP")
を一枚でも読み込んで実行すると
'ImageList1.Bitmapの読み込みエラー:ストリームからのImageListデータの読み込みに失敗しました'
と出てしまいます。何が悪いのでしょうか?
環境はDelphi6 Proとパッチは一通りあてています。
471デフォルトの名無しさん:05/01/20 06:31:15
別に問題ないけどな
IDE上で読み込み済みなのか、起動時に動的に読み込むのか、どっちだ?
472デフォルトの名無しさん:05/01/20 06:32:17
Pro版ならソースもってるべ。
473デフォルトの名無しさん:05/01/20 08:07:13
>>460
function a(n:Integer):Integer;
begin
if n>1
then a:=n*(n-1)
else a:=1;
end;

function a(n:Integer):Integer;
begin
result:=1;
while n>1 do begin result:=result*n ; dec(n);end;
end;

474デフォルトの名無しさん:05/01/20 10:57:58
bitmapやjpgの画像の色をpixelごとに読みたいんですが、どうすればよいでしょうか。
475デフォルトの名無しさん:05/01/20 11:24:46
bitmap.canvas.pixels[] 速度がほしければ scanline
jpg 画像は bitmap に写し取って同様にする
476デフォルトの名無しさん:05/01/20 13:37:08
Cのソースをパスカルに変更するソフト、どこにあったけ?
477474:05/01/20 15:06:24
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
Fname: TFileName;
begin
if OpenPictureDialog1.Execute then
Fname := OpenPictureDialog1.FileName
else
exit;

Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(Fname);
Form1.Canvas.Brush.Bitmap := Bmp;
Form1.Canvas.FillRect( Rect(0,0,100,100) );
Label1.Caption := IntToStr(Bmp.Canvas.Pixels[50,20]);
finally
Form1.Canvas.Brush.Bitmap := nil;
Bmp.Free;
end;
end;
end.

こんなプログラムを作ったんですが、labelの行を追加するとbitmapが正しく表示されません。
また、labelの数字もなんか変ですし。本当はR,G,Bそれぞれの値を得たいのですが、どうしたらよいでしょうか。
478デフォルトの名無しさん:05/01/20 15:12:11
いやーそんなことないよ。良いんじゃない?
479デフォルトの名無しさん:05/01/20 15:26:08
>>477
やってみたけど、別に問題がないと思うけど。Label1の行の有無にかかわらず、特に差はなかった。
ただ、Bmp.Canvasのサイズに対して、OpenPictureDialog1で読み込まれたBitmapのサイズが
大きすぎの可能性はないだろうか(小さい場合はタイル状に並ぶことは確認できると思う)。

>labelの数字もなんか変ですし。
ヘルプでTCanvas.Pixelsを熟読しる。たぶん-1が返ってきている状態に陥ってない?
480480:05/01/20 15:30:27
function MojiMoji(s1,s2:string):integer;
var
i : integer;
begin
result := 0;
for i := 1 to 4 do
begin
if StrScan((PChar(s1)) and (PChar(s2)),s2[i]) <> nil then
begin
Inc(result);
end;
end;
end;

例えば、s1='abcd' s2='bbef'と代入させた時に、
s1にはbが1個、s2にはbが2個含まれているので、
上記の関数を使うと、2という結果が返ってきます。
私が求めているのは、いくつ組が出来るかってことなので、
この場合は、1という結果が欲しいんです。
s1の2文字目のbとs2の1文字目のbという組が出来たら、
s1の2文字目のbとs2の2文字目のbは組として成立させないよう、
以降s1の2文字目のbは使わないようにしたいんです。

上記の関数をどう書き換えれば良いでしょうか?
481デフォルトの名無しさん:05/01/20 15:53:45
TreeViewで同じ階層に同じ名前のノードを作れなくするにはどうしたらいいですか?
482デフォルトの名無しさん:05/01/20 15:56:32
>>480
その前に
(PChar(s1)) and (PChar(s2))
の意味がわからんのだが・・・俺がアホなだけか?
483デフォルトの名無しさん:05/01/20 16:03:09
(PChar(s1)) and (PChar(s2)) って意味不明なんだが?
s2[i] で巡回してるんだから、PChar(s1) だけじゃないのか、この部分。

それに s1 と s2 を入れ替えると結果がかわるでしょ。
同じ文字がある場合はそれを s1 にしてごらん
484480:05/01/20 16:09:40
間違えました。。。もとは、

function MojiMoji(s1,s2:string):integer;
var
i : integer;
begin
result := 0;
for i := 1 to 4 do
begin
if StrScan((PChar(s1)),s2[i]) <> nil then
begin
Inc(result);
end;
end;
end;

です。
485デフォルトの名無しさん:05/01/20 16:19:25
>481
子ノードを全検索して作成有無を判断するしか無い。リネームなんかも同じ
486デフォルトの名無しさん:05/01/20 16:20:02
関数の動作原理を理解してないのが原因
487デフォルトの名無しさん:05/01/20 16:20:17
>>480
こんなんどうよ?
function MojiMoji(s1,s2:string):integer;
var
i : integer;
begin
result := 0;
for i := 1 to 4 do
begin
if Pos(s2[i], s2) < i then
begin
continue;
end;
if StrScan((PChar(s1)), s2[i]) <> nil then
begin
Inc(result);
end;
end;
end;
488デフォルトの名無しさん:05/01/20 16:25:14
>>485
了解しました。
489デフォルトの名無しさん:05/01/20 16:29:29
やっぱ、
If cond then If cond then else ---
やっぱbigin - end - で囲っちゃう いらないけど
if cond then
if cond then else
else
-- がいまだにできない
490デフォルトの名無しさん:05/01/20 16:35:24
Delphiと関係あるのか?
正規表現が無いから文字検索が面倒なのは確かだが
491デフォルトの名無しさん:05/01/20 16:37:11
正規表現があるとその使い方が面倒だが
492デフォルトの名無しさん:05/01/20 16:46:19
そんなヤツはposでやってりゃいいだろ
493480:05/01/20 16:53:58
482さん、483さん、486さん、487さん、
どうもありがとうございました。

それともう一つ質問なんですが、
上記と似たような関数なんですけど、
s1とs2に、何種類の文字が含まれているかを調べる関数を作りたいのですが、
どうすればよいでしょうか?
さっきのs1='abcd' s2='bbef'だと、
6種類という結果が返ってくるような関数です。
よろしくお願いします。
494デフォルトの名無しさん:05/01/20 16:55:34
pos で出来ることを正規表現つかってやるヤツもいるんだな
495デフォルトの名無しさん:05/01/20 16:59:16
自分で少しは考えるってことはしないのか?
496デフォルトの名無しさん:05/01/20 16:59:40
正規表現あればバグは減る
497デフォルトの名無しさん:05/01/20 17:01:37
どうして?
498デフォルトの名無しさん:05/01/20 17:16:44
>>493

function HowManyKinds(const s:string):integer;
var
  i:integer;
begin
  result := 1;
  for i := 1 to Length(s)-1 do
    if StrScan(PChar(@s[i+1]),s[i]) = nil then Inc(Result);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToStr(HowManyKinds('abcd'+'bbef'));
end;
499デフォルトの名無しさん:05/01/20 17:23:22
複雑な電文の解析処理してるルーチンとか考えてみ
while内でかなりのcaseとposとフラグ使ってでグルグル回さなきゃいけない罠
正規表現なら簡素になるだろ、物によっては一行で済むかもしれん
IndyのTIdMessageでもヘッダー部にバグ潜んでるし
500480:05/01/20 17:26:09
498さん、どうもです。
まずは、しっかり理解してから使います。
ありがとうございました。
501デフォルトの名無しさん:05/01/20 17:26:18
正規表現にバグ潜んでるかも知れんし
502デフォルトの名無しさん:05/01/20 17:28:48
Delphi8以降でdotNetなら正規表現使えます
503デフォルトの名無しさん:05/01/20 17:33:53
Delphiにバグ潜んでるし
504デフォルトの名無しさん:05/01/20 20:06:07
TTableでいうところのApplyUpdatesにあたる命令が
TADOTableにはありますでしょうか。
505デフォルトの名無しさん:05/01/20 20:20:58
ADO自体の特性を理解してから、ADOコンポーネントのヘルプ見ろ
506デフォルトの名無しさん:05/01/20 21:58:37
エディタを作ろうと思うのですが
特定単語などを自動的に太字にしたり色変えたり・・したいと思い、
リッチエディットでやったのですが、太字に変えると幅が大きくなってしまします

IDEのエディタは予約語に限らず等幅でボールドしたり解除したりしてますよね
こういう風にしたいのですが

サブクラスウインドウやめて、DCやらフォントやらキャレットやら
自分で実装しないといけないのかしら?それだと超めんどくさいのですが

なんか簡単にできるプロパティとか見落としてるのでしょうか

(他人のコンポーネントは無しということで)
507デフォルトの名無しさん:05/01/20 21:59:33
>サブクラスウインドウやめて、DCやらフォントやらキャレットやら
>自分で実装しないといけないのかしら?それだと超めんどくさいのですが

>(他人のコンポーネントは無しということで)
無理
508デフォルトの名無しさん:05/01/20 22:10:53
超めんどくさい事することにします・・・ハァァ 超時間もかかる
509デフォルトの名無しさん:05/01/21 02:05:33
ちょう初歩的な質問なのですが、ネットワークを使用するプログラムは
通常どれくらいのポートを開くものなのでしょうか。
物にもよると思いますが、例えばチャットプログラム等ではどうなのでしょうか。
文字送受信用とファイル送受信用で別のポート使いますよねたぶん^^;

どうかご教授お願い致します。
510デフォルトの名無しさん:05/01/21 02:08:18
511デフォルトの名無しさん:05/01/21 02:16:53
>>510
こんなに使っている物なんですね^^;
次からはもっとちゃんと調べるようにします。
お手数お掛けしました&ありがとうございました!
512デフォルトの名無しさん:05/01/21 03:08:02
一つのプログラムがどれくらいのポートを開くかって事では?
1PCに1つ割り当てれば良いと思うけど、ちがうの?
513デフォルトの名無しさん:05/01/21 03:16:40
>>509
TCPとUDPについて調べろ。話はそれからだ。
514デフォルトの名無しさん:05/01/21 04:02:02
その人たぶんね、ソケット通信組めるレベルじゃないよ
515509:05/01/21 04:35:28
既にクライアントとサーバ間でやりとりをするプログラムはいくつか作っています。
しかしいつもソケットコンポーネントを置く時に「これでいいのかなぁ〜」と疑問を抱きつつ
置くのでプログラミングが上手な方々にどうすべきか聞こうと思ったのですが、
よく考えたら既存のプログラムのポートを調べれば済む話だったという訳です^^;
ともかく皆さんどうもです〜^^;
516デフォルトの名無しさん:05/01/21 08:12:30
VBと対比されて説明されることがありますけど、
VBにできなくてDelphiにできることってなんですか?
517デフォルトの名無しさん:05/01/21 08:14:23
ない
518デフォルトの名無しさん:05/01/21 09:04:49
>>517
普通にあるだろw
519デフォルトの名無しさん:05/01/21 09:27:25
超初心者です。

procedure TForm1.Button1Click(Sender: TObject);
var
 Bitmap: TBitmap;
begin
 if OpenDialog1.Execute then
  Bitmap.LoadFromFile(OpenDialog1.FileName);
end;

こんなプログラムを作ったんですが、Bitmap.Load…のところで例外が発生します。
「Project1.exeがEAccessViolationクラスの例外を発生した。Project1.exeのアドレスxxxxで
アドレスyyyyの読み込み違反がおきた」とでて先に進みません。実行を続けようとしても同じ
メッセージが繰り返されるだけです。helpを読むと、ツールのデバッガオプションで何とかしろ、
と書いてありますが、よくわかりません。どうすればよいか教えてください。
520デフォルトの名無しさん:05/01/21 09:29:47
TBitmapというインスタンスを生成する必要がある

Bitmap:= TBitmap.Create;
try
 if OpenDialog1.Execute then
  Bitmap.LoadFromFile(OpenDialog1.FileName);
finally
 Bitmap.Free;
end;
521519:05/01/21 10:23:49
>>520ありがとうございます。でも今度は「ソースファイルが見つかりません:Graphics.pas」とエラーになります。
何度も申し訳ないですが、どうすればよいか教えてください。
522519:05/01/21 10:31:56
フォルダーが違うとかではなく、検索してもありませんでした。
523デフォルトの名無しさん:05/01/21 10:32:29
すみません。質問です。
プログレスバーを使ってファイルのダウンロード状況を表示したいと思っています。
どのように書けば良いかサッパリわからないです。
524523:05/01/21 10:35:43
ダウンロードするファイルのサイズをMAXに指定して、
Positionを現在ダウンロードできているファイルサイズ?
とするような感じなのだろうなぁとは思うのですが・・。

うまくいきません(-_-;)
525523:05/01/21 10:42:48
お騒がせしました。for使ったらできました^^;
526デフォルトの名無しさん:05/01/21 11:14:42
検索の仕方を覚えようと書いてみたんですが
全く反応がありません。
何が悪いんでしょうか?

procedure TForm1.Button1Click(Sender: TObject);

var
sr:TSearchRec;
i:integer;
begin
if FindFirst('C:\',faDirectory,sr) = 0 then
begin
 repeat
showmessage(sr.Name);
until FindNext(sr) <> 0;
end;
FindClose(sr);
end;
527526:05/01/21 11:22:48
すいません、自己解決しました。
528デフォルトの名無しさん:05/01/21 12:18:41
質問よろしいでしょうか?
別アプリのウインドウにあるコマンドボタンのEnableの状態を取得したいのですが、
APIがわかりません。FindWindow,FindWindowEXでウインドウハンドルを取得するまではわかるのですが・・・
ご教授お願いいたします。

529519:05/01/21 12:34:21
自己解決しました。ありがとうございます。
530デフォルトの名無しさん:05/01/21 12:51:20
>>528
IsWindowEnabled
マァAPIの質問はAPIスレのがいいよ
531デフォルトの名無しさん:05/01/21 13:05:36
>>530
ありがとうございます。
532デフォルトの名無しさん:05/01/21 17:37:37
>>516
RuntimeDLLなしでアプリを実行すること。
533デフォルトの名無しさん:05/01/21 17:42:20
kernel32.dllをスタティックリンクする方法を教えてください。
534デフォルトの名無しさん:05/01/21 20:33:48
スタティックにしたらプロセスどこからもらうんだ?
535デフォルトの名無しさん:05/01/21 20:36:17
そんな巨大なプログラムはいらないな
536デフォルトの名無しさん:05/01/21 20:41:20
ふふふ、ランタイムDLLだといいたいんだろ
537デフォルトの名無しさん:05/01/21 20:49:16
ハローワールドならシバクゾごるぁ
538デフォルトの名無しさん:05/01/22 00:50:49
>>516
>VBと対比されて説明されることがありますけど、
>VBにできなくてDelphiにできることってなんですか?
 VBってポインタ扱える? 確か使えないと思ったが・・・・
 いずれにせよ
「VBにできなくてDelphiにできること」
の方が
「DelphiにできなくてVBにできること」
よりずっと多いとおもふ。
539デフォルトの名無しさん:05/01/22 01:10:32
ローレベルにVB詳しいヤツがここ見てると思うか?
540デフォルトの名無しさん:05/01/22 01:38:07
俺はVBでAPIを扱おうとしたところで挫折してDelに乗り換えた口。
541デフォルトの名無しさん:05/01/22 02:00:11
>>532-540
お客様、談話室が空いていますので、そちらのほうでゆっくりしていってください。
542デフォルトの名無しさん:05/01/22 04:17:16
VBはAPIを使おうと思ったら、自分で宣言しないといけないんだっけ?
APIを使うようなアプリは作るなって事か。
543デフォルトの名無しさん:05/01/22 04:46:20
>>542
Delだって同じジャン、ボケ
544デフォルトの名無しさん:05/01/22 04:47:42
>>543

Windows とかのユニットで宣言してあるじゃん。
545デフォルトの名無しさん:05/01/22 05:08:17
LongHornでもAPIを亡き者にしようと画策しているけど、
よっぽどAPIが嫌いなのね。
546デフォルトの名無しさん:05/01/22 05:15:23
>544 はハイレベルな人間。よってローレベルコードを必要とする柔軟なものは作れない。
547デフォルトの名無しさん:05/01/22 06:46:30
>>545
生でやるのは危険だからね。
548デフォルトの名無しさん:05/01/22 08:08:02
すんません。質問なんですが、
Form1.Create時にForm2のobjectを参照することは出来ないのでしょうか。
(Form2生成前だから?とか)
一応、Form1のonShowイベントで参照させて回避しましたが、気になるもので。
549516:05/01/22 09:49:36
答えてくださった方々ありがとうございました。
>>541
スレ違いになる仕様の問題になることを質問してしまってスミマセン。
550デフォルトの名無しさん:05/01/22 10:42:46
質問いいですか?

HP上のデータを、ClientSocketを使って、
ダウンさせるにはどうしたらよいのでしょうか?
FTPのコマンドを理解すればよいのでしょうが、
FFFTPの作動画面見てもはっきり分かりません。
ご存知の方、回答よろしくお願いします。
551デフォルトの名無しさん:05/01/22 11:17:27
>>550
Indyの方が楽でね?
552デフォルトの名無しさん:05/01/22 11:18:59
553デフォルトの名無しさん:05/01/22 11:38:26
(´_`)。oO(落とすだけなのにFTP使う意味あるのかなぁ…)
554デフォルトの名無しさん:05/01/22 11:47:31
>>548
Form2を先に生成するように設定する
555デフォルトの名無しさん:05/01/22 12:19:37
>>554
そうするとForm2.Create時にForm1のobjectを参照することは出来なくなってしまいます。










とか言うなよ。
556デフォルトの名無しさん:05/01/22 12:26:49
>>554
Application.MainForm を設定しなければならないのでその方法はおすすめできない
557デフォルトの名無しさん:05/01/22 12:47:29
>>553
ないだろ。WinInet とか、もっと簡単に UrlMon 使えば一行だよな。
558デフォルトの名無しさん:05/01/22 12:49:24
> LongHornでもAPIを亡き者にしようと画策しているけど、

そんなことないよ。アセンブリのコードがAPIになるから使いまくりだろ、ふつう
559デフォルトの名無しさん:05/01/22 14:17:29
>>548
Object参照じゃないが、
Form2にあるメソッド使いたいだけならこれはどうだ?

TForm2 = class(TForm)
public
class procedure Hoge;
end;

procedure TForm1.OnCreate(Sender: TObject);
begin
TForm2.Hoge;
end;

Objectの参照は作らないと無理。
560デフォルトの名無しさん:05/01/22 15:12:18
>>548
プロジェクト-オプション-フォームの自動生成の対象でForm2をForm1の上に来るようにする。
そうすれば先にForm2が作られるので参照できる。
561デフォルトの名無しさん:05/01/22 15:16:18
OnShow で参照して不便なことなど何もないだろ
562デフォルトの名無しさん:05/01/22 16:14:45
Delphi6でユニットのライブラリの*.hlpファイルを生成する
ドキュメンテーションツールってないですか?
563デフォルトの名無しさん:05/01/22 17:13:43
>550
FTPじゃない。HP上なんだからHTTPプロトコルだよ。
564デフォルトの名無しさん:05/01/22 17:14:19
いまdel6presonalインストール中なんだけど、
「共有ファイル」ってディレクトリは具体的に何に使われるもんなの?
565デフォルトの名無しさん:05/01/22 17:23:08
ビットマップイメージとかデバッガとかデータベース関係とか
BDE
BDS
Data
Database Desktop
DBExpress
Debugger
Images
MSHelp
SampleDictionary
566デフォルトの名無しさん:05/01/22 18:07:00
>>565
それは「共有ファイル」っていうんだろうけど、
誰と誰が共有すんの?
「delphiと他の言語とかOSとかが共有」とかするならc:\に置こうと思ってるんだけど、
「delphiのプログラムAとプログラムBが共有する」ならd:\に置こうと思っててさ。
567564=566:05/01/22 18:18:46
あーめんどくさっ
やっぱり全部デフォディレクトリにする。
>>565レスどもでした。

PCがイカれててよくOS再インスコするので、こういうの迷う。
568デフォルトの名無しさん:05/01/22 18:28:22
>>566
他バージョンのDelphiとかBCBとか
569デフォルトの名無しさん:05/01/22 18:44:41
デフォルトにしとけ
570デフォルトの名無しさん:05/01/22 19:04:57
ゲームの作り方とかじゃなくて言語仕様など、言語そのものについての入門サイトで
おすすめなとこありますか?
571デフォルトの名無しさん:05/01/22 19:12:57
572デフォルトの名無しさん:05/01/22 19:44:26
言語仕様なんてろくに理解しないまま
プログラムを組んでる俺は勝組
573デフォルトの名無しさん:05/01/22 19:53:29
言語仕様よりアイデアだな
表面なら、どうすれば操作性が良いか、見栄えが良いか・・・
中身なら、どういうクラス設計が使いやすいか、関数の引数をどうするか・・・
574デフォルトの名無しさん:05/01/22 20:15:28
と、言語仕様もよく分からないまま考えても無駄
575デフォルトの名無しさん:05/01/22 20:57:10
>>571
thx!
適当に入門書購入したらコンポーネントの解説ばっかで文法のこと全然書いてなくて困ってました。
ついでに書籍でお勧めってありますか?電車でチマチマ読みたいとき用に。
576デフォルトの名無しさん:05/01/22 21:01:05
pdf無かったっけ?それでも印刷しとけよ
577デフォルトの名無しさん:05/01/22 22:08:21
質問させてください
Halbow氏のTCommonMemoryクラスを試してみようと、以下のコードを書いたのですがどうにも巧く文字列を取得してくれません。
ステータスバーだと取れるのですが何故かTEditだと文字列の取得に失敗します(文字列の長さの取得には成功している)
どなたか理由の分かる方はいらっしゃいませんでしょうか?
なおターゲットプログラムは勿論起動してますしTEditが貼られてます。

procedure TForm1.Button1Click(Sender: TObject);
var
hTargetForm,hEdit:HWND;
Len: integer;
AllocSize:DWORD;
CM:TCommonMemory;
PC:PChar;
s:string;
begin
hTargetForm := FindWindow('TTargetForm',nil);
hStatusbar := FindWindowEx(hTargetForm,0,'TEdit',nil);
if hEdit = 0 then begin
ShowMessage('Target Statusbar is not found');
exit;
end;
AllocSize := 1 + LOWORD(SendMessage(hEdit,WM_GETTEXTLENGTH, 0, 0));
CM := GetCommonMemory(hEdit,AllocSize);
GetMem(PC,AllocSize);
Memo1.Clear;
Len := LOWORD(SendMessage(hEdit,WM_GETTEXT,AllocSize,LPARAM(CM.MemPtr)));
CM.Read(0,PC,Len);
SetString(s,PC,Len);
Memo1.Lines.Add(s);
FreeMem(PC);
CM.Free;
end;
ZZZ......
          +   へ    ,,,..-'"へ ⌒ヽー-、..,,,...-イ''⌒ヽ
             /   ゝ-─‐-/'  ヽi!  ヽ、     i,  ,ノ
      +   /"             i!  .... ゙'';;..   Y"
        ,/' ''''''   ''''''       〈  :::::.  '';;...  'i- 、,,
       + i'(-==),   、(==-)、    'i,  ::::::::   ::::  'i!   ゙"ヽ、
          i!   ,,ノ(、_, )ヽ、,,         'i  :::::::::  ''':;;;  ヽ、  ゙)
 ワカッタニャー 'i,::::: `-=ニ=- '       ,/ヽ ''''        'i,-‐'"
       /⌒ヽ、 `ニニ ´   :::,,-‐    ゝ   .............    ヽ、
       (    ヽ、 u ,,.-‐''"       ,)  :::::::::      '\,
        ヽ、,,  ノ,.-‐''"      ノ-‐''"´( :::::::::::          )
          "~ (       ,. -'"     ヽ、    _,,... -‐─'''"
             ヽ、,,.. -‐'''"         ``゙"´~

 ./  ̄/〃__〃     ̄フ  /  /     / o  ヽ  /
   ―/  __ _/  ./  /  / ── / ̄     /
  _/   /   /  /\  _/      ヽ_  _/
579ぼるじょあ ◆O199225486 :05/01/22 22:10:43
   ──    / ──┐  ┼─┐      |
  ──┐ /|      |   l    |  l l   |\_
   _ノ    |   _ノ    ノ   _/   _ノ  |

      ト|
      ト|
      ト|
      ト|
    /\ト|___/ヽ
   /''''''   '''''':::::::\
  . |(○),   、(○)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   `‐=ニ=‐ ' .:::::::|
   \  `ニニ´  .:::::/
,,.....イ.ヽニニニニニニニニン-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||
580デフォルトの名無しさん:05/01/22 22:13:21
∧_∧
(´・ω・`)
( つ旦O  
と_)_) 
581デフォルトの名無しさん:05/01/23 00:47:03
>>577
WM_GETTEXT はウィンドウテキストの取得だからOSがよきに計らってくれる
コモンメモリは必要ない
582デフォルトの名無しさん:05/01/23 02:26:15
ていうか、OSが混乱するから使っちゃダメ

ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N012.html

ここ読むと、WM_SETTEXT WM_GETTEXT WM_COPYDATA だけが例外的にOSまかせに
できるようだ
583デフォルトの名無しさん:05/01/23 02:31:39
他アプリのテキスト変えるよーなの作っちゃイヤン
584デフォルトの名無しさん:05/01/23 02:40:08
それは言えてる
585デフォルトの名無しさん:05/01/23 10:01:02
鈴木教授マンせー
586デフォルトの名無しさん:05/01/23 13:01:11
数値リテラルとstrToIntのフォーマットを教えてください
587デフォルトの名無しさん:05/01/23 14:13:12
IPアドレスをLongWord型で取得できたのですが
それをホスト名に変換したいのですが
gethostbyaddr()を使うのかなといったところまでは
調べられたのですがその先になかなか進めません。
もしよろしければ教えていただけないでしょうか?
よろしくお願いします。
588デフォルトの名無しさん:05/01/23 16:47:47
ソケットコンポのソース見りゃいいじゃん
589デフォルトの名無しさん:05/01/23 17:27:22
 ∫,,,,,,,,,∧,,∧  じゃあ、ソースみて
⊂,,,,,,,,,つ,,゚Д゚ミつ  教えてやれよ。

Longword型に取得というのがよくわからないが
これじゃだめかの?

function GetHostName(ip : string) : string;
var
 PH : PHostEnt;
 InAddr: TInAddr;
 W : Word;
 WSADATA : TWSADATA;
begin
 result := '';
 if ip = '' then exit;
 InAddr.S_addr := inet_addr(PChar(ip));
 W := MakeWord(1, 1);
 WSAStartup(W, WSADATA);

 PH := gethostbyaddr(@InAddr,4,PF_INET);

 if PH = nil then
 begin
  exit;
 end;
 result := string(ph^.h_name);
 WSACleanup;
end;
590デフォルトの名無しさん:05/01/23 19:02:49
質問。delphi入門がてら、超簡単なチャット的なものを作ろうとしてます。
でも、接続〜切断の処理をわけるとうまくいくのに、まとめるといまくいかない。何故?
clientsocket(名前:csoc)を使って、

「接続」ボタン押すと
csoc1.address := edtConnectHost.text;←IPアドレスが入ってる
csoc1.Open;

「送信のみ」ボタン押すと
csoc1.Socket.SendText(edtInput.text);←送る文字列ね

「切断」ボタン押すと
csoc1.Close;

なら上手くいく。なのに、
「送信」ボタン押すと
csoc1.address := edtConnectHost.text;
csoc1.Open;
csoc1.Socket.SendText(edtInput.text);
csoc1.Close;

だと、2回に1回しか、相手にメッセージが届かない。
最初は失敗で、次は届く。次はまた失敗、の繰り返し。

で、ログを次のように出したところ
csoc1Connect→「接続しました」
csoc1Write→「送信しました」
csoc1Disconnect→「切断しました」

初回は接続、送信までしかログが出ない。
2回目は接続、送信、切断までログがでる。
次はまた送信まで。                 以上です。
591デフォルトの名無しさん:05/01/23 20:21:49
>>590
ほんとだ。今まで気付かなかったw

csoc1.Open;とcsoc1.Socket.SendText(edtInput.text);の間に
どうでもいい処理を挟めばとりあえず動きそうな悪寒。
592591:05/01/23 20:25:30
ごめんなさい嘘です。忘れてください。

↓エロい人おながいします
593デフォルトの名無しさん:05/01/23 20:27:33
非同期ソケットのことを何もわかってないな
594590:05/01/23 20:29:48
エロいですが質問者です。

個別ボタンと送信ボタンでいろいろ試したところ、
送信ボタン1回目で接続ができて、
送信ボタン2回目で送信と切断ができているもよう。

せめて、openでちゃんと接続できたのか取得したいんですけど。
ヘルプに書いてない(見つからないだけ…?)
595デフォルトの名無しさん:05/01/23 20:31:59
OnConnectがあるだろ
596デフォルトの名無しさん:05/01/23 20:35:17
わかってないと思うよ。
分かってればソケット絡みは、質問の前提条件として言うだろし。
あの質問だと、同期?非同期?と聞き返さなきゃいかんから面倒
「なにそれ?」なんて言うかもしれないし
597590:05/01/23 20:38:58
おっしゃるとおり、わかってません。
まずはそれを勉強するとします…。

回答ありがとうございました。
598デフォルトの名無しさん:05/01/23 20:59:22
同期
スレッドが動作をブロックする。
recvなどは取得出来るまで制御が戻らない。
タイムアウトを適所に入れる

非同期
コマンド発行後すぐにスレッドに制御が戻る。
コマンドが完了していないかもしれない。たぶんしていない。
完了通知はイベントの形で通知

アプリとして大抵は、同期接続をマルチスレッドで使う
599デフォルトの名無しさん:05/01/23 20:59:41
シーケンシャルじゃないということだぬ。
600デフォルトの名無しさん:05/01/23 21:00:48
で、OS何よ、Win3or2KorXPorNT
601デフォルトの名無しさん:05/01/23 21:12:42
オス
602590:05/01/23 21:32:28
ソケットは知っていたけど、同期/非同期は知らんかった…。
こりゃテクネ受からんな。

>>598
なるほど、つまりopenしたらOnConnectイベントが来るまで
待たないといかん、と。

>>600
自分ですか、2kです。
603デフォルトの名無しさん:05/01/23 21:49:19
2Kなら、大方うまくいくよ、でもそれでも
とりこぼしあるからリカバリーはしっかりと、どこまでエラーにするかだな。
604Delフサギコ ◆A6VzDeLphI :05/01/23 21:54:16
    ∧,,∧  
   ミ,,゚Д゚彡
    ミ つ旦)~~
よくしらないのですがどうぞ。

こける Wired-Winsockを使ってみようぜ : http://www.asahi-net.or.jp/~nk2w-ishr/winsock0.htm
605デフォルトの名無しさん:05/01/23 21:58:59
俺はテクネ持ってるぞ。ざまーミロ
606590:05/01/23 22:00:30
テクネは関係ないか。組み方の問題だから。
まあいいや、とにかく

「送信」ボタンでは接続だけ

OnConnectで送信

OnWriteで切断

でうまくいきました!
練習だし、エラーに関してはシカトしときます。

openした時点で、「接続しにいくだけの別スレッドが始まる」イメージですね。
だから、即送信してもうまくいくとは限らない(即、じゃあ大抵ムリ)、と。
よっしゃ、勉強になりました。
607590:05/01/23 22:02:59
>>604
お、こりゃどうも。読んでみます。

>>605
しんじられない、すごいです
608デフォルトの名無しさん:05/01/23 22:05:29
大体通信処理は大変だよ。リトライするべきだし。ローカルファイルの
読み書きとは全く違うよ。
609デフォルトの名無しさん:05/01/23 22:12:05
>>607
すごいだろ。まーがんばれや
610デフォルトの名無しさん:05/01/23 22:19:22
だからぁ。目的はワンボタンで接続、送信、切断したいんだろ?
理解深めたのは良いこととして、
エラーは無視とか言うんなら最初のコードで、君の中じゃ完了だったんじゃねーか
611デフォルトの名無しさん:05/01/23 22:22:57
非同期なんか、実用的なもん何も作れん
612デフォルトの名無しさん:05/01/23 22:23:26
∧_∧
( ;・∀・)
( つ旦O  
と_)_) 

613デフォルトの名無しさん:05/01/23 22:29:17
教えてるほうもレベル低いな
614デフォルトの名無しさん:05/01/23 22:36:24
超初心者がくだらないレス付けるすれですから
615デフォルトの名無しさん:05/01/23 23:25:27
せっかく非同期使うんだからキャンセルボタンぐらい付けようや
616590:05/01/23 23:39:14
>>609
うわーありがとうございます。
せっかく応援されたのでがんば
ろう。

>>610
ワンクリックで送信できなかったのが、
ワンクリックで送信できるようになったのです。とりあえずそれでおk。
最初のコードじゃ明らかに予期した動きではない。

でも、せっかくだからキャンセルボタンと、
〇秒以上繋がらなかったらエラー、くらいやるかなぁ。
617デフォルトの名無しさん:05/01/23 23:45:38
しかし、テクネも持っていないやつがいるとは驚きだぜ
618590:05/01/23 23:55:13
>>617もう飽きたよ
619デフォルトの名無しさん:05/01/23 23:56:06
煽りでも何でもないけど、「入門」に「チャット」はどうかと思う…。
上級方面だと思う…。
620デフォルトの名無しさん:05/01/23 23:56:44
まだいたのかよ( ´,_ゝ`)プッ
621デフォルトの名無しさん:05/01/24 00:12:34
質問終わったので数字コテはずします。

>>619
他の言語経験は長く多く、
また飲み込みも早いほうなので、
「TCP/IPプログラミング」と「delphi」を同時に勉強しようと思いまして。
テクネ持ってないけど勉強はしたからある程度わかるし、
VBと、C(API使ってのwindowsアプリケーションをメモ帳でちまちま作った)
経験があるのでGUIとかイベントドリブンとかは慣れてるし。

まあ、あくまで「チャット的なもの」。
今のところ1対1Onlyだし、双方からお互いにTCP接続してるし。
しかもそれを放置してじゃんけん機能つけてるとこだし。
622619:05/01/24 00:15:49
>>621
そかそか。
いや、単純に「入門」はどうかと思っただけだから。
否定してるワケじゃない。
他に「入門しやすい道があるのに…」ってだけ。
623デフォルトの名無しさん:05/01/24 00:28:18
>>622
いえいえ、至極まっとうなご忠告だと思います。ども。
自分も、他の人が「入門でチャット」って言ってたら突っ込むし。
624デフォルトの名無しさん:05/01/24 01:15:07
簡単なマルチスレッドやシステムコールバックとかちょっとやった方がいいよ
マルチスレッドの実装自体は簡単だから。排他がややこしいが。

面倒ならScktCompのほうのソケットコンポで、それほど理解出来て無くても使える。
それでも問題にぶつかるだろうから、スレッドや排他はそのとき考え詰めればいい
625デフォルトの名無しさん:05/01/24 01:31:17
いや、世の中すべて非同期なのにね、変なの
626デフォルトの名無しさん:05/01/24 01:32:44
>>624
一応、次はマルチスレッドやろうと思ってます。
最終的には、winnyとかのノード集めてうんたらかんたらを利用した、
違法性のない…なんかゲームでも作りたい。
627デフォルトの名無しさん:05/01/24 02:48:26
鈴木教授マンせー
628デフォルトの名無しさん:05/01/24 06:13:10
皆凄いなぁ。俺今19でプログラミング始めたばっかなんだけど。。
CSockとSSockで簡単なアプリ作って浮かれてたけど
やっぱ手遅れかなぁとか思ってしまった(つД`)
629デフォルトの名無しさん:05/01/24 06:30:45
意味ワカメ
630デフォルトの名無しさん:05/01/24 06:39:27
なんだか知らない事ばかり話されているので
果たして今から勉強して仕事としてやっていけるだけの
知識を数年の内に身に付けられるのかなぁと。。
631デフォルトの名無しさん:05/01/24 06:40:53
君次第
632628,630:05/01/24 06:42:49
がんがりまする(´・ω・`)
633デフォルトの名無しさん:05/01/24 06:46:04
ホソキカズコは言う。あなたはこの一年が勝負だから一生懸命やってごらん

一年後・・・あまりパっとしない結果になった。生活レベルも特に変わらん
ホソキカズコは言う。頑張りが足りなかった結果なのよ!

マルチ商法や詐欺まがいと同じじゃねーか、ランダムな事言って金せしめてるふてぇ野郎だ
634デフォルトの名無しさん:05/01/24 06:50:07
細いクスコ?
635デフォルトの名無しさん:05/01/24 07:03:36
今でもやっぱり、Del2,Del3あたりに買ったちょっと分厚い本が一番ためになるな
Del4あたりから書籍は殆ど買ってないけどさ
APIコールでOSの動作解説して、同じ処理するコンポーネントを平行解説してる
ver上がる毎にコンポーネントの解説ばかりになって、lowレベルな事しようとしても分かんない
636デフォルトの名無しさん:05/01/24 07:57:59
>>633
if お前 = ホソキカズコと同じ方法で稼げる状況にある then
begin
ホソキカズコと同じ方法で稼ぐ;
end;
637デフォルトの名無しさん:05/01/24 08:06:12
finalization
  if ( (>636) shr (LOWORD(>633)) AND $8FFF0000 ) > 0 then
   訴えられタイーホ
638デフォルトの名無しさん:05/01/24 08:07:31
>>633
というかカズコのいうことを間に受ける奴って
アサハラショーコーのいうことを間に受けた奴と同レベルだよね
639デフォルトの名無しさん:05/01/24 08:21:12
何かにすがりたいときもあるのさ
640デフォルトの名無しさん:05/01/24 08:21:55
そんなときはソプに行く
641デフォルトの名無しさん:05/01/24 08:22:46
おれもつれてけ
642デフォルトの名無しさん:05/01/24 08:23:42
Sofmapの紙袋わすれるなよ
643デフォルトの名無しさん:05/01/24 09:51:26
リストビューを使っています。
listView1.Redraw := false;
--内容書き換え
listView1.Redraw := true;

のように書き換え中に画面をちらつかせない方法が
あれば教えてください。
644デフォルトの名無しさん:05/01/24 09:51:32
誰とやる時も病気感染らないから心配だなぁ
645デフォルトの名無しさん:05/01/24 09:54:52
>>643
ListView1.Items.BeginUpdate;
ListView1.Items.EndUpdate;
646デフォルトの名無しさん:05/01/24 09:58:57
>>645
スペシャルサンクス
助かりました。
647デフォルトの名無しさん:05/01/24 10:26:13
TWinSocketStream.WaitForData についてですが、ヘルプには
> ソケット接続で情報を読み書きする用意が整っていることを確認できます。
とありますが、実際にやってみると読み込みをする準備が整っているかどうか(ソケットにデータが届いているか)はわかるのですが、
書き込みの準備が整っているかどうかがわからないような気がします。
接続の状況によらず、ソケットに受信データが届いているときは True 届いていないときは Fales を返してきます。
どうすれば書き込みの準備が整っていることを調べられるのですか?
648デフォルトの名無しさん:05/01/24 10:53:15
>>644
なんの誤爆だ?
649デフォルトの名無しさん:05/01/24 12:02:33
書き込みは必要ない、送信しきったかどうかで判断するといいよ
確かあそこselectの仕方がオカシイ気がした
650デフォルトの名無しさん:05/01/24 12:10:32
コンボボックスに値をセットする際、Object部に数値を保持させようとしています。(無理やりですが)
取得する際は
Integer(Self.Items.Objects[Self.ItemIndex])
でとれることがわかっているのですが、セットするときに
AddObject('あ',Object)
のObjectに数値をうまくセットする方法はどうしたらよいのでしょうか?
651デフォルトの名無しさん:05/01/24 12:22:27
型が合うようにキャストするだけ

var
iData: Integer;
begin
iData := 1;
ComboBox1.Items.AddObject('hoge', TObject(iData));
end;
652650:05/01/24 12:36:43
>>651
そっか!
できました
ありがとうございました〜
653デフォルトの名無しさん:05/01/24 12:51:51
なんでTObject型なんだろな、TreeNode.DataなんかはPointerなのにさ
654デフォルトの名無しさん:05/01/24 12:58:52
VCで作られたDLLをDelphiからコールしているのですが
DLL内で非常に時間がかかる処理があるのでCPU使用率が
100%になってしまいます

if not CreateProcess(nil, PChar(aExe), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI) Then
Raise Exception.Create('プログラムの起動に失敗しました');

if AWait then
begin
While WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT Do
Application.ProcessMessages;
end;

上みたいなノリでDLLでも同じようなことができないでしょうか?
655デフォルトの名無しさん:05/01/24 13:04:34
DLL内のコードがいじれないならできない
656デフォルトの名無しさん:05/01/24 13:06:21
スレッド作りゃいいだけ同期は考えな
657デフォルトの名無しさん:05/01/24 13:08:24
RichEditまたはMemoコンポーネントにおいて、
行ごとに文字色を変えるには、どうすればよいのか
ご存知の方、教えてください。よろしくお願いします。
658デフォルトの名無しさん:05/01/24 13:08:48
スレッド内で100%になるなら同じだろ
659デフォルトの名無しさん:05/01/24 13:10:15
>>657
TMemo ではできない
TRichEdit ならできるがそんな使い方はおすすめできない
660デフォルトの名無しさん:05/01/24 13:12:55
そのDLLの関数を呼ぶスレッドのプライオリティ下げりゃ落ちるだろ、処理時間増幅だが
661654:05/01/24 13:14:39
>>655
DLL内部はいじれます
DLLからコールしてる関数は0で正常、それ以外でエラーと定義しているので
エラーコードは必ず0以上と仮定するなら

iRet := -1
while Func1 > -1 do
 Application.ProccesMessages;

でいけそうですかね?

>>656
スレッドはメンドいからパス
662デフォルトの名無しさん:05/01/24 13:15:02
落ちるかどうかはそのときの他アプリの状況にもよるし、100%が95%になっても
本質的に解決するわけでもないし
663デフォルトの名無しさん:05/01/24 13:16:23
>DLL内部はいじれます

ならなんとでもなるんでは。Sleepかませたり
664デフォルトの名無しさん:05/01/24 13:23:40
>657
素直にGDIオンリーでテキストエディタを作りたまえ
665デフォルトの名無しさん:05/01/24 14:40:27
DLLで思い出したよぉおッッ!!!
Explorer.exeにインジェクションとかやりてぇええええ
666デフォルトの名無しさん:05/01/24 16:04:34
パッケージの使い方を教えてください。

mylib.pasというユニットを作ってmylibs.bplというパッケージを作りました。
C:\Program Files\Borland\Delphi6\Projects\Bplにmylibs.bpl, mylibs.dcpがあります。
mylibs.bpl以外のソースやプロジェクトファイルを削除してIDEにmylibs.bplを登録しました。

サンプルプロジェクトのUnit1でuses mylib;すると
mylib.dcuが見つかりませんというエラーがでます。
bplがあれば元のソースはいらないと思うのですが何が悪いのでしょうか?
667デフォルトの名無しさん:05/01/24 16:57:16
>>666
dcuは要る
668666:05/01/24 18:20:14
>>667
そうなんですか・・・
ではリリースに必要なのは*.bpl, *.dcu, *.dfmということで
ライブラリの開発・テストと使用を厳密に分けたい場合は
こんなディレクトリ構成にすればいいですか?

mylibs\
  lib\ // *.bpl, *.dcuの生成先。*.dfmを..\source\から手動でコピー。ユーザーはこのディレクトリだけを参照する。
  sample\ // サンプル(..\lib\*.bplを使う)
  source\ // パッケージのソースファイル(*.pas, *.dfm)、プロジェクトファイル
  test\ // ライブラリ開発時のテストプロジェクト。(..\lib\*.bplを使わずにプロジェクトに..\source\*.pasを直接登録)
669デフォルトの名無しさん:05/01/24 18:40:02
>>660
落ちない。知ったか死ね。

>>661
ついでにお前も死ね。
670デフォルトの名無しさん:05/01/24 18:48:37
不機嫌なヤツだなー
かわいそうに。もしかしてD2005使ってた?
 私の使用している Delphi はいまだに Ver5 なので
 http://www.bekkoame.ne.jp/~itotaka/ で公開されている Shell Component Library
Version 0.96 を使っております。
 このソースを見て次のような疑問にぶつかってしまいました。

 TShellTreeView の public な関数である TShellTreeView.Undo は ShellCtrls.pas で
function Undo(Index: Longint = -1): Boolean;
のように宣言されていますが、サンプルプログラム(MainFrm.pas)を見ると

procedure TDemoForm.UndoButtonClick(Sender: TObject);
begin
 ShellTreeView.Undo;
end;

のように引数無しで使用されていて、もちろんコンパイルも通ります。しかし
ShellCtrls.pas を見ても TShellTreeView.Undo が overload されている形跡はあり
ません。どうしてこれでよいのでしょうか。
 大変レベルの低い質問かもしれませんが、ご教示いただけたら幸いです。
672デフォルトの名無しさん:05/01/24 22:02:15
>>671
ヒント:
Longint = -1
673デフォルトの名無しさん:05/01/24 22:05:51
function Undo(Index: Longint = -1): Boolean;
は Undo; 呼び出しできる、Undo(-1)と同等

function Undo(Index: Longint): Boolean;
は Undo; 呼び出しできない


{宣言部}
function Undo(Index: Longint = -1): Boolean;

implementation
{実装部}
function Undo(Index: Longint): Boolean;

は 前者と同じ

(ヘルプ参照>パラメータ:デフォルト値)
674デフォルトの名無しさん:05/01/24 22:25:09
exeに別のexeから特定の文字列を埋め込み、それを起動時に読み込んで
動作に反映させたいと思っています。どのようにすれば良いでしょうか。
よろしければご教授ください。
675デフォルトの名無しさん:05/01/24 22:44:48
イミワカリマセン
その文字列は何処にあって、起動時読み込むと言うが、何を対象としているのか
676674:05/01/24 22:46:15
分かりにくくてすみません。
設定を外部に保存せずにexe自体に保存したいと思っています。
起動時にはその設定部分を読み込みたいと思っています。
677デフォルトの名無しさん:05/01/24 22:58:16
プロジェクト|オプションのバージョン情報で埋め込んでGetFileVersionInfoで取る。
後はあまり難しく考えずに
var msg: String = '$INFO$埋め込みたい文字列$';
とかやってexeを開いて$INFO$*$のパターンを検索するとか。
678671:05/01/24 23:03:17
>>672,673
ありがとうございます。なるほど、そういうものなのですね。
679デフォルトの名無しさん:05/01/24 23:10:24
> 設定を外部に保存せずにexe自体に保存したいと思っています。

動作中にこんなことをしたいのなら無理
680デフォルトの名無しさん:05/01/24 23:31:30
ini ファイルとかレジストリとかなんのためにあるか考えると、exe のなかに動的に
何かを保存することはできないのでは
681デフォルトの名無しさん:05/01/24 23:39:56
レジストリ使う奴はアホ
682デフォルトの名無しさん:05/01/24 23:44:32
そんなことでアホかどうか判断するヤツはアフォ
683デフォルトの名無しさん:05/01/24 23:48:52
exeと同じ場所にini作る香具師はアホ
HKEY_LOCAL_MACHINE以下にレジストリキー作る香具師もアホ
684デフォルトの名無しさん:05/01/24 23:51:45
そんなことでアホかどうか判断するヤツはアフォ
685Delフサギコ ◆A6VzDeLphI :05/01/25 00:31:41
 ∫,,,,,,,,,∧,,∧  exeと同じ場所にini作る場合は
⊂,,,,,,,,,つ,,゚Д゚ミつ  gethostnameでホスト名を得て
           ホスト名.iniとしておけば
         UNCとかでexe呼び出ししても
        設定がマシン別になって幸せになれる?かな
686デフォルトの名無しさん:05/01/25 00:38:23
そろそろ別の質問いこうか
687デフォルトの名無しさん:05/01/25 01:34:38
定型データ、例えば2chのdatを読み込んでひとまとまり毎に配列にしまうにはどうすればいいですか
すげー基本だろうけどわかりません
688デフォルトの名無しさん:05/01/25 01:38:37
例えが悪いので答えられない
689デフォルトの名無しさん:05/01/25 01:44:59
自分でも何が言いたいかよくわからないので出直してきます
690647:05/01/25 02:28:36
>>649
亀レスですみません。
ありがとうございます。
それで行きます。
691デフォルトの名無しさん:05/01/25 03:00:35
おまいらの為に俺がなんでも作ってあげよう
何がしたいのか言ってみ
692デフォルトの名無しさん:05/01/25 03:43:19
>>691
ありとあらゆる事をしたい。
何でも出来るアプリを作ってくれ。
693デフォルトの名無しさん:05/01/25 08:48:34
>>691
おなにー
694 :05/01/25 09:47:33
>>691
Winny3
695デフォルトの名無しさん:05/01/25 10:04:12
>>691
Form1のButton1をクリックすると
下着姿の森公美子が俺の家にやってくるアプリをお願いします。
696デフォルトの名無しさん:05/01/25 10:18:52
>>691
http://pie.bbspink.com/test/read.cgi/erog/1032797915/271-272n
のT3233310.DrawPictureの実装をお願いします
697デフォルトの名無しさん:05/01/25 15:36:30
文字列をJIS X 0201形式に変換してバイトデータとして送りたいのですが
皆目検討も付きません

テーブル表を作って
for i := 0 to Length(sData) -1 do
begin
 if sData[i] = $41 then bData := $41
 else if sData[i] = $42 then bData := $42
end.......

とやるしか方法はないのでしょうか
end;
698デフォルトの名無しさん:05/01/25 17:09:02
TComboboxについて
@TComboboxのリスト内の項目数はどうやって取得するのでしょう?
A文字列入力後、OnExit時にその文字列がリストにある場合OnSelectへ遷移するのですが、
 OnExit内でOnSelectに遷移するかどうか判断できないものでしょうか?
 (OnExit時点ではItemIndexがきちんと入っていないようなので・・・)
699デフォルトの名無しさん:05/01/25 17:14:09
>>698
TComboBox.Items.Count
TComboBox.Items.Indexof(文字列)でどうだろう
700デフォルトの名無しさん:05/01/25 17:30:26
INIの変わりにXML使ってる人いる?
使ってる人は、どんな感じですか?
701698:05/01/25 17:47:45
>>699
できました!
ありがとうございます
やっと仕事が進められます(泣

3時間も悩んでしまった自分(鬱
702デフォルトの名無しさん:05/01/25 19:55:03
Del 7 Proで EmbeddedWbを使うにはどうしたらいいでしょうか?
703デフォルトの名無しさん:05/01/25 20:12:56
自作のソフト、exeと同じ場所にini作るようにしてるんですけど
どなたか>>683がなぜダメなのか補足していただけませんか
704デフォルトの名無しさん:05/01/25 20:19:49
>>708
Winのユーザーごとに設定保存しろってことでしょ
705デフォルトの名無しさん:05/01/25 20:38:39
>>700
INIファイルの代わりに使うのは面倒。
オブジェクトを丸ごと保存・読み出しする仕組みの備わってる言語なら結構便利かも。
DelphiってTXMLStreamみたいなのはないのかな。
xml.WriteComponent(Data)できたら嬉しいんだけど。
706デフォルトの名無しさん:05/01/25 20:40:15
>>703
アプリのデータを保存するのにレジストリ使う場合は
HKEY_CURRENT_USER\Software\<アプリ名>
に保存する。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%B9%A5%BF%A5%A4%A5%EB%A5%AC%A5%A4%A5%C9%5D%5D#content_1_12
707548:05/01/25 20:51:17
今更感たっぷりですが、皆様ありがとうございます。
708デフォルトの名無しさん:05/01/25 20:53:40
レジストリ使う奴氏んで
使うんならアンインストーラー付けてちゃんとクリーンにしてくれな
709デフォルトの名無しさん:05/01/25 21:14:39
>>697
shift_jis → iso-2022-jp じゃなくて、全角を半角にしたいんですよね。
LCMapString API を使う。
710デフォルトの名無しさん:05/01/25 21:14:50
どうして? 使われないんだから、放置でもよくないか?

と煽ってみる(藁
711デフォルトの名無しさん:05/01/25 21:25:57
文字形式変換なら、perlからの移植ソースでjconvart.pasとか言うのがどっかにある
あと、持ってる本で「Delphiで作る拘束CGI」という本にも、色々ルーチンがあったな
形式規則が理解出来ちゃえばなんて事無いんだけどね
712デフォルトの名無しさん:05/01/25 21:27:17
> 自作のソフト、exeと同じ場所にini作るようにしてるんですけど

いいとおもうけど?
713デフォルトの名無しさん:05/01/25 21:29:32
そんなときはアレですよ
そのなんかのフリーソフトが使ってるレジストリと同じキー使って、自分もフリーで公開する
714デフォルトの名無しさん:05/01/25 21:32:18
でも誰も使ってくれない(笑
715デフォルトの名無しさん:05/01/25 21:34:41
アプリ設定だけならいいけど、>704 の様に個別だと、
ユーザー毎にセクション作らなきゃいかん。中身他人にも見られるし。
716デフォルトの名無しさん:05/01/25 21:56:49
>>715
HKEY_LOCAL_USERならユーザーごとに独立してるしファイルで持つにしても各ユーザーディレクトリのApplicationDataに入れとけばいいだけじゃ?
717デフォルトの名無しさん:05/01/25 22:03:34
ツールボタンの並び替えを行いたいのですが

ToolButton1.Left := 100;

こんな感じでやると位置は変わるのですが
ボタンをクリックするとVisibleとかEnabledがめちゃくちゃになりバグります。
やり方が間違ってるのでしょうか?
718デフォルトの名無しさん:05/01/25 22:07:31
>716
iniに対して言ってるんだよ、いちいち・・・..ボケ
719デフォルトの名無しさん:05/01/25 22:18:57
>>718
はいまだにWin3ユーザだとみた
720デフォルトの名無しさん:05/01/25 22:37:29
今のマシンでWin3.1動かしたら軽くて軽快だろうな。すぐ博士登場するけど
721デフォルトの名無しさん:05/01/25 22:40:38
Win.ini使えばいーじゃん、今時使ってる奴居ないから被らないぞ
722デフォルトの名無しさん:05/01/26 00:23:18
>>720
メモリ大杉でブートできないかも
723デフォルトの名無しさん:05/01/26 01:11:37
そこでVirtualPCですよ
てかそのまえにPC98版のWinしか持ってねーや
724デフォルトの名無しさん:05/01/26 01:17:58
超どうでもいいんだけどさ!
自作ソフトウェアをダウンロードしてもらったりその感想貰ったりするのって
すげぇええぇえ嬉しいのね!
725デフォルトの名無しさん:05/01/26 01:20:33
要望とかうざいけどな
726デフォルトの名無しさん:05/01/26 01:24:56
>>725
人間が鍛えられるよな。> ユーザからの要望
727デフォルトの名無しさん:05/01/26 01:27:01
むかしDelphi4使ってたんですが、
なにを血迷ったかDelphi 2005 Proを買ってしまいました。
お金ある時にはがき来たもんですから。。。

ところで、UNLHA32を簡単に使いたいんですが、
2005でも使えるコンポーネント、またはユニットありませんかね。。。
728デフォルトの名無しさん:05/01/26 01:37:09
2005ってD7付いてくるの?
729デフォルトの名無しさん:05/01/26 01:41:06
宣言してコマンドラインっぽく呼び出すだけだからな…
730デフォルトの名無しさん:05/01/26 01:46:24
>>727
「Common Archivers Library - 統合アーカイバ・プロジェクト 開 発 室」のは?
Delphi 2005 Proで使えるかは知らないけど。
731デフォルトの名無しさん:05/01/26 02:22:52
「バグ大杉」って、プロレスラーの名前みたいじゃね?

バグゥー大杉ー、2005ポンドー、某ランド所属ー。
732デフォルトの名無しさん:05/01/26 02:36:33
>729
なんとなくできそうですけど、
エラーになった時点でお手上げ

当方その程度のスキル・・
733デフォルトの名無しさん:05/01/26 03:25:37
あなたのレベルであっても、何をして、何のエラーが出たかぐらい書く事出来るでしょ?
734デフォルトの名無しさん:05/01/26 03:40:39
エラー報告するために使ってる訳でもなし・・・
735デフォルトの名無しさん:05/01/26 03:52:11
意味不明だが、掲示板は初めてか?
736デフォルトの名無しさん:05/01/26 04:05:07
>>717
単純に入れ替えをするだけなら、これで出来ましたけど。
TForm1.Button1Click>ToolButton2.Left:= -ToolButton1.Left;
TForm1.Button2Click>ToolButton1.Left:= ToolButton2.Left;
737デフォルトの名無しさん:05/01/26 04:07:23
ほっといてやれよ。そのうち自分で気付くから。
738デフォルトの名無しさん:05/01/26 04:09:41
忙しいUIだな。使いづらそう
739デフォルトの名無しさん:05/01/26 04:12:42
うむ、ボタン位置が変わったら使い慣れしない人が殆どだろう
740デフォルトの名無しさん:05/01/26 09:42:59
Action.ShortCutにCtrl+/割り当てても呼び出せないんだけどそういうもの?
741デフォルトの名無しさん:05/01/26 11:39:15
Delphi 7 Proで 
EmbeddedWbを使うにはどうしたらいいでしょうか?
インスコしようとすると
[エラー] IEUtils.pas(49): 未定義の識別子 : 'Unassigned'
[エラー] IEUtils.pas(52): 未定義の識別子 : 'VarArrayCreate'
[エラー] IEUtils.pas(53): 未定義の識別子 : 'VarArrayLock'
[エラー] IEUtils.pas(53): ポインタ型が必要です
[エラー] IEUtils.pas(54): 未定義の識別子 : 'VarArrayUnlock'
[エラー] IEUtils.pas(63): 未定義の識別子 : 'VarIsArray'
[エラー] IEUtils.pas(64): 未定義の識別子 : 'VarArrayHighBound'
[致命的エラー] embeddedwb.pas(32): 'IEUtils.pas' ユニットはコンパイルできませんでした
と出るんですが

Delphi6Personalだと問題無くインスコール出来ました。
742デフォルトの名無しさん:05/01/26 11:48:58
WWW
743デフォルトの名無しさん:05/01/26 12:35:26
いいかげんうるせぇなマルチ野郎
744デフォルトの名無しさん:05/01/26 15:36:20
KOLをのフォーム上に通常のソケットコンポーネントを置いたのですが
未定義の識別子となってしまいます。KOLのフォーム上で利用するには
何かしなければならないのでしょうか。
745デフォルトの名無しさん:05/01/26 15:41:28
なんでKOLなんか使うんだよ
746デフォルトの名無しさん:05/01/26 15:56:57
KOLのソースを持っていて読めるて改良してフィーdバックできるなら使え、
使ってくれ。コメントだけでも良いぞ
747デフォルトの名無しさん:05/01/26 16:14:11
そんなレベルじゃないだろ >>744 をみれば・・・
748デフォルトの名無しさん:05/01/26 16:16:35
ここの連中は教える気ねーよな。
相手が分からないと分かっててわざと分からない事を言ったり
嫌味ったらしくグダグダ書いたり。

とか言いつつ俺はKOL使った事ないから教える事はできないけどw
749デフォルトの名無しさん:05/01/26 16:18:05
>>746
日本語で書けよ
お前アホだろ
750デフォルトの名無しさん:05/01/26 16:51:13
KOL使うのってExe小さくしたからだろ? それでソケット*コンポ*を使うのが分からんところだな
751デフォルトの名無しさん:05/01/26 17:32:32
>>748
(存在が)くだらないスレですから。
752デフォルトの名無しさん:05/01/26 17:50:34
>>744
マジレスすると、KOLを使うな。
753744:05/01/26 18:05:23
皆さんレスありがとうございます。

>>752さんの言う通り、KOLを使うのはやめようと思います。
私には扱うのも難しかったですし(・ω・`)
それではまたヾ(´・ω・`)ノ
754デフォルトの名無しさん:05/01/26 18:20:15
>>741
Variantの宣言かけ

以上
755デフォルトの名無しさん:05/01/26 18:31:02
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
756デフォルトの名無しさん:05/01/26 19:59:21
いいかげんこのテンプレ変えたほうがよくない?
「なにがわからないのか」がわからない質問者なんかに答えることなんてできないぞ。
757デフォルトの名無しさん:05/01/26 20:06:50
このスレをより良くしたいと思ってるなら今すぐ消えてくれ。
758デフォルトの名無しさん:05/01/26 21:04:19
数学駄目な俺に三角関数?とかいうの教えてくれ
放物線ってどうやって書くのか
759デフォルトの名無しさん:05/01/26 21:15:53
>>758
数学だめでもExcel出来るべ?
760デフォルトの名無しさん:05/01/26 21:19:56
代案厨乙
761デフォルトの名無しさん:05/01/26 21:43:47
不親切なインターネットですね
762デフォルトの名無しさん:05/01/26 21:55:09
つーか放物線に三角関数なんていらねーだろ。
小学生?(放物線は中学で習う)
763デフォルトの名無しさん:05/01/26 22:24:06
>>760
なんか最近代案厨というのが流行っているのか
764デフォルトの名無しさん:05/01/26 22:58:31
代案に過剰反応する変なのがいるんだよな
765デフォルトの名無しさん:05/01/26 23:00:30
Del厨が最近不機嫌なのはD2005がゴミだとわかってきたからじゃないの?

残念!!!!!!!!!!
766741:05/01/26 23:46:29
>>754
答えていただきありがとうございます

Variantの宣言とは どこに何を付け足したらいいでしょうか?
理解できなくてすいません...
767デフォルトの名無しさん:05/01/27 00:42:18
ふぁ〜ぁ おまいら眠くなってこないか?
768デフォルトの名無しさん:05/01/27 08:33:27
>>766
( ゚Д゚)
769デフォルトの名無しさん:05/01/27 10:32:52
>>756
回答する義務はないよ。
770 :05/01/27 10:50:01
じゃあただの荒しか
771デフォルトの名無しさん:05/01/27 10:55:01
は?
772デフォルトの名無しさん:05/01/27 11:00:23
苦だスレもついに寝たスレ化したか・・・
773デフォルトの名無しさん:05/01/27 11:01:28
まともな初心者なんかいなくなったからだね
774デフォルトの名無しさん:05/01/27 11:02:37
ttp://pc5.2ch.net/test/read.cgi/tech/1062422335/l50
こっちが真の初心者スレになってるからな。
775デフォルトの名無しさん:05/01/27 11:11:35
>>773
全部初心者に押し付けるなんて凄いね。
あ、なるほど。君みたいな初心者が増えたのなら仕方ないね^^;
776デフォルトの名無しさん:05/01/27 11:17:40
>>775
初心者質問なんかここ数日ないだろ? レベル低い質問と初心者質問とは違う

最近のDelphiに嫌気さしてユーザ辞めてく人が多いのに、入門者がいないんで
この板の厨房スレも閑散としてるわな。
777デフォルトの名無しさん:05/01/27 11:24:40
人少なくなって、回答者の質も激さがり・・・・これが大きい
778デフォルトの名無しさん:05/01/27 12:19:07
フリーの6を使ってる人はもう脱初心者だろうし
D8からはDelphiに飛びつく人はDel房だけだろうし
.NETするならVCL.NETなんかよりFrameWorkのオブジェクト覚えた方がいいし、
バージョンアップは期間2段階設けて値段変わるし、
前Verのバグはほったらかしで新Ver出すし、
業界じゃDelphi開発するする企業は更に減っていくだけだし、
結局ホビーユーザー向けに成り下がってるのにエンタープライズ版なんかあるし、
ヘルプは手抜きだし、
日本HPも手抜きだし、
電話対応悪いし、
声がオタクっぽいし、
風呂の温度がずれてるし、
ヘソのピアス跡が痛々しいし、
中だしは拒否するし、
マットは下手だし、
たまに時短するし、
779デフォルトの名無しさん:05/01/27 13:38:22
うーん・・・w
780 :05/01/27 13:45:04
ほんとにもう駄目かもわからんね
del5だけで業界生きてきた俺には次何すりゃ良いのさ?
やっぱC++とかビジュアルC・・・? つーかそこらへんの違いもわからねぇ・・・
781デフォルトの名無しさん:05/01/27 13:50:07
>>780
>ほんとにもう駄目かもわからんね

駄目でしょう。長角出るまではなくなることはないにしても。
782デフォルトの名無しさん:05/01/27 13:50:59
>>780
俺Delphi初心者だけどCとC++とVC++は書けるぞ。
783デフォルトの名無しさん:05/01/27 13:55:34
だから、何?
784デフォルトの名無しさん:05/01/27 13:59:04
>>776
あなたの中で「初心者」はどのように定義されてるのですか?
785デフォルトの名無しさん:05/01/27 13:59:46
厨は新しい語句を作りたがるよね。
何だよ「初心者質問」って。(´゚c_,゚`)
786デフォルトの名無しさん:05/01/27 14:00:45
このスレだけで1本のフリーソフトが作れたので感謝してます。
787 :05/01/27 14:01:04
>>782
俺はdel5一本でやってきたのさ。
昔にCはやったことあるけどいまいち出来てなかった。
で、数年後del5に救われた俺だがそれも消えつつあるのか。
788デフォルトの名無しさん:05/01/27 14:01:46
>>784
>>785
自分で考えたら。スレ違いだけど
789デフォルトの名無しさん:05/01/27 14:03:49
Del5だけで生活できたんなら、C# だって C++ だってできそうなものだが・・・
790デフォルトの名無しさん:05/01/27 14:16:34
ほんとだ、ここが最後の砦だったのに・・・・ついにネタスレになったか・・・・
791デフォルトの名無しさん:05/01/27 14:34:23
俺は2時間それなりに楽しめて3回出来れば◎
大抵2本だけど流れもあるし楽しめればそれも◎
792デフォルトの名無しさん:05/01/27 16:09:54
>>766
エラーの出てるUnitのusesにVariantsを書け。
usesが見つからなかったらUnit毎に検索しろ。
検索はCtrl+Fだ。出てくるダイアログの入力場所に"uses"のタイプしろ。
タイプの仕方がわからなかったら、パソコン教室に通え。

以上
793デフォルトの名無しさん:05/01/27 16:16:18
まぁガンバリナ
794デフォルトの名無しさん:05/01/27 17:22:15
>>736
ボタンの位置は変わるのですが、enabledやvisibleがめちゃくちゃになります。

ToolButtonを3つ作って、ToolButton1のEnabledをFalseにして
procedure TForm1.ToolButton3Click(Sender: TObject);
begin
ToolButton1.Left := toolbutton3.Left;
end;
を実行すると位置は変わりますが、ボタンをクリックすると
ToolButton1とToolButton2のEnabledがFalseになります。
どうしてですか?
795デフォルトの名無しさん:05/01/27 17:24:38
ほんとのToolbar32クラスはカスタマイズ可能なんだけど、VCLはそれをさぼってるんだよな
796デフォルトの名無しさん:05/01/27 17:39:20
>>794
自分は全削除・全追加で逃げた。
797デフォルトの名無しさん:05/01/28 02:13:45
NameA
MailA
commentA(ここが複数行の場合がある)
NameB
MailB
commentB
・・・
のように続くデータを繰り返し処理するときはどうすればいいですか
途中が複数行になる場合があるのでNameをTstrings.Lines[i*3]とかで取得できません・・・
798デフォルトの名無しさん:05/01/28 02:17:20
複数行になってるかどうかどうやって知ることができるの?
それが分かればかいけつなんじゃないの?
799デフォルトの名無しさん:05/01/28 02:17:26
>>797
繰り返し、どうしたいの?
「複数”行”」って、どういう意味?
800デフォルトの名無しさん:05/01/28 02:26:21
>>797
前もって行数を指定しておく
NameA
MailA
CommentCount=3
comment1
comment2
comment3
NameB
MailB
CommentCount=1
commentB
・・・

Commentを一行にまとめる。Comment := TStringList; Comment.CommaText := lineで取得。
NameA
MailA
comment1,comment2,comment3
NameB

コメントの終端を決めておく。ただし"[ENDOFCOMMENT]"というコメントを入力されると誤動作する。
NameA
MailA
comment1
comment2
comment3
[ENDOFCOMMENT]
NameB
801デフォルトの名無しさん:05/01/28 02:32:20
自分でデータ構造考えろ
たとえば
NameA[#0]MailA[#0]commentA[#0]NameB[#0]MailB[#0]commentB[#0][#0]....NextEec
当然バイナリとして扱う、テキスト定型に展開する処理も必要
あくまで一例であってどういう構造にするかは作者の勝手
802797:05/01/28 02:33:57
レスありがとう、基本的にデータの構造は変更しない前提で悩んでましたが
このままだとどうしようもなさそうなので構造から変えることにします
803デフォルトの名無しさん:05/01/28 08:37:38
Labelを使って右から現れて左へ消える、
流れる文字列を表示するにはどうすればいいですか?
ニュースの字幕みたいなことをしたいんですが…。
804デフォルトの名無しさん:05/01/28 09:35:45
TStrings[n] := TStrings[n] + 'っうぇうぇ'; としたらリストのインデックスが範囲を超えてると言われました
文字列の末尾にただ連結させたいんですがどうしたらいいのでしょうか
805デフォルトの名無しさん:05/01/28 10:15:46
Delphi2005 はかなりヤバいっすか?
Delphi8 にしといた方がいいっすかね…。
まだ買えるのかな、Delphi8。
806デフォルトの名無しさん:05/01/28 10:19:14
>>803
ひとつの手段としては、タイマー使ってLeftを-1すれば良い
807デフォルトの名無しさん:05/01/28 10:33:02
>>804
Count-1 を使えば? n が駄目なんだよ
808デフォルトの名無しさん:05/01/28 10:36:16
>>803

Marquee Delphi でググってごらん、たくさんコンポがあるよ
809デフォルトの名無しさん:05/01/28 10:38:56
>>804

ぜんぜん問題なくできるが?
810デフォルトの名無しさん:05/01/28 10:42:19
>>805
Delphi8 は Delphi.NET 専用だよ。いまどき使ってる人いないよ
811デフォルトの名無しさん:05/01/28 10:46:24
すいません。ボタンの表示色って変わらないんでしょうか?
ColorプロパティがFontの中しか見つからないので。
ホントすいません、お願いします。
812デフォルトの名無しさん:05/01/28 10:49:13
Windows の仕様でボタンの色、テキストの色は変更できません
813デフォルトの名無しさん:05/01/28 10:51:23
TBitButtonならテキストカラーのみ変更できる
814811:05/01/28 11:02:39
>>812,813
ありがとうございます。できないんですねorz
Panel使って「ボタンだ!」って言い切ります。
815デフォルトの名無しさん:05/01/28 11:03:51
>>809 やっぱできません このへんよくわからないで使ってるせい臭いので手直しお願い島す
var aaa: TStringList;
begin aaa := TStringList.Create;
〜〜〜
aaa[n] := aaa[n] + 'っうぇうぇ';
816デフォルトの名無しさん:05/01/28 11:05:52
aaa[aaa.count-1] := aaa[aaa.count-1] + 'っうぇうぇ';
817デフォルトの名無しさん:05/01/28 11:06:38
最初の一行は当然 add してるよね?
818デフォルトの名無しさん:05/01/28 11:07:10
>>815
nの値は何
StringListに1行もデータないんじゃないのか?
819デフォルトの名無しさん:05/01/28 11:10:14
だあああわかりました、空のとこに追加しようとしてたから出来てませんでした
ありがとうございますお騒がせしました
820デフォルトの名無しさん:05/01/28 11:38:52
Image1 := TImage.Create(Self);
Image1 := TImage.Create(Application);
Image1 := TImage.Create(nil)

それぞれの違いを教えてください
821デフォルトの名無しさん:05/01/28 11:44:27
上から Owner がそのハンドラのオブジェクト、Application, なし ってこと。
Owner について知りたければヘルプをどうぞ
822デフォルトの名無しさん:05/01/28 14:22:21
ある文章にある指定した文字列をクリック、もしくはマウスを文字列上に移動させたときに、
その文字列の簡単な説明が書いてあるウインドウ?を表示させたいんですが
どうしたらいいんでしょうか?
823デフォルトの名無しさん:05/01/28 14:26:18
英語と違って、日本語は語句が空白で区切られてないから、難しいだろな
824デフォルトの名無しさん:05/01/28 15:59:28
>>822
なんか漠然とし過ぎっつーか、どういうファイルの文字列の事言ってるの?
825822:05/01/28 16:36:53
小説などのストーリーをまとめるのに使えそうなプログラムを作ろうとしているんですが
その中のキャラクターのプロフィールを表示する画面で
あらかじめ作成しておいた辞書みたいなものに登録した単語の内容を
そのプロフィール画面で簡単に見れたら便利かと思って作ろうとしたんですが・・・。

ファイルはテキストファイルで多くて50行ぐらいの文章です。
辞書に登録する単語数もそれほど多くならないと思います。

826デフォルトの名無しさん:05/01/28 16:41:41
>>805
D2005で.Net切れば現状では一番いい。
なんだかんだ言いながらD2005は使ってる人多い。
Delphi Configuration Managerでさらに使用するのだけ絞れば
さらに安定度は増す。
でも、いろいろやるの面倒な人はD7使っとけ。(D8は論外じゃ!!)
827デフォルトの名無しさん:05/01/28 16:42:35
>>822
onMouseClick or onMouseMoveでポインタの座標上の単語を調べて
動的にフォームを作成して表示、引数にその単語を渡してFormShowで表示

どうもスマートじゃないな・・
828デフォルトの名無しさん:05/01/28 16:53:21
>>822
よ〜わからんが、俺ならこうする。
ヒント出したいコントロールのShowHintをTrueにして、TApplicationEventsをはっつける。
OnShowHintって言うのがあるからそこで説明のヒントを書くべし。
ヒント出したい単語はTStringListやらのクラスで読み込むときになんか目印でもつけとけ。
Hint出すたびに文字列を走査してたんじゃ遅いからな。でも50行ぐらいならそれでもよし。
829デフォルトの名無しさん :05/01/28 18:36:42
文字列を先頭から1文字づつループで取得したいのですが、
以下のコードだと全角・半角が混在した際に正しく取得できません。
MidStr関数しか出てこないのですが、何かほかに適切な関数などあるのでしょうか?

ShNM : String;
cntNM: Integer;

for cntNM := 1 to Length('AAaa') do
begin
ShNM := MidStr('AAaa',cntNM,1);
end;
830デフォルトの名無しさん:05/01/28 18:41:19
やり方は色々だが
Upperなどで大文字にした文字バッファ内で検索して文字位置を得る
それと、検索はPosだろ
831説明下手ですいません:05/01/28 18:43:15
>>827さん
>>828さん

なんとかやってみたいとおもいます
ありがとうございました。

832デフォルトの名無しさん:05/01/28 18:47:45
>>829
やり方はま〜人それぞれとして。
これでやってみな。

var
ShNM : WideString;
cntNM: Integer;
begin
for cntNM := 1 to Length('AAaa') div 2 + 1 do
begin
ShNM := MidStr('AAaa',cntNM,1);
ShowMessage(shNM);
end;
end;
833822:05/01/28 19:01:38
続けてすいません。

ギコナビに似た機能があるので少し調べてみたいと思います。

>>001 ←こういうやつ。
834829:05/01/28 20:01:15
>>830,832
レス有難うございます。

>>832の方法を試してみたのですが、
全角がやはりうまく取得できませんでした。
835829:05/01/28 20:17:17
追記すると、
文字列は英数ひらがなカタカナ何でも入る仕様です。
MidStrだとバイト数で持ってきてしまっているようなので、
WideString型の文字を一つづつ取れる方法は無いのでしょうか?

調べているのですがみつからないです(泣
836デフォルトの名無しさん:05/01/28 20:20:44
なにがやりたいのか良く分からないが
>829の[質問文]だけみると一文字ずつのループはstring[nn]でいいんじゃないの?
特定文字列ならpos、copy、UpperかLowerで駆使しながら繰り返す
マルチバイト文字考慮するなら、それようにすればいい

大文字小文字=マルチバイト文字と勘違いはしてないよね?
837デフォルトの名無しさん:05/01/28 20:21:58
memo.lines.add で文字列を入れると
カーソルが一番下にきてしまいます。
これを一番上にもって来るにはどうすればいいですか?
selstart:=0だめでした。
838デフォルトの名無しさん:05/01/28 20:22:16
StringToWideChar
839829:05/01/28 20:31:26
なんと恥ずかしいというか
↓でなんとかとってこれました。
ShNM := Copy(WideString('AAaa'),cntNM,1);

すすすいません;
840デフォルトの名無しさん:05/01/28 22:22:21
伝票などの入力で使う1行が複数行のグリッドってみんなどうやってる?

フレームで1行つくって動的に行数分生成してってやってるんだけど、激しく重い......orn

グレープシティーのDenpyoManみたいなコントロールがあればいんだけど、
なんかいい作りかたないでしょうか?


841デフォルトの名無しさん:05/01/28 22:44:04
FAQ 日某にあるよ
842デフォルトの名無しさん:05/01/28 22:44:45
> 1行が複数行のグリッド

意味不明
843デフォルトの名無しさん:05/01/28 22:54:03
例えば、
hogehAogeAkgewpkgapkA
この文字列中にある「A」の数を得るには
どうしますか?
844デフォルトの名無しさん:05/01/28 23:11:04
>>841
TIPSの「複数行入力できる StringGrid を作成する」のことでしょうか?
これだったら複数行違いです。

>>842
うまく説明できない。




まずは、このコントロール(?)の説明から教えて・・orn
845デフォルトの名無しさん:05/01/28 23:18:22
>>843
とりあえずこれで動く
効率化とかは自分で頑張れ

var
 Cout: Integer;
begin

end;
846デフォルトの名無しさん:05/01/28 23:20:51
>>843
function GetNumberOfChar(const Str:string; Chr:Char):integer;
var
  p:PChar;
begin
  result := 0;
  p := StrScan(PChar(Str),Chr);
  while (p<>nil) do
  begin
    Inc(result);
    p := StrScan(p+1,Chr);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToStr(GetNumberOfChar('hogehAogeAkgewpkgapkA','A'));
end;
847デフォルトの名無しさん:05/01/28 23:21:45
セル内文字をマルチラインにしたいのか?

おれも>842に同意。グリッドに対して「行」はグリッドの行を指す事になる。
848845:05/01/28 23:23:57
途中で送信しちまった…スマン
846氏の方法と概ね同じ
849デフォルトの名無しさん:05/01/28 23:39:18
>>847
ごめんなさい。ごめんなさい。ごめんなさい。
セル内の文字を複数行(マルチライン)ではないです。
こんな感じです。
ttp://www.hitachi-system.co.jp/aptage/g03/
850デフォルトの名無しさん:05/01/28 23:44:06
DBならコントロールグリッド。←これ曲者コンポだが

フレーム作って独自でやってるとか書いてあるが、その実装方法が問題なんじゃない?
パネルを動的に作ってやったのあるが普通に重くは無い。
851デフォルトの名無しさん:05/01/28 23:46:08
>>843
Length(s) - Length(StringReplace(s, c, '', [rfReplaceAll]))
852デフォルトの名無しさん:05/01/28 23:48:16
TScrollBoxにTStringGridをおいているのですが、
Gridから別のコントロールにフォーカスを写して戻すと
ScrollBoxのスクロール位置が0に戻ってしまいます。
ScrollBox.ScrollInViewが呼ばれているのが原因みたいなので、
これを無効化したいのですが、
ScrollBoxを継承してpublicにScrollInViewを定義しなおせばいいのでしょうか?
定義する場所を変えたりしてやったんですがどうもうまくいかないのでよろしければご教示下さい。
853852:05/01/28 23:57:15
すみません書き込んだ直後に見つかりました…
AutoScrollInViewの方をオーバーライドすればよかったみたいです。
854デフォルトの名無しさん:05/01/29 00:59:59
>>839
おいおい、ちゃんと意味わかって使えよ。
StringとWideStringの違いはわかってんのか?
855デフォルトの名無しさん:05/01/29 05:29:20
var
  List : TList;
  pi : PInteger;
begin
  New(pi);
  pi^ := 10;

  List := TList.Create;
  List.Add(pi);

  //中略

  List.Free
end;

この場合ってPIntegerに確保したメモリはリストが削除される時に
Disposeしてくれるんでしょうか?
856デフォルトの名無しさん:05/01/29 05:47:39
piがうまく開放されるかどうか?
心配するな、うまい事行ってる、あとは
心配するな
857デフォルトの名無しさん:05/01/29 06:22:06
されないだろ
明示的にDispose(PInteger(p))しないと
858デフォルトの名無しさん:05/01/29 06:23:47
嘘言うなよ
TListが管理するのは、ポインタアドレスでポインタの先は何もしないだろ
Delete時にDisposeしな
859デフォルトの名無しさん:05/01/29 09:58:12
case文で
1 :
2 :
それぞれのところに複数行ずつ処理を書きたいときはどうすればいいですか
860デフォルトの名無しさん:05/01/29 10:03:25
1:
begin

end;
2:
begin

end;
861デフォルトの名無しさん:05/01/29 10:54:26
そのまんまでよかったんですねありがとうございます
862デフォルトの名無しさん:05/01/29 12:51:31
TThreadから派生したクラスで、FreeOnTerminateプロパティを
Create時やExecuteの先頭でTrueにしている場合、

TMyThread.Create(False);

だけ書いても、Executeで永久ループ等無ければ
ちゃんと破棄されてリーク等はありませんよね?
863デフォルトの名無しさん:05/01/29 13:06:39
気になるならMemCheck辺りで確かめとけ
864デフォルトの名無しさん:05/01/29 13:29:50
>>863
MemCheckって初めて使った。
ちゃんと破棄されていたようです、ありがとう。
865デフォルトの名無しさん:05/01/29 13:36:30
ディレクトリコンボボックスで、準備の出来ていないドライブをクリックした時に
I/Oエラーを表示させないようにするには?OnClickイベントではダメみたいでした。
866デフォルトの名無しさん:05/01/29 13:38:06
あっ!ドライブコンボボックスでした!
867デフォルトの名無しさん:05/01/29 13:47:30
>>862
心配なら、FreeOnTerminateを明示的にtrueにしておけ
868デフォルトの名無しさん:05/01/29 13:52:38
>>840
1. DBCtrlGridを使う。しかし挙動がおかしかったり、工夫をしないと載せることができない
コントロール(TDBLookupComboBoxなど)があったりして、ちょっと苦労するかも。
2. DBAltGrid
ttp://www.quasidata.com/
3. Developer Express ExpressQuantumGrid Suite
ttp://www.devexpress.com/
869デフォルトの名無しさん:05/01/29 14:27:13
>>865
TDriveComboBox.onChangeイベント内で例外捕捉

try
DirectoryListBox1.Drive := DriveComboBox1.Drive;
except //例外処理
showmessage('エラーれすよ');
end;
870865:05/01/29 14:49:49
>>869
有難う御座います。でも、ここでエラーしないようです。どうも
ここでは、まだドライブが変更されていないので
>>DirectoryListBox1.Drive := DriveComboBox1.Drive;
は成功するようです。

871865:05/01/29 15:07:15
あっまた間違えた、え〜っと、
TDriveComboBox.onChangeイベントは発生しないみたいです。
onClickのところで処理するしかないようです・・・・
872デフォルトの名無しさん:05/01/29 19:08:04
>>840
俺はDbAltGridを使用している(翻訳英語でいろいろでも直ぐにサポートしてくれるから)

けど、Gridがいやな人もいるのでそんな人にはDBCloneGridを使用している。
873872:05/01/29 19:09:57
×翻訳英語でいろいろでも直ぐにサポートしてくれるから
○翻訳英語でも直ぐに回答してくれて、サポートしてくれるから
874デフォルトの名無しさん:05/01/29 19:59:33
>>865
DriveComboBox でのシステムエラーのハンドリング
ttp://www.borland.co.jp/qanda/delphi/d0000064.html
875デフォルトの名無しさん:05/01/30 00:05:34
画像ビュアーのサムネイルファイルの構造を考えています
ストリームで
ファイル数
ファイル名長
ファイル名
JPEGバイナリ長
JPEGバイナリ
の様にするつもりだったのですがサムネイル生成後にサムネイルのサイズが変更された場合
ファイルを一番頭から書き直す以外修正方法はないのでしょうか?
アドバイスお願いします
876デフォルトの名無しさん:05/01/30 00:10:55
イミワカリマセン
877デフォルトの名無しさん:05/01/30 00:14:50
複数の値を同時に返す関数って作れますでしょうか?

A := 関数(x1,x2,…);
↑配列
見たいな?
878デフォルトの名無しさん:05/01/30 00:16:08
出来ます
879デフォルトの名無しさん:05/01/30 00:16:49
>>875
新しいサムネイルのサイズが減るだけならそのまま上書きする、
サイズが増えるならそのブロックは放置してファイルの末尾に追加、
放置されたブロックは後から他のデータで再利用できるなら利用する。

あとはサイズが多少増えてもいいように最初からちょっと多めに取っておく。
どの程度のマージンがあればいいのかはかは統計を取ってみて決める。
880デフォルトの名無しさん:05/01/30 00:18:22
う゛ぁr
881デフォルトの名無しさん:05/01/30 00:19:33
>>877
出来ない。レコード・クラス・配列なんかで無理やり複数返すか
関数(var ret1: integer; var ret2: string; out ret3: double);で引数に返したい値をセットする。
882881:05/01/30 00:21:48
>>877
>↑配列
見落としてた・・・
同じ型の配列なら返せる。
スクリプトみたいにいろいろな型の値を放り込んで返すのは無理。
883デフォルトの名無しさん:05/01/30 00:23:32
ばりあんと
884デフォルトの名無しさん:05/01/30 00:25:40
>>879
なるほど
変更後のバイナリで飛ぶ位置を保存すればいいのですね
ありがとうございました
885デフォルトの名無しさん:05/01/30 00:27:16
>>882
ありがとうございます。
886デフォルトの名無しさん:05/01/30 00:32:29
なんだ、人居るんじゃないか。いっぱい沸いてきたな
887デフォルトの名無しさん:05/01/30 02:13:41
人キタ━━━━(゚∀゚)━━━━ !!
888デフォルトの名無しさん:05/01/30 02:33:40
キエタ....
889デフォルトの名無しさん:05/01/30 05:57:34
年末より始めた初心者です。6.0Personal。

実行後にウィンドウサイズを変更すると、いきなり落ちるのはどういった
事が考えられるでしょうか?

内容は「デバッガ例外が発生 〜アドレスFFFFFFFFに対する読込違反」
です。フォームの設定かコードの問題かさっぱり分かりませんです…
890デフォルトの名無しさん:05/01/30 06:13:32
そんなことは無いと思うが、初期生成される全く空のフォームでもなるのか?
891デフォルトの名無しさん:05/01/30 06:21:08
リサイズのイベントが発生してそこで落ちてるんだろ。
怪しげなイベントハンドラにブレーク張りまくってステップ実行。
892889:05/01/30 06:42:11
こんな時間なのにお返事すいません。

>>890
説明がラフですいません。
特定のprocedureを実行した後だけです。
tabシートの中にStringGridを貼り付けていて
その中に検索結果を表示させるだけなのですが、
表示終了後にウィンドウサイズを変更した時落ちるんです。

>>891
リサイズのイベントは拾っていません。
まだ拾ってるイベント自体いくつもありません

893デフォルトの名無しさん:05/01/30 07:02:00
TabSheetやGridは動的に作ってるのか?
検索や表示内容部位は不要でTabSheetやGridを設定してるところ晒してみ
894デフォルトの名無しさん:05/01/30 11:35:30
>>892
StringGrid - tabシート…とだんだんコントロールを外していってシンプルな形にしていって
どれを外したときに落ちるのかを検証して原因を特定汁。
895sage:05/01/30 12:25:42
>>892
それ配列でメモリ確保してないところに値をいれようとしてない?

var s: array of string;
begin
 SetLength(s, 10);
end;

とやってるのに

s[11]:= 'hoge';

とやろうとするとそういう事になった気がする。
実際に上のコードを打ち込むと「インデックスが範囲を超えた」って趣旨のエラー文が出るんだが

for i:=0 to 11
s[i]:= 'hoge';

とかやってると「アドレスが…」というエラー文が表示されて大いに困惑する。
だったはず。

もう一度グリッドのインデックス周り中心にコードを見直してみては?
ほかに配列変数使ってるならそっちも。
896デフォルトの名無しさん:05/01/30 12:26:45
基本的なボケを…orz

あげてしまってすいません。
897デフォルトの名無しさん:05/01/30 14:26:32
>>892
>特定のprocedureを実行した後だけです。
自分で原因書いてるじゃん。
898デフォルトの名無しさん:05/01/30 14:43:32
Indy使ったときに、
インターネットに接続していないと、
ConnectionErrorとかダイアログが出てきますが、
あのメッセージを自分で変更できないのですか?
また、表示させない設定にはできないのでしょうか?
ご存知の方、よろしくお願いします。
899デフォルトの名無しさん:05/01/30 17:25:37
マジか
900デフォルトの名無しさん:05/01/30 19:24:11
ScrollBox1というボックス内で特定の動作をしているときに、カーソルがそのボックスから出ないようにするにはどうしたらいいのでしょうか。
901デフォルトの名無しさん:05/01/30 20:29:23
嫌がらせアプリ書いちゃダメー!
902デフォルトの名無しさん:05/01/30 20:42:05
ClipCursor
903デフォルトの名無しさん:05/01/30 22:38:08
ありがとうございました。
904デフォルトの名無しさん:05/01/31 00:13:02
http://pc5.2ch.net/test/read.cgi/tech/1093654251/
ってスレがあるのに…。
次に書いたらマルチポストって言われるのに…。
905デフォルトの名無しさん:05/01/31 02:19:23
IDE内ではなく、コンパイルしたexeファイル単体で動かすとどうか。
906デフォルトの名無しさん:05/01/31 09:23:35
よーし、おまいら!今日は暇な俺様が常駐してやるからどんな質問でも掛かってきなさい
907デフォルトの名無しさん:05/01/31 10:51:43
Delphi7で
ShellTreeView1.Path:~'C:\Windows';
とすると少し待たされます。どうにかなりませんか?
起動時にパスを選択したいのですが、上のようにすると起動が遅くなるので何とかしたいのです。
908デフォルトの名無しさん:05/01/31 11:56:29
ShellTreeViewを使わない
909デフォルトの名無しさん:05/01/31 12:04:38
ShellTreeView1が選択された時になにかの表示をしている?
C:\Windowsにはファイルがいっぱいあるだろ?それを表示してる処理が遅いとか?

またShellTreeView1の表示はフォルダだけ?
たとえば全ファイルとかなら、TreeViewのアイテムが増えるわけだから、その分遅くなる。
910デフォルトの名無しさん:05/01/31 12:34:44
OpenDialogとかでも同じ事が起こるよね。
911デフォルトの名無しさん:05/01/31 12:48:38
Delphi のせいじゃない
912デフォルトの名無しさん:05/01/31 12:53:53
つまりCPU/HDDが遅いとストレス
913907:05/01/31 13:00:59
どうやらフロッピーにアクセスしていて遅いようだ。
BIOSでフロッピー切ったら速くなったわい。
Delphiのせいのようなんでソースファイル眺めてみるわ。
>908が正解かな、他のコンポーネントも探してみます。
みなさん見当違いのレスありがとうございました。
914デフォルトの名無しさん:05/01/31 13:06:26
逆切れするのは勝手だが、フロッピーなら質問する前にカシャカシャ音がして気付くだろ
それにフロッピーにアクセスしてるのはShellTreeViewじゃないと思うぞ
915907:05/01/31 13:22:42
>>914
別に切れてませんよ。ちょっと人とのコミュニケーションに慣れてないだけです。
私のPCにはフロッピーは付いてないんで、カシャカシャと音は鳴りませんです。
もう少し勉強いたします。ありがとうございました。
916デフォルトの名無しさん:05/01/31 13:28:00
ボタンクリックしたらPageControlにタブ追加したり削除したりするにはどうすればいいですか
ヘルプ読んでもよくわかりませんでした。
917デフォルトの名無しさん:05/01/31 13:30:12
>>915
質問しといて>>913みたいな書き方は異常っぽいから
普通に敬語のままとかにしたほうが良いよ。
918デフォルトの名無しさん:05/01/31 13:31:27
>>907みたいな人とはRealで関わる事がないようにしたいなぁ^−^
919デフォルトの名無しさん:05/01/31 13:33:44
>>907
氏ね。二度と質問するなカス。
てめぇなんかプログラミングやめちまえよ無能。
920デフォルトの名無しさん:05/01/31 14:01:26
ヘルプからの抜擢:ページコントロールの使い方
NewTabSheet =TTabSheet.Create(PageControl1);
NewTabSheet.PageControl :=PageControl1;
921デフォルトの名無しさん:05/01/31 14:17:55
ほっとけば良いんだが矛盾してるし最初の質問の仕方も抽象的で悪い
そもそもフロッピーアクセスでストレス掛かるのは、装置の応答の間であって
この間にガシャガシャとアクセス音がする、装置が付いてなければ起こらない。
更に浅はかなのは、BIOS切って解決って?使うユーザーが貴方だけって事になるし、
アプリとしての品質は悪い。
922デフォルトの名無しさん:05/01/31 14:24:41
俺様が何でも聴いてあげるから、日頃のうっぷんを晴らしなさい。
923デフォルトの名無しさん:05/01/31 14:44:30
>>904
わあ、そんなスレが・・・
924デフォルトの名無しさん:05/01/31 15:42:56
CreateOleObjectでVariantに値を取得して使ってます。
CreateOleObjectに成功したか、Variantの値で判定したいのですが
nilじゃ互換性のない型としてエラーが出ます。
Unassignedで判定すればいいのですか?

var hoge Variant;

if hoge = nil then ×互換性のない型
if hoge = Unassigned then エラーは出ないけどあってるかわからない。
925デフォルトの名無しさん:05/01/31 15:58:05
ヒントじゃ
CreateOleObjectの戻り値はIDispatch
926デフォルトの名無しさん:05/01/31 16:09:08
IDispatch(hoge) = nilですか?
927デフォルトの名無しさん:05/01/31 16:14:00
失敗すると例外発生するわけで、そもそもチェックする必要がない。
928デフォルトの名無しさん:05/01/31 16:16:23
var
dp: IDispatch;
v: OleVariant;
label Ahhh;
begin
dp := CreateOleObject('オナニー');
if dp = nil then goto Ahhh;

v := dp;
// いっぱい愛撫

Ahhh:
// フィニッシュ
end;
929デフォルトの名無しさん:05/01/31 16:31:08
サイズの違う2次元の配列定数を関数の返り値として返したいのですが、
関数の返り値の型をどう定義すれば良いかわかりません。

const array1: array[0..1] of array[0..1] of String = 省略;
const array2:: array[0..2] of array[0..2] of String = 省略;
(省略)
if 条件 then Result := array1 else Result := array2;

こんな感じにしたいのですが、
配列定数で返すのは不可能なのでしょうか。
動的配列に組みなおすのはサイズが結構大きいため
時間がかかりそうなので避けたいのです。
930デフォルトの名無しさん:05/01/31 16:37:26
>>929
自分でType〜endの型定義
Object Pascalは型に(ry
931デフォルトの名無しさん:05/01/31 16:37:41
record/case
932デフォルトの名無しさん:05/01/31 16:43:11
不可能、関数の型決まってる訳でしょ。
ポインタにすればいいけど、呼び出し元でどっちが返ってきてるのか判断するようにしないといけない
933デフォルトの名無しさん:05/01/31 16:47:08
934デフォルトの名無しさん:05/01/31 16:50:25
>>930
array1型とarray2型を定義しても
関数の返り値に指定できるのは1つだけだったと思うのですが。
申し訳無い、始めてまだ1月も経ってないため、
理解できてない部分が多いので勘違いしていたら聞き流してください。

>>931
こう言う場合に record/case 使えばいいのですね。
ありがとうございました、試してみます。
935デフォルトの名無しさん:05/01/31 17:03:23
>>934
array1とarray2を含む独自の型を定義する
あるいは参照渡し(var)で戻り値を得る

便乗質問だけどrecord/caseって何?
936デフォルトの名無しさん:05/01/31 17:19:09
Windowsでディレクトリやファイル名を補完してくれるエディットボックスがありますが
あれをDelphiで利用するにはどうすればいいですか?
937デフォルトの名無しさん:05/01/31 17:27:17
>>935
レコードの一部のフィールドの型を切り替える仕組み。
レコードのヘルプ嫁。
938929, 934:05/01/31 17:30:19
>>931
record/case を試してみましたが (6.0では)
String には使用できないようです。

ですが数値関係には利用できるので半分は問題が解決しました。
ありがとうございました。

String の方に何か方法が無いか record 周り含めて Help を
もうちょっと読み込んで見ます。
939デフォルトの名無しさん:05/01/31 17:34:51
>>937
こんなの初めて知った、どうもです

>>938
ヘルプ読んだところStringは
String[n]とかarray[0..255] of Charで対応できそう
940デフォルトの名無しさん:05/01/31 17:38:14
Cでのunionが入り込んだ構造体を定義するにはめんどくせーぞ
941929, 934:05/01/31 17:41:15
>>939
デストラクタを必要としない型なら大丈夫そうですね。
ありがとうございました。
942929, 934:05/01/31 17:45:15
よく考えたら、
これも時間とメモリサイズのトレードオフになるのですね。
仕方ないか。
943デフォルトの名無しさん:05/01/31 18:12:37
速さを求めるなら1次元にしろよ
944デフォルトの名無しさん:05/01/31 18:26:35
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
945デフォルトの名無しさん:05/01/31 19:46:10
D2005でRAVEを動的クリエイトして動かそうとしています。
んで、DataTextに表示させるTextのことで困っています。
Pageが変わるごとにDataTextに違う値を放り込みたいのですが、どうしてもできません。
DataFiledにReport.CurrentPageを入れれば
ページ数が表示されているので、できるとは思うんですが・・・
1個ずつクリエイトしていては激重なのでどうにかしたいんです。
ヒント下さいお願いします。
946デフォルトの名無しさん:05/01/31 21:15:06
RichEditを継承してコンポーネントを作っています。困ってます。
キー入力を反映させる前にSelTextをある変数に控えておきたいのです。
例えばBackSpaceを押下する場合、OnSelectionChangeなどでは
範囲選択された文字をすべて消してしまってからイベントが発生してしまうので、
当然SelTextの中身は空っぽ。
EN_SELCHANGEなんかを捕まえてもだめだし、もうよくわかりません。
どうにかしてください。
947デフォルトの名無しさん:05/01/31 22:01:43
常にSelTextをある変数に控えておけば?
あなたが問題としてるイベントでこの変数を使えばいい
948デフォルトの名無しさん:05/01/31 22:03:20
「例えば」のくだりからすると、
範囲選択したときに保存すればいいんじゃないの?

そういう「動き」じゃなくて、そういう事をなぜしたいのかという、
用途というか目的を書いた方がよい
949946:05/01/31 22:20:23
レスありがとう。。。

>>947
常に控えるやり方も試してみたんですけど、
「常に控えている」だけに、使う時には既にもう空っぽなのです。。。

>>948
なるほど。
複数回アンドゥ/リドゥ機能を実装したいと考えています。
そこで、「テキストに何かしらの変更かあったとき、どの部分が変更されたか」
を控えておく必要があったのです。

>範囲選択したときに保存
これ、よさそうですね。「範囲選択した時」のタイミングを得る方法さえわかれば・・・
ちょっと調べてみます。。
950デフォルトの名無しさん:05/02/01 00:02:07
RichText2.0なら複数回Undo/Redoに対応してるけど、
DelphiのTRicheEditは1.0なんだよねー。
2.0用のpasファイルはあるのにね。
951デフォルトの名無しさん:05/02/01 00:28:30
昔作ったRichEdit2.0に微妙に対応したUnitを引っ張り出してきた。
http://www.globetown.net/~threadbuilder/RichEdEx.txt

はっきりいってしょぼいので、参考にする程度にしてね。
952デフォルトの名無しさん:05/02/01 01:53:19
var
lIniFile : TIniFile;

***.pas(***):未定義の識別子 : 'TIniFile'


なんで?
考えうる原因を教えてください。
ここに至るまでのセミコロンとかbegin endがおかしいとかそういうオチ?
953デフォルトの名無しさん:05/02/01 01:54:51
指定した場所の色を取得させるにはどうしたらできますか?
954デフォルトの名無しさん:05/02/01 01:59:23
>>952
Uses節にIniFiles を追加。

「へりくだれ」とは言わないけど、もう少し大人な質問の仕方が
あると思う…。
955デフォルトの名無しさん:05/02/01 02:02:29
>>954
すいません&ありがとうございますです…。気をつけます。
956デフォルトの名無しさん:05/02/01 02:12:46
>>953
Canvas.Pixels[x,y]
という話じゃなかったら場所って何か説明しろ
957デフォルトの名無しさん:05/02/01 02:41:22
>>956
すいません、えっとデスクトップとか今画面に開いてるものの色です
958デフォルトの名無しさん:05/02/01 02:47:47
>>957
GetWindowDC、TCanvas、Pixelsあたりを検索してみてください。
959デフォルトの名無しさん:05/02/01 04:53:07
GetWindowDCなら、APIのGetPixelを使った方が良いでしょう。
960デフォルトの名無しさん:05/02/01 07:08:22
実行時にあるフォームのサイズや位置を変更したとき、
それを他のフォームに反映させるにはどうすればいいですか?
961デフォルトの名無しさん:05/02/01 09:38:43
同じようなこと勉強中なので参考までに。
Form1を移動させたりリサイズするとForm2に反映。uses Unit2;
ソース汚くてスマソ。
----------------------------------------------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
procedure FormResize(Sender: TObject);
protected
{WMMoveメッセージの処理}
procedure WMMove(var msg: TWMMove); message WM_MOVE;
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation
962デフォルトの名無しさん:05/02/01 09:39:58
{Form1の位置が移動された時はWMMoveメッセージで}
procedure TForm1.WMMove(var msg: TWMMove);
var
hForm2: HWND;
Rect:TRect;
Form2_Top,Form2_Left,Form2_width,Form2_Height:Integer;
begin
{Form2のハンドルをhForm2へ取得}
hForm2:=FindWindow(nil,'Form2');
{Form2の位置情報をRectへ取得}
GetWindowRect(hForm2,Rect);

{Rect情報からForm2の縦横幅を算出}
Form2_width := Rect.Right - Rect.Left;
Form2_Height:= Rect.Bottom - Rect.Top;
Form2_Top := Form1.Top;
Form2_left:= Form1.Left;

{Form2のハンドル(hForm2)へForm1のウインドウの位置座標(Form1_LeftとForm1_Top)をそっくり送る
縦横幅(Form2_widthとForm2_Height)は現状維持させる}
MoveWindow(hForm2,Form2_left,Form2_Top, Form2_width,Form2_Height,True)
end;

{Form1のサイズが変更された時はonResizeで}
procedure TForm1.FormResize(Sender: TObject);
begin
{Form1の縦横幅(width,Height)をForm2へ反映}
Form2.Width := Form1.Width;
Form2.Height:= Form1.Height
end;

end.
963デフォルトの名無しさん:05/02/01 10:19:43
procedure TForm1.WMMove(var msg: TWMMove);
begin
FormResize(nil);
end;

でいいんでないの?
964デフォルトの名無しさん:05/02/01 10:30:13
procedure TForm1.WMMove(var msg: TWMMove);
begin
Form2.Top := Form1.Top;
Form2.Left := Form1.Left;
end;

か。
965デフォルトの名無しさん:05/02/01 10:53:29
>>951
むかし同じ事をしたことがあるけど、確かlinesをいじるとエラーが出ない?
966デフォルトの名無しさん:05/02/01 17:53:31
>>957
>>958
トン
967デフォルトの名無しさん:05/02/01 17:54:52
>>958
>>959
あり
968デフォルトの名無しさん:05/02/01 19:03:26
ありがとう、って書くのも面倒なんか?
969デフォルトの名無しさん:05/02/01 19:04:56
>>968
うざ
970デフォルトの名無しさん:05/02/01 19:12:36
うざい、って書くのも面倒なんか?
971デフォルトの名無しさん:05/02/01 21:00:56
>>970
972デフォルトの名無しさん:05/02/01 21:06:39
1ヶ月くらいDelphiに粘着してたんですが…ほんとに超初心者です。

procedure TForm1.FormCreate(Sender: TObject);
begin

main_img.Picture.LoadFromFile('title.bmp');

story_lbl.Caption := ('')
name_lbl.Caption := ('')
serihu_lbl.Caption :=('')

end;
この文字列のstory_lblのところは正常に動きますが、name_lblとserihu_lblのところで
“演算しまたはセミコロンが必要です”とエラーが出ます。プロパティはnameのところ
以外変えてません。どうしたらいいでしょうか?
973デフォルトの名無しさん:05/02/01 21:10:15
行末にセミコロン ; 付けろ
974デフォルトの名無しさん:05/02/01 21:17:19
特定のディレクトリ内にあるファイル数を取得するにはどうしたらいいでしょうか?
また、その中で特定の文字列が先頭にあるファイル数を取得するにはどうすればいいんでしょうか?
975デフォルトの名無しさん:05/02/01 21:17:55
>>973
あっ…。ありがとうございます。
激しく基本的なことが抜けてました。
976デフォルトの名無しさん:05/02/01 21:47:28
>>965
出るよ。コメントにも書いてあるよ。
977デフォルトの名無しさん:05/02/01 22:00:55
>>974
ファイル数のカウント方法。
後は何とかなるでしょう。

var
sr:TSearchRec;
I:integer;

begin

I := 0;

if FindFirst('C:\*.*',faDirectory,sr) = 0 then //C\にあるファイルチェック。
begin
repeat

I := I + 1 ; //ファイルを見つけるたびに1づつ足していく。

until findnext(sr) <> 0 ;
end;
FindClose(sr);

end;

978デフォルトの名無しさん:05/02/01 22:02:09
procedure ForApple;
begin

with Apple do
処理;
end;

end;
こんな感じのprocedureがあって、
そこではAppleに関することだけしか処理しません。
なので「with Apple do」が当たり前すぎるのですが、
どうにかしてさっぱりさせる事はできませんか?
979デフォルトの名無しさん:05/02/01 22:14:17
さっぱりの意味がさっぱり分かりません。

こんな風に書ければいいなぁ、という希望例を示さないと。
980デフォルトの名無しさん:05/02/01 22:36:53
with Apple, Orange do
begin
 処理;
end;

とか?
981978:05/02/01 22:37:19
>>979
えーと、こんな感じにしたいです。
procedure with Apple TForm1.ForApple;
begin
処理;
end;

もしくは、
procedure TForm1.ForApple;
with Apple do
begin
処理;
end;

どうですか?
982978:05/02/01 22:39:43
>>980
いやOrangeは出てこないです。
Appleだけだからこその希望です。
983デフォルトの名無しさん:05/02/01 23:07:44
procedure TForm1.ForApple;
begin with Apple do begin
処理;
end end;

このくらいで我慢しといて。
984デフォルトの名無しさん:05/02/01 23:13:31
なにがしたいのかわからん
985978:05/02/01 23:29:19
えーと、意味の分からなさは
くだすれならではという事で許してください。
自分には無駄で省略したい事も、
他人にとってはそうではなかったりするんだなって思いました。

レスありがとうございました。
986デフォルトの名無しさん:05/02/01 23:38:18
やりたかったことは何となくわかるぞ
そして、それは多分無理

オレも省略好きだが、withはバグを生みやすいから気を付けろ
987デフォルトの名無しさん:05/02/01 23:40:54
>>986
最近delwiki?というものを読んだが賛否あるみたいですね
988デフォルトの名無しさん:05/02/01 23:47:38
おれもwithは嫌い
見づらくなるしややこしい
たまに
with xx do
begin
 for ...... do
 begin
 ....
 ....
 with yy do
 begin
  ....
  with zz do
  begin
  ....

超ムカツク
989デフォルトの名無しさん:05/02/01 23:59:09
ピリオドやキャストだらけの式では使う。

with TWinControl(FTmpControl).Controls[i] do
 Caption := Caption + IntToStr(Tag);

TWinControl(FTmpControl).Controls[i].Caption :=
 TWinControl(FTmpControl).Controls[i].Caption
 + IntToStr(TWinControl(FTmpControl).Controls[i].Tag);

一時変数を使え? ごもっとも。
990デフォルトの名無しさん:05/02/02 00:33:41
with文はvb風味の方が分かりやすいなぁ。
withの中のプロパティには先頭にドット付ける書き方。
991デフォルトの名無しさん
withの入れ子は凄いな。
やっぱり、せいぜい二段くらいまでしか使わない。

でも、そこまでするくらいならさっさと一時変数にしてスッキリさせる方向だよね。