2ch勢いランキング アーカイブ

くだすれ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"

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら