◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

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


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1476332514/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

201デフォルトの名無しさん2017/01/04(水) 23:55:57.26ID:07zJ2hFc
ごめん

post-/sendmessageにはwm_closeみたいな表示するメッセージはなかった

独自のメッセージを定義して受け取った側でshowするか
showwindow(async)を使うかだね

202デフォルトの名無しさん2017/01/05(木) 00:45:48.42ID:sWl9IbhJ
>>199
TThread.Synchronizeで、メインスレッドに切り替えてから、引数で渡されたコールバックメソッド(手続き)でサブフォームを表示させるとか

2031942017/01/05(木) 06:34:16.06ID:KgVZC7r0
>>198
エラーが消えて無事に動きました。
ありがとうございます。

こういうのはIDEが教えてくれるのかと思って
いましたが、有料版だとそういう機能は
あるんでしょうかねー

204デフォルトの名無しさん2017/01/05(木) 07:19:36.75ID:DrifgVvY
>>203
関数や手続きが定義されていないってエラーが出たときはその関数などのヘルプを見て
そこに書いてあるユニット名が自分のプログラムのuses節に書かれているか調べるといいよ。

2051992017/01/05(木) 09:38:01.68ID:u8XERnLo
>>200,202
ありがとうございます。
教えてもらった方法を調べながらやってみます。

206デフォルトの名無しさん2017/01/08(日) 16:20:11.76ID:lAdNqeO/
TShellCtrlコンポーネントって、デモに含まれるものなんだよね なんでVCLに含めなかった??

207デフォルトの名無しさん2017/01/09(月) 14:24:09.01ID:KdQvIKlc

208デフォルトの名無しさん2017/01/10(火) 11:27:52.10ID:D5z5IiVv
マルチスレッドが終了したかどうか確認するのに、フラグで確認してるんだけど、
なんかもっとスマートな方法ってありませんか?
ググったらWaitForが出て来たのですが、hoge.WaitForとしてもハンドルエラーとか出て使えませんでした。
宜しくお願いします。

209デフォルトの名無しさん2017/01/10(火) 12:33:32.63ID:8tL5nmKS
何があなたのスマートの基準なのか?
フラグは別に悪くないと思うけど。

210デフォルトの名無しさん2017/01/10(火) 17:34:35.55ID:cSdSlPHe
freeが一番確実じゃない?

211デフォルトの名無しさん2017/01/10(火) 17:41:03.73ID:9hDOaePS
>>208
hogeってTThread?
そんだったらTThread.FreeOnTerminateをTrueにしてるから、
スレッドが終了してFreeされてるから、ハンドルエラーと出てくるんだろう。
FreeOnTerminiateをFalseにすればOK(そのかわりTThreadの破棄は自分でやる必要がある)。

212デフォルトの名無しさん2017/01/10(火) 18:11:59.83ID:uT10hEea
終了したか確認するのにWaitForしたら確認じゃなく待機しちゃってダメじゃないのかと思うけど。
FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てるので良くないかい?
あとはメインフォームに終了通知としてメッセージ送るとか。
Win32API使うのOKなら FreeOnTerminiate:=false; にして
スレッドハンドルに対して WaitForSingleObject (タイムアウトは0に設定)使い
WAIT_OBJECT_0が返るかWAIT_TIMEOUTが返るか確認する。
もしくはGetExitCodeThread関数を使うとかかな。

213デフォルトの名無しさん2017/01/10(火) 18:56:40.06ID:XaHxjxQc
そういやスレッドの終わり方の議論が2、3年前にあったな

214デフォルトの名無しさん2017/01/10(火) 19:15:27.36ID:9hDOaePS
FreeOnTerminateが使えない?とかいう議論じゃなかったっけw

215デフォルトの名無しさん2017/01/10(火) 21:06:50.37ID:8tL5nmKS
FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てる

に賛成。簡単確実。

216デフォルトの名無しさん2017/01/11(水) 07:54:30.57ID:7+b9GoiT
>>215
そのフラグの排他制御は簡単じゃないよ

217デフォルトの名無しさん2017/01/11(水) 08:27:35.32ID:7+b9GoiT
ああOnTerminate 内はメインスレッドか。
なら簡単だわ。メンゴ。
昔はOnTerminateイベント無かった希ガス

2182082017/01/11(水) 08:51:02.04ID:jn+AzvnI
おはようございます。
皆さん、ありがとうございます。
フラグがやはり良さげなんですね。

もう1つ教えて下さい。
スレッドの中で
try
stringlist:=TStringList.Create;
while not Terminete do
begin
何かの処理
end;
finally
stringlist.free;
End;
とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
異常終了した時はfinallyの処理をしてくれます。
stringlistの解放はOnTermineteでするのが普通なのでしょうか?

219デフォルトの名無しさん2017/01/11(水) 12:16:51.30ID:CK/PUOqI
>>218
構文が変だよ

tryが抜けてる

220デフォルトの名無しさん2017/01/11(水) 14:34:41.49ID:Rshx8mvt
>>219
tryはあるが?

221デフォルトの名無しさん2017/01/11(水) 14:43:08.49ID:mOqhfYH5
>とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
んなわけない。ちゃんとfinallyの処理するはずだからもっとしっかり確認しよう。

>フラグがやはり良さげなんですね。
もうちょっと具体的にスレッド終わった後何したいのかとか書いてくれんと答えようがねぇ。

222デフォルトの名無しさん2017/01/11(水) 17:34:02.96ID:y79IyYLw
>>220
ホントだtryはあった...でも
最近のdelphiは仕様が変わったのか...

念のため例外処理入れてみたら?

list=:tstringlist.create;
try try
while not terminated do begin ...end;
// ここで正常処理終了のフラグをセット
except....end;
finally list.free; end;

223デフォルトの名無しさん2017/01/11(水) 18:26:26.78ID:tCuecbSb
>>218
>TermineteをTrueにして終了するとfinallyの処理をしてくれません。
どうやって確認したの?
あとTThreadの派生クラスならTerminateはメソッドとTerminatedプロパティが使える。

>stringlistの解放はOnTermineteでするのが普通なのでしょうか?
そんなことはない。

224デフォルトの名無しさん2017/01/11(水) 18:29:24.22ID:+wq8yOB3
昔昔、QuadrupleDを使ってやってたサウンドの再生を最新のDelphiでやりたいんですが、使えるライブラリを探してます。

・複数のwaveファイルをマルチチャネルで読み込んでそれぞれ別個に再生したい
・チャネル単位でループ再生、ピッチ変更、音量変更がしたい

あるかな…(´・ω・`)

225デフォルトの名無しさん2017/01/11(水) 21:03:36.27ID:go3Ym2g4
ブレーク入れてね
ステップで見るときブレーク入れないと
見かけ飛ばすから

226デフォルトの名無しさん2017/01/12(木) 06:31:56.17ID:a5xM53E0
フラグの排他制御は簡単だと思うが。
boolean変数一個なら読み書きは1命令で、割り込まれることはないだろうし
書く前に消されちゃうようなコードを書かなければいいだけ。

227デフォルトの名無しさん2017/01/12(木) 07:43:07.08ID:pteiZ85t
>>226
きちんとした知識がある人にとっては簡単だよね

228デフォルトの名無しさん2017/01/13(金) 08:37:54.09ID:ZuNdbFdt
フラグをグローバルやメインフォームなどに
持たせるのはなんか古臭いという気持ちはある

229デフォルトの名無しさん2017/01/14(土) 13:08:24.40ID:gjFRSJdj
元号変わったらどうすっかな
D7だと対応できんだろ

230デフォルトの名無しさん2017/01/14(土) 13:25:01.19ID:h3eR+GmF
>>229
元号とか使わないか
自力で変換

OSの機能を使ってるんだったら大丈夫か
ただvistaも今春でサポート終了するけど

231デフォルトの名無しさん2017/01/17(火) 17:31:21.77ID:O6RaaTFv
Berlin試したみたけど以前ここで言った
gifアニメのバグが解消されてないな

232デフォルトの名無しさん2017/01/18(水) 13:40:10.70ID:YhLwefSp
string、ansichar、pansicharの型キャストってどうやるの?
暗黙の型キャストの警告を消したいんだけど、ググってstrpcopyとかのサンプルを実行しても消えない。

233デフォルトの名無しさん2017/01/19(木) 15:50:04.40ID:5UKguDxp
>>232
string(ansistring変数)とかで消えない?

234デフォルトの名無しさん2017/01/20(金) 09:53:10.19ID:1eiriAuJ
具体的なコードを挙げてみては?

235デフォルトの名無しさん2017/01/27(金) 12:59:02.17ID:/S2JEwyl
Konopkaコンポーネントのアンインストール方法を教えて下さい。
インストール中に異常終了したのでアンインストールしたいのですが、
アンインストールも途中終了してしまって、行き詰ってしまいました。
よろしくお願いします。

236デフォルトの名無しさん2017/01/27(金) 14:49:41.44ID:5OkJm/3R
>>235
マイドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaのフォルダと
パブリックのドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaの
リポジトリデータを削除すればよかったと思う。(心配ならバックアップとっといてね)

konopka、インストール失敗するとアンインストールもできなくなるんだよね。

2372352017/01/27(金) 22:35:47.30ID:/S2JEwyl
>>236
ありがとうございます。
助かりました。

238デフォルトの名無しさん2017/02/01(水) 09:20:48.68ID:5qzbuLNZ
入力の支援機能で出て来た候補にカーソルを合わせて、
ピリオド打ったら選んだ候補が入力される設定ってどこにありますか?
ベルリンのup2を入れたのですが、最初は良かったのにいつの間にかピリオドで選択されなくなってしまいました。

239デフォルトの名無しさん2017/02/06(月) 19:05:34.17ID:xOrt0AYX
StringGridのセルをデータの合わせて塗りつぶすことをしています。
タイマーイベントで0.2秒毎にデータに変化がなくても一旦デフォルト色にしてから他の色を塗っています。
そのせいだと思うのですがセルの選択ができません。
セルをランダムに色を塗りつつ、セルの選択もできるようにするにはどうしたらいいでしょうか?

240デフォルトの名無しさん2017/02/06(月) 20:35:02.64ID:iNTq03fP
おんどろーせる

241デフォルトの名無しさん2017/02/06(月) 20:38:57.75ID:U9v8FdBr
TSringGridのOnDrawCellイベントの引数で渡されるTGridDrawStateで、選択されたかどうか判断できる。
選択されてないときだけ、色を変更するよろし。

2422392017/02/06(月) 22:36:47.54ID:xOrt0AYX
>>240.241
ありがとうございます。
まだ、試してませんがどういうコードを書けば良いか案が浮かびました。

243デフォルトの名無しさん2017/02/07(火) 04:11:46.40ID:odr3U2KT
タイマーで200ミリ秒ずつやってるところが壮絶にまぬけっぽい 小学生以下の知能

244デフォルトの名無しさん2017/02/07(火) 07:48:29.48ID:uL0lBsbg
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

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

2452392017/02/07(火) 14:14:09.54ID:vf4YiH1/
昨日はありがとうございました。
TSringGridの特定のセルに数値を書き込むのにDrawTextを使って右寄せで書き込んでいます。
この書き込んだ数値を後から取得することってできますか?
セルにHintみたいに埋め込めたら簡単なんですけどググっても分かりませんでした。

>>243
シーケンサーの信号状態を監視するんで手っ取り早くタイマー使ってます。

246デフォルトの名無しさん2017/02/07(火) 21:01:48.32ID:qgMFF5pP
その「数値」はどこにしまってあるの? それは自分で世話するしかない。
DrawTextは文字列を描画するだけで、何書いたかなんてどこにも覚えていないよ。

247デフォルトの名無しさん2017/02/07(火) 22:53:48.58ID:GEF3mu7C
StringGridなんだから、Cellsプロパティを通して、文字列として各セルにでも入れときゃいいんでね?(ハナホジ

248デフォルトの名無しさん2017/02/08(水) 07:16:05.46ID:3kd0dWw+
>>245
格納するオブジェクトも実装したらいいんじゃ

249デフォルトの名無しさん2017/02/12(日) 16:38:05.20ID:iYdKWxWq
整数ならcellのobjects(だったっけかな)に入れときゃ良いじゃん

250デフォルトの名無しさん2017/02/26(日) 22:21:06.30ID:S5w82ICF
vs2015アンインスコしたらDel10.1でコンパイルできなくなった。
Del再インスコするしかない?

251デフォルトの名無しさん2017/02/26(日) 22:23:37.25ID:8hwVjJWR
環境変数消されてるとか?

252デフォルトの名無しさん2017/02/26(日) 23:37:41.28ID:S5w82ICF
>>251
ありがとうございます。
調べてみます。

253デフォルトの名無しさん2017/03/14(火) 14:46:39.28ID:SzM2z6wx
スレッド1で変数aの値を読み書きしていてスレッド2では変数aを読み込みしかしない場合って干渉対策って必要?

254デフォルトの名無しさん2017/03/14(火) 15:58:50.80ID:vbV/Jpv3
うん

2552532017/03/14(火) 22:26:02.83ID:M7D1b0oM
ありがとうございます。
干渉対策じゃなくて排他処理っていうんですね。
失礼しました。
各スレッドで共有する変数を集めたUnitに変数aを宣言して使っています。
この変数aを複数のスレッドからアクセスする場合、Synchronizeを使うのでしょうか?
SynchronizeはスレッドからVCLを描画する場合に使うと書いてあったので、フラグを立てるとかして
排他処理をするのでしょうか?

256デフォルトの名無しさん2017/03/14(火) 23:05:45.72ID:137tpMLx
クリティカルセクションでも使えばいい、どっかで
CS := TCricalSection.Create()で作っておいて、

同時にアクセスされたら困るところで
CS.Enter();
try
 共有リソースの変数Aにアクセスなど
finally
 CS.Leave();
end;

257デフォルトの名無しさん2017/03/14(火) 23:07:46.72ID:137tpMLx
まぁ、他にもSyncObjs.pasにTInterlockedとかあるけど、
そこは自分で頑張ってくれ

258デフォルトの名無しさん2017/03/15(水) 07:56:13.67ID:OMQXGO2Q
>>255
Synchronize内の処理はメインスレッドでの処理となるから
同時アクセスがありえなくなるということらしいよ

2592532017/03/16(木) 09:51:28.35ID:IMOOaoXR
皆さん、ありがとうございます。
これから調べて確認しようと思うのですが、最後に1つ教えて下さい。
シンクロナイズを使い過ぎるとマルチスレッドの意味が無くなるとヘルプに書いてありました。
クリティカルセクション等は使い過ぎてもメインフォームの反応が悪くなるとかそういう事が無くなる、若しくは低減されるとかあるのでしょうか?
もし、それならクリティカルセクション等を推奨すると思うので使い過ぎはやはりダメとは思いますがどうなんでそょう?

260デフォルトの名無しさん2017/03/16(木) 17:53:22.67ID:Xe646fvV
どこからが使いすぎだと思う?

261デフォルトの名無しさん2017/03/16(木) 18:29:10.53ID:vq3uRAd1
>>259
ウインドウ描画などしているスレッドが「メインVCLスレッド」。
要するにメッセージループが動作しているスレッド。
Synchronizeはこのメッセージループに「渡したプロシージャの処理を任せる」ため
Synchronizeを多用すると「メインフォームの反応が悪くなる」という状況を生む。
Synchronizeはあくまで変数のアクセスと言った軽い処理に限定すればいい。
この場合、メッセージループがウィンドウメッセージを処理する合間に変数へのアクセスを処理する程度なので
その程度で「メインフォームの反応が悪くなる」ということはないだろう。
ただ、もし重たい処理を任せてしまうと、フォームのイベントで処理するのと同じになってしまう。
(フォームなどコンポーネントのイベントはメインVCLスレッドで動作している)
この場合メインフォームの反応が悪くなる。

クリティカルセクションはメッセージループとか関係ないので、それによってメインフォームの反応が悪くなるということはない。
ただ例外として、メインVCLスレッドでクリティカルセクションを使うと、
他のスレッドが使用中はメインVCLスレッドは待機してしまうのでメインフォームの反応が悪くなることはある。

262デフォルトの名無しさん2017/03/17(金) 07:45:46.44ID:88SBOT8h
>>259
問題は「使い過ぎ」の定義だと思うけど
僕は1つ1つの処理の長さが長くなってしまった場合をいってるのではないかと思う。
同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
それを否定するようなプログラミングはもはやスレッドではないということではないかと。

263デフォルトの名無しさん2017/03/17(金) 09:01:04.72ID:88SBOT8h
あ、もしかしたら質問に答えてなかったかな?
つまりsyncronizeだろうがcsだろうが
占有状態が長くなるようなロジックになるなら同じことだ

264デフォルトの名無しさん2017/03/17(金) 17:25:37.85ID:c2lVMe4f
>>262
今のcpuは普通にマルチコア、マルチスレッドじゃない?
同時に動いてんじゃない?

265デフォルトの名無しさん2017/03/18(土) 10:42:58.16ID:TEQZ8ThN
>>264
そういう御仁が現れるだろうなとは思ってた。
申し訳ないがマルチコアなどの詳細な仕組みが現話題の結論に
影響を与えるものではないので無視させてもらいます。

266デフォルトの名無しさん2017/03/18(土) 11:15:40.91ID:uhuX0RUO
OSのタスクスケジューリングやスレッド、Delphiのメインスレッドの話がごっちゃ混ぜになっててカオスカオス

267デフォルトの名無しさん2017/03/18(土) 11:18:08.58ID:At1yjhtj
細かい処理が交互にっていつの時代のタスク割り当ての話してるんだ

268デフォルトの名無しさん2017/03/18(土) 17:26:39.99ID:qhwfKSm6
>マルチコアなどの詳細な仕組みが現話題の結論に影響を与えるものではない

今の話題においてこれは正しいと思う。

>同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
この話も同じく、“現話題の結論に影響を与えるものではない”

269デフォルトの名無しさん2017/03/18(土) 17:42:46.56ID:uhuX0RUO
中途半端に説明するからややこしくなる
SynchronizeにしろCriticalSectionにしろDelphiのメインスレッドが処理待ちになる状況ができれば反応は悪化する

くらいでイナフ

270デフォルトの名無しさん2017/03/18(土) 23:22:19.03ID:toYG3enn
>>262が変な説明を入れたのが元凶だ

271デフォルトの名無しさん2017/03/19(日) 10:14:13.46ID:pPSf+p35
>>269
メインに限らないっしょ。同期されたサブスレッド間でも片方が長い処理すれば片方は待ちになるわけだし。

272デフォルトの名無しさん2017/03/19(日) 10:31:00.81ID:Zac56zGn
>>271
メインスレッドを待機が発生するスレッドと置き換えて考えたら良いだけの話であってそのあたりは柔軟に考えてくだちい

まー、サブスレッド同士が待機しあって停滞しててもメインスレッドがそこに巻き込まれてなければ(見かけ上は)レスポンスの悪化とかは無いけどね

273デフォルトの名無しさん2017/03/19(日) 12:59:15.63ID:pPSf+p35
結局「スレッド」という英単語が同いう意味かってだけだね。
あと例えば一度にたくさんのログインがあるサーバーなんかは
スレッドたくさん作ることによるメモリの圧迫が指摘されてて
メッセージ処理型に回帰してるよね。
つまり同時(的な)処理においてスレッドが万能ってわけじゃない
ことも知ってたほうがよいよね。

274デフォルトの名無しさん2017/03/19(日) 16:36:19.37ID:z/4QTPa3
で、そのメモリ圧迫とやらは今回の質問のどこにかすっているのかね?

275デフォルトの名無しさん2017/03/19(日) 18:47:31.53ID:Zac56zGn
どんどん話題がすり変わっていくな

276デフォルトの名無しさん2017/03/20(月) 01:59:24.49ID:Qzpue34I
>>262
が悔し紛れに難癖つけてるだけっしょ

277デフォルトの名無しさん2017/03/20(月) 07:33:47.40ID:/HDavIr2
予想どおりの反応ですw

278デフォルトの名無しさん2017/03/23(木) 17:32:52.95ID:0AhE1jWZ
10.2tokyo入れて見たんだけど、10.1でgetitから入れたコンパーネントが入れられなくてプロジェクト開けられない。
エンバカ何なんだ?

279デフォルトの名無しさん2017/03/24(金) 07:00:18.71ID:w0n9pMnW
>>278
よくある
Getitじゃなくて配布元からダウンロードして入れたらOk

280デフォルトの名無しさん2017/03/25(土) 07:13:02.05ID:Hlan26fq
StarterのBerlinをTokyoにするんだけど
いったんBerlinをアンインストールするんだっけ?

281デフォルトの名無しさん2017/03/28(火) 04:59:23.66ID:by30piXi
StarterのBerlinをインストールしたままTokyoをインストール出来ましたし、同時に起動出来ました。

公式ブログには逆の順番(Tokyo→Berlin)でのインストールは、
お勧めしませんって書いてました。

282デフォルトの名無しさん2017/03/28(火) 10:13:09.88ID:o61kLVYu
>>281
ありがとう

上書きインストールされないってことか...

283デフォルトの名無しさん2017/03/31(金) 10:26:45.88ID:SnNLRdP6
2007からXEにあげるのに、いまさらながらユニコードに取り組むんですが、
・フォーム上で入力されるのはUTF-16
・UnicodeStringで保持するのはUTF-16
・ソースはUTF-8
の違いがあるようなのですが、ソースでリテラルで記述したUFT-8の文字を
コンポーネントのテキストやUnicodeStringに代入したりするとごちゃ混ぜに
なってしまうんですか?

2842832017/03/31(金) 10:42:53.79ID:SnNLRdP6
文字コードを確認してみたのですが
var
c: Char;
begin
c := 'あ';
ShowMessage(Format('%x',[(Ord(c))]);

のソースで、ソースをバイナリエディタで見てみると、'あ'の部分
のコードはUTF-8ですが、Ord(c)はUTF-16のコードでした。
これは、勝手に文字コードの変換が掛かるのですか?

285デフォルトの名無しさん2017/03/31(金) 11:27:56.20ID:tBgePiep
こう言うとアレだけど
普通に使うときはユニコードとか
意識する必要ないんじゃない?

2862832017/03/31(金) 11:48:21.75ID:SnNLRdP6
>>285
例えば、

s := Edit1.Text + 'が入力文字列';

のような場合だと、sにUTF-8の文字コードとUTF-16の文字コードが混在して
まずいような気がするのですが、プログラム動かしてみると、コンパイル時に
ソースコードでの文字列はUTF-16に変換してるのかな?と思ったのですが。

287デフォルトの名無しさん2017/03/31(金) 12:08:45.28ID:YNGnrt5P
便乗失礼します。
2009以降
・ShowMessageの内部では、UnicodeStringとして表示する文字列を処理します。
ってことだったと思うのでUTF-16変換されてるのかと

異なるコード間では暗黙の変換される
でよかったでしょうか?
どこまで変換されるのかは確認してないのと、
Chr関数とか文字数、Byte数を数えるときに気をつけて考えておく、くらいでしか認識してないのですが

https://edn.embarcadero.com/jp/article/38783
https://edn.embarcadero.com/jp/article/38791

2882832017/03/31(金) 12:14:44.98ID:SnNLRdP6
>>287
リンク先を読んでみると、文字列の代入時に変換してるみたいですね。
ありがとうございます。

289デフォルトの名無しさん2017/03/31(金) 12:27:36.02ID:tBgePiep
>>286
大丈夫
ソースファイルがutf8とか意識しないほうがいいよ

文字列リテラルもstring変数もunicodeだよ

290デフォルトの名無しさん2017/03/31(金) 12:33:03.27ID:tBgePiep
>>288
内部でどう処理してるのか知らないけど
このケースだと代入時(実行時)に変換してるのかな?

実行ファイルの最後に定数が保存されてたと思うけど
すでにunicodeになってたような気がする

291デフォルトの名無しさん2017/04/01(土) 09:16:09.24ID:FVobg3nm
>>285
逆に、常に意識してないと嵌まることがあるよ。

292デフォルトの名無しさん2017/04/01(土) 11:20:45.32ID:1uakO4Jp
コンパイル時に変換

293デフォルトの名無しさん2017/04/01(土) 14:47:04.87ID:MIBbFxu2
>>288
リンク先を読んでみると、「すでにUnicodeとして扱われている」ってのが分かると思うんだが。

>Delphi 2009で、内部的に大きく変わっています。Delphi 2009では、Unicodeを標準文字列型として採用しているために、このコードで使われている文字列はすべてUnicodeです。
>Sに代入している ‘Hello, World.’ は、Unicodeです。

ソースの文字コードがなんであれ、リテラル文字列の扱いはUnicode。

C++Builderで扱う場合はLが付いているかいないかでリテラル文字列の扱いが変わると思う。

294デフォルトの名無しさん2017/04/01(土) 16:29:34.25ID:xnSlrZsr
てか簡単なサンプル作って試せば済むことじゃん

昔のバージョンのdelphiで
文字コードを意識する必要があるケース以外
最近のバージョンのdelphiでも
unicodeであることは考えなくていいんじゃない

295デフォルトの名無しさん2017/04/01(土) 21:40:45.92ID:JcotD4lU
真に気を付けないといけないのは1文字に複数文字が入ってるサロゲートペア

見た目が同じだからハマる

「ば」と「ば」が違う文字とかわっかんねーよ

296デフォルトの名無しさん2017/04/02(日) 09:37:47.98ID:OL+frmBm
正直UTF8で統一したほうがよかったと思う

297デフォルトの名無しさん2017/04/02(日) 09:38:21.10ID:WSPdqmkD
>>295
最後の行は「ば」?
これってサロゲートペアなのか?
それとも別の文字が化けた?

それと
内部の文字列がunicodeになった話と
unicode文字列を処理する話は
微妙に違う話だぞ?

298デフォルトの名無しさん2017/04/02(日) 09:40:01.86ID:OL+frmBm
UTF16も実は可変長という落ちなんだからややこしくなっただけだと思う

299デフォルトの名無しさん2017/04/02(日) 10:43:02.23ID:3chV0onz
>>297
2chだと化ける可能性あるから両方サロゲートペアじゃないよ

入力ソフトによってはかな入力するとサロゲートペアになるんよ
んでUTF16の入力を受け付けるもんだからそのままDBに格納したりしてあとで検索にひっかからないとか
コードの仕様で言うならIF条件すり抜けたりとか

おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった

300デフォルトの名無しさん2017/04/02(日) 11:06:40.43ID:5Z3z/Zq2
は̋

301デフォルトの名無しさん2017/04/02(日) 12:55:55.04ID:n+5RCyoZ
>>295
それ、ちょっと間違ってるな。
そのケースはサロゲートペアじゃないだろ。
サロゲートペアは単にUTF-16の2バイトのコードユニットで2つのコードユニットで
1文字を表すケースの事でしょ。

「ば」の話は合成文字だか結合文字だかそっちの話じゃん。

302デフォルトの名無しさん2017/04/02(日) 13:01:11.75ID:n+5RCyoZ
>299
>おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった
だから、それも全然関係ないから。UTF-8だから解決するというのは勘違いだから。
合成文字の問題は「正規化」使って解決する問題。

303デフォルトの名無しさん2017/04/02(日) 13:05:11.00ID:3chV0onz
>>302
はしょってるから書いてないけど正規化もしてるよ

文字での説明に重箱の隅つつかないでくださいな
気にしないでやってるとそういう問題(にぶつかる可能性)もあるよって話です

304デフォルトの名無しさん2017/04/02(日) 13:10:15.31ID:n+5RCyoZ
言葉の使い方が完璧に間違ってるのに重箱のすみつつかないでっていわれてもなぁ・・

君たちが議論してる「ぱ」と「は」+「゜」はサロゲートペアと全然関係ないんだけどな。
合成済み文字と基底文字と結合文字の話で合って、
サロゲートペアと全く関係ない。

305デフォルトの名無しさん2017/04/02(日) 13:13:23.66ID:3chV0onz
つまりこれこれこういう問題があってこうしましたって1から10まではしょらず正しい言葉をつかって説明しないとここには書き込むなって事ね。了解。




めんどくせ

306デフォルトの名無しさん2017/04/02(日) 13:17:10.52ID:n+5RCyoZ
完全に言葉の定義を間違ってるんだから、教えてあげただけじゃねぇかよ。

別に間違ってたことに対して、「おまえら馬鹿?」みたいなくだらい煽りとか
俺はする気ねぇし。丁寧な言葉で教えてあげたら、その言いぐさ。

307デフォルトの名無しさん2017/04/02(日) 13:20:18.66ID:8zECKtY8
君たち ではない。

308デフォルトの名無しさん2017/04/02(日) 13:23:02.99ID:JDqJ1ftS
言葉の定義とやらが間違ってたとしても、
バグの原因になる事のコメントは個人的に大歓迎(こなみかん

309デフォルトの名無しさん2017/04/02(日) 14:03:03.40ID:iqf+IrkA
俺には難しい話をしてるけど、文字扱うには正規化とやらをやって、utf8とか16とかに統一してから加工したり検索したりしないとハマるってこと?

310デフォルトの名無しさん2017/04/02(日) 17:46:06.81ID:WSPdqmkD
サロゲートペアに関連してだけど
MECUtilsとか使ってやったりするの?

今まであんまり意識したことないから
注意喚起は嬉しいけどメンドクサ過ぎるね

311デフォルトの名無しさん2017/04/02(日) 18:37:26.81ID:9KwT0wNW
Unicode化の弊害というかなんというかだけど、
マルチデバイスも相まって想定外の変な文字が入る確率っていうのは
確かに飛躍的に増えてる・・・気がする。

312デフォルトの名無しさん2017/04/02(日) 20:31:47.10ID:n+5RCyoZ
>>310
そんなの使わなくても普通は標準であるだろ。
Character.pasに必要なのそろってる。
TCharacter.IsSurrogate()

313デフォルトの名無しさん2017/04/02(日) 20:47:01.04ID:3chV0onz
>>312
TCharctorなんてものはない

System.Charactor.IsSurrogate(廃止)
もしくは
TCharHelper

314デフォルトの名無しさん2017/04/02(日) 20:48:31.98ID:3chV0onz
おっと綴り間違ってたな
System.Characterだな。また重箱の隅つつかれるところだった

315デフォルトの名無しさん2017/04/02(日) 21:07:50.79ID:n+5RCyoZ
そうなんだ。それはすまん。XE3以降買ってなくて
最新のもってなくて。

316デフォルトの名無しさん2017/04/02(日) 23:41:35.03ID:9/rnzeyZ
今ってディスプレイのアスペクト比が数種類あるけど、皆さんは画面のデザインってどうしてますか?
16:9に合うようにデザインしてる?
それとも、フォームの設定とかで実行時にある程度アスペクト比に合わせてくれる設定とかってある?

317デフォルトの名無しさん2017/04/03(月) 14:57:16.50ID:r7DyphN2
時代は可変

318デフォルトの名無しさん2017/04/03(月) 17:20:51.81ID:vwU/OCff
>>316
全画面表示させない

319デフォルトの名無しさん2017/04/03(月) 18:42:50.88ID:gM/woy0K
>>316
意味分からないが。
ウインドウサイズ自体固定させないし、
Align プロパティを使って固定部分とそうでない部分とを分けるし
プラスTSplitterでユーザの好みにさせたりもするし。
動画や画像でもないならアスペクト比なんて気にしないんじゃないのか。

320デフォルトの名無しさん2017/04/03(月) 21:28:02.74ID:r3n0H3vn
やっぱ、全画面表示させないが簡単でいいな

321デフォルトの名無しさん2017/04/04(火) 06:32:18.18ID:vjUtddW+
>>316
ファイアーモンキーならTScaleLayout使って無理やり対応した事もあります

322デフォルトの名無しさん2017/04/12(水) 07:11:34.88ID:lM5IX7kk
メモリーリークの場所ってdelphiに標準で入ってるリークを監視するやつのフルバージョン入れないと分からない?

323デフォルトの名無しさん2017/04/16(日) 12:03:24.01ID:he8BFR5v
Delphi10.1でのフル機能のfastmm4の使い方を教えてください。
メモリーリークのメッセージは出るのですが、テキストファイルが作成されないです。
よろしくお願いします。

324デフォルトの名無しさん2017/04/17(月) 16:51:42.85ID:y+L9zWaz
DatetimetostringとFormatDateTimeの違いって
procedureであるか、Functionであるか、だけですか?
(引数は異りますが)

325デフォルトの名無しさん2017/04/17(月) 17:16:23.94ID:tXRogAtk
>>324
引数が違うって分かれば
自ずと...

326デフォルトの名無しさん2017/04/17(月) 20:24:58.64ID:y+L9zWaz
>>325
すみません、質問をはしおりすぎでした。

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分手間がかかるなと思ってました。

327デフォルトの名無しさん2017/04/18(火) 09:41:09.25ID:phVpBhu/
何かとの互換性でどうしてもDT2strが欲しかったんじゃないかね

328デフォルトの名無しさん2017/04/18(火) 15:11:31.58ID:nhn9im/Y
>>323
http://mrxray.on.coocan.jp/Delphi/Others/UsageFastMM.htm

ここに書いてある手順でやってみた?

329デフォルトの名無しさん2017/04/18(火) 18:41:12.40ID:EH33vxsU
>>326
ソースコード見てみると
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を呼び出しているだけ。

330324,3262017/04/19(水) 09:04:32.22ID:/KRyUyJO
>>329
なるほど、参考になりました。ありがとうございます。

3313232017/04/19(水) 15:21:22.52ID:1b3gc8EV
>>328
FastMM4のデモで試した結果、ソースの所のFastMM4 in 'FastMM4.pas'をSharememに変えたらリークの場所がわかる余裕になりました。
Sharememが何かはわかりません。w
円バカのサイトに載ってたのでやって見たらなんとか動作したって感じです。

332デフォルトの名無しさん2017/04/23(日) 00:33:57.32ID:h9OMGlcp
delphi10.1までは問題なかったのにdelphi10.2にしてから
stylebookで指定したstyleが一部反映されなくなりました。

tabcontrolのタブがandroid実機で実行すると
styleが反映されずデフォルトのタブになってますorz

対処方法とか分かる方いらっしゃいますか?
暫くは10.1を使い続けるしかないですかね・・・

333デフォルトの名無しさん2017/04/23(日) 01:24:14.01ID:6D2X13Ox
>>332
Android用のスタイルを一旦削除してマージ

3343322017/04/23(日) 07:38:09.47ID:h9OMGlcp
>>333
アドバイスありがとうございます。

Android用スタイルを削除してマージしてみましたが結果は同じでしたorz

もう少し詳細に書くとIDE上ではタブにもスタイルが反映されているが
ビルドしてAndroid実機で動かすとアクティブなタブだけが
デフォルトになってしまう状態です。

同じプロジェクトをDelphi10.1でビルドし直してAndroid実機で動かすと
アクティブなタブも含めてに正常にスタイルが反映されてます。

また、スタイルに使用しているファイルは「AquaGraphite.style」を
使用していますが他のスタイルファイルを使っても同様の結果でした。

実機はXperia Z3ですが他に持っていないので他機種でどうなるかは未検証です。

3353322017/04/23(日) 07:50:06.92ID:h9OMGlcp
>>333
すいませんTabControlのみしかない最小限のプロジェクトで試したら
正常にスタイルが反映されているのが確認できました。

変な設定がどこかで生きているのだと思います。
失礼しましたm(_ _)m

336デフォルトの名無しさん2017/04/27(木) 08:22:37.61ID:rpeb1FWf
メッセージダイアログやショーメッセージで改行を
使うとメモリリークが出るけどなんで?

337デフォルトの名無しさん2017/04/27(木) 12:14:19.99ID:nqOtHEIU
バグってんじゃね

3383362017/04/27(木) 12:36:20.33ID:axAm+D16
delphiがバグってる?
新規作成でシンプルな状態でやってもメモリーリークのメッセージが出るんだけど、どうすりゃ良いんだろう。
俺だけ?

3393362017/04/28(金) 22:34:22.04ID:WI3n6xVG
メモリーリークを調べているのですが
MessageDlg(IntToStr(123),mtConfirmation, [mbOK, mbCancel], 0);
IntToStr(123)が原因でメモリーリークが起きるみたいです。
Delphiのバグ?コードがダメ?

340デフォルトの名無しさん2017/04/30(日) 09:29:58.72ID:kcq5sr/L
ソースみれば?

341デフォルトの名無しさん2017/04/30(日) 11:59:29.48ID:0p25w19v
336ではないけどソースコード見てみた
ポイントになりそうなところがアセンブリで書かれてた

342デフォルトの名無しさん2017/04/30(日) 12:08:19.89ID:VPr4LyhY
それがどうかしたか

343デフォルトの名無しさん2017/04/30(日) 23:16:41.78ID:rKLNeW5H
1. MessageDlg と同じ引数を持つ、そのユニット内にローカルな関数を書いて、MessageDlg のせいかどうか調べる。
2. IntToStr と同じ引数を持ち、適当な文字列を返す関数を同様に書いてみる。
3. コンソールアプリケーションのプロジェクトを作成して、1.を行って調べてみる。
4. 同様に IntToStr も行ってみる。

344デフォルトの名無しさん2017/04/30(日) 23:36:32.18ID:5yRtGq51
どのバージョンで発生したのかしら?
こちらのTurbo Delphiは
ReportMemoryLeaksOnShutdown := True;
で再現せず。

345デフォルトの名無しさん2017/05/02(火) 01:47:15.38ID:As8TBna0
昔の経験
マルチスレッド内で間違った呼びし、クリティカルセクションの間違った実装

346デフォルトの名無しさん2017/05/02(火) 08:06:56.48ID:Hq/uPbjy
「IntToStr(123)が原因でメモリーリークが起きる」
と判断した理由を開示せよ

347デフォルトの名無しさん2017/05/24(水) 11:04:03.05ID:ipeCfZP9
32biでも64bitでもinteger型は32bitですか?
Pointer型(とPtrInt型)だけが変化すると考えてよいのでしょうか?

348デフォルトの名無しさん2017/05/24(水) 11:54:37.27ID:4nncZNTT
-1 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る

0 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る

349デフォルトの名無しさん2017/05/25(木) 14:51:52.47ID:qme3C1o0
Integer は 32 だけど LongInt は 32 とは限らない

350デフォルトの名無しさん2017/05/26(金) 08:47:10.54ID:trsKQBBQ

351デフォルトの名無しさん2017/05/26(金) 10:06:17.71ID:gif2nYmV
そのページは、たぶん、Win32->Win64 だけの頃のやつ。

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。

とか

http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/%E5%8D%98%E7%B4%94%E5%9E%8B%EF%BC%88Delphi%EF%BC%89

とか

352デフォルトの名無しさん2017/05/26(金) 10:13:55.43ID:trsKQBBQ
>>351
iOSだけ特殊な感じ?変なの。
LongIntとLongWordは使わないほうがよさげですね。何でこんな変な仕様にしたんだろ。

353デフォルトの名無しさん2017/05/26(金) 10:22:32.82ID:trsKQBBQ
あ、iOSにはLinux系も含まれるんですか?
その辺のあやふやさも嫌な感じですね。

354デフォルトの名無しさん2017/07/06(木) 10:33:45.10ID:E7iuEH9H
シンエディットでプロシージャの名前とファンクションの名前を色分けするような使い方をしたいのですが、
シンジェネラルに設定するキーワードの種類を増やす事はでききませんか?
継承してシンジェネラルも自分で作らないと無理でしょうか?

355デフォルトの名無しさん2017/07/06(木) 10:47:02.39ID:1ivNtSqb
シンエディットて何?

356デフォルトの名無しさん2017/07/06(木) 12:16:18.45ID:DKA4KQvd
SynEditのことらしい
これをカタカナで書く感覚が分からん

357デフォルトの名無しさん2017/07/06(木) 13:00:39.86ID:/LwN4Pic
すまん。
あんまり、キーボードとかスマフォの画面とか触れないから音声のやつで入力した。

358デフォルトの名無しさん2017/07/06(木) 16:56:40.09ID:uy+VElX3
キーボードが苦手なプログラマw

359デフォルトの名無しさん2017/07/06(木) 19:47:25.65ID:j2rVCi1D

360デフォルトの名無しさん2017/07/08(土) 15:11:41.17ID:4Sqq07Ob
これがアスペか・・

361デフォルトの名無しさん2017/07/30(日) 22:35:33.76ID:PBa3jUos
昔MCIをいじっていた者です。覚えている人いるかな?
4年くらいメソッドを書いてなくて、送るでwavを聞きたいなって思って久しぶりにコンパイラを触りました。
何をするソフトなのかというとフォームに対してD&DしてTListにD&D元のファイルのフォルダの
ファイル名を取得するソフトなんですが、なぜうまくいかないかわからなくて…。
指摘していただければ幸いです。

362デフォルトの名無しさん2017/07/30(日) 22:37:14.18ID: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}

363デフォルトの名無しさん2017/07/30(日) 22:38:16.16ID: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;

364デフォルトの名無しさん2017/07/30(日) 22:38:43.85ID: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.

365デフォルトの名無しさん2017/07/31(月) 00:52:16.24ID:5UR8c5yg
とこでfmxアプリをタスクトレイに収める方法はないですか?

探すとロシアのサイトにコンポーネントがあったけど
他に方法はないでしょうか?

366デフォルトの名無しさん2017/07/31(月) 05:54:29.90ID:poJtShEs
>>365
Windows専用だけどいい?

367デフォルトの名無しさん2017/07/31(月) 08:21:01.65ID:5UR8c5yg
>>366
ええもちろん

例えばバックグラウンドでネットにアクセスして
通知したりポップアップしたりする感じ

Androidだとserviceを使うんでしょうが
Windowsデスクトップだとタスクトレイに
常駐させるくらいしか思いつかない

こういうWindowsアプリをfmxで作る場合
どうするんでしょうか?

368デフォルトの名無しさん2017/07/31(月) 12:56:22.59ID:m2zUy0za
>>367
WinAPI.WindowsをUSESしてタスクバーから消したいアプリケーションのHWND取得してShowWindow(HWND,SW_HIDE);をぶちかます

タスクトレイにアイコン表示させたりする場合はコード記述でもできるけど面倒だからMonkeyMixerか何か使ってVCLを混在させてTTrayIcon使う

369デフォルトの名無しさん2017/07/31(月) 18:38:00.55ID:AynCBzeT
>>368
ありがとう

MonkeyMixerを調べて見ます

370デフォルトの名無しさん2017/08/01(火) 10:29:01.65ID:8qLxpsQt
TTrayIconはVCL依存がほとんどないから、切り出して使った方が余計なユニットがリンクされなくていいと思う
自分はそうしてる

371デフォルトの名無しさん2017/08/13(日) 13:54:41.72ID:6x3+ks7t
教えてください。

fmxで矩形以外の多角形領域を
Bitmap(.Canvas)間でコピーするには
どうしたらいいでしょう?

Helpを探したんですが見つけられませんでした

苦肉の策で矩形領域を別のBitmapにコピーし
対象の多角形領域外を完全透過に塗りつぶして
それを最終的に目的のBitmapにコピーしてます

よろしくお願いします

372デフォルトの名無しさん2017/08/26(土) 22:45:11.62ID:Siu65+Zd
fmxねぇ...

実行ファイルのサイズが
vclの倍以上になるのはビックリ

でもvirustotalなんかでの誤検知は
確実に減るな

373デフォルトの名無しさん2017/08/29(火) 17:10:04.07ID:sf08cQEA
DBCtrlのKeyPressメソッドで出てくる
^H  ^V  ^X
とかって何を指してるんですか?それぞれ16進で、8,16,18の値なんですが。
ポインタの逆参照以外で ”^” の使い方はヘルプにも無いのですが。

374デフォルトの名無しさん2017/08/29(火) 17:11:49.45ID:pis/sDRy
H 48h
V 56h
X 58h
ctrl+H で 08h
ctrl+V で 16h
ctrl+X で 18h

3753732017/08/29(火) 17:15:51.90ID:sf08cQEA
>>374
コントロールキーを押しながら…の記述に ”^” を使うということですか。
ありがとうございます。

376デフォルトの名無しさん2017/09/20(水) 09:56:54.97ID:lqqkwYAM
ちょっと教えてください

ジェネリクスなTListにレコード型を格納しておいて
後でレコード内の一部のフィールドを修正したい場合
どうすればいいんでしょうか

やっぱレコード全体を取り出して、修正後に全体を書き戻す?

377デフォルトの名無しさん2017/09/21(木) 21:39:40.01ID:pNUeS15R
うまくいくかはわからないが、
lst: TList<THoge>なリストがあるとして、

for i :=0 to lst.Count-1 do begin
lst.List[i].SomeField := v;
end;

のように、レコードのコピーが発生しないようにすればもしや。

378デフォルトの名無しさん2017/09/22(金) 00:31:23.41ID:zuQMjG3e
デフォルトプロパティ List[i] に相当する List.Items[i] の
read関数 function TList<T>.GetItem(Index: Integer): T; は、戻り値が
左辺値ではないので、どうしても一時変数が必要です。

379デフォルトの名無しさん2017/09/22(金) 07:31:05.69ID:mBOH6uxg
>>378
Itemsプロパティではなく、内部で管理している配列を直接返すListプロパティを介してもテンポラリーのコピー発生するんだっけ?
ちょっとうろ覚え。

380デフォルトの名無しさん2017/09/23(土) 14:45:31.84ID: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

381デフォルトの名無しさん2017/09/23(土) 23:58:16.42ID: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

3823802017/09/24(日) 08:50:50.85ID:xiqHS4Dl
>>381
詳細に解説いただきありがとうございます!

>\M-c のところが、e3 なのか 5c 5d 2d 63 なのかでわかるでしょう。

od -xのやり方が分からなかったのでログをテキストで保存して
バイナリエディタで確認したところ5c 4d 2d 63でした。
これは表示する側の問題ということですよね?

あの後、XCodeでNSLogでデバッグログを出力する簡単なプログラムを書いて確認したところ
XCode上のデバッグコンソールには日本語が文字化けしないで出力されますが
Xcode -> Window -> Devicesに表示されている実機のログでは日本語が文字化けしたので
表示側の問題なのかなと思います。

日本語が表示できないのは不便なので解決できるとうれしいですが
こういう場合、難しいのでしょうか。

383デフォルトの名無しさん2017/09/24(日) 19:16:16.23ID:QV3LCCDd
>>382
面倒だから試してないけど
NSstr使うとかAnsiStringに一旦格納して出力するとか

3843812017/09/25(月) 02:46:48.72ID:O5/7UCBk
しまった。前後逆でした。e3 のままなら無変換。

で、ちょっと古いけどXcode6.3.2+ios8.3では日本語表示できてます。

3853802017/09/25(月) 08:55:47.22ID:Ojd2COhe
>>383
ご回答ありがとうございます!
NSstrを使ってlog.dで出力しようとするとコンパイラに怒られてしまいましたorz
AnsiStringを試したところ出力文字は変化しましたが文字化けは改善されませんでした。

>>384
ご回答ありがとうございます!
なるほど。
現在の環境がXCode8.3 + iOS8.3なので少し古いXCodeを使って試してみようと思います。

386デフォルトの名無しさん2017/09/27(水) 10:22:25.25ID:9ZA1JIkS
iOSってTBannerAdを使ってAdmob表示できないんですか?
docWiki見たらiOSはiAdを使う前提の説明しかなくて・・・

387デフォルトの名無しさん2017/10/17(火) 09:08:55.23ID:mEDA3l77
Delphi10.2ってxcode9.0に対応してる?

388デフォルトの名無しさん2017/10/24(火) 09:26:42.32ID:ZAkkogtl
すみません。どうしたりいいのか分からずに書き込みさせてください。

389デフォルトの名無しさん2017/10/24(火) 09:43:54.24ID:PqKdrl6b

390デフォルトの名無しさん2017/10/24(火) 20:03:21.48ID:1s7nmZJe
もちつけ!

391デフォルトの名無しさん2017/10/25(水) 11:38:12.62ID:32/KECdp
したり顔

392デフォルトの名無しさん2017/10/30(月) 20:24:16.10ID:n19lyVRb
お伺いします。
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表示に表示させるにはどうしたらよいでしょうか?

最近いろいろやっているのですが、今ひとつ解決できないため、
教えていただけないでしょうか?

393デフォルトの名無しさん2017/10/30(月) 22:19:56.32ID:L79oOSSM
>>392
TDirectory.GetFilesとExtractFilePath

394デフォルトの名無しさん2017/11/02(木) 18:58:25.38ID:i0GpXesu
すみません。エロい方教えてください。

s := 'ABC'#13#10;

という文字列を、SJISの16進文字列に変換して、
  '4142430D0A'
にしたいのですが、やり方がわかりません。
どう書けばよいのでしょうか?

395デフォルトの名無しさん2017/11/03(金) 11:14:14.85ID:e5C3JHXA

396デフォルトの名無しさん2017/11/04(土) 21:02:07.27ID: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;

397デフォルトの名無しさん2017/11/05(日) 18:50:55.45ID:3iw/MMda
>>396
Delphi6でできました。ありがとう。
これ、XE5でも動くのかな?

398デフォルトの名無しさん2017/11/06(月) 21:01:49.83ID:MioLsWZJ
>>397
自分で試すこともしないのか
試すことができないなら気にしなくてよくないか

399デフォルトの名無しさん2017/11/06(月) 21:26:18.10ID:WbFc3oVf
すみません。
気にしなきゃいけない状況です。
で、XE5は今環境がないのです。。。
(仕事場が2つあり、いまXE5がない方に常駐しているので)

400デフォルトの名無しさん2017/11/07(火) 07:05:35.29ID:o3l3MYxT
>>399
じゃあ行ってから試せ


lud20200626182136ca

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1476332514/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net ->画像>4枚 」を見た人も見ています:
くだすれDelphi(超初心者用)その55
くだすれDelphi(超初心者用)その16
くだすれDelphi(超初心者用)その58【Embarcadero】
くだすれDelphi(超初心者用)その59【Embarcadero】
くだすれDelphi(超初心者用)その60【Embarcadero】
くだすれC++Builder(超初心者用)その5
くだすれPython(超初心者用) その40
くだすれPython(超初心者用) その37
くだすれPython(超初心者用) その38
くだすれPython(超初心者用) その32
くだすれFORTRAN(超初心者用)その7
くだすれPython(超初心者用) その51【まず1嫁】
くだすれPython(超初心者用) その52【まず1嫁】
くだすれPython(超初心者用) その47【Ruby禁止】
くだすれPython(超初心者用) その44【Ruby禁止】
くだすれPython(超初心者用) その43【Ruby禁止】
くだすれPython(超初心者用) その42【Ruby禁止】
くだすれPython(超初心者用) その45【Ruby禁止】
【まず1嫁】くだすれPython(超初心者用) その56
【まず1嫁】くだすれPython(超初心者用) その53
【まず1嫁】くだすれPython(超初心者用) その57
くだすれPython(超初心者用) その50【まず1嫁】
【まず1嫁】くだすれPython(超初心者用) その59
くだすれPython(超初心者用) その49【まず1嫁】
くだすれPython(超初心者用) その35 [無断転載禁止]©2ch.net
プログラミング超初心者の質問
0からの、超初心者C#相談室 (98)
くだすれC++/CLI(初心者用)part2
初心者の俺に教えてください
格ゲー初心者の自分に何がおすすめか教えてくだせぇ(´・ω・`)
【青アカ】青いアーカイブ -Blue Archive- 初心者・中級者スレ7
【慈悲】PC初心者をお救いください
■初心者用リモートデスクトップ専用すれっど■
JS初心者の集まるスレ
【第五人格】IdentityV 初心者用スレ 4
【第五人格】IdentityV 初心者用スレ 5
冬山初心者スレ その51
冬山初心者スレ その53
冬山初心者スレ その50
【第五人格】IdentityV 初心者用スレ 29
【第五人格】IdentityV 初心者用スレ 16
この業界初心者に厳しすぎん?
Python3を勉強中の初心者ですが
fortranできる人初心者のわいに教えてくれ
初心者の俺が初めて覚えるプログラム言語
【初心者歓迎】最新COBOLについての質問スレ
初心者なんやがおすすめのプログラム教えて
UWSC初心者用スレ2
vbs初心者なんですが
Kotlin初心者質問スレ
C#初心者に教えてくれ〜〜
【論理】Prolog【初心者】
opengl初心者なんだけど助けて
初心者はとりあえずここ見とけ
ふらっと C#,C♯,C#(初心者用) Part144
「初心者が読むべきOSS」10選
Diablo2 超ドQ!初心者用スレ
Ruby 初心者スレッド Part 67
Java入門・初心者質問スレ Part.3
Ruby 初心者スレッド Part 66
Ruby 初心者スレッド Part 59
Ruby 初心者スレッド Part 60
04:30:51 up 4:44, 6 users, load average: 93.95, 133.44, 159.92

in 0.052658081054688 sec @[email protected] on 101717