くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
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/? 無料版の名称は Delphi 10 Starter Edition に変わっていたわ。 stringのポインタを引数で使う時って何で@straaa[1]みたいに[1]をつけるの? PChar(straaa) じゃだめなん?
Hint: 空文字列の扱い >>4
今はAnsiStringなら>5でOK。
ShortStringだとstraaaa[0]に長さが入ってるので
@straaa だけだと PChar と互換性ないから 有料版買えばandroidで動くプログラムをDelphiで作れるの?
Indyみたいなhttpコンポーネントって使えるのだろうか? >有料版買えばandroidで動くプログラムをDelphiで作れるの?
モバイルパック?だかなんだかを買わないといけないんじゃねぇか?
Starterでモバイルパックつかえなきゃ、Pro版も買わないといけんと。
>Indyみたいなhttpコンポーネントって使えるのだろうか?
Indy使わなくても最新のにはhttpのクライアントライブラリ含まれてるからそれ使えば? cとかc++のenumって、Delphiの列挙型ということでいい?
集合とは違うんだよね? tabsheetの色を変えられるようにしたんだけど、clBtnFaceを指定しても白くなるんですけど何故でしょうか?
他の色は反映されます。
Delphi10.1Berlinを使っています。 バカみたいな質問をしてしまいました。
clBtnFace以外は反映されるのでプログラム的には間違いはないと思います。
clBtnFaceだけ弾かれる理由ってあるんでしょうか? >>15
勘だけと、システムカラーだからOSのテーマカラーが優先されて使われてるんじゃないのかな? ありがとうございます。
と言ってもどうしていいか分からないのでパネル貼ります。w 昔Del7で作ったExcelを操作するプログラムを、Berlinで作り直したいんだけど今だとFirerDacを使うんですか?
取り敢えずやりたいことは、xlsxをcsvに変換したいだけなので簡単な方法があったら教えて下さい。 今まで 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; >>21
propertyのGridLinesじゃないのか?
Delphi 10.1動かしてないから適当やけどw >>22
GridLines は False です。
試しに True にしても同じように 2pixel の区切り線が出ます。
他の人の環境では出ないのでしょうか? ちょっと教えてください
CD-ROMドライブのデバイス名(「EX-DVD04K」とか)と
ドライブ名(「D」とか)の一覧を得たいんですが
それぞれ別の方法で取得できるんですが、
複数のCDドライブがあると、対応が分かりません(EX-DVD04K = D)。
たぶんAPIを使うことにあると思います。
似た質問はあったんですが、回答がない...
ttp://okwave.jp/qa/q1942763.html cd-romだとWin32_CDROMDriveが使える ありがとうございました。
DelphiでWin32_CDROMDriveの使用例がありました。 >>21 >>24
10.1 Starter で再現したことだけ報告しておきます。 >>20
ありがとうございます。
delphiは久々なのでググりまくってる最中なんですが
Excelのコンポーネントとか有ったと思うんだけど今は無くなった?
悩んでてもしょうがないのでXRAYさんのサイト見ながらやってみます。 >>30
Excelのタイプライブラリ取り込めばおk
もしくはFlexcel買うか >>31
>Excelのタイプライブラリ取り込めばおk
おぉ、そんなのありましたね。
一気に進めそうです。
ありがとうございます。 oleコンテナだけでExcelのブックを表示できました。
昔とは違うんですね。
ただ、Excel本体も立ち上がってくるのですが、Excelは立ち上げずにブックを弄るにはどうしたらいいでしょうか? >>36
当然だけどExcel入ってない環境では動かないからね >Excelは立ち上げずに
って書いてあるのにVisible薦める香具師ってなんなの 立ち上げずにコンテナになれるわけないことを暗に示しただけやない? 新しいDelpiのフォームの位置をドラッグで移動できないな???
どうして? >>40
「デフォルトレイアウト」から「クラシック(ドッキングなし)」に変えたら
Delphi7のような画面レイアウトになるけど、お望みの回答かどうかはわからない。 丸が幾つか描かれているbitmapがあるとして特定の丸の色を変えたいと思い、
丸の上にshapeの丸を置いて対応しました。
このbitmap上の丸とshapeをきっちり対応させる方法ってないですか?
bitmapの大きさ変えたりスクロールさせた時にshapeも追従させたいのですが。 >>42
丸を違う色でを塗りつぶすか
違う色で丸を再描画するとかダメ? >>43
説明不足ですみません。
ビットマップの画像ファイルを貼り付けた状態と言うことでした。 >>44
じゃ、ビットマップ内の円を直接塗りつぶすのがいいよ?
モグラ叩き(?)みたいに動的に表示するんだったら
1) Bitmap0にオリジナルをロードしておいて
2) Bitmap1に都度コピーして任意の円を塗りつぶす
3) そんで最終的にPaintBoxのCanvasにコピーする
4) これを繰り返す
Shapeを使う必然性があるんだったら別だけどね Delphi10のインストーラーが一瞬立ち上がってすぐ終了してしまうのですが原因がわかる方いませんか?
サポートサイトを見てもレジストリを触る事しか見当たりません。
どなたかよろしくお願いします。 まずはdependencywalkerとか
あとウィルスチェックソフト止めるとか
ファイアウォール開いてみるとか 符号付きのダブルワードとか言うデータを扱う事になったんだけど、普通に数値が相手から送られて来ると思ったら
16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけどプロの人はどうやってるの?
ググったら変換の考え方は分かったんだけど、プログラムをどう書けば良いかわからん。
Delphiって16進数とかに変換すると文字列になるでしょ?
文字列をどうやれば計算に使えるの? 16bitでわかれるって
65535,65535
っていう意味?
だったら
0xffff,0xffff
で1dwordだから
リトルエンディアンなら
(dword)((a[0]<<16) | a[1])
で済むはず ああ逆ω
(dword)((a[1]<<16) | a[0]) 早速、ありがとうございます!!
式の意味がわからないw
調べ倒します。
65535,65535に分かれるんですが、-の時には両方2の補数がナンタラカンタラ変換された10進数が送られてきます。
また、分からないことがあったら宜しくお願いします。 SmallInt変数に代入すればいいんじゃない?
var
si: SmallInt;
si := StrToInt('$' + Edit1.Text); // 16進数の文字列
si := StrToInt(Edit1.Text); // 10進数の文字列
Edit2.Text := IntToStr(si);
...こう云うことじゃないの? やってみたらあっさりできました。
右や左にシフトさせるだけで、マイナスも簡単に処理できました。
2の補数とかそういうことはDelphiが内部で勝手にやってくれるという認識でOK?
10進数のまま処理ができるのは他の言語でも一緒? >Delphiが内部で勝手にやってくれる
その認識はおかしい
「Delphiは何もしない」が正しい >>59
そうなんですか?
プログラムとして読み取る時は上位の16bitを
a:=a shl 16;
で左にシフトさせて
c:=a + b;
で、cにダブルワードの数値がマイナス値も含めて正しく入ったのでdelphiが勝手に処理してるのかなと思いました。
プログラムとしてはこれでOKですか? + b でも良いかも知れないが or b の方が良くね 符号付きのDWORDって4バイトの整数とは違うの? DWORDというかWORDが符号なし整数値やろ
BYTEはunsigned char
WORDはunsigned short
DWORDはunsigned long
UINTはunsigned int
いずれも符号なし整数 DWORDは符号なしだけど
送られてくるデータはDWORDだけど符号を扱うっつってんだから
普通に中身はintだろ
intにキャストすれば万事OK 曖昧すぎるんだ
>普通に数値が相手から送られて来ると思ったら
>16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけど >>60
同じ数値型変数でも a の型を変えてビット数や符号付きかどうかが変わると結果も変わる。 >>66
仰る意味が分かりました。
符号付き16BitのデータをLongに入れるとマイナスが判断されず16Bitのプラス値が入る。
Smallintに入れるとマイナスを認識する。
と言う事で、扱うデータにあった型の変数に代入する、
もしくはデータの符号の位置が変数の左端に入るように
シフトさせるとプラマイを勝手に判断してくれると言う事で良いでしょか? >>67
勝手に、というか、歴史的なものでもあるんだが、そもそもコンピュータは符号について考慮できない。
というのはビットの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になるまで繰り返すが、これだと
逆順になるので再帰処理にするかバッファに入れておいて逆順に出すか少しテクニックが必要。 コンピューター工学
ASM
2の補数
・・・・いろいろ学ばないと分からないかも
一番いいのは痛い目食わないと覚えられないかも
趣味なら? >>68
結果がたまたま合ってるが過程がめちゃくちゃの典型的な悪文 わしもそう思う
しかし、理解すべきは、型の互換性や代入の互換性についての処理系の決め事であって、
動作原理やらは趣味の領域。 変数の宣言で符号有り、無しのどちらの宣言しても
キャストでどうとでもなるから、くよくよするな
var
i : LongInt;
キャストで
LongWord(i)
出来るから D7のクイックレポートで質問です
現在単純な一覧を作っているのですが、罫線で全体の外枠を太く、明細行の仕切りを細く描きたいと思っています
Bandのフレームを外枠にして明細行は左右だけフレームで描き、下部にQrshapeを置いてやってみたのですが
その明細行がページの最終行かどうか判断する方法がわからず
外枠の下を印刷できません
各ページの行数は不定です
何かいい方法は無いでしょうか
もう一つ、グループで小計を印刷したいのですが、その際小計行は太線で囲みたいと思います
小計行はグループフッターで印刷し四方をフレームで囲ってみたところ明細行のShapeとフレームが重なって
小計行の上の線だけ少し太く印刷されてしまいました
うまいやり方は無いでしょうか
よろしくお願いします 済みませんもう一点ありました
グループではなくページの小計を印刷したいのですが、ページフッターだと明細行と離れて印刷されてしまいます
何かいい方法は無いでしょうか 仮想のイーサネットインターフェース(NIC)の作り方って知りませんか?
linuxだと簡単にできるらしいけど、windowsでできるコンポとかコマンドとかないのかな? そういうのいじってみたい
仮想NICというかループバックていうのはMS純正でできるのが分かった https://www.embarcadero.com/products/rad-studio/features
RAD Studioの体験版ってDelphi XE2と共存できる?
体験版試して環境壊したら面倒だから躊躇してる
買うなら完全上書きで移行でも良いんだけど
xamarinみたいにハマるならやめたい canvasやcaptionを持ってないコントロール上に文字描こうと思ったら、LABELを被せるのが一番簡単? そりゃ、ポトペタしてプロパティ変更するだけだから、10秒で終わるし。 動的に沢山作ったコントロールの破棄方法を教えて下さい。
作っ時にTLISTに入れておいて、破棄する時にリストから引っ張り出してfreeでいいですか? TObjectListに入れておけば、リストをクリアするだけでOK >>81
XE2とは共存できる。
10.1Berlinの他のグレードとは共存できない。 >>86
ありがとう!入れてみてすんなりスマホアプリ作れたら買おうっと 16万かー 高すぎる
昔の4万位ならまた買いたいと思っていたのに、これじゃ無理だわ
C#ならタダだから、こっちで我慢する すごく初歩な事だと思うんだけど、フォームを最大にした状態でコントロールを配置するにはどうしたら良いですか? フォームデザイナは消せない?
フォームデザイナの中で少なからずスクロールさせるのがうざくて。 コンポーネントパレットのコンポーネントをダブルクリックすればいいんじゃね。 最大化した状態を想定してコントロールを配置したい?
...ということでもなよね >>96
そう言う事です。
俺、相当変なこと聞いてる? フォームのサイズに追随するように作るから
わざわざ最大化で考えたりしない >>97
自分だけが使うんだったら、最大化を想定して
コントロールの絶対位置を決めることもありだけどね
でも、どのような環境で使われるか分からない場合
フォームの最大化への対応は結構難しいと思う
まあコントロールのAlignでフォームサイズに
追随するだけでいいなら簡単だけど... >>98,99
ありがとうございます。
大きなディスプレイ使います。w 4Kディスプレイはプログラミングする上で非常に作業性が高まって
生産能力が跳ね上がるからアリだな
たくさんの資料と開くのはマルチディスプレイでも出来なくないけど
4Kディスプレイは縦が長いのが素晴らしい
一つ問題があるとしたら
自分のソフトを4Kディスプレイで最大化したら
描画が追い付かなくなってカクカクになるという事実に気づいてしまうこと
ただし、MS謹製のエクスプローラでもカクカクになるぐらいなので
本当の意味で4K対応のソフトはそんなに多くないし
気にしなくてもよいのかもしれんが、どーなんだろ
アンチエイリアスのかかった文字の描画がとにかく遅い
1FPSぐらいになって操作困難だ サブスクリプションって、アップデート2をインスコすれば
勝手にライセンス適用してくれるの? フォームに入力した数値を保存する方法を教えてください。 >>106
フォーム(上のエディットコンポ)に入力した数値を(ファイルに)保存する方法ということかしら?
簡単な一例。
フォームにエディットコンポ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; TEdit.Lines自体がTStringsだからSaveToFile持ってるんじゃなかったかな 昔のDelphiしかないので最近のはわかりません、あしからず。
昔のでもメモコンポならLines.SaveToFile(ファイル名)できますね。 TEditにはLinesはないね
もともと1行編集ボックスだからね
TEditの内容を保存するんだったら
TStringList.に読み込んでSaveToFile()を使うか
TFile.WriteAllText()を使うかだね
まあ後者のほうが簡単だけど TFileってのは最近できたのか
TFileStreamとは別物なんだな? パスワードがかかっているExcelファイルを開ける時にパスワードを入れる方法を教えて下さい。
delphi からパスワード無しファイルを操作する事は出来ています。 >>116
どういうやりかたで
「delphi からパスワード無しファイルを操作する事は出来ています。」
ができているのかしらんけど
OLEオートメーションを使っているなら、
xlApp.Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format,
Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin,
Delimiter, Editable, Notify, Converter, AddToMRU)
excelを持ってないなら
?FlexCel for VCL / FireMonkey
を使うとか D6の使用許諾コードって今でも都連だね 知らなかったわ なぜに今さらD6?
新しいの無料になってなかったっけ ボタンの色の変更ってTButtonから派生させて改造しないとダメ? WindowsのバグとRadStudioになんの関係が? 7以降アップデートしてないんだけど
すると良いことある? Delphi2.0 の高速コンパイルは素晴らしかった >>128
Unicode対応なんだ・・・TNTいらなくなるのか
これだけでも少し便利そうだな・・ありがと考えてみる 新機能使わなきゃそりゃあってもしょうがないけど、
さすがに7からならアップグレードすりゃ色んな新機能がわんさかだと思うよ。
古い新機能ではUnicodeから始まってWin64bit対応やOSX対応、ジェネリックやら
Vistaとかの新コントール。
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
から新機能のページだけを過去のバージョンにさかのぼってみていけばいい。 コードエディタの進化は効率アップにもなるしやっぱ良いよ Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。
今、バーコード入力するソフトを書いているのですが、担当者をComboboxで選択していないと
EditをクリアしてShowMessageを表示するつもりです。
EditをクリアしてMessageを出す事自体は出来ているのですが、バーコードから送られるデータの
最後にCRがついてきて(バーコードリーダーが付けてきます。)、多分このCRがShowMessageに
送られてShowMessageが勝手に消えてしまうようなのです。
イベントはKeyPressを使っています。
Windows7 Delphi10.1の環境です。
よろしくお願いします 「Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。」
後ろにごちゃごちゃよくわからん説明が書いてあるけどこれが聞きたいの?
単に入力された文字をキャンセルならKeyPressのイベントでKeyパラメータに
Key := #00とか代入すればいいんじゃなかったっけ?
if Key = 'A' then
Key := #00;
すりゃ、Aの文字が入力できなくる
このことじゃなかったらもっと適格に書いてくれんとわからん。 ありがとうございます。
バーコードから送られてくる文字を全てキャンセルしたいのです。
一文字ずつチェックするのではなく、一気に送られて来た文字を消す方法はありませんか?
宜しくお願いします。 >>136
CRって復帰コードのことだろ?
最後にCRがついてくるなら、それが送られてくる最後の文字
なら、それが送られてきたら Key には0入れて Edit.Text := ""; でよかんべ こんなんじゃだめなの?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then begin
ShowMessage('Enter!');
Edit1.Clear;
end;
end; ありがとうございます。
出来ました。
条件に合わなかったら入力したらいけないと変な思い込みをしてました。
助かりました。 できません。
大きなラジオボタンの絵を描くならできます(ちょっと気持ち悪いので注意)。
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; Berlin update2 のFireMonkeyで
Listbox.Items.Exchangeメソッドが動作しないXE2では動くのに 関連付けされてるファイルを起動するのは ShellExecute でできますが
例えば abc.csv ファイルを .txt で関連付けされてるアプリケーションで
開く簡単な方法はあるでしょうか ”
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
” >>147
簡単には無いと思う。
レジストリ開いて関連付け調べてabc.csvを引数にそのプロセスを起動させる。 >>149-150
サンキュー参考になりそう
ちなみに xray さん元気そうでなにより 私はFindExecutable APIで拡張子".txt"のダミーのファイル名を渡して…というところまで考えていたのですが、そのものずばりなAPIがあるのですね。 Cのライブラリで
const char *ss[] = {"abc", "def", "xyz", NULL};
を引数として要求するAPIがあるのですがDelphiからは
どうやって定義すればよいでしょう? >>154
>>155
ありがとう。
array of は内部的にはポインタなんですね。上手く動作しました。 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 の '静的配列名' はポインタではないのしょうか。 引数は型なしパラメータだから、実際にはパラメータのアドレスが Fs.Write に渡され、
そのアドレスが処理対象になる。つまりそこに必要なサイズのメモリ領域が正しく確保さ
れていれば、その領域がどのような型なのかは関係ないということか。
結局 Delphi の '静的配列名' はポインタではないんだね。 後に誰かの参考になるかもしれないので少し詳しく書いておきます。
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]);
で上手く動作しました。ペコリ。 >>162
そうですか。スレ汚し失礼しました。ペコリ TreeView をデザイン時にフォームに貼り付けてできたアプリを終了するとき
TreeView の各ノードが保持するデータ(TreeView1.Items[n].data が保持しているデータ)
も自動的に廃棄されるのですか? >>164
TTreeNode::Data が保持するデータはプログラマが明示的に破棄しないとダメ。 >>165
ありがとう。
以下のような感じでいいのですかな?
//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; スレッドを使ったプログラムで、スレッド内にある未使用の変数をコメントアウトしたら、
終了する時にアクセスバイオレーションが出るんだけど、こんな事ってあるの?
プライベートに宣言してあるからメインとかが絡んでる事は無いのだけど。 コメントアウトされた変数が確保していたメモリ域のおかげで
偶然アクセス違反が発生しない状態になってるとかじゃね?
要はコメントアウトしていなくてもコーディングミスで不正なメモリアクセスしている状態なのかも こんな時間にありがとう!
そんな事があり得るんですか。
難しいなぁ。 「参照」とポインタの話か? 慣れるまで結構厄介だからな。 ちょっと教えてください
自分自身(実行ファイル)を再起動する方法を教えてください
ちなみに二重起動を禁止したアプリでです
できれば再起動用の別アプリを使用しないのが理想的です... >>173
自分自身が起動するときだけ二重起動許可して起動確認できたら自分を閉じる >>174
ありがとうございます。
やはりその方向ですか。
リスタート後に最初のインスタンスのiniファイルを読み込みたいで
Mutexのチェックの前に最初のインスタンスの終了を待つ処理が
必要かなと漠然と考えていたんですが...
簡単でスマートな方法はないんですね >>175
自分(プロセスA)が自分(プロセスB)を起動するときに、コマンドラインで /restart というようなコマンドを渡す。
プロセスBは /restart ってコマンドを受け取ったら、Mutexの所有権を得るまで待機する。(再起動処理)
プロセスAはMutexの所有権を開放する。
/restartを受け取らなかった場合は、Mutexの所有権を得られなかった場合は終了する。(二重起動防止) >>176
そうですね
Mutexが取得できるまで待機すればいいですよね
終了待ちをもっと複雑な方法で考えてました
ありがとうございます よろしくお願いします。
『レコード型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で似た様なコードの重複が多い場合、
クラスの定義をもっと効率良く記述できる方法があれば教えていただきたいです。 クラスの継承を使えないか?
レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか?
そもそもクラスとレコードに分ける必要があるのか?
などなど レコード型をクラスのメンバとしてポインタで管理して
そのポインタの実体を操作する仮想メソッドなどを作る。 firemonkeyを使ってandroid向けのゲームを作り始めましたが
いきなり躓いて困ってます。
ゲームループのスレッドを作って描画を行っていますが
TBitmapがスレッドセーフでないため描画処理が正常に行えません。
firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。 DrawGridのセルの色を取得する方法を教えて下さい。
どのセルに何色を塗ったか記憶しているのですか、
もっと簡単に知る方法があると思い質問させてもらいました。
宜しくお願いします。 >>182
スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ >>183
Delphi6の時はCanvas.Lockがあったと思いますが
今使ってるDelphi10.1ではLockが見つからなくて・・・ >>185
スレッド側で描画用のBitmapをCreateしてWidth、Heightを設定した段階で
EBitmapSizeTooBigの例外が発生してしまうため、そこまで辿り着けなくて困ってます。 例外の種類見る限り、スレッドと関係なさそうに見えるが。
ビットマップが大きすぎるってWidthとHeightをいくつに設定しようとしたの? >>188
サイズは350x450なのでたぶん大きすぎることはないと思います。
メインスレッドで動作させた場合は、例外が発生することなく動作するので
メインスレッド以外ではTBitmapは使えないのかと・・・
また、Windowsでは正常に動作してAndroidで動作させると例外が発生するため
Android固有の問題なのかなと思いまして >>189
AndroidのThreadで発生するってQPに上がってるからVOTEしとけばそのうち治るんじゃないかな
そのうち。 >>190
教えていただいたものを使って処理を行ってみましたがダメでした。
>>191
期待しないで待つことにします。
別スレッドでの処理を諦めてとりあえずメインスレッドで全て行うようにします。
相談に乗っていただいた方々ありがとうございました! Delphi 10.1 BerlinのStarterでチュートリアルをやってます。
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/ユーザー アクションに対する応答をコード エディタでコーディングする(IDE チュートリアル)
このページの中ほどまで進んだら
[dcc32 エラー] TextEditorUnit.pas(94): E2003 未定義の識別子 : 'TDialogServiceSync'
というエラーが表示されてしまいます。
どうしたら修正できるのでしょうか? >>194
ここで引っかかってるのかな?
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);
と書き換えたらエラー出なくなると思う。 >>195
ありがとうございました。早速試してみましたが、
[dcc32 エラー] TextEditorUnit.pas(99): E2003 未定義の識別子 : 'mbYes'
[dcc32 エラー] TextEditorUnit.pas(99): E2250 指定された引数で呼び出すことのできるオーバーロード関数 'MessageDlg' が定義されていません
[dcc32 警告] TextEditorUnit.pas(99): W1000 シンボル 'MessageDlg' を使用することは推奨されていません : 'Use FMX.DialogService methods'
とエラーが出てコンパイルが通りませんでした。
FireMonkeyはデフォルトで使えるのかと思ってました。いろいろと無知すぎるので
もうちょっと分かりやすいところから勉強しなおしてみます。 >>197
その警告が出るって事はFire Monkeyの方なのか。
だったらそこは元の>>194の命令でいいはず。
usesの所に FMX.DialogService.Sync が記載されているか確認して
なければ追加。 スレッドからサブフォームを表示する事は可能ですか?
他の機器から特定の信号が来たら、警告画面みたいなのを表示しようとして
スレッドで信号監視してフォーム表示のつもりがうまくいきません。
なのでメインフォームにタイマー置いてタイマーイベントで信号監視しています。
ヘルプを読むとスレッドからフォームはコントロール出来ないような事が書いてあったのですが、皆さんならどうしますか? 表示するだけなんでしょ?
自分だったらpostmessage ごめん
post-/sendmessageにはwm_closeみたいな表示するメッセージはなかった
独自のメッセージを定義して受け取った側でshowするか
showwindow(async)を使うかだね >>199
TThread.Synchronizeで、メインスレッドに切り替えてから、引数で渡されたコールバックメソッド(手続き)でサブフォームを表示させるとか >>198
エラーが消えて無事に動きました。
ありがとうございます。
こういうのはIDEが教えてくれるのかと思って
いましたが、有料版だとそういう機能は
あるんでしょうかねー >>203
関数や手続きが定義されていないってエラーが出たときはその関数などのヘルプを見て
そこに書いてあるユニット名が自分のプログラムのuses節に書かれているか調べるといいよ。 >>200,202
ありがとうございます。
教えてもらった方法を調べながらやってみます。 TShellCtrlコンポーネントって、デモに含まれるものなんだよね なんでVCLに含めなかった?? マルチスレッドが終了したかどうか確認するのに、フラグで確認してるんだけど、
なんかもっとスマートな方法ってありませんか?
ググったらWaitForが出て来たのですが、hoge.WaitForとしてもハンドルエラーとか出て使えませんでした。
宜しくお願いします。 何があなたのスマートの基準なのか?
フラグは別に悪くないと思うけど。 >>208
hogeってTThread?
そんだったらTThread.FreeOnTerminateをTrueにしてるから、
スレッドが終了してFreeされてるから、ハンドルエラーと出てくるんだろう。
FreeOnTerminiateをFalseにすればOK(そのかわりTThreadの破棄は自分でやる必要がある)。 終了したか確認するのにWaitForしたら確認じゃなく待機しちゃってダメじゃないのかと思うけど。
FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てるので良くないかい?
あとはメインフォームに終了通知としてメッセージ送るとか。
Win32API使うのOKなら FreeOnTerminiate:=false; にして
スレッドハンドルに対して WaitForSingleObject (タイムアウトは0に設定)使い
WAIT_OBJECT_0が返るかWAIT_TIMEOUTが返るか確認する。
もしくはGetExitCodeThread関数を使うとかかな。 そういやスレッドの終わり方の議論が2、3年前にあったな FreeOnTerminateが使えない?とかいう議論じゃなかったっけw FreeOnTerminiate:=true;で OnTerminateイベントでフラグ立てる
に賛成。簡単確実。 ああOnTerminate 内はメインスレッドか。
なら簡単だわ。メンゴ。
昔はOnTerminateイベント無かった希ガス おはようございます。
皆さん、ありがとうございます。
フラグがやはり良さげなんですね。
もう1つ教えて下さい。
スレッドの中で
try
stringlist:=TStringList.Create;
while not Terminete do
begin
何かの処理
end;
finally
stringlist.free;
End;
とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
異常終了した時はfinallyの処理をしてくれます。
stringlistの解放はOnTermineteでするのが普通なのでしょうか? >とした時に、TermineteをTrueにして終了するとfinallyの処理をしてくれません。
んなわけない。ちゃんとfinallyの処理するはずだからもっとしっかり確認しよう。
>フラグがやはり良さげなんですね。
もうちょっと具体的にスレッド終わった後何したいのかとか書いてくれんと答えようがねぇ。 >>220
ホントだtryはあった...でも
最近のdelphiは仕様が変わったのか...
念のため例外処理入れてみたら?
list=:tstringlist.create;
try try
while not terminated do begin ...end;
// ここで正常処理終了のフラグをセット
except....end;
finally list.free; end; >>218
>TermineteをTrueにして終了するとfinallyの処理をしてくれません。
どうやって確認したの?
あとTThreadの派生クラスならTerminateはメソッドとTerminatedプロパティが使える。
>stringlistの解放はOnTermineteでするのが普通なのでしょうか?
そんなことはない。 昔昔、QuadrupleDを使ってやってたサウンドの再生を最新のDelphiでやりたいんですが、使えるライブラリを探してます。
・複数のwaveファイルをマルチチャネルで読み込んでそれぞれ別個に再生したい
・チャネル単位でループ再生、ピッチ変更、音量変更がしたい
あるかな…(´・ω・`) ブレーク入れてね
ステップで見るときブレーク入れないと
見かけ飛ばすから フラグの排他制御は簡単だと思うが。
boolean変数一個なら読み書きは1命令で、割り込まれることはないだろうし
書く前に消されちゃうようなコードを書かなければいいだけ。 >>226
きちんとした知識がある人にとっては簡単だよね フラグをグローバルやメインフォームなどに
持たせるのはなんか古臭いという気持ちはある 元号変わったらどうすっかな
D7だと対応できんだろ >>229
元号とか使わないか
自力で変換
OSの機能を使ってるんだったら大丈夫か
ただvistaも今春でサポート終了するけど Berlin試したみたけど以前ここで言った
gifアニメのバグが解消されてないな string、ansichar、pansicharの型キャストってどうやるの?
暗黙の型キャストの警告を消したいんだけど、ググってstrpcopyとかのサンプルを実行しても消えない。 >>232
string(ansistring変数)とかで消えない? Konopkaコンポーネントのアンインストール方法を教えて下さい。
インストール中に異常終了したのでアンインストールしたいのですが、
アンインストールも途中終了してしまって、行き詰ってしまいました。
よろしくお願いします。 >>235
マイドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaのフォルダと
パブリックのドキュメント\Embarcadero\Studio\18.0\CatalogRepositoryにあるKonopkaの
リポジトリデータを削除すればよかったと思う。(心配ならバックアップとっといてね)
konopka、インストール失敗するとアンインストールもできなくなるんだよね。 >>236
ありがとうございます。
助かりました。 入力の支援機能で出て来た候補にカーソルを合わせて、
ピリオド打ったら選んだ候補が入力される設定ってどこにありますか?
ベルリンのup2を入れたのですが、最初は良かったのにいつの間にかピリオドで選択されなくなってしまいました。 StringGridのセルをデータの合わせて塗りつぶすことをしています。
タイマーイベントで0.2秒毎にデータに変化がなくても一旦デフォルト色にしてから他の色を塗っています。
そのせいだと思うのですがセルの選択ができません。
セルをランダムに色を塗りつつ、セルの選択もできるようにするにはどうしたらいいでしょうか? TSringGridのOnDrawCellイベントの引数で渡されるTGridDrawStateで、選択されたかどうか判断できる。
選択されてないときだけ、色を変更するよろし。 >>240.241
ありがとうございます。
まだ、試してませんがどういうコードを書けば良いか案が浮かびました。 タイマーで200ミリ秒ずつやってるところが壮絶にまぬけっぽい 小学生以下の知能 Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。 昨日はありがとうございました。
TSringGridの特定のセルに数値を書き込むのにDrawTextを使って右寄せで書き込んでいます。
この書き込んだ数値を後から取得することってできますか?
セルにHintみたいに埋め込めたら簡単なんですけどググっても分かりませんでした。
>>243
シーケンサーの信号状態を監視するんで手っ取り早くタイマー使ってます。 その「数値」はどこにしまってあるの? それは自分で世話するしかない。
DrawTextは文字列を描画するだけで、何書いたかなんてどこにも覚えていないよ。 StringGridなんだから、Cellsプロパティを通して、文字列として各セルにでも入れときゃいいんでね?(ハナホジ >>245
格納するオブジェクトも実装したらいいんじゃ 整数ならcellのobjects(だったっけかな)に入れときゃ良いじゃん vs2015アンインスコしたらDel10.1でコンパイルできなくなった。
Del再インスコするしかない? >>251
ありがとうございます。
調べてみます。 スレッド1で変数aの値を読み書きしていてスレッド2では変数aを読み込みしかしない場合って干渉対策って必要? ありがとうございます。
干渉対策じゃなくて排他処理っていうんですね。
失礼しました。
各スレッドで共有する変数を集めたUnitに変数aを宣言して使っています。
この変数aを複数のスレッドからアクセスする場合、Synchronizeを使うのでしょうか?
SynchronizeはスレッドからVCLを描画する場合に使うと書いてあったので、フラグを立てるとかして
排他処理をするのでしょうか? クリティカルセクションでも使えばいい、どっかで
CS := TCricalSection.Create()で作っておいて、
同時にアクセスされたら困るところで
CS.Enter();
try
共有リソースの変数Aにアクセスなど
finally
CS.Leave();
end; まぁ、他にもSyncObjs.pasにTInterlockedとかあるけど、
そこは自分で頑張ってくれ >>255
Synchronize内の処理はメインスレッドでの処理となるから
同時アクセスがありえなくなるということらしいよ 皆さん、ありがとうございます。
これから調べて確認しようと思うのですが、最後に1つ教えて下さい。
シンクロナイズを使い過ぎるとマルチスレッドの意味が無くなるとヘルプに書いてありました。
クリティカルセクション等は使い過ぎてもメインフォームの反応が悪くなるとかそういう事が無くなる、若しくは低減されるとかあるのでしょうか?
もし、それならクリティカルセクション等を推奨すると思うので使い過ぎはやはりダメとは思いますがどうなんでそょう? >>259
ウインドウ描画などしているスレッドが「メインVCLスレッド」。
要するにメッセージループが動作しているスレッド。
Synchronizeはこのメッセージループに「渡したプロシージャの処理を任せる」ため
Synchronizeを多用すると「メインフォームの反応が悪くなる」という状況を生む。
Synchronizeはあくまで変数のアクセスと言った軽い処理に限定すればいい。
この場合、メッセージループがウィンドウメッセージを処理する合間に変数へのアクセスを処理する程度なので
その程度で「メインフォームの反応が悪くなる」ということはないだろう。
ただ、もし重たい処理を任せてしまうと、フォームのイベントで処理するのと同じになってしまう。
(フォームなどコンポーネントのイベントはメインVCLスレッドで動作している)
この場合メインフォームの反応が悪くなる。
クリティカルセクションはメッセージループとか関係ないので、それによってメインフォームの反応が悪くなるということはない。
ただ例外として、メインVCLスレッドでクリティカルセクションを使うと、
他のスレッドが使用中はメインVCLスレッドは待機してしまうのでメインフォームの反応が悪くなることはある。 >>259
問題は「使い過ぎ」の定義だと思うけど
僕は1つ1つの処理の長さが長くなってしまった場合をいってるのではないかと思う。
同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
それを否定するようなプログラミングはもはやスレッドではないということではないかと。 あ、もしかしたら質問に答えてなかったかな?
つまりsyncronizeだろうがcsだろうが
占有状態が長くなるようなロジックになるなら同じことだ >>262
今のcpuは普通にマルチコア、マルチスレッドじゃない?
同時に動いてんじゃない? >>264
そういう御仁が現れるだろうなとは思ってた。
申し訳ないがマルチコアなどの詳細な仕組みが現話題の結論に
影響を与えるものではないので無視させてもらいます。 OSのタスクスケジューリングやスレッド、Delphiのメインスレッドの話がごっちゃ混ぜになっててカオスカオス 細かい処理が交互にっていつの時代のタスク割り当ての話してるんだ >マルチコアなどの詳細な仕組みが現話題の結論に影響を与えるものではない
今の話題においてこれは正しいと思う。
>同時処理といっても現実は短い処理が交互に行われるのをスレッドと称しているだけであって
この話も同じく、“現話題の結論に影響を与えるものではない” 中途半端に説明するからややこしくなる
SynchronizeにしろCriticalSectionにしろDelphiのメインスレッドが処理待ちになる状況ができれば反応は悪化する
くらいでイナフ >>269
メインに限らないっしょ。同期されたサブスレッド間でも片方が長い処理すれば片方は待ちになるわけだし。 >>271
メインスレッドを待機が発生するスレッドと置き換えて考えたら良いだけの話であってそのあたりは柔軟に考えてくだちい
まー、サブスレッド同士が待機しあって停滞しててもメインスレッドがそこに巻き込まれてなければ(見かけ上は)レスポンスの悪化とかは無いけどね 結局「スレッド」という英単語が同いう意味かってだけだね。
あと例えば一度にたくさんのログインがあるサーバーなんかは
スレッドたくさん作ることによるメモリの圧迫が指摘されてて
メッセージ処理型に回帰してるよね。
つまり同時(的な)処理においてスレッドが万能ってわけじゃない
ことも知ってたほうがよいよね。 で、そのメモリ圧迫とやらは今回の質問のどこにかすっているのかね? 10.2tokyo入れて見たんだけど、10.1でgetitから入れたコンパーネントが入れられなくてプロジェクト開けられない。
エンバカ何なんだ? >>278
よくある
Getitじゃなくて配布元からダウンロードして入れたらOk StarterのBerlinをTokyoにするんだけど
いったんBerlinをアンインストールするんだっけ? StarterのBerlinをインストールしたままTokyoをインストール出来ましたし、同時に起動出来ました。
公式ブログには逆の順番(Tokyo→Berlin)でのインストールは、
お勧めしませんって書いてました。 >>281
ありがとう
上書きインストールされないってことか... 2007からXEにあげるのに、いまさらながらユニコードに取り組むんですが、
・フォーム上で入力されるのはUTF-16
・UnicodeStringで保持するのはUTF-16
・ソースはUTF-8
の違いがあるようなのですが、ソースでリテラルで記述したUFT-8の文字を
コンポーネントのテキストやUnicodeStringに代入したりするとごちゃ混ぜに
なってしまうんですか? 文字コードを確認してみたのですが
var
c: Char;
begin
c := 'あ';
ShowMessage(Format('%x',[(Ord(c))]);
のソースで、ソースをバイナリエディタで見てみると、'あ'の部分
のコードはUTF-8ですが、Ord(c)はUTF-16のコードでした。
これは、勝手に文字コードの変換が掛かるのですか? こう言うとアレだけど
普通に使うときはユニコードとか
意識する必要ないんじゃない? >>285
例えば、
s := Edit1.Text + 'が入力文字列';
のような場合だと、sにUTF-8の文字コードとUTF-16の文字コードが混在して
まずいような気がするのですが、プログラム動かしてみると、コンパイル時に
ソースコードでの文字列はUTF-16に変換してるのかな?と思ったのですが。 便乗失礼します。
2009以降
・ShowMessageの内部では、UnicodeStringとして表示する文字列を処理します。
ってことだったと思うのでUTF-16変換されてるのかと
異なるコード間では暗黙の変換される
でよかったでしょうか?
どこまで変換されるのかは確認してないのと、
Chr関数とか文字数、Byte数を数えるときに気をつけて考えておく、くらいでしか認識してないのですが
https://edn.embarcadero.com/jp/article/38783
https://edn.embarcadero.com/jp/article/38791 >>287
リンク先を読んでみると、文字列の代入時に変換してるみたいですね。
ありがとうございます。 >>286
大丈夫
ソースファイルがutf8とか意識しないほうがいいよ
文字列リテラルもstring変数もunicodeだよ >>288
内部でどう処理してるのか知らないけど
このケースだと代入時(実行時)に変換してるのかな?
実行ファイルの最後に定数が保存されてたと思うけど
すでにunicodeになってたような気がする >>285
逆に、常に意識してないと嵌まることがあるよ。 >>288
リンク先を読んでみると、「すでにUnicodeとして扱われている」ってのが分かると思うんだが。
>Delphi 2009で、内部的に大きく変わっています。Delphi 2009では、Unicodeを標準文字列型として採用しているために、このコードで使われている文字列はすべてUnicodeです。
>Sに代入している ‘Hello, World.’ は、Unicodeです。
ソースの文字コードがなんであれ、リテラル文字列の扱いはUnicode。
C++Builderで扱う場合はLが付いているかいないかでリテラル文字列の扱いが変わると思う。 てか簡単なサンプル作って試せば済むことじゃん
昔のバージョンのdelphiで
文字コードを意識する必要があるケース以外
最近のバージョンのdelphiでも
unicodeであることは考えなくていいんじゃない 真に気を付けないといけないのは1文字に複数文字が入ってるサロゲートペア
見た目が同じだからハマる
「ば」と「ば」が違う文字とかわっかんねーよ >>295
最後の行は「ば」?
これってサロゲートペアなのか?
それとも別の文字が化けた?
それと
内部の文字列がunicodeになった話と
unicode文字列を処理する話は
微妙に違う話だぞ? UTF16も実は可変長という落ちなんだからややこしくなっただけだと思う >>297
2chだと化ける可能性あるから両方サロゲートペアじゃないよ
入力ソフトによってはかな入力するとサロゲートペアになるんよ
んでUTF16の入力を受け付けるもんだからそのままDBに格納したりしてあとで検索にひっかからないとか
コードの仕様で言うならIF条件すり抜けたりとか
おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった >>295
それ、ちょっと間違ってるな。
そのケースはサロゲートペアじゃないだろ。
サロゲートペアは単にUTF-16の2バイトのコードユニットで2つのコードユニットで
1文字を表すケースの事でしょ。
「ば」の話は合成文字だか結合文字だかそっちの話じゃん。 >299
>おかげでEditのTextとか必ずUTF8Stringに代入する癖がついてしまった
だから、それも全然関係ないから。UTF-8だから解決するというのは勘違いだから。
合成文字の問題は「正規化」使って解決する問題。 >>302
はしょってるから書いてないけど正規化もしてるよ
文字での説明に重箱の隅つつかないでくださいな
気にしないでやってるとそういう問題(にぶつかる可能性)もあるよって話です 言葉の使い方が完璧に間違ってるのに重箱のすみつつかないでっていわれてもなぁ・・
君たちが議論してる「ぱ」と「は」+「゜」はサロゲートペアと全然関係ないんだけどな。
合成済み文字と基底文字と結合文字の話で合って、
サロゲートペアと全く関係ない。 つまりこれこれこういう問題があってこうしましたって1から10まではしょらず正しい言葉をつかって説明しないとここには書き込むなって事ね。了解。
めんどくせ 完全に言葉の定義を間違ってるんだから、教えてあげただけじゃねぇかよ。
別に間違ってたことに対して、「おまえら馬鹿?」みたいなくだらい煽りとか
俺はする気ねぇし。丁寧な言葉で教えてあげたら、その言いぐさ。 言葉の定義とやらが間違ってたとしても、
バグの原因になる事のコメントは個人的に大歓迎(こなみかん 俺には難しい話をしてるけど、文字扱うには正規化とやらをやって、utf8とか16とかに統一してから加工したり検索したりしないとハマるってこと? サロゲートペアに関連してだけど
MECUtilsとか使ってやったりするの?
今まであんまり意識したことないから
注意喚起は嬉しいけどメンドクサ過ぎるね Unicode化の弊害というかなんというかだけど、
マルチデバイスも相まって想定外の変な文字が入る確率っていうのは
確かに飛躍的に増えてる・・・気がする。 >>310
そんなの使わなくても普通は標準であるだろ。
Character.pasに必要なのそろってる。
TCharacter.IsSurrogate() >>312
TCharctorなんてものはない
System.Charactor.IsSurrogate(廃止)
もしくは
TCharHelper おっと綴り間違ってたな
System.Characterだな。また重箱の隅つつかれるところだった そうなんだ。それはすまん。XE3以降買ってなくて
最新のもってなくて。 今ってディスプレイのアスペクト比が数種類あるけど、皆さんは画面のデザインってどうしてますか?
16:9に合うようにデザインしてる?
それとも、フォームの設定とかで実行時にある程度アスペクト比に合わせてくれる設定とかってある? >>316
意味分からないが。
ウインドウサイズ自体固定させないし、
Align プロパティを使って固定部分とそうでない部分とを分けるし
プラスTSplitterでユーザの好みにさせたりもするし。
動画や画像でもないならアスペクト比なんて気にしないんじゃないのか。 >>316
ファイアーモンキーならTScaleLayout使って無理やり対応した事もあります メモリーリークの場所ってdelphiに標準で入ってるリークを監視するやつのフルバージョン入れないと分からない? Delphi10.1でのフル機能のfastmm4の使い方を教えてください。
メモリーリークのメッセージは出るのですが、テキストファイルが作成されないです。
よろしくお願いします。 DatetimetostringとFormatDateTimeの違いって
procedureであるか、Functionであるか、だけですか?
(引数は異りますが) >>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分手間がかかるなと思ってました。 何かとの互換性でどうしてもDT2strが欲しかったんじゃないかね >>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を呼び出しているだけ。 >>329
なるほど、参考になりました。ありがとうございます。 >>328
FastMM4のデモで試した結果、ソースの所のFastMM4 in 'FastMM4.pas'をSharememに変えたらリークの場所がわかる余裕になりました。
Sharememが何かはわかりません。w
円バカのサイトに載ってたのでやって見たらなんとか動作したって感じです。 delphi10.1までは問題なかったのにdelphi10.2にしてから
stylebookで指定したstyleが一部反映されなくなりました。
tabcontrolのタブがandroid実機で実行すると
styleが反映されずデフォルトのタブになってますorz
対処方法とか分かる方いらっしゃいますか?
暫くは10.1を使い続けるしかないですかね・・・ >>332
Android用のスタイルを一旦削除してマージ >>333
アドバイスありがとうございます。
Android用スタイルを削除してマージしてみましたが結果は同じでしたorz
もう少し詳細に書くとIDE上ではタブにもスタイルが反映されているが
ビルドしてAndroid実機で動かすとアクティブなタブだけが
デフォルトになってしまう状態です。
同じプロジェクトをDelphi10.1でビルドし直してAndroid実機で動かすと
アクティブなタブも含めてに正常にスタイルが反映されてます。
また、スタイルに使用しているファイルは「AquaGraphite.style」を
使用していますが他のスタイルファイルを使っても同様の結果でした。
実機はXperia Z3ですが他に持っていないので他機種でどうなるかは未検証です。 >>333
すいませんTabControlのみしかない最小限のプロジェクトで試したら
正常にスタイルが反映されているのが確認できました。
変な設定がどこかで生きているのだと思います。
失礼しましたm(_ _)m メッセージダイアログやショーメッセージで改行を
使うとメモリリークが出るけどなんで? delphiがバグってる?
新規作成でシンプルな状態でやってもメモリーリークのメッセージが出るんだけど、どうすりゃ良いんだろう。
俺だけ? メモリーリークを調べているのですが
MessageDlg(IntToStr(123),mtConfirmation, [mbOK, mbCancel], 0);
IntToStr(123)が原因でメモリーリークが起きるみたいです。
Delphiのバグ?コードがダメ? 336ではないけどソースコード見てみた
ポイントになりそうなところがアセンブリで書かれてた 1. MessageDlg と同じ引数を持つ、そのユニット内にローカルな関数を書いて、MessageDlg のせいかどうか調べる。
2. IntToStr と同じ引数を持ち、適当な文字列を返す関数を同様に書いてみる。
3. コンソールアプリケーションのプロジェクトを作成して、1.を行って調べてみる。
4. 同様に IntToStr も行ってみる。 どのバージョンで発生したのかしら?
こちらのTurbo Delphiは
ReportMemoryLeaksOnShutdown := True;
で再現せず。 昔の経験
マルチスレッド内で間違った呼びし、クリティカルセクションの間違った実装 「IntToStr(123)が原因でメモリーリークが起きる」
と判断した理由を開示せよ 32biでも64bitでもinteger型は32bitですか?
Pointer型(とPtrInt型)だけが変化すると考えてよいのでしょうか? -1 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る
0 を代入する
pointer を求める
pointer + 0 と pointer + 3 と pointer + 7 あたりを見る Integer は 32 だけど LongInt は 32 とは限らない >>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 >>351
iOSだけ特殊な感じ?変なの。
LongIntとLongWordは使わないほうがよさげですね。何でこんな変な仕様にしたんだろ。 あ、iOSにはLinux系も含まれるんですか?
その辺のあやふやさも嫌な感じですね。 シンエディットでプロシージャの名前とファンクションの名前を色分けするような使い方をしたいのですが、
シンジェネラルに設定するキーワードの種類を増やす事はでききませんか?
継承してシンジェネラルも自分で作らないと無理でしょうか? SynEditのことらしい
これをカタカナで書く感覚が分からん すまん。
あんまり、キーボードとかスマフォの画面とか触れないから音声のやつで入力した。 昔MCIをいじっていた者です。覚えている人いるかな?
4年くらいメソッドを書いてなくて、送るでwavを聞きたいなって思って久しぶりにコンパイラを触りました。
何をするソフトなのかというとフォームに対してD&DしてTListにD&D元のファイルのフォルダの
ファイル名を取得するソフトなんですが、なぜうまくいかないかわからなくて…。
指摘していただければ幸いです。 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} 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; 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. とこでfmxアプリをタスクトレイに収める方法はないですか?
探すとロシアのサイトにコンポーネントがあったけど
他に方法はないでしょうか? >>366
ええもちろん
例えばバックグラウンドでネットにアクセスして
通知したりポップアップしたりする感じ
Androidだとserviceを使うんでしょうが
Windowsデスクトップだとタスクトレイに
常駐させるくらいしか思いつかない
こういうWindowsアプリをfmxで作る場合
どうするんでしょうか? >>367
WinAPI.WindowsをUSESしてタスクバーから消したいアプリケーションのHWND取得してShowWindow(HWND,SW_HIDE);をぶちかます
タスクトレイにアイコン表示させたりする場合はコード記述でもできるけど面倒だからMonkeyMixerか何か使ってVCLを混在させてTTrayIcon使う >>368
ありがとう
MonkeyMixerを調べて見ます TTrayIconはVCL依存がほとんどないから、切り出して使った方が余計なユニットがリンクされなくていいと思う
自分はそうしてる 教えてください。
fmxで矩形以外の多角形領域を
Bitmap(.Canvas)間でコピーするには
どうしたらいいでしょう?
Helpを探したんですが見つけられませんでした
苦肉の策で矩形領域を別のBitmapにコピーし
対象の多角形領域外を完全透過に塗りつぶして
それを最終的に目的のBitmapにコピーしてます
よろしくお願いします fmxねぇ...
実行ファイルのサイズが
vclの倍以上になるのはビックリ
でもvirustotalなんかでの誤検知は
確実に減るな DBCtrlのKeyPressメソッドで出てくる
^H ^V ^X
とかって何を指してるんですか?それぞれ16進で、8,16,18の値なんですが。
ポインタの逆参照以外で ”^” の使い方はヘルプにも無いのですが。 H 48h
V 56h
X 58h
ctrl+H で 08h
ctrl+V で 16h
ctrl+X で 18h >>374
コントロールキーを押しながら…の記述に ”^” を使うということですか。
ありがとうございます。 ちょっと教えてください
ジェネリクスなTListにレコード型を格納しておいて
後でレコード内の一部のフィールドを修正したい場合
どうすればいいんでしょうか
やっぱレコード全体を取り出して、修正後に全体を書き戻す? うまくいくかはわからないが、
lst: TList<THoge>なリストがあるとして、
for i :=0 to lst.Count-1 do begin
lst.List[i].SomeField := v;
end;
のように、レコードのコピーが発生しないようにすればもしや。 デフォルトプロパティ List[i] に相当する List.Items[i] の
read関数 function TList<T>.GetItem(Index: Integer): T; は、戻り値が
左辺値ではないので、どうしても一時変数が必要です。 >>378
Itemsプロパティではなく、内部で管理している配列を直接返すListプロパティを介してもテンポラリーのコピー発生するんだっけ?
ちょっとうろ覚え。 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 エスケープ文字をデコードすると 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 >>381
詳細に解説いただきありがとうございます!
>\M-c のところが、e3 なのか 5c 5d 2d 63 なのかでわかるでしょう。
od -xのやり方が分からなかったのでログをテキストで保存して
バイナリエディタで確認したところ5c 4d 2d 63でした。
これは表示する側の問題ということですよね?
あの後、XCodeでNSLogでデバッグログを出力する簡単なプログラムを書いて確認したところ
XCode上のデバッグコンソールには日本語が文字化けしないで出力されますが
Xcode -> Window -> Devicesに表示されている実機のログでは日本語が文字化けしたので
表示側の問題なのかなと思います。
日本語が表示できないのは不便なので解決できるとうれしいですが
こういう場合、難しいのでしょうか。 >>382
面倒だから試してないけど
NSstr使うとかAnsiStringに一旦格納して出力するとか しまった。前後逆でした。e3 のままなら無変換。
で、ちょっと古いけどXcode6.3.2+ios8.3では日本語表示できてます。 >>383
ご回答ありがとうございます!
NSstrを使ってlog.dで出力しようとするとコンパイラに怒られてしまいましたorz
AnsiStringを試したところ出力文字は変化しましたが文字化けは改善されませんでした。
>>384
ご回答ありがとうございます!
なるほど。
現在の環境がXCode8.3 + iOS8.3なので少し古いXCodeを使って試してみようと思います。 iOSってTBannerAdを使ってAdmob表示できないんですか?
docWiki見たらiOSはiAdを使う前提の説明しかなくて・・・ Delphi10.2ってxcode9.0に対応してる? すみません。どうしたりいいのか分からずに書き込みさせてください。 お伺いします。
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表示に表示させるにはどうしたらよいでしょうか?
最近いろいろやっているのですが、今ひとつ解決できないため、
教えていただけないでしょうか? >>392
TDirectory.GetFilesとExtractFilePath すみません。エロい方教えてください。
s := 'ABC'#13#10;
という文字列を、SJISの16進文字列に変換して、
'4142430D0A'
にしたいのですが、やり方がわかりません。
どう書けばよいのでしょうか? 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; >>396
Delphi6でできました。ありがとう。
これ、XE5でも動くのかな? >>397
自分で試すこともしないのか
試すことができないなら気にしなくてよくないか すみません。
気にしなきゃいけない状況です。
で、XE5は今環境がないのです。。。
(仕事場が2つあり、いまXE5がない方に常駐しているので) firemonkeyって一度置いたコンポーネントって削除できないの? .┌┐
/ /
./ / i
| ( ゜Д゜)
|(ノi |)
| i i
\_ヽ_,ゝ
U" U imagelistを使うと削除できないみたいです。
選択範囲には継承されたコンポーネント ImageList1 が含まれているため削除できません。.
これって返品で金返してくれないかな >>406
うちではそんな現象出ないけどバージョンは? >>406
お前それTFrameの中にあるやつを継承先から削除しようとしてんじゃねーの 皆さ、レスありがとうございます。
バージョンは10.2です。
試した感じではボタンだけの貼り付け、削除はできる。
ImageListはListに画像を追加すると削除できなくなります。
その状態になるとボタンの削除もできなくなります。
ImageListの画像リストを削除してもダメです。
Delphiはそんなに触ってないので設定は初期値のままです。 何か最近ヘルプ表示したままdelphi終了しようとすると
ヘルプの終了処理に手間取ってdelphiがなかなか終了しない
心当たりはFCUへのアップデートとMS VisualStudioの再インストールだが... ググったけどdelphiの正規表現しか出てこないです。
サイトとか教えてください。 >>414
System.RegularExpressions 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には何もかえってこないのです。 キーが違うようです。
AppKey='\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras'; >>418
その通りでした。
Reg.OpenKey で戻りを気にしていなかったので、悩み続けてしまいました。
ありがとうございます。感謝です。 Calender、Japaneseもわかってない人は論外 昔あったdelphiのフリーコンポーネントを集めたサイトって無くなっちゃた? 古くからのDelphiコンポーネントが全て置いてある
アーカイブ的なサイトってないんだろうか ふと思ったけどTImageListじゃなく
TSoundListコンポーネントってない?
用途はありそうだが
てかTImageListってどういう仕組みで
画像を保持してるんだろう Tetheringコンポーネントを使ってアプリ間データ共有を試してるんだけど
コンポーネントをフォームに置くだけでusesに追加される
IPPeerClient/Serverファイルがないって怒られるんだけど
Starterだと実はTetheringコンポーネントは使えない? >>426
テザリングの項目がStarterは空欄になってるから多分使えない >>427
そうだよね
だったらTetheringコンポーネントなんか
選択できなくすればいいのに
ただSystem.Tether.*.dcuはすべて揃ってるぽいんだよな 質問させてください。
仮想通貨取引所で資産状況を見るプログラムを書こうとしているんですがうまくいきません。
エラーメッセージが、Signature mismatchとでます。
var
s,nonce,key,secret:string;
PostURL : String;
PostStream : TStringList;
ResStream : TStringStream;
begin
PostURL := '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#では以下のように書くらしいのですが、ご教示願えないでしょうか。
https://kokenji.net/zaif-api/ >>429
せめtw署名生成ルーチンくらい書こうぜブラザー
たぶんHmacSHA256やとは思うが >>430
ありがとうございます。
SHA256でメッセージ暗号化するってことでしょうか?
それとも別の通信するのに必要な処理でしょうか? 仮想通貨って電気代が安い国の人がが圧倒的に有利だよね >>431
URLから察するにZaifやと思うが、公式のAPIリファレンスまず読もうや
リファレンスで書いてる事がわからないなら都度質問したらええ
今の状況を人は丸投げと言う >>432
自分で太陽光とか風とか地熱とか利用して発電できるならそいつが一番有利 Delphi 10.2 Tokyo で、
@クラス定義部分で Ctrl+Shift+C を押してメソッド実装部を自動生成すること
Aメソッド呼び出し部分でCtrl+クリック で定義部にジャンプすること
ができないのですが、できるようにする方法はありますか? >>436
ふむ。結局中国が一人勝ちして終わりやな。 >>437
うちはできるからおま環
ショートカットの設定とか見直したらええんちゃう >>439
俺環とわかり、ありがたし。
サンキュ! そうです。
Starterです。
無料のやつです。 Starterは支援機能削られてる
コード補完、ライブコードテンプレート、リファクタリング、コマンドラインツール、コード整形、クラスエクスプローラ、ユニットテスト、翻訳ツールなどの支援機能
コード補完はつけて欲しかったね そうなんですか・・・
コード補完がないのはキツいなぁ。 Starterまじでコード補完ないんだww
ひでぇww fmxで実行時に複数のpanelを動的に作成し
その背景を別の色にしたいんだけど
設計時にpanelのカスタムスタイルを変更するのは簡単だけど
実行時に変更する方法が分からない
検索すると質問は結構あるけど
答えは古いバージョン対応みたいで
うまく機能しない
誰かヒントをお願いします どうしても分からないため、教えてください。
アプリとしては、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 := ''; 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; >>443
Starterにはコード整形というのはないのですか、一生懸命探してしまった(笑)
CodeFormatterありがたい! ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 10.2.3出たな
でー、インストール時にもインストール後の「プラットフォームの管理」にもAndroidとかiOSのが出ないんだけどどうなってるんや?(Pro Ed. D6に入れて使ってるIndy10 https対応してたのね。
dllをexeと一緒に置いておくだけ、あちこちで書かれてるIOHandlerを差換えって
必要ないのね。 すみません教えてください。
長いこと格闘していたのですが、どうしても攻略できません。
ソフトとしてはwavファイルをD&Dでフォームに落とすと、このフォルダー内のファイルをTListBox内に列挙して
フォーム落としたファイルをMCIを使って再生させるというものです。
只、落としたファイルをファイルPATHで渡しても何も起こらず苦慮しております。
長いこと何やってたんだと叱責を受けるかもしれませんが、よろしくお願いいたします。
意味のとりにくい文章で申し訳ありません。
ttps://www.axfc.net/u/3901529?key=delphi >>459
ダウンロードはメンド
問題の部分だけでも書いて >>459
ダウンロード全然始まんないぞ
てかアップローダ選ぼうぜ ちょっと長いのですが…
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; 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; // フォルダーパス\なし 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; 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;
上記のチルダの部分あたりだと思うのですが…
どうしてもわかりません。 >>465
自分もよく知らんので間違ってたらごめん
>mciSendString(PChar('open"' + FileName1 + '"type MEPGVideo' + 'alias MusicFile'), nil, 0, 0);
'open"' じゃなくて 'open "' ではないだろうか
コマンドの後に空白スペースが無いって事ね
typeやaliasの前にもスペース無いけど >>465
これってかなり前にも指摘したような気がするが...
まずはTEditをForm上に置いて実行時に
TEdit.TextにPChar(...)の...部分をそのまま代入してみな
それで問題なかったらMCIに送って >>466-467
レスどうもです。
>>465
以前FileListBoxで作ったときのものをそのままD&D時のパスを含むファイル名を渡しています。
>>467
TEditに代入しても動きません。途方に暮れています。
何年か選択したListBox ItemからMCIに渡す方法を探してますが、どうしてもわからないままでいます。
上に上げたロダはリロードするとファイルが落ちてくるようです。
お忙しいとこrとすみませんがよろしくお願いいたします。 aliasの前に半角スペースがない
これじゃあMpegVideoAliasとか意味不明なtypeになる上にaliasが認識されないからMusicFileというaliasが未定義のまま渡される >>467さんが指摘してるのはTEditに入れて表示された文字列が正しいコマンドかどうかチェックしろって事であって、代入したら動くんじゃないって言ってるわけじゃない >>462-465
こんなやっつけ仕事みたいなコードだと、何やってもダメだと思う >>469
>>467さんの指摘を受けLabelに命令を代入しましたが、確かにおかしい命令を吐き出していました。
open ""type MEPGVideo alias MusicFile
こんな表示をしています。
>>471
FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。
私個人の予想では、ListBoxからうまくファイルのPATHを含むファイル名がうまく取得できていないためではないかと考えているのですが… 何が正しいのか正しくないのか、正しくないのは変数の中身なのかコードなのか渡し方かなのか、それとも別になにかなのかを探したら解決できる
正しいと思い込む前に確認する癖をつけましょう >>473
>FileName1自体はあっちこっちで参照するので、Private 宣言部で定義させています。
あちこちで参照するってことは
procedure TForm1.FilesDropped(var Msg1: TWMDropFiles); で使われている FileName1:と
procedure TForm1.PlayBtnClick(Sender: TObject); で使われている FileName1: は同一のものということにしたいんだろ?
それぞれのプロシージャでFileName1: string;って宣言してたら「あちこちで参照する」ことは出来ないぞ
>Private 宣言部で定義させています。
とりあえずそれはそのまま、TForm1.FilesDropped()とTForm1.PlayBtnClick()の中で宣言しているFileName1: string;を消す >>473
やっとソース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なんてのは関数内の一時的な変数として宣言しがちだと思うので >>472
やっつけ仕事に見えますか…
これでも知恵絞って作ったものですので…。
いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、
メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。
アドバイスいただいた皆様ありがとうございました。
MCI諦めてSndPlaySound()を使うことで一応当初の目的は達成されました。
FileName1を掃除してSndPlaySoundのファイル名はFileName1を直接渡しました。
SndSoundPlayer()はmp3とかだめそうな気もするので、
MCIを直打ちしなければならないかもしれません。 メディアプレーヤーコンポ使えばmp3ほかいろいろ再生できますぜ >>477
>いろいろのサイトで見つけたD&Dの使い方とかボリューム変更など90%位は流用しているため、
>メソッドを記述している人がバラバラなので書き方に違和感を抱くこともあると思います。
わからないなら参照して勉強するのもいいけど「流用」するだけじゃ何年経っても自分の物にはならないよ
ちゃんと使い方を理解して自分のコードに治さないと
そうすれば変数かぶったりするのも避けられる
あと変数は少々長くなってもあとで自分が見てわかるもっと意味のある名前にした方が読みやすくなるよ >>477
触発されて自分も作ってみた...ただFireMonkey版だけど
基本的な部分はMacOSでも動くと思う
https://1drv.ms/u/s!ALhSqBFVHu2ZzRg
前からTDropTargetを使ってみたかっただけなんだけど 野球選手やサッカー選手に向いてるやつと向いてないやつがいるように
プログラマーにも向いてるやつと向いてないやつがいる >>480
シンプルで必要十分な情報がまとまっていました。
このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、
細かい文法事項などはどこで習得されたのでしょうか?
>>481
ずっとコンパイラーを使っていたのではなく、新しい攻略できたかもと散発的にいじってました。
本当に作りたいアプリがあるので、ご迷惑とは思っていますが、未だに食いついています。
リモコンで制御したいのと、巻き戻しがサポートされていれば、多分ここまでしつこくはなかったかもしれません。 >>484
>このスレにいる皆様は、今回のMCI問題を含むVCLの操作ではなく、
>細かい文法事項などはどこで習得されたのでしょうか?
勘とノリと勢いとGoogle先生 >>484
巻き戻しってもしかして逆再生?
そりゃハードルが高すぎないか リモコンって以前はMediaCenterが対応してたね
Delphiで今やるんだったら
TTethering使ってスマホから操作かな @pikさんて何者なの?
本当にすごい人なの?実力あるの?
なんか言ってることが胡散臭いんだけど すいません。教えてください
この前の続きです。
D&D(例えば9.wav)をしてListBoxにフォルダのファイル一覧が抽出・表示されますが、
D&Dしたときに9.wavをハイライトさせるにはどうしたらいいでしょうか?
ハイライトをさせないとMCIエラーが出てしまいます。
ファイルですが、
https://mega.nz/fm/KbRmkKiL
よろしくお願いいたします。 現状でやりたいことは、送るで起動して音声ファイル(以下.wav)を再生させることです。
1.とりあえずアプリを起動させる
2..wavをD&Dでフォームに落とす
3.すかさずListBoxにカレントフォルダのファイルを列挙させる
4.D&Dで落とした.wavにハイライトさせる
5.自動的に.wavの再生開始
現在4でつまずいています。
.wavを送っても起動するだけで、ListBoxに反映されません。
ここがくクリアできれば拡張子連動も可能だと思いますが・ >>491-492
ログインしなくちゃいけないみたいなので落としてないけど
「ハイライトさせる」ってファイルを選択状態にするってことね?
(プログラムする人間として質問するなら入門書なりを一冊通読してもう少し的確な言葉を憶えましょう)
ListBox.Selected[Index]:=True;(選択状態)
「9.wav」が例えば3番目ならIndexに「2」を入れます(ゼロスタートなので)
一番目のファイルなら「0」です
とりあえず試しておこうとDelphi5でやると範囲外エラーでますね
ListBox1.Selected[1]:=True;
これだけで
Delphi2009だと問題ないのに?(**)? ListBox1.ItemIndex := ListBox1.Items.IndexOf('9.wav'); なるほどなー
ListBoxとかもうずいぶん使ってなかったから忘れてたわー >>493
ハイライトではなく選択した(された)アイテムと表現すべきでした。
無事選択状態にすることができました。
別の問題で送るとD&Dが併用できない問題に苦慮しています。
(送るだとListBoxに反映されますがD&Dだと反映されない。)
おそらく列挙の問題だと思いますが、今困っています。
以前作ったソースがすべてHDDのクラッシュで消えてしまったため
どうしたらいいのかもわかっていません。
自分自身で調査をしますが、よいアドバイスいただければ幸いです。
不評でしたが、ロダを
ttps://www.axfc.net/u/3905770?key=delphi
皆さんはDelphiの知識はどうやって得られましたか?
コンパイラを使ったのが数年ぶりだとか、いいわけにはならないのですが
やりたいことができずに悶々としています。
例えば、プログラミングバイブルを読破するとスキルが得られたりするものなのでしょうか?
こちらもアドバイススをいただけますと幸いです。 >>496
もう仕様書作って金出してコード納品してもらった方が速い アドバイスも何も....
D&Dで取得したファイル名を
そのメソッド内でのみ有効なローカル変数に代入して終わりなの?
変数のスコープを理解してないのかな
てか、いろんなサンプルを参照して利用してるが
意味も分からずやってるでしょ
他人のコードを利用するなら
まずそのコードを理解しようと努めないと
永久に進歩はないね >>496
>(送るだとListBoxに反映されますがD&Dだと反映されない。)
D&Dを受け取る WMDropFiles 内にListBoxに反映させるコードが無いんだから反映されるわけが無い 動くまでいじくり倒すしかない。なんで動かなかったのかわかるまで調べる ListBoxへの反映の仕方が分かったので対処ができました。
ですが、曲名を集中管理している変数にLtstBoxのアイテムを代入しようとする
StringtoTstringに互換性がありませんと表示され、他の曲への反映ができません。
聞くところによれば、ポインタの知識とオブジェクトへの深い理解が必要だと聞きました。
コメントをいただければと思いいます。
https://www.axfc.net/u/3908351?key=delphi
本当にポインターの知識が必要ならアプリを作るのには時期尚早なのかもしれません。
よろしくお願いいたします。 こんな文字列処理メインのコードにポインタの出番はないでしょう
ListBoxの選択項目を取り出すのは、あなたが>>464に書いている通り
問題はListBoxに追加した項目が保持してる内容
ファイル名? パス付き?
あと老爺心で言うんだけど、メインの部分がまったく機能してないのに
サブの部分を追加してるのはどうかと
全体の見通しが悪くなるだけだよ
ドラッグ&ドロップと音量関係のルーチンのない状態で
ListBoxの内容を完璧に再生できるように
新規プロジェクトから始めたほうがいいよ TString型からString型へのキャストはどうしたら良いのでしょうか?
ずっとここで詰まっています。
コンパイラにはString型とTString型には互換性がないと怒られ
Listbox.item.text
みたいな感じにするとString型へ文字列が渡せません。
色々ネットで調べてみましたが、何か今ひとつ分からないままでいます。 本当か?本当にTStringとStringの違いがわかったのか? 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
401Z3 >>505
何年間も同じとこクルクル回って進歩してないな >>507
本当は分かっていません。
ただ、もう少し試行錯誤が必要だと判断しました。
TstringからStringに渡すのはそんなに難しいとは思えないのですが……。
>>509
コンパイラをいじっている時間があまりなくて
今回も数年ぶりに(昔このスレで正月に作ったメディアプレイヤー)触ってますので
進歩してなくて、さっぱり分からないことが相変わらず多いです。 >>510
値、配列、値のリストという概念があるとして stringはどれで Tstringはどれにあたるか分かる? "Tstring"という言葉が気持ち悪いので、そろそろ訂正してくだいませんか? >>510
あのな、良いこと教えてやる
一番薄い「言語ガイド」というマニュアルがあるからそれ読め
最初の1ページ目から最後のページまで全部読め
判らなくても良い、難しくても良い、とにかく1冊全部読め
読み終えた次の日から、きっと新しい世界が見えるはず
読まなきゃお前さん、一生そのままだぞ TStrings String型 TStringList AnsiString UTF8String・・・等々 いっぱいあるね >>510
名前が似ていても型が違うなら別物として考える
別物でも異なる型への変換方法が明示的に設定されていれば容易に渡すことが出来る
TStrings と String は別物
じゃあTStrings から String に明示的な変換方法が設定されているのか?を調べれば解決する
ヘルプを起動しTStringsと入力しろ
そして戻り値がStringになっているメソッドを探せ
どうでもいいことなんだが名前欄に自分のレス番号を入れるのは現在進行している質問の最初のレス番号を入れるべきだと思うんだ
今回のケースなら447ではなく505だな
そうすることで主題となる質問を見ることが出来て、また辿ることが出来る 普通に教えてやりゃいいじゃんか
sがついてるからstringが複数扱えるクラスなんだろ?
男のくせにチマチマ、ネチネチ、そりゃお前らは一生結婚できねぇわw はいはい
まあ聞きまくるやつにも問題はありそうだが、
狭い世界のちんこい知識でどんだけ上から目線なんだろね あー
そんなことを書くぐらいなら510に教えてあげればいいんじゃないの?
しょせん目くそ鼻くそなのに、ずいぶんと上から目線だねw >>513
昔言語ガイド印刷してたのを忘れていました。
今読むと昔は分からなかったことが分かるようになってきました。
プロジェクトを作る前に最後まで読んでみます。
>>516
そう複数なんですよね!だからListBoxでindexで数字でターゲットを選べると言うことに気がつきました。
読みにくい文で済みません。
>>515
TStringで検索かけたところ膨大な数のメソッドが出てきて
悩んでいます。
まずは大事なことがたくさん書いてある言語ガイドをよく読んでから理解してから
再チャレンジします。
レスしてくれた皆様ありがとうございました。 >522
TStrings ですね。
複数のStringを束ねられるのでindexの数字で必要なオブジェクト(!?)を選択できるのですね。
今はプロジェクトを中断して言語ガイドを熟読しています。
今までで分からなかったことがしっかり書いてあるので
安易に入門書を読む前にこっちを読むべきでした。 初心者にはDelphi6あたりのHelpがいいんだけどな
最近のHelpは不親切で、基本がわかっていない初心者には使いづらいだろうなと思う 頑張れ‼??誰でも最初はなんも知らんからね
ちゃんと覚えていろんなもん作れるようになってね >>524
Delphi6買っとけば良かったなと思っていたら、初心者の入門書に収録されていました。
早速インストールしてみます。
ですが、皆様はシステムライブラリのヘルプを見て手続きや関数などを覚えたのでしょうか?
>>526
職業はコンピューター関係でなく、時間が空かないとコンパイラを使うのも
厳しいために今回は5年ぶりくらいにコンパイラーいじっていますので
最初になってしまいます。
普通こんだけ叩かれたらプログラミングを諦めてしまうと思いますが、
双六ゲームがどうしても作りたいのでかじりついて離れずにいます。 >>527
叩かれるのはどれだけ親切丁寧に説明しても同じ場所を延々ぐるぐる回り続けてるからだよ >>527
>Delphi6買っとけば良かったなと思っていたら、初心者の入門書に収録されていました。
本の名前教えて。
俺もDelphiのHELP欲しい。 >>510、>>527
MCIさんでしょ?
オーディオプレーヤは諦めて双六ゲームにしたの? >>530
下のURLの「Borland Delphi 6 ドキュメントアップデート #1」って
ダウンロードしたら使えるんじゃ?
もっとも .hlp はWindows10とかだと、そのままじゃ読めないと思けど
http://support.embarcadero.com/jp/article/35932 このアップデートファイルは、Delphi 6 のライセンスユーザー向けに提供されるものです。
このファイルの使用に関しては、製品に同梱されたソフトウェアご使用条件に準じます。 >>533
アップデートファイルを単独で使用するなってこと?
そもそもdelphi 6 personalってフリーなんだから
その程度はいいんじゃない? Unicode 正式対応したのは
どのバージョンから? >>531
MCIいじってますよ。
ただ今は、TStringsと戦ってます。
>>528
そうですね。
理解が追いついていかない。ふがいないなぁ。 >>538
string型のutf8化は2009から。
ucs2程度やwidestringであれば、少なくともdelphi7でも使えてる。 結局
>今回は5年ぶりくらいにコンパイラーいじっていますので
5年ぶりとかやる気ないだけだから教えるだけ無駄。 てか5年ぶりじゃないだろ
去年の夏も散々質問してたし
その1、2年前も来てたし
思うに、やるときは集中的にやって初心者脱出しないと
永遠に初心者のままだろ 直そう直そうと思っている毎日使っている自作ソフト、最後にビルドしてからまもなく10年になるわぁ Delphiに直結する話題じゃないけど
ちょっとお知恵を貸してください
公開してるDelphiで作ったツールがあるんですが
ツール内にサポート用の掲示板みたいなのを実装したい
方法としてどんなのが考えられる?
やっぱ最低でもcgi使えるサーバとか必要? >>548
1.適当に掲示板スクリプトを設置してTWebBrowserで表示
2.BaaS使ってRESTでやり取り
3.SQLにFireDACで直接接続
4.WindowsVPS(Linuxに吐けるならLinuxでも可)でDataSnap
好きなのをどうぞ >>548
まあ書き込みを送信する場所と書き込まれたものをダウンロードできる場所は必要だろう
サーバ借りなくても個人が固定IP契約しているならそのIP宛にすることも出来るし
固定じゃなくてもダイナミックDNS使えるルータとか使っているならそれを利用するのも手
適当なレンタルサーバでも月2000円も掛からないからそういうの使うのがベストだけど
というかしたらばあたりにスレ立ててそこを表示するようにするのはどう?
5chと違ってAPIいらんし レスが遅くなりました
やっぱそんな感じですよね
配布サイトはcgi使えないのでレンタルサーバか自宅サーバですよね
したらばはスクレイピングが可能だったらいいかも
あとは、データは配布サイトに置いて投稿はメール経由かな よく考えたら、したらばはスクレイピング不要で
旧2ちゃんと同じでdatファイルを直接ダウンロードできるんでしたよね
したらばにしようと思います
p2pは理想だけど、開発側も利用者側も障害が大きすぎるような delphi10.2を使っています。
ActiveXのコンポーネントを追加するのにdclusr.dpkをあらかじめインストールしようとしても
dclusr.dpkが正しくないとかのエラーが出てしまいます。
dclusr.dpkって他のPCに入っている同バージョンのものをコピーしてもいいものでしょうか? 全然的外れとは思うけど
delphiを管理者権限で起動してる? 確認してみます。
コピーしようとしたpcはすんなり出来たので管理者とか気にしてませんでした。
ありがとうございます。 めっちゃ便利になった
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 Indyのヘルプについて教えてください
delphi 10.2.3を使っていて、IndyのIdCookieを使うのにヘルプを見たんですが
どうも自動補完される項目とヘルプの内容が一致していないみたいです
事実、古いネット上のサンプルでもpropertyなどが認識できないと
エラーが出るんですが、ヘルプにはちゃんと記載されています
もしかして、ヘルプの内容がかなり古い? >>560
ありがとう
早速ダウンロードしてみます Delphi 10.2.3に付属しているIndyのヘルプのバージョン 10.1.5
>>560に書いてあるところにあるやつは 10.5.8.3だね
10.1.5のヘルプは、実際にバンドルされているIndyとではいろいろと
違っている部分があるんで使えないんだよね
エンバカはよくこんな状態で製品として出してるもんだと思う
まぁIndyの公式Webページにあるヘルプが更新されずに放置状態なせいでもあるんだろうけど OutputDebugString(v: TValue);
みたいなのを作りたいんですが
vが配列だろうがレコードだろうがクラスだろうが文字列化するサンプルコードがあったら教えてください case VarType(バリアント型) of
varNull: 〜;
varSmallint,varInteger,varshortint,varByte,
varword,varlongword,varint64,varqword: 〜;
varSingle,varDouble,vardecimal: 〜;
varBoolean: 〜;
varArray: 〜
else 〜
end;
みたいなのはどうか fmxのlistviewで遊んでんだけど
各Itemの高さがvariableだと
ScrollToが正しく機能しないな
てか希望する行にプログラムでジャンプできない
これって... 昨日からずっと悩んでたんだけど原因が分かった
Itemを追加した直後にScrollToを実行していたのがマズかった
というのも個々のItemの高さの計算をUpdateObjects
イベントで行っているので、いったんシステムに制御を戻して
すべてのItemの高さを計算させた後でないと
ScrollToを正確にできないじゃないかと 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 `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /  ̄ 炎猿でwindows以外のOSアプリ開発している人にお聞きしたいのですが、スマフォとかがアップデートされた場合動かなくなるとか、デバッグ出来なくなるとか不都合はないですか? まぁそんな致命的そうな問題あるなら既に話題になってるだろう。それぐらいの信仰心ないならエンバカ製品使わない方がいい。 AppleはMetal必須化するけどちゃんとコンパイラ出してくれるのかな OpenGLから、Vulkanに移り行きそうな流れだし、Androidもサポートしてるから、安泰とは言えないかも・・・。 以前作ってたメディアプレイヤーですが、あるていどは出来上がったのでご評価いただければと思います。
https://www.axfc.net/u/3921358?key=delphi
今のところ.wav限定です。
既知の不具合
notfyを自前で無理矢理作っていて機能していない
トラックバーで自由にスライダーが動かせない(経過時間の方)
よろしくお願いいたします。 以前作ってたメディアプレイヤーですが、あるていどは出来上がったのでご評価いただければと思います。
https://www.axfc.net/u/3921358?key=delphi
今のところ.wav限定です。
既知の不具合
notfyを自前で無理矢理作っていて機能していない
トラックバーで自由にスライダーが動かせない(経過時間の方)
よろしくお願いいたします。 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で作られているそうです。
誰か型が分れば他の有志が開発しやすい用に晒してくださるとありがたいです。 Introducing Delphi and C++Builder Community Edition
https://community.embarcadero.com/blogs/entry/introducing-delphi-cplusplusbuilder-community-edition
Community EditionをDLしようとレジストの際に電話番号ではじかれます
なにか方法があるのでしょうか? >>584
ログインしてからダウンロードすると良いかもしれない firemonkeyでWindowsとAndroidアプリを作るとき
SpeedButton用の画像のサイズって
どのくらいにすればいいの?
StyleLookupにないんでGoogleのフリーアイコンを
使おうと思ってるんだが 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 もダメっぽい。
暑くてなーんも進まない DLL調べるならデバッガで追いかければいいんじゃない? OllyDbgとかで 質問です。
他言語の計算式が解らず置き換える場合のデルファイ式はどういう構成になるのでしょうか?
えぬじーだらけで書き込めないのでソース含んだテキストのアプロダアドレスは以下に書いています。
https://agree.5ch.net/test/read.cgi/mango/1532726276/389
ひっかかりだらけで掲示板が使いにくくなってますね。
マンゴー板絞り込みスレを経由すれば書けるということだね 今見てみたけど4バイトの浮動小数点数と各バイトの相互変換だよな
共用体使えば式は不要だと思う
可変長レコード(だっけ?)で検索 Delphiで書けないんだったら、日本語で何がしたいのか書けよ。
Perl語なんて俺は知らんから。
f: single;
f := StrToInt( '$'+ '4D' );
で, fに77が入る。
int -> sigle は暗黙の型変換でいけるが逆は要関数呼び出し(キャスト禁止)。 >592-583
ややこしくてすみません。
https://agree.5ch.net/test/read.cgi/mango/1532726276/496
↑元ソースあどれすも記載しました。
>>592 ありがとうございます。夜にでも調べてみます。 >>592
どうやら>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 でした。
>>593
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; >595
パールスレでの名前欄 「427です」 がそのまま入ってしまいました。
>>590 です Delphiの逆コンパイラでおすすめって何になるの? 超初心者スレだから許して のしつもんです。
Win10の開発は初めてです。
昔で言う .ini なんかはどこに置くのが基本ですか?
レジストリ使わない場合・・。
publicには Appdata とかないみたいだし。
Pathの 記述とか??
今でも TIniFile とか使いますか? >>598
%appdata%にアプリケーションのフォルダ作って保存 回答有り難うございます。
とっても参考になりました。
ユーザー別なら %appdata%\appname\
ユーザー共通なら %ProgramData%\appname\
って感じで 良いみたいですね。 確かプラットフォームごとのパスを取得する関数が用意されてたような >>603
PCが壊れたとき等、環境移行はローテクの方が・・ レジストリなんか使わない。
XMLなんか使わない。
やっぱりINIがいい。 「プロジェクトから削除」で削除したunit2,unit3って結局生きてる?
unit1で参照してるからコンパイルしたらエラーが出ると思ったら何も出なかった。
プロジェクトの削除ってどう言うこと? そもそも
システムと連携でもしない限り
レジストリ使う必要が無いと思うんだが
自動的に何も考えずにレジストリ使ってるのが多いと思う >>606
プロジェクトツリーから削除されるだけで参照は自分で削除しないといけないよ (アン)インストーラが付属しないツールで
設定をレジトリとかexeフォルダ以外のフォルダに保存したりとか
何考えてるのか分からないのもあるからな >>598 >>601
Win8.1以降でiniファイルは取り扱いが難儀になったので
TIniFileでも拡張子を別のものにすると素直に使える。
例えば .env とか
.ini でトラブルになる挙動としては
管理者権限でプログラムを動かすとiniは書き出せるけどD&Dできなかったり
ユーザー権限で動かすとiniが書き込み変更できなくてエラーになったりする。 インストールフォルダ自体がドキュメントフォルダ強制とかもあるな >>611
virtualstoreに入ってしまったものを
間違って元のディレクトリ名で見に行くと
「書き込み変更できなくてエラーになったり」
するね >>613 >>598
こんな感じでやってます。
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; スレッドオブジェクトで外部機器と通信するコンポーネント(自分で取り込んだactivexです)を使いたいのですが、
フォームがないのでcreateの引数って何にしたら良いでしょうか?
サブのフォームをvisible:= falseにして、そこに配置した方が良いでしょうか? 引数はnilでok
必要ならparentを指定する 十数年ぶりにコード書いてます。
Delphi7 のソースを XE3 で書き直そうとしてますが ???です。
XE3は 買ったきり手つかずだったものを初めて使ってます。
ShortDateFormat、LongDateFormat、ShortDayNames が未定義の識別子エラーとなります。
uses には SysUtils が有ります。
どんな原因が有り得ますでしょうか?
挫けそうですw 単純な変数から変更されているので、
FormatSettings.ShortDateFormat
のようにしてみてくだされ。 速攻でスゲー! 解決しました!
HELP の ”親” ってのを 見なきゃイケなかったのね
有り難うございます。
それにしてもHELP が いちいちHTMLソースが表示されて
”制限されたコンテンツの表示” ってクリックしなきゃなのは しんどい・・・ 618です。
マルチスレッドで自分で取り込んだActiveXコントロールを使えるようにはなったのですが
不定期にEAccess Violationが出るので調べたら、このコントロールはSTA モデルとなっていました。
自分にはActiveXの知識があまりなくマルチスレッドで使用するにはCOM 関数のCoMarshalInterThreadInterfaceInStream,
CoGetInterfaceAndReleaseStream を使うのかな?ということまではわかりました。
ただ、参考にしたサイトには「インタフェースポインタを他のアパートメントに渡す場合,インタフェースポインタをマーシャリング
する必要があります。」と書いてありましたが理解できていません。
多分、各スレッドでCreateするのではなく1つのコントロールを各スレッドで使い回すのかなと思っています。
Delphiではどうするのか、とっかかりだけでも教えてください。
よろしくお願いします。 そのまんまでしょうに。アパートメントをまたぐ場合はマーシャリングしなきゃいけない。
http://eternalwindows.jp/com/apartment/apartment02.html
で、CoMarshalInterThreadInterfaceInStreamでIStreamのバイトストリームに変換する。
で、そのストリームをアパートメントの異なる別スレッドに渡してそこでバイトストリームから元のオブジェクトに戻す。
コントロールのスレッドモデルより、各スレッドをどう初期化しかかがまず重要。
Comを使うときは各スレッドでCoInitialize(Ex)を呼ばなきゃいけんが、それでスレッドのアパートメントを指定する。
https://docs.microsoft.com/en-us/windows/desktop/com/processes--threads--and-apartments
読めば書いてある >>597
未だに見つけられていない
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コードを直接見てもワケワカメ FireMonkeyのStringGridでマウスカーソル直下のセルの特定の仕方を教えてください。
マウスの座標は取得できています。
よろしくお願いします。 ありがとうございました。
一応は取得できるのですが、セル内のマウスカーソルの場所によって、セルが特定できたり
できなかったりという感じです。
また、列の位置は左端なら本来は0だと思うのですが1が返ってきます。
行は先頭行が16と返ってきます。
MousePos := Screen.MousePos;
StringGrid1.CellByPoint(MousePos.X,dMousePos.Y,ColNo,RowNo);
上記のようなプログラムですが、マウスの位置の取得方法が間違っているのでしょうか? >>630
>MousePos := Screen.MousePos;
この段階でマウス座標はスクリーン座標(スクリーンの左上を起点とする座標)なので
クライアント座標(この場合、StringGrid1の左上を起点とする座標に変換しないとダメだよ
VCLならStringGridにScreenToClientというメソッドがあるんだけど
FireMonkeyのことはよく知らんけど似たような(もしくは同名の)メソッドがあるんじゃないかな てかコントロール上のマウス位置から何なしようってときに
スクリーン座標が出てくる訳が分からない 皆さん、ありがとうございます。
まだ、解決できていないのですがまずはお礼まで。
ローカル座標はScreenToClientと同じ名前のものがあったので使ってみたのですが
うまくいきませんでした。
VCLの方だときちんとカーソル下のセルを正確に取得できるのに。
FireMonkey難しい。 こんなんじゃだめなの?
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;
カーソル下のセルを正確に取得できてるよ >>636
ありがとうございます。
やりたいことができました。
>>631
ヒントもらっていたのに申し訳ありません。
あくまでもコントロール上の座標を取らないといけないということですね。
ScreenToClientはアプリのウィンド上の座標と言うことで良いでしょうか? なんで未だにデルファイなんかやっとるんやおまいら? いろいろな言語使えるけどDelphiがベストだと思うから 今頃デルファイの10.2.3をインストールしようと思うんですが、サイトに書いてあるように一旦10.2をアンインストールしないとまずいですか?
一旦アンインストールした場合サードパーティーのコンポーネントはやはり再インストールしないとダメですか?
10.2.3をインストールしたら復活するとかは無いですかね? >>644
別のプログラムとしてインストールされるからTokyo用のコンポーネントは再インストール必須
別に10.2を残してても共存はできる BerlinとTokyoは共存できるけどToky同士は共存できなかったはず
10.2から10.2.3は設定データなどを残してアンインストール、インストールで普通に移行できたよ
CDイメージからのインストールの場合だけどね
Webインストールの場合はそれができないんだったっけ サードパーティのコントロールが消えるのが嫌でアンインストールせずやってしまった。orz ツールパレットにはコンポーネントのアイコンがきちんと表示されているんだけど、フォームに配置するとアイコンが見えない位小さくなってしまうんだけどなんで? >>650
老眼かい?
他人にはあんたの見て思ってる物が大きいか小さいかなんてエスパーでもないから分らない。
画面キャプチャーでもして画像貼れ フォームにアイコンだけ表示されるやつは
OnCreateで手動で追加する形でずっとやってるから
どうでもいいは マルチデバイスのソフトを初めて作ろうと思っています。
コントロールの配置に関して質問なのですが、とりあえずPC用かスマフォ用を作ってその後、
各デバイス用に配置しなおして再コンパイルする手順でいいでしょうか? 何かウェルカムページを開きたびに
セキュリティ警告が出るんだが >>664
SSL証明書が期限切れたから更新あうるまで待ってってMCさんが >>665
なるほど
今日はvclとfmxアプリ間のメッセージングのテストやってて
切り替えるたんびにダイアログが何度も出てイヤんなる ブラウザのタイトルを取得したいんですけど、
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 解決しました。
VLCじゃやないやつで作ろうとしてたみたいです! FMXでLabelのバックカラーの変更って出来ない?
今はPanelの色を変えて、その上に貼り付けてるんだけど。 >>669
labelのスタイルに背景ってないからムリじゃないかな
あとpanelよりtlayoutの上にtrectangleのせて
さらにlabelはったほうが柔軟性が高い >>670
TRectangle、オブジェクトエクスプローラからなら子に色んな物入れられるよ
(要するにTRectangleがTLayoutのように使える) >>669
XE5までの知識しかないが、
TStyleBook割り当てて、そっちで対応するんじゃなかったかな? >>671
ホントだ
TPopupなんかもHelpじゃ実行時にParentを操作して
コントロールを乗っけるって書いてあって
使い勝手が悪いと感じてたんだけど
同じ方法で設計時にコントロールを配置できたりするんだよな 皆さん、ありがとうございました。
Rectangleって楽ですね。
もう一つ教えて下さい。
panddingとかmarginsを設定して0に元に戻すと隣のコントロールと隙間が空いたままになるのは自分だけ? 訂正です。
panddingとかmarginsを設定して実行。
その後、全部0に戻して実行しても隙間が空いたままです。 >>675
fmxのmarginはちょっとバグってる気がする
その例と同じかどうか分からないけど
複数のspeedbuttonをalignをleftにして並べて
ボタンのmarginを一度設定すると
marginを解除しても
ボタンの左半分くらいがマウスに反応しなくなる
いろいろやってると何かのきっかけで正常になったりする 上にスタイルの話があるけど
スタイルで背景色を変えたら
Windows10以外では適用されてなかった
コンパイルのしかたかなぁ
最近公開したソフトで
ユーザに指摘されて初めて気づいたよ 結局プログラムで指定すれば配置されるので我慢します fmxでのフォームの最小化と復帰だけど
コードだけでで問題なく動作する?
WindowState := TWindowState.wsMinimize;
WindowState := TWindowState.wsNormal;
でできるはずなんだけどね
何かうまく機能したりしなかったり 本棚からDelphi7体験版が出てきたのでインストールしようとしたら、
ライセンス取得のところでエラーが出て使用することができません。
今更ながら、使うことは不可能なのでしょうか?
DelphiXEで非Unicodeのソースが作れればそれでも構わないのですが。 すみません非Unicodeと限定されている意味がわからないので現行のものではダメなのかも知れませんね >>683
良くサイトを見たら、体験版の承認キーの発行は終了しているみたいです。
せっかく教えていただいたのにすみません。 FMXをタッチパネルついてるWindows10で動作させるとTListViewとかが勝手にタッチパネル用のスタイルになるのどうにかならんかなぁ
Scrollbarが表示されない上にタッチパネル操作になるから操作が統一できない・・・
デバイス自体を無効にしたらタッチパネルじゃないスタイルで動作するけどなんだかなー ListBoxの項目にFocusを付与したいのですが、3,4日うまくいかず困っています。
クリック以外の方法でListBoxにFocusを付与する方法というのはありますか? ListBox1.ItemIndex:=3;
ListBox1.SetFocus;
ってこと?
なんか以前にもこんな質問あったような気がするが >>687
どうもです。
ただ、マウスクリックするとFocusが出ますが、ListBoxの他の所をクリックすると消えちゃうんですよね…。 >>688
そりゃそうだ
他のフォーカスを持つ所をクリックすればフォーカス移る
何がしたいのかわからない
「ウィンドウ ハンドルを持つコンポーネント」の意味を理解してますか?
例えばここ http://delfusa.main.jp/delfusafloor/archive/VA009712_take/delphi/kabeapp.htm
ListBox以外にフォーカス動かしたくないんなら
他の全てをフォーカスを持たないSpeedButtonとかメニューやツールバーとかにするしかない
或いは他を Enabled:=Falseにするとか こんな物を作っていました。
ttp://www1.axfc.net/u/3946835.zip?key=123456
既知の不具合
下手にいじると簡単にバックグラウンドプロセスに行ってしまう。
Focusについてですが、このアプリはFocusが残る物をベースに作りました。
新しく作り直した物がListboxをクリックすると一瞬だけFocusが表示されるのですが
すぐ消えてしまうと言うよく分からない現象が起きていました。
よろしかったらご評価いただければ幸いです。
もう我流は辞めてTurboDelphi〜を参考書に勉強したいと思います。 大事なことを忘れていました。
このアプリはエクスプローラ上で.wavファイルを選択し「送る」もしくはアイコンでD&Dすると再生を始めます。
またアプリを起動して、エクスプローラからフォームに直接D&Dすると曲を演奏します。
よろしくお願いいたします。 そうですよ。まだやってました。石の上にも3年と言う言葉もありますし
おかげさまで、プログラミング技法の第一巻の半分くらいまでは理解できるようになりました。
今度はちゃんと基礎からやり直したいと思います。
あげたファイルはアルファー版ほどの出来ですが、今の知識で作った物です。
ご興味がありましたら、ご評価をよろしくお願いいたします。 >>685
確かにスクロールバーが通常は非表示だけど
そんなに違いがあったっけ?
自分としてはマウスホイールでスクロールしてるときも
スクロールバーが非表示なのがあれだけど >>694
マウスでドラッグしたらスクロールできたり(タッチパネル式だからマウスでスクロールバー操作するのとは逆の動きする)、スクロールバーが表示されてるときにクリックしても反応なかったり
OS側で常にスクロールバー表示しても非表示とか
レガシーな入力デバイスが主なプラットホームでは切り替えられるようにしといて欲しい・・・ >>695
てかいま自分が作ってるfmxアプリをwindowsタブレットで動かしてみると
listviewとかのタッチでのスクロールには少し違和感があるね
android上とは明らかに違う操作感だ >>690
ごめん俺687と689を書いた者だけど自分の勉強以外で人のソース読むほど時間はないんだ
と書きながらも流し読みだけでもしようかと開いてみたら
「404 Not Foundファイルが見つかりません」
>新しく作り直した
と書かれているがそれは今までのソースのつぎはぎコピペではなく自分で理解しながら書き起こしたものですか?
それならば不具合が出たとしても何をググって調べればいいかわかると思います
プログラミング技法って昔持ってた記憶があるけど一度通読したあと埃かぶってたまま引っ越しの時に捨てたくらいいまいちな本だった記憶
自分はやっぱり最初は「はじめてのDelphi」が一番わかりやすかったし
「Delphiオブジェクト指向プログラミング」でVCL読むようになって
「インサイドDelphi」とか「シェルプログラミング入門」が楽しく読めるようになった
そうです私もおじさんです >>690
何をしたいのか分からないよ?
focusって言葉がそもそも違うんじゃない?
もし何らかの理由で本当にlistboxにfocusを与えたまま
維持したいんだけど、できないんだったら
他のコントロールがfocusを奪ってるんでしょ
それを調べたらいいんじゃない? >>697
自分なんか「おじさん」じゃなくて
60過ぎのジイサンだよ
と言ってもdelphi歴は短いけどね
今はfmxにハマってる ListBoxってフォーカスの有無で外観が変わったっけ?
フォーカスがなくなって困ることってある? ご評価していただいた皆様ありがとうございます。
このソフトを作るときは、巻き戻し・プログレスバー移動自由自在・リモコン対応
を目標に作り始めましたが、どれ一つも実現できませんでした。
MCIを使っての巻き戻しは、テープ系なら可能みたいですがMpegではデバイスが対応していないので無理。プログレスバーでの移動はどんなに大変なのかは、DelphiでDVDプレイヤーを作った方のサイトがあるのでそちらを参照してください。
大本のVolume制御以外は自分で実装しましたが、新しく別プロジェクトを作って試作してめどが立ってから導入しましたが、何故か思ったように動かず。
前半はMCIに翻弄され後半はインターフェースに苦しみ、メディアプレイヤーはもう少し修行を重ねてから、作りたいと思います。
愚痴めいた内容ですみません。
色々アドバイスをしてくれた皆様、特に質問を投げかけたときに、コマンドを一言つぶやいていただいた方、自分で使い方を調べることで理解が進みました。
スレ汚し失礼しました。 教えてくれた皆さんありがとう
つかれた
mp3再生君にはかないませんでした。
こんな感じで そうでした。
Object Pascal言語ガイドを少し腰を据えて読んで理解したいと思います。 前も言ったような気がするけど
fmxのコントロールのカスタムスタイルって
Windowsだと10でしか有効にならなくない?
設定した背景色とか8.1や7じゃ消えてるし >>707
Windowsのバージョンで別々に設定できる反面、Windows10専用で設定されてるのに気付かないと別の環境では変な表示になっちゃうよね MCI君をいじると擁護する単発が現れるのももう恒例行事になってきた。 >>708
そうなんだ
確かに「ターゲットプラットフォームの
バージョンごとにネイティブ」って書いてあるね
Windows 10 Desktop用に作ってあったとして
新たに8用と7用も作ってやらないとならないのか
こりゃちょっと大変な作業だ >>712
デフォルトスタイルに設定するか、スタイルを保存して各プラットホームにマージしたらそんなに手間でもないよ >>713
ありがとう
マージできるんだ
何もわからないで始めたのがマズかった DelphiXEを使ってます。
エクスプローラからプロジェクトファイルをダブルクリックしてDelphiが起動するのですが、
さらにもう一つ同じ操作で起動すると、先に起動したIDEのプロジェクトグループに追加され
てしまいます。2つ目のプロジェクトを別のIDE画面で起動したいのですが、そのような設定
があるのでしょうか? >>715
スタートメニューから起動してプロジェクトロードするしかない
レジストリをいじれば出来るかもしれないけど Rioの各デスクトップレイアウトを変更した後
それを保存する項目がメニューから消えたみたいですが? >>718
つ ttps://qiita.com/ht_deko/items/573f7c11c15c46f895c6
のQ.7かな? >>719
ありがとうございました
できました
このボタンが関係するのかなとも思いましたが
Hintも非表示でスルーしてました エンタープライズコネクターのインストール方法教えて下さい。
ダウンロードしてsetup.exeを実行してパスを通すの? ちょっと教えてください
fmxのカスタムスタイル変更でコントロールの背景を変更するとき
Windows 10 Desktopstyle.pngとかWindows 7style.pngとか利用しますが
これってどこにあるの?
この画像を修正したいいんですがドライブの中を検索しても見つかりません Delphi10.3 Community Edition 入れてみた
オブジェクトインスペクタのイベントTabが開かないんだけど
俺だけ?
Delphi10.23 Community Editionでは問題なく選択できる 'イベント'の文字の所をクリックすると いけた
TABの色と右側空白の色が同じだったので、空白をクリックしていただけだったw クリックしてイベントTabを開けない方が難しいと思うw 10.3でPostMessageを使ったメソッド、イベントハンドラ呼び出しの
標準のラッパーみたいのありますか
Call(Button1Click, [Sender]);
的な使い方ができるもの AndroidアプリのためにFMX.MEMOを使って
簡単なテキストエディタを作ろうと思ったが
いざAndroid上で動かすと、漢字入力の際
変換中の文字列の色が変化せずに困っている
普通は入力中の文字、文節の区切り、カーソル位置で
色が変わったり下線が表示されるが、周りの文字と同じままで
どこが入力中で、どこが文節の区切りなのか分からない
何か設定が足りないんだろうか?
(IMEはGoogle日本語入力です) 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 系でのミリ秒含めでもなさそうでちょっとお手あげです。 64bitの符号付きかね?
符号無しでも試してみれば? 整数型は、符号付き・符号無しのどちらか?
リトルエンディアン・ビッグエンディアンのどちらか?
そのサイトのソースコードを見ると、
unsigned long low, high;
unsigned は、符号無し
val[0〜3]がlow、[4〜7]がhigh、
0123_4567 が、low_high だから、ミドル(PDP)エンディアンか?
1234_ABCD を、ABCD_1234 にしているのか?
Wikipedia の「エンディアン」を参照して! D7から10.3comに変更してAndroidアプリでも作ろうかと気軽にチャレンジしたら
すげー苦労してる・・・
プロパティ名が微妙に違うしStringGridとかListviewみたいになってるし
ダイアログとかも面倒くせー すまんエン馬鹿スレと間違えた メッセージが分かりづれーよJane 詳細書き直し
古い規格データの機器からのバイナリデータ。
目的:古いデータを今の形式にする為。
日時部分を 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ではない。 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; パソコンで続きを書こうとしたらホスト規制の文字が出る
>736 考えてみます 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 のどうたらこーたら英文一杯 >>738
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の分解能とも一致している。 >>738
データ点数1529は、
1529 = 54 * 28 + 1
なので、28Hzのクロックシグナルでログを取っているものと予想される >>738
日時の表現が.NET frameworkのDateTime互換と仮定すると、
>>739 では上位1bitを捨てたけど、実際には2bit捨てるのが正しい。
この2bitが何物かといえば、
時刻の種類を示すbit flagで、指定なし(0), utc(1), local(2)
例示された値の上位2bitは0b10(=2)なので、ローカルタイムだったのだろうと推測される。 >>739-741
ありがとうございます。
まとめるとこのような感じで上手くいくようです。 .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 日のローカルタイム経過日 .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
一致しました。 関数化したものを分けて書こうとすると
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進数数値に変換 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. 補足
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判別となってしまう。 DocWikiの内容をzipファイルか何かで一括ダウンロードする方法あったら教えてください 古いD6をまだ使っているが、エディタは VScode にDelphi extension入れて
使っている
デバッグはD6のIDEでやるしかないけど、両方立ち上げておけば
まあ使えますね 俺もD6で、秀丸でコーディングしていたが、VSodeに切り替えてみようかな。
VSCodeは他の言語で使ってるので。 VScodeの注意点: 別PCのファイルを開くと、変更が反映されない事象あり
自動保存されるけど、書きなおしたやつをまた開くと直っているように見えるのに、
実際は直ってないとか。 意味不明 >>751 あっちとこっちで同時にファイル開いてたせいみたい 別に今必要な事じゃないんだけど
エクスプローラーのファイル名で並べたら
ファイル1
ファイル2
・・
ファイル10
って並ぶでしょ。 これどんなロジックなんだろ
スマートな方法が思いつかないし興味ある 自分は自作ソフトで似たようなことやってるけど
1文字単位での比較で数値同士の比較の場合に、その先の数値じゃなくなる前まで読んで整数にして比較ってしてる
小数点以下は1文字単位での比較として扱うので整数にしない
ただ 第11話 最終話 のような場合のロジックが面倒 VisualStudioでDelphi使えないかなぁ Delphi Community EditionとC++Builder Community Editionは同時にインストールできないんだな。 >>753
例えばこういうのは?
ファイル名文字列をバイト単位で数値化して加算
f0 = 0x65 + 0x30 = 101 + 48 = 149
f1 = 150
f2 = 151
f01 = 0x65 + 0x30 + 0x31 = 198
数値化した値で降順ソート
つまり
格納されてるファイル名を文字ではなく文字コードの数値合計でソート 補足
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]);
適当処理 >>757
それだと
abcd5.txt
bbcd1.txt
というファイルがあった場合に
bbcd1.txt
abcd5.txt
という並び順になっちゃうんじゃね?
あくまで"文字列"+"数値" というファイル名に対して"文字列"で比較し、"文字列"が同一なら"数値"で比較する必要があると思うが
>>754の場合、数字が文字列の一部だった場合に正しくソートされないって問題があるけど
そういう場合のファイル名はあまり意味がないから気にしないようにしている
それと先頭が数字の場合は文字列の一部として扱ってる 自分の場合、壱弐参なんてのも数値として扱うようにしている(したい)からAPIだと望んだ結果を得られない
「数値もしくは数値に変換可能なもの」同士の比較の場合だけ整数として比較してる begin
var
i: Integer;
i := 0;
end;
コードフォーマッタ使うとこうなってしまうのだけどvarのあとで改行しない設定ってどこ? ttps://qiita.com/ht_deko/items/41e95154e8da2f901698
コメ欄w 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.
たしかに恥ずかしい ちょっと教えてほしいんですが、社内イントラネット環境で50台くらいのクライアントPCと
1台のサーバーで双方向に情報をやり取りするVCLフォームアプリを作りたいですが
Delphiだと何使って構築するのが良いのでしょうか?
上からの命令でDelphi使うことなって調べてみたんですが、検索するとDataSnapとか
RESTとかのキーワードが出てきますが自分の経験がDelphi7でストップしていて
現状についていけてません。よろしくおねがいします。 >>767
情報のやり取りだけでは何とも言えんなー
それだけの要件だとIndyかWinsocksで通信したらええんちゃうってなる ふつーにIISで鯖立てて、httpでやりあえばよくね? CのDLLは普通にDelphiでも使える。
つまりcurlとかも普通に選択肢になると思う。 なんでDelphiが指定されたんだろう?
今まで使ってた訳じゃないのに ネィティブ系だと実質C++かDelphiかの選択肢しかなくね? >>767
Firebird + Apache + SOAP >>753
[Delphi]Windows XPの規則(自然順ソート・natural sort・natural ordering)ででファイル名をソートする
https://www.gesource.jp/weblog/?p=5947 >>774
DBはPostgreSQLかMariaDB 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のファイル名を渡せないのもの当然なのですが、
なにかプログラム側でできる回避策はないでしょうか? >>778
使用しているdelphiのバージョンを書いてください。
delphi2009前か後かで回答が変わるかもしれないからです。
UnrarChechArchive関数の仕様に基づいて型キャストしてやれば良さそうな気がします。
例えばnull終端wide stringという仕様なら、渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。 >>779
レスありがとうございます
使用してるDelphiは2010です
>UnrarChechArchive関数の仕様
szFileNameはLPCSTRなので32bit系のDLLではnull終端のAnsiChar配列(のポインタ)になってると思います
>渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。
var
Path : string;
UnrarCheckArchive(PAnsiChar(PWideChar(Path)), 0);
この型キャストでは残念ながら上手く行かないようです LongFileNameをShortFileNameに変換すると
幸せになれる >>781
ナイスアドバイスです
GetShortPathNameで上手く行きました
おかげさまで幸せになれました
ありがとうございました TDateTime datetime = VarToDateTime("令和元年5月10日9時10分15秒");
今はエラーが出るんだがそのうち対応されるのか? FormatDateTime('ge', Now);
レジストリに令和を加えてから上記を実行すると令1 って出るね いずれWindowsアップデートで対応するらしい
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" vsIconかつAutoArrangeのListViewで、両端のアイテムを選択した状態で左右キーを押すと、
エクスプローラーなら上下の列に移動しますが、DelphiのTListViewだと無反応です
これをエクスプローラーに準拠の動作をさせるにはどうすればよいのでしょうか? 自己レスです
通常方向キーなどはVCL側で処理されてOnKeyPress、OnKeyDownなどではトラップできないので、Windowsメッセージを直接トラップすることでエクスプローラー準拠にできました
procedure WMKEYDOWN( var Msg : TWMKEYDOWN ); message CM_CHILDKEY;
procedure TForm1.WMKEYDOWN(var Msg: TWMKEYDOWN);
begin
case Msg.CharCode of
VK_LEFT :
左端か判別して左端なら上の列の右端に移動してResult := 0;
VK_RIGHT :
右端か判別して右端なら下の列の左端に移動してResult := 0;
end;
inherited;
end; 開発環境だと問題ないのですが
実行したいPCだと
「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」と警告が出ます。
いくつかのDLLを使ってます。
どこから調べれば良いか???です。
開発環境は XE3 です。
何かヒントでもありませんか? 有り難うございます
警告メッセージは最初にググったのですが ピンとくる書込は見つけられませんでした
VBAは使ってないし・・
開発環境 Win7 x64 、実行環境 Win10 x64 です。
当初はそんな警告出てなかったのですが デバッグしてるうちに出るようになりました
困った・・・ とりあえず、「動いている状態」ってのに戻してみたらどうかね?
それが再現できるなら話は簡単になる コメント感謝します
DLL参照の プロパティ値代入を1行追加してから症状が出るようになった気がするのですが(自信なし)
それをコメントアウトしても症状が消えません
開発環境では出ないので厄介です
Delphiが タイプライブラリを自動で追加したり とか しないですよね? そうじゃなくて、前の状態のファイルとかシステム一式をバックアップから取り出せないの?
自動でバックアップしながらじゃないとソフト開発は効率わるいよ。 お付き合いホントに有り難うございます
開発環境と 実行環境が 1時間の移動距離にあるので
今現在出来てるテストが上記の書込でした
開発ファイル群は毎日のバックアップがあります
先ず、手元に現象を再現できる環境を構築しようと思ってます。
1度ビルドすると ソースの変更点をコメントアウトしても 元に戻らない
「何か」が有る可能性はあるのでしょうかね? どうせADOとかOLE DBとかそっちの問題だろ? >>795
四の五の言ってないでデータベースドライバ入れろ コメント有り難うございます
データベースドライバは入っています
入れ直すということでしょうか?
先の警告メッセージが出たあとOKを押すと 一見正常に動作しているように見えます。
そもそも警告が出始める前は 一通り正常に動作していました。
原因がわかりません。
旧ソースをビルドし直してテストしてみます。 データベースドライバが32bitか64bitなのかが開発環境と実行環境で違ってたら
そんなようなエラーが出たような気がするが >>799
コメント心から感謝します
警告メッセージをググると そんなことも書いてありました
只 当初は問題なく動作していたので 途中でドライバーが変わるようなことも考えにくいですよね
Delphiで書いた実行ファイル以外は一切環境を変えていませんので 謎です 32bit用ドライバ → system32 に入れる
64bit用ドライバ → wow64 に入れる
こういう勘違いをしてるアホは時々見かける アプリのバージョンを表示するコードが上手く行かないんで悩んだがどうやらデバッグ版とリリース版でバージョン情報が共有されない仕様になったんだな
デバッグ版、リリース版でそれぞれバージョン情報をオプション設定しなきゃならないんで面倒くさいわー
デフォの文字コードも英語版になってるしなんかいろいろ使いにくい>10.3 >>800
開発環境から実行した時に、モジュールのロードで始まる dll や bpl のロード情報を
コピペしてゆっくり眺めてみる begin
TStringList.Create.Add('メモリリークした');
end;
このメモリリークの型、内容、ソースコードの場所を検出してくれるツールで
フリーかつDelphi10.3で使えるものって何があるますか? >>805
これじゃあかんの?
EurekaLogでDelphiアプリケーションのメモリリークを検出する – 山本隆の開発日誌
https://www.gesource.jp/weblog/?p=4834 ところでandroidのメモリリークって
どうやって検出するの?
少なくとも標準のを書いておいても
今まで報告されたことないんだが > フリーかつDelphi10.3で使えるもの
バージョンアップについていけなくて大半の外部ツールやVCLは死亡中
有料ですら10.3に対応してないものが多い Delphiって有志による外部ツールやVCLで成り立っている文化なのに
メーカーはなんでそのことを理解してないんだろうなあ バージョン表記自体もわかりにくいんだよな・・・
8からいきなり2005になったと思ったらDelphi 2010を最後にDelphi XEシリーズになってそのままいくのかと思ったらXE8でうちどめして今度はDelphi 10に
10から11〜とメジャーバージョン上がっていくかと思ったらマイナーバージョンがメジャーアップデート相当でなんか末尾に都市名つけはじめたし
Delphi 10 Seattle
Delphi 10.1 Berlin
Delphi 10.2 Tokyo
Delphi 10.3 Rio >>811
エンバカデロが過去の歴史知らないから仕方ない RazorでVB.NET切られるかも知れないのね
まだDelphiの方がクロスプラットフォームで残るかも知れないね 質問、D6です
Clipboard関数
ANIS 半角アスキーテキスト(1行128バイト以下)をClipboard.AsTextで送らせます。
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/faq/00058.htm
を参照しました。
uses節に 「Clipbrd」を追加
Clipboard.AsText := 'String変数';
これだと1秒ごとに送っているとすぐハングアップするので
AsTextより先にクリアさせるようにしてみました
Clipboard.Clear;
〜処理〜
Clipboard.AsText := 'String変数';
が
カウントさせてみると16回目ぐらいでハングアップしているようです。
上記の次ぎに
FormCreate内でClipboard.Create;
FormDestroy内最後にClipboard.Free;
を追加すると
79回目ぐらいで行ってハングアップします。
なにかスムーズにさせるコツみたいなのありますか? >>817
ハングアップ、って具体的にどうなってるの?
何かの勘違いじゃないの?
あとClipboard.CreateとClipboard.Freeは要らないと思う; >>817
ハングアップに対する回答ではないけど……
同じなのに入れ替える必要ないと思うので
if Clipboard.AsText <> 'String変数' then
入れた方がいいのでは? Lazarusで書き直してみるとかね。
D6ってユニコードAPIとかに対応してないと思うのでそれ関係じゃね? Excelが起動してるとクリップボードの扱いでトラブった覚えあるけど
そういう用途じゃないよね >79回目ぐらいで行ってハングアップします。
ハングアップが具体的にどういう状況かわからんので考えるだけ無駄だと思う てかソース見ると単純にapi呼び出してるだけだから
それってDelphiの問題なのか?
テストプログラムを他のPCで実行してチェックしてみるとかした? Delphi6とDelphi7のclipbrd.pas比べてみたらFClipboardとかFClipboardWindowの解放処理が追加されてるな。ひどすw 各位レスありがとうございました
>>819 ソレ入れてみます。
ソースも晒そうかとしてましたが
どこでハングアップしてるのかダミー表示させてたどり着き
結局、
クリップボードの処理いれたら顕在化したという
別の部分がエンバグしていたオチでした orz
何かクリップボード使う作法でもあるのか?と思っていたのでQしたわけです。
AsTextより先にClipboard.Clear;
FormCreate内でClipboard.Create;
FormDestroy内最後にClipboard.Free;
結果これは不要でした。
以下↓レスを書きこむ直前に↑脱したので遅くなりました
>818さん
(SSDで入れ替えXPの開発環境デスクトップと実行パソコン XPノート&XPモバイルとは別です)
ハングアップの具体的
・作ってる物(送り側 高bps GPSデータ1秒更新)Clipboard.AsText := 'String変数'; のアプリが>817 の挙動で反応しなくなり操作を受け付けなくなる。
・受け手ソフト(昔のナビ地図ソフト、デフォCOM In 4800bps / オプ Clipboard を)は反映も止るが動作は続けている。
・作ってる物(実行ファイル)を終了させるには[タスクマネージャ]から[アプリケーション]でなく[プロセス]から該当イメージ名を選んで[プロセスの終了]を行わないと終わらなくなる。 読み手に情報が伝わらない書き方だなあ
2、3年後に自分で読んでみるといいよ
まあ関心ないからどうでもいいけど >>827
他の環境(エディタ)だとちゃんと表示されるのに、って画像も提示してくれないと
そのフォントがそういうものなんだろ、としか思わない TrueTypeじゃないフォント使ってるのか?としか思わんな あるプロジェクトをまるごと新しいフォルダにコピーし
元のプロジェクトを温存したまま
新しいプロジェクトとして始めたいんですけど
IDEの機能として可能でしたっけ? あるプロジェクトをまるごと新しいフォルダにコピーし
元のプロジェクトを温存したまま
新しいプロジェクトとして始めてみろ そうすると、新しいフォルダのソースをいじっているつもりが、元のソースを変更してしまう。
*.dskファイルは消すこと。 丸っとコピーでプロジェクト系のファイルは修正すればいいよ 「プロジェクトのコピーを作成する」という機能が
発売20年以上経っても実装されてないとは信じられん >>839
Visual Studio にそういう機能ありますか? いや、要るだろ普通に 別バージョンとか作りたいときに
*.dsk消せば済むことだけど標準機能であればそれに越したことはない
VSは使ったことないから知らん てか初心者がプロジェクトの別名保存を誤解して
大変なことになりそう
自分もそうだったけどね >>830
D6 D7 だけど、(絶対パスがなければ)できる。
普段はプロジェクトとソースを保存するときの「名前を付けて保存」で
デフォルトのセーブ先から別のドライブのフォルダに指定してる。
そうするとプロジェクト毎のソースがフォルダ別に整理できる。
同じ系統のプログラム作成はベース部分まで作っておいて保存、
新規フォルダにコピーでクローンしてスタート。
現プロジェクト中に「名前を付けて保存」で対象移動先にセーブしてみたらどうですか?
この際の注意点として、
プロジェクトの保存だけでは足りない、ソースなどの保存の2回保存作業が必要。
始動は移動先のプロジェクトを指定する。
その後は全保存の1回で使えてる。
試す前にコピーで戻せるようにはしておくことです。 >>845
そんな手間かけるならエクスプローラでコピーすればいいだろ 各ファイルの役割をきちんと覚えること。
それができなくてプログラマーとか笑うしかない。
変な自動機能があるとその基本を忘れがちになる。 デスクトップ保存なんてしないからdskなんてできたことないわ
便利なのかあれ 今時使用言語は数個、開発環境も数種類さらにクラウドやら覚えることもりだくさん。
delphiしか触ってないなら、delphiの各ファイルの役割ぐらい覚えられるだろうが 皆、自称初心者のプロが作ったスパゲッティウンコに悩まされてきたからな >>851
だからさ、覚えるとかそういうことじゃない。
各ファイルの役割をきちんと知らないと
プログラマー生命そのものがあやうくなるんだって。
話題の dsk ファイルのはまったく要らない子だってことを知るのもそのひとつ。
例えばオープンソースに dsk ファイル含めて公開しちゃうと
パス名から身バレしちゃったりするリスクもあるわけよ。
言語によらず、プログラマ名乗るならそういうのに敏感になれということ。 MySQLやSQLiteをやろうとして挫折した人間です。
BDEというか、ParadoxのかわりにClientDatasetを使おうと思うんだけど、
設計時にDBコンポで表示できて便利だし、使ってる人いませんか?
.xmlファイルに書き出せるフィールドタイプに制限があるけど、それ以外は
TTableと同じように使える感じ >>857
CDSやFDMemTableは普通に使われてるかと? え?
delphiの各ファイルの役割をきちんと知らないと、プログラマー生命そのものが
危うくなっちゃうんですか???
そ、それはヤバイなぁ!
(か・・・片腹痛てぇ・・・中学生?) >>857
ふつうにカジュアルに使てるで
CDSは、ランタイムであるmidas.dllを同梱するか、MidasLibをどこかのソースファイルでusesに加えてあげる必要ありなので、TfdMemTableの方が楽なイメージ。
(古いシステムのお守りでCDS使うことの方が多いけど) >>857
インメモリDBとして使用してるから、xmlの書き出しについてはよくわかりません。 >>856
趣味でマターリやってる日曜プログラマに
そこまでの責務を負わされたら趣味じゃなくなってしまうんですが >>860
確かmidas.dllは静的リンクできるはず midas.dllは無料版では同梱不可?
といっても買ったD6でやるので、だいじょうぶだけど。
静的リンクって、exe一体化もできるということ? >>864
そそ、uses MIDASLIB; でEXEの中に入る D6でも出来ました
ちなみに .xml に保存だと、他で流用するのが楽かもしれないなあと xmlで保存するとcdsの3倍に膨れるので、普段は.cdsでやるようですね。 >>862
中学生か?とか、日曜プログラマなんで、とかで
現実逃避してんじゃないよまったく。
だから何をやってもだめなんだよおまえは。
少しはラグビー選手を見習えよ。 ラグビーとか何の興味も無いわw
どっかで何か大会でもやってんの? >>868
いや日曜プログラマとか趣味の世界だから
現実逃避してもいいんだよ
趣味ってそういうもんでしょ 趣味ならどんなやり方でも何でもやればいい
仕事の規約みたいなの押し付けてくるの嫌い
ビジネス系と分けた方が良いんじゃないかと時折思うけど
ビジネス板ってそういうじゃないんだよね? 超初心者用スレだった。
悪かった。今は反省している。 D6を使っている初心者なんですが、ローカルファイルで使うTClientDatasetでは
SQL文を使ってなにかすることってできないのでしょうか?
Filterプロパティとか、項目リンクでやる?
あと、トランザクションも無い? 以前Delohi7 は 使ってました
今回 Win10にして DelphiXE3の中古を買いました
いきなりつまずいて dclusr.dpk のインストールができません
C:\Program Files (x86) 以下への書き込み権限がないのが理由のようです
Win10へのXE3のセットアップで こつのようなものが有りましたら教えてください >>878
インストーラを「管理者として実行」すれば良いと思う ありがとうございます
正しいのかは解りませんが
bds.exe のプロパティを 「管理者権限で実行」 にしたら
とりあえず うまくいってます 管理者権限が必要なフォルダにちゃんとファイルが入ったかな?
できればアンインストールしてから再度管理者権限でインストールし直した方がいいと思うよ CE10.3+Update2のライセンスがあと21日で切れると言われたんだけど
一旦アンインストールして10.3.2入れ直せばいいの?
10.4リリース前にライセンス切れ起こされても困る 今Delphiを勉強しています。
使っている本は日経BPのカンタンDelphiプログラミングです
24ページの
SchFile := ChangeFileWxt(Application.Exename, '*.txt';
でどうしてもSchFileのところで赤波線が出てしまいます。
現在生きているDelphiでどう治せばいいのか調べていますが
これだけは出てきません。
ご存じの方教えていただけないでしょうか? >>888
ChangeFileWxtがTypo
ChangeFileExtが正解 >>888
ChangeFileWxtがTypo
ChangeFileExtが正解 Timeoutエラーで再投稿選んだら2重になった(´・ω・`) >>893
関係ないけどIOutilsとShapeにTPathの名前空間設定してるってほんと delphicbuilder10_3_3*_isoってどこにあるの? isoだとなんかメリットあるの?いつもexeのほうでインストールしてるけど… >>899
レジストリの仕様がWebとISOで(何故か)違うから一回インストールしたらずっとそっちを使わないと不具合出る エンバカのインストーラーって昔から何かに付け問題起こすよなあ community使ってんだけど
事前に10.3.2アンインストールしたほうがいい? CnPack-Options-Editor Enhancements-Othersにフリーカーソル無効化機能あんのか // 渡した引数をとにかくJsonObjectに変換する
class function TJsonUtil.ToJsonObject<T>(AValue: T): TJsonObject;
begin
// AValueをTValueに変換
var v := TValue.From<T>(AValue);
Result := TJsonObject.Create;
// todo: Resultにvをセットしたい
end;
ってどうやって実装すれば良いんでしょうか?
TConverter = class
FValue: TValue;
end;
を噛ませればObjectToJsonObjectできるんですができれば直接やりたいです
使用例
ToJsonObject(123) // int
ToJsonObject(RegexpResult) // record
ToJsonObject(Form1) // object Delphi 10.3.3 Community Edition インストールできたのですが
GetItから、Konopkaと Radiant Shapesを インストールしてみました。
この時のコンポーネントパレットの数は65です、
ここで、新規作成で Windows VCL アプリケーション作成すると
コンポーネントパレットの数は49に減少します。
減った分16にはRadiant ShapesやTeeChartLite等々が含まれます。
これは このバージョンには適合しないコンポーネント、ということなのでしょうか? 訂正
×ここで、新規作成で Windows VCL アプリケーション作成すると
〇ここで、新規作成で Windows VCL アプリケーションを立ち上げると 解決
消えたのは マルチデバイス アプリ用のコンポーネントでした。
でもRadiant Shapesのコンポーネントアイコンが全部同じなのを何とかしてほしい。 「ライセンス有効期限切れの事前通知」ダイアログが出たので
「新しいCommnunity Editionライセンスを要求」をクリックしたのですが
開いたページにそれらしい項目が見当たりません。
どうすればよいのでしょうか。 すいません、解決しました。
DL時にメールが来ていてそこにシリアルがついていましたので
「ライセンスの操作」→「登録」でこのシリアルを入力して解決しました。 TeeChart をいろいろ調べてるんですが、例えば .NET の Chart コントロールにある
ChartAreas コレクションみたいにグラフを増やすことはできない?
素直に複数の TeeChart を貼るしかないのかな。 >>920
まぁ日本じゃMVPがあのキモ男だからな 営業担当がどんどんやめてく...
ttps://twitter.com/IchihanaMiwa/status/1213026105281540096
https://twitter.com/5chan_nel (5ch newer account) IDE Fix Pack作ってた人、どうしちゃったのかなー IDE Fix Pack って、ほんとに効果ある? >IDE Fix Pack って、ほんとに効果ある?
たぶん無い。少なくとも俺の環境では効果がない。
けど悪くもならないのでまぁお守り扱いで使っている。 型推論のインライン変数書くと、ビルドは通るのにエディタではエラー表示になる。なんでや。 >>929
エディタのエラーインサイト(だったかな?)が対応していないから
エラーインサイトを切ればエラー表示はされなくなるけどいつ直るんだろうね? >>930
Castaliaいじれる技術者まだ残ってるのかが心配 >>930
マジか。そんな状態でリリースするとは、なかなかやりおる。
直るまでインライン変数とかはやめておこう。 >>932
10.3のときにインライン変数が実装されたのに、10.3Release1、Release2、Release3ときて
いっこうに直ってないからな。 10.4で直るかどうかも危ぶまれる CarsyBdeって使ってる人いる?めっちゃ怪しそうなんやが >CarsyBdeって使ってる人いる?めっちゃ怪しそうなんやが
インストーラーにマルウェアもどきが入っているので、ファイルを展開して自分でインストールするべき。
あと、日本語関係ドライバが入っていないから日本語ソートはできないよ そうなんだありがとう
地道にfiredacに置き換えますわ メモリリークを内蔵のFastMMでチェックしたらUnicodeStringやUnknownでリーク発生というよく分からない表示がされたので、
FastMM4のフルデバッグモードでチェックしたところこんなログが出ましたが、ソースのどこでリークしてるのかさっぱり不明で困ってます
どのpasファイルの何行目とか出ない場合のリークはどこを修正したらよいのでしょうか?
A memory block has been leaked. The size is: 36
This block was allocated by thread 0x51BC, and the stack trace (return addresses) at the time was:
4070F2
40C0EE
708321 [Unknown function at TMethodImplementationIntercept]
77276DF3 [Unknown function at GetThreadDesktop]
77276E44 [Unknown function at GetThreadDesktop]
77BFF8FA [ZwCallbackReturn]
77276E57 [Unknown function at GetThreadDesktop]
77BF011A [KiUserCallbackDispatcher]
77280E28 [ShowWindow]
62A6A9 [Unknown function at TMethodImplementationIntercept]
62A81C [Unknown function at TMethodImplementationIntercept]
The block is currently used for an object of class: Unknown サブスクリプションって更新してる?
社内用プログラムの修正でたまに使う程度なので
年10万はちょっとなぁ・・・ TMS のWeb Coreってのを最近見つけた。
Intrawebと同じくpascal→JavaScriptみたいなんだけどかなり完成度は高い
気軽にDelphi+PascalベースでWebアプリを創りたいときにはいいよ、コンポーネントも自作できるみたいだし
サブスクリプションは入ってませんよ
新規機能を必要としない、ちょっとした改修メインならあまり必要はないんじゃないかな?
法人ベースなら10万ははした金だけど、生きたお金とも言えないんで払わないようにしてる 大政翼賛イベント、終わり。
斜陽の会社と製品買うのはいいけど、買うだけで統合とかシナジーとかできないよなぁ。
元技術者たちが全員いなくなった sencha なんかどうするきだろう >>937
自分もちょっとメモリーリークで悩んでるんだけど
delphi versionとかvcl/fmx とか少し情報もらえる? >>941
Delphi10.3.3でVCLアプリです
手がかり求めて海外のフォーラム情報を調べたら.MAPまたは.TDSファイルを作成するとより詳しく調べられるらしいです というわけでプロジェクトのオプションのコンパイル→リンカでマップやTDSを有効にするとより詳しく調べられました D7で作ったプログラムをD10に移行中ですがDBGRIDのカラムタイトルの色が変更できません
プロパティで何を指定しても白のままです
どうしたらいいのでしょうか >>944
FixedColorの2つ上にDrawingStyleというのがある D6からアップデートしてないユーザーなんだけど、いろいろ古すぎて苦しい。
C#は多少いじれるようになった。
RDBはいじらない、ネットから情報を取ってきたり、お絵かきプログラム中心。
新しいプロジェクトを始めるのに C#と、Tokyo? Berlin?やりだすのとどっちが楽だろうか 全く新しくていいなら C# だな。
Delphi は時代に追従しきれていない感じ。がんばってはいるけど。
自分も遊びでは Delphi 使ってる。 FreePascalの次のリリースはジェネリクスがDelphi互換になってますますDelphiに近くなるよ
去年中にリリースと言われて現在もまだリリースされてないけど >>947
間違いなくC#
余裕があるならdelphiやりなされ 開発環境が数GBダウンロード必須って
ハナから無理 C#って見かけは小さいけど
環境は馬鹿みたいにデカすぎる >>953
プリインストール済みの.Net Frameworkとメモ帳で開発コストゼロや! Indy10のhttpsで使うdllが最新版に入れ替わっちゃうとおかしくなる不具合ではまり。
2018年ごろのやつに差換えたら動くようになった。
TLS1.2まではいけるからしばらくは持ちこたえられそう >>956
Delphiのバージョンがいくつか、何に使ってるかわからんけどもTNetHttp系に差し替えを検討したら? >>956
それって既知の問題としてどこかに書かれてる?
公開してるアプリでは問題は起こってないけど
何らかの条件があるんだろうか? Indy10ってまだ10.3に対応してなかったような
対応版でたの? Rioでdebug releaseのモード切り替えると固まるのは俺だけ? >>959
Indy10がRioに対応してるかってこと?
Rioに付属してるIndyは10.6だよ? >>961
そうだったのか
付属のはもっと古いバージョンかと思ってた どの「コミュニティ」に行っても、同じ人たちしかいないのって、よーするに人材枯渇かね? >>956
IOHandler.SSLOptions.Method := sslvSSLv23;
で、dllが持ってる強度の高い方から順に試すんじゃなかったっけ
関係なかったらゴメン quickreporteって昔みたく標準でついてないのね
皆さん印刷とかどうやってるの >>966
FastReportが今の標準添付の印刷コンポーネント https://www.hellowork.mhlw.go.jp/kensaku/GECA110010.do?screenId=GECA110010&action=dispDetailBtn&kJNo=1301023906401&kJKbn=1&jGSHNo=Yl0LGUJlwstE%2F%2BqkjXcR2Q%3D%3D&fullPart=1&iNFTeikyoRiyoDtiID=&kSNo=&newArrived=&tatZngy=1&shogaiKbn=0
職種
Delphiプログラマー(PG)
仕事内容
(業務内容)以下の開発を行います。
(例)
・業務パッケージ製品の開発
・業務システム開発
・C/S系システム開発
OS:windows
DB:oracle
※Delphiの知識 東京は人が多いだけで済みにくい
感染しやすい
土地高い
物価高い
タクシー止まらない >タクシー止まらない
雨の日とかは別だけどこれはないんじゃないか
むしろ地方のほうが流しとかないから駅前か呼び出しだろ 10.3.3のGetItでCodeSiteがインストールできない…
どうすりゃいいの?
https://i.imgur.com/T8TQIEN.jpg >>973
地方だと「タクシー通らない」だな
>>974
わろす FMXでDebugHookを使うと
「特定のプラットフォームに固有」と出るんだけど
特定のプラットフォームってWindows以外でどれ?
検索するとMacOSではダメだったって 質問です。Delphi 2007からアップデートしなくても、新しい技術を使っていなければ、
たいていWindows 10できちんと動きますよね?
(2009以降の文字列まわりが理解できていません)
Delphi 2007からアップデートする場合、Delphi 2009にしてから、新しいものにした方がいいんでしたっけ?
それとも直接10.3とかに読み込んでもいいんでしたっけ? Windows10なら全部同じと思うような馬鹿は死ねよ >>978
使う命令時代ですね
delphi5で作ったものも
普通にwindow10で動きますよ Delphi6はwin10にインストールすら拒否されたが みなさんありがとうございます。
私の範囲では使えそうなので安心しました。さすがDelphiですね。 さすがDelphiと言うより、さすがWindowsでは? 新しい技術つかってないから動かない場合もあるだろうけどねAPIとか
何もしなくても動くなんてHelloWorldのサンプルぐらいじゃないか app tetheringがまったく動かないんだが
付属やネット上のサンプルのどれもダメだった
firwall関係かねぇ
ただWidowsのクリップボードを監視して
macのクリップボードにコピーしたいだけなんだが >>984 昔からDelphiはWindowsであれば環境によらず動いてくれるという印象があったもので。。。
>>986 たしかに私はDelphi 2009以降の文字列の扱いを覚えようとしないバカかもしれません。
私だってこれからたくさんDelphi使うなら覚えますが、昔のプログラムのメンテしか使う予定がないですし2007までのライセンスしかないので。 10.3のCommunity Editionのライセンス条項を見たら、他の収入と合わせて$5000を超えてたら除外されるっていう理解で正しいですか?
さすがに他の収入と合わせて$5000を超えてなかったら食べていけません。
数年前のCommunity Editionのときはもっとゆるかった記憶があります。 Embarcaderoからメール来た
C++2017の電子本が無料らしい >>988
そうじゃない
Windows10と一括りにしてることを馬鹿だと指摘してる >>991
元の978呼んだが、そこに引っかかるとはww
しかも質問スレで質問しただけなのに何度も「死ね」はないだろ usesにDGCarad9ってのがあって
DirectX9使えるようにした個人の奴だけどサイトが無かった・・・
使用許諾にもメルアド登録済みになってるしパスワードわからんし
やっぱりいろいろめんどくさくて使えねー まぁ日本じゃMVPがあのレベルのソフトを公開して悦に入ってるだけだからな
まったく恥ずかしくないのかと思うよ・・・ >>989
英語のライセンス条項を見たが、その理解で正しいと思う。
前のCommunity EditionではWin32限定でそのときはもっとライセンス条項がゆるかったが、今は機能限定が少しだけになって、使える人の範囲が狭くなった。
学生や定年後の老人や専業主婦が対象といったところか。 まぁ、彼はちょっと違うの事実だな。最近ではクソアプリ?のadvent calenderで一番手ではりきって一人でニヤニヤしたんだろうな... なんで1000盗り合戦とか意味の無いことで盛り上がってたのかね 将来性はないかもしれないがwindows上でならまだまだ使える言語だね このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1244日 16時間 3分 4秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。