くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net
: [] 2016/10/13(木) 13:21:54.84: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 ttp://echo.2ch.net/test/read.cgi/tech/1405783063/ <過去スレ> DelWiki (Delphi 関連の過去スレッド)※行方不明 ttp://delwiki.info/? : [sage] 2016/10/13(木) 13:27:38.39:rxboVzG1 クソスレ乙 : [sage] 2016/10/13(木) 13:43:32.62:7i5E+q2+ 無料版の名称は Delphi 10 Starter Edition に変わっていたわ。 : [sage] 2016/10/15(土) 06:07:00.29:b/Ix7y8Q stringのポインタを引数で使う時って何で@straaa[1]みたいに[1]をつけるの? : [sage] 2016/10/15(土) 06:41:31.92:sr5ZMjEJ PChar(straaa) じゃだめなん? Hint: 空文字列の扱い : [sage] 2016/10/15(土) 08:01:16.21:Wck8f7HF 今はAnsiStringなら>5でOK。 ShortStringだとstraaaa[0]に長さが入ってるので @straaa だけだと PChar と互換性ないから : [sage] 2016/10/17(月) 13:18:21.20:WrWXzKVd ,6 ありがとう。 調べるワードありがとう : [sage] 2016/10/17(月) 22:03:38.40:u9f1SlFV 有料版買えばandroidで動くプログラムをDelphiで作れるの? Indyみたいなhttpコンポーネントって使えるのだろうか? : [sage] 2016/10/17(月) 22:24:59.98:DkHWfezI >有料版買えばandroidで動くプログラムをDelphiで作れるの? モバイルパック?だかなんだかを買わないといけないんじゃねぇか? Starterでモバイルパックつかえなきゃ、Pro版も買わないといけんと。 >Indyみたいなhttpコンポーネントって使えるのだろうか? Indy使わなくても最新のにはhttpのクライアントライブラリ含まれてるからそれ使えば? : [sage] 2016/10/17(月) 22:41:43.85:PmRH05Ee cとかc++のenumって、Delphiの列挙型ということでいい? 集合とは違うんだよね? : [sage] 2016/10/17(月) 22:42:37.41:DkHWfezI そりゃ、Delphiの列挙の方でしょ : [sage] 2016/10/17(月) 23:10:18.46:6Picysvx ありがとう : [sage] 2016/10/19(水) 10:47:08.64:4tgALgAo ライトみたいに光る質感のコンポってありますか? : [sage] 2016/10/22(土) 10:30:31.92:VBuj+teK tabsheetの色を変えられるようにしたんだけど、clBtnFaceを指定しても白くなるんですけど何故でしょうか? 他の色は反映されます。 Delphi10.1Berlinを使っています。 : [sage] 2016/10/22(土) 10:35:27.82:VBuj+teK バカみたいな質問をしてしまいました。 clBtnFace以外は反映されるのでプログラム的には間違いはないと思います。 clBtnFaceだけ弾かれる理由ってあるんでしょうか? : [sage] 2016/10/22(土) 10:58:32.88:OrToTiIL テーマが関係してるんじゃなかったっけ : [sage] 2016/10/22(土) 11:01:18.05:AS0AO2zF 勘だけと、システムカラーだからOSのテーマカラーが優先されて使われてるんじゃないのかな? : [sage] 2016/10/22(土) 11:34:02.15:VBuj+teK ありがとうございます。 と言ってもどうしていいか分からないのでパネル貼ります。w : [sage] 2016/10/23(日) 10:04:04.33:FT6Wwhog 昔Del7で作ったExcelを操作するプログラムを、Berlinで作り直したいんだけど今だとFirerDacを使うんですか? 取り敢えずやりたいことは、xlsxをcsvに変換したいだけなので簡単な方法があったら教えて下さい。 : [sage] 2016/10/23(日) 10:46:21.34:CGzeXgZh ole : [sage] 2016/10/23(日) 13:40:03.44:MP5NXD0l 今まで Delphi 7 で作っていましたが、Delphi 10.1 に移行することにしました。 そこで、10.1のListViewの挙動について質問です。 D7では、以下のコードで ListItem の一行の背景全てが綺麗に塗りつぶされていましたが、 10.1では Caption と SubItems[0]、そして SubItems間で 2pixel の白い区切り線のようなものが出来てしまいます。 回避方法をご存知の人は教えて下さい。 procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if Not Odd(Item.Index) then begin with ListView1.Canvas do begin Brush.Style := bsSolid; Brush.Color := clLime; end; end; end; : [sage] 2016/10/23(日) 14:13:58.96:gusT9oXO propertyのGridLinesじゃないのか? Delphi 10.1動かしてないから適当やけどw : [sage] 2016/10/23(日) 15:14:16.61:MP5NXD0l GridLines は False です。 試しに True にしても同じように 2pixel の区切り線が出ます。 他の人の環境では出ないのでしょうか? : [sage] 2016/10/23(日) 15:28:26.85:MP5NXD0l 参考画像です。 ttp://jump.5ch.net/?http://fast-uploader.com/file/7032759494826/ : [sage] 2016/10/23(日) 16:44:38.74:kZkGsd/R ちょっと教えてください CD-ROMドライブのデバイス名(「EX-DVD04K」とか)と ドライブ名(「D」とか)の一覧を得たいんですが それぞれ別の方法で取得できるんですが、 複数のCDドライブがあると、対応が分かりません(EX-DVD04K = D)。 たぶんAPIを使うことにあると思います。 似た質問はあったんですが、回答がない... ttp://okwave.jp/qa/q1942763.html : [sage] 2016/10/23(日) 16:54:42.26:CGzeXgZh ttp://jump.5ch.net/?http://www.chrysocome.net/download dd のソース見れ : [sage] 2016/10/23(日) 18:18:46.84:j9LNItD5 cd-romだとWin32_CDROMDriveが使える : [sage] 2016/10/23(日) 20:00:40.26:kZkGsd/R ありがとうございました。 DelphiでWin32_CDROMDriveの使用例がありました。 : [sage] 2016/10/24(月) 02:18:05.54:Pol9g+IM 10.1 Starter で再現したことだけ報告しておきます。 : [sage] 2016/10/24(月) 11:23:45.88:V1HEhUaE ありがとうございます。 delphiは久々なのでググりまくってる最中なんですが Excelのコンポーネントとか有ったと思うんだけど今は無くなった? 悩んでてもしょうがないのでXRAYさんのサイト見ながらやってみます。 : [sage] 2016/10/24(月) 11:46:44.14:/o9Bzib3 Excelのタイプライブラリ取り込めばおk もしくはFlexcel買うか : [sage] 2016/10/24(月) 12:20:49.82:V1HEhUaE >Excelのタイプライブラリ取り込めばおk おぉ、そんなのありましたね。 一気に進めそうです。 ありがとうございます。 : [sage] 2016/10/25(火) 23:13:37.93:PC8b9+iO oleコンテナだけでExcelのブックを表示できました。 昔とは違うんですね。 ただ、Excel本体も立ち上がってくるのですが、Excelは立ち上げずにブックを弄るにはどうしたらいいでしょうか? : [sage] 2016/10/25(火) 23:23:00.70:9oSj5Tvc Visisbleプロパティみたいのなかったっけ? : [sage] 2016/10/25(火) 23:25:41.18:9oSj5Tvc s多すぎた : [sage] 2016/10/26(水) 00:18:32.99:5VsTRTiY ありがとうございます。 試してみます。 : [sage] 2016/10/26(水) 01:12:16.61:DnQDMwJL 当然だけどExcel入ってない環境では動かないからね : [sage] 2016/10/26(水) 12:57:47.98:6SHMskVi >Excelは立ち上げずに って書いてあるのにVisible薦める香具師ってなんなの : [sage] 2016/10/26(水) 12:59:55.89:yTRH6Fig 立ち上げずにコンテナになれるわけないことを暗に示しただけやない? : [sage] 2016/10/28(金) 04:03:53.32:Jy3/QgVN 新しいDelpiのフォームの位置をドラッグで移動できないな??? どうして? : [sage] 2016/10/30(日) 03:41:18.12:5WyC57Kn 「デフォルトレイアウト」から「クラシック(ドッキングなし)」に変えたら Delphi7のような画面レイアウトになるけど、お望みの回答かどうかはわからない。 : [sage] 2016/10/30(日) 08:46:34.99:GMyWViLu 丸が幾つか描かれているbitmapがあるとして特定の丸の色を変えたいと思い、 丸の上にshapeの丸を置いて対応しました。 このbitmap上の丸とshapeをきっちり対応させる方法ってないですか? bitmapの大きさ変えたりスクロールさせた時にshapeも追従させたいのですが。 : [sage] 2016/10/30(日) 12:44:13.74:+fHRwEF9 丸を違う色でを塗りつぶすか 違う色で丸を再描画するとかダメ? : [sage] 2016/10/30(日) 13:14:20.67:VzVr3D3G 説明不足ですみません。 ビットマップの画像ファイルを貼り付けた状態と言うことでした。 : [sage] 2016/10/30(日) 15:20:00.36:+fHRwEF9 じゃ、ビットマップ内の円を直接塗りつぶすのがいいよ? モグラ叩き(?)みたいに動的に表示するんだったら 1) Bitmap0にオリジナルをロードしておいて 2) Bitmap1に都度コピーして任意の円を塗りつぶす 3) そんで最終的にPaintBoxのCanvasにコピーする 4) これを繰り返す Shapeを使う必然性があるんだったら別だけどね : [sage] 2016/10/31(月) 20:22:37.53:I4hSi9OL ありがとう!! 出来ました、 : [sage] 2016/11/01(火) 14:44:48.26:aPCKG/Vh Delphi10のインストーラーが一瞬立ち上がってすぐ終了してしまうのですが原因がわかる方いませんか? サポートサイトを見てもレジストリを触る事しか見当たりません。 どなたかよろしくお願いします。 : [sage] 2016/11/01(火) 15:13:15.36:p35VuLBk パソコンが壊れとる : [sage] 2016/11/01(火) 17:44:57.98:wawt2m9n まずはdependencywalkerとか あとウィルスチェックソフト止めるとか ファイアウォール開いてみるとか : [sage] 2016/11/01(火) 18:11:10.46:MBBNR+y9 お客様にエスパーの方はいらっしゃりませんかー(棒 : [sage] 2016/11/01(火) 18:13:18.08:by7jiIas 馬鹿には無理 : [sage] 2016/11/03(木) 13:26:56.03:2mKhPyDG 符号付きのダブルワードとか言うデータを扱う事になったんだけど、普通に数値が相手から送られて来ると思ったら 16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけどプロの人はどうやってるの? ググったら変換の考え方は分かったんだけど、プログラムをどう書けば良いかわからん。 Delphiって16進数とかに変換すると文字列になるでしょ? 文字列をどうやれば計算に使えるの? : [sage] 2016/11/03(木) 13:32:53.30:6FeMk1RE 16bitでわかれるって 65535,65535 っていう意味? だったら 0xffff,0xffff で1dwordだから リトルエンディアンなら (dword)((a[0]<<16) | a[1]) で済むはず : [sage] 2016/11/03(木) 13:33:58.48:6FeMk1RE ああ逆ω (dword)((a[1]<<16) | a[0]) : [sage] 2016/11/03(木) 13:41:15.66:2mKhPyDG 早速、ありがとうございます!! 式の意味がわからないw 調べ倒します。 65535,65535に分かれるんですが、-の時には両方2の補数がナンタラカンタラ変換された10進数が送られてきます。 また、分からないことがあったら宜しくお願いします。 : [sage] 2016/11/03(木) 16:09:43.66:nO9s2Og+ SmallInt変数に代入すればいいんじゃない? var si: SmallInt; si := StrToInt('$' + Edit1.Text); // 16進数の文字列 si := StrToInt(Edit1.Text); // 10進数の文字列 Edit2.Text := IntToStr(si); ...こう云うことじゃないの? : [] 2016/11/03(木) 16:20:54.86:KRq5Cur1 こういうあほと仕事したくないな : [sage] 2016/11/03(木) 18:24:42.65:2mKhPyDG やってみたらあっさりできました。 右や左にシフトさせるだけで、マイナスも簡単に処理できました。 2の補数とかそういうことはDelphiが内部で勝手にやってくれるという認識でOK? 10進数のまま処理ができるのは他の言語でも一緒? : [sage] 2016/11/03(木) 18:32:31.39:Vzj8eJlj >Delphiが内部で勝手にやってくれる その認識はおかしい 「Delphiは何もしない」が正しい : [sage] 2016/11/03(木) 19:10:20.41:2mKhPyDG そうなんですか? プログラムとして読み取る時は上位の16bitを a:=a shl 16; で左にシフトさせて c:=a + b; で、cにダブルワードの数値がマイナス値も含めて正しく入ったのでdelphiが勝手に処理してるのかなと思いました。 プログラムとしてはこれでOKですか? : [sage] 2016/11/03(木) 19:18:10.90:KRq5Cur1 + b でも良いかも知れないが or b の方が良くね : [sage] 2016/11/03(木) 19:21:51.74:cIZsGa0I 符号付きのDWORDって4バイトの整数とは違うの? : [sage] 2016/11/03(木) 19:44:23.50:ieIIzjtH DWORDというかWORDが符号なし整数値やろ BYTEはunsigned char WORDはunsigned short DWORDはunsigned long UINTはunsigned int いずれも符号なし整数 : [sage] 2016/11/03(木) 20:02:43.66:URbOgVYK DWORDは符号なしだけど 送られてくるデータはDWORDだけど符号を扱うっつってんだから 普通に中身はintだろ intにキャストすれば万事OK : [sage] 2016/11/03(木) 21:13:18.27:iYejUQc8 曖昧すぎるんだ >普通に数値が相手から送られて来ると思ったら >16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけど : [] 2016/11/05(土) 12:52:45.83:edcXpxnV 同じ数値型変数でも a の型を変えてビット数や符号付きかどうかが変わると結果も変わる。 : [sage] 2016/11/06(日) 00:10:46.65:EC/gao/y 仰る意味が分かりました。 符号付き16BitのデータをLongに入れるとマイナスが判断されず16Bitのプラス値が入る。 Smallintに入れるとマイナスを認識する。 と言う事で、扱うデータにあった型の変数に代入する、 もしくはデータの符号の位置が変数の左端に入るように シフトさせるとプラマイを勝手に判断してくれると言う事で良いでしょか? : [] 2016/11/06(日) 04:28:48.06:nNdE2u+1 勝手に、というか、歴史的なものでもあるんだが、そもそもコンピュータは符号について考慮できない。 というのはビットのON/OFFしかないからだ。かといって計算ではマイナスの値も考慮する必要がある。 ということで色々あって、結局今のコンピュータでは高速に計算する場合はこういう手法を使うことになった。 (低速になってもいいが精度が必要な場合にBCDにするとか、他の方法もあるがちょっとそれは置いておく)。 1. 0/1が表せるビットを束ねてまとめて2進数として大きな数値も表せるようにする。 2. 0の時は全てのビットが0になる。 3. 0の状態で1を引いた時、つまり-1は全ビットが1になる。 4. 更に1引いた場合は符号なし整数の時と同じ計算で1を引く。 5. 1番上のビットが1の場合はその値はマイナス、0の場合はプラス。 なので例えば8bit符号付整数は -128 ~ 127 までが表せるが、-128の時は2進だと 10000000 になっている。 127 は 01111111 になっている。 画面に10進数に変換して出す場合はまず最上位ビットを見て1ならばマイナス記号を出しプラスならば何も出さない。 次に最上位ビットが1ならば全ビットを反転させた後に1を足す(符号をマイナスからプラスに変換する)。 その後10で割った余りを数字の文字に変換して出し10で割るというのを0になるまで繰り返すが、これだと 逆順になるので再帰処理にするかバッファに入れておいて逆順に出すか少しテクニックが必要。 : [sage] 2016/11/06(日) 09:03:20.09:j4rRKkND コンピューター工学 ASM 2の補数 ・・・・いろいろ学ばないと分からないかも 一番いいのは痛い目食わないと覚えられないかも 趣味なら? : [sage] 2016/11/06(日) 09:31:18.68:rGVVvSQ9 結果がたまたま合ってるが過程がめちゃくちゃの典型的な悪文 : [] 2016/11/07(月) 02:58:59.60:k8MgRjfU じゃあおまえが書けよ : [sage] 2016/11/07(月) 07:51:58.89:MiZ0k8Uw わしもそう思う しかし、理解すべきは、型の互換性や代入の互換性についての処理系の決め事であって、 動作原理やらは趣味の領域。 : [sage] 2016/11/07(月) 11:31:55.07:VvMqHJ76 変数の宣言で符号有り、無しのどちらの宣言しても キャストでどうとでもなるから、くよくよするな var i : LongInt; キャストで LongWord(i) 出来るから : [sage] 2016/11/07(月) 16:11:14.00:iTWgrf69 スレチ : [sage] 2016/11/09(水) 15:53:32.11:i2gLSeC7 D7のクイックレポートで質問です 現在単純な一覧を作っているのですが、罫線で全体の外枠を太く、明細行の仕切りを細く描きたいと思っています Bandのフレームを外枠にして明細行は左右だけフレームで描き、下部にQrshapeを置いてやってみたのですが その明細行がページの最終行かどうか判断する方法がわからず 外枠の下を印刷できません 各ページの行数は不定です 何かいい方法は無いでしょうか もう一つ、グループで小計を印刷したいのですが、その際小計行は太線で囲みたいと思います 小計行はグループフッターで印刷し四方をフレームで囲ってみたところ明細行のShapeとフレームが重なって 小計行の上の線だけ少し太く印刷されてしまいました うまいやり方は無いでしょうか よろしくお願いします : [sage] 2016/11/09(水) 16:14:12.62:i2gLSeC7 済みませんもう一点ありました グループではなくページの小計を印刷したいのですが、ページフッターだと明細行と離れて印刷されてしまいます 何かいい方法は無いでしょうか : [sage] 2016/11/18(金) 05:32:26.95:mITFokzs 仮想のイーサネットインターフェース(NIC)の作り方って知りませんか? linuxだと簡単にできるらしいけど、windowsでできるコンポとかコマンドとかないのかな? : [] 2016/11/18(金) 16:27:06.42:vbdBJsNN softetherみたいなの? : [sage] 2016/11/18(金) 17:38:12.72:mITFokzs そういうのいじってみたい 仮想NICというかループバックていうのはMS純正でできるのが分かった : [sage] 2016/11/18(金) 19:29:30.81:e+81aozX ソース公開されてるだろ : [sage] 2016/11/20(日) 12:26:46.05:n8KZIrdr ttp://jump.5ch.net/?https://www.embarcadero.com/products/rad-studio/features RAD Studioの体験版ってDelphi XE2と共存できる? 体験版試して環境壊したら面倒だから躊躇してる 買うなら完全上書きで移行でも良いんだけど xamarinみたいにハマるならやめたい : [sage] 2016/11/20(日) 12:33:25.79:omU4WGo2 canvasやcaptionを持ってないコントロール上に文字描こうと思ったら、LABELを被せるのが一番簡単? : [sage] 2016/11/20(日) 12:37:35.32:sLB4mNYr そりゃ、ポトペタしてプロパティ変更するだけだから、10秒で終わるし。 : [sage] 2016/11/21(月) 02:06:39.96:9bjfwpvu 動的に沢山作ったコントロールの破棄方法を教えて下さい。 作っ時にTLISTに入れておいて、破棄する時にリストから引っ張り出してfreeでいいですか? : [sage] 2016/11/21(月) 06:45:32.74:6Naumri0 TObjectListに入れておけば、リストをクリアするだけでOK : [sage] 2016/11/21(月) 08:34:01.10:3YAs2dXK XE2とは共存できる。 10.1Berlinの他のグレードとは共存できない。 : [sage] 2016/11/21(月) 08:43:29.76:sE1stBxO ありがとうございます! : [sage] 2016/11/21(月) 23:48:31.13:eSdu1Qd7 ありがとう!入れてみてすんなりスマホアプリ作れたら買おうっと : [sage] 2016/11/22(火) 11:23:52.32:J8mgYJIF 16万かー 高すぎる 昔の4万位ならまた買いたいと思っていたのに、これじゃ無理だわ C#ならタダだから、こっちで我慢する : [sage] 2016/11/22(火) 13:02:30.45:d73nUv9a すごく初歩な事だと思うんだけど、フォームを最大にした状態でコントロールを配置するにはどうしたら良いですか? : [sage] 2016/11/22(火) 13:11:22.55:qW+6ZAFd えっ? : [sage] 2016/11/22(火) 16:00:58.51:d73nUv9a フォームデザイナは消せない? フォームデザイナの中で少なからずスクロールさせるのがうざくて。 : [sage] 2016/11/22(火) 16:20:11.79:Pvp5yOqg もっと大きいディスプレイを使う : [sage] 2016/11/22(火) 17:14:24.12:d73nUv9a えっ?そう言う事じゃないw : [sage] 2016/11/22(火) 18:10:29.79:kKFxgFqP コンポーネントパレットのコンポーネントをダブルクリックすればいいんじゃね。 : [sage] 2016/11/22(火) 18:15:01.08:jjDYJ6Bv 最大化した状態を想定してコントロールを配置したい? ...ということでもなよね : [sage] 2016/11/22(火) 20:43:49.84:d73nUv9a そう言う事です。 俺、相当変なこと聞いてる? : [sage] 2016/11/22(火) 20:54:34.84:1EZz+VvR フォームのサイズに追随するように作るから わざわざ最大化で考えたりしない : [sage] 2016/11/22(火) 21:23:29.12:jjDYJ6Bv 自分だけが使うんだったら、最大化を想定して コントロールの絶対位置を決めることもありだけどね でも、どのような環境で使われるか分からない場合 フォームの最大化への対応は結構難しいと思う まあコントロールのAlignでフォームサイズに 追随するだけでいいなら簡単だけど... : [sage] 2016/11/22(火) 22:15:22.90:d73nUv9a ,99 ありがとうございます。 大きなディスプレイ使います。w : [sage] 2016/11/22(火) 23:16:57.50:qW+6ZAFd ふーん : [sage] 2016/11/23(水) 13:06:18.51:tPiPFLaf 4Kディスプレイを買うのかな? : [sage] 2016/11/23(水) 13:16:56.95:wddBimUU 4Kディスプレイはプログラミングする上で非常に作業性が高まって 生産能力が跳ね上がるからアリだな たくさんの資料と開くのはマルチディスプレイでも出来なくないけど 4Kディスプレイは縦が長いのが素晴らしい 一つ問題があるとしたら 自分のソフトを4Kディスプレイで最大化したら 描画が追い付かなくなってカクカクになるという事実に気づいてしまうこと ただし、MS謹製のエクスプローラでもカクカクになるぐらいなので 本当の意味で4K対応のソフトはそんなに多くないし 気にしなくてもよいのかもしれんが、どーなんだろ アンチエイリアスのかかった文字の描画がとにかく遅い 1FPSぐらいになって操作困難だ : [sage] 2016/11/23(水) 14:35:16.76:XEgR0M7V k-ブルが糞なんじゃね : [sage] 2016/11/24(木) 21:31:04.24:EbGC2MML サブスクリプションって、アップデート2をインスコすれば 勝手にライセンス適用してくれるの? : [sage] 2016/11/26(土) 08:53:16.82:SyGP2pYs フォームに入力した数値を保存する方法を教えてください。 : [] 2016/11/26(土) 10:20:52.50:RLaeAJYk フォーム(上のエディットコンポ)に入力した数値を(ファイルに)保存する方法ということかしら? 簡単な一例。 フォームにエディットコンポEdit1とボタンButton1があるとしてボタンを押したらエディットコンポに入力されたテキスト(数値でなくても同じ)をファイルに保存する。 procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; begin sl := TStringList.Create; try // 入力された文字列を取り出し(数値だろうと扱いは文字列)、文字列リストに追加 sl.add(Edit1.Text); // 文字列リストの内容をファイルに保存(ここでは実行ファイルと同じフォルダーにした) sl.SaveToFile(ChangeFileExt(Application.ExeName, '.txt')); finally sl.Free; end; end; : [sage] 2016/11/26(土) 10:35:43.40:SyGP2pYs ありがとうございます。 ちょっとやってみます。 : [sage] 2016/11/26(土) 23:59:22.61:+C/v9Yiv TFile使ったら1行で書けるかも : [sage] 2016/11/27(日) 21:47:18.22:G948Ts5Y TEdit.Lines自体がTStringsだからSaveToFile持ってるんじゃなかったかな : [sage] 2016/11/27(日) 22:12:21.76:Vd8hDN3e 昔のDelphiしかないので最近のはわかりません、あしからず。 昔のでもメモコンポならLines.SaveToFile(ファイル名)できますね。 : [sage] 2016/11/28(月) 01:18:24.55:uacaeDTN TEditにLinesプロパティってなくね? : [sage] 2016/11/28(月) 13:10:31.06:/4N3P5Kl TEditにはLinesはないね もともと1行編集ボックスだからね TEditの内容を保存するんだったら TStringList.に読み込んでSaveToFile()を使うか TFile.WriteAllText()を使うかだね まあ後者のほうが簡単だけど : [sage] 2016/11/28(月) 22:30:06.28:4Blidc3O TFileってのは最近できたのか TFileStreamとは別物なんだな? : [sage] 2016/11/29(火) 05:29:51.70:W5POPsuB TFile はDelphi2010からだって TFileStreamとは別物 ttp://jump.5ch.net/?http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TFile System.IOUtils自体が2010からの追加らしい : [sage] 2016/11/29(火) 11:14:31.26:Ln/aQe4r パスワードがかかっているExcelファイルを開ける時にパスワードを入れる方法を教えて下さい。 delphi からパスワード無しファイルを操作する事は出来ています。 : [sage] 2016/11/30(水) 09:51:10.70:YyN+WuPe どういうやりかたで 「delphi からパスワード無しファイルを操作する事は出来ています。」 ができているのかしらんけど OLEオートメーションを使っているなら、 xlApp.Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU) excelを持ってないなら ?FlexCel for VCL / FireMonkey を使うとか : [sage] 2016/12/01(木) 19:46:00.26:D32vS8+n D6の使用許諾コードって今でも都連だね 知らなかったわ : [sage] 2016/12/02(金) 19:55:58.69:DITubkqg なぜに今さらD6? 新しいの無料になってなかったっけ : [sage] 2016/12/02(金) 23:02:38.10:p/xrLFXH RXバグだらけで使いづらいよ : [sage] 2016/12/02(金) 23:39:57.49:LMsZph5A 具体的にどんなバグ? : [sage] 2016/12/03(土) 09:26:01.40:lQCz0lUj ボタンの色の変更ってTButtonから派生させて改造しないとダメ? : [sage] 2016/12/04(日) 00:23:15.66:VbxK6ZGr 結局どんなバグがあったんだろう : [sage] 2016/12/04(日) 00:50:42.52:Zv4y5DXv こんなバグ ttp://jump.5ch.net/?http://gigazine.net/news/20161201-windows-10-upgrade-bitlocker-bypass/ : [sage] 2016/12/04(日) 01:14:11.69:VbxK6ZGr WindowsのバグとRadStudioになんの関係が? : [sage] 2016/12/04(日) 20:23:52.39:DHDwgClI 7以降アップデートしてないんだけど すると良いことある? : [sage] 2016/12/05(月) 16:25:17.26:dF177W8B 人に依る : [sage] 2016/12/05(月) 20:51:09.49:u75Tu5Z4 ユニコード対応がなんたらうんたら : [sage] 2016/12/05(月) 22:36:44.05:Yjl942ym Delphi2.0 の高速コンパイルは素晴らしかった : [sage] 2016/12/05(月) 22:44:55.05:FaC7RcWw Unicode対応なんだ・・・TNTいらなくなるのか これだけでも少し便利そうだな・・ありがと考えてみる : [sage] 2016/12/05(月) 23:11:20.14:3xjBziHl 新機能使わなきゃそりゃあってもしょうがないけど、 さすがに7からならアップグレードすりゃ色んな新機能がわんさかだと思うよ。 古い新機能ではUnicodeから始まってWin64bit対応やOSX対応、ジェネリックやら Vistaとかの新コントール。 ttp://jump.5ch.net/?http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 から新機能のページだけを過去のバージョンにさかのぼってみていけばいい。 : [sage] 2016/12/06(火) 00:07:34.75:cx3pcX82 コードエディタの進化は効率アップにもなるしやっぱ良いよ : [sage] 2016/12/06(火) 18:04:09.67:GBHXmuqR Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。 今、バーコード入力するソフトを書いているのですが、担当者をComboboxで選択していないと EditをクリアしてShowMessageを表示するつもりです。 EditをクリアしてMessageを出す事自体は出来ているのですが、バーコードから送られるデータの 最後にCRがついてきて(バーコードリーダーが付けてきます。)、多分このCRがShowMessageに 送られてShowMessageが勝手に消えてしまうようなのです。 イベントはKeyPressを使っています。 Windows7 Delphi10.1の環境です。 よろしくお願いします : [sage] 2016/12/06(火) 18:16:56.25:B1jaM3TV 何がききたいのかようわからん。 : [sage] 2016/12/06(火) 18:24:00.95:B1jaM3TV 「Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。」 後ろにごちゃごちゃよくわからん説明が書いてあるけどこれが聞きたいの? 単に入力された文字をキャンセルならKeyPressのイベントでKeyパラメータに Key := #00とか代入すればいいんじゃなかったっけ? if Key = 'A' then Key := #00; すりゃ、Aの文字が入力できなくる このことじゃなかったらもっと適格に書いてくれんとわからん。 : [sage] 2016/12/06(火) 19:02:50.65:GBHXmuqR ありがとうございます。 バーコードから送られてくる文字を全てキャンセルしたいのです。 一文字ずつチェックするのではなく、一気に送られて来た文字を消す方法はありませんか? 宜しくお願いします。 : [sage] 2016/12/06(火) 19:18:11.18:BLWAVjyu CRって復帰コードのことだろ? 最後にCRがついてくるなら、それが送られてくる最後の文字 なら、それが送られてきたら Key には0入れて Edit.Text := ""; でよかんべ : [sage] 2016/12/06(火) 20:03:14.51:4bwuxuwQ こんなんじゃだめなの? procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then begin ShowMessage('Enter!'); Edit1.Clear; end; end; : [sage] 2016/12/06(火) 20:26:28.30:GBHXmuqR ありがとうございます。 出来ました。 条件に合わなかったら入力したらいけないと変な思い込みをしてました。 助かりました。 : [sage] 2016/12/07(水) 09:03:33.62:gTqL7Hsg キーバッファw : [sage] 2016/12/07(水) 09:09:12.00:fnsUACzH えっ? : [sage] 2016/12/07(水) 09:47:59.67:7C3MKHBs ラジオボタンって大きくならない? : [sage] 2016/12/07(水) 16:09:50.00:1k8Mb6um できません。 大きなラジオボタンの絵を描くならできます(ちょっと気持ち悪いので注意)。 procedure TForm1.FormPaint(Sender: TObject); begin DrawFrameControl(Canvas.Handle, ClientRect, DFC_BUTTON, DFCS_BUTTONRADIO or DFCS_CHECKED); end; procedure TForm1.FormResize(Sender: TObject); begin Invalidate; // フォームの再描画をWindowsに促す。 end; : [sage] 2016/12/08(木) 15:42:09.36:G/Oz9Gxc Berlin update2 のFireMonkeyで Listbox.Items.Exchangeメソッドが動作しないXE2では動くのに : [sage] 2016/12/09(金) 16:34:59.90:G3AX0Oay お前が悪い : [sage] 2016/12/10(土) 23:22:51.23:KMGjeMy/ 質問です : [sage] 2016/12/10(土) 23:33:56.35:KMGjeMy/ 関連付けされてるファイルを起動するのは ShellExecute でできますが 例えば abc.csv ファイルを .txt で関連付けされてるアプリケーションで 開く簡単な方法はあるでしょうか : [sage] 2016/12/11(日) 06:10:35.77:RsXQTiEs ” Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは 質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphiの布教と初心者の救済をお願いします。 ” : [sage] 2016/12/11(日) 12:45:00.53:DKctrae4 簡単には無いと思う。 レジストリ開いて関連付け調べてabc.csvを引数にそのプロセスを起動させる。 : [sage] 2016/12/11(日) 16:52:57.05:uXWnPaTO 拡張子に関連付けされた実行ファイル名の取得 ttp://jump.5ch.net/?http://mrxray.on.coocan.jp/Delphi/plSamples/480_GetFullExePath.htm : [sage] 2016/12/11(日) 18:44:37.29:IZotsPxu サンキュー参考になりそう ちなみに xray さん元気そうでなにより : [sage] 2016/12/12(月) 14:28:19.03:JuHHFpqe 私はFindExecutable APIで拡張子".txt"のダミーのファイル名を渡して…というところまで考えていたのですが、そのものずばりなAPIがあるのですね。 : [sage] 2016/12/15(木) 11:41:17.48:KMS/yunp Cのライブラリで const char *ss[] = {"abc", "def", "xyz", NULL}; を引数として要求するAPIがあるのですがDelphiからは どうやって定義すればよいでしょう? : [] 2016/12/15(木) 12:42:40.01:jYtTego3 ポインタのポインタ : [sage] 2016/12/15(木) 21:30:43.84:esnvxFap array of PChar : [sage] 2016/12/16(金) 08:13:11.02:khJxMTBU ありがとう。 array of は内部的にはポインタなんですね。上手く動作しました。 : [sage] 2016/12/16(金) 13:53:20.44:bP8vH7ub IntArray: array[0..99, 0..99] of Integer; AI :IntArray; P :Pointer; Fs :TFileStream; i,j :Integer; for i := 0 to 99 do for j := 0 to 99-1 do AI[i,j] := Random(1000)+50; Fs.Write(AI[0,0], SizeOf(Integer)*L ); Fs.Write(AI, SizeOf(Integer)*L ); ………(#) のどちらでも OK ですが、これは AI[0,0] と AI のアドレスが同じというだけで AI[0,0] = AI ではないのですから、(#)の記述は AI という '配列名' はポインタのように感じられます。しかし、 P := AI; とするとコンパイラに怒られます。Delphi の '静的配列名' はポインタではないのしょうか。 : [sage] 2016/12/16(金) 13:58:41.71:n8JQ6xp/ Fs.Writeの引数の型宣言みろ : [sage] 2016/12/16(金) 14:20:04.02:bP8vH7ub 引数は型なしパラメータだから、実際にはパラメータのアドレスが Fs.Write に渡され、 そのアドレスが処理対象になる。つまりそこに必要なサイズのメモリ領域が正しく確保さ れていれば、その領域がどのような型なのかは関係ないということか。 結局 Delphi の '静的配列名' はポインタではないんだね。 : [sage] 2016/12/16(金) 14:32:37.28:HmHblg1G P := Pointer(AI); : [sage] 2016/12/16(金) 16:08:44.84:khJxMTBU 後に誰かの参考になるかもしれないので少し詳しく書いておきます。 Cで作成されたDLL内の関数の.hファイルの定義が void hoge(const char **hage); となっていて、 const char *ss[] = {"abc", "def", "xyz", NULL}; hoge(ss); という使用例が書かれてたところ、 procedure hoge(hage: array of PAnsiChar); cdecl; external 'kage.dll'; hoge(['abc', 'def', 'xyz', nil]); で上手く動作しました。ペコリ。 : [sage] 2016/12/16(金) 16:14:50.71:n8JQ6xp/ さんざん概出 : [sage] 2016/12/17(土) 10:45:35.06:1MhgkvS0 そうですか。スレ汚し失礼しました。ペコリ : [sage] 2016/12/18(日) 18:39:46.50:SM4ZDbUW TreeView をデザイン時にフォームに貼り付けてできたアプリを終了するとき TreeView の各ノードが保持するデータ(TreeView1.Items[n].data が保持しているデータ) も自動的に廃棄されるのですか? : [sage] 2016/12/18(日) 18:51:06.13:U6l2OwGO TTreeNode::Data が保持するデータはプログラマが明示的に破棄しないとダメ。 : [sage] 2016/12/18(日) 20:05:19.93:SM4ZDbUW ありがとう。 以下のような感じでいいのですかな? //TNodeData は TreeNode.Data が保持するデータのクラス //+----------- FormDestroy ------------+ procedure TForm1.FormDestroy(Sender: TObject); i: Integer; begin with TreeView1 do for i = 0 to Items.Count - 1 do TNodeData(Items[i].Data).Free; //TreeView1.Items.Clear; 不要 end; あるいは TreeView のOnDeletion を使って //+-------------- TreeViewDeletion --------------+ procedure Form1.TreeView1Deletion(Sender: TObject; Node: TTreeNode); begin if Assigned(Node.Data) then TNodeData(Node.Data).Free; end; : [sage] 2016/12/18(日) 20:17:52.63:U6l2OwGO そんな感じ。 : [sage] 2016/12/20(火) 23:16:00.88:ifPrFvUo スレッドを使ったプログラムで、スレッド内にある未使用の変数をコメントアウトしたら、 終了する時にアクセスバイオレーションが出るんだけど、こんな事ってあるの? プライベートに宣言してあるからメインとかが絡んでる事は無いのだけど。 : [sage] 2016/12/20(火) 23:35:38.32:qjg7YQIs コメントアウトされた変数が確保していたメモリ域のおかげで 偶然アクセス違反が発生しない状態になってるとかじゃね? 要はコメントアウトしていなくてもコーディングミスで不正なメモリアクセスしている状態なのかも : [sage] 2016/12/20(火) 23:43:04.81:ifPrFvUo こんな時間にありがとう! そんな事があり得るんですか。 難しいなぁ。 : [sage] 2016/12/21(水) 12:39:12.66:kCrlwcjM あり得るというより一番多いパターンだったり : [sage] 2016/12/21(水) 14:28:11.26:yxrWTbmA 「参照」とポインタの話か? 慣れるまで結構厄介だからな。 : [sage] 2016/12/21(水) 17:50:14.49:69vl5rId ちょっと教えてください 自分自身(実行ファイル)を再起動する方法を教えてください ちなみに二重起動を禁止したアプリでです できれば再起動用の別アプリを使用しないのが理想的です... : [sage] 2016/12/21(水) 18:38:54.87:3rWlzZt5 自分自身が起動するときだけ二重起動許可して起動確認できたら自分を閉じる : [sage] 2016/12/21(水) 21:13:47.15:69vl5rId ありがとうございます。 やはりその方向ですか。 リスタート後に最初のインスタンスのiniファイルを読み込みたいで Mutexのチェックの前に最初のインスタンスの終了を待つ処理が 必要かなと漠然と考えていたんですが... 簡単でスマートな方法はないんですね : [sage] 2016/12/21(水) 21:25:28.28:GvkBvmPc 自分(プロセスA)が自分(プロセスB)を起動するときに、コマンドラインで /restart というようなコマンドを渡す。 プロセスBは /restart ってコマンドを受け取ったら、Mutexの所有権を得るまで待機する。(再起動処理) プロセスAはMutexの所有権を開放する。 /restartを受け取らなかった場合は、Mutexの所有権を得られなかった場合は終了する。(二重起動防止) : [sage] 2016/12/21(水) 23:03:33.63:V2gs4HSo そうですね Mutexが取得できるまで待機すればいいですよね 終了待ちをもっと複雑な方法で考えてました ありがとうございます : [] 2016/12/22(木) 20:53:24.89:GbxNFxpQ よろしくお願いします。 『レコード型Aを利用する、クラスA』を自作したとします。 そして、『このクラスAとほとんど同じ機能を持つが、レコード型Bを利用する、別のクラス』を作りたいとします。 この場合、どう記述するのが効率良いでしょうか。 例えば、よくサンプルで見る、TListのItemにレコード型のポインタを使ってデータを入れる場合。 type // レコード型A PTRecA = ^TRecA; TRecA = record // 略 end; // レコード型B PTRecB = ^TRecB; TRecB = record // 略 end; // クラスA・・・レコード型Aを利用 TClassA = class(TList) procedure SetItem(Rec: TRecA); function GetItems(Index: Integer): TRecA; end; // クラスB・・・レコード型Bを利用 TClassB = class(TList) procedure SetItem(Rec: TRecB); function GetItems(Index: Integer): TRecB; end; 上記の様に、クラスAとクラスBで似た様なコードの重複が多い場合、 クラスの定義をもっと効率良く記述できる方法があれば教えていただきたいです。 : [] 2016/12/22(木) 20:58:35.19:T2mCxqBZ delphi ジェネリックスでググる : [sage] 2016/12/24(土) 05:08:06.07:dJj6Jdn2 クラスの継承を使えないか? レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか? そもそもクラスとレコードに分ける必要があるのか? などなど : [sage] 2016/12/24(土) 16:48:03.74:NvTs06qg レコード型をクラスのメンバとしてポインタで管理して そのポインタの実体を操作する仮想メソッドなどを作る。 : [] 2016/12/24(土) 23:24:23.58:SRluPO+r firemonkeyを使ってandroid向けのゲームを作り始めましたが いきなり躓いて困ってます。 ゲームループのスレッドを作って描画を行っていますが TBitmapがスレッドセーフでないため描画処理が正常に行えません。 firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。 : [sage] 2016/12/25(日) 02:11:22.91:dFY2jBPw lockしてもダメ? : [sage] 2016/12/25(日) 09:12:26.41:LRNNB7e/ DrawGridのセルの色を取得する方法を教えて下さい。 どのセルに何色を塗ったか記憶しているのですか、 もっと簡単に知る方法があると思い質問させてもらいました。 宜しくお願いします。 : [sage] 2016/12/25(日) 09:56:13.82:HB1HITh4 スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ : [sage] 2016/12/25(日) 09:59:02.44:BtIm+2Ns Delphi6の時はCanvas.Lockがあったと思いますが 今使ってるDelphi10.1ではLockが見つからなくて・・・ : [sage] 2016/12/25(日) 10:11:02.14:BtIm+2Ns スレッド側で描画用のBitmapをCreateしてWidth、Heightを設定した段階で EBitmapSizeTooBigの例外が発生してしまうため、そこまで辿り着けなくて困ってます。 : [sage] 2016/12/25(日) 10:30:12.14:rexwkbDx 例外の種類見る限り、スレッドと関係なさそうに見えるが。 ビットマップが大きすぎるってWidthとHeightをいくつに設定しようとしたの? : [sage] 2016/12/25(日) 10:36:40.00:BtIm+2Ns サイズは350x450なのでたぶん大きすぎることはないと思います。 メインスレッドで動作させた場合は、例外が発生することなく動作するので メインスレッド以外ではTBitmapは使えないのかと・・・ また、Windowsでは正常に動作してAndroidで動作させると例外が発生するため Android固有の問題なのかなと思いまして : [sage] 2016/12/25(日) 12:33:01.08:dFY2jBPw map/unmap : [sage] 2016/12/25(日) 17:27:44.55:HB1HITh4 AndroidのThreadで発生するってQPに上がってるからVOTEしとけばそのうち治るんじゃないかな そのうち。 : [sage] 2016/12/25(日) 17:59:22.97:YEQFz9Pa Delのバグかよ : [sage] 2016/12/25(日) 18:04:15.67:BtIm+2Ns 教えていただいたものを使って処理を行ってみましたがダメでした。 期待しないで待つことにします。 別スレッドでの処理を諦めてとりあえずメインスレッドで全て行うようにします。 相談に乗っていただいた方々ありがとうございました! : [sage] 2016/12/28(水) 09:28:27.13:aele3sW5 Delphi 10.1 BerlinのStarterでチュートリアルをやってます。 ttp://jump.5ch.net/?http://docwiki.embarcadero.com/RADStudio/Berlin/ja/ユーザー アクションに対する応答をコード エディタでコーディングする(IDE チュートリアル) このページの中ほどまで進んだら [dcc32 エラー] TextEditorUnit.pas(94): E2003 未定義の識別子 : 'TDialogServiceSync' というエラーが表示されてしまいます。 どうしたら修正できるのでしょうか? : [sage] 2017/01/01(日) 00:51:30.42:u9hnImCi ここで引っかかってるのかな? UserResponse := TDialogServiceSync.MessageDialog( 'File already exists. Do you want to overwrite?', TMsgDlgType.mtInformation, mbYesNo, TMsgDlgBtn.mbYes, 0); TDialogServiceSync はFire Monkeyでしか使えないからvclプログラムではエラーになって当然かも。 チュートリアルのソースコードって色々バグってるからなぁ… とりあえず UserResponse := MessageDlg( 'File already exists. Do you want to overwrite?', TMsgDlgType.mtInformation, [mbYes, mbNo], 0); と書き換えたらエラー出なくなると思う。 : [sage] 2017/01/02(月) 05:54:12.25:IPXAtosy クラスファンクションなのかそれは? : [] 2017/01/02(月) 12:22:05.25:THkmnZCs ありがとうございました。早速試してみましたが、 [dcc32 エラー] TextEditorUnit.pas(99): E2003 未定義の識別子 : 'mbYes' [dcc32 エラー] TextEditorUnit.pas(99): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'MessageDlg' が定義されていません [dcc32 警告] TextEditorUnit.pas(99): W1000 シンボル 'MessageDlg' を使用することは推奨されていません : 'Use FMX.DialogService methods' とエラーが出てコンパイルが通りませんでした。 FireMonkeyはデフォルトで使えるのかと思ってました。いろいろと無知すぎるので もうちょっと分かりやすいところから勉強しなおしてみます。 : [sage] 2017/01/02(月) 20:49:19.17
:7Rs/ksIu その警告が出るって事はFire Monkeyの方なのか。 だったらそこは元のの命令でいいはず。 usesの所に FMX.DialogService.Sync が記載されているか確認して なければ追加。 : [sage] 2017/01/04(水) 22:56:01.95:SVZbRNc5 スレッドからサブフォームを表示する事は可能ですか? 他の機器から特定の信号が来たら、警告画面みたいなのを表示しようとして スレッドで信号監視してフォーム表示のつもりがうまくいきません。 なのでメインフォームにタイマー置いてタイマーイベントで信号監視しています。 ヘルプを読むとスレッドからフォームはコントロール出来ないような事が書いてあったのですが、皆さんならどうしますか? : [sage] 2017/01/04(水) 23:19:05.87:07zJ2hFc 表示するだけなんでしょ? 自分だったらpostmessage : [sage] 2017/01/04(水) 23:55:57.26:07zJ2hFc ごめん post-/sendmessageにはwm_closeみたいな表示するメッセージはなかった 独自のメッセージを定義して受け取った側でshowするか showwindow(async)を使うかだね : [sage] 2017/01/05(木) 00:45:48.42:sWl9IbhJ TThread.Synchronizeで、メインスレッドに切り替えてから、引数で渡されたコールバックメソッド(手続き)でサブフォームを表示させるとか : [sage] 2017/01/05(木) 06:34:16.06:KgVZC7r0 エラーが消えて無事に動きました。 ありがとうございます。 こういうのはIDEが教えてくれるのかと思って いましたが、有料版だとそういう機能は あるんでしょうかねー : [sage] 2017/01/05(木) 07:19:36.75:DrifgVvY 関数や手続きが定義されていないってエラーが出たときはその関数などのヘルプを見て そこに書いてあるユニット名が自分のプログラムのuses節に書かれているか調べるといいよ。 : [sage] 2017/01/05(木) 09:38:01.68:u8XERnLo ,202 ありがとうございます。 教えてもらった方法を調べながらやってみます。 : [sage] 2017/01/08(日) 16:20:11.76:lAdNqeO/ TShellCtrlコンポーネントって、デモに含まれるものなんだよね なんでVCLに含めなかった?? : [sage] 2017/01/09(月) 14:24:09.01:KdQvIKlc Queue関数。 ttp://jump.5ch.net/?http://www.gesource.jp/weblog/?p=538 : [sage] 2017/01/10(火) 11:27:52.10:D5z5IiVv マルチスレッドが終了したかどうか確認するのに、フラグで確認してるんだけど、 なんかもっとスマートな方法ってありませんか? ググったらWaitForが出て来たのですが、hoge.WaitForとしてもハンドルエラーとか出て使えませんでした。 宜しくお願いします。 : [sage] 2017/01/10(火) 12:33:32.63:8tL5nmKS 何があなたのスマートの基準なのか? フラグは別に悪くないと思うけど。 : [sage] 2017/01/10(火) 17:34:35.55:cSdSlPHe freeが一番確実じゃない? : [sage] 2017/01/10(火) 17:41:03.73:9hDOaePS hogeってTThread? そんだったらTThread.FreeOnTerminateをTrueにしてるから、 スレッドが終了してFreeされてるから、ハンドルエラーと出てくるんだろう。 FreeOnTerminiateをFalseにすればOK(そのかわりTThreadの破棄は自分でやる必要がある)。 : [sage] 2017/01/10(火) 18:11:59.83:uT10hEea 終了したか確認するのにWaitForしたら確認じゃなく待機しちゃってダメじゃないのかと思うけど。 FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てるので良くないかい? あとはメインフォームに終了通知としてメッセージ送るとか。 Win32API使うのOKなら FreeOnTerminiate:=false; にして スレッドハンドルに対して WaitForSingleObject (タイムアウトは0に設定)使い WAIT_OBJECT_0が返るかWAIT_TIMEOUTが返るか確認する。 もしくはGetExitCodeThread関数を使うとかかな。 : [sage] 2017/01/10(火) 18:56:40.06:XaHxjxQc そういやスレッドの終わり方の議論が2、3年前にあったな : [sage] 2017/01/10(火) 19:15:27.36:9hDOaePS FreeOnTerminateが使えない?とかいう議論じゃなかったっけw : [sage] 2017/01/10(火) 21:06:50.37:8tL5nmKS FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てる に賛成。簡単確実。 : [sage] 2017/01/11(水) 07:54:30.57:7+b9GoiT そのフラグの排他制御は簡単じゃないよ : [sage] 2017/01/11(水) 08:27:35.32:7+b9GoiT ああOnTerminate 内はメインスレッドか。 なら簡単だわ。メンゴ。 昔はOnTerminateイベント無かった希ガス : [sage] 2017/01/11(水) 08:51:02.04:jn+AzvnI おはようございます。 皆さん、ありがとうございます。 フラグがやはり良さげなんですね。 もう1つ教えて下さい。 スレッドの中で try stringlist:=TStringList.Create; while not Terminete do begin 何かの処理 end; finally stringlist.free; End; とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。 異常終了した時はfinallyの処理をしてくれます。 stringlistの解放はOnTermineteでするのが普通なのでしょうか? : [sage] 2017/01/11(水) 12:16:51.30:CK/PUOqI 構文が変だよ tryが抜けてる : [sage] 2017/01/11(水) 14:34:41.49:Rshx8mvt tryはあるが? : [sage] 2017/01/11(水) 14:43:08.49:mOqhfYH5 >とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。 んなわけない。ちゃんとfinallyの処理するはずだからもっとしっかり確認しよう。 >フラグがやはり良さげなんですね。 もうちょっと具体的にスレッド終わった後何したいのかとか書いてくれんと答えようがねぇ。 : [sage] 2017/01/11(水) 17:34:02.96:y79IyYLw ホントだtryはあった...でも 最近のdelphiは仕様が変わったのか... 念のため例外処理入れてみたら? list=:tstringlist.create; try try while not terminated do begin ...end; // ここで正常処理終了のフラグをセット except....end; finally list.free; end; : [sage] 2017/01/11(水) 18:26:26.78:tCuecbSb >TermineteをTrueにして終了するとfinallyの処理をしてくれません。 どうやって確認したの? あとTThreadの派生クラスならTerminateはメソッドとTerminatedプロパティが使える。 >stringlistの解放はOnTermineteでするのが普通なのでしょうか? そんなことはない。 : [] 2017/01/11(水) 18:29:24.22:+wq8yOB3 昔昔、QuadrupleDを使ってやってたサウンドの再生を最新のDelphiでやりたいんですが、使えるライブラリを探してます。 ・複数のwaveファイルをマルチチャネルで読み込んでそれぞれ別個に再生したい ・チャネル単位でループ再生、ピッチ変更、音量変更がしたい あるかな…(#65381;ω・`) : [sage] 2017/01/11(水) 21:03:36.27:go3Ym2g4 ブレーク入れてね ステップで見るときブレーク入れないと 見かけ飛ばすから : [sage] 2017/01/12(木) 06:31:56.17:a5xM53E0 フラグの排他制御は簡単だと思うが。 boolean変数一個なら読み書きは1命令で、割り込まれることはないだろうし 書く前に消されちゃうようなコードを書かなければいいだけ。 : [sage] 2017/01/12(木) 07:43:07.08:pteiZ85t きちんとした知識がある人にとっては簡単だよね : [sage] 2017/01/13(金) 08:37:54.09:ZuNdbFdt フラグをグローバルやメインフォームなどに 持たせるのはなんか古臭いという気持ちはある : [sage] 2017/01/14(土) 13:08:24.40:gjFRSJdj 元号変わったらどうすっかな D7だと対応できんだろ : [sage] 2017/01/14(土) 13:25:01.19:h3eR+GmF 元号とか使わないか 自力で変換 OSの機能を使ってるんだったら大丈夫か ただvistaも今春でサポート終了するけど : [sage] 2017/01/17(火) 17:31:21.77:O6RaaTFv Berlin試したみたけど以前ここで言った gifアニメのバグが解消されてないな : [sage] 2017/01/18(水) 13:40:10.70:YhLwefSp string、ansichar、pansicharの型キャストってどうやるの? 暗黙の型キャストの警告を消したいんだけど、ググってstrpcopyとかのサンプルを実行しても消えない。 : [sage] 2017/01/19(木) 15:50:04.40:5UKguDxp string(ansistring変数)とかで消えない? : [sage] 2017/01/20(金) 09:53:10.19:1eiriAuJ 具体的なコードを挙げてみては? : [sage] 2017/01/27(金) 12:59:02.17:/S2JEwyl Konopkaコンポーネントのアンインストール方法を教えて下さい。 インストール中に異常終了したのでアンインストールしたいのですが、 アンインストールも途中終了してしまって、行き詰ってしまいました。 よろしくお願いします。 : [sage] 2017/01/27(金) 14:49:41.44:5OkJm/3R マイドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaのフォルダと パブリックのドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaの リポジトリデータを削除すればよかったと思う。(心配ならバックアップとっといてね) konopka、インストール失敗するとアンインストールもできなくなるんだよね。 : [sage] 2017/01/27(金) 22:35:47.30:/S2JEwyl ありがとうございます。 助かりました。 : [sage] 2017/02/01(水) 09:20:48.68:5qzbuLNZ 入力の支援機能で出て来た候補にカーソルを合わせて、 ピリオド打ったら選んだ候補が入力される設定ってどこにありますか? ベルリンのup2を入れたのですが、最初は良かったのにいつの間にかピリオドで選択されなくなってしまいました。 : [sage] 2017/02/06(月) 19:05:34.17:xOrt0AYX StringGridのセルをデータの合わせて塗りつぶすことをしています。 タイマーイベントで0.2秒毎にデータに変化がなくても一旦デフォルト色にしてから他の色を塗っています。 そのせいだと思うのですがセルの選択ができません。 セルをランダムに色を塗りつつ、セルの選択もできるようにするにはどうしたらいいでしょうか? : [sage] 2017/02/06(月) 20:35:02.64:iNTq03fP おんどろーせる : [sage] 2017/02/06(月) 20:38:57.75:U9v8FdBr TSringGridのOnDrawCellイベントの引数で渡されるTGridDrawStateで、選択されたかどうか判断できる。 選択されてないときだけ、色を変更するよろし。 : [sage] 2017/02/06(月) 22:36:47.54:xOrt0AYX .241 ありがとうございます。 まだ、試してませんがどういうコードを書けば良いか案が浮かびました。 : [sage] 2017/02/07(火) 04:11:46.40:odr3U2KT タイマーで200ミリ秒ずつやってるところが壮絶にまぬけっぽい 小学生以下の知能 : [sage] 2017/02/07(火) 07:48:29.48:uL0lBsbg Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは 質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが、 お礼はDelphiの布教と初心者の救済をお願いします。 : [sage] 2017/02/07(火) 14:14:09.54:vf4YiH1/ 昨日はありがとうございました。 TSringGridの特定のセルに数値を書き込むのにDrawTextを使って右寄せで書き込んでいます。 この書き込んだ数値を後から取得することってできますか? セルにHintみたいに埋め込めたら簡単なんですけどググっても分かりませんでした。 シーケンサーの信号状態を監視するんで手っ取り早くタイマー使ってます。 : [sage] 2017/02/07(火) 21:01:48.32:qgMFF5pP その「数値」はどこにしまってあるの? それは自分で世話するしかない。 DrawTextは文字列を描画するだけで、何書いたかなんてどこにも覚えていないよ。 : [sage] 2017/02/07(火) 22:53:48.58:GEF3mu7C StringGridなんだから、Cellsプロパティを通して、文字列として各セルにでも入れときゃいいんでね?(ハナホジ : [sage] 2017/02/08(水) 07:16:05.46:3kd0dWw+ 格納するオブジェクトも実装したらいいんじゃ : [sage] 2017/02/12(日) 16:38:05.20:iYdKWxWq 整数ならcellのobjects(だったっけかな)に入れときゃ良いじゃん : [sage] 2017/02/26(日) 22:21:06.30:S5w82ICF vs2015アンインスコしたらDel10.1でコンパイルできなくなった。 Del再インスコするしかない? : [sage] 2017/02/26(日) 22:23:37.25:8hwVjJWR 環境変数消されてるとか? : [sage] 2017/02/26(日) 23:37:41.28:S5w82ICF ありがとうございます。 調べてみます。 : [sage] 2017/03/14(火) 14:46:39.28:SzM2z6wx スレッド1で変数aの値を読み書きしていてスレッド2では変数aを読み込みしかしない場合って干渉対策って必要? : [sage] 2017/03/14(火) 15:58:50.80:vbV/Jpv3 うん : [sage] 2017/03/14(火) 22:26:02.83:M7D1b0oM ありがとうございます。 干渉対策じゃなくて排他処理っていうんですね。 失礼しました。 各スレッドで共有する変数を集めたUnitに変数aを宣言して使っています。 この変数aを複数のスレッドからアクセスする場合、Synchronizeを使うのでしょうか? SynchronizeはスレッドからVCLを描画する場合に使うと書いてあったので、フラグを立てるとかして 排他処理をするのでしょうか? : [sage] 2017/03/14(火) 23:05:45.72:137tpMLx クリティカルセクションでも使えばいい、どっかで CS := TCricalSection.Create()で作っておいて、 同時にアクセスされたら困るところで CS.Enter(); try 共有リソースの変数Aにアクセスなど finally CS.Leave(); end; : [sage] 2017/03/14(火) 23:07:46.72:137tpMLx まぁ、他にもSyncObjs.pasにTInterlockedとかあるけど、 そこは自分で頑張ってくれ : [sage] 2017/03/15(水) 07:56:13.67:OMQXGO2Q Synchronize内の処理はメインスレッドでの処理となるから 同時アクセスがありえなくなるということらしいよ : [sage] 2017/03/16(木) 09:51:28.35:IMOOaoXR 皆さん、ありがとうございます。 これから調べて確認しようと思うのですが、最後に1つ教えて下さい。 シンクロナイズを使い過ぎるとマルチスレッドの意味が無くなるとヘルプに書いてありました。 クリティカルセクション等は使い過ぎてもメインフォームの反応が悪くなるとかそういう事が無くなる、若しくは低減されるとかあるのでしょうか? もし、それならクリティカルセクション等を推奨すると思うので使い過ぎはやはりダメとは思いますがどうなんでそょう? : [] 2017/03/16(木) 17:53:22.67:Xe646fvV どこからが使いすぎだと思う? : [sage] 2017/03/16(木) 18:29:10.53:vq3uRAd1 ウインドウ描画などしているスレッドが「メインVCLスレッド」。 要するにメッセージループが動作しているスレッド。 Synchronizeはこのメッセージループに「渡したプロシージャの処理を任せる」ため Synchronizeを多用すると「メインフォームの反応が悪くなる」という状況を生む。 Synchronizeはあくまで変数のアクセスと言った軽い処理に限定すればいい。 この場合、メッセージループがウィンドウメッセージを処理する合間に変数へのアクセスを処理する程度なので その程度で「メインフォームの反応が悪くなる」ということはないだろう。 ただ、もし重たい処理を任せてしまうと、フォームのイベントで処理するのと同じになってしまう。 (フォームなどコンポーネントのイベントはメインVCLスレッドで動作している) この場合メインフォームの反応が悪くなる。 クリティカルセクションはメッセージループとか関係ないので、それによってメインフォームの反応が悪くなるということはない。 ただ例外として、メインVCLスレッドでクリティカルセクションを使うと、 他のスレッドが使用中はメインVCLスレッドは待機してしまうのでメインフォームの反応が悪くなることはある。 : [sage] 2017/03/17(金) 07:45:46.44:88SBOT8h 問題は「使い過ぎ」の定義だと思うけど 僕は1つ1つの処理の長さが長くなってしまった場合をいってるのではないかと思う。 同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって それを否定するようなプログラミングはもはやスレッドではないということではないかと。 : [sage] 2017/03/17(金) 09:01:04.72:88SBOT8h あ、もしかしたら質問に答えてなかったかな? つまりsyncronizeだろうがcsだろうが 占有状態が長くなるようなロジックになるなら同じことだ : [sage] 2017/03/17(金) 17:25:37.85:c2lVMe4f 今のcpuは普通にマルチコア、マルチスレッドじゃない? 同時に動いてんじゃない? : [sage] 2017/03/18(土) 10:42:58.16:TEQZ8ThN そういう御仁が現れるだろうなとは思ってた。 申し訳ないがマルチコアなどの詳細な仕組みが現話題の結論に 影響を与えるものではないので無視させてもらいます。 : [sage] 2017/03/18(土) 11:15:40.91:uhuX0RUO OSのタスクスケジューリングやスレッド、Delphiのメインスレッドの話がごっちゃ混ぜになっててカオスカオス : [sage] 2017/03/18(土) 11:18:08.58:At1yjhtj 細かい処理が交互にっていつの時代のタスク割り当ての話してるんだ : [sage] 2017/03/18(土) 17:26:39.99:qhwfKSm6 >マルチコアなどの詳細な仕組みが現話題の結論に影響を与えるものではない 今の話題においてこれは正しいと思う。 >同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって この話も同じく、“現話題の結論に影響を与えるものではない” : [sage] 2017/03/18(土) 17:42:46.56:uhuX0RUO 中途半端に説明するからややこしくなる SynchronizeにしろCriticalSectionにしろDelphiのメインスレッドが処理待ちになる状況ができれば反応は悪化する くらいでイナフ : [sage] 2017/03/18(土) 23:22:19.03:toYG3enn が変な説明を入れたのが元凶だ : [sage] 2017/03/19(日) 10:14:13.46:pPSf+p35 メインに限らないっしょ。同期されたサブスレッド間でも片方が長い処理すれば片方は待ちになるわけだし。 : [sage] 2017/03/19(日) 10:31:00.81:Zac56zGn メインスレッドを待機が発生するスレッドと置き換えて考えたら良いだけの話であってそのあたりは柔軟に考えてくだちい まー、サブスレッド同士が待機しあって停滞しててもメインスレッドがそこに巻き込まれてなければ(見かけ上は)レスポンスの悪化とかは無いけどね : [sage] 2017/03/19(日) 12:59:15.63:pPSf+p35 結局「スレッド」という英単語が同いう意味かってだけだね。 あと例えば一度にたくさんのログインがあるサーバーなんかは スレッドたくさん作ることによるメモリの圧迫が指摘されてて メッセージ処理型に回帰してるよね。 つまり同時(的な)処理においてスレッドが万能ってわけじゃない ことも知ってたほうがよいよね。 : [sage] 2017/03/19(日) 16:36:19.37:z/4QTPa3 で、そのメモリ圧迫とやらは今回の質問のどこにかすっているのかね? : [sage] 2017/03/19(日) 18:47:31.53:Zac56zGn どんどん話題がすり変わっていくな : [sage] 2017/03/20(月) 01:59:24.49:Qzpue34I が悔し紛れに難癖つけてるだけっしょ : [sage] 2017/03/20(月) 07:33:47.40:/HDavIr2 予想どおりの反応ですw : [sage] 2017/03/23(木) 17:32:52.95:0AhE1jWZ 10.2tokyo入れて見たんだけど、10.1でgetitから入れたコンパーネントが入れられなくてプロジェクト開けられない。 エンバカ何なんだ? : [sage] 2017/03/24(金) 07:00:18.71:w0n9pMnW よくある Getitじゃなくて配布元からダウンロードして入れたらOk : [sage] 2017/03/25(土) 07:13:02.05:Hlan26fq StarterのBerlinをTokyoにするんだけど いったんBerlinをアンインストールするんだっけ? : [sage] 2017/03/28(火) 04:59:23.66:by30piXi StarterのBerlinをインストールしたままTokyoをインストール出来ましたし、同時に起動出来ました。 公式ブログには逆の順番(Tokyo→Berlin)でのインストールは、 お勧めしませんって書いてました。 : [sage] 2017/03/28(火) 10:13:09.88:o61kLVYu ありがとう 上書きインストールされないってことか... : [sage] 2017/03/31(金) 10:26:45.88:SnNLRdP6 2007からXEにあげるのに、いまさらながらユニコードに取り組むんですが、 ・フォーム上で入力されるのはUTF-16 ・UnicodeStringで保持するのはUTF-16 ・ソースはUTF-8 の違いがあるようなのですが、ソースでリテラルで記述したUFT-8の文字を コンポーネントのテキストやUnicodeStringに代入したりするとごちゃ混ぜに なってしまうんですか? : [sage] 2017/03/31(金) 10:42:53.79:SnNLRdP6 文字コードを確認してみたのですが var c: Char; begin c := 'あ'; ShowMessage(Format('%x',[(Ord(c))]); のソースで、ソースをバイナリエディタで見てみると、'あ'の部分 のコードはUTF-8ですが、Ord(c)はUTF-16のコードでした。 これは、勝手に文字コードの変換が掛かるのですか? : [sage] 2017/03/31(金) 11:27:56.20:tBgePiep こう言うとアレだけど 普通に使うときはユニコードとか 意識する必要ないんじゃない? : [sage] 2017/03/31(金) 11:48:21.75:SnNLRdP6 例えば、 s := Edit1.Text + 'が入力文字列'; のような場合だと、sにUTF-8の文字コードとUTF-16の文字コードが混在して まずいような気がするのですが、プログラム動かしてみると、コンパイル時に ソースコードでの文字列はUTF-16に変換してるのかな?と思ったのですが。 : [sage] 2017/03/31(金) 12:08:45.28:YNGnrt5P 便乗失礼します。 2009以降 ・ShowMessageの内部では、UnicodeStringとして表示する文字列を処理します。 ってことだったと思うのでUTF-16変換されてるのかと 異なるコード間では暗黙の変換される でよかったでしょうか? どこまで変換されるのかは確認してないのと、 Chr関数とか文字数、Byte数を数えるときに気をつけて考えておく、くらいでしか認識してないのですが ttp://jump.5ch.net/?https://edn.embarcadero.com/jp/article/38783 ttp://jump.5ch.net/?https://edn.embarcadero.com/jp/article/38791 : [sage] 2017/03/31(金) 12:14:44.98:SnNLRdP6 リンク先を読んでみると、文字列の代入時に変換してるみたいですね。 ありがとうございます。 : [sage] 2017/03/31(金) 12:27:36.02:tBgePiep 大丈夫 ソースファイルがutf8とか意識しないほうがいいよ 文字列リテラルもstring変数もunicodeだよ : [sage] 2017/03/31(金) 12:33:03.27:tBgePiep 内部でどう処理してるのか知らないけど このケースだと代入時(実行時)に変換してるのかな? 実行ファイルの最後に定数が保存されてたと思うけど すでにunicodeになってたような気がする : [sage] 2017/04/01(土) 09:16:09.24:FVobg3nm 逆に、常に意識してないと嵌まることがあるよ。 : [sage] 2017/04/01(土) 11:20:45.32:1uakO4Jp コンパイル時に変換 : [sage] 2017/04/01(土) 14:47:04.87:MIBbFxu2 リンク先を読んでみると、「すでにUnicodeとして扱われている」ってのが分かると思うんだが。 >Delphi 2009で、内部的に大きく変わっています。Delphi 2009では、Unicodeを標準文字列型として採用しているために、このコードで使われている文字列はすべてUnicodeです。 >Sに代入している ‘Hello, World.’ は、Unicodeです。 ソースの文字コードがなんであれ、リテラル文字列の扱いはUnicode。 C++Builderで扱う場合はLが付いているかいないかでリテラル文字列の扱いが変わると思う。 : [sage] 2017/04/01(土) 16:29:34.25:xnSlrZsr てか簡単なサンプル作って試せば済むことじゃん 昔のバージョンのdelphiで 文字コードを意識する必要があるケース以外 最近のバージョンのdelphiでも unicodeであることは考えなくていいんじゃない : [sage] 2017/04/01(土) 21:40:45.92:JcotD4lU 真に気を付けないといけないのは1文字に複数文字が入ってるサロゲートペア 見た目が同じだからハマる 「ば」と「ば」が違う文字とかわっかんねーよ : [sage] 2017/04/02(日) 09:37:47.98:OL+frmBm 正直UTF8で統一したほうがよかったと思う : [sage] 2017/04/02(日) 09:38:21.10:WSPdqmkD 最後の行は「ば」? これってサロゲートペアなのか? それとも別の文字が化けた? それと 内部の文字列がunicodeになった話と unicode文字列を処理する話は 微妙に違う話だぞ? : [sage] 2017/04/02(日) 09:40:01.86:OL+frmBm UTF16も実は可変長という落ちなんだからややこしくなっただけだと思う : [sage] 2017/04/02(日) 10:43:02.23:3chV0onz 2chだと化ける可能性あるから両方サロゲートペアじゃないよ 入力ソフトによってはかな入力するとサロゲートペアになるんよ んでUTF16の入力を受け付けるもんだからそのままDBに格納したりしてあとで検索にひっかからないとか コードの仕様で言うならIF条件すり抜けたりとか おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった : [sage] 2017/04/02(日) 11:06:40.43:5Z3z/Zq2 は̋ : [sage] 2017/04/02(日) 12:55:55.04:n+5RCyoZ それ、ちょっと間違ってるな。 そのケースはサロゲートペアじゃないだろ。 サロゲートペアは単にUTF-16の2バイトのコードユニットで2つのコードユニットで 1文字を表すケースの事でしょ。 「ば」の話は合成文字だか結合文字だかそっちの話じゃん。 : [sage] 2017/04/02(日) 13:01:11.75:n+5RCyoZ >299 >おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった だから、それも全然関係ないから。UTF-8だから解決するというのは勘違いだから。 合成文字の問題は「正規化」使って解決する問題。 : [sage] 2017/04/02(日) 13:05:11.00:3chV0onz はしょってるから書いてないけど正規化もしてるよ 文字での説明に重箱の隅つつかないでくださいな 気にしないでやってるとそういう問題(にぶつかる可能性)もあるよって話です : [sage] 2017/04/02(日) 13:10:15.31:n+5RCyoZ 言葉の使い方が完璧に間違ってるのに重箱のすみつつかないでっていわれてもなぁ・・ 君たちが議論してる「ぱ」と「は」+「゜」はサロゲートペアと全然関係ないんだけどな。 合成済み文字と基底文字と結合文字の話で合って、 サロゲートペアと全く関係ない。 : [sage] 2017/04/02(日) 13:13:23.66:3chV0onz つまりこれこれこういう問題があってこうしましたって1から10まではしょらず正しい言葉をつかって説明しないとここには書き込むなって事ね。了解。 めんどくせ : [sage] 2017/04/02(日) 13:17:10.52:n+5RCyoZ 完全に言葉の定義を間違ってるんだから、教えてあげただけじゃねぇかよ。 別に間違ってたことに対して、「おまえら馬鹿?」みたいなくだらい煽りとか 俺はする気ねぇし。丁寧な言葉で教えてあげたら、その言いぐさ。 : [sage] 2017/04/02(日) 13:20:18.66:8zECKtY8 君たち ではない。 : [sage] 2017/04/02(日) 13:23:02.99:JDqJ1ftS 言葉の定義とやらが間違ってたとしても、 バグの原因になる事のコメントは個人的に大歓迎(こなみかん : [sage] 2017/04/02(日) 14:03:03.40:iqf+IrkA 俺には難しい話をしてるけど、文字扱うには正規化とやらをやって、utf8とか16とかに統一してから加工したり検索したりしないとハマるってこと? : [sage] 2017/04/02(日) 17:46:06.81:WSPdqmkD サロゲートペアに関連してだけど MECUtilsとか使ってやったりするの? 今まであんまり意識したことないから 注意喚起は嬉しいけどメンドクサ過ぎるね : [sage] 2017/04/02(日) 18:37:26.81:9KwT0wNW Unicode化の弊害というかなんというかだけど、 マルチデバイスも相まって想定外の変な文字が入る確率っていうのは 確かに飛躍的に増えてる・・・気がする。 : [sage] 2017/04/02(日) 20:31:47.10:n+5RCyoZ そんなの使わなくても普通は標準であるだろ。 Character.pasに必要なのそろってる。 TCharacter.IsSurrogate() : [sage] 2017/04/02(日) 20:47:01.04:3chV0onz TCharctorなんてものはない System.Charactor.IsSurrogate(廃止) もしくは TCharHelper : [sage] 2017/04/02(日) 20:48:31.98:3chV0onz おっと綴り間違ってたな System.Characterだな。また重箱の隅つつかれるところだった : [sage] 2017/04/02(日) 21:07:50.79:n+5RCyoZ そうなんだ。それはすまん。XE3以降買ってなくて 最新のもってなくて。 : [sage] 2017/04/02(日) 23:41:35.03:9/rnzeyZ 今ってディスプレイのアスペクト比が数種類あるけど、皆さんは画面のデザインってどうしてますか? 16:9に合うようにデザインしてる? それとも、フォームの設定とかで実行時にある程度アスペクト比に合わせてくれる設定とかってある? : [] 2017/04/03(月) 14:57:16.50:r7DyphN2 時代は可変 : [sage] 2017/04/03(月) 17:20:51.81:vwU/OCff 全画面表示させない : [sage] 2017/04/03(月) 18:42:50.88:gM/woy0K 意味分からないが。 ウインドウサイズ自体固定させないし、 Align プロパティを使って固定部分とそうでない部分とを分けるし プラスTSplitterでユーザの好みにさせたりもするし。 動画や画像でもないならアスペクト比なんて気にしないんじゃないのか。 : [sage] 2017/04/03(月) 21:28:02.74:r3n0H3vn やっぱ、全画面表示させないが簡単でいいな : [sage] 2017/04/04(火) 06:32:18.18:vjUtddW+ ファイアーモンキーならTScaleLayout使って無理やり対応した事もあります : [sage] 2017/04/12(水) 07:11:34.88:lM5IX7kk メモリーリークの場所ってdelphiに標準で入ってるリークを監視するやつのフルバージョン入れないと分からない? : [sage] 2017/04/16(日) 12:03:24.01:he8BFR5v Delphi10.1でのフル機能のfastmm4の使い方を教えてください。 メモリーリークのメッセージは出るのですが、テキストファイルが作成されないです。 よろしくお願いします。 : [sage] 2017/04/17(月) 16:51:42.85:y+L9zWaz DatetimetostringとFormatDateTimeの違いって procedureであるか、Functionであるか、だけですか? (引数は異りますが) : [sage] 2017/04/17(月) 17:16:23.94:tXRogAtk 引数が違うって分かれば 自ずと... : [sage] 2017/04/17(月) 20:24:58.64:y+L9zWaz すみません、質問をはしおりすぎでした。 procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime); function FormatDateTime(const Format: string; DateTime: TDateTime): string; 上記2つ、使用目的はいっしょですよね。 なぜに同じような目的の手続きと関数が用意されているのか? と思った次第です。 FormatDateTimeだと、 showmessage(FormatDateTime(....));とできますが、 DateTimeToStringだと、 var DTstr :String; Begin DateTimeToString(DTstr, .....); Showmessage(DTstr); となるので、DTstr分手間がかかるなと思ってました。 : [sage] 2017/04/18(火) 09:41:09.25:phVpBhu/ 何かとの互換性でどうしてもDT2strが欲しかったんじゃないかね : [sage] 2017/04/18(火) 15:11:31.58:nhn9im/Y ttp://jump.5ch.net/?http://mrxray.on.coocan.jp/Delphi/Others/UsageFastMM.htm ここに書いてある手順でやってみた? : [sage] 2017/04/18(火) 18:41:12.40:EH33vxsU ソースコード見てみると FormatDateTimeはDateTimeToStringを呼び出しているだけ。 たぶん利便性(使い分けできるように)の問題だと思う。 ちなみに以下の関数が内部的にDateTimeToStringを呼び出すだけで実装されている。 function DateToStr(const DateTime: TDateTime): string; function TimeToStr(const DateTime: TDateTime): string; function DateTimeToStr(const DateTime: TDateTime): string; function FormatDateTime(const Format: string; DateTime: TDateTime): string; また同名の関数で引数の最後にTFormatSettings型が追加されたバージョンも 内部的にTFormatSettings型を引数に持つDateTimeToStringを呼び出しているだけ。 : [sage] 2017/04/19(水) 09:04:32.22:/KRyUyJO なるほど、参考になりました。ありがとうございます。 : [sage] 2017/04/19(水) 15:21:22.52:1b3gc8EV FastMM4のデモで試した結果、ソースの所のFastMM4 in 'FastMM4.pas'をSharememに変えたらリークの場所がわかる余裕になりました。 Sharememが何かはわかりません。w 円バカのサイトに載ってたのでやって見たらなんとか動作したって感じです。 : [sage] 2017/04/23(日) 00:33:57.32:h9OMGlcp delphi10.1までは問題なかったのにdelphi10.2にしてから stylebookで指定したstyleが一部反映されなくなりました。 tabcontrolのタブがandroid実機で実行すると styleが反映されずデフォルトのタブになってますorz 対処方法とか分かる方いらっしゃいますか? 暫くは10.1を使い続けるしかないですかね・・・ : [sage] 2017/04/23(日) 01:24:14.01:6D2X13Ox Android用のスタイルを一旦削除してマージ : [sage] 2017/04/23(日) 07:38:09.47:h9OMGlcp アドバイスありがとうございます。 Android用スタイルを削除してマージしてみましたが結果は同じでしたorz もう少し詳細に書くとIDE上ではタブにもスタイルが反映されているが ビルドしてAndroid実機で動かすとアクティブなタブだけが デフォルトになってしまう状態です。 同じプロジェクトをDelphi10.1でビルドし直してAndroid実機で動かすと アクティブなタブも含めてに正常にスタイルが反映されてます。 また、スタイルに使用しているファイルは「AquaGraphite.style」を 使用していますが他のスタイルファイルを使っても同様の結果でした。 実機はXperia Z3ですが他に持っていないので他機種でどうなるかは未検証です。 : [sage] 2017/04/23(日) 07:50:06.92:h9OMGlcp すいませんTabControlのみしかない最小限のプロジェクトで試したら 正常にスタイルが反映されているのが確認できました。 変な設定がどこかで生きているのだと思います。 失礼しましたm(_ _)m : [sage] 2017/04/27(木) 08:22:37.61:rpeb1FWf メッセージダイアログやショーメッセージで改行を 使うとメモリリークが出るけどなんで? : [sage] 2017/04/27(木) 12:14:19.99:nqOtHEIU バグってんじゃね : [sage] 2017/04/27(木) 12:36:20.33:axAm+D16 delphiがバグってる? 新規作成でシンプルな状態でやってもメモリーリークのメッセージが出るんだけど、どうすりゃ良いんだろう。 俺だけ? : [sage] 2017/04/28(金) 22:34:22.04:WI3n6xVG メモリーリークを調べているのですが MessageDlg(IntToStr(123),mtConfirmation, [mbOK, mbCancel], 0); IntToStr(123)が原因でメモリーリークが起きるみたいです。 Delphiのバグ?コードがダメ? : [sage] 2017/04/30(日) 09:29:58.72:kcq5sr/L ソースみれば? : [sage] 2017/04/30(日) 11:59:29.48:0p25w19v 336ではないけどソースコード見てみた ポイントになりそうなところがアセンブリで書かれてた : [sage] 2017/04/30(日) 12:08:19.89:VPr4LyhY それがどうかしたか : [sage] 2017/04/30(日) 23:16:41.78:rKLNeW5H 1. MessageDlg と同じ引数を持つ、そのユニット内にローカルな関数を書いて、MessageDlg のせいかどうか調べる。 2. IntToStr と同じ引数を持ち、適当な文字列を返す関数を同様に書いてみる。 3. コンソールアプリケーションのプロジェクトを作成して、1.を行って調べてみる。 4. 同様に IntToStr も行ってみる。 : [sage] 2017/04/30(日) 23:36:32.18:5yRtGq51 どのバージョンで発生したのかしら? こちらのTurbo Delphiは ReportMemoryLeaksOnShutdown := True; で再現せず。 : [sage] 2017/05/02(火) 01:47:15.38:As8TBna0 昔の経験 マルチスレッド内で間違った呼びし、クリティカルセクションの間違った実装 : [sage] 2017/05/02(火) 08:06:56.48:Hq/uPbjy 「IntToStr(123)が原因でメモリーリークが起きる」 と判断した理由を開示せよ : [sage] 2017/05/24(水) 11:04:03.05:ipeCfZP9 32biでも64bitでもinteger型は32bitですか? Pointer型(とPtrInt型)だけが変化すると考えてよいのでしょうか? : [sage] 2017/05/24(水) 11:54:37.27:4nncZNTT -1 を代入する pointer を求める pointer + 0 と pointer + 3 と pointer + 7 あたりを見る 0 を代入する pointer を求める pointer + 0 と pointer + 3 と pointer + 7 あたりを見る : [sage] 2017/05/25(木) 14:51:52.47:qme3C1o0 Integer は 32 だけど LongInt は 32 とは限らない : [sage] 2017/05/26(金) 08:47:10.54:trsKQBBQ そんなことどこにも書いてないけどホント? ttp://docwiki.embarcadero.com/RADStudio/Berlin/ja/32_%E3%83%93%E3%83%83%E3%83%88_Delphi_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE_64_%E3%83%93%E3%83%83%E3%83%88_Windows_%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B : [sage] 2017/05/26(金) 10:06:17.71:gif2nYmV そのページは、たぶん、Win32->Win64 だけの頃のやつ。 ttp://jump.5ch.net/?http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/Delphi_%E5%9E%8B%E3%81%A8_C%2B%2B_%E5%9E%8B%E3%81%AE%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0 ここで、C の long は、Wind64 では 32-bit、iOS64/Linux64では 64-bit。 とか ttp://jump.5ch.net/?http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/%E5%8D%98%E7%B4%94%E5%9E%8B%EF%BC%88Delphi%EF%BC%89 とか : [sage] 2017/05/26(金) 10:13:55.43:trsKQBBQ iOSだけ特殊な感じ?変なの。 LongIntとLongWordは使わないほうがよさげですね。何でこんな変な仕様にしたんだろ。 : [sage] 2017/05/26(金) 10:22:32.82:trsKQBBQ あ、iOSにはLinux系も含まれるんですか? その辺のあやふやさも嫌な感じですね。 : [sage] 2017/07/06(木) 10:33:45.10:E7iuEH9H シンエディットでプロシージャの名前とファンクションの名前を色分けするような使い方をしたいのですが、 シンジェネラルに設定するキーワードの種類を増やす事はでききませんか? 継承してシンジェネラルも自分で作らないと無理でしょうか? : [sage] 2017/07/06(木) 10:47:02.39:1ivNtSqb シンエディットて何? : [sage] 2017/07/06(木) 12:16:18.45:DKA4KQvd SynEditのことらしい これをカタカナで書く感覚が分からん : [sage] 2017/07/06(木) 13:00:39.86:/LwN4Pic すまん。 あんまり、キーボードとかスマフォの画面とか触れないから音声のやつで入力した。 : [sage] 2017/07/06(木) 16:56:40.09:uy+VElX3 キーボードが苦手なプログラマw : [sage] 2017/07/06(木) 19:47:25.65:j2rVCi1D : [sage] 2017/07/08(土) 15:11:41.17:4Sqq07Ob これがアスペか・・ : [sage] 2017/07/30(日) 22:35:33.76:PBa3jUos 昔MCIをいじっていた者です。覚えている人いるかな? 4年くらいメソッドを書いてなくて、送るでwavを聞きたいなって思って久しぶりにコンパイラを触りました。 何をするソフトなのかというとフォームに対してD&DしてTListにD&D元のファイルのフォルダの ファイル名を取得するソフトなんですが、なぜうまくいかないかわからなくて…。 指摘していただければ幸いです。 : [sage] 2017/07/30(日) 22:37:14.18:PBa3jUos unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,ShellAPI, Vcl.StdCtrls; type TForm1 = class(TForm) Label1: TLabel; ListBox1: TListBox; Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private function SearchFile(SearchDir: string):integer; //SearchDir 検索対象のフォルダ { Private 宣言 } protected procedure FilesDropped(var Msg1:TWMDropFiles); message WM_DROPFILES; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} : [sage] 2017/07/30(日) 22:38:16.16:PBa3jUos procedure TForm1.Button1Click(Sender: TObject); var FileCount :integer; begin ListBox1.Clear; //実行ファイルのあるディレクトリのファイルを列挙 FileCount :=SearchFile(ExtractFilePath(Application.ExeName)); ShowMessageFmt('%d個のファイルが見つかりました。',[FileCount]); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, TRUE); end; procedure TForm1.FormDestroy(Sender: TObject); begin DragAcceptFiles(Handle, FALSE); end; : [sage] 2017/07/30(日) 22:38:43.85:PBa3jUos procedure TForm1.FilesDropped(var Msg1:TWMDropFiles); var FNameSize: UINT; Count : UINT; FileName : array[0..255] of Char; FileName1: string; 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; label1.Caption := Filename1; end; end. : [sage] 2017/07/31(月) 00:52:16.24:5UR8c5yg とこでfmxアプリをタスクトレイに収める方法はないですか? 探すとロシアのサイトにコンポーネントがあったけど 他に方法はないでしょうか? : [sage] 2017/07/31(月) 05:54:29.90:poJtShEs Windows専用だけどいい? : [sage] 2017/07/31(月) 08:21:01.65:5UR8c5yg ええもちろん 例えばバックグラウンドでネットにアクセスして 通知したりポップアップしたりする感じ Androidだとserviceを使うんでしょうが Windowsデスクトップだとタスクトレイに 常駐させるくらいしか思いつかない こういうWindowsアプリをfmxで作る場合 どうするんでしょうか? : [sage] 2017/07/31(月) 12:56:22.59:m2zUy0za WinAPI.WindowsをUSESしてタスクバーから消したいアプリケーションのHWND取得してShowWindow(HWND,SW_HIDE);をぶちかます タスクトレイにアイコン表示させたりする場合はコード記述でもできるけど面倒だからMonkeyMixerか何か使ってVCLを混在させてTTrayIcon使う : [sage] 2017/07/31(月) 18:38:00.55:AynCBzeT ありがとう MonkeyMixerを調べて見ます : [sage] 2017/08/01(火) 10:29:01.65:8qLxpsQt TTrayIconはVCL依存がほとんどないから、切り出して使った方が余計なユニットがリンクされなくていいと思う 自分はそうしてる : [sage] 2017/08/13(日) 13:54:41.72:6x3+ks7t 教えてください。 fmxで矩形以外の多角形領域を Bitmap(.Canvas)間でコピーするには どうしたらいいでしょう? Helpを探したんですが見つけられませんでした 苦肉の策で矩形領域を別のBitmapにコピーし 対象の多角形領域外を完全透過に塗りつぶして それを最終的に目的のBitmapにコピーしてます よろしくお願いします : [sage] 2017/08/26(土) 22:45:11.62:Siu65+Zd fmxねぇ... 実行ファイルのサイズが vclの倍以上になるのはビックリ でもvirustotalなんかでの誤検知は 確実に減るな : [] 2017/08/29(火) 17:10:04.07:sf08cQEA DBCtrlのKeyPressメソッドで出てくる ^H ^V ^X とかって何を指してるんですか?それぞれ16進で、8,16,18の値なんですが。 ポインタの逆参照以外で ”^” の使い方はヘルプにも無いのですが。 : [sage] 2017/08/29(火) 17:11:49.45:pis/sDRy H 48h V 56h X 58h ctrl+H で 08h ctrl+V で 16h ctrl+X で 18h : [sage] 2017/08/29(火) 17:15:51.90:sf08cQEA コントロールキーを押しながら…の記述に ”^” を使うということですか。 ありがとうございます。 : [sage] 2017/09/20(水) 09:56:54.97:lqqkwYAM ちょっと教えてください ジェネリクスなTListにレコード型を格納しておいて 後でレコード内の一部のフィールドを修正したい場合 どうすればいいんでしょうか やっぱレコード全体を取り出して、修正後に全体を書き戻す? : [sage] 2017/09/21(木) 21:39:40.01:pNUeS15R うまくいくかはわからないが、 lst: TList<THoge>なリストがあるとして、 for i :=0 to lst.Count-1 do begin lst.List[i].SomeField := v; end; のように、レコードのコピーが発生しないようにすればもしや。 : [sage] 2017/09/22(金) 00:31:23.41:zuQMjG3e デフォルトプロパティ List[i] に相当する List.Items[i] の read関数 function TList<T>.GetItem(Index: Integer): T; は、戻り値が 左辺値ではないので、どうしても一時変数が必要です。 : [sage] 2017/09/22(金) 07:31:05.69:mBOH6uxg Itemsプロパティではなく、内部で管理している配列を直接返すListプロパティを介してもテンポラリーのコピー発生するんだっけ? ちょっとうろ覚え。 : [sage] 2017/09/23(土) 14:45:31.84:69c72AW1 Delphi 10.2 Update 1で実行しています。 log.d('error だめぽ'); 上記コードをiPhone実機で実行して Xcode -> Window -> Devicesに表示されている実機のログを確認すると 以下のように全角文字が文字化けします。 2017/09/23 14:35:21 Project1[7478]: error \M-c\M^A\240\M-c\M^B\M^A\M-c\M^A\M-= 解決策をご存知の方がいらっしゃいましたらお助けくださいませm(_ _)m : [sage] 2017/09/23(土) 23:58:16.42:qb+wgPEX エスケープ文字をデコードすると e3 81 a0 e3 82 81 e3 81 bd なので、UTF-8 ですかね。 エスケープ文字への変換がログの前後かは切り分けてみましょう。od -x で16進表示すると、 \M-c のところが、e3 なのか 5c 5d 2d 63 なのかでわかるでしょう。 前者なら、ログを出力するツールの性格(ASCII以外は変換とか)、 後者ならコンソールへ出力するツールの変換ですかね。 前者なら、デコードツールでも作ってみれば。 \Mは、0x80を or するメタキーを併用したキー入力の名残りで、Emacs/GNU系の方言です。 \M-c は 0x80 + 'c' = 0xe3 、\M^A は 0x80 + 0x01 (Control-A) = 0x81、\240は8進表記なので 0xa0 : [sage] 2017/09/24(日) 08:50:50.85:xiqHS4Dl 詳細に解説いただきありがとうございます! >\M-c のところが、e3 なのか 5c 5d 2d 63 なのかでわかるでしょう。 od -xのやり方が分からなかったのでログをテキストで保存して バイナリエディタで確認したところ5c 4d 2d 63でした。 これは表示する側の問題ということですよね? あの後、XCodeでNSLogでデバッグログを出力する簡単なプログラムを書いて確認したところ XCode上のデバッグコンソールには日本語が文字化けしないで出力されますが Xcode -> Window -> Devicesに表示されている実機のログでは日本語が文字化けしたので 表示側の問題なのかなと思います。 日本語が表示できないのは不便なので解決できるとうれしいですが こういう場合、難しいのでしょうか。 : [sage] 2017/09/24(日) 19:16:16.23:QV3LCCDd 面倒だから試してないけど NSstr使うとかAnsiStringに一旦格納して出力するとか : [sage] 2017/09/25(月) 02:46:48.72:O5/7UCBk しまった。前後逆でした。e3 のままなら無変換。 で、ちょっと古いけどXcode6.3.2+ios8.3では日本語表示できてます。 : [sage] 2017/09/25(月) 08:55:47.22:Ojd2COhe ご回答ありがとうございます! NSstrを使ってlog.dで出力しようとするとコンパイラに怒られてしまいましたorz AnsiStringを試したところ出力文字は変化しましたが文字化けは改善されませんでした。 ご回答ありがとうございます! なるほど。 現在の環境がXCode8.3 + iOS8.3なので少し古いXCodeを使って試してみようと思います。 : [sage] 2017/09/27(水) 10:22:25.25:9ZA1JIkS iOSってTBannerAdを使ってAdmob表示できないんですか? docWiki見たらiOSはiAdを使う前提の説明しかなくて・・・ : [sage] 2017/10/17(火) 09:08:55.23:mEDA3l77 Delphi10.2ってxcode9.0に対応してる? : [sage] 2017/10/24(火) 09:26:42.32:ZAkkogtl すみません。どうしたりいいのか分からずに書き込みさせてください。 : [sage] 2017/10/24(火) 09:43:54.24:PqKdrl6b ? : [sage] 2017/10/24(火) 20:03:21.48:1s7nmZJe もちつけ! : [sage] 2017/10/25(水) 11:38:12.62:32/KECdp したり顔 : [sage] 2017/10/30(月) 20:24:16.10:n19lyVRb お伺いします。 ttp://jump.5ch.net/?https://www.axfc.net/u/3858375?key=delphi アーカイブpass=123456 ですが、AというフォルダにB.zipC.zipD.zip・・・というファイルが入っています。 これにB.zipというファイルをフォームにD&Dで落とすと 1:q:\A\B.zip 2:q:\a 3:q:\a\ と表示されます。 そして、Button1を押すとバイナリがあるフォルダのファイルの数を報告します。 欲しい機能はB.zipをフォームにD&DをしたときにC.zip,D..zip のAフォルダ内のファイルのすべてをListBox表示に表示させるにはどうしたらよいでしょうか? 最近いろいろやっているのですが、今ひとつ解決できないため、 教えていただけないでしょうか? : [sage] 2017/10/30(月) 22:19:56.32:L79oOSSM TDirectory.GetFilesとExtractFilePath : [sage] 2017/11/02(木) 18:58:25.38:i0GpXesu すみません。エロい方教えてください。 s := 'ABC'#13#10; という文字列を、SJISの16進文字列に変換して、 '4142430D0A' にしたいのですが、やり方がわかりません。 どう書けばよいのでしょうか? : [sage] 2017/11/03(金) 11:14:14.85:e5C3JHXA これか? つ ttp://jump.5ch.net/?http://docwiki.embarcadero.com/Libraries/Tokyo/ja/System.Classes.BinToHex : [sage] 2017/11/04(土) 21:02:07.27:wxgLJQNm D5でよければこんな感じでできるかな procedure TForm1.FormCreate(Sender: TObject); var s, s2: string; i: Integer; begin s := 'ABC'#13#10; s2 := ''; for i := 1 to Length(s) do begin s2 := s2 + IntToHex(Ord(s[i]), 2); end; ShowMessage(s2); end; : [sage] 2017/11/05(日) 18:50:55.45:3iw/MMda Delphi6でできました。ありがとう。 これ、XE5でも動くのかな? : [sage] 2017/11/06(月) 21:01:49.83:MioLsWZJ 自分で試すこともしないのか 試すことができないなら気にしなくてよくないか : [sage] 2017/11/06(月) 21:26:18.10:WbFc3oVf すみません。 気にしなきゃいけない状況です。 で、XE5は今環境がないのです。。。 (仕事場が2つあり、いまXE5がない方に常駐しているので) : [sage] 2017/11/07(火) 07:05:35.29:o3l3MYxT じゃあ行ってから試せ : [sage] 2017/11/07(火) 21:49:52.73:5HoE4QmZ xcode9に対応した? : [sage] 2017/11/23(木) 12:24:47.52:H2oFoVNB firemonkeyって一度置いたコンポーネントって削除できないの? : [sage] 2017/11/23(木) 14:00:39.62:ATmHrlsw そんなバナナ : [sage] 2017/11/23(木) 14:01:03.28:ATmHrlsw 猿だけに… : [sage] 2017/11/23(木) 23:05:31.51:6erWI8jG .┌┐ / / ./ / i | ( ゜Д゜) |(ノi |) | i i \_ヽ_,ゝ U" U : [sage] 2017/11/24(金) 21:05:42.06:dHFHVjxQ imagelistを使うと削除できないみたいです。 選択範囲には継承されたコンポーネント ImageList1 が含まれているため削除できません。. これって返品で金返してくれないかな : [sage] 2017/11/24(金) 22:59:59.51:RyYb1gen うちではそんな現象出ないけどバージョンは? : [sage] 2017/11/25(土) 01:36:58.01:90SL+fWH お前それTFrameの中にあるやつを継承先から削除しようとしてんじゃねーの : [sage] 2017/11/25(土) 08:22:38.33:W59Kilfu すーぐ返金返金言うてからに : [sage] 2017/11/25(土) 09:22:54.97:2E3yXKzA 皆さ、レスありがとうございます。 バージョンは10.2です。 試した感じではボタンだけの貼り付け、削除はできる。 ImageListはListに画像を追加すると削除できなくなります。 その状態になるとボタンの削除もできなくなります。 ImageListの画像リストを削除してもダメです。 Delphiはそんなに触ってないので設定は初期値のままです。 : [sage] 2017/11/25(土) 09:23:27.60:O3o92heE 何か最近ヘルプ表示したままdelphi終了しようとすると ヘルプの終了処理に手間取ってdelphiがなかなか終了しない 心当たりはFCUへのアップデートとMS VisualStudioの再インストールだが... : [sage] 2017/11/26(日) 16:50:58.14:JMtUYhzN firemonkeyで正規表現ってできる? : [sage] 2017/11/26(日) 17:35:26.15:wHZSWh0R できる : [sage] 2017/11/26(日) 18:29:30.48:JMtUYhzN ググったけどdelphiの正規表現しか出てこないです。 サイトとか教えてください。 : [sage] 2017/11/26(日) 20:24:03.68:wHZSWh0R System.RegularExpressions : [sage] 2017/11/26(日) 21:19:52.87:JMtUYhzN 有難うございます。 : [sage] 2017/11/30(木) 11:55:54.04: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には何もかえってこないのです。 : [sage] 2017/11/30(木) 16:38:33.08:af+3x/Ty キーが違うようです。 AppKey='\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras'; : [sage] 2017/11/30(木) 17:26:14.42:jryz1LGC その通りでした。 Reg.OpenKey で戻りを気にしていなかったので、悩み続けてしまいました。 ありがとうございます。感謝です。 : [sage] 2017/12/08(金) 21:17:46.94:Gxx/XJ9D 誰か行かないの? ttp://jump.5ch.net/?https://techplay.jp/event/639177 ttp://jump.5ch.net/?https://techplay.jp/event/641383 : [sage] 2017/12/11(月) 15:09:59.51:r0biDCTF Calender、Japaneseもわかってない人は論外 : [sage] 2017/12/12(火) 16:52:51.98:F4p+lHsn 昔あったdelphiのフリーコンポーネントを集めたサイトって無くなっちゃた? : [sage] 2017/12/12(火) 18:31:07.66:D0b6rm60 古くからのDelphiコンポーネントが全て置いてある アーカイブ的なサイトってないんだろうか : [sage] 2017/12/12(火) 21:12:25.60:ABDe/NWv ふと思ったけどTImageListじゃなく TSoundListコンポーネントってない? 用途はありそうだが てかTImageListってどういう仕組みで 画像を保持してるんだろう : [sage] 2017/12/14(木) 09:04:39.76:XL4elc7V DSPとかtorrysとか懐かしいな : [sage] 2017/12/24(日) 16:19:13.24:dCGOIGeG Tetheringコンポーネントを使ってアプリ間データ共有を試してるんだけど コンポーネントをフォームに置くだけでusesに追加される IPPeerClient/Serverファイルがないって怒られるんだけど Starterだと実はTetheringコンポーネントは使えない? : [sage] 2017/12/24(日) 16:33:23.07:NhonSez5 テザリングの項目がStarterは空欄になってるから多分使えない : [sage] 2017/12/24(日) 19:06:27.16:dCGOIGeG そうだよね だったらTetheringコンポーネントなんか 選択できなくすればいいのに ただSystem.Tether.*.dcuはすべて揃ってるぽいんだよな : [] 2017/12/28(木) 21:34:46.01:JOEtu7v7 質問させてください。 仮想通貨取引所で資産状況を見るプログラムを書こうとしているんですがうまくいきません。 エラーメッセージが、Signature mismatchとでます。 var s,nonce,key,secret:string; PostURL : String; PostStream : TStringList; ResStream : TStringStream; begin PostURL := ' ttp://jump.5ch.net/?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#では以下のように書くらしいのですが、ご教示願えないでしょうか。 ttp://jump.5ch.net/?https://kokenji.net/zaif-api/ : [sage] 2017/12/28(木) 22:07:28.82:ThR79eg8 せめtw署名生成ルーチンくらい書こうぜブラザー たぶんHmacSHA256やとは思うが : [sage] 2017/12/29(金) 07:48:05.15:yZ5IlcO4 ありがとうございます。 SHA256でメッセージ暗号化するってことでしょうか? それとも別の通信するのに必要な処理でしょうか? : [sage] 2017/12/29(金) 08:47:31.32:cWaP921A 仮想通貨って電気代が安い国の人がが圧倒的に有利だよね : [sage] 2017/12/29(金) 11:43:27.38:PDCF/c1K URLから察するにZaifやと思うが、公式のAPIリファレンスまず読もうや リファレンスで書いてる事がわからないなら都度質問したらええ 今の状況を人は丸投げと言う : [sage] 2018/01/07(日) 11:23:55.22:KBdbbCLH 買っとけよ ttp://jump.5ch.net/?https://www.packtpub.com/all?search=Delphi : [sage] 2018/01/07(日) 12:30:45.63:S38kpWyE 漬物石 : [sage] 2018/01/07(日) 13:53:28.81:8Eqg8PLM 自分で太陽光とか風とか地熱とか利用して発電できるならそいつが一番有利 : [sage] 2018/01/08(月) 09:12:47.06:j35IDJ3/ Delphi 10.2 Tokyo で、 ①クラス定義部分で Ctrl+Shift+C を押してメソッド実装部を自動生成すること ②メソッド呼び出し部分でCtrl+クリック で定義部にジャンプすること ができないのですが、できるようにする方法はありますか? : [sage] 2018/01/08(月) 10:28:05.36:2Q7Kliqk ふむ。結局中国が一人勝ちして終わりやな。 : [sage] 2018/01/08(月) 12:45:46.64:ictcT8i6 うちはできるからおま環 ショートカットの設定とか見直したらええんちゃう : [sage] 2018/01/08(月) 18:50:31.06:j35IDJ3/ 俺環とわかり、ありがたし。 サンキュ! : [sage] 2018/01/09(火) 22:26:41.17:tEYlJ576 Starterじゃないの? : [sage] 2018/01/09(火) 23:21:34.37:DSUTqw5a そうです。 Starterです。 無料のやつです。 : [sage] 2018/01/10(水) 22:49:34.96:A/FWCqkf Starterは支援機能削られてる コード補完、ライブコードテンプレート、リファクタリング、コマンドラインツール、コード整形、クラスエクスプローラ、ユニットテスト、翻訳ツールなどの支援機能 コード補完はつけて欲しかったね : [sage] 2018/01/10(水) 22:58:49.24:0V4diR3n そうなんですか・・・ コード補完がないのはキツいなぁ。 : [sage] 2018/01/10(水) 23:22:20.51:52V+kDTj Starterまじでコード補完ないんだww ひでぇww : [sage] 2018/01/11(木) 07:06:55.59:I3euztjG 5年間Starter使ってるけど もう慣れた : [sage] 2018/01/19(金) 14:12:23.13:3mDLycuV fmxで実行時に複数のpanelを動的に作成し その背景を別の色にしたいんだけど 設計時にpanelのカスタムスタイルを変更するのは簡単だけど 実行時に変更する方法が分からない 検索すると質問は結構あるけど 答えは古いバージョン対応みたいで うまく機能しない 誰かヒントをお願いします : [sage] 2018/01/19(金) 15:02:24.17:LVSymK+/ TRectangleマジおすすめ : [sage] 2018/01/19(金) 22:25:43.24:9RJTUZM2 バッチリだった ありがとう : [] 2018/02/02(金) 16:54:03.50: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 := ''; : [] 2018/02/02(金) 16:54:26.34: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; : [sage] 2018/02/12(月) 17:53:30.98:wyyYgDNO Starterにはコード整形というのはないのですか、一生懸命探してしまった(笑) CodeFormatterありがたい! : [sage] 2018/02/12(月) 21:54:05.03:lRsL3DkL LDirはどこで定義されてんだ? : [sage] 2018/02/13(火) 11:15:08.11:Wl4kHNJK メモリー共有が簡単に出来るクラスってある? : [sage] 2018/02/13(火) 20:34:12.21:ZGwVrA8k ググったら、名前付きパイプによるプロセス間通信見つけた。 ttp://jump.5ch.net/?http://francois-piette.blogspot.jp/2013/04/inter-process-communication-using-pipes.html?m=1 使ったことないので、使い心地までは分かりかねます。 : [sage] 2018/02/16(金) 01:22:45.51:W1XJdyx1 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ : [sage] 2018/03/14(水) 17:54:41.12:joCYD0wr 10.2.3出たな でー、インストール時にもインストール後の「プラットフォームの管理」にもAndroidとかiOSのが出ないんだけどどうなってるんや?(Pro Ed. : [sage] 2018/03/27(火) 23:04:26.37:krpCtSiN D6に入れて使ってるIndy10 https対応してたのね。 dllをexeと一緒に置いておくだけ、あちこちで書かれてるIOHandlerを差換えって 必要ないのね。 : [sage] 2018/04/07(土) 17:54:05.06:uobWZe4y すみません教えてください。 長いこと格闘していたのですが、どうしても攻略できません。 ソフトとしてはwavファイルをD&Dでフォームに落とすと、このフォルダー内のファイルをTListBox内に列挙して フォーム落としたファイルをMCIを使って再生させるというものです。 只、落としたファイルをファイルPATHで渡しても何も起こらず苦慮しております。 長いこと何やってたんだと叱責を受けるかもしれませんが、よろしくお願いいたします。 意味のとりにくい文章で申し訳ありません。 ttps://www.axfc.net/u/3901529?key=delphi : [sage] 2018/04/08(日) 14:23:14.02:+Wdeqy0/ ダウンロードはメンド 問題の部分だけでも書いて : [sage] 2018/04/08(日) 16:43:34.30:yiR7WAE6 ダウンロード全然始まんないぞ てかアップローダ選ぼうぜ : [sage] 2018/04/08(日) 19:31:28.65: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; : [sage] 2018/04/08(日) 19:32:04.72: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; // フォルダーパス\なし : [sage] 2018/04/08(日) 19:32:09.74: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; : [sage] 2018/04/08(日) 19:40:43.33: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; 上記のチルダの部分あたりだと思うのですが… どうしてもわかりません。 : [sage] 2018/04/08(日) 21:52:36.23:vzZ5v1M+ 自分もよく知らんので間違ってたらごめん >mciSendString(PChar('open"' + FileName1 + '"type MEPGVideo' + 'alias MusicFile'), nil, 0, 0); 'open"' じゃなくて 'open "' ではないだろうか コマンドの後に空白スペースが無いって事ね typeやaliasの前にもスペース無いけど : [sage] 2018/04/09(月) 02:34:30.98:8Wv+Mi08 これってかなり前にも指摘したような気がするが... まずはTEditをForm上に置いて実行時に TEdit.TextにPChar(...)の...部分をそのまま代入してみな それで問題なかったらMCIに送って : [sage] 2018/04/09(月) 07:55:25.96:qLOACt12 レスどうもです。 以前FileListBoxで作ったときのものをそのままD&D時のパスを含むファイル名を渡しています。 TEditに代入しても動きません。途方に暮れています。 何年か選択したListBox ItemからMCIに渡す方法を探してますが、どうしてもわからないままでいます。 上に上げたロダはリロードするとファイルが落ちてくるようです。 お忙しいとこrとすみませんがよろしくお願いいたします。 : [sage] 2018/04/09(月) 08:07:09.81:3dFP9zTK aliasの前に半角スペースがない これじゃあMpegVideoAliasとか意味不明なtypeになる上にaliasが認識されないからMusicFileというaliasが未定義のまま渡される : [sage] 2018/04/09(月) 08:11:51.43:3dFP9zTK さんが指摘してるのはTEditに入れて表示された文字列が正しいコマンドかどうかチェックしろって事であって、代入したら動くんじゃないって言ってるわけじゃない : [sage] 2018/04/09(月) 12:39:00.80:BwdfepzG FileName1のスコープが問題何じゃねーの? : [sage] 2018/04/09(月) 15:46:39.00:sAzU0iCB こんなやっつけ仕事みたいなコードだと、何やってもダメだと思う : [sage] 2018/04/09(月) 15:48:10.00:qLOACt12 さんの指摘を受けLabelに命令を代入しましたが、確かにおかしい命令を吐き出していました。 open ""type MEPGVideo alias MusicFile こんな表示をしています。 FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。 私個人の予想では、ListBoxからうまくファイルのPATHを含むファイル名がうまく取得できていないためではないかと考えているのですが… : [sage] 2018/04/09(月) 15:52:07.60:3dFP9zTK 何が正しいのか正しくないのか、正しくないのは変数の中身なのかコードなのか渡し方かなのか、それとも別になにかなのかを探したら解決できる 正しいと思い込む前に確認する癖をつけましょう : [sage] 2018/04/09(月) 18:30:51.81:BomKXXDR >FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。 あちこちで参照するってことは procedure TForm1.FilesDropped(var Msg1: TWMDropFiles); で使われている FileName1:と procedure TForm1.PlayBtnClick(Sender: TObject); で使われている FileName1: は同一のものということにしたいんだろ? それぞれのプロシージャでFileName1: string;って宣言してたら「あちこちで参照する」ことは出来ないぞ >Private 宣言部で定義させています。 とりあえずそれはそのまま、TForm1.FilesDropped()とTForm1.PlayBtnClick()の中で宣言しているFileName1: string;を消す : [sage] 2018/04/09(月) 18:57:48.34:BomKXXDR やっとソース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なんてのは関数内の一時的な変数として宣言しがちだと思うので : [sage] 2018/04/09(月) 19:52:13.89:gH9PL+mq やっつけ仕事に見えますか… これでも知恵絞って作ったものですので…。 いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、 メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。 アドバイスいただいた皆様ありがとうございました。 MCI諦めてSndPlaySound()を使うことで一応当初の目的は達成されました。 FileName1を掃除してSndPlaySoundのファイル名はFileName1を直接渡しました。 SndSoundPlayer()はmp3とかだめそうな気もするので、 MCIを直打ちしなければならないかもしれません。 : [sage] 2018/04/09(月) 20:33:17.20:luHmX43j メディアプレーヤーコンポ使えばmp3ほかいろいろ再生できますぜ : [sage] 2018/04/09(月) 22:09:32.86:qcsBHwDv >いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、 >メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。 わからないなら参照して勉強するのもいいけど「流用」するだけじゃ何年経っても自分の物にはならないよ ちゃんと使い方を理解して自分のコードに治さないと そうすれば変数かぶったりするのも避けられる あと変数は少々長くなってもあとで自分が見てわかるもっと意味のある名前にした方が読みやすくなるよ : [sage] 2018/04/09(月) 22:24:15.00:8Wv+Mi08 触発されて自分も作ってみた...ただFireMonkey版だけど 基本的な部分はMacOSでも動くと思う ttp://jump.5ch.net/?https://1drv.ms/u/s!ALhSqBFVHu2ZzRg 前からTDropTargetを使ってみたかっただけなんだけど : [sage] 2018/04/09(月) 22:25:36.16:tj7dSTW0 この話題長いねぇ ずーっと解決してない気がするw : [sage] 2018/04/10(火) 07:46:44.60:M1dLQsHI 野球選手やサッカー選手に向いてるやつと向いてないやつがいるように プログラマーにも向いてるやつと向いてないやつがいる : [sage] 2018/04/10(火) 09:28:59.45:8aH9jq04 なかなか良い センスあるな : [sage] 2018/04/10(火) 17:57:58.95:ixHiVr8M シンプルで必要十分な情報がまとまっていました。 このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、 細かい文法事項などはどこで習得されたのでしょうか? ずっとコンパイラーを使っていたのではなく、新しい攻略できたかもと散発的にいじってました。 本当に作りたいアプリがあるので、ご迷惑とは思っていますが、未だに食いついています。 リモコンで制御したいのと、巻き戻しがサポートされていれば、多分ここまでしつこくはなかったかもしれません。 : [sage] 2018/04/10(火) 20:26:01.63:n/L+8J/R >このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、 >細かい文法事項などはどこで習得されたのでしょうか? 勘とノリと勢いとGoogle先生 : [sage] 2018/04/10(火) 21:56:04.81:7q8c2f4e 巻き戻しってもしかして逆再生? そりゃハードルが高すぎないか : [sage] 2018/04/10(火) 22:06:00.62:BUevE+bD VCLソース : [sage] 2018/04/11(水) 07:06:25.31:Ma7OFF0j リモコンって以前はMediaCenterが対応してたね Delphiで今やるんだったら TTethering使ってスマホから操作かな : [sage] 2018/04/13(金) 00:04:40.08:QwQUx8hW @pikさんて何者なの? 本当にすごい人なの?実力あるの? なんか言ってることが胡散臭いんだけど : [sage] 2018/04/17(火) 14:33:30.73:eYOCf7bm 直接本人に言えよ。陰湿な奴だな。 : [sage] 2018/04/18(水) 21:20:13.42:MII0lz02 すいません。教えてください この前の続きです。 D&D(例えば9.wav)をしてListBoxにフォルダのファイル一覧が抽出・表示されますが、 D&Dしたときに9.wavをハイライトさせるにはどうしたらいいでしょうか? ハイライトをさせないとMCIエラーが出てしまいます。 ファイルですが、 ttp://jump.5ch.net/?https://mega.nz/fm/KbRmkKiL よろしくお願いいたします。 : [sage] 2018/04/19(木) 21:05:53.19:bgRnFwFv 現状でやりたいことは、送るで起動して音声ファイル(以下.wav)を再生させることです。 1.とりあえずアプリを起動させる 2..wavをD&Dでフォームに落とす 3.すかさずListBoxにカレントフォルダのファイルを列挙させる 4.D&Dで落とした.wavにハイライトさせる 5.自動的に.wavの再生開始 現在4でつまずいています。 .wavを送っても起動するだけで、ListBoxに反映されません。 ここがくクリアできれば拡張子連動も可能だと思いますが・ : [sage] 2018/04/21(土) 23:15:17.71:57zLglLu ログインしなくちゃいけないみたいなので落としてないけど 「ハイライトさせる」ってファイルを選択状態にするってことね? (プログラムする人間として質問するなら入門書なりを一冊通読してもう少し的確な言葉を憶えましょう) ListBox.Selected[Index]:=True;(選択状態) 「9.wav」が例えば3番目ならIndexに「2」を入れます(ゼロスタートなので) 一番目のファイルなら「0」です とりあえず試しておこうとDelphi5でやると範囲外エラーでますね ListBox1.Selected[1]:=True; これだけで Delphi2009だと問題ないのに?(**)? : [sage] 2018/04/22(日) 09:43:57.64:/aj/ysEy ListBox1.ItemIndex := ListBox1.Items.IndexOf('9.wav'); : [sage] 2018/04/22(日) 20:19:04.99:1p2Tkusj なるほどなー ListBoxとかもうずいぶん使ってなかったから忘れてたわー : [sage] 2018/04/25(水) 06:26:09.01:LyLCajq/ ハイライトではなく選択した(された)アイテムと表現すべきでした。 無事選択状態にすることができました。 別の問題で送るとD&Dが併用できない問題に苦慮しています。 (送るだとListBoxに反映されますがD&Dだと反映されない。) おそらく列挙の問題だと思いますが、今困っています。 以前作ったソースがすべてHDDのクラッシュで消えてしまったため どうしたらいいのかもわかっていません。 自分自身で調査をしますが、よいアドバイスいただければ幸いです。 不評でしたが、ロダを ttps://www.axfc.net/u/3905770?key=delphi 皆さんはDelphiの知識はどうやって得られましたか? コンパイラを使ったのが数年ぶりだとか、いいわけにはならないのですが やりたいことができずに悶々としています。 例えば、プログラミングバイブルを読破するとスキルが得られたりするものなのでしょうか? こちらもアドバイススをいただけますと幸いです。 : [sage] 2018/04/25(水) 08:14:31.72:iILk6Jpy もう仕様書作って金出してコード納品してもらった方が速い : [sage] 2018/04/25(水) 10:12:58.53:KojXazHw アドバイスも何も.... D&Dで取得したファイル名を そのメソッド内でのみ有効なローカル変数に代入して終わりなの? 変数のスコープを理解してないのかな てか、いろんなサンプルを参照して利用してるが 意味も分からずやってるでしょ 他人のコードを利用するなら まずそのコードを理解しようと努めないと 永久に進歩はないね : [sage] 2018/04/25(水) 10:43:12.40:8p1Sd4ST >(送るだとListBoxに反映されますがD&Dだと反映されない。) D&Dを受け取る WMDropFiles 内にListBoxに反映させるコードが無いんだから反映されるわけが無い : [sage] 2018/04/26(木) 18:55:25.51:fqEKBH7q 動くまでいじくり倒すしかない。なんで動かなかったのかわかるまで調べる : [sage] 2018/05/05(土) 11:10:08.17:pQ8nw+O2 ListBoxへの反映の仕方が分かったので対処ができました。 ですが、曲名を集中管理している変数にLtstBoxのアイテムを代入しようとする StringtoTstringに互換性がありませんと表示され、他の曲への反映ができません。 聞くところによれば、ポインタの知識とオブジェクトへの深い理解が必要だと聞きました。 コメントをいただければと思いいます。 ttp://jump.5ch.net/?https://www.axfc.net/u/3908351?key=delphi 本当にポインターの知識が必要ならアプリを作るのには時期尚早なのかもしれません。 よろしくお願いいたします。 : [sage] 2018/05/05(土) 13:26:16.48:vbsrC7NJ こんな文字列処理メインのコードにポインタの出番はないでしょう ListBoxの選択項目を取り出すのは、あなたがに書いている通り 問題はListBoxに追加した項目が保持してる内容 ファイル名? パス付き? あと老爺心で言うんだけど、メインの部分がまったく機能してないのに サブの部分を追加してるのはどうかと 全体の見通しが悪くなるだけだよ ドラッグ&ドロップと音量関係のルーチンのない状態で ListBoxの内容を完璧に再生できるように 新規プロジェクトから始めたほうがいいよ : [sage] 2018/05/07(月) 08:05:08.09:bSchYp3+ ありがとう。C#で作り直すことにします。 : [sage] 2018/05/07(月) 18:43:31.79:RryMz2og そうきたか www : [sage] 2018/05/23(水) 05:43:33.84:IzxjocGr TString型からString型へのキャストはどうしたら良いのでしょうか? ずっとここで詰まっています。 コンパイラにはString型とTString型には互換性がないと怒られ Listbox.item.text みたいな感じにするとString型へ文字列が渡せません。 色々ネットで調べてみましたが、何か今ひとつ分からないままでいます。 : [sage] 2018/05/23(水) 07:25:01.52:IzxjocGr 上の質問はスルーしてください : [sage] 2018/05/23(水) 20:23:05.77:yohLywXT 本当か?本当にTStringとStringの違いがわかったのか? : [] 2018/05/23(水) 20:31:59.75:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 401Z3 : [sage] 2018/05/24(木) 00:26:07.03:X0Vr2UrM 何年間も同じとこクルクル回って進歩してないな : [sage] 2018/05/24(木) 07:41:50.56:Xlbr0a9V 本当は分かっていません。 ただ、もう少し試行錯誤が必要だと判断しました。 TstringからStringに渡すのはそんなに難しいとは思えないのですが……。 コンパイラをいじっている時間があまりなくて 今回も数年ぶりに(昔このスレで正月に作ったメディアプレイヤー)触ってますので 進歩してなくて、さっぱり分からないことが相変わらず多いです。 : [sage] 2018/05/24(木) 07:51:45.33:UDepo1QV 値、配列、値のリストという概念があるとして stringはどれで Tstringはどれにあたるか分かる? : [sage] 2018/05/24(木) 09:38:32.78:3hrzymd4 "Tstring"という言葉が気持ち悪いので、そろそろ訂正してくだいませんか? : [sage] 2018/05/24(木) 09:47:02.42:1QuFgEhD あのな、良いこと教えてやる 一番薄い「言語ガイド」というマニュアルがあるからそれ読め 最初の1ページ目から最後のページまで全部読め 判らなくても良い、難しくても良い、とにかく1冊全部読め 読み終えた次の日から、きっと新しい世界が見えるはず 読まなきゃお前さん、一生そのままだぞ : [sage] 2018/05/24(木) 12:22:44.13:2pfDia9X TStrings String型 TStringList AnsiString UTF8String・・・等々 いっぱいあるね : [sage] 2018/05/24(木) 17:31:30.64:Pn5Zd5T4 名前が似ていても型が違うなら別物として考える 別物でも異なる型への変換方法が明示的に設定されていれば容易に渡すことが出来る TStrings と String は別物 じゃあTStrings から String に明示的な変換方法が設定されているのか?を調べれば解決する ヘルプを起動しTStringsと入力しろ そして戻り値がStringになっているメソッドを探せ どうでもいいことなんだが名前欄に自分のレス番号を入れるのは現在進行している質問の最初のレス番号を入れるべきだと思うんだ 今回のケースなら447ではなく505だな そうすることで主題となる質問を見ることが出来て、また辿ることが出来る : [sage] 2018/05/24(木) 18:32:52.16:Pmzmf4Ca 普通に教えてやりゃいいじゃんか sがついてるからstringが複数扱えるクラスなんだろ? 男のくせにチマチマ、ネチネチ、そりゃお前らは一生結婚できねぇわw : [sage] 2018/05/24(木) 18:38:26.23:Pn5Zd5T4 で、お前は何で教えてやらないの? : [sage] 2018/05/24(木) 18:43:41.36:NEzd0Nja 本人だからさ : [sage] 2018/05/24(木) 20:03:35.81:hm+d4/Zn はいはい まあ聞きまくるやつにも問題はありそうだが、 狭い世界のちんこい知識でどんだけ上から目線なんだろね : [sage] 2018/05/24(木) 20:16:15.75:Pn5Zd5T4 あー そんなことを書くぐらいなら510に教えてあげればいいんじゃないの? しょせん目くそ鼻くそなのに、ずいぶんと上から目線だねw : [sage] 2018/05/26(土) 04:35:23.77:4prcmauu 昔言語ガイド印刷してたのを忘れていました。 今読むと昔は分からなかったことが分かるようになってきました。 プロジェクトを作る前に最後まで読んでみます。 そう複数なんですよね!だからListBoxでindexで数字でターゲットを選べると言うことに気がつきました。 読みにくい文で済みません。 TStringで検索かけたところ膨大な数のメソッドが出てきて 悩んでいます。 まずは大事なことがたくさん書いてある言語ガイドをよく読んでから理解してから 再チャレンジします。 レスしてくれた皆様ありがとうございました。 : [sage] 2018/05/26(土) 16:36:32.52:ZcCwZUbS だから TStringじゃない TStrings : [sage] 2018/05/27(日) 06:51:35.56:6aP994kT >522 TStrings ですね。 複数のStringを束ねられるのでindexの数字で必要なオブジェクト(!?)を選択できるのですね。 今はプロジェクトを中断して言語ガイドを熟読しています。 今までで分からなかったことがしっかり書いてあるので 安易に入門書を読む前にこっちを読むべきでした。 : [sage] 2018/05/27(日) 18:56:00.45:tt6kkd8K 初心者にはDelphi6あたりのHelpがいいんだけどな 最近のHelpは不親切で、基本がわかっていない初心者には使いづらいだろうなと思う : [sage] 2018/05/29(火) 12:30:34.30:1O3tJEYz 頑張れ‼ Nでも最初はなんも知らんからね ちゃんと覚えていろんなもん作れるようになってね : [sage] 2018/05/29(火) 16:35:28.22:kxbaWIuP 何年「最初」を繰り返してるのだろうかー : [sage] 2018/05/30(水) 07:03:11.11:2jnt+z5e Delphi6買っとけば良かったなと思っていたら、初心者の入門書に収録されていました。 早速インストールしてみます。 ですが、皆様はシステムライブラリのヘルプを見て手続きや関数などを覚えたのでしょうか? 職業はコンピューター関係でなく、時間が空かないとコンパイラを使うのも 厳しいために今回は5年ぶりくらいにコンパイラーいじっていますので 最初になってしまいます。 普通こんだけ叩かれたらプログラミングを諦めてしまうと思いますが、 双六ゲームがどうしても作りたいのでかじりついて離れずにいます。 : [sage] 2018/05/30(水) 10:34:14.77:1AWKUtm2 叩かれるのはどれだけ親切丁寧に説明しても同じ場所を延々ぐるぐる回り続けてるからだよ : [] 2018/05/30(水) 14:51:11.60:240M2quP ほんそれ 話聴かない奴は叩かれる : [sage] 2018/05/30(水) 17:57:51.44:QhoQOR8g >Delphi6買っとけば良かったなと思っていたら、初心者の入門書に収録されていました。 本の名前教えて。 俺もDelphiのHELP欲しい。 : [sage] 2018/05/30(水) 20:16:26.04:lZ3vVAou 、 MCIさんでしょ? オーディオプレーヤは諦めて双六ゲームにしたの? : [sage] 2018/05/30(水) 20:52:42.12:lZ3vVAou 下のURLの「Borland Delphi 6 ドキュメントアップデート #1」って ダウンロードしたら使えるんじゃ? もっとも .hlp はWindows10とかだと、そのままじゃ読めないと思けど ttp://jump.5ch.net/?http://support.embarcadero.com/jp/article/35932 : [sage] 2018/05/31(木) 00:53:55.84:Rz8G1qx4 このアップデートファイルは、Delphi 6 のライセンスユーザー向けに提供されるものです。 このファイルの使用に関しては、製品に同梱されたソフトウェアご使用条件に準じます。 : [sage] 2018/05/31(木) 00:56:10.16:KiYT67Xx ナンセンスなラ(略) : [sage] 2018/05/31(木) 02:41:36.75:LeDqx/cu アップデートファイルを単独で使用するなってこと? そもそもdelphi 6 personalってフリーなんだから その程度はいいんじゃない? : [sage] 2018/05/31(木) 12:29:07.06:tuQW1gq3 この人まだいるんだね(笑) : [] 2018/05/31(木) 15:12:07.71:LXR1oL3d オマエモナ : [sage] 2018/05/31(木) 17:49:48.89:NnA31TPO Unicode 正式対応したのは どのバージョンから? : [sage] 2018/05/31(木) 19:52:10.32:OiZlt55G ありがとう! : [sage] 2018/06/01(金) 04:16:23.59:5fSTAWJb MCIいじってますよ。 ただ今は、TStringsと戦ってます。 そうですね。 理解が追いついていかない。ふがいないなぁ。 : [sage] 2018/06/01(金) 07:07:59.62:tZOiVGE0 2009じゃね? : [sage] 2018/06/01(金) 08:17:03.08:AldthANR string型のutf8化は2009から。 ucs2程度やwidestringであれば、少なくともdelphi7でも使えてる。 : [sage] 2018/06/01(金) 12:06:09.39:JGYXEwwz 結局 >今回は5年ぶりくらいにコンパイラーいじっていますので 5年ぶりとかやる気ないだけだから教えるだけ無駄。 : [sage] 2018/06/01(金) 12:13:27.24:VRiSWYxK てか5年ぶりじゃないだろ 去年の夏も散々質問してたし その1、2年前も来てたし 思うに、やるときは集中的にやって初心者脱出しないと 永遠に初心者のままだろ : [sage] 2018/06/05(火) 19:54:37.86:FLappK2N 直そう直そうと思っている毎日使っている自作ソフト、最後にビルドしてからまもなく10年になるわぁ : [sage] 2018/06/05(火) 19:55:52.87:FLappK2N 違った、2005年なので13年経過。。。 : [] 2018/06/06(水) 10:45:41.05:I9hgDbEz 痴呆が始まってるな : [sage] 2018/06/07(木) 09:31:17.03:jM1yTm2r Delphiに直結する話題じゃないけど ちょっとお知恵を貸してください 公開してるDelphiで作ったツールがあるんですが ツール内にサポート用の掲示板みたいなのを実装したい 方法としてどんなのが考えられる? やっぱ最低でもcgi使えるサーバとか必要? : [sage] 2018/06/07(木) 10:03:50.30:kW6Y240R 1.適当に掲示板スクリプトを設置してTWebBrowserで表示 2.BaaS使ってRESTでやり取り 3.SQLにFireDACで直接接続 4.WindowsVPS(Linuxに吐けるならLinuxでも可)でDataSnap 好きなのをどうぞ : [sage] 2018/06/07(木) 17:01:17.95:LERUY47Q まあ書き込みを送信する場所と書き込まれたものをダウンロードできる場所は必要だろう サーバ借りなくても個人が固定IP契約しているならそのIP宛にすることも出来るし 固定じゃなくてもダイナミックDNS使えるルータとか使っているならそれを利用するのも手 適当なレンタルサーバでも月2000円も掛からないからそういうの使うのがベストだけど というかしたらばあたりにスレ立ててそこを表示するようにするのはどう? 5chと違ってAPIいらんし : [sage] 2018/06/08(金) 07:49:33.51:IKKgq9UT cef4delphiがよいよ : [sage] 2018/06/08(金) 20:17:07.49:pOKoirVi レスが遅くなりました やっぱそんな感じですよね 配布サイトはcgi使えないのでレンタルサーバか自宅サーバですよね したらばはスクレイピングが可能だったらいいかも あとは、データは配布サイトに置いて投稿はメール経由かな : [sage] 2018/06/08(金) 22:02:43.94:lHspdop6 P2P : [sage] 2018/06/08(金) 22:45:08.12:pOKoirVi よく考えたら、したらばはスクレイピング不要で 旧2ちゃんと同じでdatファイルを直接ダウンロードできるんでしたよね したらばにしようと思います p2pは理想だけど、開発側も利用者側も障害が大きすぎるような : [sage] 2018/06/09(土) 16:37:47.65:OTGz0P8v delphi10.2を使っています。 ActiveXのコンポーネントを追加するのにdclusr.dpkをあらかじめインストールしようとしても dclusr.dpkが正しくないとかのエラーが出てしまいます。 dclusr.dpkって他のPCに入っている同バージョンのものをコピーしてもいいものでしょうか? : [sage] 2018/06/09(土) 18:48:08.83:TA6PWthw 全然的外れとは思うけど delphiを管理者権限で起動してる? : [sage] 2018/06/10(日) 06:13:38.25:5M4DtSyO 確認してみます。 コピーしようとしたpcはすんなり出来たので管理者とか気にしてませんでした。 ありがとうございます。 : [sage] 2018/06/14(木) 03:02:30.74:DH9ZUtSo めっちゃ便利になった sc7b & i:: ; Ctrl+無変換+iでbeginを上方検索 ImeOff() if GetKeyState("Ctrl", "P") { send,^k8 send,^qfbegin{enter} send,^q8 send,^+l send,{home} } else send,{up} return sc7b & k:: ; Ctrl+無変換+kでendを下方検索 ImeOff() if GetKeyState("Ctrl", "P") { send,^qfend{enter} send,{left}{right} } else send,{down} return : [sage] 2018/06/18(月) 18:42:12.53:77QANGdm Indyのヘルプについて教えてください delphi 10.2.3を使っていて、IndyのIdCookieを使うのにヘルプを見たんですが どうも自動補完される項目とヘルプの内容が一致していないみたいです 事実、古いネット上のサンプルでもpropertyなどが認識できないと エラーが出るんですが、ヘルプにはちゃんと記載されています もしかして、ヘルプの内容がかなり古い? : [sage] 2018/06/18(月) 20:26:49.62:ZzCpcYem ここからダウンロードとすといいよ Delphi についてくるのよりは新しいと思う ttp://jump.5ch.net/?https://code.google.com/archive/p/indydocs/downloads : [sage] 2018/06/18(月) 22:25:05.80:/oEGnL5/ Indyはしょっちゅう引数とか変えるからねー : [sage] 2018/06/18(月) 23:30:03.81:77QANGdm ありがとう 早速ダウンロードしてみます : [sage] 2018/06/19(火) 07:23:03.75:O7MJlrFZ Delphi 10.2.3に付属しているIndyのヘルプのバージョン 10.1.5 に書いてあるところにあるやつは 10.5.8.3だね 10.1.5のヘルプは、実際にバンドルされているIndyとではいろいろと 違っている部分があるんで使えないんだよね エンバカはよくこんな状態で製品として出してるもんだと思う まぁIndyの公式Webページにあるヘルプが更新されずに放置状態なせいでもあるんだろうけど : [] 2018/06/26(火) 00:47:37.41:6Sxd5pS5 OutputDebugString(v: TValue); みたいなのを作りたいんですが vが配列だろうがレコードだろうがクラスだろうが文字列化するサンプルコードがあったら教えてください : [] 2018/06/26(火) 00:50:21.65:6Sxd5pS5 バージョンはXE8でお願いします : [sage] 2018/06/26(火) 20:07:40.02:Q/OTN/qp オブジェクトと普通の変数はさすがに分けないとな : [sage] 2018/06/27(水) 08:33:51.96:LwNwDPPb case VarType(バリアント型) of varNull: ~; varSmallint,varInteger,varshortint,varByte, varword,varlongword,varint64,varqword: ~; varSingle,varDouble,vardecimal: ~; varBoolean: ~; varArray: ~ else ~ end; みたいなのはどうか : [sage] 2018/06/30(土) 19:57:18.53:BMGfbdyk fmxのlistviewで遊んでんだけど 各Itemの高さがvariableだと ScrollToが正しく機能しないな てか希望する行にプログラムでジャンプできない これって... : [sage] 2018/07/01(日) 20:45:39.22:UjvaLsGV 昨日からずっと悩んでたんだけど原因が分かった Itemを追加した直後にScrollToを実行していたのがマズかった というのも個々のItemの高さの計算をUpdateObjects イベントで行っているので、いったんシステムに制御を戻して すべてのItemの高さを計算させた後でないと ScrollToを正確にできないじゃないかと : [] 2018/07/04(水) 22:07:10.80:gFgZc5FG CMY : [sage] 2018/07/05(木) 16:32:14.16:AeL6VB/V CMY : [sage] 2018/07/07(土) 01:05:29.30:/e+lZ8Kj lヽ ノ l l l l ヽ ヽ )'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l / C | | |/| ハ / / ,/ /|ノ /l / l l l| l C ヽ l ・ iエ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ / | M l トー-トヽ| |ノ ''"エ` rー-/// | M | | ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ | | Y | | l | ヽ, ― / | | l Y | | !! | / | | | ` ー-‐ ' エ|| ,ノ| | | !! | ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ / / ノ⌒ヾ、 ヽ ノハ, | ,/ ,イーf'エ /エ \ | ,/エ |ヽl | /-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l ,/ | ヽ \ _,ノーf' エ ノノ ヽ | | 、_ _ ‐''l `ー‐―''" ⌒'ー--‐'エ`ヽ、_ _,ノ ノ  ̄ ̄ | /  ̄ : [sage] 2018/07/11(水) 10:51:05.84:nmWNYHAt 炎猿でwindows以外のOSアプリ開発している人にお聞きしたいのですが、スマフォとかがアップデートされた場合動かなくなるとか、デバッグ出来なくなるとか不都合はないですか? : [sage] 2018/07/11(水) 17:39:18.30:nuZ0aS+z ドラクエにいそうだな 炎猿 : [sage] 2018/07/11(水) 21:49:54.77:r5yaKwaw まぁそんな致命的そうな問題あるなら既に話題になってるだろう。それぐらいの信仰心ないならエンバカ製品使わない方がいい。 : [sage] 2018/07/11(水) 22:54:26.92:ybpsmMVD そうとも言い切れんから困る : [sage] 2018/07/13(金) 07:31:46.74:cjGt1E8J OpenGLが枯れてるからあまり心配なさそう : [sage] 2018/07/13(金) 07:36:27.90:qQhJFZKh AppleはMetal必須化するけどちゃんとコンパイラ出してくれるのかな : [sage] 2018/07/13(金) 19:21:29.08:I/E3+gDF OpenGLから、Vulkanに移り行きそうな流れだし、Androidもサポートしてるから、安泰とは言えないかも・・・。 : [sage] 2018/07/15(日) 07:23:54.92:DmBJj22K 以前作ってたメディアプレイヤーですが、あるていどは出来上がったのでご評価いただければと思います。 ttp://jump.5ch.net/?https://www.axfc.net/u/3921358?key=delphi 今のところ.wav限定です。 既知の不具合 notfyを自前で無理矢理作っていて機能していない トラックバーで自由にスライダーが動かせない(経過時間の方) よろしくお願いいたします。 : [sage] 2018/07/15(日) 07:24:30.45:DmBJj22K 以前作ってたメディアプレイヤーですが、あるていどは出来上がったのでご評価いただければと思います。 ttp://jump.5ch.net/?https://www.axfc.net/u/3921358?key=delphi 今のところ.wav限定です。 既知の不具合 notfyを自前で無理矢理作っていて機能していない トラックバーで自由にスライダーが動かせない(経過時間の方) よろしくお願いいたします。 : [sage] 2018/07/17(火) 12:02:31.20:XXadd0Qe D6です。 既存の .dll を調べて exports 関数の受け渡しの型やパラメータを知るやり方はありますか? 昔の物で ナビンユーというパソコン用ナビソフトがあって、 それ用に市販GPSレシーバーと繋ぐ .dll を過去有志により幾つか作られてフリー公開されていました。 当時はWin95-98全盛からWin2k~xp以降期ほどで COM ポートが1~6番?まで ボーレートも9600bpsまでというOS?の制約を引きずってさらに 4800bps固定のTokyo測地系(日本ローカル)という物で ニフティサーブも終わり多くのフリーツールと共に作者さん達も消えていきました。 年数が過ぎ、性能も良く価格もお手ごろ感なGPSロガー兼GPSレシーバーが巷に溢れると 今度は通信速度が9600bpsが最低クラス機種、良い物は 38400bps や 57600bps で WGS84測地系(世界基準) なんてものでして それらを使うには、 D7環境用で公開されていた TComPort という COM 1~256 ポート番号、300~256000bps までのフリー物があり入れて 自作の高速COMポート←→低速COMポート受け渡し&測地系座標変換プログラム と 仮想COMポートを使ってました。 接続がそうとう手間で使用はお蔵入りに・・・。 最近になって dll の作成を思い立ち 要は、TComPort を使って自作の .dll が作れないものかと .dll の exports 関数名に関しては、ResHacker というフリーツールで GpsdevClose GpsdevGetSupportedDevice GpsdevOpen GpsdevSetGeodeticSystem GpsdevSetInitialPosition この5つということは確定しています。 適当な型で宣言してコンパイルしてダンプリストで比較してみましたが分らず・・。 一応入手していた公開最終版の.dllを2種類zip圧縮でUPしておきます。 ttp://www1.axfc.net/u/3921897.zip KNLink の方はDelphiで作られているそうです。 誰か型が分れば他の有志が開発しやすい用に晒してくださるとありがたいです。 : [] 2018/07/17(火) 14:50:49.28:+kxKOOfA ttp://jump.5ch.net/?https://msdn.microsoft.com/ja-jp/library/67wc07b9.aspx ttp://jump.5ch.net/?http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=257 ttp://jump.5ch.net/?https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_61/rzaik/rzaikapigrphdrfile.htm ttp://jump.5ch.net/?https://forum.dlang.org/post/mailman.637.1295116422.4748.digitalmars-d-learn@puremagic.com ttp://jump.5ch.net/?http://bcbjournal.org/articles/vol4/0012/Using_Visual_C_DLLs_with_CBuilder.htm : [] 2018/07/19(木) 07:25:14.70:tvMjHs4f Introducing Delphi and C++Builder Community Edition ttp://jump.5ch.net/?https://community.embarcadero.com/blogs/entry/introducing-delphi-cplusplusbuilder-community-edition Community EditionをDLしようとレジストの際に電話番号ではじかれます なにか方法があるのでしょうか? : [sage] 2018/07/19(木) 07:36:15.48:KPlplAON ログインしてからダウンロードすると良いかもしれない : [] 2018/07/19(木) 07:44:26.16:tvMjHs4f thx 出来ました : [sage] 2018/07/23(月) 12:35:10.41:TMDKKbFQ firemonkeyでWindowsとAndroidアプリを作るとき SpeedButton用の画像のサイズって どのくらいにすればいいの? StyleLookupにないんでGoogleのフリーアイコンを 使おうと思ってるんだが : [sage] 2018/07/23(月) 19:47:13.97:ZNsXOfsj Dependency Walker ttps://www.off-soft.net/ja/software/develop2/depens.html と Visual Studio 付属 dumpbin というのでも関数名だけしかワカンネ ILSpy_Master_2.3.0.1827_Binaries 起動できない。 Visual Studio 付属 Ildasm もダメっぽい。 暑くてなーんも進まない : [sage] 2018/08/04(土) 01:10:32.25:9xoPwG77 DLL調べるならデバッガで追いかければいいんじゃない? OllyDbgとかで : [age] 2018/08/04(土) 10:03:56.88:pEPpCry/ 質問です。 他言語の計算式が解らず置き換える場合のデルファイ式はどういう構成になるのでしょうか? えぬじーだらけで書き込めないのでソース含んだテキストのアプロダアドレスは以下に書いています。 ttps://agree.5ch.net/test/read.cgi/mango/1532726276/389 ひっかかりだらけで掲示板が使いにくくなってますね。 マンゴー板絞り込みスレを経由すれば書けるということだね : [sage] 2018/08/05(日) 07:09:51.51:lCE2SUhO めんどくさっ : [sage] 2018/08/05(日) 07:22:17.73:lCE2SUhO 今見てみたけど4バイトの浮動小数点数と各バイトの相互変換だよな 共用体使えば式は不要だと思う 可変長レコード(だっけ?)で検索 : [sage] 2018/08/05(日) 07:39:19.78:33CDKMsR Delphiで書けないんだったら、日本語で何がしたいのか書けよ。 Perl語なんて俺は知らんから。 f: single; f := StrToInt( '$'+ '4D' ); で, fに77が入る。 int -> sigle は暗黙の型変換でいけるが逆は要関数呼び出し(キャスト禁止)。 : [sage] 2018/08/05(日) 12:50:09.31:gWGunr7x >592-583 ややこしくてすみません。 ttps://agree.5ch.net/test/read.cgi/mango/1532726276/496 "> ttps://agree.5ch.net/test/read.cgi/mango/1532726276/496 ↑元ソースあどれすも記載しました。 : [sage] 2018/08/05(日) 22:33:28.02:gWGunr7x どうやら>590 先のサブルーチンはズラして60進法座標にしてるだけのようです。 バイナリ読み込んで浮動小数点数にするパールの変換方式がまださっぱり分りませんが、適当にがんばります。 Delphi の Single ~ Extended とか浮動小数点数を16進バイナリに直接相互変換みたいな内部関数ってありましたっけ? 現状D7でIEEE754-SingleとDouble は外部関数で使っていてそれだけでかなりサイズが大きくなってしまう。 浮動小数点型の数値はメモリ上でどのように格納されているのか C C++ 2. 浮動小数点型の値のメモリ上での並び ttps://qiita.com/nia_tn1012/items/340a1f0ad71bf6085f7f 元の値 : 1.024000 内部表現の値 : 3F83126F ↑ この例では、IEEE754-Single でした。 IEEE754 単精度浮動小数点数(float)の文字列とかいろいろ入れても ただの整数になるようですが? var f: Single; begin Edit_Single.Clear; if (Edit_IEEE754_HexSingle.Text <> '') and (StrToIntdef('$' + Edit_IEEE754_HexSingle.Text,-1) <> -1) then f := StrToInt( '$'+ Edit_IEEE754_HexSingle.Text ); Edit_Single.Text := FloatToStr(f); end else Edit_Single.Text := '入力エラー'; end; : [sage] 2018/08/05(日) 22:36:47.70:gWGunr7x >595 パールスレでの名前欄 「427です」 がそのまま入ってしまいました。 です : [sage] 2018/08/27(月) 09:41:49.47:UfmEJPeB Delphiの逆コンパイラでおすすめって何になるの? : [sage] 2018/08/27(月) 21:32:59.26:1pvUgZqM 超初心者スレだから許して のしつもんです。 Win10の開発は初めてです。 昔で言う .ini なんかはどこに置くのが基本ですか? レジストリ使わない場合・・。 publicには Appdata とかないみたいだし。 Pathの 記述とか?? 今でも TIniFile とか使いますか? : [sage] 2018/08/27(月) 22:05:18.90:UfmEJPeB exeと同じフォルダ : [sage] 2018/08/27(月) 22:24:54.69:lZIE2FNf %appdata%にアプリケーションのフォルダ作って保存 : [sage] 2018/08/27(月) 23:33:36.63:1pvUgZqM 回答有り難うございます。 とっても参考になりました。 ユーザー別なら %appdata%\appname\ ユーザー共通なら %ProgramData%\appname\ って感じで 良いみたいですね。 : [sage] 2018/08/28(火) 12:13:22.36:e0zrlbVu 確かプラットフォームごとのパスを取得する関数が用意されてたような : [] 2018/08/28(火) 16:21:16.43:6kEMX7h9 iniファイル便利か : [sage] 2018/08/28(火) 18:16:29.63:3sF2+X9S PCが壊れたとき等、環境移行はローテクの方が・・ : [sage] 2018/08/28(火) 19:10:27.83:pa8Xm38g レジストリなんか使わない。 XMLなんか使わない。 やっぱりINIがいい。 : [sage] 2018/08/28(火) 20:53:25.15:yUJd0FCJ 「プロジェクトから削除」で削除したunit2,unit3って結局生きてる? unit1で参照してるからコンパイルしたらエラーが出ると思ったら何も出なかった。 プロジェクトの削除ってどう言うこと? : [sage] 2018/08/28(火) 21:09:44.56:dFKNKLFU そもそも システムと連携でもしない限り レジストリ使う必要が無いと思うんだが 自動的に何も考えずにレジストリ使ってるのが多いと思う : [sage] 2018/08/28(火) 21:21:58.23:mAx5yIVS プロジェクトツリーから削除されるだけで参照は自分で削除しないといけないよ : [sage] 2018/08/28(火) 22:07:01.20:yUJd0FCJ 有難う : [sage] 2018/08/29(水) 07:06:43.69:0P3/EBfJ (アン)インストーラが付属しないツールで 設定をレジトリとかexeフォルダ以外のフォルダに保存したりとか 何考えてるのか分からないのもあるからな : [sage] 2018/08/29(水) 19:36:02.35:2f70+wG1 Win8.1以降でiniファイルは取り扱いが難儀になったので TIniFileでも拡張子を別のものにすると素直に使える。 例えば .env とか .ini でトラブルになる挙動としては 管理者権限でプログラムを動かすとiniは書き出せるけどD&Dできなかったり ユーザー権限で動かすとiniが書き込み変更できなくてエラーになったりする。 : [sage] 2018/08/29(水) 20:50:27.29:CUO+ntMd インストールフォルダ自体がドキュメントフォルダ強制とかもあるな : [] 2018/08/30(木) 10:16:05.96:S/vwwZyF virtualstoreに入ってしまったものを 間違って元のディレクトリ名で見に行くと 「書き込み変更できなくてエラーになったり」 するね : [sage] 2018/08/30(木) 16:00:49.78:xpekrfIC こんな感じでやってます。 env : 「environment 環境」の略を当ててます。 procedure TForm1.SaveSettings; var Log_IniFile: TIniFile; ia : Integer; begin Log_IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.env')); // .env ← .ini try // [window] Log_IniFile.WriteString('window', 'x0', IntToStr(Form1.Left)); Log_IniFile.WriteString('window', 'y0', IntToStr(Form1.Top)); // [~~] finally Log_IniFile.Free; end; end; : [sage] 2018/08/30(木) 16:39:09.31:h4Uebctf WriteInteger使えよww : [sage] 2018/08/30(木) 17:54:05.37:xpekrfIC レジストリを汚しまくるのは好かん! : [] 2018/08/30(木) 18:00:59.87:RB/Vojpj ほんそれ : [sage] 2018/09/04(火) 04:53:47.13:cIgTW3mD スレッドオブジェクトで外部機器と通信するコンポーネント(自分で取り込んだactivexです)を使いたいのですが、 フォームがないのでcreateの引数って何にしたら良いでしょうか? サブのフォームをvisible:= falseにして、そこに配置した方が良いでしょうか? : [sage] 2018/09/04(火) 07:40:32.69:Iud04UXg 引数はnilでok 必要ならparentを指定する : [sage] 2018/09/04(火) 20:59:53.37:cIgTW3mD 有難うございました。 : [sage] 2018/09/06(木) 20:32:48.73:b7skbySG 十数年ぶりにコード書いてます。 Delphi7 のソースを XE3 で書き直そうとしてますが ???です。 XE3は 買ったきり手つかずだったものを初めて使ってます。 ShortDateFormat、LongDateFormat、ShortDayNames が未定義の識別子エラーとなります。 uses には SysUtils が有ります。 どんな原因が有り得ますでしょうか? 挫けそうですw : [sage] 2018/09/06(木) 20:59:54.36:Y0pbPBaL 単純な変数から変更されているので、 FormatSettings.ShortDateFormat のようにしてみてくだされ。 : [sage] 2018/09/06(木) 21:14:09.34:b7skbySG 速攻でスゲー! 解決しました! HELP の ”親” ってのを 見なきゃイケなかったのね 有り難うございます。 それにしてもHELP が いちいちHTMLソースが表示されて ”制限されたコンテンツの表示” ってクリックしなきゃなのは しんどい・・・ : [sage] 2018/09/07(金) 13:31:35.10:nbZaHp3Y 618です。 マルチスレッドで自分で取り込んだActiveXコントロールを使えるようにはなったのですが 不定期にEAccess Violationが出るので調べたら、このコントロールはSTA モデルとなっていました。 自分にはActiveXの知識があまりなくマルチスレッドで使用するにはCOM 関数のCoMarshalInterThreadInterfaceInStream, CoGetInterfaceAndReleaseStream を使うのかな?ということまではわかりました。 ただ、参考にしたサイトには「インタフェースポインタを他のアパートメントに渡す場合,インタフェースポインタをマーシャリング する必要があります。」と書いてありましたが理解できていません。 多分、各スレッドでCreateするのではなく1つのコントロールを各スレッドで使い回すのかなと思っています。 Delphiではどうするのか、とっかかりだけでも教えてください。 よろしくお願いします。 : [sage] 2018/09/08(土) 10:16:41.02:7h/1w/8o C#にしたら : [sage] 2018/09/08(土) 12:26:23.76:3pZBr9hd そのまんまでしょうに。アパートメントをまたぐ場合はマーシャリングしなきゃいけない。 ttp://jump.5ch.net/?http://eternalwindows.jp/com/apartment/apartment02.html で、CoMarshalInterThreadInterfaceInStreamでIStreamのバイトストリームに変換する。 で、そのストリームをアパートメントの異なる別スレッドに渡してそこでバイトストリームから元のオブジェクトに戻す。 コントロールのスレッドモデルより、各スレッドをどう初期化しかかがまず重要。 Comを使うときは各スレッドでCoInitialize(Ex)を呼ばなきゃいけんが、それでスレッドのアパートメントを指定する。 ttp://jump.5ch.net/?https://docs.microsoft.com/en-us/windows/desktop/com/processes--threads--and-apartments 読めば書いてある : [sage] 2018/09/08(土) 18:32:14.22:ifS5zDmq 未だに見つけられていない DeDe 3.50.02 Build 1619 for Windows ttp://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml Delphi製のバイナリを解析する方法 ttp://peryaudo.hatenablog.com/entry/20110105/1294209734 >DeDeのprojectタブを使うと、 >ディスアセンブルされたx86のコードをコメントでくくっただけのpasとデコンパイルされたdfmをファイルに落とせる。 x86コードを直接見てもワケワカメ : [sage] 2018/09/13(木) 10:48:16.02:TILqF4on FireMonkeyのStringGridでマウスカーソル直下のセルの特定の仕方を教えてください。 マウスの座標は取得できています。 よろしくお願いします。 : [sage] 2018/09/13(木) 15:53:14.96:D2+vOfIF CellByPoint : [sage] 2018/09/14(金) 00:13:42.04:h30gDWV5 ありがとうございました。 一応は取得できるのですが、セル内のマウスカーソルの場所によって、セルが特定できたり できなかったりという感じです。 また、列の位置は左端なら本来は0だと思うのですが1が返ってきます。 行は先頭行が16と返ってきます。 MousePos := Screen.MousePos; StringGrid1.CellByPoint(MousePos.X,dMousePos.Y,ColNo,RowNo); 上記のようなプログラムですが、マウスの位置の取得方法が間違っているのでしょうか? : [sage] 2018/09/14(金) 07:11:59.92:N3zUYsZd onMouseMoveでテストしてみて : [sage] 2018/09/14(金) 08:18:00.14:sVVlCHCP ローカル座標に変換する必要あんでね? : [sage] 2018/09/14(金) 12:20:56.93:rsfS0hy3 >MousePos := Screen.MousePos; この段階でマウス座標はスクリーン座標(スクリーンの左上を起点とする座標)なので クライアント座標(この場合、StringGrid1の左上を起点とする座標に変換しないとダメだよ VCLならStringGridにScreenToClientというメソッドがあるんだけど FireMonkeyのことはよく知らんけど似たような(もしくは同名の)メソッドがあるんじゃないかな : [sage] 2018/09/14(金) 19:36:31.47:KQxf0S5x てかコントロール上のマウス位置から何なしようってときに スクリーン座標が出てくる訳が分からない : [sage] 2018/09/14(金) 20:55:44.40:QxWxbdYR 皆さん、ありがとうございます。 まだ、解決できていないのですがまずはお礼まで。 ローカル座標はScreenToClientと同じ名前のものがあったので使ってみたのですが うまくいきませんでした。 VCLの方だときちんとカーソル下のセルを正確に取得できるのに。 FireMonkey難しい。 : [sage] 2018/09/14(金) 21:57:04.38:KQxf0S5x こんなんじゃだめなの? TForm1 = class(TForm) private { private 宣言 } procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); implementation procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.OnMouseMove := StringGrid1MouseMove; end; procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); var ACol, ARow: integer; begin if StringGrid1.CellByPoint(X, Y, ACol, ARow) then Edit1.Text := Format('Col:%d, Row:%d', [ACol, ARow]); end; カーソル下のセルを正確に取得できてるよ : [] 2018/09/14(金) 23:50:03.06:QxWxbdYR ありがとうございます。 やりたいことができました。 ヒントもらっていたのに申し訳ありません。 あくまでもコントロール上の座標を取らないといけないということですね。 ScreenToClientはアプリのウィンド上の座標と言うことで良いでしょうか? : [] 2018/09/15(土) 00:17:48.45:8rxpHkWL なんで未だにデルファイなんかやっとるんやおまいら? : [sage] 2018/09/15(土) 06:26:34.02:mxfFGWip いろいろな言語使えるけどDelphiがベストだと思うから : [sage] 2018/09/15(土) 06:42:36.21:3TWFaDlw てかそんな話はエンバカスレでどうぞ : [] 2018/09/15(土) 11:07:16.52:AVfR6YnT Delphiは討たれる : [sage] 2018/09/15(土) 17:32:12.84:AkXmtK9p : [] 2018/09/16(日) 10:48:44.14:e3KaLVno SKRegExpの作者はどこに行ったの? : [sage] 2018/09/26(水) 11:44:44.46:Ov2EA3Ui 今頃デルファイの10.2.3をインストールしようと思うんですが、サイトに書いてあるように一旦10.2をアンインストールしないとまずいですか? 一旦アンインストールした場合サードパーティーのコンポーネントはやはり再インストールしないとダメですか? 10.2.3をインストールしたら復活するとかは無いですかね? : [sage] 2018/09/26(水) 13:25:05.76:WoZunzir 別のプログラムとしてインストールされるからTokyo用のコンポーネントは再インストール必須 別に10.2を残してても共存はできる : [sage] 2018/09/26(水) 15:05:08.27:Ov2EA3Ui なんか共存できんかった : [sage] 2018/09/26(水) 17:59:31.37:7bJbQB0s 同居出来ないってCPB CEでも入ってるのか? : [] 2018/09/26(水) 19:21:31.24:ANIjlW8h BerlinとTokyoは共存できるけどToky同士は共存できなかったはず 10.2から10.2.3は設定データなどを残してアンインストール、インストールで普通に移行できたよ CDイメージからのインストールの場合だけどね Webインストールの場合はそれができないんだったっけ : [sage] 2018/09/26(水) 19:58:22.59:V9O91uO9 サードパーティのコントロールが消えるのが嫌でアンインストールせずやってしまった。orz : [sage] 2018/09/28(金) 08:42:20.23:CK9JalNS ツールパレットにはコンポーネントのアイコンがきちんと表示されているんだけど、フォームに配置するとアイコンが見えない位小さくなってしまうんだけどなんで? : [sage] 2018/09/28(金) 18:27:10.70:L/CPkr5D 老眼かい? 他人にはあんたの見て思ってる物が大きいか小さいかなんてエスパーでもないから分らない。 画面キャプチャーでもして画像貼れ : [sage] 2018/09/28(金) 20:17:23.17:CK9JalNS そうか、ご苦労 : [sage] 2018/09/29(土) 04:51:42.90:61Ke5MR1 フォームにアイコンだけ表示されるやつは OnCreateで手動で追加する形でずっとやってるから どうでもいいは : [sage] 2018/09/29(土) 06:17:50.02:SaDPGrJG 4Kモニターを使っているのかい? : [sage] 2018/09/29(土) 20:55:31.30:nJOGxOxE そして ふてくされて二度と来ないコミュ障であった : [sage] 2018/09/30(日) 05:42:12.80:OYYkxayT かわいそう・・・ : [sage] 2018/09/30(日) 16:24:03.95:sVuwBfqE 意外とみんな覗いてんな : [sage] 2018/10/03(水) 20:49:10.84:T89/Qa9b モニタにもっと顔を近づけるんだよ きっと見れるよ : [] 2018/10/04(木) 10:29:39.99:FXVBuQxV モニタよモニタよモニタさん : [sage] 2018/10/06(土) 09:18:43.15:ruQOvniH マルチデバイスのソフトを初めて作ろうと思っています。 コントロールの配置に関して質問なのですが、とりあえずPC用かスマフォ用を作ってその後、 各デバイス用に配置しなおして再コンパイルする手順でいいでしょうか? : [sage] 2018/10/06(土) 12:13:05.71:Z2kGgnGa まずalignの使い方かな : [sage] 2018/10/06(土) 15:33:22.97:dM0Hntxh FireUI : [sage] 2018/10/07(日) 08:57:42.83:XyZZDpel 有難うございます。 調べて勉強します。 : [sage] 2018/10/13(土) 18:12:13.98:3G3/hyQa 何かウェルカムページを開きたびに セキュリティ警告が出るんだが : [sage] 2018/10/13(土) 22:28:09.39:19TuI9Cj SSL証明書が期限切れたから更新あうるまで待ってってMCさんが : [sage] 2018/10/13(土) 23:05:26.94:ApCV8gEF なるほど 今日はvclとfmxアプリ間のメッセージングのテストやってて 切り替えるたんびにダイアログが何度も出てイヤんなる : [] 2018/10/17(水) 17:24:01.23:GbCGuExa ブラウザのタイトルを取得したいんですけど、 WebBrowser1.Document.Titleだと、 'TWebBrowser' は 'Document' という名前のメンバを含んでいません WebBrowser1.OLEObject.Document.Titleだと、 'TWebBrowser' は 'OLEObject' という名前のメンバを含んでいません ってなるんです。 usesに何か足りませんか? uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Edit, FMX.Controls.Presentation, FMX.WebBrowser; Delphi 10.2 Community Edition : [] 2018/10/17(水) 17:49:10.11:GbCGuExa 解決しました。 VLCじゃやないやつで作ろうとしてたみたいです! : [sage] 2018/11/06(火) 12:05:36.75:FnkVAeUe FMXでLabelのバックカラーの変更って出来ない? 今はPanelの色を変えて、その上に貼り付けてるんだけど。 : [sage] 2018/11/06(火) 15:03:32.51:lO/IgrxW labelのスタイルに背景ってないからムリじゃないかな あとpanelよりtlayoutの上にtrectangleのせて さらにlabelはったほうが柔軟性が高い : [sage] 2018/11/06(火) 16:08:30.30:xJl/nUxi TRectangle、オブジェクトエクスプローラからなら子に色んな物入れられるよ (要するにTRectangleがTLayoutのように使える) : [sage] 2018/11/06(火) 18:54:34.08:O/iOsvOA XE5までの知識しかないが、 TStyleBook割り当てて、そっちで対応するんじゃなかったかな? : [sage] 2018/11/06(火) 19:14:26.53:lO/IgrxW ホントだ TPopupなんかもHelpじゃ実行時にParentを操作して コントロールを乗っけるって書いてあって 使い勝手が悪いと感じてたんだけど 同じ方法で設計時にコントロールを配置できたりするんだよな : [sage] 2018/11/06(火) 22:06:13.74:FnkVAeUe 皆さん、ありがとうございました。 Rectangleって楽ですね。 もう一つ教えて下さい。 panddingとかmarginsを設定して0に元に戻すと隣のコントロールと隙間が空いたままになるのは自分だけ? : [sage] 2018/11/06(火) 22:08:56.05:hsnGAH6F 訂正です。 panddingとかmarginsを設定して実行。 その後、全部0に戻して実行しても隙間が空いたままです。 : [sage] 2018/11/07(水) 12:11:35.51:wV9cKqqT fmxのmarginはちょっとバグってる気がする その例と同じかどうか分からないけど 複数のspeedbuttonをalignをleftにして並べて ボタンのmarginを一度設定すると marginを解除しても ボタンの左半分くらいがマウスに反応しなくなる いろいろやってると何かのきっかけで正常になったりする : [sage] 2018/11/07(水) 12:24:36.39:wV9cKqqT 上にスタイルの話があるけど スタイルで背景色を変えたら Windows10以外では適用されてなかった コンパイルのしかたかなぁ 最近公開したソフトで ユーザに指摘されて初めて気づいたよ : [sage] 2018/11/08(木) 21:49:27.80:+35zDuDi 結局プログラムで指定すれば配置されるので我慢します : [sage] 2018/11/15(木) 21:17:33.28:T3q1kNSY fmxでのフォームの最小化と復帰だけど コードだけでで問題なく動作する? WindowState := TWindowState.wsMinimize; WindowState := TWindowState.wsNormal; でできるはずなんだけどね 何かうまく機能したりしなかったり : [sage] 2018/11/20(火) 09:18:03.84:7wJBb/wv 本棚からDelphi7体験版が出てきたのでインストールしようとしたら、 ライセンス取得のところでエラーが出て使用することができません。 今更ながら、使うことは不可能なのでしょうか? DelphiXEで非Unicodeのソースが作れればそれでも構わないのですが。 : [sage] 2018/11/20(火) 22:24:15.58:yy/MaTgl 今ならフリーのDelphiありますよ : [sage] 2018/11/20(火) 22:25:24.56:yy/MaTgl すみません非Unicodeと限定されている意味がわからないので現行のものではダメなのかも知れませんね : [sage] 2018/11/21(水) 01:49:20.19:LolYlRS5 使用許諾コードがメールで送られてくる登録フォームならある 今でも機能してるのか知らんけど ttp://jump.5ch.net/?http://support.embarcadero.com/jp/install/product : [sage] 2018/11/23(金) 08:08:59.67:aknsIo8R 良くサイトを見たら、体験版の承認キーの発行は終了しているみたいです。 せっかく教えていただいたのにすみません。 : [sage] 2018/11/24(土) 01:36:16.72:e4CBxpxl FMXをタッチパネルついてるWindows10で動作させるとTListViewとかが勝手にタッチパネル用のスタイルになるのどうにかならんかなぁ Scrollbarが表示されない上にタッチパネル操作になるから操作が統一できない・・・ デバイス自体を無効にしたらタッチパネルじゃないスタイルで動作するけどなんだかなー : [sage] 2018/11/25(日) 11:17:43.53:x9MDawPF ListBoxの項目にFocusを付与したいのですが、3,4日うまくいかず困っています。 クリック以外の方法でListBoxにFocusを付与する方法というのはありますか? : [sage] 2018/11/25(日) 21:01:29.45:4hnmy7r/ ListBox1.ItemIndex:=3; ListBox1.SetFocus; ってこと? なんか以前にもこんな質問あったような気がするが : [sage] 2018/11/26(月) 13:46:48.38:gMNgG1vk どうもです。 ただ、マウスクリックするとFocusが出ますが、ListBoxの他の所をクリックすると消えちゃうんですよね…。 : [sage] 2018/11/27(火) 01:04:25.95:uHJWsmxJ そりゃそうだ 他のフォーカスを持つ所をクリックすればフォーカス移る 何がしたいのかわからない 「ウィンドウ ハンドルを持つコンポーネント」の意味を理解してますか? 例えばここ ttp://jump.5ch.net/?http://delfusa.main.jp/delfusafloor/archive/VA009712_take/delphi/kabeapp.htm ListBox以外にフォーカス動かしたくないんなら 他の全てをフォーカスを持たないSpeedButtonとかメニューやツールバーとかにするしかない 或いは他を Enabled:=Falseにするとか : [sage] 2018/11/27(火) 09:44:39.76:/9xlS8t7 こんな物を作っていました。 ttp://www1.axfc.net/u/3946835.zip?key=123456 既知の不具合 下手にいじると簡単にバックグラウンドプロセスに行ってしまう。 Focusについてですが、このアプリはFocusが残る物をベースに作りました。 新しく作り直した物がListboxをクリックすると一瞬だけFocusが表示されるのですが すぐ消えてしまうと言うよく分からない現象が起きていました。 よろしかったらご評価いただければ幸いです。 もう我流は辞めてTurboDelphi~を参考書に勉強したいと思います。 : [sage] 2018/11/27(火) 09:53:17.62:/9xlS8t7 大事なことを忘れていました。 このアプリはエクスプローラ上で.wavファイルを選択し「送る」もしくはアイコンでD&Dすると再生を始めます。 またアプリを起動して、エクスプローラからフォームに直接D&Dすると曲を演奏します。 よろしくお願いいたします。 : [sage] 2018/11/27(火) 12:16:28.81:e3+VQ8Az 例のお方か まだやってたのはちょっとビックリ : [sage] 2018/11/27(火) 15:00:40.58:/9xlS8t7 そうですよ。まだやってました。石の上にも3年と言う言葉もありますし おかげさまで、プログラミング技法の第一巻の半分くらいまでは理解できるようになりました。 今度はちゃんと基礎からやり直したいと思います。 あげたファイルはアルファー版ほどの出来ですが、今の知識で作った物です。 ご興味がありましたら、ご評価をよろしくお願いいたします。 : [sage] 2018/11/27(火) 20:14:14.72:NOmVen+G 確かにスクロールバーが通常は非表示だけど そんなに違いがあったっけ? 自分としてはマウスホイールでスクロールしてるときも スクロールバーが非表示なのがあれだけど : [sage] 2018/11/27(火) 20:24:03.07:B1T5LoxP マウスでドラッグしたらスクロールできたり(タッチパネル式だからマウスでスクロールバー操作するのとは逆の動きする)、スクロールバーが表示されてるときにクリックしても反応なかったり OS側で常にスクロールバー表示しても非表示とか レガシーな入力デバイスが主なプラットホームでは切り替えられるようにしといて欲しい・・・ : [sage] 2018/11/27(火) 22:24:05.07:NOmVen+G てかいま自分が作ってるfmxアプリをwindowsタブレットで動かしてみると listviewとかのタッチでのスクロールには少し違和感があるね android上とは明らかに違う操作感だ : [sage] 2018/11/27(火) 22:44:39.21:uHJWsmxJ ごめん俺687と689を書いた者だけど自分の勉強以外で人のソース読むほど時間はないんだ と書きながらも流し読みだけでもしようかと開いてみたら 「404 Not Foundファイルが見つかりません」 >新しく作り直した と書かれているがそれは今までのソースのつぎはぎコピペではなく自分で理解しながら書き起こしたものですか? それならば不具合が出たとしても何をググって調べればいいかわかると思います プログラミング技法って昔持ってた記憶があるけど一度通読したあと埃かぶってたまま引っ越しの時に捨てたくらいいまいちな本だった記憶 自分はやっぱり最初は「はじめてのDelphi」が一番わかりやすかったし 「Delphiオブジェクト指向プログラミング」でVCL読むようになって 「インサイドDelphi」とか「シェルプログラミング入門」が楽しく読めるようになった そうです私もおじさんです : [sage] 2018/11/27(火) 22:49:52.31:NOmVen+G 何をしたいのか分からないよ? focusって言葉がそもそも違うんじゃない? もし何らかの理由で本当にlistboxにfocusを与えたまま 維持したいんだけど、できないんだったら 他のコントロールがfocusを奪ってるんでしょ それを調べたらいいんじゃない? : [sage] 2018/11/27(火) 23:04:45.17:NOmVen+G 自分なんか「おじさん」じゃなくて 60過ぎのジイサンだよ と言ってもdelphi歴は短いけどね 今はfmxにハマってる : [sage] 2018/11/28(水) 07:11:14.22:cOVA6pyZ ListBoxってフォーカスの有無で外観が変わったっけ? フォーカスがなくなって困ることってある? : [sage] 2018/11/28(水) 18:42:27.35:6Wq1ldCo ご評価していただいた皆様ありがとうございます。 このソフトを作るときは、巻き戻し・プログレスバー移動自由自在・リモコン対応 を目標に作り始めましたが、どれ一つも実現できませんでした。 MCIを使っての巻き戻しは、テープ系なら可能みたいですがMpegではデバイスが対応していないので無理。プログレスバーでの移動はどんなに大変なのかは、DelphiでDVDプレイヤーを作った方のサイトがあるのでそちらを参照してください。 大本のVolume制御以外は自分で実装しましたが、新しく別プロジェクトを作って試作してめどが立ってから導入しましたが、何故か思ったように動かず。 前半はMCIに翻弄され後半はインターフェースに苦しみ、メディアプレイヤーはもう少し修行を重ねてから、作りたいと思います。 愚痴めいた内容ですみません。 色々アドバイスをしてくれた皆様、特に質問を投げかけたときに、コマンドを一言つぶやいていただいた方、自分で使い方を調べることで理解が進みました。 スレ汚し失礼しました。 : [sage] 2018/11/28(水) 18:45:05.85:KTh/kflZ 3行で頼む : [sage] 2018/11/28(水) 19:03:58.25:6Wq1ldCo 教えてくれた皆さんありがとう つかれた mp3再生君にはかないませんでした。 こんな感じで : [sage] 2018/11/28(水) 19:51:39.78:N0ilq15o おまえ1行じゃねえか : [sage] 2018/11/28(水) 19:52:09.33:9Dt+AyzE : [sage] 2018/11/28(水) 21:12:16.13:6Wq1ldCo そうでした。 Object Pascal言語ガイドを少し腰を据えて読んで理解したいと思います。 : [sage] 2018/11/28(水) 21:32:01.67:m6jgQPaC 前も言ったような気がするけど fmxのコントロールのカスタムスタイルって Windowsだと10でしか有効にならなくない? 設定した背景色とか8.1や7じゃ消えてるし : [sage] 2018/11/28(水) 22:21:14.73:KTh/kflZ Windowsのバージョンで別々に設定できる反面、Windows10専用で設定されてるのに気付かないと別の環境では変な表示になっちゃうよね : [sage] 2018/11/28(水) 23:14:08.68:DuRogDXc MCI君をいじると擁護する単発が現れるのももう恒例行事になってきた。 : [sage] 2018/11/28(水) 23:46:29.77:WWqTncYq え?誰が擁護してる? : [sage] 2018/11/29(木) 00:17:09.19:3U/+XJ1L ほらね : [sage] 2018/11/29(木) 08:37:13.44:J6L5KB/r そうなんだ 確かに「ターゲットプラットフォームの バージョンごとにネイティブ」って書いてあるね Windows 10 Desktop用に作ってあったとして 新たに8用と7用も作ってやらないとならないのか こりゃちょっと大変な作業だ : [sage] 2018/11/29(木) 15:25:33.53:yQEZusSx デフォルトスタイルに設定するか、スタイルを保存して各プラットホームにマージしたらそんなに手間でもないよ : [sage] 2018/11/29(木) 21:26:39.87:w2wW1sYB ありがとう マージできるんだ 何もわからないで始めたのがマズかった : [] 2018/12/05(水) 10:09:27.51:mTCdLhw6 DelphiXEを使ってます。 エクスプローラからプロジェクトファイルをダブルクリックしてDelphiが起動するのですが、 さらにもう一つ同じ操作で起動すると、先に起動したIDEのプロジェクトグループに追加され てしまいます。2つ目のプロジェクトを別のIDE画面で起動したいのですが、そのような設定 があるのでしょうか? : [sage] 2018/12/06(木) 13:52:27.48:DDjonqa2 無い そういうものと思うしかない : [sage] 2018/12/07(金) 09:21:09.18:2Avy4w/h スタートメニューから起動してプロジェクトロードするしかない レジストリをいじれば出来るかもしれないけど : [sage] 2018/12/08(土) 09:28:52.05:p9Ru1ius Rioの各デスクトップレイアウトを変更した後 それを保存する項目がメニューから消えたみたいですが? : [sage] 2018/12/08(土) 13:38:29.09:NwPO1Ie0 つ ttps://qiita.com/ht_deko/items/573f7c11c15c46f895c6 のQ.7かな? : [sage] 2018/12/08(土) 17:06:57.94:p9Ru1ius ありがとうございました できました このボタンが関係するのかなとも思いましたが Hintも非表示でスルーしてました : [sage] 2018/12/12(水) 22:30:39.97:MSpbLBgR エンタープライズコネクターのインストール方法教えて下さい。 ダウンロードしてsetup.exeを実行してパスを通すの? : [sage] 2018/12/13(木) 09:33:41.92:+QyQFfQj ちょっと教えてください fmxのカスタムスタイル変更でコントロールの背景を変更するとき Windows 10 Desktopstyle.pngとかWindows 7style.pngとか利用しますが これってどこにあるの? この画像を修正したいいんですがドライブの中を検索しても見つかりません : [sage] 2018/12/13(木) 11:47:04.04:YCEJ54t4 Delphi10.3 Community Edition 入れてみた オブジェクトインスペクタのイベントTabが開かないんだけど 俺だけ? Delphi10.23 Community Editionでは問題なく選択できる : [sage] 2018/12/13(木) 16:31:21.26:vV5HNjFS 10.23とかなり新しいから修正あったんだろ : [sage] 2018/12/13(木) 18:38:58.45:YCEJ54t4 'イベント'の文字の所をクリックすると いけた TABの色と右側空白の色が同じだったので、空白をクリックしていただけだったw : [sage] 2018/12/13(木) 19:43:45.07:w3f+OOI4 クリックしてイベントTabを開けない方が難しいと思うw : [sage] 2018/12/15(土) 02:19:47.94:bDhDTHwp 10.3でPostMessageを使ったメソッド、イベントハンドラ呼び出しの 標準のラッパーみたいのありますか Call(Button1Click, [Sender]); 的な使い方ができるもの : [sage] 2018/12/21(金) 18:01:03.17:cky1I29u AndroidアプリのためにFMX.MEMOを使って 簡単なテキストエディタを作ろうと思ったが いざAndroid上で動かすと、漢字入力の際 変換中の文字列の色が変化せずに困っている 普通は入力中の文字、文節の区切り、カーソル位置で 色が変わったり下線が表示されるが、周りの文字と同じままで どこが入力中で、どこが文節の区切りなのか分からない 何か設定が足りないんだろうか? (IMEはGoogle日本語入力です) : [sage] 2018/12/22(土) 08:55:33.68:NdThNIsr まあバグだろうね。欧米人はIMEとか使わないから : [age] 2019/01/20(日) 15:49:29.87:qfpRHOuf D7 です。 それなりに以前の機器の古いバイナリデータの日時情報が 8 byte(64bit) Hex で記録されているのですが、 日付TDateTime型 に入れる式をどなたか分りませんでしょうか? この形式のような気配なのですが ttp://madia.world.coocan.jp/vb/vb_bbs2/200602/200602_06020084.html >Windowsは、「1601年1月1日 00:00:00からの100ナノ秒単位の経過数」です。 実データ値 0x88D24B060812D480 : 2015/04/22 11:24:29 付近 0x88D24B0608AB6B00 : 次の変化 : 差分 int 10000000 = Hex 0x989680 ↓ 0x88D24B0628429380 : 2015/04/22 11:25:23 付近 : 最終 // UNIX 系の変換はこのような感じでやってたのですが var i64 : Int64; la : Longword; TextStr : String; ULDateTime : TDateTime; begin i64 := StrToInt64('$' + Edit_Unix64bitDateTime.Text); la := i64 div 1000; ULDateTime := UnixToDateTime(la); TextStr := FormatDateTime('YYYY/MM/DD HH:MM:SS',ULDateTime); UNIX 系でのミリ秒含めでもなさそうでちょっとお手あげです。 : [sage] 2019/01/20(日) 18:16:00.16:pkTQkmr2 64bitの符号付きかね? 符号無しでも試してみれば? : [sage] 2019/01/20(日) 18:33:56.63:pkTQkmr2 整数型は、符号付き・符号無しのどちらか? リトルエンディアン・ビッグエンディアンのどちらか? そのサイトのソースコードを見ると、 unsigned long low, high; unsigned は、符号無し val[0~3]がlow、[4~7]がhigh、 0123_4567 が、low_high だから、ミドル(PDP)エンディアンか? 1234_ABCD を、ABCD_1234 にしているのか? Wikipedia の「エンディアン」を参照して! : [sage] 2019/01/20(日) 20:11:56.51:KDWvqb8v D7から10.3comに変更してAndroidアプリでも作ろうかと気軽にチャレンジしたら すげー苦労してる・・・ プロパティ名が微妙に違うしStringGridとかListviewみたいになってるし ダイアログとかも面倒くせー : [sage] 2019/01/20(日) 20:13:41.94:KDWvqb8v すまんエン馬鹿スレと間違えた メッセージが分かりづれーよJane : [sage] 2019/01/21(月) 09:36:20.23:a6ON0eDT 詳細書き直し 古い規格データの機器からのバイナリデータ。 目的:古いデータを今の形式にする為。 日時部分を Delphi D7 で扱える ULDateTime : TDateTime; に入れたい。 問題点:時間部分の変換が分らない。 データブロックを構成する他の部分データ部分はリトルエンディアンで構成されている。 バイナリエディタで見ると不明で残る日時データ部分が8バイトの羅列。 [0][1][2][3][4][5][6][7] (1) "80 D4 12 08 06 4B D2 88" データの変る区切りで (2)つ目の変化 (2) "00 6B AB 08 06 4B D2 88" 時間が進むごとに [0] 側から加算されていく、よってこの部分もリトルエンディアンで構成。 1分に満たない時間変化で4バイト目も変っていく為 32bitではない。 : [sage] 2019/01/21(月) 09:40:36.46:p/5Zwz2x Link先はUnix系だからこれでいけるようだけど違うみたいね function bswap64(i: int64): int64; begin result := (i and $ff00000000000000) shr 56 or (i and $ff000000000000) shr 40 or (i and $ff0000000000) shr 24 or (i and $ff00000000) shr 8 or (i and $ff000000) shl 8 or (i and $ff0000) shl 24 or (i and $ff00) shl 40 or (i and $ff) shl 56; end; procedure TForm1.Button1Click(Sender: TObject); var i64 : Int64; d: double; la: cardinal; s : String; dt : TDateTime; begin i64 := StrToInt64('$' + '6082D42A5A38C601'); i64 := bswap64(i64); d := i64 * 1.0e-7; d := d - 11644473600; d := d /(24*60*60) + UnixDateDelta; dt := FloatToDateTime(d); // la := Trunc(d); // dt := UnixToDateTime(la); Edit2.Text := FormatDateTime('YYYY/MM/DD HH:MM:SS', dt); end; : [sage] 2019/01/21(月) 09:56:47.94:/4Ne5b0H パソコンで続きを書こうとしたらホスト規制の文字が出る >736 考えてみます : [sage] 2019/01/22(火) 07:57:49.66:wlBx3Xs7 Q : 整数型は、符号付き・符号無しのどちらか? A : いっさい不明 全差分 54秒 ほどの間に 1529 個ほどのデータ 時間文字の違いを抜き出し time 1> 0x88D24B060812D480 : 2015/04/22 11:24:29 付近 time 2> 0x88D24B0608AB6B00 ~ time end-1> 0x88D24B0627A9FD00 time end> 0x88D24B0628429380 : 2015/04/22 11:25:23 付近 2進数、8進数、10進数、16進数相互変換ツール h ttp:~(この~~は規制がどうたらこーたら表示) 符号なし10進数化で差分を求めると 10000000 これが1秒の更新と一致。 新展開 "00 40 E4 47 02 22 C1 08" : 終了段未計測の値、(データ無し) 0x08C1220247E44000 符号なし で変換 630822816000000000 ググるといくつも何かがHit Calendar のどうたらこーたら英文一杯 : [sage] 2019/01/22(火) 20:50:24.33:zgLYWjKa time2の値を0xffffffffffffffff-1(=0x7fffffffffffffff)でbit andを取ると、 0x8d24b0628429380 この値を.NET frameworkのDateTime型に渡してインスタンス化したところ、 2015/04/22 11:25:23 となり一致した。 .NET frameworkのDateTime型は、100nsecの分解能をもつグレゴリオ歴0001年1月1日 00:00:00からの経過時間 またほかの考察から、1sec=10000000であり、ちょうど100nsecの分解能とも一致している。 : [sage] 2019/01/22(火) 20:52:09.44:zgLYWjKa データ点数1529は、 1529 = 54 * 28 + 1 なので、28Hzのクロックシグナルでログを取っているものと予想される : [sage] 2019/01/22(火) 22:15:27.13:zgLYWjKa 日時の表現が.NET frameworkのDateTime互換と仮定すると、 では上位1bitを捨てたけど、実際には2bit捨てるのが正しい。 この2bitが何物かといえば、 時刻の種類を示すbit flagで、指定なし(0), utc(1), local(2) 例示された値の上位2bitは0b10(=2)なので、ローカルタイムだったのだろうと推測される。 : [sage] 2019/01/23(水) 06:54:24.00:BnZEIkIf ありがとうございます。 まとめるとこのような感じで上手くいくようです。 : [sage] 2019/01/23(水) 06:56:58.78:BnZEIkIf .NET frameworkのDateTime互換型と仮定 → (.Net型 非対応) Delphi TDateTime型 対象 : 0x88D24B0628429380 : 2015/04/22 11:25:23 付近 符号なしで推移 2000年1月1日 00:00:00 基準値 0x08C1220247E44000 差分 16進数 = 80112903E05E5380 10進数 = 9228202208084775808 02進数 = 1000000000010001001010010000001111100000010111100101001110000000 .NET frameworkのDateTime型は、100nsecの分解能をもつグレゴリオ歴0001年1月1日 00:00:00からの経過時間 時刻の種類を示すbit flagで、指定なし(0), utc(1), local(2) 値の上位2bitは0b10(=2)なので、ローカルタイム 上位2bit捨てる 2000/01/01 00:00:00 以降だけと仮定(計測機器データなので過去は無し) 1000000000010001001010010000001111100000010111100101001110000000 00000000010001001010010000001111100000010111100101001110000000 = 4830171230000000 = 0x112903E05E5380 4830171230000000 / 10000 ms = 483017123000 {切捨て} 483017123000 (ms) /1000 = 483017123 ...0 (ms) /60 = 8050285 ...23 (sec) /60 = 134171 ...25 (min) /24 = 5590 ...11 (hour) 2000年1月1日 から 5590 日のローカルタイム経過日 : [sage] 2019/01/23(水) 07:02:27.05:BnZEIkIf .NET frameworkのDateTime互換型と仮定 → (.Net 非対応) Delphi TDateTime型 検証中 uses // (略) DateUtils,Math; procedure TForm1.Button_Hex64Bit2000CalendarClick(Sender: TObject); var i64 : Int64; // (略) TextStr : String; ULDateTime : TDateTime; begin i64 := StrToInt64('$' + Edit_Hex64BitDotNfDateTime.Text); i64 := i64 - $08C1220247E44000; TextStr := IntToHex(i64,16); Memo1.Lines.Add(TextStr); // Hex 16bit 文字→ 2bit String に変換 // 上位2bit 文字 で utc(1)00, local(2)10 を判定後削除 // i64 := 残りを 10進数数値に変換 // i64 := Trunc(i64/10000); // ミリ秒単位化 i64 := 483017123000; // (仮入れ) ULDateTime := StrToDateTime('2000/01/01 00:00:00.000'); ULDateTime := IncMilliSecond(ULDateTime,i64); TextStr := FormatDateTime('YYYY/MM/DD HH:MM:SS.ZZZ',ULDateTime); Memo1.Lines.Add(TextStr); end; 結果 : 2015/04/22 11:25:23.000 一致しました。 : [sage] 2019/01/24(木) 06:22:34.57:+IgQLcoJ 関数化したものを分けて書こうとすると Sorry, you have been blocked You are unable to access 5ch.net >744 変更 i64 := i64 - $08C1220247E44000; // Int64 → 2bit String に変換 TextStr := Int64ToBin(i64,False); // 他者さんの参照外部関数を改変 // 上位2bit 文字 で utc(1)00, local(2)10 を判定後削除 // 上位ゴミ'0'削除 // i64 := 残りを 10進数数値に変換 : [sage] 2019/01/24(木) 06:38:11.74:+IgQLcoJ function DotNf64bitHexToDateTimeStr(Str8bytesHex : String; Flg,MS : Boolean) : String; // 8 Bytes Hex , Flg check , ms on(True/False)off (省略 >744冒頭部分近似) // i64 := 残りを 10進数数値に変換 ib := 0; // 頭"i"Int ea := 0; // 頭"e"Extended ilen := Length(TextStr); for ia := ilen downto 1 do begin iBin := StrToIntDef(TextStr[ia],0); ea := ea + ((power(2,ib)) * iBin); ib := ib + 1; end; i64 := Trunc(ea / 10000); // ミリ秒単位化 ULDateTime := StrToDateTime(DateTimeStr); ULDateTime := IncMilliSecond(ULDateTime,i64); if MS then DateTimeStr := FormatDateTime('YYYY/MM/DD HH:MM:SS.ZZZ',ULDateTime); if MS = False then DateTimeStr := FormatDateTime('YYYY/MM/DD HH:MM:SS',ULDateTime); end; if Flg then DateTimeStr := UL + DateTimeStr; DotNf64bitHexToDateTimeStr := DateTimeStr; end; end. : [sage] 2019/01/25(金) 06:18:32.24:/nan/z+i 補足 i64 := StrToInt64('$' + Str8bytesHex); // Int64 → 2bit String に変換 'Int64ToBin' で検索先 // 上位2bit 文字 で utc(1)01, local(2)10 を判定 i64 := i64 - $08C1220247E44000; // Int64 → 2bit String に変換 // 上位ゴミ'0'削除 // i64 := 残りを 10進数数値に変換 流れをこうしないと年日時の結果は同じでも 指定なし(0) 上位2bit 文字 '00' の場合 差し引き結果から'01'のutc判別となってしまう。 : [sage] 2019/01/26(土) 12:43:51.03:V7Vc5iY/ DocWikiの内容をzipファイルか何かで一括ダウンロードする方法あったら教えてください : [sage] 2019/02/10(日) 07:14:24.28:RF523CmO 古いD6をまだ使っているが、エディタは VScode にDelphi extension入れて 使っている デバッグはD6のIDEでやるしかないけど、両方立ち上げておけば まあ使えますね : [sage] 2019/02/10(日) 10:26:35.22:3PGMldSJ 俺もD6で、秀丸でコーディングしていたが、VSodeに切り替えてみようかな。 VSCodeは他の言語で使ってるので。 : [sage] 2019/02/10(日) 18:01:50.44:RF523CmO VScodeの注意点: 別PCのファイルを開くと、変更が反映されない事象あり 自動保存されるけど、書きなおしたやつをまた開くと直っているように見えるのに、 実際は直ってないとか。 意味不明 : [sage] 2019/02/10(日) 20:08:43.74:RF523CmO あっちとこっちで同時にファイル開いてたせいみたい : [sage] 2019/02/17(日) 19:49:40.12:mFe1BbW0 別に今必要な事じゃないんだけど エクスプローラーのファイル名で並べたら ファイル1 ファイル2 ・・ ファイル10 って並ぶでしょ。 これどんなロジックなんだろ スマートな方法が思いつかないし興味ある : [sage] 2019/02/17(日) 21:28:00.77:8qqWbI4p 自分は自作ソフトで似たようなことやってるけど 1文字単位での比較で数値同士の比較の場合に、その先の数値じゃなくなる前まで読んで整数にして比較ってしてる 小数点以下は1文字単位での比較として扱うので整数にしない ただ 第11話 最終話 のような場合のロジックが面倒 : [sage] 2019/02/19(火) 06:54:39.26:9UQztg+8 VisualStudioでDelphi使えないかなぁ : [sage] 2019/02/19(火) 08:12:14.24:BDyhgoG4 Delphi Community EditionとC++Builder Community Editionは同時にインストールできないんだな。 : [sage] 2019/02/19(火) 09:38:23.94:5KoJ2HbW 例えばこういうのは? ファイル名文字列をバイト単位で数値化して加算 f0 = 0x65 + 0x30 = 101 + 48 = 149 f1 = 150 f2 = 151 f01 = 0x65 + 0x30 + 0x31 = 198 数値化した値で降順ソート つまり 格納されてるファイル名を文字ではなく文字コードの数値合計でソート : [sage] 2019/02/19(火) 09:58:03.22:5KoJ2HbW 補足 f01 = 0f1 = 1f0 になってしまうので f(filename)文字列の桁数 len:=length(f) で文字列制限を設けて for i:=1 to len do if i<10 then a:=a+Ord(f[i])*10 else a:=a+Ord(f[i]); 適当処理 : [sage] 2019/02/19(火) 16:58:58.81:kMKRA1xT 有り難うございます おもしろい・・・ : [sage] 2019/02/19(火) 17:54:17.46:oJBYXncw それだと abcd5.txt bbcd1.txt というファイルがあった場合に bbcd1.txt abcd5.txt という並び順になっちゃうんじゃね? あくまで"文字列"+"数値" というファイル名に対して"文字列"で比較し、"文字列"が同一なら"数値"で比較する必要があると思うが の場合、数字が文字列の一部だった場合に正しくソートされないって問題があるけど そういう場合のファイル名はあまり意味がないから気にしないようにしている それと先頭が数字の場合は文字列の一部として扱ってる : [sage] 2019/02/19(火) 19:07:51.51:0tdxPmy7 StrCmpLogicalW : [sage] 2019/02/19(火) 19:34:05.73:oJBYXncw 自分の場合、壱弐参なんてのも数値として扱うようにしている(したい)からAPIだと望んだ結果を得られない 「数値もしくは数値に変換可能なもの」同士の比較の場合だけ整数として比較してる : [sage] 2019/02/21(木) 17:17:10.52:2mlLSirQ begin var i: Integer; i := 0; end; コードフォーマッタ使うとこうなってしまうのだけどvarのあとで改行しない設定ってどこ? : [sage] 2019/03/12(火) 15:37:42.39:G73gvPJk ttps://qiita.com/ht_deko/items/41e95154e8da2f901698 コメ欄w : [] 2019/03/12(火) 16:19:08.39:8KtfShI4 Sorry, my bad. My memory is confused. But, so what? I mean, the fact is you humiliate Linus and Kernighan in such a way that they never know such a thing as you said. たしかに恥ずかしい : [sage] 2019/03/14(木) 12:21:21.05:w5DEurD7 結局なんだったのアレ? : [sage] 2019/04/02(火) 23:02:52.38:Jpqx4ytb ちょっと教えてほしいんですが、社内イントラネット環境で50台くらいのクライアントPCと 1台のサーバーで双方向に情報をやり取りするVCLフォームアプリを作りたいですが Delphiだと何使って構築するのが良いのでしょうか? 上からの命令でDelphi使うことなって調べてみたんですが、検索するとDataSnapとか RESTとかのキーワードが出てきますが自分の経験がDelphi7でストップしていて 現状についていけてません。よろしくおねがいします。 : [sage] 2019/04/03(水) 02:20:05.63:ZykPhSzn 情報のやり取りだけでは何とも言えんなー それだけの要件だとIndyかWinsocksで通信したらええんちゃうってなる : [sage] 2019/04/03(水) 05:47:42.38:qbGQvqkC ふつーにIISで鯖立てて、httpでやりあえばよくね? : [sage] 2019/04/03(水) 06:04:14.50:Vd76zIcd CのDLLは普通にDelphiでも使える。 つまりcurlとかも普通に選択肢になると思う。 : [sage] 2019/04/03(水) 09:22:36.44:CI6gl4VO なんでDelphiが指定されたんだろう? 今まで使ってた訳じゃないのに : [sage] 2019/04/04(木) 06:32:46.99:HLoaCcLX ネィティブ系だと実質C++かDelphiかの選択肢しかなくね? : [sage] 2019/04/04(木) 19:27:06.29:GNoSo19c そだねー : [sage] 2019/04/12(金) 06:11:32.75:MYAmm+z/ Firebird + Apache + SOAP : [sage] 2019/04/12(金) 06:17:57.84:MYAmm+z/ [Delphi]Windows XPの規則(自然順ソート・natural sort・natural ordering)ででファイル名をソートする ttp://jump.5ch.net/?https://www.gesource.jp/weblog/?p=5947 : [sage] 2019/04/26(金) 08:30:46.09:l06kgRZY ttp://jump.5ch.net/?https://www.embarcadero.com/jp/products/delphi/starter Community Editionで使えるか試してみ : [sage] 2019/04/26(金) 08:31:55.46:l06kgRZY DBはPostgreSQLかMariaDB : [sage] 2019/05/06(月) 11:11:11.14:WAQCiPA3 UnZIP32.DLLとかUnRAR32.DLLでRARファイルの操作する場合の質問です 例えば BOOL WINAPI UnrarCheckArchive(LPCSTR szFileName,const int iMode); と定義されてるUnrarCheckArchive関数をDelphiで定義すると UnrarCheckArchive: function(szFileName: LPCSTR; const iMode: integer): Boolean; stdcall; こんな感じなって通常はこれで問題ないのですが、 Unicode文字(バ、ガなどの濁音とか)が混じってるファイル名の場合上手く行きません szFileNameがLPCSTRだからAnsiString扱いなのでUnicodeのファイル名を渡せないのもの当然なのですが、 なにかプログラム側でできる回避策はないでしょうか? : [sage] 2019/05/06(月) 12:25:07.78:a/Eukqc8 使用しているdelphiのバージョンを書いてください。 delphi2009前か後かで回答が変わるかもしれないからです。 UnrarChechArchive関数の仕様に基づいて型キャストしてやれば良さそうな気がします。 例えばnull終端wide stringという仕様なら、渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。 : [sage] 2019/05/06(月) 13:23:28.45:WAQCiPA3 レスありがとうございます 使用してるDelphiは2010です >UnrarChechArchive関数の仕様 szFileNameはLPCSTRなので32bit系のDLLではnull終端のAnsiChar配列(のポインタ)になってると思います >渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。 var Path : string; UnrarCheckArchive(PAnsiChar(PWideChar(Path)), 0); この型キャストでは残念ながら上手く行かないようです : [sage] 2019/05/06(月) 20:04:43.46:6T4so0Ox LongFileNameをShortFileNameに変換すると 幸せになれる : [sage] 2019/05/06(月) 20:48:15.87:WAQCiPA3 ナイスアドバイスです GetShortPathNameで上手く行きました おかげさまで幸せになれました ありがとうございました : [sage] 2019/05/10(金) 10:35:30.18:VUdPAgci TDateTime datetime = VarToDateTime("令和元年5月10日9時10分15秒"); 今はエラーが出るんだがそのうち対応されるのか? : [sage] 2019/05/10(金) 20:47:06.76:bRXsPgWN FormatDateTime('ge', Now); レジストリに令和を加えてから上記を実行すると令1 って出るね : [sage] 2019/05/11(土) 03:08:09.14:KNhq3FbT いずれWindowsアップデートで対応するらしい ttp://jump.5ch.net/?https://support.microsoft.com/ja-jp/help/4469068/summary-of-new-japanese-era-updates-kb4469068 コマンドプロンプトでこれを実行するとレジストリに追加される REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras /v "2019 05 01" /t REG_SZ /d "令和_令_Reiwa_R"
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。