くだすれDelphi(超初心者用)その59【Embarcadero】

レス数が1000を超えています。これ以上書き込みはできません。
2021/09/24(金) 11:16:27.40ID:gP9hkwVT
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。

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

■ Delphi 11
http://www.embarcadero.com/jp/products/delphi

■ Delphi Community Edition (無料)
iOS、Android、Windows、macOS 向けアプリも開発可能。年間売上5000 US$以内の商用開発可。
https://www.embarcadero.com/jp/products/delphi/starter

<前スレ>
くだすれDelphi(超初心者用)その58【Embarcadero】
https://mevius.5ch.net/test/read.cgi/tech/1583919039/

■ 便所の落書きレベルの個人的な悪口やきつい言葉(氏ねとか)は禁止だからな。
■ Embarcaderoヲッチャ的な内容も歓迎だ。

■ 誰も立てないから立てた。さあ語れ。
2023/08/24(木) 02:00:05.63ID:QZunJC2f
Delphian Worldみたいな国内向けのVCL登録サイトもなくなっちゃったしなぁ
2023/08/24(木) 07:55:57.17ID:C5F1d6wx
>>905
原書の英語版なら無料で手に入れることが出来るけど翻訳版は高い本です。
だけど文法?仕様?を学習したいなら
「OBJECT PASCAL HANDBOOK」を勧めておく。
2023/08/24(木) 16:35:22.14ID:zFSRI8uB
過去のWebページもそれなりにあるけど、Googleが古いページを上位に持ってきたがらないからな
2023/08/24(木) 17:28:11.95ID:VQcmWNju
メーリングリストが廃止になってDiscordに変わった
あれで情報が分散されてさらに使いにくくなった
糞MVPのせいだ、れっきとした人災だと思う
2023/08/24(木) 20:03:25.34ID:wRHn0ELE
塚越さんの「Delphiオブジェクト指向プログラミング」も入門には最適で
Delphiの基本がよくわかる良書なんだが、もう20年以上前の本で
入手が難しいんだよな。中古本はプレミア価格になってるし
2023/08/24(木) 21:20:40.81ID:ZSGc6U7K
>>926
持ってる。内部構造にまで踏み込んだ良書だけど、流石に今は色々変わってるから通用するかなあ…?
928905
垢版 |
2023/08/26(土) 18:04:22.62ID:B3E95l/f
みなさんいろいろコメントありがとうございます。
まあ、触ってみて面白そうなので、しばらくDelphiやってみようと思います。
本はハンドブックも塚越本も注文してみた。
本は手元にないと落ち着かない人種なので。
2023/08/26(土) 18:49:53.04ID:a5ihaTyt
>>928
どんなツール作りたいん?具体的に?
930デフォルトの名無しさん
垢版 |
2023/08/26(土) 18:55:18.78ID:XSTxhtBk
馬鹿に限って間違えた考えに固執する法則
931デフォルトの名無しさん
垢版 |
2023/08/26(土) 20:02:50.53ID:+Rqs8BUh
助けて、教えて系で始まる書き込み
そしてこんなところで調べりゃわかることを聞く頭
そして今さらDelphiを学ぼうとする判断力の無さ
何もわからない状態なのに止めとけというアドバイスも無視する思い込み

こんな奴には無理だろ
2023/08/26(土) 20:04:52.29ID:nlJ6m77n
コピペするような奴のアドバイスを無視するのは良い判断だ
2023/08/27(日) 02:30:13.55ID:UZquPxz8
>>929
Pythonでいろいろデータ処理をしているのですが、
データの入力を他人にお願いすることになるので、
その入力補助ツールです。内輪でつかうものなので、
使えればよいと言う程度のものです。

C#もみてみます。
2023/08/27(日) 05:22:50.07ID:IyySIe4J
興味をもってもらえたなら嬉しい事
茨の道かもしれないが頑張って
2023/08/27(日) 07:48:59.07ID:XML1AckB
どんな入力か知らんけどEXCELでもいけそう
2023/08/27(日) 09:31:45.51ID:h6VZUKBs
>>935
しーーーーっ!!
2023/08/27(日) 14:26:27.36ID:CE6xeHHv
以前、Delphi→C#のマイグレーションの仕事をして感じた事

データベース処理とかはどちらの処理系も大差ない

ミリセカンド単位のリアルタイムに近い処理はDelphiの方が優れている
(CPUネイティブで高速動作、自らのメインループ内で経過時間を計測、Windowsのタイマーに依存しないイベント処理が可能、など…)

またバイトやビットの操作では、細かく大量のデータ処理であればあるほどDelphiの高速性が際立つ、、など

今更Delphi上げをするつもりはないのだが、なんでもかんでものマイグレーションには反対したいところ

といいつつ今はC#で大体開発している今日この頃です
938デフォルトの名無しさん
垢版 |
2023/08/27(日) 15:24:12.22ID:Nh/YO9Ie
出るΦは打たれる
2023/08/27(日) 20:12:43.78ID:XML1AckB
老害しか使いたくない言語なんだから老害が死ぬ前にマイグレーションしておかないとやばいだろw
2023/08/28(月) 03:32:36.96ID:MVarI0hZ
いずれ君も老害組だよね
2023/08/29(火) 00:27:46.00ID:2WMj1OPB
FormにTimerコンポ置いてタイマーのOnTimerでたとえはこんな感じの簡単なループを実行させるとき

procedure TForm1.Timer1Timer(Sender: TObject);
var
  I: integer;
begin
 Application.ProcessMessages;
 Timer1.Enabled := False;
 for I := 0 to 10 do begin
  Sleep(1000);
  Application.ProcessMessages;
  Form1.Caption := IntToStr(i);
  end;
end;

OnTimer開始時にポップアップメニュー開いてるとそのまま固まってOnTimerの処理が終わるまで操作できなくなるんだけど何故なんだろう?
ループ内でApplication.ProcessMessageしてても回避できない
開始直後さえ抜ければOnTimeでループ実行中にポップアップメニュー開いたり閉じたりは普通にできるんだけど

これ回避する方法って何かないだろうか?
2023/08/29(火) 06:11:33.83ID:EMQZfx+o
>>941
調べずテキトーに書くけどポップアップメニューの処理が
メニューをモーダル表示→ポップアップメニュー専用のメッセージループ→メニュー消去
みたいな連続した流れなんじゃね
これだとメッセージループの途中に別のイベントが入ってきたら
それが終わるまでメニューは消えないし他のUIは働かない

これに限らずUIをフリーズさせずに長時間の処理をするならスレッドがいいんじゃね
2023/08/29(火) 08:28:16.28ID:8/p0zuak
>>941
Timer1.Enabled := False; してるのはなぜ?
2023/08/29(火) 08:34:28.85ID:7e4Tklec
繰り返しじゃなくて x ミリ秒後に一回だけ実行だからだろ
2023/08/29(火) 08:58:56.17ID:Ut131jd8
>>937
>>Delphi→C#
マイクロソフトに依存してる所はマイグレーション多いね

VB→VB.NETやVB→C#も有る
2023/08/29(火) 11:07:09.39ID:2WMj1OPB
>>942
何かそんな感じでDelphiのメニュー系とモーダルウィンドウはメインのメッセージループから制御を奪う仕様みたいね
どうりでApplication.ProcessMessageしても効果ないわけだ

[ 第7章 メッセージを捕まえる : ローカルフック ] - Halbow 資料館
http://mrxray.on.coocan.jp/Halbow/VCL07.html
>このように、メインのメッセージループから制御を奪うモーダルループやメニューループでは、Application.OnMessage は呼ばれない。TForm.ShowModal の場合は大丈夫であるが。次節では、VCL の実装と全く無関係な Windows のメッセージ捕獲機構であるフック関数を試してみよう。

TForm.ShowModalでは大丈夫って書いてあるけど別Unitで作ったフォームをShowModalで表示させたらポップアップメニュー同様固まってタイマー処理が終わるまで閉じれなかった
OS側で用意されてるShowMessageとかInputBoxなんかのモーダルなダイアログだとこういう事はないのでDelphiのVCL特有の現象なんだろうね
2023/08/29(火) 17:16:37.77ID:ud/hz0aH
次スレ不要ですかね
https://www.youtube.com/watch?v=GI2W2LcBTzA
https://www.youtube.com/watch?v=9ZFkHUpAeB4
https://www.youtube.com/watch?v=Y9U_p_OS-yE
https://www.youtube.com/watch?v=HGF1wDslIaA
2023/09/03(日) 20:34:37.50ID:DQVax1xc
C#なんかの.Netソースを参照してDelphiで書くとき
Async/Awaitがよく出てくるけど
Delphiにも同等の機能が欲しい今日この頃
とくにAwaitはDelphiで書くのが難しい

”The Delphi Geek” にAsync/Awaitの実装例があるけど
古いOmniThreadLibraryが前提だから
今でも使えるのかなぁ
2023/09/03(日) 21:29:10.05ID:x92X3P8v
他の言語がasync/await実装していったのにDelphiは何してたんだ…
2023/09/15(金) 13:43:35.32ID:yawUWIIE
Async/Awaitに関連して
DelphiのEventDrivenベースの使い方が時代に合わないのかな
2023/09/15(金) 14:32:15.71ID:NNnAtd6I
え?イベントドリブンってWindowsプログラミングの基本とちゃうん?
2023/09/15(金) 15:16:18.48ID:OMHXOFWv
c++は昔はしんどかったけど、着実にパワーアップして
async、awaitに対応したmodern c++のほうがもう開発しやすい
2023/09/16(土) 17:08:59.24ID:9WGgHKEv
>>950
どういう意味で言ってるのか分からないけど
何でもイベント駆動ってのはちょっと

例えばちょっとTTimer使おうとしても
OnTimerプロシージャ作るのって面倒

ローカル関数の中で
TTimer.Create(Interval,
procedure (var Repeat: boolean)
Repeat := DoSomething(...)
);
とか出来たら便利かも
2023/09/16(土) 17:13:00.33ID:9WGgHKEv
>>953
と書いたけど
これはイベントを直接デストラクタの引数にしただけか
2023/09/19(火) 16:14:22.52ID:hWKudDcV
Delphi言語: 文字列リテラルのモダナイゼーション
https://blogs.embarcadero.com/ja/yukon-beta-blog-delphi-language-modernizing-string-literals-ja/
2023/09/19(火) 17:11:08.75ID:icyPPyHN
>>955
インデントはどう扱われるんだろう
2023/09/19(火) 19:06:57.50ID:PGDiEw/A
開発にほんと金のかからなそうな機能しか追加しねぇ
くそゴミ製品極まれりって感じだな
2023/09/20(水) 14:23:21.96ID:WOyc/V9x
>>956
エディタ依存じゃない?(タブならタブ、スペースならスペースが入ったまま)
ただバグのもとになりそうで使うの怖いっていいたいけど
Delphi10でうちはエンバカとは手を切ったから使えないけど
2023/09/25(月) 23:58:27.45ID:rfUIZo8u
再現方法がいまいち不明だけど、for i := 0 って書くとローカル変数宣言に
i : integer;があるにも関わらずi : TObject;が自動で追加されてエラー吐く事があるんだがおま環?
変数宣言に児童追加ってオプションあったっけ?
バージョンは11.3
2023/09/28(木) 16:37:04.55ID:9dd7aAab
>>959
for の i を ctrl + クリックするとどこへ連れてかれる?
2023/09/29(金) 14:30:13.88ID:lM5dul+F
>>960
不定期に出るから次出たときにちょっと確認してみる
2023/09/30(土) 18:03:43.73ID:J8mq72sd
>>960
元々あった方の
i : integer;
に飛んだ

うーん、自動追加された方の宣言を消せば良いだけではあるんだけど突然現象が発生したらイラっとするなぁ
2023/10/02(月) 21:28:45.93ID:gzTCLyqe
使ってる人教えて
Delphi11 CEのTEdgeBrowserにはOnKeyDownイベントある?
964デフォルトの名無しさん
垢版 |
2023/10/03(火) 09:04:26.78ID:64CI1+Kr
>>963
無いです
2023/10/03(火) 14:16:23.46ID:g7GRySuo
>>964
ありがとん
2023/10/07(土) 17:17:45.53ID:RWlX3DIZ
ちょっと教えて

'0'から'9'の数字をUnicodeの数学用特殊文字 $1D7EC から $1D7F5 に変換したいとき
var Ch='1';
var C := Chr($1D7EC + Ord(Ch) - 48);
とかはダメですよね。3バイトのUnicode文字を生成するにはどうしたら?

ちなみに $1D7EC から $1D7F5 を文字列配列定数にしておいて
そこから選んで、例えばMemoに表示するのは問題なくできてます

https://i.imgur.com/4w7mJUy.jpg
2023/10/07(土) 22:00:50.11ID:xRoQ9uLI
そこまで範囲が広くないならその文字の配列でも作ってChを数値に変換してインデックスにでも指定すればいいんじゃ
968デフォルトの名無しさん
垢版 |
2023/10/08(日) 10:57:00.47ID:CrdCteTP
WideChar()
2023/10/08(日) 11:18:05.77ID:B6B8jkk1
Unicode文字コードからUTF16エレメントへの変換くらいCharでできなくても
SysUtilsにない?と思ったけど見つからないな

関数書いてみたけどレスしようとしたらブロックされた
2023/10/08(日) 11:30:49.69ID:B6B8jkk1
>>968
本当?と思って確かめたけどサロゲートペアはCharと同じで無理でしょ
971966
垢版 |
2023/10/08(日) 13:45:55.24ID:3DOqHjg/
レスありがとう

いろいろ探したり試行したりしたらUCS4Stringで可能だった
var St: UCS4String;
SetLength(St, Length(Text) + 1);
i := 0;
for var Ch: Char in Text do begin
if Ch in ['0'..'9'] then
St[i] := UCS4Char(Ord(Ch) - 48 + $1D7EC);
...
Inc(i);
end;
St[i] := 0;
result := UCS4StringToUnicodeString(St);
とか

ただHelpには書かれてなかったけど
UCS4Stringはnullで終端させる必要があるのかなぁ?
少なくともUCS4StringToUnicodeStringで最後の文字が無視される
972966
垢版 |
2023/10/08(日) 13:46:17.17ID:3DOqHjg/
レスありがとう

いろいろ探したり試行したりしたらUCS4Stringで可能だった
var St: UCS4String;
SetLength(St, Length(Text) + 1);
i := 0;
for var Ch: Char in Text do begin
if Ch in ['0'..'9'] then
St[i] := UCS4Char(Ord(Ch) - 48 + $1D7EC);
...
Inc(i);
end;
St[i] := 0;
result := UCS4StringToUnicodeString(St);
とか

ただHelpには書かれてなかったけど
UCS4Stringはnullで終端させる必要があるのかなぁ?
少なくともUCS4StringToUnicodeStringで最後の文字が無視される
973デフォルトの名無しさん
垢版 |
2023/10/08(日) 14:57:24.78ID:CrdCteTP
SetLength()して使う限り終端は不要
2023/10/08(日) 17:45:45.08ID:B6B8jkk1
Pascal文字列以外の文字列型はnull末端のために内部的には文字列長+1文字分確保されるけど、
UCS4Stringは文字列型ではなく動的配列なのでnull末端分を配慮してくれない
2023/10/08(日) 18:22:14.40ID:3DOqHjg/
なるほど

UCS4StringToUnicodeStringのコード見て理解した

ていうか、そこに出てるサロゲートペア文字の文字コードを
2個のWideCharに変換する式だけ抜き出して使えば
UCS4Stringは使う必要がないことに気づいた

emojiを文字コードで処理するときに使えそう
2023/10/09(月) 15:11:38.53ID:gMk1hFfQ
968が正しかっただろ
2023/10/09(月) 17:39:54.26ID:x3CGnSEg
正しかっただろうと言われてもWideCharというヒントだけじゃ分からないよ

function CharCodeToString(Code: DWord): string;
begin
if Code >= $10000 then
 result := WideChar((((Code - $00010000) shr 10) and $000003FF) or $D800) +
  WideChar(((Code - $00010000) and $000003FF)or $DC00)
else
 result := WideChar(Code);
end;

var S := CharCodeToString($1F44D); // 👍
2023/10/09(月) 18:16:24.96ID:0aeoNKvV
つーかそのソースのWideCharをCharに書き換えても動くはずで
>>976はただの恥の上塗り
2023/10/19(木) 15:20:59.03ID:CR40Km/G
D6使ってます。
ListView の ViewStyle := vsReport (MultSelect := True) で質問です。
上下用のボタンをそれぞれ配置して1押しで1行入れ替わるというのなら見つけられたのですが
↓こんなのとか
https://forum.lazarus.freepascal.org/index.php?topic=37638.0

Item行が複数ある内の1行(又は複数行)をマウスの左押しSelectedドラッグのでマウス移動のドロップで任意の行に移動挿入させる
分りやすそうなTipsサンプルソースはどこかにありませんか?
2023/10/31(火) 00:03:41.01ID:Zb+zHwAH
>>979
「delphi listview DropTarget」でググったらトップはこのページだったよ
http://hiderin.air-nifty.com/delphi/2007/08/listviewdragdro_3816.html
2023/11/03(金) 08:34:31.15ID:o6heXx3i
メンテ続くのか心配になるような寂しすぎる数字だな

CnWizards 1.2.8.1150 Installer (160 times)
982979
垢版 |
2023/11/05(日) 15:12:55.90ID:hrvMW1Wv
>>980
ありがとうございます。
参照してみます
2023/11/10(金) 03:36:00.94ID:Py+YaXOi
Delphi12が出たな
とは言えCE使いの自分は早くて1年後か
アイコンジェネレータ(だっけ?)あれはすぐにでも欲しい
2023/11/12(日) 22:02:25.11ID:+U+VDWFn
DelphiはプログラミングAIとは無縁だと思ってたけど
Bingでちょっと検索しようとしたら勝手に回答が得られた
内容はメモのキャレット位置に文字を入力

https://i.imgur.com/o62pxWE.png

単に検索した内容をそれっぽく表示しただけだろうけど
2023/11/13(月) 12:00:09.87ID:5HbOyqSV
>>984
たったこれだけ?ww
2023/11/14(火) 17:19:59.72ID:h/voCdEm
Delphi の所 .net に変えても似たようなもんだったけど
2023/11/16(木) 00:05:16.75ID:cpEmTaQF
AIにDelphiのちょっと難しい事聞くとありもしない関数でっちあげて、さも動くような回答してくるぞ
988デフォルトの名無しさん
垢版 |
2023/11/18(土) 10:27:44.88ID:cPcQRb0C
Delphi12のヘルプ、Sample Codeとして外部リンクしているやつのURLがおかしいね
TXMLDocumentSaveToFileを例にとると、リンク先が
http://docwiki.embarcadero.com/codeExamples/Yukon/en/TXMLDocumentSaveToFile_(Delphi)
となっててNot Foundになる
Yukon を Athensに書き換えると表示される
2023/11/18(土) 14:30:52.25ID:wkZxFd4v
円馬鹿のヘルプは表示されても全然意味ねーヘルプだもんなあ
まったく使い物にならないと思う
2023/11/19(日) 12:34:37.07ID:BoNVo4Qp
Delphi3ぐらいまでのヘルプはムチャクチャ良かったんだぜ、その頃はMSのヘルプも良かった(ただの思い出話)
2023/11/19(日) 16:53:11.23ID:xOmyt77Q
Delphi6のヘルプは今でも愛用してる
2023/11/21(火) 11:44:15.03ID:Nz1W2OrA
OpenAIとマイクロソフトの件でアンダースヘルスバーグの事を思い出した
2023/11/23(木) 20:09:48.90ID:KAoTyDwD
■ 誰も立てないから立てた。さあ語れ。
くだすれDelphi(超初心者用)その60【Embarcadero】
https://mevius.5ch.net/test/read.cgi/tech/1700737330/l50

間違ってる部分や過去に改善部分の指摘があったのなら
1へのアンカー付けて変更部分含めた全文を次回立てる人向け用で分かるように
2以降に申し送り用として貼っておいてください。
2023/11/25(土) 02:39:11.65ID:f+EJGsIr
>>993
おつ
995デフォルトの名無しさん
垢版 |
2023/11/26(日) 04:50:54.28ID:vJBrQd0Z
>>938
出るπは吸われる
2023/11/26(日) 11:16:37.52ID:xrmT/xcU
出る腹?
997デフォルトの名無しさん
垢版 |
2023/11/26(日) 12:54:39.33ID:d/KzVdDP
delΦ
998デフォルトの名無しさん
垢版 |
2023/11/26(日) 12:54:54.22ID:d/KzVdDP
うめ
999デフォルトの名無しさん
垢版 |
2023/11/26(日) 12:55:25.18ID:d/KzVdDP
くだすれDelphi(超初心者用)その60【Embarcadero】
https://mevius.5ch.net/test/read.cgi/tech/1700737330/
1000デフォルトの名無しさん
垢版 |
2023/11/26(日) 12:55:38.68ID:d/KzVdDP
糸冬
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 793日 1時間 39分 12秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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