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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001Project774.dprNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
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/
0002Project774.dprNGNG
<過去ログ>

19 http://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc5.2ch.net/test/read.cgi/tech/1076609666/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
0003デフォルトの名無しさんNGNG
>>1
乙
0004デフォルトの名無しさんNGNG
         ヘ  o ,    ── /   __,   /  _,   /_/_/       __,   /
          /  \ ´   ── /        /   ─'  /    _       / 
         _/    \   __ /   ___/   ___/     /   ___/
                                     ̄ ̄ ̄
                    _ , ― 、
                  ,−'  `      ̄ヽ_
                 ,'            ヽ
                (   `ー'ー'ヽ`ー'ー'ヽ  )        
               (  ノ ''''''   '''''':::::::ヽ  )
               ( . )(●),   、(●)、.:( ) +
               ( )   ,,ノ(、_, )ヽ、,, .::::( )    <ヨン様が華麗に4get!
               . ヽ )   `-=ニ=- ' .:::::::|ノ  +
                  \  `ニニ´  .:::::/      +
               ,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
               :   |  '; \_____ ノ.| ヽ i






0005名有りNGNG
プログラミングについての質問なのですが以下のプログラムなのですがコンパイルして実行すると
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]〜って所ですどうやったら回避できるのか分からないので教えて下さいよろしくお願いします
0006名有りNGNG

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);
}
0007デフォルトの名無しさんNGNG
(超初心者用)って文字だけ見たんだろうな
0008デフォルトの名無しさんNGNG
しかしDelphiって何?とは少しも思わなかったのかねw
0009名有りNGNG
すいませんおもいませんでしたorz
0010初心者NGNG
前のスレッドで、処理の途中経過表示の件で質問した者です。
回答ありがとうございました。

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

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



0017デフォルトの名無しさんNGNG
BMPファイルのヘッダ情報を取得するにはどうすればいいでしょう?
0018デフォルトの名無しさんNGNG
>>17
BITMAPFILEHEADERでぐぐれ

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

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

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

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

ということで、DCU32INTを使うのが一番いいかもしれないよ。
どこで手に入れたか忘れたから自分で検索してくれ 
0023デフォルトの名無しさんNGNG
DCU32INT. 
http://hmelnov.icc.ru/DCU/index.eng.html
0024デフォルトの名無しさんNGNG
>>21
ttp://www.sakaki.keiaikai.or.jp/cgi-bin/ConvRoom/webconv.dll/alltree?No=16363
0025デフォルトの名無しさんNGNG
フレームにEditとButtonを貼り、
擬似的なDateTimePickerのようなものを作成しようとしています。
カレンダークラスはDateTimePickerよりコピーしました。

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

初心者で申し訳ないのですが
よろしくお願いします。。
0026デフォルトの名無しさんNGNG
それ激しく見当ちがい
0027デフォルトの名無しさんNGNG
 以下は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;
0028デフォルトの名無しさんNGNG
インスタンスを入れ替えるんじゃなくて内容を入れ替える
0029デフォルトの名無しさんNGNG
> インスタンスを入れ替えるんじゃなくて内容を入れ替える

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

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

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

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

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

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

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

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

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

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

0036デフォルトの名無しさんNGNG
1バイトずつならbufはbyte型にする。あとszの値チェックし忘れ。
Readlnじゃ駄目なのか?
0037肉体労働者NGNG

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

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

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

・SingleByteも混じってるのにWideStringで読んでどうするの、とか
・そもそもWideCharじゃなくてWideStringかよ!、とか
・そのくせなんで1ByteしかReadせぇへんねん!、とか
・1文字分づつ読んでたらオーバーヘッドがすごいことになるぞ大きいバッファにまとめて取り込め、とか
・そもそも、テキストファイルならTStringList.LoadFromFileで一発やんか、とか
0039デフォルトの名無しさんNGNG
> 2バイトコードとアスキーの混在するテキストファイルのコンバートをしようとしています。
> 最終的に日本語だけになれば完成。
よくわからんけど、要するにテキストファイルから2バイトコードだけを取り出したいということ?
0040デフォルトの名無しさんNGNG
>>37
>ReadIn
ReadLnな。テキストファイルを行単位で読み取る手続き。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%C6%C9%A4%DF%BD%F1%A4%AD%A4%B9%A4%EB%A4%CB%A4%CF%5D%5D#content_1_2
0041肉体労働者NGNG

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

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

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

>>40氏
ありがとうございます。これから調べてみます
0042デフォルトの名無しさんNGNG
>>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);
 いうまでもないがアスキー文字列だけの行は空行(改行コードだけ)になる。
 そういうとき空行も不要というならちょっと上記のコードを改造すればいい。
0043デフォルトの名無しさんNGNG
StringReplaceを繰り返し呼び、半角文字を全部削除する事もできるよ!
0044肉体労働者NGNG
>>42氏
ああ、これは素晴らしいソースですね!
これはありがたい。
これなら行頭の文字などを判断文に追加することによりいろいろ出来ますね。
本当に助かります。感謝感激です。


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

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

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

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

プログラムはやっぱり難しいですね。
なにもわからず始めてみたものの、悩んでばっかりです。
0051頭脳労働者NGNG
>>50
だって、簡単だったらプログラムに金払う奴なんていなくなるだろ?
0052デフォルトの名無しさんNGNG
>>22-23
�dクス。使ってみます。
0053デフォルトの名無しさんNGNG
amazonでdelphiの本買おうと思ってるんですがおすすめの本とかありますか?
ちなみにほかのプログラミングもさわり程度しかやったことのない初心者です。
バージョンはdelphi6です。
0054七誌NGNG
かなり初歩的な質問で申し訳ないのですが、PCと対戦する、ジャンケンプログラムを
作りたいのですがどこからはじめたらいいのかわかりません。
参考になるようなHPなどありますか。教えてください。
0055デフォルトの名無しさんNGNG
>>53
FAQだね。参考書籍の案内
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi%B4%D8%CF%A2%BD%F1%C0%D2%5D%5D
0056デフォルトの名無しさんNGNG
>>55ありです
0057デフォルトの名無しさんNGNG
delphi2005はWinXP Homeでは使えないのでしょうか
0058デフォルトの名無しさんNGNG
>>57
Borlandに問い合わせて報告汁
0059デフォルトの名無しさんNGNG
>>54
そのレベルから入るなら(賢明だと思います)
自分なりのデザイン(ウィンドウのイメージね)を考えれば
書き加えるべきコード自体は単純そのものだから
どこぞのHPなど参考にするより、自分で試行錯誤した方がよさげです
0060デフォルトの名無しさんNGNG
>>54
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#content_1_0
0061デフォルトの名無しさんNGNG
>>51
誰でも出来る簡単な仕事にだって金を払ってるよ!
0062デフォルトの名無しさんNGNG
42氏のコードを見てて思ったのだけど
最近 IsDBCSLeadByte は使われなくなったのだろか?

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

> 全般的に42は変。
 集合型を使った判定が珍しいとは思うけど、べつに変じゃないだろ。
0065デフォルトの名無しさんNGNG
何で StrAlloc 使ってるの?
使ったこと無いから分からんけど、イイの?
下位互換性ルーチンちゃうの?
0066デフォルトの名無しさんNGNG
くだすれが最も生産的なすれになっている予感w
0067デフォルトの名無しさんNGNG
そもそもなぜPChar?Stringじゃだめなのか?
0068デフォルトの名無しさんNGNG
>>65
全然問題なし。ヘルプでStrAlloc調べろ。
もっとも>>42の場合とくにPCharを使うこともないとは思うが・・・
0069デフォルトの名無しさんNGNG
CかPascalかって悩んでる時点でだめだね。
プログラマに向いてる奴は4言語ぐらい使いこなすマルチリンガル。
そして、ただのコーダーに限って1言語しかできないとくる。
0070デフォルトの名無しさんNGNG
Drag and Drop Component SuiteでDropFileSourceを
使用してアプリからD&Dでファイルをコピーしたいのですが、
ただたんにコピーするのではなく、違う処理を途中に
入れたいときがあるので、ドロップ先のフルパスを取得したい
のですが、そのようにすればドロップ先のフルパスを取得
できるのでしょうか?
0071デフォルトの名無しさんNGNG
ちょっとすみません
二次元配列で
array[0][0..9] := (100,100,100,100,100,60,40,20,20,10);
みたいな感じで一気に代入する方法ってないものでしょうか
array[0][0] := 100;
array[0][1] := 100;
とやっていくのはどうにも間抜けな感じがするんですが
ループつかうには数値に規則性がないので悩んでます
0072デフォルトの名無しさんNGNG
文法的なサポートはない。
SetArr(var dst; src: array of Integer);
でも作るしか。
0073初心者NGNG
別Unitでクラスを定義したら
↓こんなメッセージが・・・
---------------------------------------------------------------
デバッガ例外が発生
XXX.exeがEAccessViolationクラスの例外を生成しました。
アドレスXXXXXXXXでアドレス000000に対する読み込み違反がおきました。
---------------------------------------------------------------
これってクラスの定義の方法が間違ってるの?
0074デフォルトの名無しさんNGNG
直接クラスと関係なし。アクセス違反なだけ。インデックスの範囲外へのアクセスが一番多い原因
0075デフォルトの名無しさんNGNG
>>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));
0076デフォルトの名無しさんNGNG
うんこ
0077デフォルトの名無しさんNGNG
>>71
自分で関数を作ればよい。
でも初期値をずらずら並べるのはバグの元
0078デフォルトの名無しさんNGNG
StringReplace高速化バージョン
http://dennishomepage.gugs-cats.dk/AnsiStringReplaceBV14.zip
0079デフォルトの名無しさんNGNG
マルチバイト考慮なし?
008071NGNG
まだ勉強開始したところなのでまずは愚直に書き
ほかの部分が完成したら関数の作成にもチャレンジしてみたいと思います
お答えいただきありがとうございました
0081デフォルトの名無しさんNGNG
>>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;
0082デフォルトの名無しさんNGNG
時々ヘルプに載ってない言葉に出会うことがあるのですが
みなさんどこで知り、どこで勉強してるのですか?
例えばEM_LINEFROMCHARとかEM_GETLINECOUNTとかです。

使ってるのはdelphi 6 personalです。
0083ななしへたぐらま ◆XcB18Bks.Y NGNG
>>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のプロパティを参照したりメソッドを実行したのかも…と.
0084デフォルトの名無しさんNGNG
厨な質問でスマン
Delphiでコンパイルしたファイルのアイコンってどうやって変換するんだ?
色んなツール試してみたが「アイコン以外のリソースを含むファイルは書き換えられません。」て出るんだよ・・・
つまらん質問、そして板違いなのかもしれんが誰か教えてくれ、頼む。
0085デフォルトの名無しさんNGNG
ResourceHackerを使うか、
素直にプロジェクトオプションで最初からアイコンを用意しておく。
0086ななしへたぐらま ◆XcB18Bks.Y NGNG
>>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)でもだめですか?

0087デフォルトの名無しさんNGNG
>>84
変えられるハズだがなぁ。
オレは「KH IconRewrite98」っツールを使ってるけど。

…って思ってちょっとやってみたら、
UPXで圧縮したのはダメだった…。
もしかして関係あるアルカ?
0088デフォルトの名無しさんNGNG
>>86
Windows全般のキーワードなのですか。
なんだかややこしそうですが、少しずつ覚えていくことにします。
ありがとうございました。
0089デフォルトの名無しさんNGNG
>>81
CとWin32APIでアプリケーション作ろうとすれば
否応なしに目にすることになる。
0090デフォルトの名無しさんNGNG
APIの学び方について簡単に解説してもらえませんか?
DelWikiのFAQに掲載したいと思います。
009190NGNG
あ、気楽にお願いします。
後で何度でも修正できるWikiですから・・・
0092デフォルトの名無しさんNGNG
だからあまり信用出来ないんだよなぁ
0093デフォルトの名無しさんNGNG
初心者の質問とその回答以外は他所でやんなさい
009473NGNG
>>83
ありがとうございます。バカでした。
×ListA.Create;
○ListA := TMyList.Create;
0095デフォルトの名無しさんNGNG
はじめまして。
Label1〜5を使うとして、FormatDateTimeで取得したHH:mm:ssをLabelに出力したのですが、
これを取り込んでLabel2〜4に順に現在の時間、5分後、10分後、15分後の時間(文字列として固定する)を
表示させたいと思っています。
どうすればいいのでしょうか。ご教示のほど、よろしくお願い致します。
0096デフォルトの名無しさんNGNG
Label2〜5の間違いです。
0097デフォルトの名無しさんNGNG
dt := Now; // 現在
dt := dt + 1/24; // 1時間後
dt := dt + 1/(24*60); 1分後
0098デフォルトの名無しさんNGNG
>>97
ありがとうございます。
例えばその1時間後にタイマーを鳴らしたい場合、どうすればいいのでしょうか。
ググってみたんですが混乱してしまい・・・
0099デフォルトの名無しさんNGNG
もう1点。
>>97
dtはintegerでしょうか。
0100デフォルトの名無しさんNGNG
>>98
TTimer使え
Timer1.Interval := 3600 * 1000;

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

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

そんなTimerに信頼が置けるか?
0109デフォルトの名無しさんNGNG
>>104
WM_TIMERそのものの精度が当てにならないのは常識じゃないか?
0110デフォルトの名無しさんNGNG
>例えばインターバルを1ミリ秒にセットして

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

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

これから'zzz'を抜き出すにはどうしたらいいですか?
0121デフォルトの名無しさんNGNG
>>120
ExtractFileName
0122デフォルトの名無しさんNGNG
>>120
助かりました
0123120NGNG
間違ったorz

>>121
ありがとう。

0124デフォルトの名無しさんNGNG
ケツ拭いたりマンコに突っ込んだりした指で食い物つかんでも平気なら好きにするがいいさ。
0125デフォルトの名無しさんNGNG
( ゚Д゚) ?
0126120NGNG
>>124
逝ってる意味が分からない。
既知害ですか?
0127デフォルトの名無しさんNGNG
今日からDelphi6を使い始めたんですが、「;」を記述しているにもかかわらず、コンパイル時に以下のエラーが出ます。

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

なぜでしょうか・・・?
0128デフォルトの名無しさんNGNG
あなたのハードディスクの中身を透視できれば多分わかるのだと思うのだけど。
0129デフォルトの名無しさんNGNG
一行前の行にセミコロンがないんじゃないの?
0130デフォルトの名無しさんNGNG
>>127
残念ながら私はエスパーではないのであなたが書いたソースが理解できません
0131127NGNG
>>129
そのとおりですた・・・orz
すみませんありがとうございます。
0132デフォルトの名無しさんNGNG
>>130
翻訳サイトが出したような日本語ワラタ
0133デフォルトの名無しさんNGNG
129氏は冴えてるね
0134127NGNG
しかし、なんかコンパイルのたびに間違っていない行で止まりますね。
何もしないでもう一回コンパイルを実行したらうまくいったり、
その行をもう一度書き直すとうまくいったりします。
とくに最後の行でよく止まります。なんででしょうか・・・?
0135デフォルトの名無しさんNGNG
自演だろ
0136デフォルトの名無しさんNGNG
セミコロンうんぬんのエラーは文法的にどっかおかしいと出る
必ずしもエラー発生行の手前とは限らない
0137127NGNG
そうなのですか・・・。
いまDelphiでググって出てきたユーザーさんが開いているHPのチュートリアルを
やっているところなんです。
そのサイトに記述してあるとおりに自分でDelphiに記述してもエラー(というか止まる)が出るので
サイトのほうからコピペしてきてコンパイルするとうまくいったりします。
もちろん記述に間違いはなかったのですが・・・。
0138デフォルトの名無しさんNGNG
>>137
よほど自信があるみたいだが、お前の目と手の精度がダメダメである確率は100%。
0139デフォルトの名無しさんNGNG
>>137
セミコロンや、begin、end の過不足はソースを上から下へ検査して
いって矛盾が発生した時点でエラー発生となるから、入れ忘れたり
入れすぎた場所より後ろで発生するケースは多いよ。

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

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

0140デフォルトの名無しさんNGNG
 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;
0141デフォルトの名無しさんNGNG
constructor Create(AOwner: TComponent); override;
property ItemClass: TCollectionItemClass;
にしとけ。親のと異なるconstructorはoverrideできない。
0142デフォルトの名無しさんNGNG
TmyCompo = class(TComponent)

constructor
0143デフォルトの名無しさんNGNG
constructor TMyComponent.Create(AOwner: TComponent;
ItemClass: TCollectionItemClass);

でやった場合、コンポーネントを登録したときにおかしくなる。
フォームなんかに貼り付けて実行した場合
TMyComponent.Createが呼ばれずにTComponent.Createが呼ばれて
ItemClassの値がうまくセットされないはず。
0144デフォルトの名無しさんNGNG
>>137みたいなやつは
自分が初心者であることに気づいていない。
初心者ほど自信満々で、すぐコンパイラを疑う。
100%お前が間違ってるんだから、
分かるまでソースを見直せ。
0145デフォルトの名無しさんNGNG
コピペで動くのに、コンパイラを疑うのは100年早いってことだよな
0146デフォルトの名無しさんNGNG
ふむ。けど、コンパイラが原因かどうかは解らないけれど不思議な現象が出る事有り。
今回の件は、論議する価値無しだけどね。
0147デフォルトの名無しさんNGNG
>論議
馬鹿なのか?
0148デフォルトの名無しさんNGNG
>>140
> TComponent を継承してクラス TMyComponent を作るとき
 単にクラスとして使うのならとくに変な使い方をしない限り問題はないだろう。
この場合 constructor を新規に作成したことになるから>>143 の指摘通りコンポーネント
としてインストールしても利用出来ない。
0149デフォルトの名無しさんNGNG
>>147 意味不明
0150sageNGNG
これからDelphiインストしようと思います
踏み込んでもいいですか?
0151デフォルトの名無しさんNGNG
雑談は雑談スレで
0152デフォルトの名無しさんNGNG
>>146
>不思議な現象が出る事有り
どんな現象?
0153デフォルトの名無しさんNGNG
>>146みたいなやつは
自分が初心者であることに気づいていない。
初心者ほど自信満々で、すぐ不思議な現象にしてしまう。
100%お前が間違ってるんだから、
分かるまでソースを見直せ。
0154デフォルトの名無しさんNGNG
内部エラー:L????
0155デフォルトの名無しさんNGNG
>>152
関係無い所を変更してコンパイルするとエラーした。

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

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

保持されていないよ。要求がある都度見に行く。そこが思い違い。
0159デフォルトの名無しさんNGNG
どんな凄い現象かと思えば…
0160デフォルトの名無しさんNGNG
ここは初心者がええかっこしたがるスレですから
0161デフォルトの名無しさんNGNG
かわいいじゃん
0162デフォルトの名無しさんNGNG
stringをcharに入れるにはどうすればいいですか?
0163デフォルトの名無しさんNGNG
c := s[1];

PCharなら
p := PChar(s); // or @s[1];
0164162NGNG
c : array[0..255] of char;
str : string;

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

長い場合は、ループでひとつひとつ入れるのですか?
0165デフォルトの名無しさんNGNG
StrCopy(c, str[1]);
Move(str[1], c, Length(str));
0166デフォルトの名無しさんNGNG
ウインドウのハンドル?が変わった瞬間に何か動作をさせたいんですけど
どうすれば良いのでしょうか。例えばIEのウインドウをアクティブにした瞬間に
「Google - Microsoft Internet Explorer」みたいな感じで文字を表示させたいと
思っています。ウインドウのハンドルは取得できたのですが、取得するタイミング
がうまくいきません(;´Д`)
0167デフォルトの名無しさんNGNG
OnActivateイベントに記述するとか
0168デフォルトの名無しさんNGNG
ウィンドウがアクティブになるとハンドルが変わるの?
0169デフォルトの名無しさんNGNG
フォアグラウンドタスクの変更を検出したいんだろ
0170デフォルトの名無しさんNGNG
Delphiのソースコード説明一覧が載ってるサイトはないでしょうか?
0171166NGNG
皆さんレスありがとうございます。

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

どうもお騒がせしました。
0172デフォルトの名無しさんNGNG
そんなに簡単とは思われないけど > フォアグラウンドタスクの変更を検出
0173デフォルトの名無しさんNGNG
FormのOnCreate時ってまだForm自体は作られていないの?
Formのサイズを変更する命令を発行してるのにサイズが変わらないときがあるんだけど・・
0174デフォルトの名無しさんNGNG
フックすりゃいいじゃん。簡単かどうか知らんけど
0175174NGNG
>>172 な。更新するの忘れてた
0176173NGNG
すいません。自己解決しました。
勘違いが原因だったようです。
0177デフォルトの名無しさんNGNG
>>158
>保持されていないよ。要求がある都度見に行く。そこが思い違い。
ん。確かに。しかしどこに読みに行くのでしょう?
ディスクにはアクセスしないから多分・・それで気が付いて・・
それにしても動いていたのは確かだし、再コンパイル後
エラーした為、処理の順序を入れ替えたので動くのは当然だし。
文法エラーはちゃんと出るんだけどなぁ・・・・
0178デフォルトの名無しさんNGNG
> しかしどこに読みに行くのでしょう?

そりゃ、FileListBox のコントロールにAPIをつかって読みにいくのさ。
ListBox はウィンドウズのコントロールだからね
0179デフォルトの名無しさんNGNG
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
0180デフォルトの名無しさんNGNG
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
0181デフォルトの名無しさんNGNG
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
0182デフォルトの名無しさんNGNG
uho
0183デフォルトの名無しさんNGNG
>>170
意味分からん。
何のために何の情報が欲しいのかもっと具体的に書け。
0184デフォルトの名無しさんNGNG
>>170
無い。
0185デフォルトの名無しさんNGNG
>>170
ソースコード自体を見ろ。結局それが一番勉強になる。
0186デフォルトの名無しさんNGNG
Delphiって凄いね。。俺みたいな低脳でもプログラムが作れてしまうなんて。
ビジュアルプログラミングツールまじすげすげすげヴォー
0187デフォルトの名無しさんNGNG
日本語Delphi6をダウソしたんですけど、表作成機能が英語なのはなんでですか?
題名とか日本語文字化けします。
0188デフォルトの名無しさんNGNG
そんなことないけど?
0189187NGNG
>>188
ActiveXのチャートコンポーネントを配置して右クリック>Wizard...を選ぶと全部英語なのですが。
0190187NGNG
こんなかんじです・・・。
http://www.daizou.jp/up/upload/20050110111946.gif
0191デフォルトの名無しさんNGNG
もちろんアップデートは入れてるよね?
0192デフォルトの名無しさんNGNG
ActiveXのチャートコンポーネントが英語版なんでは
0193デフォルトの名無しさんNGNG
>>177
メモリに読みに行くにきまってんじゃん。
スワップアウトしてたらハードディスクになるけど。
0194187NGNG
>>191
よくわからんですが、Delphiのフリー版のやつです。
ちょっと確認してきます。
0195デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

0196デフォルトの名無しさんNGNG
ファイルが使用中かどうか確認する方法を教えてください。D6パー
0197デフォルトの名無しさんNGNG
とりあえずオープンしてみて成功したら少なくとも排他的には使用中でないことが分かる。
0198デフォルトの名無しさんNGNG
ああ、便乗して質問させてもらおう・・

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

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

もっと簡単に(できればファイルを開く処理を使わずに)ファイルサイズを得る方法ってないですか?
0199デフォルトの名無しさんNGNG
FindFirstとか
0200デフォルトの名無しさんNGNG
>>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;

0201198NGNG
やはりそれしか手はないのか
某のことだからGetFileSize(const FileName: string;var FileSize: Cardinal): Boolean;
みたいな関数でも用意しておいてくれないかなぁと思ったが・・
FindFirstを利用して自分で作るか・・。
0202デフォルトの名無しさんNGNG
function FileInfo(FileName: string): TSearchRec;
var f: TSearchRec;
begin
 Win32Check(FindFirst(FileName, faAnyFile, f) <> 0);
 Result := f;
 FindClose(f);
end;
0203デフォルトの名無しさんNGNG
FindFirstでのファイルサイズは integerだから2G以上のファイルの場合は
別の手を考えないといけないよ。
0204デフォルトの名無しさんNGNG
Delphi7のアップデートってありますか?
0205デフォルトの名無しさんNGNG
>>203
FindData見れ
0206デフォルトの名無しさんNGNG
>>204
Update1と非公式パッチがありますけど・・・
0207デフォルトの名無しさんNGNG
D8のアップデートはまだか
開発環境でWinの最新パッチ当てられないのは問題だろ
0208デフォルトの名無しさんNGNG
>>207
.NET 1.1 SP1 対策パッチなら、とっくに出てますけど。
0209デフォルトの名無しさん NGNG
54でも質問しましたが、GUIを使ったジャンケンプログラムを作っているんですが、
Jpgの表示は可能ですか?
0210デフォルトの名無しさんNGNG
可能です
0211デフォルトの名無しさんNGNG
ヘルプは見ない主義なのかな?
0212デフォルトの名無しさんNGNG
TImageでもつかっとけ
0213デフォルトの名無しさんNGNG
>>206
すみませんがもう少し詳しくお願いできませんか?
0214デフォルトの名無しさんNGNG
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDelphi7Update1%5D%5D
0215デフォルトの名無しさんNGNG
嗚呼全然わからない。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で作ってるジャンケンソフトありませんか?参考にしたいのですが。。。
0216デフォルトの名無しさんNGNG
>>215
あまりしつこいと、「それすら(略)なら諦めろ」ってレスが来ちゃうぞ。
もっと具体的に「○○が分からない」ぐらいまで、自分でやってからに
した方が良いと思う。
0217デフォルトの名無しさんNGNG
>>215
ttp://www.cutt.co.jp/book/4-87783-073-1.html
0218デフォルトの名無しさんNGNG
>>216 すみませんでした。もう時間がなかったのでつい言ってしまいました。
始めに、ボタン3つ(ぐーちょきぱー)作って押すと画像を出るようにしたいのですが
ひとつずつ異なる画像を表示させることができません。(ボタン1にAという画像を表示
させる、ボタン2にBを表示させたいのにAが出てきてしまう) 
 本当に超初心者なので質問するのも恥ずかしいのですが、教えてくださると大変
助かります。



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

個人的にはもっと「いじり倒してから」人に聞いた方がいいかと思うけど。
0223222NGNG
ありゃ、続きがあったのか。218しか見てなかった。
うーん。
0224デフォルトの名無しさんNGNG
>>222
220があってもなくても言ってることは正しいと思うぞ。同意だ。
0225デフォルトの名無しさんNGNG
もう少し具体的に何がワカランのか書け。
0226デフォルトの名無しさんNGNG
Delphi2005になって気づいたんだが"resourcestring"って昔からあったっけ?
偉い人教えて
0227デフォルトの名無しさんNGNG
少なくとも6には既にある
もっと前は忘れた
0228デフォルトの名無しさんNGNG
そうなんだ。
教えてくれてありがとう。
0229デフォルトの名無しさんNGNG
ライブラリソース見る人は自ずといろんなこと気づくが
見もしないやつはずぅっと教えて君のままだな
0230デフォルトの名無しさんNGNG
Personalのやつは見れない。
あと自分でできるやつは書き込まないから目立たない。
0231デフォルトの名無しさんNGNG
何が分からないのか分かってるようなら自分で調べられるからね〜
要するにそういう人は初心者ではないわけで
ある程度やむを得ないかもしれないけど
早くまともな答が欲しかったら
恥ずかしがらずに自分のソースをうpしる>初心者
0232デフォルトの名無しさんNGNG
初心者スレで玄人気取りとは恥ずかしい奴らだな・・・
0233デフォルトの名無しさんNGNG
きちんと要点をまとめて物を尋ねられるかは人間関係の
素養の問題で、素人玄人は関係ないと思う。。。
0234220NGNG
>>225 はい。わかる範囲具体的にいいます。
procedure TForm1.btnGuClick(Sender: TObject);
begin
Image2.Picture.LoadFromFile('./gu.bmp');
end;
という風にボタンを押すと画像が出るようにしました。後は、コンピュータ
相手にじゃんけんをしたいので、コンピュータがランダムにグーチョキパーを出すようにしたいのですが、
やり方がわかりません。


0235デフォルトの名無しさんNGNG
お前が>>220で書いたX=random(3)がそのまんま答えだろ。
0236デフォルトの名無しさんNGNG
>>234
グー、チョキ、パーのグラフィックを
あらかじめ3つのImageコントロールへ入れておいて
ImageコントロールのVisibleプロパティを操作した方が楽でないかい?
0237デフォルトの名無しさんNGNG
プログラミングたのし〜〜〜〜
0238デフォルトの名無しさんNGNG
gu1.bmp〜gu3.bmpまで3種類あって、グー用のイメージをランダムに出したいんだろ
#
つーかその度にロードするのはヨクナイ
0239デフォルトの名無しさんNGNG
ボタンクリック時
※あらかじめ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;
0240デフォルトの名無しさんNGNG
SHBrowseForFolderで.ulFlagsに
BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLEを指定したとき
なぜかBIF_RETURNONLYFSDIRSが無効(マイコンピュータなどが選択できてしまう)になってしまいます
さらに呼び出したときの表示位置が必ず画面中央になってしまう
解決法はありますか?
OLEInitializeで初期化はしてます
0241デフォルトの名無しさんNGNG
WinAPI スレにいけば
0242デフォルトの名無しさんNGNG
Delphi7でコンパイルしたユニットをDelphi5で使う方法ってないでしょうか?
SSE2使いたくてD7 Architect Trialを落としたけど、コンパイルしたdcuは
Delphi5で通らない……。
0243デフォルトの名無しさんNGNG
初心者でもないんだが
今、SDKソースをDelphi用に書き直して(DirectXのDirectShow関係)色々やってるんだが
特定のインターフェースメソッドでIDE上デバッグだと例外が起きる
でもデバッグでは無く、直接実行だと正常に動く

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

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

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

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

という勘違いをしていないとしたらとりあえず最適化OFFにして
範囲チェックその他をONにして地道にデバッグするしかないね。
interfaceとIDEの相性が悪いというのは自分は聞いたことないな。
0257デフォルトの名無しさんNGNG
おまじない
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)の効果があるかどうかやってみれ。
0258デフォルトの名無しさんNGNG
ビルドによってインターフェース先のdllやocxを生成する訳じゃないから
Set8087CWは全く関係無い話だな
0259246NGNG
>>249 ありがとう。こっちの環境の何かがおかしいと言うことか。
>>250 ActiveMovie、DirectShowか。ぐぐって見る。
0260デフォルトの名無しさんNGNG
ここは粘着と健忘症の巣だな
0261デフォルトの名無しさんNGNG
評論家は談話室へどうぞ
0262デフォルトの名無しさんNGNG
MemoやListBoxは書かれてる文字がたくさんあると一定以上送受信できませんよね^^;
この場合どうすればいいんでしょうか。。変な質問ですみません;;
0263デフォルトの名無しさんNGNG
TeamSourceの質問ってここに書いても良いですか?
0264デフォルトの名無しさんNGNG
>>193
>メモリに読みに行くにきまってんじゃん。
>スワップアウトしてたらハードディスクになるけど。

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



0265デフォルトの名無しさんNGNG
OpenGLではSet8087CWで浮動小数例外をマスクしないといけないのだが、DirectXはどうなんだろ?
0266デフォルトの名無しさんNGNG
>>264
抽象的なことばかり言ってないで具体例を出してくれないと。
0267デフォルトの名無しさんNGNG
>>264
>バグが有っても動くし無くても動かない!摩訶不思議なDelphi。

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

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

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

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

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

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

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

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

     壁の向こう
 
                    
壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁壁  
                    
 
    俺
0292デフォルトの名無しさんNGNG
>>287
ありがとうございます。できました。
0293デフォルトの名無しさんNGNG
すいません 質問させて頂きます。
Yahoo!メッセンジャーや,MSNメッセンジャーなどのクライアントを作りたいと思っています。

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

どなたか 助言お願いします。
0294デフォルトの名無しさんNGNG
>>293
http://www.hypothetic.org/docs/msn/index.php
0295デフォルトの名無しさんNGNG
>>289
C++Builderは上級者向け。
0296デフォルトの名無しさんNGNG
んなこたねぇだろ
0297デフォルトの名無しさんNGNG
>295
どういう所が?
0298デフォルトの名無しさんNGNG
言語仕様が汚くVCLとの相性も悪いから
初心者に向いているとは言いがたい
0299デフォルトの名無しさんNGNG
マイナーな言語が初心者向きだと?
0300デフォルトの名無しさんNGNG
メジャーが好きならVBでもやっとけ。
0301デフォルトの名無しさんNGNG
そこでPythonですよ。
0302デフォルトの名無しさんNGNG
VBは難い
標準のコンポーネントで事足りる程度ならいいけどデフォルト動作をオーバーライドしたい時や、直接ハンドル使ってなんやかんやしたい時は相当な労力を要する。
VCLも割とガチガチに思えるTWinControlでも、オーバーライドする労力はVBより容易い
0303293NGNG
>>294
ありがとうございます。
Yahooメッセンジャーのはないんでしょうか?;;
0304デフォルトの名無しさんNGNG
>>303

@゚)つ ttp://ymca.infoware.ne.jp/
0305293NGNG
>>304
ありがとうございます。
このサイトは知ってるんですが.....
Delphiでの接続の仕方がわからないんです....
具体的にどのようなコンポーネントを使ったらいいかとか、コードなどがわからないんです。

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

せっかくサイトを教えて頂いたのにすいません orz
0306デフォルトの名無しさんNGNG
System.Xml.XmlTextReaderに似た使い勝手のXMLライブラリってどれですか?
0307名無し募集中。。。NGNG
はじめまし



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


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

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

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

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

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

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

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

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

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

>>317
確かにReadOnly、Color := clBtnfaceあたりのTEdit使えば
表示されない部分はキーでスクロールすればいいから楽ですね
でも、とある方の「強い」要望でTLabel使わざるを得ないのです
0319デフォルトの名無しさんNGNG
「とある方」みたいな人がPMやSEな環境で仕事はしたくないな
0320デフォルトの名無しさんNGNG
左右の余裕を超えた文字列が入ると、
フォームにスクロールバーが出るワケだ。
そこでまた君は苦労するワケだ。
0321デフォルトの名無しさんNGNG
次はボタンの文字がはみ出しますという質問するに1000TButton
0322デフォルトの名無しさんNGNG
フォントサイズを1にすればダイジョブ
0323デフォルトの名無しさんNGNG
文字長見て適当に改行#13#10しちゃえば?
仕事なら仕様と確認して
0324デフォルトの名無しさんNGNG
マルチランゲージで作るなら余白多めにUI作るのは定石。
それは置いといて、VCLは日本語環境と非日本語環境でデフォルトのフォントサイズが異なるので、
1バイナリでやろうとするとスケーリングのバランスが悪くなる問題がある。
この問題を回避するには、スケーリングを制御するコードを書き足すか、
VCLのデフォルトフォントの初期化部分を書き換えると回避できるぽい。
0325デフォルトの名無しさんNGNG
超初心者にその助言は酷だな
0326デフォルトの名無しさんNGNG
相手が分からなそうだと思いつつ敢えて>>324みたいな事言う人って酷いですぅ!
0327デフォルトの名無しさんNGNG
フサスレ見ればどういう連中がレス付けてるのか分かるだろ。
0328デフォルトの名無しさんNGNG
マルチランゲージで作るなら、
TForm.Scaled
は絶対falseにしとくこと。
0329デフォルトの名無しさんNGNG
>>327
ユーザ激減で残ったのは精鋭というか、カスというか、苦しむところだ
0330デフォルトの名無しさんNGNG
>>329
なんでユーザが減ったのでしょうか。
0331デフォルトの名無しさんNGNG
ファイルのプロパティを開くにはどうしたらいいのでしょう?
(エクスプローラで、ファイルを選択→右クリック→プロパティと同じもの)
0332デフォルトの名無しさんNGNG
http://homepage1.nifty.com/OkaLab/Program/VbTips02.html
0333デフォルトの名無しさんNGNG
>>332
thx!
0334デフォルトの名無しさんNGNG
Yahoo!メッセンジャー鯖に接続する具体的なコードはないんでしょうか。。orz
0335デフォルトの名無しさんNGNG
activexの取り込みで、メディアプレーヤーを取り込んだんだけど、
playとかfilenameとかの命令が無いんだけど。。。
メディアプレーヤー9とかだと、変更されているのか?
0336デフォルトの名無しさんNGNG
漏れは愚痴を言いながらも日曜プログラマとして
Delphiでツールを作り続けてまつ
Delphi7だけどね
0337デフォルトの名無しさんNGNG
const
ary: array[0..2] = ('A', 'B', 'C');

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

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

High(MyMatrix)
High(MyMatrix[Low(MyMatrix)])
0344デフォルトの名無しさんNGNG
>>343
おお、ありがとう!
0345デフォルトの名無しさんNGNG
今作っているアプリでメインフォーム以外でAlt+F4を押されると
プロセスが残ってしまいます。
Alt+F4を無効にするにはどうすればいいでしょうか?
0346デフォルトの名無しさんNGNG
>>345
フックしてAlt+F4来たらメッセージ捨てる
0347デフォルトの名無しさんNGNG
OnClose で Application.MainForm.Close;
0348デフォルトの名無しさんNGNG
プロセスをダイアログ代わりにするヤツ大杉。だめ設計の見本
0349デフォルトの名無しさんNGNG
>>348
Windowsってそうやらないとコールバック関数登録デキネーんだよ。
0350345NGNG
>>346
>>347
レスありがとうございました。
どちらの方法もこれから役に立ちそうです。
0351デフォルトの名無しさんNGNG
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
なんて出来れば嬉しいのですが
0352デフォルトの名無しさんNGNG
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);
0353351NGNG
>>352
ヘルプ見てたらControlCountというプロパティ見つけたので
これ使えるなと思ってたら既に偉大なる先人が教えてくれた、感謝
しかも再起を使って入れ子にもバッチリ対応している、驚き

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

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

a := b := 10
なんてことは出来ないのですか?
コンパイラに「代入できない左(ry」と怒られます
0357デフォルトの名無しさんNGNG
代入は文であって式じゃないので無理
0358デフォルトの名無しさんNGNG
>>357
どうもです
0359デフォルトの名無しさんNGNG
>>356
素直に
b := 10;
a := b;
とかやるしかないと思うよ。
0360359NGNG
うはwww更新しわすれてたwwwwwwおkkwwkkwkwk
0361デフォルトの名無しさんNGNG
あまり使わないフレーム使って凝ったの作ったんだけど
フレームってデストラクタ呼ばれないのな。Freeを明示して解決したがそれまでハマッタ
0362デフォルトの名無しさんNGNG
超初心者なのでお許しを。

Memo1.Lines.Add('text');

こうすると改行されるのですが、改行しない方法を教えてください。
0363デフォルトの名無しさんNGNG
memo1.lines.text := memo1.lines.text + 'text';
0364デフォルトの名無しさんNGNG
>>363
ありがとうございます
0365デフォルトの名無しさんNGNG
棒グラフ(横)をアニメーションさせるプログラムを作っています。

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

何か他にいい方法は無いでしょうか?
0366デフォルトの名無しさんNGNG
>>365
ヘルプから
DoubleBuffered  見てみるといいよ
0367366NGNG
単なる棒グラフなら、右側の□を描いてから左の■を描くようにするという方法もあるよ。

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

ただ、数字を棒上に描き込むという場合は、これは使えないけどね
0368365NGNG
早速試してみたいと思います。
ありがとうございました。
0369デフォルトの名無しさんNGNG
>>361
オーナー指定が間違ってるんだろ
0370デフォルトの名無しさんNGNG
>>193と他の人。

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

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

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

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


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





0373デフォルトの名無しさんNGNG
>>370
> APIとVCLは、解りません。知りたいとも思いません。

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

だから、DoubleBufferdを使う時は丁度収まるサイズのパネルを使うのが一般的かな
0376365NGNG
>>375
ご親切にどうも。
負荷の事は気になってましたので助かります。
教えていただいたとおりパネルを使いたいとおもいます。
0377デフォルトの名無しさんNGNG
System.Random使わない乱数ルーチンってある?
複数の乱数列を同時にもてるようなの。
0378デフォルトの名無しさんNGNG
>377
??
0379デフォルトの名無しさんNGNG
>>377
独自の乱数を作ればいいジャマイカ
アルゴリズムの本でも嫁ばよかんべ
0380デフォルトの名無しさんNGNG
FAQ以外はろくな答えが返ってこないなここ・・・
0381デフォルトの名無しさんNGNG
しょぼい回答者しかいないときもあるさ
0382デフォルトの名無しさんNGNG
だ が そ れ が い い
0383デフォルトの名無しさんNGNG
フォーム上に配置された任意の画像にマウスカーソルが重なった時と
フォーム上に配置された任意の画像からマウスカーソルが離れた時、
イベント(画像の入れ替え)を発生させたいのですがどのようにすれば良いでしょうか。
0384デフォルトの名無しさんNGNG
短いサンプルプログラムがたくさん載ってある、超初心者向けの本を教えてください
0385デフォルトの名無しさんNGNG
>>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;

こんな感じですか?
0386デフォルトの名無しさんNGNG
>383
OnEnter、OnExit。任意の位置ならOnMouseMoveで位置判断して処理する
イベントの無いコンポーネントなら継承コンポ作ってイベント公開すればいい
TWinControlの子孫ならpropertyをpublishedにするだけ。
0387デフォルトの名無しさんNGNG
すまん嘘ついた。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;
0388デフォルトの名無しさんNGNG
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;

  

0389デフォルトの名無しさんNGNG
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;

0390デフォルトの名無しさんNGNG
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;
0391デフォルトの名無しさんNGNG

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

と言うよりSpeedButtonとかはFlatとかがあるから、イベント作るならややこしいかも
とは言え、XPMan使うとおかしいのはVCLが浅はかと思うけどね
0409デフォルトの名無しさん05/01/17 11:01:52
Delphiの「グリットに合わせる」は標準で8*8ですけど
VCやVBの標準値がいくつかわかる方いますか?
0410デフォルトの名無しさん05/01/17 11:04:00
>>409
どうでもいいかもしれないけど「わかる方いますか?」って聞き方は微妙だと思う。
0411デフォルトの名無しさん05/01/17 11:33:18
他の方が作ったコンポーネントを利用させてもらおうと思ったら
コンパイル時にTDB,TDBGridが見つからないと言われました。
ネットやDelphiの中を探したのですが見つかりませんでした。
この2つのクラスもどこかで落としてくるのでしょうか?
0412デフォルトの名無しさん05/01/17 11:36:30
はじめまして。
TEdit内でCtrl+Aを押された場合に全選択状態にするには
どうしたらよいでしょうか?
Text1.SelectAllをすればいいのはわかったのですが
どういうイベントに記述すればよいのかわからないので
教えてください。
0413デフォルトの名無しさん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絡みも無理でしょう
041441105/01/17 12:30:09
>>413
使っているのがフリーのPersonal6です。
上位バージョンの試用版も米国のサイトから落としましたが、
Personalである限り無理ということですね。
丁寧にありがとうございました。

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

>>421
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2004-49,GGLD:ja&q=linklabel+delphi
http://www.koders.com/delphi/fidBD5400E63BDB962DF4D36D9C48642CC2825653E6.aspx
0424デフォルトの名無しさん05/01/17 19:28:59
google厨乙
0425デフォルトの名無しさん05/01/17 19:29:32
代案の方が100倍マシ
0426デフォルトの名無しさん05/01/17 19:39:04,
いや、
387のコード見て理解出来てる人が、そんなコンポ教えてって言うのがオカシイ
0427デフォルトの名無しさん05/01/17 20:32:20
>>416
探せばありますか。今度時間をかけて漁ります。

試したところ上位の試用版にDB系のコンポーネントがありました。
でも試用版なので使い続けるわけにはいかない…。
0428デフォルトの名無しさん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のほうが楽チンかな。
0429デフォルトの名無しさん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;
のようなことがやりたい(デフォルト引数というのはなしね)。
0430デフォルトの名無しさん05/01/18 03:30:54
やってみればいいだろ。アフォ?
0431デフォルトの名無しさん05/01/18 03:46:49
やってみてできないからやる方法があるか聞いてるんだけど・・・
0432デフォルトの名無しさん05/01/18 04:03:52
ん?DCUデバッグ有効で両方のコンストラクタにブレークすれば追えるよ
で、出来ると思うよ。

というか・・干渉ですが、
Createから別のCreate(**)を呼ぶならコンストラクタにする意味無いと思います。
Create(**)内でCreateならわかるけど
0433デフォルトの名無しさん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;
0434デフォルトの名無しさん05/01/18 05:19:14
 Result := Create(0);
なんて出来るの?
0435デフォルトの名無しさん05/01/18 09:26:50
TDateTime型で二点間の時間差をLabelに表示しようと思い
ヘルプを見ながら試行錯誤したのですが、どうにも上手くいきません。

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

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

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

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

1ピクセルは何mmなのでしょうか?
045645505/01/19 09:57:45
くだらない質問してすいません
Delphi-MLで調べたら見つかりますた
0457デフォルトの名無しさん05/01/19 10:17:25
>>456
delphiと関係ないじゃんw
0458デフォルトの名無しさん05/01/19 10:20:47
>>453
SecondsBetween() は閏年を考慮してるよ
0459デフォルトの名無しさん05/01/19 10:36:37
>>437
つくれないです。
0460デフォルトの名無しさん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で記述せよ。
0461デフォルトの名無しさん05/01/19 17:46:17
>記述はDel-phiで記述せよ。
スレ違いですよ♪
0462デフォルトの名無しさん05/01/19 18:23:02
デジャヴだな Del-phi も
0463デフォルトの名無しさん05/01/19 20:05:28
アセンブラでも再帰を必要とするのに出来る訳ねーじゃん。寝たか
再帰的なプログラムを記述せよ・・で?・・再帰を用いないプログラムで記述せよ・・ハァ??
全部の値の定数でも並べればぁ
0464デフォルトの名無しさん05/01/19 20:12:46
再帰処理を見せないために、その再帰処理をする関数をDLLにしちゃえばいいんだよ
0465デフォルトの名無しさん05/01/19 20:12:54
>>463
おまいのレスこそネタだよな?ネタだと言ってくれ〜
0466デフォルトの名無しさん05/01/19 20:20:37
アセンブリまで砕いたら殆どのAPIは中で何度もジャンプループしてるだろうよ
0467デフォルトの名無しさん05/01/19 20:27:45
基本は足算引算とビットシフトしか無いんだよ
0468デフォルトの名無しさん05/01/19 23:50:06
VCLとして既にある関数を自分でわざわざ作っている予感がして不安になるときが多々あります。
0469デフォルトの名無しさん05/01/19 23:56:15
気にしないことだな。くだらない関数もたくさんあるし。
0470デフォルトの名無しさん05/01/20 05:39:50
新規プロジェクトを作ってフォームにImageList1を配置して実行するとうまくいくのですが、
画像(例えば"C:\Program Files\Common Files\Borland Shared\Images\Buttons\ABORT.BMP")
を一枚でも読み込んで実行すると
'ImageList1.Bitmapの読み込みエラー:ストリームからのImageListデータの読み込みに失敗しました'
と出てしまいます。何が悪いのでしょうか?
環境はDelphi6 Proとパッチは一通りあてています。
0471デフォルトの名無しさん05/01/20 06:31:15
別に問題ないけどな
IDE上で読み込み済みなのか、起動時に動的に読み込むのか、どっちだ?
0472デフォルトの名無しさん05/01/20 06:32:17
Pro版ならソースもってるべ。
0473デフォルトの名無しさん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;

0474デフォルトの名無しさん05/01/20 10:57:58
bitmapやjpgの画像の色をpixelごとに読みたいんですが、どうすればよいでしょうか。
0475デフォルトの名無しさん05/01/20 11:24:46
bitmap.canvas.pixels[] 速度がほしければ scanline
jpg 画像は bitmap に写し取って同様にする
0476デフォルトの名無しさん05/01/20 13:37:08
Cのソースをパスカルに変更するソフト、どこにあったけ?
047747405/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それぞれの値を得たいのですが、どうしたらよいでしょうか。
0478デフォルトの名無しさん05/01/20 15:12:11
いやーそんなことないよ。良いんじゃない?
0479デフォルトの名無しさん05/01/20 15:26:08
>>477
やってみたけど、別に問題がないと思うけど。Label1の行の有無にかかわらず、特に差はなかった。
ただ、Bmp.Canvasのサイズに対して、OpenPictureDialog1で読み込まれたBitmapのサイズが
大きすぎの可能性はないだろうか(小さい場合はタイル状に並ぶことは確認できると思う)。

>labelの数字もなんか変ですし。
ヘルプでTCanvas.Pixelsを熟読しる。たぶん-1が返ってきている状態に陥ってない?
048048005/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は使わないようにしたいんです。

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

それに s1 と s2 を入れ替えると結果がかわるでしょ。
同じ文字がある場合はそれを s1 にしてごらん
048448005/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;

です。
0485デフォルトの名無しさん05/01/20 16:19:25
>481
子ノードを全検索して作成有無を判断するしか無い。リネームなんかも同じ
0486デフォルトの名無しさん05/01/20 16:20:02
関数の動作原理を理解してないのが原因
0487デフォルトの名無しさん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;
0488デフォルトの名無しさん05/01/20 16:25:14
>>485
了解しました。
0489デフォルトの名無しさん05/01/20 16:29:29
やっぱ、
If cond then If cond then else ---
やっぱbigin - end - で囲っちゃう いらないけど
if cond then
if cond then else
else
-- がいまだにできない
0490デフォルトの名無しさん05/01/20 16:35:24
Delphiと関係あるのか?
正規表現が無いから文字検索が面倒なのは確かだが
0491デフォルトの名無しさん05/01/20 16:37:11
正規表現があるとその使い方が面倒だが
0492デフォルトの名無しさん05/01/20 16:46:19
そんなヤツはposでやってりゃいいだろ
049348005/01/20 16:53:58
482さん、483さん、486さん、487さん、
どうもありがとうございました。

それともう一つ質問なんですが、
上記と似たような関数なんですけど、
s1とs2に、何種類の文字が含まれているかを調べる関数を作りたいのですが、
どうすればよいでしょうか?
さっきのs1='abcd' s2='bbef'だと、
6種類という結果が返ってくるような関数です。
よろしくお願いします。
0494デフォルトの名無しさん05/01/20 16:55:34
pos で出来ることを正規表現つかってやるヤツもいるんだな
0495デフォルトの名無しさん05/01/20 16:59:16
自分で少しは考えるってことはしないのか?
0496デフォルトの名無しさん05/01/20 16:59:40
正規表現あればバグは減る
0497デフォルトの名無しさん05/01/20 17:01:37
どうして?
0498デフォルトの名無しさん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;
0499デフォルトの名無しさん05/01/20 17:23:22
複雑な電文の解析処理してるルーチンとか考えてみ
while内でかなりのcaseとposとフラグ使ってでグルグル回さなきゃいけない罠
正規表現なら簡素になるだろ、物によっては一行で済むかもしれん
IndyのTIdMessageでもヘッダー部にバグ潜んでるし
050048005/01/20 17:26:09
498さん、どうもです。
まずは、しっかり理解してから使います。
ありがとうございました。
0501デフォルトの名無しさん05/01/20 17:26:18
正規表現にバグ潜んでるかも知れんし
0502デフォルトの名無しさん05/01/20 17:28:48
Delphi8以降でdotNetなら正規表現使えます
0503デフォルトの名無しさん05/01/20 17:33:53
Delphiにバグ潜んでるし
0504デフォルトの名無しさん05/01/20 20:06:07
TTableでいうところのApplyUpdatesにあたる命令が
TADOTableにはありますでしょうか。
0505デフォルトの名無しさん05/01/20 20:20:58
ADO自体の特性を理解してから、ADOコンポーネントのヘルプ見ろ
0506デフォルトの名無しさん05/01/20 21:58:37
エディタを作ろうと思うのですが
特定単語などを自動的に太字にしたり色変えたり・・したいと思い、
リッチエディットでやったのですが、太字に変えると幅が大きくなってしまします

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

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

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

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

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

どうかご教授お願い致します。
0510デフォルトの名無しさん05/01/21 02:08:18
http://www.google.co.jp/search?hl=ja&c2coff=1&q=%E3%82%B2%E3%83%BC%E3%83%A0%E3%80%80%E3%83%9D%E3%83%BC%E3%83%88%E3%80%80%E4%B8%80%E8%A6%A7&lr=
0511デフォルトの名無しさん05/01/21 02:16:53
>>510
こんなに使っている物なんですね^^;
次からはもっとちゃんと調べるようにします。
お手数お掛けしました&ありがとうございました!
0512デフォルトの名無しさん05/01/21 03:08:02
一つのプログラムがどれくらいのポートを開くかって事では?
1PCに1つ割り当てれば良いと思うけど、ちがうの?
0513デフォルトの名無しさん05/01/21 03:16:40
>>509
TCPとUDPについて調べろ。話はそれからだ。
0514デフォルトの名無しさん05/01/21 04:02:02
その人たぶんね、ソケット通信組めるレベルじゃないよ
051550905/01/21 04:35:28
既にクライアントとサーバ間でやりとりをするプログラムはいくつか作っています。
しかしいつもソケットコンポーネントを置く時に「これでいいのかなぁ〜」と疑問を抱きつつ
置くのでプログラミングが上手な方々にどうすべきか聞こうと思ったのですが、
よく考えたら既存のプログラムのポートを調べれば済む話だったという訳です^^;
ともかく皆さんどうもです〜^^;
0516デフォルトの名無しさん05/01/21 08:12:30
VBと対比されて説明されることがありますけど、
VBにできなくてDelphiにできることってなんですか?
0517デフォルトの名無しさん05/01/21 08:14:23
ない
0518デフォルトの名無しさん05/01/21 09:04:49
>>517
普通にあるだろw
0519デフォルトの名無しさん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を読むと、ツールのデバッガオプションで何とかしろ、
と書いてありますが、よくわかりません。どうすればよいか教えてください。
0520デフォルトの名無しさん05/01/21 09:29:47
TBitmapというインスタンスを生成する必要がある

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

うまくいきません(-_-;)
052552305/01/21 10:42:48
お騒がせしました。for使ったらできました^^;
0526デフォルトの名無しさん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;
052752605/01/21 11:22:48
すいません、自己解決しました。
0528デフォルトの名無しさん05/01/21 12:18:41
質問よろしいでしょうか?
別アプリのウインドウにあるコマンドボタンのEnableの状態を取得したいのですが、
APIがわかりません。FindWindow,FindWindowEXでウインドウハンドルを取得するまではわかるのですが・・・
ご教授お願いいたします。

052951905/01/21 12:34:21
自己解決しました。ありがとうございます。
0530デフォルトの名無しさん05/01/21 12:51:20
>>528
IsWindowEnabled
マァAPIの質問はAPIスレのがいいよ
0531デフォルトの名無しさん05/01/21 13:05:36
>>530
ありがとうございます。
0532デフォルトの名無しさん05/01/21 17:37:37
>>516
RuntimeDLLなしでアプリを実行すること。
0533デフォルトの名無しさん05/01/21 17:42:20
kernel32.dllをスタティックリンクする方法を教えてください。
0534デフォルトの名無しさん05/01/21 20:33:48
スタティックにしたらプロセスどこからもらうんだ?
0535デフォルトの名無しさん05/01/21 20:36:17
そんな巨大なプログラムはいらないな
0536デフォルトの名無しさん05/01/21 20:41:20
ふふふ、ランタイムDLLだといいたいんだろ
0537デフォルトの名無しさん05/01/21 20:49:16
ハローワールドならシバクゾごるぁ
0538デフォルトの名無しさん05/01/22 00:50:49
>>516
>VBと対比されて説明されることがありますけど、
>VBにできなくてDelphiにできることってなんですか?
 VBってポインタ扱える? 確か使えないと思ったが・・・・
 いずれにせよ
「VBにできなくてDelphiにできること」
の方が
「DelphiにできなくてVBにできること」
よりずっと多いとおもふ。
0539デフォルトの名無しさん05/01/22 01:10:32
ローレベルにVB詳しいヤツがここ見てると思うか?
0540デフォルトの名無しさん05/01/22 01:38:07
俺はVBでAPIを扱おうとしたところで挫折してDelに乗り換えた口。
0541デフォルトの名無しさん05/01/22 02:00:11
>>532-540
お客様、談話室が空いていますので、そちらのほうでゆっくりしていってください。
0542デフォルトの名無しさん05/01/22 04:17:16
VBはAPIを使おうと思ったら、自分で宣言しないといけないんだっけ?
APIを使うようなアプリは作るなって事か。
0543デフォルトの名無しさん05/01/22 04:46:20
>>542
Delだって同じジャン、ボケ
0544デフォルトの名無しさん05/01/22 04:47:42
>>543
?
Windows とかのユニットで宣言してあるじゃん。
0545デフォルトの名無しさん05/01/22 05:08:17
LongHornでもAPIを亡き者にしようと画策しているけど、
よっぽどAPIが嫌いなのね。
0546デフォルトの名無しさん05/01/22 05:15:23
>544 はハイレベルな人間。よってローレベルコードを必要とする柔軟なものは作れない。
0547デフォルトの名無しさん05/01/22 06:46:30
>>545
生でやるのは危険だからね。
0548デフォルトの名無しさん05/01/22 08:08:02
すんません。質問なんですが、
Form1.Create時にForm2のobjectを参照することは出来ないのでしょうか。
(Form2生成前だから?とか)
一応、Form1のonShowイベントで参照させて回避しましたが、気になるもので。
054951605/01/22 09:49:36
答えてくださった方々ありがとうございました。
>>541
スレ違いになる仕様の問題になることを質問してしまってスミマセン。
0550デフォルトの名無しさん05/01/22 10:42:46
質問いいですか?

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










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

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

PCがイカれててよくOS再インスコするので、こういうの迷う。
0568デフォルトの名無しさん05/01/22 18:28:22
>>566
他バージョンのDelphiとかBCBとか
0569デフォルトの名無しさん05/01/22 18:44:41
デフォルトにしとけ
0570デフォルトの名無しさん05/01/22 19:04:57
ゲームの作り方とかじゃなくて言語仕様など、言語そのものについての入門サイトで
おすすめなとこありますか?
0571デフォルトの名無しさん05/01/22 19:12:57
http://www.ikuta.jwu.ac.jp/~yokamoto/openwww/objpaspdf/
0572デフォルトの名無しさん05/01/22 19:44:26
言語仕様なんてろくに理解しないまま
プログラムを組んでる俺は勝組
0573デフォルトの名無しさん05/01/22 19:53:29
言語仕様よりアイデアだな
表面なら、どうすれば操作性が良いか、見栄えが良いか・・・
中身なら、どういうクラス設計が使いやすいか、関数の引数をどうするか・・・
0574デフォルトの名無しさん05/01/22 20:15:28
と、言語仕様もよく分からないまま考えても無駄
0575デフォルトの名無しさん05/01/22 20:57:10
>>571
thx!
適当に入門書購入したらコンポーネントの解説ばっかで文法のこと全然書いてなくて困ってました。
ついでに書籍でお勧めってありますか?電車でチマチマ読みたいとき用に。
0576デフォルトの名無しさん05/01/22 21:01:05
pdf無かったっけ?それでも印刷しとけよ
0577デフォルトの名無しさん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;
0578くぁwせdrftgyふじこlp;@:「」05/01/22 22:09:38
ZZZ......
          +   へ    ,,,..-'"へ ⌒ヽー-、..,,,...-イ''⌒ヽ
             /   ゝ-─‐-/'  ヽi!  ヽ、     i,  ,ノ
      +   /"             i!  .... ゙'';;..   Y"
        ,/' ''''''   ''''''       〈  :::::.  '';;...  'i- 、,,
       + i'(-==),   、(==-)、    'i,  ::::::::   ::::  'i!   ゙"ヽ、
          i!   ,,ノ(、_, )ヽ、,,         'i  :::::::::  ''':;;;  ヽ、  ゙)
 ワカッタニャー 'i,::::: `-=ニ=- '       ,/ヽ ''''        'i,-‐'"
       /⌒ヽ、 `ニニ ´   :::,,-‐    ゝ   .............    ヽ、
       (    ヽ、 u ,,.-‐''"       ,)  :::::::::      '\,
        ヽ、,,  ノ,.-‐''"      ノ-‐''"´( :::::::::::          )
          "~ (       ,. -'"     ヽ、    _,,... -‐─'''"
             ヽ、,,.. -‐'''"         ``゙"´~

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

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

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

ここ読むと、WM_SETTEXT WM_GETTEXT WM_COPYDATA だけが例外的にOSまかせに
できるようだ
0583デフォルトの名無しさん05/01/23 02:31:39
他アプリのテキスト変えるよーなの作っちゃイヤン
0584デフォルトの名無しさん05/01/23 02:40:08
それは言えてる
0585デフォルトの名無しさん05/01/23 10:01:02
鈴木教授マンせー
0586デフォルトの名無しさん05/01/23 13:01:11
数値リテラルとstrToIntのフォーマットを教えてください
0587デフォルトの名無しさん05/01/23 14:13:12
IPアドレスをLongWord型で取得できたのですが
それをホスト名に変換したいのですが
gethostbyaddr()を使うのかなといったところまでは
調べられたのですがその先になかなか進めません。
もしよろしければ教えていただけないでしょうか?
よろしくお願いします。
0588デフォルトの名無しさん05/01/23 16:47:47
ソケットコンポのソース見りゃいいじゃん
0589デフォルトの名無しさん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;
0590デフォルトの名無しさん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回目は接続、送信、切断までログがでる。
次はまた送信まで。                 以上です。
0591デフォルトの名無しさん05/01/23 20:21:49
>>590
ほんとだ。今まで気付かなかったw

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

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

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

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

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

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

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

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

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

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

「送信」ボタンでは接続だけ
↓
OnConnectで送信
↓
OnWriteで切断

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

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

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

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

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

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

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

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

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

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

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

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

var
iData: Integer;
begin
iData := 1;
ComboBox1.Items.AddObject('hoge', TObject(iData));
end;
065265005/01/24 12:36:43
>>651
そっか!
できました
ありがとうございました〜
0653デフォルトの名無しさん05/01/24 12:51:51
なんでTObject型なんだろな、TreeNode.DataなんかはPointerなのにさ
0654デフォルトの名無しさん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でも同じようなことができないでしょうか?
0655デフォルトの名無しさん05/01/24 13:04:34
DLL内のコードがいじれないならできない
0656デフォルトの名無しさん05/01/24 13:06:21
スレッド作りゃいいだけ同期は考えな
0657デフォルトの名無しさん05/01/24 13:08:24
RichEditまたはMemoコンポーネントにおいて、
行ごとに文字色を変えるには、どうすればよいのか
ご存知の方、教えてください。よろしくお願いします。
0658デフォルトの名無しさん05/01/24 13:08:48
スレッド内で100%になるなら同じだろ
0659デフォルトの名無しさん05/01/24 13:10:15
>>657
TMemo ではできない
TRichEdit ならできるがそんな使い方はおすすめできない
0660デフォルトの名無しさん05/01/24 13:12:55
そのDLLの関数を呼ぶスレッドのプライオリティ下げりゃ落ちるだろ、処理時間増幅だが
066165405/01/24 13:14:39
>>655
DLL内部はいじれます
DLLからコールしてる関数は0で正常、それ以外でエラーと定義しているので
エラーコードは必ず0以上と仮定するなら

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

でいけそうですかね?

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

ならなんとでもなるんでは。Sleepかませたり
0664デフォルトの名無しさん05/01/24 13:23:40
>657
素直にGDIオンリーでテキストエディタを作りたまえ
0665デフォルトの名無しさん05/01/24 14:40:27
DLLで思い出したよぉおッッ!!!
Explorer.exeにインジェクションとかやりてぇええええ
0666デフォルトの名無しさん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があれば元のソースはいらないと思うのですが何が悪いのでしょうか?
0667デフォルトの名無しさん05/01/24 16:57:16
>>666
dcuは要る
066866605/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を直接登録)
0669デフォルトの名無しさん05/01/24 18:40:02
>>660
落ちない。知ったか死ね。

>>661
ついでにお前も死ね。
0670デフォルトの名無しさん05/01/24 18:48:37
不機嫌なヤツだなー
かわいそうに。もしかしてD2005使ってた?
0671宣言と引数が違うのにエラーにならない?05/01/24 21:55:02
 私の使用している 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 されている形跡はあり
ません。どうしてこれでよいのでしょうか。
 大変レベルの低い質問かもしれませんが、ご教示いただけたら幸いです。
0672デフォルトの名無しさん05/01/24 22:02:15
>>671
ヒント:
Longint = -1
0673デフォルトの名無しさん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;

は 前者と同じ

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

動作中にこんなことをしたいのなら無理
0680デフォルトの名無しさん05/01/24 23:31:30
ini ファイルとかレジストリとかなんのためにあるか考えると、exe のなかに動的に
何かを保存することはできないのでは
0681デフォルトの名無しさん05/01/24 23:39:56
レジストリ使う奴はアホ
0682デフォルトの名無しさん05/01/24 23:44:32
そんなことでアホかどうか判断するヤツはアフォ
0683デフォルトの名無しさん05/01/24 23:48:52
exeと同じ場所にini作る香具師はアホ
HKEY_LOCAL_MACHINE以下にレジストリキー作る香具師もアホ
0684デフォルトの名無しさん05/01/24 23:51:45
そんなことでアホかどうか判断するヤツはアフォ
0685Delフサギコ ◆A6VzDeLphI 05/01/25 00:31:41
 ∫,,,,,,,,,∧,,∧  exeと同じ場所にini作る場合は
⊂,,,,,,,,,つ,,゚Д゚ミつ  gethostnameでホスト名を得て
           ホスト名.iniとしておけば
         UNCとかでexe呼び出ししても
        設定がマシン別になって幸せになれる?かな
0686デフォルトの名無しさん05/01/25 00:38:23
そろそろ別の質問いこうか
0687デフォルトの名無しさん05/01/25 01:34:38
定型データ、例えば2chのdatを読み込んでひとまとまり毎に配列にしまうにはどうすればいいですか
すげー基本だろうけどわかりません
0688デフォルトの名無しさん05/01/25 01:38:37
例えが悪いので答えられない
0689デフォルトの名無しさん05/01/25 01:44:59
自分でも何が言いたいかよくわからないので出直してきます
069064705/01/25 02:28:36
>>649
亀レスですみません。
ありがとうございます。
それで行きます。
0691デフォルトの名無しさん05/01/25 03:00:35
おまいらの為に俺がなんでも作ってあげよう
何がしたいのか言ってみ
0692デフォルトの名無しさん05/01/25 03:43:19
>>691
ありとあらゆる事をしたい。
何でも出来るアプリを作ってくれ。
0693デフォルトの名無しさん05/01/25 08:48:34
>>691
おなにー
0694 05/01/25 09:47:33
>>691
Winny3
0695デフォルトの名無しさん05/01/25 10:04:12
>>691
Form1のButton1をクリックすると
下着姿の森公美子が俺の家にやってくるアプリをお願いします。
0696デフォルトの名無しさん05/01/25 10:18:52
>>691
http://pie.bbspink.com/test/read.cgi/erog/1032797915/271-272n
のT3233310.DrawPictureの実装をお願いします
0697デフォルトの名無しさん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;
0698デフォルトの名無しさん05/01/25 17:09:02
TComboboxについて
�@TComboboxのリスト内の項目数はどうやって取得するのでしょう?
�A文字列入力後、OnExit時にその文字列がリストにある場合OnSelectへ遷移するのですが、
 OnExit内でOnSelectに遷移するかどうか判断できないものでしょうか?
 (OnExit時点ではItemIndexがきちんと入っていないようなので・・・)
0699デフォルトの名無しさん05/01/25 17:14:09
>>698
TComboBox.Items.Count
TComboBox.Items.Indexof(文字列)でどうだろう
0700デフォルトの名無しさん05/01/25 17:30:26
INIの変わりにXML使ってる人いる?
使ってる人は、どんな感じですか?
070169805/01/25 17:47:45
>>699
できました!
ありがとうございます
やっと仕事が進められます(泣

3時間も悩んでしまった自分(鬱
0702デフォルトの名無しさん05/01/25 19:55:03
Del 7 Proで EmbeddedWbを使うにはどうしたらいいでしょうか?
0703デフォルトの名無しさん05/01/25 20:12:56
自作のソフト、exeと同じ場所にini作るようにしてるんですけど
どなたか>>683がなぜダメなのか補足していただけませんか
0704デフォルトの名無しさん05/01/25 20:19:49
>>708
Winのユーザーごとに設定保存しろってことでしょ
0705デフォルトの名無しさん05/01/25 20:38:39
>>700
INIファイルの代わりに使うのは面倒。
オブジェクトを丸ごと保存・読み出しする仕組みの備わってる言語なら結構便利かも。
DelphiってTXMLStreamみたいなのはないのかな。
xml.WriteComponent(Data)できたら嬉しいんだけど。
0706デフォルトの名無しさん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
070754805/01/25 20:51:17
今更感たっぷりですが、皆様ありがとうございます。
0708デフォルトの名無しさん05/01/25 20:53:40
レジストリ使う奴氏んで
使うんならアンインストーラー付けてちゃんとクリーンにしてくれな
0709デフォルトの名無しさん05/01/25 21:14:39
>>697
shift_jis → iso-2022-jp じゃなくて、全角を半角にしたいんですよね。
LCMapString API を使う。
0710デフォルトの名無しさん05/01/25 21:14:50
どうして? 使われないんだから、放置でもよくないか?

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

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

ToolButton1.Left := 100;

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

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

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

当方その程度のスキル・・
0733デフォルトの名無しさん05/01/26 03:25:37
あなたのレベルであっても、何をして、何のエラーが出たかぐらい書く事出来るでしょ?
0734デフォルトの名無しさん05/01/26 03:40:39
エラー報告するために使ってる訳でもなし・・・
0735デフォルトの名無しさん05/01/26 03:52:11
意味不明だが、掲示板は初めてか?
0736デフォルトの名無しさん05/01/26 04:05:07
>>717
単純に入れ替えをするだけなら、これで出来ましたけど。
TForm1.Button1Click>ToolButton2.Left:= -ToolButton1.Left;
TForm1.Button2Click>ToolButton1.Left:= ToolButton2.Left;
0737デフォルトの名無しさん05/01/26 04:07:23
ほっといてやれよ。そのうち自分で気付くから。
0738デフォルトの名無しさん05/01/26 04:09:41
忙しいUIだな。使いづらそう
0739デフォルトの名無しさん05/01/26 04:12:42
うむ、ボタン位置が変わったら使い慣れしない人が殆どだろう
0740デフォルトの名無しさん05/01/26 09:42:59
Action.ShortCutにCtrl+/割り当てても呼び出せないんだけどそういうもの?
0741デフォルトの名無しさん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だと問題無くインスコール出来ました。
0742デフォルトの名無しさん05/01/26 11:48:58
WWW
0743デフォルトの名無しさん05/01/26 12:35:26
いいかげんうるせぇなマルチ野郎
0744デフォルトの名無しさん05/01/26 15:36:20
KOLをのフォーム上に通常のソケットコンポーネントを置いたのですが
未定義の識別子となってしまいます。KOLのフォーム上で利用するには
何かしなければならないのでしょうか。
0745デフォルトの名無しさん05/01/26 15:41:28
なんでKOLなんか使うんだよ
0746デフォルトの名無しさん05/01/26 15:56:57
KOLのソースを持っていて読めるて改良してフィーdバックできるなら使え、
使ってくれ。コメントだけでも良いぞ
0747デフォルトの名無しさん05/01/26 16:14:11
そんなレベルじゃないだろ >>744 をみれば・・・
0748デフォルトの名無しさん05/01/26 16:16:35
ここの連中は教える気ねーよな。
相手が分からないと分かっててわざと分からない事を言ったり
嫌味ったらしくグダグダ書いたり。

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

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

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

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

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

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

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

以上
0793デフォルトの名無しさん05/01/27 16:16:18
まぁガンバリナ
0794デフォルトの名無しさん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になります。
どうしてですか?
0795デフォルトの名無しさん05/01/27 17:24:38
ほんとのToolbar32クラスはカスタマイズ可能なんだけど、VCLはそれをさぼってるんだよな
0796デフォルトの名無しさん05/01/27 17:39:20
>>794
自分は全削除・全追加で逃げた。
0797デフォルトの名無しさん05/01/28 02:13:45
NameA
MailA
commentA(ここが複数行の場合がある)
NameB
MailB
commentB
・・・
のように続くデータを繰り返し処理するときはどうすればいいですか
途中が複数行になる場合があるのでNameをTstrings.Lines[i*3]とかで取得できません・・・
0798デフォルトの名無しさん05/01/28 02:17:20
複数行になってるかどうかどうやって知ることができるの?
それが分かればかいけつなんじゃないの?
0799デフォルトの名無しさん05/01/28 02:17:26
>>797
繰り返し、どうしたいの?
「複数”行”」って、どういう意味?
0800デフォルトの名無しさん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
0801デフォルトの名無しさん05/01/28 02:32:20
自分でデータ構造考えろ
たとえば
NameA[#0]MailA[#0]commentA[#0]NameB[#0]MailB[#0]commentB[#0][#0]....NextEec
当然バイナリとして扱う、テキスト定型に展開する処理も必要
あくまで一例であってどういう構造にするかは作者の勝手
080279705/01/28 02:33:57
レスありがとう、基本的にデータの構造は変更しない前提で悩んでましたが
このままだとどうしようもなさそうなので構造から変えることにします
0803デフォルトの名無しさん05/01/28 08:37:38
Labelを使って右から現れて左へ消える、
流れる文字列を表示するにはどうすればいいですか?
ニュースの字幕みたいなことをしたいんですが…。
0804デフォルトの名無しさん05/01/28 09:35:45
TStrings[n] := TStrings[n] + 'っうぇうぇ'; としたらリストのインデックスが範囲を超えてると言われました
文字列の末尾にただ連結させたいんですがどうしたらいいのでしょうか
0805デフォルトの名無しさん05/01/28 10:15:46
Delphi2005 はかなりヤバいっすか?
Delphi8 にしといた方がいいっすかね…。
まだ買えるのかな、Delphi8。
0806デフォルトの名無しさん05/01/28 10:19:14
>>803
ひとつの手段としては、タイマー使ってLeftを-1すれば良い
0807デフォルトの名無しさん05/01/28 10:33:02
>>804
Count-1 を使えば? n が駄目なんだよ
0808デフォルトの名無しさん05/01/28 10:36:16
>>803

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

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

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

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

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

どうもスマートじゃないな・・
0828デフォルトの名無しさん05/01/28 16:53:21
>>822
よ〜わからんが、俺ならこうする。
ヒント出したいコントロールのShowHintをTrueにして、TApplicationEventsをはっつける。
OnShowHintって言うのがあるからそこで説明のヒントを書くべし。
ヒント出したい単語はTStringListやらのクラスで読み込むときになんか目印でもつけとけ。
Hint出すたびに文字列を走査してたんじゃ遅いからな。でも50行ぐらいならそれでもよし。
0829デフォルトの名無しさん 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;
0830デフォルトの名無しさん05/01/28 18:41:19
やり方は色々だが
Upperなどで大文字にした文字バッファ内で検索して文字位置を得る
それと、検索はPosだろ
0831説明下手ですいません05/01/28 18:43:15
>>827さん
>>828さん

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

0832デフォルトの名無しさん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;
083382205/01/28 19:01:38
続けてすいません。

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

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

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

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

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

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

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

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


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

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

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




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

var
 Cout: Integer;
begin

end;
0846デフォルトの名無しさん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;
0847デフォルトの名無しさん05/01/28 23:21:45
セル内文字をマルチラインにしたいのか?

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

フレーム作って独自でやってるとか書いてあるが、その実装方法が問題なんじゃない?
パネルを動的に作ってやったのあるが普通に重くは無い。
0851デフォルトの名無しさん05/01/28 23:46:08
>>843
Length(s) - Length(StringReplace(s, c, '', [rfReplaceAll]))
0852デフォルトの名無しさん05/01/28 23:48:16
TScrollBoxにTStringGridをおいているのですが、
Gridから別のコントロールにフォーカスを写して戻すと
ScrollBoxのスクロール位置が0に戻ってしまいます。
ScrollBox.ScrollInViewが呼ばれているのが原因みたいなので、
これを無効化したいのですが、
ScrollBoxを継承してpublicにScrollInViewを定義しなおせばいいのでしょうか?
定義する場所を変えたりしてやったんですがどうもうまくいかないのでよろしければご教示下さい。
085385205/01/28 23:57:15
すみません書き込んだ直後に見つかりました…
AutoScrollInViewの方をオーバーライドすればよかったみたいです。
0854デフォルトの名無しさん05/01/29 00:59:59
>>839
おいおい、ちゃんと意味わかって使えよ。
StringとWideStringの違いはわかってんのか?
0855デフォルトの名無しさん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してくれるんでしょうか?
0856デフォルトの名無しさん05/01/29 05:47:39
piがうまく開放されるかどうか?
心配するな、うまい事行ってる、あとは
心配するな
0857デフォルトの名無しさん05/01/29 06:22:06
されないだろ
明示的にDispose(PInteger(p))しないと
0858デフォルトの名無しさん05/01/29 06:23:47
嘘言うなよ
TListが管理するのは、ポインタアドレスでポインタの先は何もしないだろ
Delete時にDisposeしな
0859デフォルトの名無しさん05/01/29 09:58:12
case文で
1 :
2 :
それぞれのところに複数行ずつ処理を書きたいときはどうすればいいですか
0860デフォルトの名無しさん05/01/29 10:03:25
1:
begin

end;
2:
begin

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

TMyThread.Create(False);

だけ書いても、Executeで永久ループ等無ければ
ちゃんと破棄されてリーク等はありませんよね?
0863デフォルトの名無しさん05/01/29 13:06:39
気になるならMemCheck辺りで確かめとけ
0864デフォルトの名無しさん05/01/29 13:29:50
>>863
MemCheckって初めて使った。
ちゃんと破棄されていたようです、ありがとう。
0865デフォルトの名無しさん05/01/29 13:36:30
ディレクトリコンボボックスで、準備の出来ていないドライブをクリックした時に
I/Oエラーを表示させないようにするには?OnClickイベントではダメみたいでした。
0866デフォルトの名無しさん05/01/29 13:38:06
あっ!ドライブコンボボックスでした!
0867デフォルトの名無しさん05/01/29 13:47:30
>>862
心配なら、FreeOnTerminateを明示的にtrueにしておけ
0868デフォルトの名無しさん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/
0869デフォルトの名無しさん05/01/29 14:27:13
>>865
TDriveComboBox.onChangeイベント内で例外捕捉

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

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

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

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

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

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

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

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

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

0893デフォルトの名無しさん05/01/30 07:02:00
TabSheetやGridは動的に作ってるのか?
検索や表示内容部位は不要でTabSheetやGridを設定してるところ晒してみ
0894デフォルトの名無しさん05/01/30 11:35:30
>>892
StringGrid - tabシート…とだんだんコントロールを外していってシンプルな形にしていって
どれを外したときに落ちるのかを検証して原因を特定汁。
0895sage05/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';

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

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

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

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

var hoge Variant;

if hoge = nil then ×互換性のない型
if hoge = Unassigned then エラーは出ないけどあってるかわからない。
0925デフォルトの名無しさん05/01/31 15:58:05
ヒントじゃ
CreateOleObjectの戻り値はIDispatch
0926デフォルトの名無しさん05/01/31 16:09:08
IDispatch(hoge) = nilですか?
0927デフォルトの名無しさん05/01/31 16:14:00
失敗すると例外発生するわけで、そもそもチェックする必要がない。
0928デフォルトの名無しさん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;
0929デフォルトの名無しさん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;

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

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

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

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

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

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

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

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

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

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

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

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


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

「へりくだれ」とは言わないけど、もう少し大人な質問の仕方が
あると思う…。
0955デフォルトの名無しさん05/02/01 02:02:29
>>954
すいません&ありがとうございますです…。気をつけます。
0956デフォルトの名無しさん05/02/01 02:12:46
>>953
Canvas.Pixels[x,y]
という話じゃなかったら場所って何か説明しろ
0957デフォルトの名無しさん05/02/01 02:41:22
>>956
すいません、えっとデスクトップとか今画面に開いてるものの色です
0958デフォルトの名無しさん05/02/01 02:47:47
>>957
GetWindowDC、TCanvas、Pixelsあたりを検索してみてください。
0959デフォルトの名無しさん05/02/01 04:53:07
GetWindowDCなら、APIのGetPixelを使った方が良いでしょう。
0960デフォルトの名無しさん05/02/01 07:08:22
実行時にあるフォームのサイズや位置を変更したとき、
それを他のフォームに反映させるにはどうすればいいですか?
0961デフォルトの名無しさん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
0962デフォルトの名無しさん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.
0963デフォルトの名無しさん05/02/01 10:19:43
procedure TForm1.WMMove(var msg: TWMMove);
begin
FormResize(nil);
end;

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

か。
0965デフォルトの名無しさん05/02/01 10:53:29
>>951
むかし同じ事をしたことがあるけど、確かlinesをいじるとエラーが出ない?
0966デフォルトの名無しさん05/02/01 17:53:31
>>957
>>958
トン
0967デフォルトの名無しさん05/02/01 17:54:52
>>958
>>959
あり
0968デフォルトの名無しさん05/02/01 19:03:26
ありがとう、って書くのも面倒なんか?
0969デフォルトの名無しさん05/02/01 19:04:56
>>968
うざ
0970デフォルトの名無しさん05/02/01 19:12:36
うざい、って書くのも面倒なんか?
0971デフォルトの名無しさん05/02/01 21:00:56
>>970
ほ
0972デフォルトの名無しさん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のところ
以外変えてません。どうしたらいいでしょうか?
0973デフォルトの名無しさん05/02/01 21:10:15
行末にセミコロン ; 付けろ
0974デフォルトの名無しさん05/02/01 21:17:19
特定のディレクトリ内にあるファイル数を取得するにはどうしたらいいでしょうか?
また、その中で特定の文字列が先頭にあるファイル数を取得するにはどうすればいいんでしょうか?
0975デフォルトの名無しさん05/02/01 21:17:55
>>973
あっ…。ありがとうございます。
激しく基本的なことが抜けてました。
0976デフォルトの名無しさん05/02/01 21:47:28
>>965
出るよ。コメントにも書いてあるよ。
0977デフォルトの名無しさん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;

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

with Apple do
処理;
end;

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

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

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

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

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

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

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

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

超ムカツク
0989デフォルトの名無しさん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);

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

でも、そこまでするくらいならさっさと一時変数にしてスッキリさせる方向だよね。
0992デフォルトの名無しさん05/02/02 08:12:16
>>990 同意。
0993デフォルトの名無しさん05/02/02 11:24:27
おしえてください。
ttp://www.vector.co.jp/soft/win95/writing/se196641.html?y
これ使っているんですが
Printer.Canvas.TextOutと一緒に印刷したいときどうすればいいのでしょうか?
クリップボード使うとなんかエラーがでます。
0994デフォルトの名無しさん05/02/02 11:29:27
TImage と同じなんだから、その Canvas から Printer.Canvas に適当に縮小拡大して
描くだけなのでは
0995デフォルトの名無しさん05/02/02 11:39:14
とあるDLL中の関数をDelphiから呼び出そうとしています。
DLLのヘッダファイルを読むと
extern "C" _declspec(dllimport) __time64_t #関数名#();
という定義になっていました。

この関数は日付を返す関数で、戻り値の型が __time64_t となっています
この値をTDateTime型に変換する方法を教えて下さい。
0996デフォルトの名無しさん05/02/02 11:50:47
Linux/WineでDelphiアプリは動作しまつか?

動作するんならKylix要らなくなるとか。
0997デフォルトの名無しさん05/02/02 13:12:27
するわけねぇーだろ。
0998デフォルトの名無しさん05/02/02 13:16:49
次スレ
0999デフォルトの名無しさん05/02/02 13:32:46
Delスレがどんどん消滅していく。




自分もBCB/Del使っててもスレは見なくなったな。
1000デフォルトの名無しさん05/02/02 13:35:09
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。