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

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

■ このスレッドは過去ログ倉庫に格納されています
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/
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という
いかにもサンプルっぽいファイルがあったのでそれで試した。
■ このスレッドは過去ログ倉庫に格納されています