AFsoft World

AF日記。 コンピュータ・CAD・漫画・アニメ・ゲーム・スポーツ等についてのたわいもない話、などなど。

Delphi

AFjww2dxf Ver.1.13

というわけで当方サイト(http://afsoft.jp/)にて公開中の『JWW→DXF 変換ツール「AFjww2dxf」Ver.1.00』の更新版「Ver.1.13」を作成しました。

・JWW/JWSからDXF変換する際、DXFファイルヘッダの$EXTMIN/$EXTMAXの出力値の修正

です。

FindComponent

Delphi 10.3.3 Cmt-Edt での FireMonkey(FMX)にて
グリッドレイアウトの中にパネルを自動生成・配置し
更にそのパネルの中にラベルやエディット等を
自動生成・配置し、Nameプロパティを指定して、
FindComponent でそのラベルやエディット等のNameで
検索し利用しようとしましたが、実行時エラーとなりました。

pa := GridLayout1.FindComponent('パネル名');
cp := pa.FindComponent('ラベル名');
とやったら実行時エラーとならず正常動作したのですが
FindComponentって自動生成させるコンポーネントの場合
すぐ下の子だけしか検索してくれないのですね〜
(何か「御約束」をすれば検索してくれるようになるんだろうか?)

IDEで設計してる際に手動でコンポーネント配置するモノは
がさっと検索してくれる様子なんだけれども。

何でエラーするのか最初全然分かりませんでしたw

JWクリボス 1.17

というわけで
ユーザーさんからメールで問い合わせがありましたので修正作業をしてました。
http://afsoft.jp/program/down_u/jwclibos_updates_1_17.html

ZIP圧縮していますので、ダウンロード後、
ZIP解凍(展開)を行って、
〜.exe ファイルをエクスプローラのプロパティで[ブロック解除]して
JWクリボスを入れているフォルダへ上書きコピーして下さい。

データ、キーDLL、その他は入ってません。

ぶる〜〜〜とぅ〜す・・・

という訳で先日、Delphi 10.3.3 Cmt-Edt. にて
添付サンプルの BlueTooth のプログラム実行は出来たのですが
中を見ると Delphi の [System]内の TBluetooth コンポーネントを使っていませんでしたので、これだと使い難いし、正直何が何だか分からないのでw このコンポーネントを使って 訳分かんないヘルプとそのサンプルを見ながら 取りあえずテキトーに作っていたのですが、、、

いや〜〜 訳が分からないwww

相変わらずのクソヘルプ!(失礼〜)
Ctrl+C でコピーしろやマジで!!
概要だけかよ? 何の説明も無いやんけ!
等と叫びつつwww
サンプルを見比べつつ

何とか隣のPCと(Windows10同士)文字データのやり取りが出来ました。はぁ、しんどw まぁ、文字読み込みボタンを押さないと読み込まないので、逐次チェックをしないとチャットにはならないけれども、まぁ取りあえずいいや、という訳でw

・・・疲れたw

System.Val

Delphi 10.3.3 Cmt-Edt. での FireMonkey(FMX) にて
System の Val 手続きで 文字列を数値に変換して
いるのですが、先ほど確認すると
文字列内の数字の後に 半角空白が入っていると
正常変換してくれませんでした。

え? ・・・ Val って結構アバウトな内容でも
変換してくれるんじゃ 無かったっけ?
(数字の後に 英字とかでも 大丈夫だったはず
 結果値は勿論、そういう文字は無視される)

え? ・・・ いつから そうなった!?w

ヘルプには、数字以外の文字を使うなって書かれてる。

え〜? マジか・・・
という事は、変換する前に、不要な文字は全て
除去してからじゃないと変換出来ないのか・・・
面倒くさw
(相当前からで 単に そういうプログラミングを
 していなくて気付かなかっただけ、だったりして)

Android 10インチタブレット到着

というわけで今日、注文していた 10インチの
Android タブレットが届きました。

解像度は先のものと同じく 1280×800
(といっても普通に Delphi 10.3.3で作ると
 600×913、961×552 になるけど)
メモリ 2GB(1GB程はOSで使用済ぽい)
内部ストレージ 32GB(5GB程は使用済)
Android 10
WiFi 接続して、IPアドレス取れてるのを確認

設定→タブレット情報→ビルド番号を7回タップすると
デベロッパー開発者向けオプションのメニューが解放、
設定の システム→詳細設定→開発者向けオプションで
USBデバッグをオンにして
Delphi 10.3.3 で認識、ビルド・配置・実行できるのを確認しました。

Delphi 10.3.3/Android で Imageにお絵描き

先日購入した ASUS Androidタブレットを
Delphi 10.3.3 Cmt-Edt. で使ってみようネタ

次に、画面にボタンとイメージコンポーネント(TImage) を貼り付けて、ボタンをクリックしたらイメージに絵を描くってケースです。

これまで Windowsでは

procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Bitmap.Create(Round(Image1.Width),Round(Image1.Height));
 with Image1.Bitmap.Canvas do begin
  BeginScene;
  Clear($FF00FF00);
  EndScene;
 end;
end;

みたいな事を平然とやってて実際正常に動作するし、10.3.3 でも Windowsでは普通に正常動作するのですが、Android でビルド・配置・実行をすると、エラーします。IDE では「Segmentation fault (11) を送出しました」という実行時エラーが表示され、Android画面では、「アドレス〜でアクセス違反が発生しました」というエラーメッセージが多発します。ですのでこういうプログラミングをしてはいけません。これは

procedure TForm1.Button1Click(Sender: TObject);
var
 bm : TBitmap;
begin
 bm := TBitmap.Create(Round(Image1.Width),Round(Image1.Height));
 with bm.Canvas do begin
  BeginScene;
  Clear($FF00FF00);
  EndScene;
 end;
 Image1.Bitmap := bm;
 bm.Free;
end;

という風に書き換える必要があります。こうすれば Windowsでも Android でも正常動作させる事が出来ます。なお、ビットマップ生成時にサイズを指定しないと実行時エラーになります。Android(多分 iOSも)の場合は特に、画像はマルチレゾリューションなのが当たり前、という事でメモリ管理が厳しくなっているのではないかと想像します。
あと、
TImage の WrapMode にも要注意・・・ デフォルトの fit になっていると自動的に絵が拡大表示されてしまいますので・・・

いやぁ・・・これになかなか気づかず昨日はかなりの時間を消費してしまいましたww

Delphi 10.3.3/Android で 画面サイズ取得

先日購入した ASUS Androidタブレットを
Delphi 10.3.3 Cmt-Edt. で使ってみようネタ

取りあえず、画面サイズを見てみよう
という事で
スペック的には、1280×800 だそうなのだけど
フォームにパネル TPanel を Align=Client(全画面フィット)で貼って、Screen.Width、Screen.Height、Panel1.Width、Panel1.Height を表示させてみました。すると
縦置状態
Screen.Width   600
Screen.Height  913
Panel1.Width   601
Panel1.Height  889
横置状態
Screen.Width   961
Screen.Height  552
Panel1.Width   962
Panel1.Height  529
フォームの Qualityプロパティを HighQuality にしても同じ、ビューで Android 7インチ、Android 10インチ、等を追加しても同じ、という結果でした。はい、ダメですねw ビュー作ると、それ専用のフォームが出来てしまうので、意図的に全く異なる画面レイアウトをする場合はともかく、同じ画面レイアウトを PC でも スマホ/タブレットでも使おうという場合にはビューは無意味ですね。ビューを使う事によって本来の解像度でそのまま描画出来る、というのであれば、それはそれで利用価値があると思いましたが残念。

Delphi 10.3.3/Android で TStringGrid

というわけで
Android はタッチ操作、な訳で、TStringGrid の
セルクリックや セル選択は、なかなか、うまい具合に
動いてくれません。
ダブルタップではなくてトリプルタップでしたね。
というわけで、OnTapイベントですが
その引数の Point: TPointF についてですが

pt := StringGrid1.AbsoluteToLocal(Point);
Row := StringGrid1.RowByPoint(pt.X,pt.Y);

のようにすれば行けそうな感じです。

あと、
StringGrid で 行追加をする際、
RowCount をしっかり増やしてから、Cells をいじる事。
さもないと、Android では、死にますw
ストンとアプリが 何事も無かったかのように終了します。

Delphi XE4 → 10.3.3

Delphi XE4 Pro-Edt. で作っていたプログラムを
Delphi 10.3.3 Cmt-Edt. へ持って行って多少の修正を
したあとビルド・実行するのは、Windowsでは非常に容易
なんだけれども(ユニットの問題や内部の問題は別として)
Android でビルド・配置・実行する際には要注意。
配置マネージャでファイル指定した場合、正常に
ファイル配置してくれない、とゆー事をやってくれて
それが中々分からずかなりの時間を食ってしまいました。

Delphi XE から Delphi 10 へプログラムを持っていく場合
Delphi 10 で空状態のプロジェクトを作って保存し、
各フォームのファイルをコピーして プロジェクトを作り直し
それからビルド・配置・実行をしないといけない様子です。

いやぁ・・・参りました・・・

10.4.2 や 11.0 については実行してませんので不明です。

あ、11.0 のパッチ1 は一応当てておきました。
使ってないけど。

Android タブレット購入

7インチの Androidタブレットを購入しました。
ASUS ZenPad 8
Android Version は 6.0.1
内部ストレージ 8GB 空 3.5GB
Delphi 10.3.3 Cmt-Ed. で動作確認予定です。

WiFi 動作確認して
USB接続して 内部ストレージ確認をして
またしても、Delphi 10.3.3 から 接続出来ない?
とか言っててネットで検索し・・・
ZenFone で「開発者向けオプション」を有効/無効にする方法
有効にするには:
1. 「設定」>「端末情報」>「ソフトウェア情報」に移動します。次に「ビルド番号」を7回タップします。
2. 「開発者向けオプション」が「設定」に表示されます。

https://www.asus.com/jp/support/FAQ/1009474/
こんなん、絶対に 分からんわww

その「開発者向けオプション」から「USBデバッグ」をON。
Delphi 10.3.3 で機種名を更新して
あ、出た出た

取りあえずテストプログラムを実行
エラーするも取りあえず実行はしました。

ファイル操作をする場合には、設定のアプリで
そのテストプログラムを指定し「許可」でストレージの権限をオンにする、と。

ところで
Delphi での「TStringGrid」は
Android では、正直、いまいち使い物にならないですね。
表示するだけならまだいいんですが、
セル幅を変更するのが なかなか うまく行かないし
OnCellClick イベントは反応しないし、ダブルタップしてたら稀に動く感じ?
OnSelectCell イベントも反応しないし、
使うとすれば OnTap だけども引数が Column・Row ではなく Point だし。

さぁ、エラー対策を考えないと・・・

Delphiで Android 7.0 アプリ開発…

という訳で、Android 7.0タブレットをお借りして
取りあえず以前 4.0.4 でちゃんと動いていた
当方の「AF_M7JW_VU」というビューワーを
この Android 7.0 タブレットでそのまま動作させようと
しましたが、、、いやぁ、、、ひどい、、、
画面はちゃんと表示されないし タッチ操作も出来ないし
何だこれは?って感じでした。

という訳で取りあえず
Delphi 10.3.3 Cmt-Edt. にて
フォーム上にパネルを設置し、それのマウスイベントハンドラでの反応を見てみようという単純なテストプログラムを作って、Android 7.0 タブレットで実行してみたのですが、、、、いやぁ、、、
・ホイールイベント
  ウンともスンとも動きません
  指2本での拡大縮小操作とか全く反応無し
   Touchプロパティを指定しても無意味
   Gestureマネージャ入れても無意味
  フォームのイベントハンドラでも同じく無反応
  タブレットの設定の、詳細設定の、ユーザー補助の、拡大操作をオンにしても無意味
・マウスエンターイベント
  Windowsでのマウスの場合はホバーでパネルに入った時に反応しますが、Androidタブレットはタッチにホバーとかありませんから、タッチした時にイベント発生します。
・マウスリーブイベント
  同上で、タブレットに押した指を離した時にイベント発生します。

・マウスダウンイベント
・マウスアップイベント
  タッチした時、離した時にイベント発生します。
  Button値は、左ボタン、Shift値は、左ボタン+タッチ
  座標は取っています。
・マウスムーブイベント
  タッチしながら指を動かした時にイベント発生します。
  Shift値は、左ボタン+タッチ
  座標は取っています。
  右ボタンってのはありません。
  Windowsタブレットの場合は、長押しで右クリックって事になりますが、そういうのは無いみたいです。勿論、中ボタンってのもありません。

という感じで、う〜ん、Windowsタブレットとは全然違うなぁと改めて認識しちゃうんですが、まぁ基本、タッチ操作なデバイスでは、タッチするか、してないか、だけなのだろうから、これはこれで当然なんだろうなぁという感じです。

如何に、ボタンを押しやすくするか
如何に、入力を減らすか
如何に、シンプルで分かり易い構成にするか
ってアタリなんでしょうかね?

Delphi で Android アプリ開発?

とりあえず Delphi 10.3.3 Cmt-Edt. にて
Android 32bitアプリ、64bitアプリ、が
作れるって話なのだけれども、う〜ん、
本日、お借りした Android 7.0 タブレット。
接続したのですが、よく分かりませんw

まず、簡単なテストプログラムを書いて
プラットフォームを Android 32bit にして
ビルド成功、実行して配置しようと思ったら
ターゲットに機種名が表示されてない。
何でだよ? Android 4.0.4 では普通に出てた・・・っけ?
そういやAndroid設定で開発云々みたいなメニューがあったよな? と このタブレットの設定で探し回るも全く見つからない。何でだよ?www 説明書も無いしー 途方に暮れる。 Delphi のヘルプでは、「USBデバッグ」にしとけ、って書かれているけど、その設定、どこやねん?
という事でネットで検索して
この機種のPDFマニュアルが見つかったのでそれをダウンロードし、PDF内検索して やっと見つかった。設定の「サービス/クラウド」の中に、USBデバッグ切替って項目があった。これをオンにして。

Delphi のターゲットで、ようやく機種名が見えて
超簡単なテストプログラムが実行出来た。

はぁ〜 しんど・・・

次に
Delphi プログラムでファイルアクセスしたいけど
Android はアプリと同じフォルダにファイルを保存したり出来ませんから、特殊ディレクトリ(ホームとかキャッシュとか写真フォルダとか音楽フォルダとか)を扱うのが基本なんですけど、取りあえず、USBでPCと接続してるから、エクスプローラでテキトーな写真JPEGファイルを内部ストレージの Picturesフォルダにコピーして、Delphi プログラムでそのフォルダ内ファイル一覧を表示するってのを作ったんですが、いやぁ、全然、ファイル一覧が取れない。
・・・何でだよ!?

フォルダ名がちゃんと取れてないのかなぁ?
いや
/storage/emulated/0/Pictures/
は ちゃんと合ってる・・・はず・・・
そいや、これ、SDメモリカードのフォルダって取れてないと思うけど、ダメなんかいな? 4.0.4 では取れたような気がするんだけど。まぁ今はそれは置いといて。しかし、どうもアカン。設定をずっと眺めていて・・・権限? 権限だとぉ!?www
Androidタブレットの設定の「アプリ」→アプリ一覧からこのテストプログラムを指定し、権限のところをみて「ストレージ」を ON にしたら・・・おぉ〜 ちゃんとファイル一覧が取れた・・・ 4.0.4の頃はこんなの無かったと思うけど、まさか、こんな設定が増えているとは・・・
・・・疲れたw

Delphi 10.3.3 で作ったコードを Delphi 10.1 へ

持っていって、そのままビルドしたら、
エラーしまくった件についてw

TStringGrid の CellClickイベント
そんなもん、ねーわ! と怒られるw
あー 無かったんだっけ? 忘れたわ・・・
Delphi 10.3.3 で あるから使っていたけど・・・

Indy の IdTCPClient のイベント内で
データやりとりする際のエラー・・・
TIdBytes と TBytes
同じ Indy 10 のはずだけど、違うのか?w
いやそっちではなく、TEncoding の方か?

なんかやたらとワーニング出てる感じもするし
まぁ、新バージョンのプロジェクトファイルを
旧バージョンで強引に開こうとしてるからダメなのかも
しれないけれどもまぁ、う〜ん、こういう事は
すべきじゃないよなぁ〜
と今日1日、朝から何も食べず、ずっとドタバタしてました。
というか
やっぱりこの Delphi 10.1 を入れてる古いlenovo PC は
とっとと押入れに突っ込んで無かった事にしたいw

突然終了w

Delphi 10.3.3 Cmt-Edt を使って
簡単なプログラムを作ってて
「TRectF」でエラーするから uses節で追加しないとー
これ、どこに入っていたっけ? と [F1] するも
効かない。何だこれ? と思ってヘルプのキーワードで
「TRectF」と入力しようとしたら、そこで
Delphi が しゅっと 終了したwww
何のエラーもメッセージもなく しゅっと 消えたwww

何じゃこりゃw

再度 Delphi を起動しても相変わらずヘルプで検索できないけど
今度は、キーワード検索は出来た。けれどもヒットしない。
仕方がないのでネットで検索したw
なんだ、System.Types か。
uses節に入力して、今度は、[F1] ヘルプがちゃんと動いた。
お〜い・・・

いやぁ単に FMX で StringGrid のセルに色を付けようと
DrawColumnCellイベントを書こうとしてただけなんですけど。
しかし、列が Integerではなく TColumn である所がなんか面倒臭い
(どんだけ面倒臭がりやねん・・・)

FMX にカラーダイアログが・・・

Delphi FMX でちょっと触っていて、ふと
気付いた事。

・・・ TColorDialog (色設定画面)が無いww

前にも思ったかもしれないけど
今日、再び、あれ?あれ?ない?ない?
みたいな状態w

まぁGetIt とかで入手出来るとは思うし
この程度は自作してしまえばおしまいだけど
微妙に 不便だw

Delphi 10.3.3 Cmt-Edt にて

作ったテストプログラムを
Android 用にコンパイルしてみよう〜と
コンパイルは出来るんだけれども、どうも
Android タブレット(借り物)で動作しない。
配置の際に、SDK が古い云々等のメッセージが出る。
SDK 等の問題なのだろうか? とヘルプ(Web)を見てたら
・・・
Android の対応バージョンは、5.1 以降らしい・・・
・・・
このAndroid タブレットは確か 4.1 だったと思うんだけど・・・
いや、4.0.4 だっけ?忘れた
借り物だからいじくる訳にも行かないし・・・

残念

RAD Studio、C++Builder、DelphiがサポートしているAndroidのバージョン
RAD Studio、C++Builder、Delphiがサポートしている iOSのバージョン

Delphi 11 アレキサンドリア

というわけで
Delphi 10.3.3 Cmt-Ed. を入れているPC に
「Delphi 11 アレキサンドリア Pro-Ed.」を
ウェブインストールしてみました。
光1Gコースを無線LANで繋げてて、のダウンロード&インストールですが、インストール完了まで約40分で終了。思ったよりも速かったですね。SSDだから、というのもあるかも?

Delphi 10.4.2 Pro-Ed. を入れてるPCに
入れようと思っていたんですが ちょっとドタバタしてて
Delphi 10.4.2 Pro-Ed.を全然使えていないし、という事で
パスしてしまいました。

ライト画面、マウント画面、ダーク画面、と
選択出来ますが、エッジのあるマウント画面に。
ダーク画面は以前のバージョンで不具合があって
それ以来、全然使ってません。

当分は使わないと思いますけれども取りあえず。

JWクリボス 1.16

というわけで
ユーザーさんからメールで問い合わせがありましたので修正作業をしてました。
http://afsoft.jp/program/down_u/jwclibos_updates_1_16.html

ZIP圧縮していますので、ダウンロード後、
ZIP解凍(展開)を行って、
〜.exe ファイルをエクスプローラのプロパティで[ブロック解除]して
JWクリボスを入れているフォルダへ上書きコピーして下さい。

データ、キーDLL、その他は入ってません。

RAD Studio 11 アレキサンドリア

エンバカデロから、RAD Studio (Delphi&C++)の
新しいバージョン「11」 アレキサンドリア が
出るとの事。

アレクサンドリア かな?
まぁ、ガンダム好きなら間違いなく、アレキサンドリアだろうなw
ティターンズの戦艦の名前だからw
Wikiによると、戦艦の名前というか、戦艦クラス名のようだけど。
(ホワイトベースなら「ペガサス級」だけど、その「ペガサス」のように「アレキサンドリア級」って事らしい)
重巡洋艦。
指揮官ジャマイカンの声がキートン山田氏で、
ついつい「ちびまる子ちゃん」を思い出してしまうのが
なんだか懐かしいw

Delphi 11 か〜
う、結局、Delphi 10.4.2 は一度も使わなかったw

謎のデバイスw

先日から、Delphi で UDP通信だの TCP通信だの
モノを見ずに作ってみて・・・
こんなもん、モノと説明書が無ければ作れるかぁ!w
という事で
モノは送ってもらったんだけど、モノの説明書が送られてこない。

どーせー ちゅーねん!
みたいな感じで でもまぁ 実物とようやく対面し
1つずつコマンドの実行と確認。

うん、こんなもん、
実物が無ければ、絶対に、作れないわマジでw

コマンドのPDFマニュアルは最初に送ってもらったんだけど
そのマニュアルの不親切さ アバウトさ
もうね、勘弁しろしマジで!
みたいな感じだったんですけど
実際に動かしてみて、何とか癖みたいなのが分かってきて
取りあえず
動かすだけなら 何か 作れそうな気がしてきた
(YATかよ!w)
はぁ〜しんどww

TCP通信

という訳で、UDP通信のあとは、TCP通信です。

UDP通信で、自IP、相手IPを取れたので
相手を受け手として
自PCで IdTCPClientコンポーネントを貼り付け
ネットで公開されてるサンプルを利用させてもらい
あーでもない こーでもない等と考えながら
コーディング。
この段階では、動くかどうかなんて全く不明w

で、相手側用のダミーのプログラムを作る際
IdTCPClientコンポーネントでも、送信・受信、と
やってる訳だから、どうせ1対1だし、
受け手側も IdTCPClientコンポーネントで良いんじゃね?
とか思って コーディングしてたけれども
うん
ぜんぜん ダメだったwww

で、相手側=受け手側は、まぁ、サーバーになるんだから
IdTCPServerコンポーネントを貼り付けて
基本、受け身的なコーディングにして
メッセージ受信したら取りあえずそのまま
ACKコードを付けて送信するようにして
自PC側では、そのACKを受け付けて通信OK、
みたいな感じで まぁ 取りあえずこんなもんかな?

まぁ、相手側はPCではないデバイスだから
実際どうなるのかはさっぱり分からない
こんなもん、実機でテストしないと何も出来ないってばよ

例えば
昔の RS-232Cでプロッターつなげてプロッターで作図させる
って事を考えた場合に、ハンドシェークがうまく行くかどうか
思ったように作図するかどうか みたいな話
セントロでプリンターつなげてデータ垂れ流し、みたいな事が
出来る訳でもなく・・・

Delphi 10.3.3 CmtEd. で Indyで UDP通信・・・

Delphi 10.3.3 CmtEd. に最初から入っている Indy 10 の
UDPServerコンポーネントで UDP通信をしようと
しているんですが、う〜ん
もともと UDP通信って何?みたいな所もあるんだけどw
よく分かってない状態で使おうとしているのも悪いんだけど
取りあえず日本語マニュアルもヘルプも無いし
Indyサイトに行ってもドキュメントダウンロードできないし
で、どうすりゃいいんだ?状態で悶々としてますがw
(ネットで公開されてるサンプルも 古いバージョンの Indy で
 中身が全く違っていたりするから余計に混乱w)
取りあえず、ぶろーどきゃすと通信?でポート番号指定して
メッセージ送受信するのはいいとして、
相手方も同じポート番号で受信・送信するのはいいとして、
相手側が違うポート番号で送信してきた時に
どうすりゃいいんだ?
と。一旦、IdUDPServer1.Active := False; して回線切って
その別のポートにして再度回線接続してるつもりでも
全く反応してくれない・・・タイミングの問題なのか、
回線のオンオフが出来ていないのか、よく分からない。
結局
IdUDPServer1 ・・・ ポートX
IdUDPServer2 ・・・ ポートY
と2つ用意して同時に接続させるようにしてみました。
相手方(ダミー)も同じようにして
取りあえず動作はしたのですが、う〜ん、意味が分からない。
仕様なのかバグなのかも分からない。
そもそも、同じポートでないといけないって意味も分からない。
ではなぜ、「デフォルトポート」の指定があって
送信ポート番号の指定があるんだよ?
これは複数のポート番号を扱えるからという想定じゃないのかよ?
それに
昔の Delphi の古いUDPコンポーネントの場合、
ローカルポートとリモートポートがあって別々の番号を指定する、
みたいな話もあるから更に訳が分からない。

さて
それはおいといて、このUDPテストプログラムは、
別PCに入れてる相手方プログラム(ダミー)ではなくて
本当は全く別のデバイスが対象だったりするんだけど
そのデバイスで このテストプログラムが動作するかどうかは
やってみないと全く分かりませんw
手元にそのデバイスがあればいいんだけど
そのデバイス、150万円〜200万円くらいするらしいから
気軽に ちょっと買ってみるか〜 なんて事が出来ませんw

ちなみに
UDP接続をするのは取りあえず双方のIPアドレスのやり取りを
する必要があるらしいから、で、そのあとは TCP接続に移行
するっていう、いわば「御約束」らしい?事をするらしいけど
果たして!?w

Delphi・FMX プリンター設定

Delphi 10.3.3 Cmt Edt での
FMX (FireMonkey) にて
印刷を行う直前、PrinterSetupDialog にて
プリンター名の切り替え・用紙サイズ・向きを
指定しますけれども、用紙サイズを変更しているのに
用紙サイズが変わってくれない場合があります。
2回目は、変ってくれたりします。
何なんでしょう、これ? 謎挙動です。

あと
印刷前に、解像度の指定を SelectDPI で行って
使用プリンターがそれに近い解像度の指定になってくれる
らしいので、そのあと再度、解像度を取得してそれを使う
みたいな事をしないといけないみたい。
解像度の指定の初期値(デフォルト値)というのはなくて
SelectDPI をしないと DPI=0 とかやってくれちゃって
印刷できなくなります。
SelectDPI で 600dpi を指定したとしても、そのプリンターが
300dpi までしか無ければ 300dpi となりますので
600dpi に指定したからといって 600dpiのまま計算をして
印刷させようとしてもおかしくなります。

VCLでプログラミングする際は、そんな処理にはならないし
プリンターの用紙サイズを変えたら直後にその通りになるので
VCL プログラミングとはかなりの違和感があります。

Printer.PageWidth、Printer.PageHeight で印刷領域サイズは
取得出来ますし、取りあえず何とか印刷は出来そうな感じです。

Delphi FMX|Printer.Canvas で回転不可?

Delphi 10.3.3 Cmt Edt にて
FMX (FireMonkey) で Printer.Canvas で
Matrix 使って回転を掛けた図を印刷させよう
と思って 試しているんだけれども
う〜ん 全然ダメだ
Matrixでのスケーリングも出来ない
(PDFで確認)
画面上(Bitmap)ではちゃんと回転して描画しているんだけど
Printer.Canvas 上ではぜんぜんダメ。
何だこれ。こういう仕様なのかバグなのか分からない。
う〜ん
10.4 だと正常に行くのだろうか?

スクショとって Bitmap化してプリンターに送る
にしても、スクショの最大って8000×8000程度だから
全然足りないしなぁ。

全く違う方法を模索するしかないかなぁ?


追記:
Printer.Canvas でマトリックス操作が出来なかったのは
Printer.Canvas.MultiplyMatrix(〜)
が効かなかった事(〜.SetMatrix(〜)に変更)
あと
先に
mo := Printer.Canvas.Matrix;
・・・
Printer.Canvas.SetMatrix(mo);
と直前マトリックス情報をバックアップしたつもりだったのが、全くの「つもり」だったって事。結局、mo.m11 := 1.0;・・・と単位行列を1値ずつ入れて、処理後に単行列に戻してリセットって事にすることで 落ち着きました。

それと、CubePDF(現在Ver) では、透過画像の印刷は出来ませんでした。Microsoft Print to PDF では、綺麗じゃないですが一応透過画像にはなってました。

MouCur

問い合わせがありましたので
過去記事から転載しておきます。

当方の「AFMouCur」「AFMouMenu」は
Windows7 以降、動作に異常が発生する場合が多いようです。

ですので申し訳ありませんが
この2ツールのダウンロード及びレジストは
お控え下さいますよう宜しくお願い致します。

「AFMouCur」の代わりとして
フリーウェア「MouCur」
http://afsoft.jp/test/moucur.zip
を用意しておりますので、そちらを御利用下さい。

よろしくお願い致します。

モバイル用のビューワーかぁ

そういえば私も、iOS用、Android用、と
Delphi で作ろうとして四苦八苦した挙句
Delphi の度重なるバージョンアップと対応OS・開発環境の変遷のゴタゴタになんかもう翻弄された挙句に ストアだの認証だの うー分かんねー なんじゃこりゃあ!?と なんかもう結局諦め状態に入って、最近はもう何もしてないですね〜はいw
スマホ・タブレット用のネイティブアプリ開発はもうどうでもいいや、って事の次には、HTML、php、JavaScript でもって、ウェブアプリでいいんじゃね?みたいな感じで まぁ あくまでも簡易的ですが、JWWファイルをテキストファイルに変換する Windowsアプリを作り、FTPでサーバーに転送し、php(GD)で画面表示したり、HTML5・Canvas・JavaScript の勉強しようとしてたり、とまぁ、JavaScript なんか使うの十数年ぶりで完全に忘れてましたけど、いや〜、面白いっちゃー面白いですけど、この環境で CADデータビューワーとか無理があるなー等とは思いつつ、取りあえず、昔 8bitパソコンで遊んで作った「RIVERゲーム」(スキーゲーム?w)みたいなのを JavaScript で作ってみようとして、ドツボにハマってたりw
しかしローカルストレージは使えないしw(ブラウザの挙動の違いで安心して使えない)、プログラム上で特定のローカルファイルを開いてどーこーってのも出来ないし、使えるメモリも少ないっぽいし、ローカルデータベースも無理っぽいし、一体、どうしろって言うんだよ!?みたいな所もあったけど、まぁ、余り大がかりではない軽いアプリなら、HTML5+JavaScript でも十分にイケそうだなぁ〜 php が利用できそうな所は php 使えばいいしー みたいには思いました。

で、勉強のために色々と本を買いましたが
まぁ、古い本ばっかりだったせいか
内容が 現在と状況がかなり違っていたりして
色々とドタバタしてましたw 本に掲載されている メソッドやAPI 等が現在は既に廃版になってて使えなかったり。しかし一番の問題点は、脳みそが老化しててもうマトモに動作せず理解出来ないって事と、目が悪くなってマトモに字が読めないって事だったかなぁw

おにゅーPC(※中古)に Delphiインスト

というわけで、ネットで
Delphi を入れる用に
新しく NotePC を購入しました。
第4世代 Core-i5 メモリ4MB HDD:240GB
の中古PCです。¥25,000程。
これに、USBキーボード・USBマウス・USB-無線LAN
カードリーダーライターを別途入手し装着して
取りあえず起動確認。

Delphi 10.4.2 Pro版(最新版)を購入しましたので
それをインストール。2時間位でしょうか?

これまで Delphi 10 Ent版を入れてたPCは、度重なる Windows10のアップデートもあって、もう鈍重状態ですし、古いバージョンだけれどもクラスは上となる Delphi 10 Ent版とおかしな干渉をしておかしな状態になったり古いものが動かなくなったりすると、それはそれで怒りモードになりますのでw、今回、PCを新調しました。Delphi 10.3.3 Com版を入れてるPCもありますが、それはそれで OpenSourceSpace用のプログラム開発用に置いておきたいですし、こゆフリー版のソフトと有料版のソフトを一緒に入れていると何らかのおかしな事をやってくれる可能性もありますから、一緒にはしたくなかったのでした。
あぁ無駄にPCが増えていく・・・
あと
これに接続する用の Macのノートも購入しました。
勿論中古です。Delphi のバージョンによって
MacOS対応バージョンもゴロゴロ変わってくるので
それ用です。
Macなんか全く使わないのに無駄に増えていく・・・
どうせまた XCODEのバージョンがどーのこーので
使えない環境と化してしまう可能性もありますが。
で、Mac用のマウス、有線LANアダプタ、LANハブも
買ってきました。

まだ Macの方は全然何もしてないです。
LAN接続して、PAserver を入れて
Delphi で Mac用アプリを作れるようにする、っていうのが
次回の課題ですね。

HCえでぃ太 Ver.1.03 アップロード

「OpenSourceSpace」にて
「HCえでぃ太 Ver.1.03」
をアップロードしました。
Delphi 10.3.3 Community-Edition・FMXソース込みでダウンロードできます。
(ZIP圧縮)
興味のある方はどうぞw 実行ファイルは Win32アプリです。
コンパイルし直せば、Win64/MacOSX/iOS/Android/Linux(Delphi Enter版以上)での実行版も出来るかもしれません(当方未確認)。

10.3.3 では TMemo の挙動も大分よくなったらしいので、10.3.3 用に書き換えました。
・TComboEdit が FMX.ComboEdit ユニットになってました
・MessageDlg が非推奨になってたので書き換えました
・等
あと 少し修正・追加 を入れてます。

Jww1ren Ver.1.09 更新

Jww1ren にて
N=指定の番号が重複している場合、及び、無指定&N=1から指定している場合、番号つけ直しで番号が重複してしまう場合がありましたので、修正を行いました。
あと
以前のバージョンのパターンで数値指定をしている場合、最大値を取得して、その桁数未満の数値の前に「0」を付加して並び替えが数値順になるよう補正を加えました。但し、「123A」「A123」等のような指定は数値指定と認識しませんし、数値「123」としての最大値の候補としても認識しません。
Recent Comments