くだすれDelphi(超初心者用)その55at TECH
くだすれDelphi(超初心者用)その55 - 暇つぶし2ch209:デフォルトの名無しさん
13/04/26 06:51:22.07 .net
DelphiXE4&FireMonkeyなんですが、
MediaPlayerControlってウィンドウサイズに合わせて映像を拡大できないのでしょうか?

210:デフォルトの名無しさん
13/04/26 21:50:10.98 .net
delwiki.infoどうなっちゃったの?

211:デフォルトの名無しさん
13/04/28 09:38:28.80 .net
XE2で
bds -r main
とかやって別プロファイルで起動するとGExpertsが起動しないんですが
どうやればプロファイル指定してGExperts組み込めるんですか

最悪レジストリのキー入れ替えてからインストールすれば
できそうな気もするんですがもうちょっとまともなやり方あったら教えて下さい

212:デフォルトの名無しさん
13/04/28 10:36:43.69 .net
別のログインユーザー作成

213:186
13/05/05 09:16:37.44 .net
>>190
どうもです。基礎的なコンポーネントだったんですね。
ただ、位置の制御に苦労しました。

>>191
Delphiでは、VCLを積み重ねても下のものとは原則干渉しない
と言うことを言葉では知っていましたが>>191を見てその意味を知りました。
サイトでは、Spliterで苦労している人は多いみたいで頭を抱えていましたが
Panelで弁当箱のように仕切れば良いんですね。

>>192
サンプルプログラムありがとうです。
非常に高度な技術が積めてあるのが判りました。
高度すぎて完全には判りませんでしたが、さらに勉強します。

今は、既存の構成を使ってmp3の再生に取りかかっています。
medeiaplayerを使っていますが、wavでは簡単に再生できますが、
mp3ではオブジェクトインスペクタのプロパティのFilenameでファイルを直接
指定すれば再生できますが、それ以外ではEMCIDeviceError発生します。
上手くファイル名が渡せていない感じがします。
これを解決する方法はありますか?

214:デフォルトの名無しさん
13/05/05 19:14:51.21 .net
MediaPlayer1.TimeFormat:=tfHMS;
MediaPlayer1.DeviceType:=dtAutoSelect;
MediaPlayer1.FileName:=FileName;
MediaPlayer1.Open;

215:186
13/05/06 10:56:36.48 .net
>>208
動きませんでした。
ただ、MediaPlayerを扱っているサイトのように
with MediaPlayer1 do
begin
FileName := filelistbox1.FileName;
Open;
Play;
とやったら動きました。
やっていることは同じのように見えますが…。

216:デフォルトの名無しさん
13/05/07 07:54:18.94 .net
MediaPlayer1.FileName:=FileName;

MediaPlayer1.FileName:=filelistbox1.FileName;
こうすればよかったんじゃね?

217:209
13/05/07 09:45:27.59 .net
それで動きそうな物なんですが、ダメだったんです。

Delphi2005プログラミングにあったような
画像ビュアーだったのでextractfileextで拡張子で
処理を分けています。bmp,jpg,pngはイメージに飛ばして
wavはsndPlaySoundで処理していましたが、mp3は扱えないそうなので
MediaPlayerを使って処理を試みましたが、
ただMediaPlayer1.FileName:=filelistbox1.FileName; としただけでは、
ファイル名や拡張子からはデバイスを判断できませんでしたと出てて
コンパイルすら出来ませんでした。
ただ、wavだけは簡単に再生できました。

これで、一週間くらい悩み続けました。
これでとりあえず動いていますが、with文を理解していないので
トラブルが起きたときに対処できません。

218:デフォルトの名無しさん
13/05/07 09:52:35.76 .net
エラーメッセージで原因分かってるじゃん
自動でデバイスが判断できないなら手動でやればいいだけの話でしょ
プログラミング言語の前に日本語の理解をできるようにしないと

219:209
13/05/07 17:03:16.17 .net
その、手動でやる方法が判らなかったんですよ。

肝心の日本語メッセージが抽象的すぎてわかんねーよ
mci周りのエラーだと言われてもmciのラッパーのmediaplayer
使ってんのにそんなこと言われても困る。
そんな感じ

wavだと>>211の方法で鳴らせるのにmp3だとエラー
>>212は馬鹿にしたいのだろうが
日本人なんしバカじゃないんだから、コンパイラの言っている意味はわかるよ

220:デフォルトの名無しさん
13/05/07 21:20:24.78 .net
with文を理解していないって、冗談でしょw

221:デフォルトの名無しさん
13/05/07 21:38:31.29 .net
URLリンク(docwiki.embarcadero.com)

222:192,208
13/05/07 21:59:37.87 .net
>>209
おれ、192,208 だけど( with 文知らないということで)
もしかして「動きませんでした。」って
MediaPlayer1.Play;
をしてないだけだったんではないよね?
>>207 で EMCIDeviceError が出るっていうからこれでも出る?って意味で
208 を書いたんだけど

223:デフォルトの名無しさん
13/05/07 22:01:23.04 .net
追記
>>209 は↓と同じ事を書いてるんだよ
MediaPlayer1.FileName := filelistbox1.FileName;
MediaPlayer1.Open;
MediaPlayer1.Play;

224:209
13/05/08 05:26:07.46 .net
>>214
Delphi2010を持っていたけど、4月くらいにふと思い立ってソフトを作り始めました。
今でもif文で'.'が必要だけどELSEがありましたとか言われてなんでだと思うとかそんなレベル。
文法そのものを完全理解していないので手探りでやっています。

>>216
元々は、wavを再生するために
sndPlaySound(Pchar(filelistbox1.FileName),SND_ASYNC) ;
を入れてました。
PlaySoundはmp3は鳴らせないよと言うことを聞いて
mediaplayerが一番簡単そうなので使い始めました。
MCIが使えれば言うことないのですが、いまいち判りませんでした。
そのときに入れていた物は、
mPlay.filename:=filelistbox1.FileName;
mPlay.open;
mPlay.Rewind;
mPlay.Play;

mPlayはMediaplayerのnameを変えたもの

この命令だけで再生されそうな物なんですが…。
DCCエラーでコンパイルされませんでした。
DeviceをdtWaveAudioにすればエラーは出なくなりますが
そうするとmp3が再生されないという…。
当時mp3を再生させるには、filenameプロパティに直接ファイルを指定しないと
無視されてました。

ダメじゃんと言うことがあればお願いいたします。

225:210
13/05/08 05:35:50.40 .net
いま、
>>209 のコードで動くと書いていることと、
>>217 のコードで動かないと書いていることが
矛盾していること。

「ファイル名や拡張子からはデバイスを判断できませんでした」
というメッセージは実行時のエラーメッセージで、
「コンパイルすら出来ませんでした」
というのは、実行前のコンパイルエラーのことだと推測するので、
混同している可能性があるということ。

そして、実行時のメッセージなどからは、>>208 の先頭2行のコードの追加を
Openの前に実行すれば状況が変化するか?
という、「いまどこ?」的な質問に対する実験結果の報告がないので、
このままでは現状打破できず、さてどうしようか。ということ。

他は省略

226:デフォルトの名無しさん
13/05/08 06:54:10.68 .net
DirectXを経由したほうが簡単に音を鳴らせる気がする

227:デフォルトの名無しさん
13/05/08 07:03:34.18 .net
こんなソース発見 delphi.about.com/od/multimedia/l/aa112


228:800c.htm



229:209
13/05/08 09:51:58.69 .net
>>219
mPlay.TimeFormat:=tfHMS;
mPlay.DeviceType:=dtAutoSelect;
mPlay.filename:=filelistbox1.FileName;
mPlay.open;
mPlay.Rewind;
mPlay.Play;

でも、EMCIDeviceErrorがモジュールview.exeの0x000EA7F2で発生しました。
指定したファイル名拡張子からデバイスの種類を判断できませんと表示されます。
でF9で走らせても、コンパイルしても
上記アプリケーションエラーが出てOKボタンを押すとIDEに戻ります。
コンポーネントとプロパティーをソースで指定することで
オブジェクトインスペクタの項目を書き換えることが出来るという
理解で間違っていないでしょうか?
せっかく教えて頂いたのに申し訳ありません。

>>220
この系統のソフトはDirectShowを使うのが一般的だという話を聞きましたが、
そこまでのスキルがなかったのでMediaPlayerを使いました。

>>221
ないわけがないと思って探していましたが、やっぱりあるんですね。こういうソフトが。
どうやってこういうサイトを探すんでしょうか?
日本語のサイトを探すだけじゃダメなんでしょうか。

230:222
13/05/08 09:56:49.66 .net
mPlay.DeviceType:=dtWaveAudio;
にするとコンパイルされますが、
wavは再生されますが、mp3は反応しません。
ファイルをダブルクリックしても何も起きません。

mPlay.DeviceType:=dtAutoSelect; で
FileNameプロパティに例えばc:\a.mp3
という感じで指定すると実行したときに即座に再生されます。
この後に他のmp3を選択すると再生されました。

231:デフォルトの名無しさん
13/05/08 21:07:45.88 .net
dtAutoSelectにしたってコンパイルはされるだろ
用語の使い方がおかしい
基礎から学び直せ

232:デフォルトの名無しさん
13/05/08 22:03:42.37 .net
コンパイルオプションの最適化を外して再構築しなおせばどうか

233:デフォルトの名無しさん
13/05/09 04:13:21.57 .net
>>224
基礎を学んでいる最中なんですが。
失礼しました。

234:デフォルトの名無しさん
13/05/09 10:21:48.11 .net
>>224
>>209のように別に作り直したら、
エラーが発生しました。

よくわかりません。

235:デフォルトの名無しさん
13/05/09 12:17:09.25 .net
>>224
ロダにあげたのでもしよかったら見てください
URLリンク(www1.axfc.net)

236:デフォルトの名無しさん
13/05/09 21:51:40.46 .net
>>228
Delphi2010って支援機能ついてるよね?(. 入れて待つとか Ctrl+Space)
Delphi 使いならパスカル表記しようよ、読みにくいから
で、最小限に切り出してテストしたんだけど(FileListBoxって何年ぶりに使ったろう…)
DeviceType無くてもあってもエラーは出ないね(XPで実行しても問題なかった)
if CompareText(TheExt,'.mp3')=0 then
//↑とか↓こうやれば大文字の拡張子も判別出来るよ
// if LowerCase(TheExt)='.mp3' then

「エラーが発生」は今までのように「デバイスを判断できませんでした」?
それともコンパイルエラー?
別の新しいプロジェクトを作成してとりあえず
MPlay: TMediaPlayer;
とボタン一つだけ貼り付けて
IDE でボタンをWクリック

procedure TForm1.Button1Click(Sender: TObject);
begin
with mPlay do
begin
FileName:='ここに実際のファイル名をフルパスで書く';
Open;
Rewind;
Play;
end;
end;
まずこれでちゃんと再生されるのかどうか確認する
IDE から F9 で実行してエラーが出ても exe 単体(Project2_b2.exe だっけ?)
をエクスプローラからWクリック実行ではエラーが出ないことがあるのでそれも確認
それでもエラーが出てここにまた報告するならその内容を正確に書くこと
エラーダイアログで Ctrl+C したらコピーできるときもある

237:デフォルトの名無しさん
13/05/09 23:10:22.51 .net
DeviceTypeはPCの環境設定に依存するからお前のPCで


238:問題ないから他でも問題ないとは限らない



239:デフォルトの名無しさん
13/05/10 05:56:44.41 .net
>>229
入力支援機能教えていた秋ありがとう
今までめんどくさいなとか思っていたのでかなり助かります。
拡張子の判断もありがようです。
これは、Delphi2005プログラミングテクニックからそのまま
持ってきた物なのでより効率の良い方法ですね。使わせて頂きます。

肝心のFileNameですが、
オブジェクトインスペクタでFilenameプロパティでファイルを直指定して
今回の場合だとwith文内で指定して
そのファイルを再生した後だとエラーが発生することもなく他のmp3ファイルも再生できます。

エラーについてはロダにあげた以外の物では、
FormにFileList一式とMediaplayerだけを貼り付けて
同じコードを書いてもコンパイル中にアプリケーションエラーが出ます。

ソースとバイナリ、エラーメッセージをキャプったものをロダに上げました。
お手数ですが、また見て頂けないでしょうか。
URLリンク(www1.axfc.net)

240:デフォルトの名無しさん
13/05/10 07:20:30.64 .net
>>229
新しいプロジェクトでの確認しましたが、
こちらは、IDEでもコマンドラインからでも正常に再生されます。
お手数おかけします。
URLリンク(www1.axfc.net)

241:デフォルトの名無しさん
13/05/10 08:41:48.22 .net
TMediaplayerではなく
TWindowsMediaPlayer(wmp.dll)を使えばいいのに
ずっと多機能だし、使いやすいのに

242:デフォルトの名無しさん
13/05/10 09:39:31.37 .net
>>233
WindowsMediaPlayerも考えて、ActiveXモジュール組み込みましたが、
どう使ったら良いのか判りませんでした。
playlistもどう扱ったら良いのか??な感じでした。

今、キーワードを変えて検索したら簡単なサンプルが判って
ファイルを固定することで再生することが出来ました。
使いこなしの方法がちょっと判りません。

初心者というのが免罪符になるとは思いませんが、
本当に勉強を初めて一月とかです。
不快に感じる方がいらっしゃると思いますが、ご容赦ください。

243:デフォルトの名無しさん
13/05/10 10:21:25.03 .net
TMediaplayerControlって、オリジナルのビデオサイズより拡大表示できないの?これ

244:229
13/05/10 19:07:21.64 .net
>>230
そーなのかありがとう
じゃあ配布目的とかでは使えないんだ
まあ俺はTMediaPlayer使わんけどな

245:229
13/05/10 19:22:08.94 .net
>>231
前は pas ファイルを読んだだけでレスしたが今度はちゃんと開いてみたよ
で、今度のエラーは手抜きのせいではないか?
TFileListBox.OnChange イベントというのはリスト内のファイルをクリックしたり
フォルダが変わったりしたとたんに発生するから最低でも拡張子の判断は必要だぞ
procedure TForm2.FileListBox1Change(Sender: TObject);
begin
//一行目にこれ↓
if CompareText(ExtractFileExt(FileListBox1.FileName),'.mp3')<>0 then exit;

それに前回はちゃんとフィルタ(ファイルマスク)設定してたようだけど今度はそれもしていない

あと、例外処理を勉強しよう
if CompareText(ExtractFileExt(FileListBox1.FileName),'.mp3')<>0 then exit;
try
with mPlay do
begin
FileName:=Filelistbox1.FileName;
Open;
Rewind;
Play;
end;
except
ShowMessage('再生時のエラー');
end;
こう書いて出てきたエラーが↑で自分で書いたエラーなら try ~ except の間で起こったと判断出来る
でも except ってのは本当はこんな風に逃げるだけの手段ではないんだよ

246:デフォルトの名無しさん
13/05/10 19:56:45.29 .net
>>237
レスどうもです。
>>231はFileListBox一式とMediaPlayerだけをFormに乗せただけの物です。
>>231>>229
procedure TForm1.Button1Click(Sender: TObject);文以下の
以下のソースを反映させた物です。
私の環境ではコンパイルが終わってアプリが起動するときにエラーが出ます。
出来たバイナリを起動しても同じです。

>>232>>229のFileNameに直接ファイルを指定したものです。
アーカイブ中にmp3ファイルが入っています。
この二つについてはフィルターをかけていません。
フィルターをかけたものを再アップします。
err2+filterフォルダーの物はうちではエラーになってしまう物
snd1フォルダーは添付のmp3ファイルを直うちした物です。
pathが判らないのでc:\00


247:0.mp3にしてあります。 http://www1.axfc.net/uploader/so/2897729 >>228の物は制作中の物なので拡張子での処理を分岐させるようにしてあります。 OnChangeについてはこのような変化が起きたときに発生する プロパティ項目がないわけがないと思って探していました。 例外処理についても必要性を感じていました。 画像部分を作っていたときには処理を確認するために デバッグ用の表示を作っていましたが、音声の方はそれ以前の出来だったので 何もしてありませんでした。 suggestionありがとうございます。勉強させて頂きます。



248:229
13/05/10 20:54:25.95 .net
わかったよ~(ヒントは今まで俺がレスしてきた中に全てあったよ)

「err2+filter」の方でエラーが出るのはアプリケーション起動時に TFileListBox.OnChand イベントが起きるから
(当然だよねコンポーネントが生成された時にはリストは空なんだから起動すれば DriveComboBox1 のドライブの
DirectoryListBox1 フォルダに移動して FileListBox1 のリストが更新される→ TFileListBox.OnChand 発生)
(あくまでも IDE で表示されているリストは IDE 上だけのもので起動時(生成時)は空だからね)

>>237 で(抜けてるよって)書くように指示した「拡張子の判断」がないから移動先の最初のファイルが mp3 じゃないのでエラーとなる
TFileListBox.OnChand 発生した時に選択されていなかったら FileListBox1.FileName は空文字になるし(あ、こっちか)

>>237 でもうひとつ「OnChange はリスト内容の変化で発生する」とも書いたね

オマケだけど
>pathが判らないのでc:\000.mp3にしてあります。
こういったときに便利な書き方
FileName:=ExtractFilePath(Application.ExeName)+'002.mp3';
      ↑~~~~~~~~~~~~~~ ↑~~~~~~~~~~~~~~~~~~
    後ろに\がつく「パス」 実行ファイルのフルパス
実行ファイルが「C:\Delphi\Project1.exe」なら「C:\Delphi\002.mp3」になる

これくらいでいいかな?

249:デフォルトの名無しさん
13/05/10 22:43:08.33 .net
>>239
仰ってる意味が分かりました。
拡張子を画像かどうかを評価して
違う場合にはwavかmp3なら強制的に
MediaPlayerに回しますが、FileListBoxの中身が空なので
MediaPlayerでは解釈できないと言うことで良いのでしょうか。

>>237の一行目にと言う命令を書き足したら
エラーを吐くことがなくなりました。
例外処理についても意味を体で覚えました。
おまけもありがとうございます。

やっぱりちゃんと言語ガイド読まなくてはなりません。
ありがとうございました。

250:229
13/05/10 23:42:57.67 .net
>>240
解決して何よりだ
ここまで付き合った甲斐があった

ひとつだけ
>MediaPlayerに回しますが、FileListBoxの中身が空なので
日本語的な問題なのかも知れないけど
最初にこのイベントに来た時は空からリストにファイル名が入った時なので
「FileListBoxの中身が空」ではない
あくまでも FileListBox1.FileName プロパティが「空文字」になっている(未選択状態だから)ということ

説明するより早いから新規プロジェクトのフォームに Memo1 FileListBox1 の二つを置く
フォームをWクリックして
procedure TForm1.FormCreate(Sender: TObject);
begin
FileListBox1.Directory:='e:\';
with Memo1.Lines do
begin
Clear;//メモをクリア
Add('01━FormCreate ここから');
Add('02━起動時のリスト:'+FileListBox1.Items.Text);
Add('03━選択されたファイル名:'+FileListBox1.FileName);
Add('04━FormCreate ここまで');
end;
end;
つづく

251:229
13/05/10 23:43:51.91 .net
FileListBox1 をWクリックして
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
with Memo1.Lines do
begin
Add('05━FileListBox1Change ここから');
Add('06━OnChange 起動時のリスト:'+FileListBox1.Items.Text);
Add('07━OnChange 選択されたファイル名:'+FileListBox1.FileName);
Add('08━FileListBox1Change ここまで');
end;
end;
FileListBox1 を選択した状態でオブジェクトインスペクタのイベントタブを開く
OnClick の右側の空欄をWクリックして
procedure TForm1.FileListBox1Click(Sender: TObject);
begin
with Memo1.Lines do
begin
Add('09━FileListBox1Click ここから');
Add('10━OnClick 起動時のリスト;'+FileListBox1.Items.Text);
Add('11━OnClick 選択されたファイル名:'+FileListBox1.FileName);
Add('12━FileListBox1Click ここまで');
end;
end;
これでメモの内容を見ればイベントの起こっている順番とか内容とかがよく分かるはず

空文字がわかりにくいので↓にしても可
if FileListBox1.FileName='' then
Add('03━【何も選択されていない】'+FileListBox1.FileName) else
Add('03━選択されたファイル名:'+FileListBox1.FileName);

252:デフォルトの名無しさん
13/05/11 00:36:43.60 .net
エラーが起きるところでステップ実行をしなかったの??
FileNameがヌルになるならすぐわかりそうなものなのに
デバッグの仕方が根本的に変

253:デフォルトの名無しさん
13/05/11 01:18:17.09 .net
くだすれDelphi(超初心者用)

254:デフォルトの名無しさん
13/05/11 22:32:26.98 .net
>>241
サンプルソースありがとうございます。
mp3再生部を入れてからエラーが出て
一週間位悩んで質問しました。
最初はファイル名に絡むエラーだったので
ファイル名が上手くコンポーネントに渡していないなと言う
予想は立ちましたが、ネットでDelphiのmp3関係を扱っている
サイトで出てくるUnicodeが原因なのかと思って困ってました。

サンプルソースのおかげでFileListBoxの挙動がよくわかりました。
あらかじめFileListBoxのfilenameプロパティで適当なmp3ファイルを
設定しておくとエラーが発生せずに他のmp3ファイルを再生できたことの
理由がよくわかりました。
当然filenameプロパティを設定しないと起動時のフォルダー内にある
ファイル名は表示されていますが、選択していないので
>>243のnullが入っているのでエラーが出ていたという解釈で良いのでしょうか?

何を勉強しないと行けないのかが明確になりました。ありがとうございました。

255:245
13/05/11 22:53:48.08 .net
デバッガーのステップ実行のやり方が判ったので
値を監視してみたところエラーの出る寸前で
拡張子(theext)が''になっていてselfとsenderが
この位置からは参照できないと出ていました。

勉強になりました。

256:229
13/05/11 23:59:15.22 .net
自分のレベルも Delphi のバージョンもちゃんと最初に書いてるし
こうしてみろといわれたら素直に実行するし
質問者としては良質だと思ったよ
どんどん作って今後も Delphiライフを楽しんでくれ(^.^)/~~

257:デフォルトの名無しさん
13/05/12 00:00:10.47 .net
Delphi 全角になってた恥ずかしい

258:デフォルトの名無しさん
13/05/14 19:48:33.00 .net
上レスのMP3 の人とは別人です。
環境 Delphi 6
URLリンク(www1.axfc.net)

MP3 を
*.WAV (無圧縮 WAVE ADPCM ) モノラルにコンバートしたく
ビット/サンプル :16 bit/sample
サンプリング周波数 :44100 Hz
チャンネル数 :1 channels

MP3プレイヤーを作る>dllによる再生
URLリンク(www.sm.rim.or.jp)

MP3 Decode Library mp3dec
URLリンク(hp.vector.co.jp)
vbmp31615_fixed_20030921.lzh の
VBMP3.dll 改 Version 1.615.2003.0921 を使ってみています。

で、目的のフォーマット変換にたどり着けなくて
お知恵を拝借したいです。
この .dll の良い使い方とか、これ以外で組み込みやすいものなどあれば

最終目的は、変換したモノラル .wav から音声チャンク部分だけを取り出して
機器用の .pcm 音声ファイルを作るツールです。

259:デフォルトの名無しさん
13/05/14 21:38:42.36 .net
ffmpegで全部出来る

260:デフォルトの名無しさん
13/05/15 08:40:03.38 .net
フォーマット変換をするのは、再生とは別
VBMP3を使って出来る物ではないよ
両方のフォーマットを理解しないと。

URLリンク(www.marinecat.net)

それっぽいサイトを見つけたけどこれでもダメだろうな…。
午後のこーだーのソース読んでみたら

261:デフォルトの名無しさん
13/05/15 13:20:42.88 .net
mp3の再生ができるなら音をキャプチャすればいいんじゃないか

262:デフォルトの名無しさん
13/05/15 18:20:29.61 .net
>>251 >>252
MP3 のフォーマットが複数あって難解なので、既存の dll を利用したかったのです。
午後のソースも見てみましたが、お手上げですね。
デコード


263:機能があればと残念です・・・ lame_enc.dll とか 一応、>249 のソースで VBMP3 使用の MP3 -> Wave 変換保存は出来るので、 サンプリングレートなど細かな指定が出来れば良いのですけど。 一時ファイルとして(wav-stereo)出力 -> PCM 44.100kHz 16ビット ならば、読み込んで モノラル化して抽出 で、お茶濁し やってみます。 XP 付属のサウンドレコーダーをソフトから操作できれば楽なんですけどね WAVE MPEG Layer-3 22050Hz Stereo を読み込んで -> WAVE PCM 44.100kHz 16ビット モノラル wav での形式と属性変換が単体操作できるのですが、コマンドラインオプションが無さそうで。



264:デフォルトの名無しさん
13/05/16 08:16:21.01 .net
>>253
今どこまで実装できてるの?

265:249 253 です
13/05/16 19:42:40.64 .net
>>254
ソースと実行ファイル上げた方が良い?
素人趣味の1つなんで実装の無駄がちとハズカシイ(というか自分に解る限界だから仕方ないというか)

・現在
ListView にファイル情報のあてはめ (PCM/WAVE/MP3)
PCM/WAVE/MP3 音声再生
MP3 -> Wave 出力 >>249 と同じ VBMP3 手法のまま
モノラルWave -> 機器用の .pcm 音声ファイル用に抽出ファイル化

・次の着手予定
MP3 -> 作業フォルダにWave ファイル出力 -> Wave 読み込んで PCM ファイル化出力
元のMP3 が 128Kbps : 44100 Hz : Monaural だった場合、目的の.wav 物に VBMP3 がそのまま変換してくれるようで
変換後がステレオだった場合、チャンクのLRをゴニョって擬似モノラルにして抽出。

ps. >>249 で一部訂正
誤:*.WAV (無圧縮 WAVE ADPCM ) モノラル
正:*.WAV (無圧縮 WAVE PCM ) モノラル

266:デフォルトの名無しさん
13/05/16 20:15:14.36 .net
>>255
ffmpeg -i input.mp3 -ac 1 -ar 44100 -f s16le -acodec pcm_s16le output.pcm
出力ファイルを"-"にすれば結果が標準出力へ吐き出されるのでプログラムからパイプで受け取れる

267:249 253 です
13/05/16 23:38:15.05 .net
>>256 ども
コマンドラインで一発変換できますね
2バイト文字のファイル名にも対応しているようで
ShellExecute でいけるかやってみます。

>出力ファイルを"-"にすれば結果が標準出力へ吐き出されるのでプログラムからパイプで受け取れる
? 意味不明
クリップボードにバイナリファイルが格納される という意味ですか?

ファイル実体として出力はいるので
とりあえずフロントエンド?という利用方法で組んでみます。
ありがとう

268:デフォルトの名無しさん
13/05/17 00:28:18.21 .net
>>256じゃないけど、標準出力とかパイプとかせめて検索してほしいなぁ

269:デフォルトの名無しさん
13/05/18 03:19:43.51 .net
XE4&FireMonkeyで、FormのFullScreenがMacだと有効にならないんですが、
Macでフルスクリーンにする方法はありますか?

270:デフォルトの名無しさん
13/05/26 17:10:26.68 .net
setparentのusesって何を指定すれば良いですか?
window.setparentみたいなのもあるみたいですが、やりたいことは親フォームに貼り付けたパネルに子フォームをロードするというものです。
window.setparentを記述したら、usesの中のwinapi.windowsに赤の波線が出て、何だか良く判らなくなっています。
usesに何を指定すれば良いか教えてください。

271:デフォルトの名無しさん
13/05/26 17:12:46.07 .net
Frameでやれ

272:デフォルトの名無しさん
13/05/26 21:47:02.15 .net
他の掲示板に行きます

273:デフォルトの名無しさん
13/05/27 00:27:21.33 .net
裏技で派生先クラスから派生元のprivateメソッドを呼び出す方法ありませぬか?

274:デフォルトの名無しさん
13/05/27 01:22:27.42 .net
1.同一ユニット上に置く
2.クラスヘルパを使う
3.新しいRTTIを使う
ん~


275:あと何かあるかな



276:デフォルトの名無しさん
13/05/27 17:02:04.11 .net
オーバーライドするだけじゃないの?

277:デフォルトの名無しさん
13/05/28 19:52:06.64 .net
クラス設計やり直し。

278:デフォルトの名無しさん
13/05/28 23:03:18.64 .net
WM_で始まるメッセージとCM_で始まるメッセージって何が違うの?

279:デフォルトの名無しさん
13/05/29 05:09:30.73 .net
Windows のメッセージと
Control のメッセージ。

WM_ は OS が送ってくる。
CM_ は VCL が送ってくる。

CM_ は、単純なメソッド呼び出しに置き換えることが(多くの場合)可能だけど、
それをわざわざメッセージにすることで、WM_ に対応するメッセージハンドラと
同じ記述に統一することが出来る。

280:デフォルトの名無しさん
13/05/29 12:07:16.17 .net
そうでもない。

281:デフォルトの名無しさん
13/05/29 22:34:27.63 .net
TSplitterが置いてあるウィンドウがリサイズされるとき
変更前と変更後で分割率が同じになるようにするにはどうすれば良いんですか?

282:デフォルトの名無しさん
13/05/30 00:50:25.90 .net
TADO関係のコンポーネントを使って、Microsoft Accessの
データーベース上のクエリーのSQL文の取得か、クエリーの実行って、
できるでしょうか?

283:デフォルトの名無しさん
13/05/30 06:45:51.34 .net
>>270
FormのOnResizeで自前でコントロールのサイズを変更する

284:デフォルトの名無しさん
13/05/31 08:08:59.31 .net
それたぶんうまくいかない
OnResizeはサイズ変更された後に発生するイベントだから
何らかの方法で変更前のサイズを覚えておく必要があるのと、
一度変化した内部コントロールのサイズをまた変更することになるので
適切な手を打たないと猛烈にちらつく事になる

285:デフォルトの名無しさん
13/05/31 18:40:48.60 .net
分割率が同じならいいんだろ? 計算してポンだよ

286:デフォルトの名無しさん
13/05/31 22:23:55.60 .net
ではその計算してポンのコード書いてみれ

287:どや
13/05/31 23:50:53.77 .net
TForm1 = class(TForm)
 Panel1: TPanel; //Align=clClient;
 Splitter1: TSplitter; //Align=clRight;
 Memo1: TMemo; //Align=clRight;
 procedure FormResize(Sender: TObject);
 procedure Splitter1Moved(Sender: TObject);
private
 rp:Single;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  if rp <> 0 then
    Memo1.Width := Round(ClientWidth * rp);

  rp := (Memo1.Width / ClientWidth);
end;

procedure TForm1.Splitter1Moved(Sender: TObject);
begin
  rp := 0;
end;

288:276
13/05/31 23:52:09.02 .net
AlignプロパティはclXXXじゃなくてalXXXだった

289:デフォルトの名無しさん
13/06/03 16:30:38.06 .net
それ分割率がちょっとずつずれていくよね

290:デフォルトの名無しさん
13/06/03 21:30:54.18 .net
>>276のコードはちょっと変だと思うけど
OnResizeのタイミングでまったくちらつかないな
まあマシンに依るのかもしれんが
まあ、OnResize発生したらタイマー仕掛けて
一定時間OnResizeが発生しなかったら
画面を更新するっていう方法もあるだろうけど

291:デフォルトの名無しさん
13/06/05 00:00:12.75 .net
>>276
分割率をFormResizeで毎回計算するのはおかしいね
分割率を計算するのは、Splitterを動かして、分割率が変化したときだね

292:デフォルトの名無しさん
13/06/05 10:43:31.72 .net
それだと最初の計算はいつ行われる?
フォーム生成時にもリサイズイベントが起きるから厄介なことになりそう

293:デフォルトの名無しさん
13/06/05 11:55:59.43 .net
そこまでわかってるなら、生成~リサイズの間、と導き出されるわけだが

294:デフォルトの名無しさん
13/06/05 21:30:26.95 .net
>282
じゃあ具体的にコードとして書くと?

295:デフォルトの名無しさん
13/06/05 22:12:49.89 .net
282 じゃないけど
TForm の Create() の前に、OnReSize()が発生することなんてあり得るの?
ないだろ

296:デフォルトの名無しさん
13/06/07 18:30:49.23 .net
D7でIBXでFireBIrd2.5に接続しています
IBDataSetとIBQueryでFilterを使ってみたところまったく効果がありませんでした
IBTableに変えた�


297:ニころフィルターされました IBDataSetとIBQueryではFilterは使えないのでしょうか



298:デフォルトの名無しさん
13/06/07 18:36:55.06 .net
>>285
使えない。OnFilterRecordイベントに書かないとダメだったと思うよ。

299:デフォルトの名無しさん
13/06/08 18:58:42.90 .net
>>286
やはり使えませんか
DataSetProviderとClientDataSetを介すと使えるようなのでそれでやってみます

300:デフォルトの名無しさん
13/06/09 14:53:17.13 .net
>>287
>ClientDataSet
ライセンスに気をつけて。

301:デフォルトの名無しさん
13/06/14 12:19:35.60 .net
D7でゼロ除算例外が起きなくなりました
あるプロジェクトで
var
a : Double;
b,c : integer;
begin
 try
   a := b / c ;
 except
 a := 0;
 end;
end;
のようなコードを書いているのですがある時からaが0でなく-NANになるようになってしまいました
テスト用の簡単なプロジェクトを作ったらそっちでは例外が起きて0になっています
考えられる原因はなんでしょうか
プロジェクトのオプションはどちらも同じはずです
コンパイラ指令もいじっていません

302:デフォルトの名無しさん
13/06/14 12:26:09.67 .net
時間ない、だれかフォロー
Set8087( default8087) を

303:デフォルトの名無しさん
13/06/14 12:50:24.68 .net
>>290
計算前に
Set8087CW(Default8087CW);
といれて試してみましたが変わりませんでした

304:デフォルトの名無しさん
13/06/14 13:35:23.88 .net
初期化していないローカル変数はゼロになるとは限らない。
いままで、たまたま動いてた。

305:デフォルトの名無しさん
13/06/14 14:18:19.66 .net
>>292

データの中身は除算前に0であることを確認してます
試しに計算直前に0を代入してみましたがやはり例外は起きませんでした
以前コンパイルした物は同じデータで例外が起きてちゃんと0になるんですよ
だから何かの設定かと思ったんですが

306:デフォルトの名無しさん
13/06/14 14:33:10.66 .net
まずはちゃんとエラーを捕まえて except on e で e.Message を見てみる
ゼロ除算をわざとやるなら cに0を代入してみればいい

307:デフォルトの名無しさん
13/06/14 14:38:40.78 .net
>>294
だからエラーが起きないんです
もちろんcに0を入れても

308:デフォルトの名無しさん
13/06/14 14:44:08.52 .net
たぶん最適化のバグだと思う 最適化を外して再構築してみな
最適化したままデバッグしているとドツボにはまるよ

309:デフォルトの名無しさん
13/06/14 14:59:57.58 .net
a := b / c ; の行で生成される fdivp の命令の次の命令あたりで
ブレークポイントをかけて実行。そのとき
(1) コントロールワードの値にZeroDiv例外マスクがかかっているので、
(2) 例外が発生せず、浮動小数点スタックのトップの値が -NAN になった
という症状が発生しているのならば、Set8087CWで対応できるし、
そこでは停止せずに例外が発生して、どこかへ飛んで、-NAN を
浮動小数点スタックに積んでいるなら、それが原因。

310:デフォルトの名無しさん
13/06/14 15:24:35.48 .net
もどった。
D7 だから、昔からある機能で解決しなきゃいけないな。Math ユニットってあったけ?

try に入る前のところに

Set8087($1332);

を入れて。

-NAN になっているのだから演算は正しく行われて、Zero-div 例外がマスクされているだけ。
それを元に戻せばよし

311:デフォルトの名無しさん
13/06/14 15:48:34.76 .net
LoadLibrary 呼ぶと8087CWが変化することがあるので
前後にsave/restoreが必要という話か?

312:デフォルトの名無しさん
13/06/14 16:04:22.91 .net
比較的最近のだと SafeLoadLibrary ってのがあって CW の再設定をしてもらえる。
D7 にあるかどうかは忘れた。

Default8087 を設定しても直らなかった。ってことからすると、MSVC-DLL による 80887 再初期化とは
別の話で、OpenGL とか D3D あたりのユニットを最近追加したりしてないかな?

313:デフォルトの名無しさん
13/06/14 16:17:42.42 .net
色々テストしてみました
default8087cwをtryの外に出したら例外に飛ぶようになりました
ただまったく別の


314:フォームに例外を起こすコードを書いてもやはりdefault8087cwを入れないと 例外にならなかったのでプロジェクトのあちこちにあるこの処理を書き直すことを考えると頭が痛いです



315:デフォルトの名無しさん
13/06/14 16:26:30.48 .net
その場所だけでなくプロジェクトに新規追加したフォームでも起きるんで
プロジェクトオプションで何か設定があるのかもと思ったんですが
まったく同じコードを新規プロジェクトで実行すると例外になるんで

316:デフォルトの名無しさん
13/06/14 16:27:20.73 .net
つ バファリン

317:デフォルトの名無しさん
13/06/14 19:33:14.98 .net
原因判りました

IBXでIBQuery等をOpenするだけで例外をトラップしなくなります

例外を捉えていたテスト用のプロジェクトに単純なSELECT文のIBquery1つ置いてopenしたらダメになりました
何故だorz

同じexeファイルをコピーして試したところどうやらwinxpでは例外になるのにwin7ではだめなようです
頭痛いどころじゃなくなった

318:デフォルトの名無しさん
13/06/14 21:01:54.33 .net
ちょっと教えてください。

Win7で開発しています。

TListviewで各行の高さの30程度にし、SubItemなどの
長目のテキストを半角スペース付きで指定すると
そのスペース位置でうまく改行されます。

ところがXPで同じコードを実行しても改行されず
テキストの後半が「...」に置き換わります。
まあ、これが従来の表示形式だと思いますが。

この挙動が変わったのはOSのバージョンで言うと
どのあたりなのでしょうか?

それと、XPで何らかの方法で改行できないでしょうか?
やっぱりCustomDrawしか方法はないですか?

319:デフォルトの名無しさん
13/06/16 09:28:06.51 .net
以前mp3の実装の仕方を教えてもらった者です。

URLリンク(delphi.about.com)

のサイトにあるようなものを再現知るにはどうしたら良いのでしょう?
本当にどうしたら良いのか判らず…。

あとこのてのものをいじるにはポインタの知識が必要なのでしょうか?

基礎的な質問ですみません。

320:デフォルトの名無しさん
13/06/16 17:12:07.25 .net
再現手順がわりと丁寧に書かれているが?
手順のことを訊いているのではないのか?

321:デフォルトの名無しさん
13/06/16 20:38:55.88 .net
>>307
すいません。
一部のコンポーネントのnameを変更したら、
後はコピペで行けるのでしょうか?

赤線だらけで、何度やっても上手く行きません。
もう少しやってみます。

322:デフォルトの名無しさん
13/06/16 21:10:03.01 .net
片っ端にコピペをしたら無事コンパイルできました。
お騒がせしました。

323: ◆XcB18Bks.Y
13/06/16 22:26:33.28 .net
>>281-284
今更ですが最近似たようなプログラムを書いたので。

フォーム生成の後にリサイズイベントは起きますので
フォームのコンストラクターかOnCreateイベントハンドラで
割合を計算して記憶しておけば大丈夫みたい。

(フォームの宣言の一部)
private
 FMemoWidthRatio: single;
 procedure MemoryMemoWidthRatio;

(実現部)
procedure TForm1.FormCreate(Sender: TObject);
begin
 MemoryMemoWidthRatio;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 Memo1.Width := round(ClientWidth * FMemoWidthRatio);
end;

procedure TForm1.MemoryMemoWidthRatio;
begin
 FMemoWidthRatio := Memo1.Width / ClientWidth;
end;

procedure TForm1.Splitter1Moved(Sender: TObject);
begin
 MemoryMemoWidthRatio;
end;

324:デフォルトの名無しさん
13/06/17 21:03:42.71 .net
WinXP D6 で質問です。

TListviewで ViewStyle := vsReport;
なかのグリッドのマスにマウスでポイントしてグリッドX,Yの位置を知る方法はありますか?
そしてその方法。

今は
ColumsClick := True; で上部のカラムを押してX軸を指定
procedure TForm1.ListViewColumnClick(Sender: TObject; Column: TListColumn);
begin
 // 略(エラー回避)
 ListSelectColumn := Column.Index;
end;

MultiSelect := True; で行にマウスを当ててY軸を指定
procedure TForm1.ListViewClick(Sender: TObject);
begin
 // 略(エラー回避)
 ListSelectIndex := ListView.Selected.Index;
end;

という方法を使ってX,Yを指定してからグリッドの項目に入力などをやっています。

325:デフォルトの名無しさん
13/06/17 21:38:56.98 .net
何が聞きたいのかいまいちわからないんだけど、GetItemAtとかGetNea


326:restItemとかが役に立たないかな?



327:デフォルトの名無しさん
13/06/18 00:33:54.71 .net
>>312
空の項目に文字を入れる場合の現状
>311 でX Yを決めている。

ListView.Items[Y2 行番号].SubItems.Strings[X3 カラム番号-1] := 'Y2 X3 のグリッド';

ListView.Items[ListSelectIndex].SubItems.Strings[ListSelectColumn-1] := 'Yn Xn のグリッド';

つまりマウスで表のマス目を直接1回で場所指定したいわけです。
今は横縦指定してからプルダウンメニューやボタン操作で入れる処理にしています。

328:デフォルトの名無しさん
13/06/18 00:37:02.48 .net
いやいや、日本語でおk

329:デフォルトの名無しさん
13/06/18 02:40:45.85 .net
ええと、言ってる内容がイマイチはっきりしないけど
Listview内の任意の場所をクリックして、その位置にある
Item(行)とSubItemの.Index(列)を知りたいってことですよね。

VBなんかだとGetSubItemAt(かな?)みたいな関数があるけど
Delphiに類似の関数ってあったけ?

でも、各カラムの幅は分かってるんだから、マウス位置のXから
すぐに求められるでしょう?

330:デフォルトの名無しさん
13/06/18 12:44:31.18 .net
これでどうよ

procedure TForm1.OnListViewMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 i,col,row: integer;
 columnX: Integer;
begin
 col := 0;
 row := ListView1.Selected.Index;
 columnX := ListView1.Columns[0].Width;

 for i := 0 to ListView1.Columns.Count do
 begin
  if (X < columnX) then break;
  columnX := columnX + ListView1.Columns[i].Width;
  Inc(col);
 end;

 ShowMessage('col=' + IntToStr(col) + ' row='+IntToStr(row));
end;

331:デフォルトの名無しさん
13/06/18 22:06:14.11 .net
めんどくさいことしなくても、
ListView_SubItemHitTest でOK

332:デフォルトの名無しさん
13/06/19 14:57:20.62 .net
D7でIBXのTIBDataSetでApplyUpdatesを実行してもUpdatesPendingがtrueのままなのですが
何をしたらFalseに戻るのでしょうか
戻らないとしたら更新の有無は何で判断したらいいでしょうか
データベースへの適用はCommitRetainingで行っています

333:デフォルトの名無しさん
13/06/19 16:28:23.27 .net
TIBCustomDataSet.ApplyUpdatesをステップ実行してみればわかるんじゃないかな。
ローカル変数のUpdateActionがuaSkipだとUpdatePendingがFalseにもどらないみたいだけど、
そうなる理由はOnUpdateErrorイベントハンドラに指定したコードによるみたい。

334:デフォルトの名無しさん
13/06/19 17:00:57.64 .net
>>319
ありがとうございます
アフタースクロールイベントでフィールドが変更されてしまっているのが原因でした
アフタースクロールで日付を分解してEditに入れてたのですが
EditのOnchangeでフィールドに書き込んでいたというおまぬけなことをやっていました

335:デフォルトの名無しさん
13/06/19 18:13:38.22 .net
>>316がバグってたので修正版

procedure TForm1.OnListViewMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 col,row: Integer;
 intX,columnX: Integer;
begin
 if (ListView1.Selected = nil) then exit;

 intX := X - ListView1.Selected.Position.X;
 row := ListView1.Selected.Index;
 columnX := 0;

 for col := 0 to ListView1.Columns.Count-1 do
 begin
  Inc(columnX, ListView1.Columns[col].Width);
  if (intX < columnX) then break;
 end;

 ShowMessage('col=' + IntToStr(col) + ' row=' + IntToStr(row));
end;

336:デフォルトの名無しさん
13/06/20 18:59:38.71 .net
D7でDBGridでtabキーを押すと次のレコードに移動するにはどうしたらいいでしょうか
出来ればコードを書かずに済む方法が知りたいです

337:デフォルトの名無しさん
13/06/20 19:25:49.46 .net
>>322
コードは書かなきゃ無理だろ。DBGridのOnKeyPressイベントに
if Key = #9 then DataSet.Nextってやればいいんじゃね?

338:デフォルトの名無しさん
13/06/20 19:59:27.78 .net
>>323
ありがとうございます
いや、手元にあるソースでコードにそれらしきものがないのに次のレコードに移動するのがあるんで
やり方が知りたかったんですよ
それらしいイベント記述もプロパティの設定もないもので
何か見落としてるんだと思うん


339:だけど とりあえずそのやり方でやってみます



340:デフォルトの名無しさん
13/06/20 22:03:47.51 .net
TDBGrid.Options
dgTabs 〔Tab〕キーおよび〔Shift〕+〔Tab〕キーを使って,グリッド内を移動できる

341:デフォルトの名無しさん
13/06/21 02:39:39.18 .net
>>321さん
返事が遅れましてすみません、ありがとうございます。
ListViewで col row が取得できるようになりました。

342:デフォルトの名無しさん
13/06/21 10:46:12.39 .net
322です
>>325
dgtabs=trueです

FalseにするとDBGrid内でtab移動せず他のコントロールに飛んでしまいました

DBGridのReadOnlyを切り替えているところをコメントアウトしたらタブで行移動しなくなったので
これが悪さしてるらしいが原理がわからん
当然編集中はReadOnly=Falseなのだがtabを押すとcolexitもColEnterも発生せずいきなりレコードが移動する
もしかしたら意図的にやってるのではなくDelphiのバグなのか?

343:デフォルトの名無しさん
13/06/22 18:39:47.00 .net
rtl170.bplってどこにおちてるんでしょうか

344:デフォルトの名無しさん
13/06/24 09:26:02.94 .net
System32

345:デフォルトの名無しさん
13/06/26 07:54:55.43 .net
>>237
かなり前の話ですが、
if CompareText(ExtractFileExt(FileListBox1.FileName),'.mp3')<>0 then exit;
での<>0の0は何を指しているのでしょう?

色々な文献で、ファイルにまつわる処理で
=0だったりというのが出てきますが、
ファイル名は文字ではないよな?と悩んでいます。

すみません。教えていただけないでしょうか。

346:デフォルトの名無しさん
13/06/26 08:50:24.43 .net
CompareTextの引数は文字列2つですが、この関数の戻り値は数値です。
URLリンク(docwiki.embarcadero.com)

347:デフォルトの名無しさん
13/06/26 10:56:38.04 .net
判りました。ありがとうございます。

勉強が足りないというレベルじゃないですね。
なんか根本的な物が分かっていない気がします。

348: ◆XcB18Bks.Y
13/06/26 15:58:29.31 .net
大丈夫ですよ。
文字列をパラメーターに取る関数の戻り値は別に文字列型ではなくてもいい、それだけです。

349:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
おはようございます
いつもお世話になっております
TMainMenuの子にショートカットキーCtrl + +を設定したいのですがエラーがでて設定ができません
設定できる方法があればご教授願いたいです
ちなみにCtrl + Num +ではないです

350:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
[ALT}+[F12]でdfmをテキスト表示してShortCutプロパティに直接16427を指定するんじゃ駄目?

351:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
>>355
レスありがとうございます
試してみましたができませんでした・・・
他のショートカットに使われる数字だと指定できるのですが16427だと
ショートカットの欄には何も表示されず空白のままで、実際にショート
カットキーを押してみても反応がありませんでした
ちなみにバージョンはDelphi6です

352:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
>Ctrl + Num +ではない
って言ってももう一つの方なら「Ctrl+;」ではないのか?
或いは「Shift+Ctrl+;」

テンキーの方なら↓
Test1.ShortCut:=ShortCut($6B, [ssCtrl]);
Test1.Caption:=Test1.Caption+#9+'Ctrl + +'+#0;

353: ◆XcB18Bks.Y
13/07/10 NY:AN:NY.AN .net
テンキーでない方の[+]って日本語キーボードとUSキーボードでは違うキーでしたよね。
どちらでも動くように作らないといけないかと思います。

ちなみに手元のTurbo Delphiでは
[;](セミコロン)キーなら単純に"Ctrl+;"で行けました。

354:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
現在のキーボードで、文字に対応するキーコードを調べるにはVkKeyScanを使う。
code := VkKeyScan('+'); // code: SmallInt
key_code := LoByte(code); // key_code: Word
shift := [ssCtrl]; // s


355:hift: TShiftState if (HiByte(code) and 1) <> 0 then Include(shift, ssShift); menu_item..ShortCut := ShortCut(key_code, shift); これでも設定できなかったら、OnShortcutとかOnKeyPressイベントで キーを受け取って自前で処理することになるかな。 (メニューやHintの文字列も自分で追加)



356:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
皆様沢山のレスありがとうございます
こんなにたくさんのレスをいただけるとは驚きました・・・
>>337,>>338さんのおっしゃる通りCtrl+;で実装できました
他のソフトだとCtrl++という表示が出ているという固定観念にとらわれてCtrl++を
表示させようと必死でした・・・
Ctrl++とCtrl+;の表示の違いについては気にしないのでCtrl+;で実装しようと思います
>>339さんの方法は今後もし同じようなことがあれば参考にさせていただきます
レスをして下さった皆様ありがとうございました

357:デフォルトの名無しさん
13/07/26 NY:AN:NY.AN .net
D7でプロジェクト全体で語句を一括置換したい場合どうすればいいでしょうか
IDEの置換だとunit単位でしかできないですよね

358:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
秀丸なりなんなり外部エディタで

359:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
delphiのかなり基本についての質問です。
使ってるバージョンは delphi 6 Personal です。
mp3プレイヤーを作りたいと頑張っていますが、”常にFormの状態を取得する”
というイベントがあるのか無いのか、またあるならばどのイベントかが分かりません。
どうすればできるでしょうか?

360:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
『常にFormの状態を取得する』ってなによ?自分用語じゃなくて他人に伝わるようにね。

361:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
すいませんでした。
自分じゃこれ以上の表現は難しいのでこの質問はやめにします。
スレ汚しすいませんでした。

362:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
TApplicationEvents.OnIdle

363:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
エスパー現る

364:デフォルトの名無しさん
13/07/30 NY:AN:NY.AN .net
>>346
ありがとうございます。

365:デフォルトの名無しさん
13/07/30 NY:AN:NY.AN .net
イベントドリブンなDELPHIでもメッセージをフックして独自な処理をすることもできる
なんのイベント探してるのか知らないけどOSが渡してくるメッセージのどれかだろうから
フォームの状態を常に監視的なことはもちろんできる

366:デフォルトの名無しさん
13/08/01 NY:AN:NY.AN .net
この程度でエスパー扱いか
顧客様はもっと意味がわからん要求してくるけどな

367:デフォルトの名無しさん
13/08/01 NY:AN:NY.AN .net
そのレスに何の意味があるの?

368:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN .net
お前が釣れたんじゃねぇの?

369:デフォルトの名無しさん
13/08/04 NY:AN:NY.AN .net
そのレスに何の意味があるの?

370:デフォルトの名無しさん
13/08/06 NY:AN:NY.AN .net
 Delphi7 のユーザーなのですが、最新版の Delphi の TRichEdit は 7 に比べ格段に進化しているのでしょうか?
 また TEditor 以外の 有力なテキストエディタコンポはありますか?
 RichEdit も有力でかまいませんのでよいコンポがあったら紹介して下さい。

371:訂正
13/08/06 NY:AN:NY.AN .net
> RichEdit も有力でかまいませんのでよいコンポがあったら紹介して下さい。
RichEdit も有料でかまいませんのでよいコンポがあったら紹介して下さい。

372:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
TMaskEditで日付を入力しているのですが
一度入力してしまうと消してブランクにしたいと思っても入力値が不正ですとなってしまって抜けられなくなります
この場合入力を取り消す方法はないのでしょうか

373:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
>>354
超テキトーにお答えします。

>最新版の Delphi の TRichEdit は 7 に比べ格段に進化しているのでしょうか?
たぶん特に進化はしてないかと。トライアル版を試すとかヘルプを見るとか。
URLリンク(docwiki.embarcadero.com)

>また TEditor 以外の 有力なテキストエディタコンポはありますか?
TEditorが正式にUnicode対応するまで、決定版が無いような気がしたり。
TSonEditは、TEditorと同じくUnicode対応の可能性あり。
SynEdit
他にはエディタ真魚のTNotePadとか。たぶんまだまだあるでしょ。

>RichEdit も有料でかまいませんのでよいコンポがあったら紹介して下さい。
最近広告してるTRichEdit代替品。良いかまったく知らんけど。URLリンク(www.trichview.com)

374:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
>>356
「入力を取り消す」が、有無を�


375:セわさず元に戻す、という意味ならこんな感じで。 type TMaskEdit = class(Mask.TMaskEdit) protected procedure ValidateError; override; end; type TForm1 = class(TForm)   … implementation procedure TMaskEdit.ValidateError; begin Self.Reset; end; こんなのもあった。 "必須入力自動キャンセル MaskEdit" http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01118.html



376:デフォルトの名無しさん
13/08/12 NY:AN:NY.AN .net
>>357
 亀だけどサンクス。
 TEditor を使っている TeraPad の作者がいまだに Delphi4 で開発を継続しているのにちょっとびっくりした。
 OS は Windows 7 らしい。私の OS も Windows 7(64bit)なんだけど、Delphi 5 の動きは少し怪しい。32
ビット版の Windows 7 だったらいいのかな?

377:デフォルトの名無しさん
13/08/12 NY:AN:NY.AN .net
>>359
Delphi5 on Windows7 については知らぬ。

それより、TRichEditなら JEDI JVCL - TJvRichEditに言及するのを忘れてた。
VCL標準のは
>TRichEdit はリッチ エディット 2.0 をサポートします。
とのことだが、何をどうサポートしてるのか不明。大昔の機能しかないように見える。

それに対し、TJvRichEditはRichEdit(2.0 & 3.0)の機能をほぼ網羅してる。
背景色・リンク(イベント)・複数回Undo・ズーム・アンダーラインの種類と色、などなど。
URLリンク(wiki.delphi-jedi.org)
URLリンク(wiki.delphi-jedi.org)
URLリンク(wiki.delphi-jedi.org)

378:デフォルトの名無しさん
13/08/25 NY:AN:NY.AN .net
Delphi XE3とか既にインストールされてるのですが、今から、古いバージョンの
Delphi2009とかをインストールしても問題ないでしょうか??
ファイルの関連付けは変わりそうですが。

379:デフォルトの名無しさん
13/08/25 NY:AN:NY.AN .net
ご想像の通りあまりお勧めできないかなぁ。大丈夫かもしれないけど。
あとからXE3を修復セットアップかけてみるとか…?

380:デフォルトの名無しさん
13/08/25 NY:AN:NY.AN .net
やっぱ、おすすめできないですよね。
いざとなったら、仮想マシンの方で頑張ってみます。

381:デフォルトの名無しさん
13/08/25 NY:AN:NY.AN .net
問題になりそうなのはヘルプ、関連づけ、同梱されてるサードパーティ製品くらいかな。
でも動いてる環境に影響がありそうなことはしたくはないよね。

382:デフォルトの名無しさん
13/08/25 NY:AN:NY.AN .net
環境変数もあるか。

383:デフォルトの名無しさん
13/08/27 NY:AN:NY.AN .net
エンバカが Delphi 買ったのって、エンバカのツールが Delphi で書かれていたからなんだって。
すごいね

384:デフォルトの名無しさん
13/08/27 NY:AN:NY.AN .net
         _人人人人人人人人人人人人人人人_
        >   そうなんだ、すごいね!      <
       ´ ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
            __、、=--、、         __
           /    ・ ゙!       /・   `ヽ
           | ・   __,ノ       (_    ・ |
           ヽ、 (三,、,         _)    /
            /ー-=-i''       (____,,,.ノ
            |__,,/          |__ゝ
             〉  )          (  )

385:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
初めまして
過去ログみてsystem32を見てみたのですがrtl170.bplが見当たりません
どこにありますか…?

386:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
>>368
いや、あんた使ってるDelphiのバージョンとか 、
何をしたらどんなエラーが出るとか書かないとエスパー降臨待ちになるで

387:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
>>368
すいません。
Delphi絡みというよりも、やっているPCゲームでrtl170.bplを要求されてしまって
ぐぐってもなかなかでてこないときに>>328に辿り着いたので安易に質問してしまいました
そもそもrtl170.bplというファイル自体がよくわかりません…

388:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
ゲームメーカーに問い合わせるしかないんじゃね?

389:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
>>370
作者に連絡してリリースビルドかつランタイム同梱形式でコンパイルしてもらうか、
配布用ランタイムパッケージつくってもらえ

390:デフォルトの名無しさん
13/09/04 10:38:23.26 .net
整数とかの変数名のあたまにマイナス符号つけるやり方って昔からあった?

391:デフォルトの名無しさん
13/09/04 11:58:48.55 .net
ごめん、君の言ってることがわからない > 373

AnotherIntVariable := - IntVariable;

ってこと?

392:デフォルトの名無しさん
13/09/11 11:16:41.24 .net
TPopupMenuを上に展開するのってどうやるのでしょうか

393:デフォルトの名無しさん
13/09/11 13:11:42.47 .net
>>375
カーソルの上の方にということならそのように座標をを指定するだけ。

394:デフォルトの名無しさん
13/09/11 13:35:00.78 .net
>>376
popupメソッドだと左上が基点になんですが、
デスクトップで右クリックしたときに出るメニューみたいに
左下や右下を基点にする方法はありますか?

395:デフォルトの名無しさん
13/09/11 13:49:17.25 .net
PopupMenu1.Popup(0, 0);が左上だから
PopupMenu1.Popup(0, 768);で左下
PopupMenu1.Popup(1024, 768);で右下にならない?

396:デフォルトの名無しさん
13/09/11 23:03:04.06 .net
> デスクトップで右クリックしたときに出るメニューみたいに
画面下にはみ出しそうだと勝手に上向きに調整されるだけ
逆に画面上につっかえるような指定すると、どう頑張っても下向きにされるはず

397:デフォルトの名無しさん
13/09/12 01:05:31.45 .net
>>377-379
強制的に、またはデフォルトで左下や右下を基点にしたい、って意味なのかな?
どうしてそんな必要があるのか分からんけど。

398:375
13/09/13 18:17:19.80 .net
フォームの下のほうに配置したボタンでポップメニューを出すようにしてるんですが、
通常はボタンの左下を基点に表示するようにしてるけど、
メニューが多くなって上に展開されたときにボタンが隠れてしまうので、
はじめからボタンの上方向に展開できればと思ったのです。

399:デフォルトの名無しさん
13/09/13 19:43:33.26 .net
DephiにC++のコピーコンストラクタみたいな物は無いのでしょうか?
もしくは代わりになりそうな機能

400:デフォルトの名無しさん
13/09/13 23:18:35.26 .net
ない
自分でoverloadしたコンストラクタを実装か、Assignを実装して内容をコピる

かなぁ。あとは高度なrecord型を使う

401:デフォルトの名無しさん
13/09/15 23:26:29.21 .net
iPhoneをターゲットとした開発を考えています。
xcode(昔のVC6.0のようなRADとはほど遠い開発環境)に苦痛を感じています。
iPhone向けのDelphiはいわゆるRADなのでしょうか?

Windows版はDelphi6Personalの時に使っていたので
同じように開発できるならpro版を買おうと思っています。

402:デフォルトの名無しさん
13/09/15 23:46:20.96 .net
>>384
RADだよ。制限も多いけど。

403:デフォルトの名無しさん
13/09/16 02:22:34.88 .net
>>384
解説本が出てるから見てみたら。
URLリンク(www.embarcadero.com)

404:デフォルトの名無しさん
13/09/17 09:03:42.93 .net
iOSはPro版だけじゃ駄目だから気をつけて

405:デフォルトの名無しさん
13/09/24 21:59:38.74 .net
iOS/Android開発するには最低おいくら掛かりますか?
個人的に触ってみるつもりです。(トライアル版は今落としてます)
XE5 Starter版でも「XE5 Starter ESD アップグレード」なるものを当てれば
iOS/Android開発できる??
とんちんかんな質問ですんません

406:デフォルトの名無しさん
13/09/24 23:11:50.03 .net
iOS/Android開発するにはDelphi Pro+Mobile-Addonが最低条件。DEKOさんとこの

URLリンク(ht-deko.minim.ne.jp)

で『2009 以前のバージョンまたは新規購入の方: モバイル開発環境あり』のところを参照。
ご新規さんだと157,700円が最安値かな(全然安くねーとは思うが)。

407:デフォルトの名無しさん
13/09/24 23:16:31.95 .net
あーあとiOSの場合はAppleにも冥加金を払う必要があるんで。iOSデベロッパプログラム、年8,400円だとさ。
ちなみにMac(OSX)とは別立てね。

408:デフォルトの名無しさん
13/09/24 23:26:36.74 .net
>>388
Starterではまったくダメです。Mobile Add-On Packの要件外なので。
>「XE5 Starter ESD アップグレード」なるものを当てれば
いや、それが普通のStarter版ですよ。
(他の有償/無償の開発ツールユーザーが対象。インストール確認は特に行わないはず。だから…。)

しかし、、、目が飛び出そうな価格に驚いたでしょ(笑)

409:デフォルトの名無しさん
13/09/25 08:26:14.01 .net
アイフォン用のアプリを登録するだけでも金がかかる、と アホ臭い

410:デフォルトの名無しさん
13/09/25 08:55:33.28 .net
いつの時代から来たんだ…w

411:デフォルトの名無しさん
13/09/25 23:18:19.52 .net
>>389-391
うーむ高いですねぇ、ひとまずiOS/Android開発は諦めます。
Delphi XE5 Pro単体でも10万円ってのも痛いっす(自分は新規購入です)
Starterは将来モバイル開発したくなったとき、ゴミと化してしまうので買うに買えませんしね・・・
ご親切に回答ありがとうございました!

412:デフォルトの名無しさん
13/09/25 23:27:47.30 .net
少なくともまだ買わないのが正解。
買う場合はXE7あたりになってもっと安定してから。

413:デフォルトの名無しさん
13/09/27 20:32:06.35 .net
Delphi の exe って無駄に大きいけど、小さくするのは難しいんですか。
ネット検索すると小さくする方法がいくつかあったけど、なんか面倒。

普通にコンパイルして小さくなるようなバージョンを開発してほしい。

414:デフォルトの名無しさん
13/09/27 23:09:04.54 .net
基本的には無理
EXE自体にフォームなどのリソースを全部リンクする構造なんで

VBみたいにライブラリをランタイムとして提供すればある程度は小さくなるけど
トータルで見ればむしろデカくなる上配布が面倒になる

EXEパッカーという手もあるがセキュリティソフトの誤爆率が大幅上昇するのでお勧めしない

415:デフォルトの名無しさん
13/09/28 03:20:24.42 .net
そうですね。
っていうか、今時サイズ気にします?
本当に動きに差異が無いなら、小さい方が良いのは理解します。
でも、それを検証するのも面倒だし、そんなこと気にしている暇があるなら、
もっと、他の事に時間を費やした方が宜しいかと。。。

まぁ、XE4で、空のexe作った時のサイズには、流石に驚愕しましたが。
Debugだからだったのね。Releaseにしたら、気にならないよ。

416:デフォルトの名無しさん
13/09/28 08:27:13.11 .net
Delphi XE5 で人生初 Android アプリを作ったら 30M 超えてて泣いた

417:デフォルトの名無しさん
13/09/28 09:13:16.04 .net
30Mなんて今どきジュースも買えんだろ

418:デフォルトの名無しさん
13/09/28 11:43:30.30 .net
Androidアプリでも30MBはデカすぎ

419:デフォルトの名無しさん
13/09/28 12:37:49.15 .net
昔と違って HDD 容量も大きくなったけど
やっぱり1本で 30 M超えると「ちょっと大きいよね」と思ってしまう。
業務用アプリだと1だけでは無いので余計困る。

420:デフォルトの名無しさん
13/09/28 19:34:27.02 .net
MS: TMemoryStream;
MS.SaveToFile(FileName);
これって内部的にどうやってるの?
del6perでソース無いので教えてください。

421:デフォルトの名無しさん
13/09/28 20:06:19.23 .net
>>403
>del6perでソース無いので教えてください。
↓ほとんど同じですからどうぞ。

■OpenCLX
URLリンク(sourceforge.jp)


422:fnet_openclx/ OpenCLX-0.1ALPHA.tar.gz \OpenCLX-0.1ALPHA.tar\OpenCLX-0.1ALPHA\rtl\common\Classes.pas ■FreeCLX http://sourceforge.jp/projects/sfnet_freeclx/ freeclx-k1-2.2.4-4.tar.gz \freeclx-k1-2.2.4-4.tar\freeclx\rtl\Classes.pas



423:403
13/09/28 22:04:52.38 .net
㌧、DLしました。
色々研究できそうです。

424:デフォルトの名無しさん
13/09/30 11:22:58.53 .net
android用のリリースビルドで30M?
なら確かに厳しい、、、

425:デフォルトの名無しさん
13/10/05 18:39:19.34 .net
Debugビルドでないの?
Winの場合はDebugとReleaseで全然サイズ違うよ

426:デフォルトの名無しさん
13/10/06 16:52:58.64 .net
デュアルモニタ環境で開発していて気付いたのですが
TPopupMenu.Popup(X, Y)でホップアップメニューを表示させるとき、
モニタ1(プライマリ)上では正常に表示されるのに
モニタ2上で表示させようとすると必ずモニタ1に表示されてしまいます。

何か設定が足りないのでしょうか?
どなたか何か情報お持ちでしたら教えてください。

427:デフォルトの名無しさん
13/10/06 17:11:48.11 .net
バージョンくらい書けよ

428:デフォルトの名無しさん
13/10/06 17:33:37.19 .net
スパンモードってことだよね
PopupMenu1.Popup(2000,100);で普通にセカンドモニタに出てくるけど
(X,Y)はどうやって計算してる?
TScreen.DesktopTop や TScreen.DesktopWidth とか
function DeskTop:TRect;
begin
//タスクバーなどを除いたデスクトップのワークエリアを取得
SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0);
end;
とかの組み合わせを間違ってないかな?

429:408
13/10/06 19:46:06.91 .net
>>409-410 返信ありがとうございます。

バージョンはXE5で、FireMonkeyデスクトップアプリケーションで作ってます。

> (X,Y)はどうやって計算してる?
Screen.MousePosでX,Yもってきてます。
(数値の直入力も試してます)

私のモニタの配置が
[モニタ2][モニタ1]
というようになってまして、
配置を
[モニタ1][モニタ2]
としたところ正常に表示できました。

うーん・・・

430:デフォルトの名無しさん
13/10/06 20:58:55.38 .net
ついでにOSも…

431:408
13/10/06 23:27:28.67 .net
OSはWindows 7 Professional 64bitっす

432:デフォルトの名無しさん
13/10/07 14:22:44.65 .net
ひょっとしてモニタ2の座標はマイナスかな

433:408
13/10/07 21:16:31.52 .net
>>414 そです、マイナスです

434:デフォルトの名無しさん
13/10/08 01:04:16.67 .net
そういうのVCLならライブラリの中に潜っていって調べるのが当たり前だったけど、
Firemonkeyの中を見たらまるっきり構成が変わってて知らない土地に来たみたいな感覚だな。
マルチプラットフォームだしなかなか手が出しにくいな。

435:デフォルトの名無しさん
13/10/09 09:53:35.37 .net
パーティションツールとかによくある、
サイズを拡縮できるバーみたいなのってどうやって作るの?

436:デフォルトの名無しさん
13/10/09 10:05:49.74 .net
>>417
よくあるじゃ分からない。
本当にやりたいなら、詳しい説明画像とか作って示す手間をかけてくれ。

437:デフォルトの名無しさん
13/10/09 10:21:58.27 .net
>>417
標準コントロールじゃないので自分で作れ
コントロールの縁付近でマウスを押されたら
カーソル移動移動に合わせてコントロール伸縮するように
作ればいいんじゃないかな

438:デフォルトの名無しさん
13/10/09 10:43:32.24 .net
SplitterとPanelを並べれば似たような事が出来るかも?

439:デフォルトの名無しさん
13/10/09 11:50:18.23 .net
標準にはないのね。ありが㌧

440:デフォルトの名無しさん
13/10/09 11:54:49.30 .net
しょーがないんだけど、一般的な業務アプリで使わなさそうなGUIは
自分で何とかしないと駄目なんだよね
俺は今ビデオ編集みたいなタイムラインが必要で困ってる

441:デフォルトの名無しさん
13/10/09 12:02:09.60 .net
そうそう、そんなイメージ。タイムライン
やっぱpanelとsplitterかな。
他にいいアイデアない?くだすれ思考で。 <


442:デフォルトの名無しさん
13/10/09 12:19:20.87 .net
さっさとつくって公開してくれや。

443:デフォルトの名無しさん
13/10/09 12:20:29.27 .net
描画とクリックだけでしょ。作ったほうが簡単

444:デフォルトの名無しさん
13/10/09 12:55:28.08 .net
1
OnMouseDown で座標を記憶し OnMouseUp で座標を引き算してコントロールの位置や大きさを整える。

2
必要に応じてカーソルも変える。

3
ちょっと贅沢したければOnMouseUp での整形を OnMouseMove でやる。

TSplitter は扱いづらいので自作がお勧め。

445: ◆rW3tmvmDLc
13/10/09 16:46:41.76 .net
>>425
うちもそう思いますが描画とマウス操作だけなら自分でコンポを書くほうが楽だと思います。

unit unko;

interface

uses
 SysUtils, Classes, Controls, Graphics;

type
 TUnko = class(TGraphicControl)
 private
  FDragging: boolean;
 protected
  procedure Paint; override;
  procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); override;
  procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); override;
 public
  constructor Create(AOwner: TComponent); override;
 end;

implementation

constructor TUnko.Create(AOwner: TComponent);
begin
 inherited; //
 Width := 128; Height := 128;
end;

(つづく)

446: ◆rW3tmvmDLc
13/10/09 16:49:38.52 .net
>>427
文章がおかしかった、ごめんなさい。

おそらく何から手を付けていいかわからないと思いますので
クソみたいなサンプルを作ってみました。(以下、>>427の続き)

procedure TUnko.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); // マウスボタンが押された時に呼び出される。
begin
 if Button = mbLeft then
 begin
  FDragging := True; // 「左ボタンでドラッグしてます」
  Invalidate; // Windowsに「適当なタイミングで再描画してね!」とリクエストする
 end;
 inherited;
end;

procedure TUnko.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); // マウスボタンが離された時に呼び出される。
begin
 if Button = mbLeft then
 begin
  FDragging := False; // 「ドラッグはやめました」
  Invalidate;
 end;
 inherited;
end;

(続く)

447: ◆rW3tmvmDLc
13/10/09 16:52:25.76 .net
>>428の続き)

procedure TUnko.Paint; // ここで描画する
begin
 if FDragging then // 「ドラッグ中?」
 begin
  Canvas.Pen.Color := clRed;
  Canvas.Brush.Color := clYellow;
  Canvas.Rectangle(ClientRect);
  Canvas.Font.Color := clRed;
  Canvas.TextOut(2, 2, 'ぶりっ!');
 end
 else
 begin
  Canvas.Pen.Color := clYellow;
  Canvas.Brush.Color := clGray;
  Canvas.Rectangle(ClientRect);
  Canvas.Font.Color := clYellow;
  Canvas.TextOut(2, 2, 'うんこ');
 end;
end;

end.

(続く)

448: ◆rW3tmvmDLc
13/10/09 16:57:13.87 .net
>>429の続き)

呼び出しサンプル…といっても生成するだけですが

uses (中略), unko;

type
 TForm1 = class(TForm)
 private
  FUnko: TUnko;
 public
  constructor Create(AOwner: TComponent); override;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent);
begin
 inherited;
 FUnko := TUnko.Create(Self);
 FUnko.Parent := Self;
end;

>>427-429のうちコードのところだけをコピペ、
見やすくするために全角空白にしているところを半角空白かタブに置換して、
unko.pasで保存すれば使えるはず。

449:デフォルトの名無しさん
13/10/09 17:15:24.33 .net
たいしたもんだ
家に来て妹をファックしていいぞ

450:デフォルトの名無しさん
13/10/09 17:33:09.82 .net
高見盛似のな

451:デフォルトの名無しさん
13/10/09 17:54:52.62 .net
ドラッグ中のESCキーとか、Alt+TABとか、
ウィルスバスター起動してフォーカス持ってかれたとか
この辺どうなの?

452:デフォルトの名無しさん
13/10/10 05:21:34.02 .net
XE5で作ったAndroidアプリがデカすぎて、
実機での起動時のロード時間がえらいかかるらしいってほんまでっか?

453:デフォルトの名無しさん
13/10/10 06:10:39.26 .net
デバッグビルドはね

454:デフォルトの名無しさん
13/10/10 07:01:24.90 .net
厳密にはガセ
ADB / USB ケーブルによるファイル転送と AP


455:K ファイルの展開/デジタル署名の検証に 時間がかかるだけで、いったんアプリを転送して展開してしまえばネーティブコード(笑)なので デバッグビルドでもリリースビルドでも差はない。 まぁデバッグ時には毎回(コードを変更していなくても)アンインストール、インストール、APK 署名検証、APK から ファイルの展開/抽出をするので、おそいといえば遅い。



456:デフォルトの名無しさん
13/10/10 07:25:39.18 .net
なる

457:デフォルトの名無しさん
13/10/10 15:05:07.64 .net
なる

458:デフォルトの名無しさん
13/10/11 13:57:17.85 .net
with文の式を指す予約語とかある?selfみたいな

459:デフォルトの名無しさん
13/10/11 17:00:50.84 .net
式じゃなくてオブジェクトですね。
ないんです、すみません。

460:デフォルトの名無しさん
13/10/11 19:35:39.45 .net
やっぱ欲しいよね、アレ
with TStringList.Create do とかした時に Strings 引数で他に飛ばす時とか
でもないんだよね
しかも今後は with 文自体が非推奨になっていくみたいだし……

461:デフォルトの名無しさん
13/10/14 03:33:41.73 .net
Withはミスりやすいから仕方ない。
完全に被らないようにするか、Withしてない方にSelfだの付ければ良い

462:デフォルトの名無しさん
13/10/15 12:27:08.34 .net
エディタの進化でwithはいらん子だわな

463: ◆rW3tmvmDLc
13/10/17 17:26:29.50 .net
うちは逆にwithを使うようになってます。ただし

・使わないとえらい長たらしくてわかりにくい場合
・ピンポイントでのみ使う(長いbegin~endブロックでは使わない)
・パラメーターが1つ(つまり with Untara, Kantara do などとはしない)

のすべてを満たす場合だけです。たとえば

if opAruFlag in MainData.Untara.Kantara.Options then
 MainData.Untara.Kantara.Options := MainData.Untara.Kantara.Options - [opAruFlag]
else
 MainData.Untara.Kantara.Options := MainData.Untara.Kantara.Options + [opAruFlag];



with MainData.Untara.Kantara do
 if opAruFlag in Options then
  Options := Options - [opAruFlag]
 else
  Options := Options + [opAruFlag];

こうするような場合。

464:デフォルトの名無しさん
13/10/17 20:34:04.70 .net
with ListBox do Selected[ItemIndex]:=True;
これは一番よく使うパターンだけど ItemIndex は入力支援で出てこないんだよね

465:デフォルトの名無しさん
13/10/18 16:16:05.43 .net
with使うとブレークした時にカーソル合わせても値が表示されないからクソ

466:デフォルトの名無しさん
13/10/18 18:35:12.94 .net
というか入力支援捨ててまで使おうとする奴はアホ

467:デフォルトの名無しさん
13/10/18 20:18:16.28 .net
フラグを足し引きしてるのがすんごい違和感ある or,xor,andだろ

468:デフォルトの名無しさん
13/10/18 21:06:52.48 .net
これは集合型ですから。
>>444
Include、Excludeを使うとさらに良くなるかな?

469:デフォルトの名無しさん
13/10/18 22:57:41.69 .net
俺は全然、集合型を足しひきするのはOK

470:デフォルトの名無しさん
13/10/19 00:24:53.69 .net
D7でボタンを押すとファイル選択のダイアログを表示する処理で
OpenDialog1.FileName := FName; //デフォルトのファイル名 
if OpenDialog1.Execute then
begin
//処理
end;
といったコードを書いているのですが一部のwindows7でダイアログが表示されなっくて困っています
同じバイナリで表示されるPCと表示されないPCがあります
同様の現象に遭遇したことがある方、解決方法をご存知でしたら教えてください

471:デフォルトの名無しさん
13/10/19 19:23:02.07 .net
最小限再現するコードがほぼそれだけなら
「表示されないPCが」おかしい

472:デフォルトの名無しさん
13/10/20 02:00:53.23 .net
初めましてTurbo delphiで時たまプログラミング遊びしている者です。
今作成しているプログラムで壁にぶつかってしまったのでなにかヒントを頂けると嬉しいです。

特定フォルダ内のexeファイルのパスを拾って、ボタン1つで起動させるソフトを作っています。
メモ帳やペイント、その他多くのソフトは想定通り起動してくれ�


473:驍フですが、 JAVAで作られたexeソフト?だけ実行しようとしても 「アプリケーションの実行に失敗しました。」と出て実行することができません。 他のソフト起動に試した関数は以下の三種類です。   CreateProcess   ShellExecute   WinExe ネット検索をしても上記3つの関数しか提示されていなくどういうアプローチで修正すればよいかわからず困惑しています。 似た事例を経験されて解決方法をご存じの方がいらっしゃいましたら是非ともご教示願いたいです。 どうかよろしくお願いします。



474:デフォルトの名無しさん
13/10/20 02:17:45.88 .net
javaでexeってLaunch4jとかそんなの?

475:デフォルトの名無しさん
13/10/20 02:23:48.32 .net
起動できないソフトの名前を書くように

476:デフォルトの名無しさん
13/10/20 02:25:49.71 .net
>>453
正解は知らないけど、ShellExecuteに絞ってやったほうがいい。
 ダブルクリックで起動できる = 「ファイル名を指定して実行」で起動できる = ShellExecuteで起動できる
…のはずだから。

ShellExecuteも様々なパラメータ指定のやり方があるから、あらゆる方法を試したら。
今はどうやってるの?

477:デフォルトの名無しさん
13/10/20 02:35:13.02 .net
こんな深夜に皆さん本当にありがとうございます。

>>454さん
申し訳ありません
私はJAVAに詳しく無くて詳細はわからないのですが、
そのソフトの同一階層にjreというフォルダがあったり
.jarや.jsといった拡張子ファイルがあるのでjavaで作ったソフト?なのかなと思って書かさせて頂きました。

>>455さん
申し訳ありません
『TimeManager』という勤怠管理ソフトです。
URLリンク(www.vector.co.jp)

>>456さん
情報ありがとうございます。ShellExecuteで色々試してみます。
今の方法を示します

exedatはstring型でファイルのパス名が入っています。

ShellExecute(Handle,'open',PChar(exedat),'',
// PChar(ExtractFilePath(Application.Exename)),SW_SHOWDEFAULT);

です。
情けない話で、APIはまだあまり理解していないので下記サイトのコピペで実行しています。
URLリンク(www.wwlnk.com)

478:デフォルトの名無しさん
13/10/20 02:48:26.24 .net
とりあえず、ワケ分からないで付けてる「既定のディレクトリ名」は外そう。
ただし、試してないよ。
ShellExecute(Handle, 'open', PChar(exedat), '', nil, SW_SHOWDEFAULT);

479:デフォルトの名無しさん
13/10/20 02:56:31.43 .net
>>458さん
ありがとうございます。
第五引数をnilにしましたが残念ながら結果は変わらず「アプリケーションの実行に失敗しました」でした。
ご助言誠にありがとうございます。

普段使用しているランチャーソフトからはパスを拾って普通に実行できるので
外部ソフトからの起動ができないわけではないと思うのですが…

480:デフォルトの名無しさん
13/10/20 03:03:44.38 .net
exedatの中身はどうなってるの?
それを「ファイル名を指定して実行」で起動する?

481:デフォルトの名無しさん
13/10/20 03:18:45.06 .net
>>460さん
ありがとうございます。
ブレークポイントを置いて確認したところ想定通りのパスが入っていました。
加えて、試しにコピーして「ファイル名を指定して実行」を実施した所しっかり起動しました。
ご助言ありがとうございます。

482:デフォルトの名無しさん
13/10/20 03:21:32.26 .net
では、これは?
ShellExecute(Handle, nil, PChar(exedat), nil, nil, SW_SHOWDEFAULT);

空文字が見苦しいからnilで統一した。どっちでも受け付ける…と思う。

483:デフォルトの名無しさん
13/10/20 03:33:00.63 .net
>>462さん
ありがとうございます。
結果は同じく「アプリケーションの実行に失敗しました」でした。

起動が上手くいかないフォルダに別のソフトのexeファイルを入れて
それに対して実行できるか試してみましたが、別のexeファイルなら想定通り実行出来ました。

また、第六引数の表示状態の指示も下記サイトに表記の全6パターン全て試しましたが実行できませんでした。
URLリンク(eternalwindows.jp)


484:.html



485:デフォルトの名無しさん
13/10/20 03:39:56.23 .net
難しいねぇ。
当該のソフトは軽い気持ちで入れたくない量(嫌な予感)なので、パスさせて。
お役に立てなくてすまぬ。

他、心当たりある人助けてあげて。

486:デフォルトの名無しさん
13/10/20 03:48:25.11 .net
>>464さん
こんなに深夜遅くまでご教示くださり誠にありがとうございました

たった今無事に当該exeファイルを想定通り起動することが出来ました。
URLリンク(www.wwlnk.com)
に記載のCreateProcessを用いて下記のコードで実行してみたところ

  GetStartupInfo(SI); //他アプリの起動
  CreateProcess (PChar(exedat), '', nil, nil, False, 0, nil, PChar('C:\Program Files\MOBWAYS\TimeManager\'), SI, PI);

無事目的のexeファイルを起動することが出来ました。
手持ちの参考書『カンタン!Delphiプログラミング』には第8引数に「 CREATE_DEFAULT_ERROR_MODE」と記載してあったのですが
上記のようにカレントフォルダを指定してあげると想定通りの起動を得ることが出来ました(まだ難しくて理解できていないです)。
まだまだわからないことだらけで情けない限りです。


繰り返し、>>464さん夜分遅くまでお付き合い下さり
本当に、本当にありがとうございました。

スレを長レスで乱して申し訳ありませんでした。
皆様ありがとうございました。

487:デフォルトの名無しさん
13/10/20 03:54:31.39 .net
>>465
ほー、そうなんだ。
無駄なことさせたようで悪かったね。ごめんなさい。
とにかく目的が果たせて良かった。

488:デフォルトの名無しさん
13/10/20 03:58:05.95 .net
>>466さん
とんでもないです
問題点を精査するアプローチを学べました。
大変参考になりました。本当にありがとうございます。

489: ◆rW3tmvmDLc
13/10/21 16:33:49.96 .net
>>449
Inludde/Exclude手続きが使えるのは集合型「変数」のみで
集合型「プロパティ」には使えません。

集合演算子に xor があったらありがたかったです。

490:デフォルトの名無しさん
13/10/21 17:39:48.66 .net
初めまして。
VCLフォームアプリケーションで書いたプログラムをFireMonkeyモバイルアプリケ

ーションに移植しようとしているものです。

【症状】
PaintBox.Canvas.Pixels[x,y]のPixelsがエラーメッセージ E2003 未定義の識別

子を吐き出し、詰まっております。

【質問内容】
PixelsはVCLフォームアプリケーションでしか使用できないものなのでしょうか?
また、そうであるとすれば、PaintBoxに点を描画できる方法はあるのでしょうか?

何かご存知の方、ご教示頂けると幸いと存じます。

491:デフォルトの名無しさん
13/10/21 18:36:30.52 .net
Googleってご存知でしょうか?
もしご存知であれば"FireMonkey Pixels"で検索することはできないのでしょうか?

492:デフォルトの名無しさん
13/10/21 20:07:15.70 .net
個人情報抜かれるから無理ですね。

493:デフォルトの名無しさん
13/10/21 23:14:40.14 .net
高橋(智)です
ソースは画像でうpしてます(笑)

494:デフォルトの名無しさん
13/10/22 05:08:56.42 .net
高橋さんって嫌われているの?

495:デフォルトの名無しさん
13/10/22 06:04:41.26 .net
遊ばれてるだけだろ。あまり愛想のいい人じゃないけど、嫌いじゃない。

496:デフォルトの名無しさん
13/10/22 23:33:52.71 .net
じゃあ DEKO さんと Mr.XRAY さんは?

497:デフォルトの名無しさん
13/10/24 23:33:52.26 .net
ネチネチ。

498:デフォルトの名無しさん
13/10/31 23:10:39.41 .net
XE2のフォーマッタで
datetimetostr -> DateTimeToStr
というのをやるオプションってないんですか?
XE3以降では出来たりしますか?

499:デフォルトの名無しさん
13/11/02 07:56:58.37 .net
ちょっと教えてください。

Win7(x64)上のXEで
TListview�


500:フOnCustomDrawSubItemを使って 各行のSubItemに図形を描いています。 これ自体は正常に描けているんですが、 本来、Windowsに任せているハズのCaptionが マウスを上に持ってくると文字背景が黒くなり テキストを判別できなくなります。 で、Captionも自力で描こうとOnCustomDrawItemを使うと、 こんどはOnCustomDrawSubItemがまったく機能しなくなります。 OnCustomDraw...って、どうやって使うんでしょうか?



501:478
13/11/02 08:45:01.40 .net
>>478で質問した者です

ここに回答がありました
URLリンク(stackoverflow.com)

で、イベントの最後に
SetBkMode(Sender.Canvas.Handle, TRANSPARENT)
を追加すると上手く行きました

502:デフォルトの名無しさん
13/11/06 19:26:53.35 .net
DelphiのTFormのLeftとかWidthって実際の値とは違うの?

Windows 7で2つのFormをピッタリ並べたいんだけど
LeftとWidthだけ使うと、Form同士が微妙に重なってる

実際に画面キャプチャして調べると、LeftもWidthも
設定した値と違ってるんだけど...
(外枠相当が数値に反映されてない?)

Formの位置やサイズを正確に調べる方法ってありますか?

503:デフォルトの名無しさん
13/11/06 19:31:56.33 .net
left,top
width,height

504:デフォルトの名無しさん
13/11/06 19:48:02.82 .net
>>480
重なってると思ってる部分は単なる影だろ
Aero切るかクラシック表示にして試してから言え

505:デフォルトの名無しさん
13/11/06 19:59:11.78 .net
>>480
フォームを一つだけ最大化して、その値を半分にしてはどうかな。

506:デフォルトの名無しさん
13/11/06 20:02:08.09 .net
Win32APIのAdjustWindowRectExが現実とは異なる値を返している(かパラメータが正しくない)んじゃないかな。

507:デフォルトの名無しさん
13/11/06 20:39:52.11 .net
>>480
ここにVista以降のウィンドウサイズについて詳しく書いてある
URLリンク(mrxray.on.coocan.jp)

ここに出てる2つのAPI使って枠のサイズを計算する
確かWindows 7で5ピクセルだと思った(うろ覚え)

ウィンドウを並べるんだったら右側のウィンドウ位置を
左のウィンドウのLeft+Width+10とする

508:480
13/11/06 21:08:02.18 .net
すばやい回答ありがとうございます。

>>485
試しに10足してみると2つのFormがピッタリ並んだ
APIとかまだ使ったことないけど挑戦してみる

ありがとう

509:デフォルトの名無しさん
13/11/07 10:06:13.17 .net
Form.Widthはクライアント領域の幅で、枠は考慮しない これは常識だけど・・・?

510:デフォルトの名無しさん
13/11/07 10:09:14.72 .net
常識だったのか…?

511:デフォルトの名無しさん
13/11/07 10:12:43.14 .net
クライアント領域の幅ってForm.ClientWidthじゃなかったっけ?

512:デフォルトの名無しさん
13/11/07 16:10:24.72 .net
そうだね。そっちが常識。>>487は…(笑)

513:デフォルトの名無しさん
13/11/08 01:54:51.72 .net
そういえばScreenSnapをtrueにしてると
Formがスクリーン端に吸着するとき
枠が外にはみ出すんだよな

それ以来ScreenSnapは使わなくなった

514:デフォルトの名無しさん
13/11/08 14:39:53.52 .net
Delphiの「Windows○○対応」は表面上だけだからな
本来はOSや状態による差をVCL内部で考慮するのが当然なんだが

515:デフォルトの名無しさん
13/11/09 02:02:37.76 .net
>本来はOSや状態による差をVCL内部で考慮する
もう何年も前に、そういった思想は破棄されている
ただまぁ昔話は止めておけ

516:デフォルトの名無しさん
13/11/09 14:40:32.88 .net
は?

517:デフォルトの名無しさん
2013/11/10(


518:日) 13:18:16.26 .net



519:デフォルトの名無しさん
13/11/11 02:42:49.00 .net
簡単
WM_WINDOWPOSCHANGING
とかでぐぐれば、いくらでも例が出てくるだろう

520:デフォルトの名無しさん
13/11/11 05:34:05.14 .net
>>495 汚いソースで恥ずかしいけど、Del7のを参考にしてみた
uses DWMAPI;
FSnapBuffer: integer FScreenSnap: boolean; FFrameSize: integer;
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;

function GetWindowFrame(Handle: THandle): integer;
var R1, R2: TRect;
begin
result := 0; try
if Win32MajorVersion >= 6 then begin
DwmGetWindowAttribute(Handle, DWMWA_EXTENDED_FRAME_BOUNDS, @R2, SizeOf(TRect));
GetWindowRect(Handle, R1);
result := Abs(R2.Left - R1.Left);
end; except end; end;

procedure TForm.FormCreate(Sender: TObject);
begin
FSnapBuffer := 20; FScreenSnap := true; FFrameSize := GetWindowFrame(Handle);
end;

procedure TForm.WMWindowPosChanging(var Message: TWMWindowPosChanging);
procedure HandleEdge(var Edge: Integer; SnapToEdge: Integer; SnapDistance: Integer = 0);
begin if (Abs(Edge + SnapDistance - SnapToEdge) < FSnapBuffer) then Edge := SnapToEdge - SnapDistance; end;
var fx, fy, fwidth, fheight: integer;
begin
if FScreenSnap and ((Message.WindowPos^.X <> 0) or (Message.WindowPos^.Y <> 0)) then
with Message.WindowPos^, Monitor.WorkareaRect do begin
fx := x - FFrameSize; fy := y - FFrameSize; fwidth := Width + FFrameSize + FFrameSize; fheight := Height + FFrameSize + FFrameSize;
HandleEdge(fx, Left, Monitor.WorkareaRect.Left); HandleEdge(fy, Top, Monitor.WorkareaRect.Top);
HandleEdge(fx, Right, fWidth); HandleEdge(fy, Bottom, fHeight);
x := fx + FFrameSize; y := fy + FFrameSize;
end; inherited; end;

521:497
13/11/11 05:41:55.66 .net
>>497のを誰か添削してくれない?
Win7上でちょっと動きがぎこちないんだけど

522:デフォルトの名無しさん
13/11/12 06:24:41.56 .net
4月に画像ビュアーで質問したものです。
立て込んでいた仕事が一段落したので
作っていたソフトの改良をしたいと考えています。

DirectoryListBoxでダブルクリックしないと
FilelistBoxにファイルが表示されません。
シングルクリックにする方法はありますか?
イベントにOnClickがあるのでできそうな気がしますが、
何を書いたらいいのか分かりません。

コンパイラはDelphi XE4です。
よろしくお願いいたします。

523:デフォルトの名無しさん
13/11/12 14:11:19.69 .net
>>499
オブジェクトインスペクタで DirectoryListBox1.FileList:=FileListBox1 を設定してる
ということですか? 前提条件を書いてくださいね。
特にDirectoryListBoxやFileListBoxはWin3.1時代のコンポーネントみたいだから、
使ってる人がほとんどいないと思うので、なおさら。。。。

細かいこと言わないなら、OnClickに DirectoryListBox1.OpenCurrent(); でどうですか。

あと画像ファイルを開くなら、TOpenPictureDialogというのもありますよ。

524:デフォルトの名無しさん
13/11/12 19:50:15.30 .net
シングルクリック時にダブルクリックイベントを呼べばいいんでわ

525:デフォルトの名無しさん
13/11/13 18:41:24.62 .net
>>500-501
ありがとうございます。
DirectoryListBox1.FileList:=FileListBox1
は設定してあります。

インターフェースはListboxで十分で、
選択したjpg,pngファイルをImageに渡しているだけのソフトです。
wavとmp3のサポートしています。

元々はVecterにあるListというソフトを見本にして
勉強のためにDelphiで作っていました。
4月に発生していた原因不明のmp3が再�


526:カできないというエラーは 作り直していたら出なくなりました。 ロダにあげたので、もし良かったらアドバイスをいただけないでしょうか? http://www1.axfc.net/u/3087170.rar よろしくお願いいたします。



527:デフォルトの名無しさん
13/11/13 20:34:10.84 .net
以前もレスしたお人好しだが今回は時間がないので
ReadMeとUnit1_01.pasだけ目を通した

他の人も書かれたように「DirectryListBox」「FileListBox」は Windows3.1時代のもの
その当時はシングルクリックでフォルダ(ディレクトリ)を開くという考え自体がなかった
敢えてするなら
procedure TForm1.DirectoryListBox1Click(Sender: TObject);
begin
(Sender as TDirectoryListBox).OpenCurrent;
end;
もし他の人にも使ってもらうなら「シングルクリックで開く」と設定で選べるようにするべきだ

>mp3のタグ
「Delphi ID3Tag」でググれ
俺は自分用なので「AudioInfo」というコンポーネントを使ってる

「Delphi 関連づけ」でググれ

>次のファイルを自動で演奏
TMediaPlayer.OnNotify をヘルプで読むなりググるなり


以前も書いたけど人にソースを読んでもらうなら読みやすいように
filelistbox1.FileName→ FileListbox1.FileName;
コード補完機能を使ってちゃんと書いてくれ
TMediaPlayerだけMPlayに名前を変えてるけどw
TButton何個も載せるならわかりやすい名前を付けよう
ZoomButton とか UpdateButton とか
格段に読みやすくなる

528:デフォルトの名無しさん
13/11/13 21:15:19.15 .net
>>503
ありがとうございます。
以前お世話になりました。

大文字の問題は教えていただいた後に
拡張子のエラーなどの問題を解決するため
3~4回作り直しています。全部作り直ししました。

知人にインターフェースがわかりにくい
と指摘され作り直していたらコンパイルすらできなくなって
消しちゃったので教えていただいた頃のソースです。

ゴールについてですが、私がソフトに盛り込みたい内容で
私の宿題だったので、この点についても教えていただき
ありがとうございました。

タグについても、全部手打ちしなければならないと思っていたので
AudioInfoの情報ありがとうございます。早速調べてみます。

関連づけについては、コマンドラインオプションの実装と
フォルダー内のファイルを全て検出して読み出す必要があると考えています。

529:デフォルトの名無しさん
13/11/14 16:24:14.77 .net
>>503
ただいま確認できました。
onClickを選択してもonChangeになって
原因が分かるまで時間がかりました。

>TButton何個も載せるならわかりやすい名前を付けよう
コード補完と併せて勉強させていただきました。
ありがとうございました。

必要な機能を実装できるよう更に勉強いたします。

530:デフォルトの名無しさん
13/11/17 19:36:38.02 .net
十数年前までVB6で業務アプリを作っていました。
その頃delphiも少しやっていました。
最近になってまた業務アプリ(windows)を定期的に作ることになりました。
delphi、vb.net、python、java、c#、rubyなど、どれを使おうか悩んでいます。
皆さんのお考えをお聞かせください。
ちなみにvb6ではスパゲティープログラムを作ってしまう程度のスキルです


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch