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

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

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

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

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

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

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

<過去スレ>
DelWiki (Delphi 関連の過去スレッド)※行方不明
ttp://delwiki.info/?
2017/04/02(日) 09:38:21.10ID:WSPdqmkD
>>295
最後の行は「ば」?
これってサロゲートペアなのか?
それとも別の文字が化けた?

それと
内部の文字列がunicodeになった話と
unicode文字列を処理する話は
微妙に違う話だぞ?
2017/04/02(日) 09:40:01.86ID:OL+frmBm
UTF16も実は可変長という落ちなんだからややこしくなっただけだと思う
2017/04/02(日) 10:43:02.23ID:3chV0onz
>>297
2chだと化ける可能性あるから両方サロゲートペアじゃないよ

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

おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった
2017/04/02(日) 11:06:40.43ID:5Z3z/Zq2
は̋
2017/04/02(日) 12:55:55.04ID:n+5RCyoZ
>>295
それ、ちょっと間違ってるな。
そのケースはサロゲートペアじゃないだろ。
サロゲートペアは単にUTF-16の2バイトのコードユニットで2つのコードユニットで
1文字を表すケースの事でしょ。

「ば」の話は合成文字だか結合文字だかそっちの話じゃん。
2017/04/02(日) 13:01:11.75ID:n+5RCyoZ
>299
>おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった
だから、それも全然関係ないから。UTF-8だから解決するというのは勘違いだから。
合成文字の問題は「正規化」使って解決する問題。
2017/04/02(日) 13:05:11.00ID:3chV0onz
>>302
はしょってるから書いてないけど正規化もしてるよ

文字での説明に重箱の隅つつかないでくださいな
気にしないでやってるとそういう問題(にぶつかる可能性)もあるよって話です
2017/04/02(日) 13:10:15.31ID:n+5RCyoZ
言葉の使い方が完璧に間違ってるのに重箱のすみつつかないでっていわれてもなぁ・・

君たちが議論してる「ぱ」と「は」+「゜」はサロゲートペアと全然関係ないんだけどな。
合成済み文字と基底文字と結合文字の話で合って、
サロゲートペアと全く関係ない。
2017/04/02(日) 13:13:23.66ID:3chV0onz
つまりこれこれこういう問題があってこうしましたって1から10まではしょらず正しい言葉をつかって説明しないとここには書き込むなって事ね。了解。




めんどくせ
2017/04/02(日) 13:17:10.52ID:n+5RCyoZ
完全に言葉の定義を間違ってるんだから、教えてあげただけじゃねぇかよ。

別に間違ってたことに対して、「おまえら馬鹿?」みたいなくだらい煽りとか
俺はする気ねぇし。丁寧な言葉で教えてあげたら、その言いぐさ。
2017/04/02(日) 13:20:18.66ID:8zECKtY8
君たち ではない。
2017/04/02(日) 13:23:02.99ID:JDqJ1ftS
言葉の定義とやらが間違ってたとしても、
バグの原因になる事のコメントは個人的に大歓迎(こなみかん
2017/04/02(日) 14:03:03.40ID:iqf+IrkA
俺には難しい話をしてるけど、文字扱うには正規化とやらをやって、utf8とか16とかに統一してから加工したり検索したりしないとハマるってこと?
2017/04/02(日) 17:46:06.81ID:WSPdqmkD
サロゲートペアに関連してだけど
MECUtilsとか使ってやったりするの?

今まであんまり意識したことないから
注意喚起は嬉しいけどメンドクサ過ぎるね
2017/04/02(日) 18:37:26.81ID:9KwT0wNW
Unicode化の弊害というかなんというかだけど、
マルチデバイスも相まって想定外の変な文字が入る確率っていうのは
確かに飛躍的に増えてる・・・気がする。
2017/04/02(日) 20:31:47.10ID:n+5RCyoZ
>>310
そんなの使わなくても普通は標準であるだろ。
Character.pasに必要なのそろってる。
TCharacter.IsSurrogate()
2017/04/02(日) 20:47:01.04ID:3chV0onz
>>312
TCharctorなんてものはない

System.Charactor.IsSurrogate(廃止)
もしくは
TCharHelper
2017/04/02(日) 20:48:31.98ID:3chV0onz
おっと綴り間違ってたな
System.Characterだな。また重箱の隅つつかれるところだった
2017/04/02(日) 21:07:50.79ID:n+5RCyoZ
そうなんだ。それはすまん。XE3以降買ってなくて
最新のもってなくて。
2017/04/02(日) 23:41:35.03ID:9/rnzeyZ
今ってディスプレイのアスペクト比が数種類あるけど、皆さんは画面のデザインってどうしてますか?
16:9に合うようにデザインしてる?
それとも、フォームの設定とかで実行時にある程度アスペクト比に合わせてくれる設定とかってある?
317デフォルトの名無しさん
垢版 |
2017/04/03(月) 14:57:16.50ID:r7DyphN2
時代は可変
2017/04/03(月) 17:20:51.81ID:vwU/OCff
>>316
全画面表示させない
2017/04/03(月) 18:42:50.88ID:gM/woy0K
>>316
意味分からないが。
ウインドウサイズ自体固定させないし、
Align プロパティを使って固定部分とそうでない部分とを分けるし
プラスTSplitterでユーザの好みにさせたりもするし。
動画や画像でもないならアスペクト比なんて気にしないんじゃないのか。
2017/04/03(月) 21:28:02.74ID:r3n0H3vn
やっぱ、全画面表示させないが簡単でいいな
2017/04/04(火) 06:32:18.18ID:vjUtddW+
>>316
ファイアーモンキーならTScaleLayout使って無理やり対応した事もあります
2017/04/12(水) 07:11:34.88ID:lM5IX7kk
メモリーリークの場所ってdelphiに標準で入ってるリークを監視するやつのフルバージョン入れないと分からない?
2017/04/16(日) 12:03:24.01ID:he8BFR5v
Delphi10.1でのフル機能のfastmm4の使い方を教えてください。
メモリーリークのメッセージは出るのですが、テキストファイルが作成されないです。
よろしくお願いします。
2017/04/17(月) 16:51:42.85ID:y+L9zWaz
DatetimetostringとFormatDateTimeの違いって
procedureであるか、Functionであるか、だけですか?
(引数は異りますが)
2017/04/17(月) 17:16:23.94ID:tXRogAtk
>>324
引数が違うって分かれば
自ずと...
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分手間がかかるなと思ってました。
2017/04/18(火) 09:41:09.25ID:phVpBhu/
何かとの互換性でどうしてもDT2strが欲しかったんじゃないかね
2017/04/18(火) 15:11:31.58ID:nhn9im/Y
>>323
http://mrxray.on.coocan.jp/Delphi/Others/UsageFastMM.htm

ここに書いてある手順でやってみた?
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,326
垢版 |
2017/04/19(水) 09:04:32.22ID:/KRyUyJO
>>329
なるほど、参考になりました。ありがとうございます。
331323
垢版 |
2017/04/19(水) 15:21:22.52ID:1b3gc8EV
>>328
FastMM4のデモで試した結果、ソースの所のFastMM4 in 'FastMM4.pas'をSharememに変えたらリークの場所がわかる余裕になりました。
Sharememが何かはわかりません。w
円バカのサイトに載ってたのでやって見たらなんとか動作したって感じです。
2017/04/23(日) 00:33:57.32ID:h9OMGlcp
delphi10.1までは問題なかったのにdelphi10.2にしてから
stylebookで指定したstyleが一部反映されなくなりました。

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

対処方法とか分かる方いらっしゃいますか?
暫くは10.1を使い続けるしかないですかね・・・
2017/04/23(日) 01:24:14.01ID:6D2X13Ox
>>332
Android用のスタイルを一旦削除してマージ
334332
垢版 |
2017/04/23(日) 07:38:09.47ID:h9OMGlcp
>>333
アドバイスありがとうございます。

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

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

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

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

実機はXperia Z3ですが他に持っていないので他機種でどうなるかは未検証です。
335332
垢版 |
2017/04/23(日) 07:50:06.92ID:h9OMGlcp
>>333
すいませんTabControlのみしかない最小限のプロジェクトで試したら
正常にスタイルが反映されているのが確認できました。

変な設定がどこかで生きているのだと思います。
失礼しましたm(_ _)m
2017/04/27(木) 08:22:37.61ID:rpeb1FWf
メッセージダイアログやショーメッセージで改行を
使うとメモリリークが出るけどなんで?
2017/04/27(木) 12:14:19.99ID:nqOtHEIU
バグってんじゃね
338336
垢版 |
2017/04/27(木) 12:36:20.33ID:axAm+D16
delphiがバグってる?
新規作成でシンプルな状態でやってもメモリーリークのメッセージが出るんだけど、どうすりゃ良いんだろう。
俺だけ?
339336
垢版 |
2017/04/28(金) 22:34:22.04ID:WI3n6xVG
メモリーリークを調べているのですが
MessageDlg(IntToStr(123),mtConfirmation, [mbOK, mbCancel], 0);
IntToStr(123)が原因でメモリーリークが起きるみたいです。
Delphiのバグ?コードがダメ?
2017/04/30(日) 09:29:58.72ID:kcq5sr/L
ソースみれば?
2017/04/30(日) 11:59:29.48ID:0p25w19v
336ではないけどソースコード見てみた
ポイントになりそうなところがアセンブリで書かれてた
2017/04/30(日) 12:08:19.89ID:VPr4LyhY
それがどうかしたか
2017/04/30(日) 23:16:41.78ID:rKLNeW5H
1. MessageDlg と同じ引数を持つ、そのユニット内にローカルな関数を書いて、MessageDlg のせいかどうか調べる。
2. IntToStr と同じ引数を持ち、適当な文字列を返す関数を同様に書いてみる。
3. コンソールアプリケーションのプロジェクトを作成して、1.を行って調べてみる。
4. 同様に IntToStr も行ってみる。
2017/04/30(日) 23:36:32.18ID:5yRtGq51
どのバージョンで発生したのかしら?
こちらのTurbo Delphiは
ReportMemoryLeaksOnShutdown := True;
で再現せず。
2017/05/02(火) 01:47:15.38ID:As8TBna0
昔の経験
マルチスレッド内で間違った呼びし、クリティカルセクションの間違った実装
2017/05/02(火) 08:06:56.48ID:Hq/uPbjy
「IntToStr(123)が原因でメモリーリークが起きる」
と判断した理由を開示せよ
2017/05/24(水) 11:04:03.05ID:ipeCfZP9
32biでも64bitでもinteger型は32bitですか?
Pointer型(とPtrInt型)だけが変化すると考えてよいのでしょうか?
2017/05/24(水) 11:54:37.27ID:4nncZNTT
-1 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る

0 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る
2017/05/25(木) 14:51:52.47ID:qme3C1o0
Integer は 32 だけど LongInt は 32 とは限らない
2017/05/26(金) 08:47:10.54ID:trsKQBBQ
>>349
そんなことどこにも書いてないけどホント?
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
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

とか
2017/05/26(金) 10:13:55.43ID:trsKQBBQ
>>351
iOSだけ特殊な感じ?変なの。
LongIntとLongWordは使わないほうがよさげですね。何でこんな変な仕様にしたんだろ。
2017/05/26(金) 10:22:32.82ID:trsKQBBQ
あ、iOSにはLinux系も含まれるんですか?
その辺のあやふやさも嫌な感じですね。
2017/07/06(木) 10:33:45.10ID:E7iuEH9H
シンエディットでプロシージャの名前とファンクションの名前を色分けするような使い方をしたいのですが、
シンジェネラルに設定するキーワードの種類を増やす事はでききませんか?
継承してシンジェネラルも自分で作らないと無理でしょうか?
2017/07/06(木) 10:47:02.39ID:1ivNtSqb
シンエディットて何?
2017/07/06(木) 12:16:18.45ID:DKA4KQvd
SynEditのことらしい
これをカタカナで書く感覚が分からん
2017/07/06(木) 13:00:39.86ID:/LwN4Pic
すまん。
あんまり、キーボードとかスマフォの画面とか触れないから音声のやつで入力した。
2017/07/06(木) 16:56:40.09ID:uy+VElX3
キーボードが苦手なプログラマw
2017/07/06(木) 19:47:25.65ID:j2rVCi1D
>>358
2017/07/08(土) 15:11:41.17ID:4Sqq07Ob
これがアスペか・・
2017/07/30(日) 22:35:33.76ID:PBa3jUos
昔MCIをいじっていた者です。覚えている人いるかな?
4年くらいメソッドを書いてなくて、送るでwavを聞きたいなって思って久しぶりにコンパイラを触りました。
何をするソフトなのかというとフォームに対してD&DしてTListにD&D元のファイルのフォルダの
ファイル名を取得するソフトなんですが、なぜうまくいかないかわからなくて…。
指摘していただければ幸いです。
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}
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;
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.
2017/07/31(月) 00:52:16.24ID:5UR8c5yg
とこでfmxアプリをタスクトレイに収める方法はないですか?

探すとロシアのサイトにコンポーネントがあったけど
他に方法はないでしょうか?
2017/07/31(月) 05:54:29.90ID:poJtShEs
>>365
Windows専用だけどいい?
2017/07/31(月) 08:21:01.65ID:5UR8c5yg
>>366
ええもちろん

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

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

こういうWindowsアプリをfmxで作る場合
どうするんでしょうか?
2017/07/31(月) 12:56:22.59ID:m2zUy0za
>>367
WinAPI.WindowsをUSESしてタスクバーから消したいアプリケーションのHWND取得してShowWindow(HWND,SW_HIDE);をぶちかます

タスクトレイにアイコン表示させたりする場合はコード記述でもできるけど面倒だからMonkeyMixerか何か使ってVCLを混在させてTTrayIcon使う
2017/07/31(月) 18:38:00.55ID:AynCBzeT
>>368
ありがとう

MonkeyMixerを調べて見ます
2017/08/01(火) 10:29:01.65ID:8qLxpsQt
TTrayIconはVCL依存がほとんどないから、切り出して使った方が余計なユニットがリンクされなくていいと思う
自分はそうしてる
2017/08/13(日) 13:54:41.72ID:6x3+ks7t
教えてください。

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

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

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

よろしくお願いします
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の値なんですが。
ポインタの逆参照以外で ”^” の使い方はヘルプにも無いのですが。
2017/08/29(火) 17:11:49.45ID:pis/sDRy
H 48h
V 56h
X 58h
ctrl+H で 08h
ctrl+V で 16h
ctrl+X で 18h
375373
垢版 |
2017/08/29(火) 17:15:51.90ID:sf08cQEA
>>374
コントロールキーを押しながら…の記述に ”^” を使うということですか。
ありがとうございます。
2017/09/20(水) 09:56:54.97ID:lqqkwYAM
ちょっと教えてください

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

やっぱレコード全体を取り出して、修正後に全体を書き戻す?
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;

のように、レコードのコピーが発生しないようにすればもしや。
2017/09/22(金) 00:31:23.41ID:zuQMjG3e
デフォルトプロパティ List[i] に相当する List.Items[i] の
read関数 function TList<T>.GetItem(Index: Integer): T; は、戻り値が
左辺値ではないので、どうしても一時変数が必要です。
2017/09/22(金) 07:31:05.69ID:mBOH6uxg
>>378
Itemsプロパティではなく、内部で管理している配列を直接返すListプロパティを介してもテンポラリーのコピー発生するんだっけ?
ちょっとうろ覚え。
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
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
382380
垢版 |
2017/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に表示されている実機のログでは日本語が文字化けしたので
表示側の問題なのかなと思います。

日本語が表示できないのは不便なので解決できるとうれしいですが
こういう場合、難しいのでしょうか。
2017/09/24(日) 19:16:16.23ID:QV3LCCDd
>>382
面倒だから試してないけど
NSstr使うとかAnsiStringに一旦格納して出力するとか
384381
垢版 |
2017/09/25(月) 02:46:48.72ID:O5/7UCBk
しまった。前後逆でした。e3 のままなら無変換。

で、ちょっと古いけどXcode6.3.2+ios8.3では日本語表示できてます。
385380
垢版 |
2017/09/25(月) 08:55:47.22ID:Ojd2COhe
>>383
ご回答ありがとうございます!
NSstrを使ってlog.dで出力しようとするとコンパイラに怒られてしまいましたorz
AnsiStringを試したところ出力文字は変化しましたが文字化けは改善されませんでした。

>>384
ご回答ありがとうございます!
なるほど。
現在の環境がXCode8.3 + iOS8.3なので少し古いXCodeを使って試してみようと思います。
2017/09/27(水) 10:22:25.25ID:9ZA1JIkS
iOSってTBannerAdを使ってAdmob表示できないんですか?
docWiki見たらiOSはiAdを使う前提の説明しかなくて・・・
2017/10/17(火) 09:08:55.23ID:mEDA3l77
Delphi10.2ってxcode9.0に対応してる?
2017/10/24(火) 09:26:42.32ID:ZAkkogtl
すみません。どうしたりいいのか分からずに書き込みさせてください。
2017/10/24(火) 09:43:54.24ID:PqKdrl6b
2017/10/24(火) 20:03:21.48ID:1s7nmZJe
もちつけ!
2017/10/25(水) 11:38:12.62ID:32/KECdp
したり顔
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表示に表示させるにはどうしたらよいでしょうか?

最近いろいろやっているのですが、今ひとつ解決できないため、
教えていただけないでしょうか?
2017/10/30(月) 22:19:56.32ID:L79oOSSM
>>392
TDirectory.GetFilesとExtractFilePath
2017/11/02(木) 18:58:25.38ID:i0GpXesu
すみません。エロい方教えてください。

s := 'ABC'#13#10;

という文字列を、SJISの16進文字列に変換して、
  '4142430D0A'
にしたいのですが、やり方がわかりません。
どう書けばよいのでしょうか?
2017/11/03(金) 11:14:14.85ID:e5C3JHXA
これか?
http://docwiki.embarcadero.com/Libraries/Tokyo/ja/System.Classes.BinToHex
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;
2017/11/05(日) 18:50:55.45ID:3iw/MMda
>>396
Delphi6でできました。ありがとう。
これ、XE5でも動くのかな?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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