くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2016/10/13(木) 13:21:54.84ID:7i5E+q2+
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

■Delphi XE6 Professional/Enterprise/Ultimate/Architect エディション(トライアル版有)
64bit Windows、Mac OS XからiOS、Androidのアプリも開発可能。ライブラリのソースコード付き。アカデミックライセンス有り。
旧バージョン(XE6/5/4/3/2/XE/2010/2009/2007/Delphi 7)のライセンス取得とダウンロードが可能。(アカデミック不可)
ttp://www.embarcadero.com/jp/products/delphi

■Delphi XE6 Starter エディション
個人/5人以下の企業・組織向け。年間売上1000US$以内の商用開発可。
(※)Delphi、Visual Studio等の有償/無償の開発ツールユーザーが対象。インストール確認は特に行わない。
ttp://www.embarcadero.com/jp/products/delphi/starter

■Embarcadero RAD Studio XE6 (Delphi、C++Builder、HTML5 Builder等を含むビジュアル開発スイート)
ttp://www.embarcadero.com/jp/products/rad-studio

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

<過去スレ>
DelWiki (Delphi 関連の過去スレッド)※行方不明
ttp://delwiki.info/?
2017/11/26(日) 21:19:52.87ID:JMtUYhzN
有難うございます。
2017/11/30(木) 11:55:54.04ID:jryz1LGC
TRegistryをもちいて、
レジストリの情報を拾いたいのですが、

レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanesers\Eras

ひろいたい情報
名前、データ
1868 01 01, 明治_明_Meiji_M
1912 07 30,大正_大_Taisho_T

const
AppKey='\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanesers\Eras';
var
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.OpenKey(AppKey,False) then begin

この後どうすればいいんでしょう?

Reg.GetValueNames(MEMO.Lines);

としてもMEMOには何もかえってこないのです。
2017/11/30(木) 16:38:33.08ID:af+3x/Ty
キーが違うようです。
AppKey='\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras';
2017/11/30(木) 17:26:14.42ID:jryz1LGC
>>418
その通りでした。
Reg.OpenKey で戻りを気にしていなかったので、悩み続けてしまいました。
ありがとうございます。感謝です。
2017/12/08(金) 21:17:46.94ID:Gxx/XJ9D
誰か行かないの?
https://techplay.jp/event/639177
https://techplay.jp/event/641383
2017/12/11(月) 15:09:59.51ID:r0biDCTF
Calender、Japaneseもわかってない人は論外
2017/12/12(火) 16:52:51.98ID:F4p+lHsn
昔あったdelphiのフリーコンポーネントを集めたサイトって無くなっちゃた?
2017/12/12(火) 18:31:07.66ID:D0b6rm60
古くからのDelphiコンポーネントが全て置いてある
アーカイブ的なサイトってないんだろうか
2017/12/12(火) 21:12:25.60ID:ABDe/NWv
ふと思ったけどTImageListじゃなく
TSoundListコンポーネントってない?
用途はありそうだが

てかTImageListってどういう仕組みで
画像を保持してるんだろう
2017/12/14(木) 09:04:39.76ID:XL4elc7V
DSPとかtorrysとか懐かしいな
2017/12/24(日) 16:19:13.24ID:dCGOIGeG
Tetheringコンポーネントを使ってアプリ間データ共有を試してるんだけど
コンポーネントをフォームに置くだけでusesに追加される
IPPeerClient/Serverファイルがないって怒られるんだけど

Starterだと実はTetheringコンポーネントは使えない?
2017/12/24(日) 16:33:23.07ID:NhonSez5
>>426
テザリングの項目がStarterは空欄になってるから多分使えない
2017/12/24(日) 19:06:27.16ID:dCGOIGeG
>>427
そうだよね

だったらTetheringコンポーネントなんか
選択できなくすればいいのに

ただSystem.Tether.*.dcuはすべて揃ってるぽいんだよな
429デフォルトの名無しさん
垢版 |
2017/12/28(木) 21:34:46.01ID:JOEtu7v7
質問させてください。
仮想通貨取引所で資産状況を見るプログラムを書こうとしているんですがうまくいきません。
エラーメッセージが、Signature mismatchとでます。

var
s,nonce,key,secret:string;
PostURL : String;
PostStream : TStringList;
ResStream : TStringStream;

begin

PostURL := 'https://api.zaif.jp/tapi';
PostStream := TStringList.Create;
ResStream := TStringStream.Create('');
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions - [hoForceEncodeParams];
nonce := DateTimeToUnix(Now,true).ToString();
IdHTTP1.Request.ContentType:='application/json';
IdHTTP1.Request.CharSet:='uft-8';
PostStream.Add('method' + HTTPEncode('get_info2'));
PostStream.Add('nonce' + HTTPEncode(nonce));
idhttp1.Request.CustomHeaders.AddValue('Key','XXXXXXXXXXx');
idhttp1.Request.CustomHeaders.AddValue('Sign','XXXXXXXXXXXX');
IdHTTP1.Post(PostURL, PostStream, ResStream);
showmessage(ResStream.DataString);
end;

C#では以下のように書くらしいのですが、ご教示願えないでしょうか。
https://kokenji.net/zaif-api/
2017/12/28(木) 22:07:28.82ID:ThR79eg8
>>429
せめtw署名生成ルーチンくらい書こうぜブラザー
たぶんHmacSHA256やとは思うが
2017/12/29(金) 07:48:05.15ID:yZ5IlcO4
>>430
ありがとうございます。
SHA256でメッセージ暗号化するってことでしょうか?
それとも別の通信するのに必要な処理でしょうか?
2017/12/29(金) 08:47:31.32ID:cWaP921A
仮想通貨って電気代が安い国の人がが圧倒的に有利だよね
2017/12/29(金) 11:43:27.38ID:PDCF/c1K
>>431
URLから察するにZaifやと思うが、公式のAPIリファレンスまず読もうや
リファレンスで書いてる事がわからないなら都度質問したらええ
今の状況を人は丸投げと言う
2018/01/07(日) 11:23:55.22ID:KBdbbCLH
買っとけよ
https://www.packtpub.com/all?search=Delphi
2018/01/07(日) 12:30:45.63ID:S38kpWyE
漬物石
2018/01/07(日) 13:53:28.81ID:8Eqg8PLM
>>432
自分で太陽光とか風とか地熱とか利用して発電できるならそいつが一番有利
2018/01/08(月) 09:12:47.06ID:j35IDJ3/
Delphi 10.2 Tokyo で、

  @クラス定義部分で Ctrl+Shift+C を押してメソッド実装部を自動生成すること
  Aメソッド呼び出し部分でCtrl+クリック で定義部にジャンプすること

ができないのですが、できるようにする方法はありますか?
2018/01/08(月) 10:28:05.36ID:2Q7Kliqk
>>436
ふむ。結局中国が一人勝ちして終わりやな。
2018/01/08(月) 12:45:46.64ID:ictcT8i6
>>437
うちはできるからおま環
ショートカットの設定とか見直したらええんちゃう
2018/01/08(月) 18:50:31.06ID:j35IDJ3/
>>439
俺環とわかり、ありがたし。
サンキュ!
2018/01/09(火) 22:26:41.17ID:tEYlJ576
Starterじゃないの?
2018/01/09(火) 23:21:34.37ID:DSUTqw5a
そうです。
Starterです。
無料のやつです。
2018/01/10(水) 22:49:34.96ID:A/FWCqkf
Starterは支援機能削られてる
コード補完、ライブコードテンプレート、リファクタリング、コマンドラインツール、コード整形、クラスエクスプローラ、ユニットテスト、翻訳ツールなどの支援機能

コード補完はつけて欲しかったね
2018/01/10(水) 22:58:49.24ID:0V4diR3n
そうなんですか・・・
コード補完がないのはキツいなぁ。
2018/01/10(水) 23:22:20.51ID:52V+kDTj
Starterまじでコード補完ないんだww
ひでぇww
2018/01/11(木) 07:06:55.59ID:I3euztjG
5年間Starter使ってるけど
もう慣れた
2018/01/19(金) 14:12:23.13ID:3mDLycuV
fmxで実行時に複数のpanelを動的に作成し
その背景を別の色にしたいんだけど

設計時にpanelのカスタムスタイルを変更するのは簡単だけど
実行時に変更する方法が分からない

検索すると質問は結構あるけど
答えは古いバージョン対応みたいで
うまく機能しない

誰かヒントをお願いします
2018/01/19(金) 15:02:24.17ID:LVSymK+/
>>447
TRectangleマジおすすめ
2018/01/19(金) 22:25:43.24ID:9RJTUZM2
>>448
バッチリだった
ありがとう
450デフォルトの名無しさん
垢版 |
2018/02/02(金) 16:54:03.50ID:MJtWQFFO
どうしても分からないため、教えてください。
アプリとしては、D&DでFoamに落としたときにTListboxにカレントフォルダのファイルを列挙します。
とんちんかんなメソッドでもとかもか構わないので、是非ともお願いいたします。

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, TRUE);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Handle, FALSE);
end;

procedure TForm1.FilesDropped(var Msg1: TWMDropFiles);
var
FNameSize: UINT;
Count: UINT;
FileName: array [0 .. 255] of Char;
FileName1: string;
LFilesList: TStringDynArray;
LFileName: String;
begin
FileName1 := '';
451デフォルトの名無しさん
垢版 |
2018/02/02(金) 16:54:26.34ID:MJtWQFFO
try
Count := DragQueryFile(Msg1.Drop, $FFFFFFFF, nil, 0); // A
if Count > 1 then
Abort; // B
FNameSize := DragQueryFile(Msg1.Drop, 0, nil, 0) + 1; // C
DragQueryFile(Msg1.Drop, 0, FileName, FNameSize); // D
FileName1 := StrPas(FileName); // E
finally
DragFinish(Msg1.Drop); // F
end;
if FileName1 = '' then
Exit;
Label1.Caption := FileName1;
DirName := ExtractFileDir(FileName1);
Label2.Caption := DirName;
begin
// APath内のディレクトリ内のファイルリスト作成
// [マイコンピュータ]等の特殊フォルダは指定しても無効
LFilesList := TDirectory.GetFiles(LDir);
for LFileName in LFilesList do
begin
ListBox1.Items.Add(TPath.GetFileName(LFileName));
end;
ListBox1.Items.EndUpdate;

end;
end;
2018/02/12(月) 17:53:30.98ID:wyyYgDNO
>>443
Starterにはコード整形というのはないのですか、一生懸命探してしまった(笑)
CodeFormatterありがたい!
2018/02/12(月) 21:54:05.03ID:lRsL3DkL
LDirはどこで定義されてんだ?
2018/02/13(火) 11:15:08.11ID:Wl4kHNJK
メモリー共有が簡単に出来るクラスってある?
2018/02/13(火) 20:34:12.21ID:ZGwVrA8k
>>454
ググったら、名前付きパイプによるプロセス間通信見つけた。

http://francois-piette.blogspot.jp/2013/04/inter-process-communication-using-pipes.html?m=1

使ったことないので、使い心地までは分かりかねます。
2018/02/16(金) 01:22:45.51ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
2018/03/14(水) 17:54:41.12ID:joCYD0wr
10.2.3出たな

でー、インストール時にもインストール後の「プラットフォームの管理」にもAndroidとかiOSのが出ないんだけどどうなってるんや?(Pro Ed.
2018/03/27(火) 23:04:26.37ID:krpCtSiN
D6に入れて使ってるIndy10 https対応してたのね。
dllをexeと一緒に置いておくだけ、あちこちで書かれてるIOHandlerを差換えって
必要ないのね。
2018/04/07(土) 17:54:05.06ID:uobWZe4y
すみません教えてください。
長いこと格闘していたのですが、どうしても攻略できません。

ソフトとしてはwavファイルをD&Dでフォームに落とすと、このフォルダー内のファイルをTListBox内に列挙して
フォーム落としたファイルをMCIを使って再生させるというものです。

只、落としたファイルをファイルPATHで渡しても何も起こらず苦慮しております。
長いこと何やってたんだと叱責を受けるかもしれませんが、よろしくお願いいたします。
意味のとりにくい文章で申し訳ありません。

ttps://www.axfc.net/u/3901529?key=delphi
2018/04/08(日) 14:23:14.02ID:+Wdeqy0/
>>459
ダウンロードはメンド

問題の部分だけでも書いて
2018/04/08(日) 16:43:34.30ID:yiR7WAE6
>>459
ダウンロード全然始まんないぞ
てかアップローダ選ぼうぜ
2018/04/08(日) 19:31:28.65ID:aHOcMh8N
ちょっと長いのですが…

procedure TForm1.FilesDropped(var Msg1: TWMDropFiles);
var
FNameSize: UINT;
Count: UINT;
FileName: array [0 .. 255] of Char;
FileName1: string;
LFilesList: TStringDynArray;
LFileName: String;
str : string;
2018/04/08(日) 19:32:04.72ID:aHOcMh8N
begin
FileName1 := '';
try
Count := DragQueryFile(Msg1.Drop, $FFFFFFFF, nil, 0); // A
if Count > 1 then
Abort; // B
FNameSize := DragQueryFile(Msg1.Drop, 0, nil, 0) + 1; // C
DragQueryFile(Msg1.Drop, 0, FileName, FNameSize); // D
FileName1 := StrPas(FileName); // E
finally
DragFinish(Msg1.Drop); // F
end;
if FileName1 = '' then
Exit;
DirName := ExtractFileDir(FileName1);
Label2.Caption := FileName1; // ファイル名
Label3.Caption := DirName; // フォルダーパス\なし
2018/04/08(日) 19:32:09.74ID:aHOcMh8N
begin
//選択されているときに処理を行う
if ListBox1.ItemIndex > -1 then
begin
//選択している文字列を取得
str := ListBox1.Items[ListBox1.ItemIndex];
//取得した文字列を追加
ListBox1.Items.Add(str);
end;

Label4.Caption := str;
begin
// APath内のディレクトリ内のファイルリスト作成
// [マイコンピュータ]等の特殊フォルダは指定しても無効
LFilesList := TDirectory.GetFiles(DirName);
for LFileName in LFilesList do
begin
ListBox1.Items.Add(TPath.GetFileName(LFileName));
end;
ListBox1.Items.EndUpdate;

end;
end;
2018/04/08(日) 19:40:43.33ID:aHOcMh8N
procedure TForm1.PlayBtnClick(Sender: TObject);
var
FileName1: string;
begin
mciSendString(PChar('open"' + FileName1 + '"type MEPGVideo' + 'alias MusicFile'), nil, 0, 0);
// ~~~~~~~~~~~
mciSendString(PChar('play Musicfile from 0'), nil, 0, 0);
end;

上記のチルダの部分あたりだと思うのですが…
どうしてもわかりません。
2018/04/08(日) 21:52:36.23ID:vzZ5v1M+
>>465
自分もよく知らんので間違ってたらごめん

>mciSendString(PChar('open"' + FileName1 + '"type MEPGVideo' + 'alias MusicFile'), nil, 0, 0);

'open"' じゃなくて 'open "' ではないだろうか
コマンドの後に空白スペースが無いって事ね
typeやaliasの前にもスペース無いけど
2018/04/09(月) 02:34:30.98ID:8Wv+Mi08
>>465
これってかなり前にも指摘したような気がするが...

まずはTEditをForm上に置いて実行時に
TEdit.TextにPChar(...)の...部分をそのまま代入してみな

それで問題なかったらMCIに送って
2018/04/09(月) 07:55:25.96ID:qLOACt12
>>466-467
レスどうもです。

>>465
以前FileListBoxで作ったときのものをそのままD&D時のパスを含むファイル名を渡しています。
>>467
TEditに代入しても動きません。途方に暮れています。
何年か選択したListBox ItemからMCIに渡す方法を探してますが、どうしてもわからないままでいます。

上に上げたロダはリロードするとファイルが落ちてくるようです。

お忙しいとこrとすみませんがよろしくお願いいたします。
2018/04/09(月) 08:07:09.81ID:3dFP9zTK
aliasの前に半角スペースがない
これじゃあMpegVideoAliasとか意味不明なtypeになる上にaliasが認識されないからMusicFileというaliasが未定義のまま渡される
2018/04/09(月) 08:11:51.43ID:3dFP9zTK
>>467さんが指摘してるのはTEditに入れて表示された文字列が正しいコマンドかどうかチェックしろって事であって、代入したら動くんじゃないって言ってるわけじゃない
2018/04/09(月) 12:39:00.80ID:BwdfepzG
FileName1のスコープが問題何じゃねーの?
2018/04/09(月) 15:46:39.00ID:sAzU0iCB
>>462-465
こんなやっつけ仕事みたいなコードだと、何やってもダメだと思う
2018/04/09(月) 15:48:10.00ID:qLOACt12
>>469
>>467さんの指摘を受けLabelに命令を代入しましたが、確かにおかしい命令を吐き出していました。
open ""type MEPGVideo alias MusicFile
こんな表示をしています。


>>471
FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。
私個人の予想では、ListBoxからうまくファイルのPATHを含むファイル名がうまく取得できていないためではないかと考えているのですが…
2018/04/09(月) 15:52:07.60ID:3dFP9zTK
何が正しいのか正しくないのか、正しくないのは変数の中身なのかコードなのか渡し方かなのか、それとも別になにかなのかを探したら解決できる
正しいと思い込む前に確認する癖をつけましょう
2018/04/09(月) 18:30:51.81ID:BomKXXDR
>>473
>FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。
あちこちで参照するってことは
procedure TForm1.FilesDropped(var Msg1: TWMDropFiles); で使われている FileName1:と
procedure TForm1.PlayBtnClick(Sender: TObject); で使われている FileName1: は同一のものということにしたいんだろ?
それぞれのプロシージャでFileName1: string;って宣言してたら「あちこちで参照する」ことは出来ないぞ

>Private 宣言部で定義させています。
とりあえずそれはそのまま、TForm1.FilesDropped()とTForm1.PlayBtnClick()の中で宣言しているFileName1: string;を消す
2018/04/09(月) 18:57:48.34ID:BomKXXDR
>>473
やっとソースDLできたw
ざっと見た限り

原因:
TForm1.FilesDropped()でFileName1 にファイル名を代入しているが、
この FileName1 はTForm1.FilesDropped()の中で宣言されているため
TForm1クラスのprivate部で宣言されたFileName1とは別物

対策:
TForm1.FilesDropped()の中で書かれている FileName1: string; という宣言を消す
そうすればTForm1クラスのprivate部で宣言されたFileName1に代入されることになり
TForm1.PlayBtnClick()で使われているFileName1と同じになる

原因:
>mciSendString(PChar('open"' + FileName1 + '"type MEPGVideo' + 'alias MusicFile'), nil, 0, 0);
いろいろ半角スペースが足りない、余分な文字列の連結

対策:
適宜スペースの追加、たぶん、こう?↓
mciSendString(PChar('open "' + FileName1 + '" type MEPGVideo alias MusicFile'), nil, 0, 0);

それと str : string; と LFileName: String; も重複して宣言されているので注意
strに関しては使用目的が分からんのでなんとも言えないけどLFileNameのような使い方をするのであれば
クラスでの宣言は消したほうが良いと思う(不必要にスコープ(参照できる範囲)を広げない)
FileName1にしてもクラス変数として使うのなら変数名を変えて分かりやすくしたほうがよいかと
xxxxx1とかxxxxx2なんてのは関数内の一時的な変数として宣言しがちだと思うので
2018/04/09(月) 19:52:13.89ID:gH9PL+mq
>>472
やっつけ仕事に見えますか…
これでも知恵絞って作ったものですので…。
いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、
メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。


アドバイスいただいた皆様ありがとうございました。
MCI諦めてSndPlaySound()を使うことで一応当初の目的は達成されました。

FileName1を掃除してSndPlaySoundのファイル名はFileName1を直接渡しました。
SndSoundPlayer()はmp3とかだめそうな気もするので、
MCIを直打ちしなければならないかもしれません。
2018/04/09(月) 20:33:17.20ID:luHmX43j
メディアプレーヤーコンポ使えばmp3ほかいろいろ再生できますぜ
2018/04/09(月) 22:09:32.86ID:qcsBHwDv
>>477
>いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、
>メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。

わからないなら参照して勉強するのもいいけど「流用」するだけじゃ何年経っても自分の物にはならないよ
ちゃんと使い方を理解して自分のコードに治さないと

そうすれば変数かぶったりするのも避けられる
あと変数は少々長くなってもあとで自分が見てわかるもっと意味のある名前にした方が読みやすくなるよ
2018/04/09(月) 22:24:15.00ID:8Wv+Mi08
>>477
触発されて自分も作ってみた...ただFireMonkey版だけど
基本的な部分はMacOSでも動くと思う

https://1drv.ms/u/s!ALhSqBFVHu2ZzRg

前からTDropTargetを使ってみたかっただけなんだけど
2018/04/09(月) 22:25:36.16ID:tj7dSTW0
この話題長いねぇ
ずーっと解決してない気がするw
2018/04/10(火) 07:46:44.60ID:M1dLQsHI
野球選手やサッカー選手に向いてるやつと向いてないやつがいるように
プログラマーにも向いてるやつと向いてないやつがいる
2018/04/10(火) 09:28:59.45ID:8aH9jq04
>>480
なかなか良い
センスあるな
484447
垢版 |
2018/04/10(火) 17:57:58.95ID:ixHiVr8M
>>480
シンプルで必要十分な情報がまとまっていました。

このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、
細かい文法事項などはどこで習得されたのでしょうか?

>>481
ずっとコンパイラーを使っていたのではなく、新しい攻略できたかもと散発的にいじってました。
本当に作りたいアプリがあるので、ご迷惑とは思っていますが、未だに食いついています。

リモコンで制御したいのと、巻き戻しがサポートされていれば、多分ここまでしつこくはなかったかもしれません。
2018/04/10(火) 20:26:01.63ID:n/L+8J/R
>>484
>このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、
>細かい文法事項などはどこで習得されたのでしょうか?

勘とノリと勢いとGoogle先生
2018/04/10(火) 21:56:04.81ID:7q8c2f4e
>>484
巻き戻しってもしかして逆再生?
そりゃハードルが高すぎないか
2018/04/10(火) 22:06:00.62ID:BUevE+bD
>>484
VCLソース
2018/04/11(水) 07:06:25.31ID:Ma7OFF0j
リモコンって以前はMediaCenterが対応してたね

Delphiで今やるんだったら
TTethering使ってスマホから操作かな
2018/04/13(金) 00:04:40.08ID:QwQUx8hW
@pikさんて何者なの?

本当にすごい人なの?実力あるの?
なんか言ってることが胡散臭いんだけど
2018/04/17(火) 14:33:30.73ID:eYOCf7bm
>>489
直接本人に言えよ。陰湿な奴だな。
491447
垢版 |
2018/04/18(水) 21:20:13.42ID:MII0lz02
すいません。教えてください
この前の続きです。

D&D(例えば9.wav)をしてListBoxにフォルダのファイル一覧が抽出・表示されますが、
D&Dしたときに9.wavをハイライトさせるにはどうしたらいいでしょうか?
ハイライトをさせないとMCIエラーが出てしまいます。

ファイルですが、
https://mega.nz/fm/KbRmkKiL
よろしくお願いいたします。
492447
垢版 |
2018/04/19(木) 21:05:53.19ID:bgRnFwFv
現状でやりたいことは、送るで起動して音声ファイル(以下.wav)を再生させることです。

1.とりあえずアプリを起動させる
2..wavをD&Dでフォームに落とす
3.すかさずListBoxにカレントフォルダのファイルを列挙させる
4.D&Dで落とした.wavにハイライトさせる
5.自動的に.wavの再生開始

現在4でつまずいています。
.wavを送っても起動するだけで、ListBoxに反映されません。


ここがくクリアできれば拡張子連動も可能だと思いますが・
2018/04/21(土) 23:15:17.71ID:57zLglLu
>>491-492
ログインしなくちゃいけないみたいなので落としてないけど
「ハイライトさせる」ってファイルを選択状態にするってことね?
(プログラムする人間として質問するなら入門書なりを一冊通読してもう少し的確な言葉を憶えましょう)

ListBox.Selected[Index]:=True;(選択状態)
「9.wav」が例えば3番目ならIndexに「2」を入れます(ゼロスタートなので)
一番目のファイルなら「0」です

とりあえず試しておこうとDelphi5でやると範囲外エラーでますね
ListBox1.Selected[1]:=True;
これだけで

Delphi2009だと問題ないのに?(**)?
2018/04/22(日) 09:43:57.64ID:/aj/ysEy
ListBox1.ItemIndex := ListBox1.Items.IndexOf('9.wav');
2018/04/22(日) 20:19:04.99ID:1p2Tkusj
なるほどなー
ListBoxとかもうずいぶん使ってなかったから忘れてたわー
496447
垢版 |
2018/04/25(水) 06:26:09.01ID:LyLCajq/
>>493
ハイライトではなく選択した(された)アイテムと表現すべきでした。

無事選択状態にすることができました。
別の問題で送るとD&Dが併用できない問題に苦慮しています。
(送るだとListBoxに反映されますがD&Dだと反映されない。)
おそらく列挙の問題だと思いますが、今困っています。

以前作ったソースがすべてHDDのクラッシュで消えてしまったため
どうしたらいいのかもわかっていません。

自分自身で調査をしますが、よいアドバイスいただければ幸いです。
不評でしたが、ロダを
ttps://www.axfc.net/u/3905770?key=delphi

皆さんはDelphiの知識はどうやって得られましたか?
コンパイラを使ったのが数年ぶりだとか、いいわけにはならないのですが
やりたいことができずに悶々としています。

例えば、プログラミングバイブルを読破するとスキルが得られたりするものなのでしょうか?
こちらもアドバイススをいただけますと幸いです。
2018/04/25(水) 08:14:31.72ID:iILk6Jpy
>>496
もう仕様書作って金出してコード納品してもらった方が速い
2018/04/25(水) 10:12:58.53ID:KojXazHw
アドバイスも何も....

D&Dで取得したファイル名を
そのメソッド内でのみ有効なローカル変数に代入して終わりなの?

変数のスコープを理解してないのかな

てか、いろんなサンプルを参照して利用してるが
意味も分からずやってるでしょ

他人のコードを利用するなら
まずそのコードを理解しようと努めないと
永久に進歩はないね
2018/04/25(水) 10:43:12.40ID:8p1Sd4ST
>>496
>(送るだとListBoxに反映されますがD&Dだと反映されない。)

D&Dを受け取る WMDropFiles 内にListBoxに反映させるコードが無いんだから反映されるわけが無い
2018/04/26(木) 18:55:25.51ID:fqEKBH7q
動くまでいじくり倒すしかない。なんで動かなかったのかわかるまで調べる
501447
垢版 |
2018/05/05(土) 11:10:08.17ID:pQ8nw+O2
ListBoxへの反映の仕方が分かったので対処ができました。
ですが、曲名を集中管理している変数にLtstBoxのアイテムを代入しようとする
StringtoTstringに互換性がありませんと表示され、他の曲への反映ができません。
聞くところによれば、ポインタの知識とオブジェクトへの深い理解が必要だと聞きました。
コメントをいただければと思いいます。
https://www.axfc.net/u/3908351?key=delphi

本当にポインターの知識が必要ならアプリを作るのには時期尚早なのかもしれません。
よろしくお願いいたします。
2018/05/05(土) 13:26:16.48ID:vbsrC7NJ
こんな文字列処理メインのコードにポインタの出番はないでしょう

ListBoxの選択項目を取り出すのは、あなたが>>464に書いている通り

問題はListBoxに追加した項目が保持してる内容
ファイル名? パス付き?

あと老爺心で言うんだけど、メインの部分がまったく機能してないのに
サブの部分を追加してるのはどうかと

全体の見通しが悪くなるだけだよ

ドラッグ&ドロップと音量関係のルーチンのない状態で
ListBoxの内容を完璧に再生できるように
新規プロジェクトから始めたほうがいいよ
2018/05/07(月) 08:05:08.09ID:bSchYp3+
ありがとう。C#で作り直すことにします。
2018/05/07(月) 18:43:31.79ID:RryMz2og
そうきたか www
505447
垢版 |
2018/05/23(水) 05:43:33.84ID:IzxjocGr
TString型からString型へのキャストはどうしたら良いのでしょうか?

ずっとここで詰まっています。
コンパイラにはString型とTString型には互換性がないと怒られ
Listbox.item.text
みたいな感じにするとString型へ文字列が渡せません。
色々ネットで調べてみましたが、何か今ひとつ分からないままでいます。
506447
垢版 |
2018/05/23(水) 07:25:01.52ID:IzxjocGr
上の質問はスルーしてください
2018/05/23(水) 20:23:05.77ID:yohLywXT
本当か?本当にTStringとStringの違いがわかったのか?
508デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:31:59.75ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

401Z3
2018/05/24(木) 00:26:07.03ID:X0Vr2UrM
>>505
何年間も同じとこクルクル回って進歩してないな
510447
垢版 |
2018/05/24(木) 07:41:50.56ID:Xlbr0a9V
>>507
本当は分かっていません。
ただ、もう少し試行錯誤が必要だと判断しました。
TstringからStringに渡すのはそんなに難しいとは思えないのですが……。

>>509
コンパイラをいじっている時間があまりなくて
今回も数年ぶりに(昔このスレで正月に作ったメディアプレイヤー)触ってますので
進歩してなくて、さっぱり分からないことが相変わらず多いです。
2018/05/24(木) 07:51:45.33ID:UDepo1QV
>>510
値、配列、値のリストという概念があるとして stringはどれで Tstringはどれにあたるか分かる?
2018/05/24(木) 09:38:32.78ID:3hrzymd4
"Tstring"という言葉が気持ち悪いので、そろそろ訂正してくだいませんか?
2018/05/24(木) 09:47:02.42ID:1QuFgEhD
>>510
あのな、良いこと教えてやる

一番薄い「言語ガイド」というマニュアルがあるからそれ読め
最初の1ページ目から最後のページまで全部読め
判らなくても良い、難しくても良い、とにかく1冊全部読め

読み終えた次の日から、きっと新しい世界が見えるはず
読まなきゃお前さん、一生そのままだぞ
2018/05/24(木) 12:22:44.13ID:2pfDia9X
TStrings String型 TStringList AnsiString UTF8String・・・等々 いっぱいあるね
2018/05/24(木) 17:31:30.64ID:Pn5Zd5T4
>>510
名前が似ていても型が違うなら別物として考える
別物でも異なる型への変換方法が明示的に設定されていれば容易に渡すことが出来る
TStrings と String は別物
じゃあTStrings から String に明示的な変換方法が設定されているのか?を調べれば解決する
ヘルプを起動しTStringsと入力しろ
そして戻り値がStringになっているメソッドを探せ

どうでもいいことなんだが名前欄に自分のレス番号を入れるのは現在進行している質問の最初のレス番号を入れるべきだと思うんだ
今回のケースなら447ではなく505だな
そうすることで主題となる質問を見ることが出来て、また辿ることが出来る
2018/05/24(木) 18:32:52.16ID:Pmzmf4Ca
普通に教えてやりゃいいじゃんか
sがついてるからstringが複数扱えるクラスなんだろ?
男のくせにチマチマ、ネチネチ、そりゃお前らは一生結婚できねぇわw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況