【Delphi互換!?】FreePascal/Lazarus その2【GPL】at TECH
【Delphi互換!?】FreePascal/Lazarus その2【GPL】 - 暇つぶし2ch924:デフォルトの名無しさん
22/10/20 08:50:49.47 rL6ktv6z.net
AmazonにKindle本として佐々木優という人が書いたLazurus・Free Pascalのセルフ出版の
本が何冊かのっている(読み放題のKindle Unlimited対象)
役に立つかどうかは別にして日本語の本というのはめずらしいかも

925:デフォルトの名無しさん
22/10/20 10:06:08.31 7LO4Bhg7.net
>>924
応援の意味で何冊か買いました。Unlimited もいつ対象外になるかわからんし。

926:デフォルトの名無しさん
22/10/22 14:34:30.76 4hbuG1Ym.net
UbuntuでC++Builderを導入できなかったのでDelphiの本読んで勉強してます。
思い通りに動くと楽しいです。

927:デフォルトの名無しさん
22/11/15 14:25:03.73 ktesV7KK.net
サンプルの xmlstreaming を参考にして設定を書き出す処理を作ってます。
TComponent を継承して設定データのクラスを作ろうとしているんだけど、
その中にさらに TComponent 派生クラスを入れ子にすると、その項目が書き出されない。
入れ子のクラスを TPersistent 派生にすると書き出されるんだけど、項目名が
ドットで区切られた形でかなり違和感。
xmlstreaming の中でコメントアウトされている Form (Self) を書き出す処理を有効にしてみると、
入れ子のデータは「children」タグに囲われていい感じで出力されているんだけど、
どうやればできるんでしょうか?

928:デフォルトの名無しさん
22/11/15 19:22:03.37 hFwj798Q.net
>>927
下記を付け加えると入れ子のデータも書き出された
読み込みが正常に行われるかは検証してない
procedure TMyComponent.GetChildren(Proc: TGetChildProc; Root: TComponent); //override;
var
i: Integer;
begin
if Self = Root then begin
for i:=0 to ComponentCount-1 do begin
Proc(Components[i]);
end;
end;
end;

929:デフォルトの名無しさん
22/11/15 21:41:42.06 hFwj798Q.net
Rootってなんだろう?と思って書いてたコードが入ってた
procedure TMyComponent.GetChildren(Proc: TGetChildProc; Root: TComponent); //override;
var
i: Integer;
begin
for i:=0 to ComponentCount-1 do begin
Proc(Components[i]);
end;
end;

930:デフォルトの名無しさん
22/11/15 22:24:52.25 1BrVYPVp.net
>>929
ありがとうございます。書き出せました。
wiki のストリーミングのところ読んでもそんなこと書いてなかったけどな。
TWinControl に実装されてるから Form ならちゃんと書き出されたんですな。
人をハメようとしてるとしか思えないな。検索しても、英語の情報でも全然ないし。
とにかく、ありがとうございました。

931:デフォルトの名無しさん
22/12/14 20:13:02.80 WtdZKbBc.net
これは壮観。過去50年以上にわたる「プログラミング言語の人気の変遷」をアニメで紹介するムービー【やじうまWatch】 - INTERNET Watch
s://internet.watch.impress.co.jp/docs/yajiuma/1463502.html
pascalって人気あったんだね

932:デフォルトの名無しさん
22/12/31 11:06:52.98 J7CUMtxq.net
インクリメンタルサーチの候補表示に TListBox を使っていて、
候補数が一定以下の場合は、数に合わせて ListBox の高さを調節したいと思っています。
Windows の場合は ItemHeight を使えばうまくいくようなのですが、Linux だと 0 が返ってきて
使えません。ほかにも ItemRect(0).Height の値も 0 ではないけど全然足りないし、
フォントの高さから計算できるかと思ったけど、同じ高さでもフォントが違うと
ListBox の項目の高さが微妙に違ったりしてこれもダメっぽい。
描画しているんだからどこかに情報があるんだと思うんですが、どこにあるんでしょう?
そもそもアプローチが間違っている?

933:デフォルトの名無しさん
23/01/07 18:23:08.22 rN0cn1Ph.net
TOpenDialogのTitleプロパティがデフォルトの「ファイルを開く」のままOpenDialog1.Executeを実行すると、表示されたダイアログのキャプションが"Open existing file"と英語で表示されてしまいます。
これはLCLStrConstsユニットで rsfdOpenFile = 'Open existing file'; と定義されているのが原因のようですが、これをlclstrconsts.ja.poの「ファイルを開く」に置き換える方法を教えてください。

934:デフォルトの名無しさん
23/01/09 20:44:35.21 uyXkOmJj.net
>>933
プロパティの設定が効かないってことかな?

935:デフォルトの名無しさん
23/01/10 09:05:22.16 GH/EYK1c.net
>>934
オブジェクトインスペクタでTitleを「画像ファイルを開く」など「ファイルを開く」以外にすればTitleがダイアログのキャプションに反映されます。
また、コードでOpenDialog1.Title := 'ファイルを開く'; を実行すればキャプションもそうなります。
ただ、コードを書かずにオブジェクトインスペクタで「ファイルを開く」を設定するだけだと「Open existing file」が表示されるというのが今回の問題です。
この症状はTDBNavigatorでも確認できていて、Hintsプロパティにはデフォルトで日本語のヒントが設定されているのにもかかわらず、実行すると英語のヒントが表示されてしまします。
その他MessageDlgのボタンが「はい」「いいえ」ではなく「Yes」「No」なのも同じ原因だと思います。

936:デフォルトの名無しさん
23/01/10 18:40:29.37 ddgJg6qa.net
>>935
IDEの言語を日本語にしていると、TOpenDialogのTitleプロパティを「ファイルを開く」に設定してもデフォルトとみなされ設定ファイルに記録されず
アプリを国際化対応させてないと元のデフォルトである 'Open existing file' が表示されるみたい
したがって
解決法1
IDEの言語を日本語以外にして Titleプロパティを「ファイルを開く」に設定する
他のダイアログなどでも設定しないとならなかったり、根本解決ではない
解決法2
国際化対応(のふり):
1.どこかの uses節に DefaultTranslator を追加し、
2.実行ファイルがあるフォルダに languagesフォルダを作り、その中に lclstrconsts.ja.po をコピーする
でいいはずなんだけど、Windowsだと FCLの gettextユニットに日本語の言語コードを jp とする不具合があるので、次のように修正する
3.gettextユニットにある procedure GetLanguageIDs(var Lang, FallbackLang: string) の中の
 LOCALE_SABBREVLANGNAME を LOCALE_SISO639LANGNAME に
 LOCALE_SABBREVCTRYNAME を LOCALE_SISO3166CTRYNAME に書き換える
あとは gettextユニットをプロジェクトに追加してコンパイルするだけでいいはず
(gettextユニットを修正せずにファイル名を lclstrconsts.ja.po から lclstrconsts.jp.po にするだけでもいいけど)
gettextユニットの不具合のせいで国際化対応をどうやってもできなくて無駄に悩んだぞ
IDEの言語設定で Automaticで日本語にならないのも gettextユニットの不具合のせいじゃないのかなあ

937:デフォルトの名無しさん
23/01/10 19:51:57.80 GH/EYK1c.net
>>936
ありがとうございます。
lclstrconsts.jp.poにリネームする方法で試して無事日本語で表示されました。
TDBNavigatorのヒントとMessageDlgのボタンも同様です。

938:デフォルトの名無しさん
23/03/13 17:17:11.04 0W6r0BpQ.net
Lazarus Release 2.2.6 - March 09, 2023, 10:38:09 am

939:デフォルトの名無しさん
23/03/17 15:14:21.65 O04jxkPS.net
軽くていいな。ゲームエンジンなんかもあるようで欧州では使い手多いのか?

940:デフォルトの名無しさん
23/04/29 13:16:43.69 SIZVO/Fn.net
URLリンク(www.tiobe.com)
TIOBE Indexで常に10位前後を維持してるDelphi系のPascal言語もスゴいよな
信じがたい快挙

941:デフォルトの名無しさん
23/05/05 03:07:31.72 PeDEzH1k.net
Windowsアプリを作ったら、とても遅いような気がするんだけど、まだ改善してないのかな?

942:デフォルトの名無しさん
23/05/07 13:41:00.25 eh+8xa5M.net
>>941
どんなプログラムを書いてどの言語と比較して遅いのかを書かないと答えは無理
C++/C言語と同等の速度にはならない
スクリプト言語よりは高速

943:デフォルトの名無しさん
23/05/07 15:52:40.36 FtrFphzu.net
>>941
他のプログラムはサクサク動くのにお前の作ったプログラムだけが遅いという場合は、
多分お前のプログラムの何かがおかしい。

944:デフォルトの名無しさん
23/07/12 06:19:48.60 I6ZMSQN0.net
Lazarus Release Candidate 1 of 3.0 - July 03, 2023, 02:10:30 pm


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch