- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

Lazarus と Free Pascal

※ID非表示スレ
1名無しさん@おーぷん:2015/12/09(水)12:38:51 ID:???
Lazarus Homepage
http://www.lazarus-ide.org/

Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page
http://www.freepascal.org/

>>1-10 その他の情報
713名無しさん@おーぷん :2018/05/19(土)12:45:12 ID:???
実行時パッケージでも対処可能

エディタのフォーム作成時に
>>710 の OnDropFiles イベントを置き換えればいい

エディタフォーム作成時はこれでわかる
SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, @SourceWindowCreated);
714名無しさん@おーぷん :2018/05/19(土)13:48:06 ID:???
検索をもっと速くする方法

procedure TSearchProgressForm.OnAddMatch( で毎回
UpdateMatche を呼び出して これまでに一致した数を更新してるから、
たくさん一致すると遅くなる。

なので、
procedure TSearchProgressForm.UpdateProgress(FileName: string);
で更新すれば速くなる。

[lazarus] Contents of /trunk/ide/searchfrm.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/searchfrm.pas?root=lazarus&view=markup#l701

[lazarus] Contents of /trunk/ide/searchfrm.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/searchfrm.pas?root=lazarus&view=markup#l931
715名無しさん@おーぷん :2018/05/20(日)04:38:24 ID:???
コンパイル時のマクロがいっぱい増えてるけど、
パスは無いんか?

[fpc] Contents of /trunk/compiler/scanner.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/compiler/scanner.pas?revision=38329&view=markup&sortby=file#l2435
716名無しさん@おーぷん :2018/05/21(月)18:36:47 ID:???
動的配列が色々サポート

Free Pascal - General - Feature announcement: Dynamic array extensions
http://free-pascal-general.1045716.n5.nabble.com/Feature-announcement-Dynamic-array-extensions-td5731410.html

Free Pascal - General - Dynamic Array, operator +
http://free-pascal-general.1045716.n5.nabble.com/Dynamic-Array-operator-td5731426.html
717名無しさん@おーぷん :2018/05/22(火)05:32:27 ID:???
ソースはこの辺

[fpc] Log of /trunk/compiler/ngtcon.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/compiler/ngtcon.pas?sortby=file&view=log

[fpc] Revision 39041
https://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&sortby=file&revision=39041

https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/compiler/ngtcon.pas?revision=39041&view=co&pathrev=39041
718名無しさん@おーぷん :2018/05/23(水)19:45:29 ID:???
国別のダウンロード数
Windowsではロシア、ドイツ、ウクライナがトップ3
Linuxはブラジルがトップ

Lazarus - Browse Files at SourceForge.net
https://sourceforge.net/projects/lazarus/files/

Download Statistics: Lazarus Windows 32 bits
https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/stats/map

Download Statistics: Lazarus Windows 64 bits
https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/stats/map

Download Statistics: Lazarus Linux amd64 DEB
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/stats/map
719名無しさん@おーぷん :2018/05/23(水)19:49:34 ID:???
Download Statistics: All Files
https://sourceforge.net/projects/lazarus/files/stats/map

SourceForge Support / Documentation / Download Stats API
https://sourceforge.net/p/forge/documentation/Download%20Stats%20API/
720名無しさん@おーぷん :2018/05/23(水)20:00:23 ID:???
2012年の国別ダウンロード数

https://sourceforge.net/projects/lazarus/files/stats/json?start_date=2017-01-01&end_date=2017-12-31&os_by_country=false
721名無しさん@おーぷん :2018/05/24(木)20:07:44 ID:???
Windowsでしか動かないけど

1. China 5,572
2. United States 5,012
3. Russia 4,336
4. Germany 3,351
5. Japan 3,243
6. India 2,888
7. Brazil 2,534
8. Mexico 2,493
9. Italy 1,752
10. Indonesia 1,666

Download Statistics: All Files
https://sourceforge.net/projects/sharpdevelop/files/stats/map

SharpDevelop - Wikipedia
https://ja.wikipedia.org/wiki/SharpDevelop
722名無しさん@おーぷん :2018/05/25(金)15:40:47 ID:???
>>277
pchararr32 に変更した時のスレがあった

0015845: XQueryKeymap function declaration (in xlib.pp) seems to be wrong - Free Pascal/Lazarus Bug Tracker
https://bugs.freepascal.org/view.php?id=15845

[fpc] Contents of /trunk/packages/x11/src/xlib.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/x11/src/xlib.pp?view=markup#l1604

[fpc] Contents of /trunk/packages/x11/src/xlib.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/x11/src/xlib.pp?view=markup#l1285

これでポインタになるのか?
type
chararr32 = array[0..31] of char;
pchararr32 = chararr32;
723名無しさん@おーぷん :2018/05/25(金)16:56:23 ID:???
FPCの方の文書は見つけられなかった

32バイトの静的配列はポインタで渡される
cdecl は関係ない

プログラムの制御(Delphi) - RAD Studio
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%88%B6%E5%BE%A1
>1 バイト、2 バイト、または 4 バイトの集合、レコード、静的配列は、
>8 ビット値、16 ビット値、32 ビット値として渡されます。
>これより大きい集合、レコード、静的配列の場合は、値への 32 ビット ポインタとして渡されます。
724名無しさん@おーぷん :2018/05/26(土)17:12:27 ID:???
pchararr32 = ^chararr32;
にすると呼び出し元のコードをポインタにしないといけない。

それが嫌なら
function XQueryKeymap(para1:PDisplay; para2:pchararr32):cint;cdecl;external libX11;

function XQueryKeymap(para1:PDisplay; var para2:chararr32):cint;cdecl;external libX11;
にすべき。
725名無しさん@おーぷん :2018/05/26(土)17:13:30 ID:???
もしかして、
pchararr32 = ^chararr32;
にしたつもりだったとか?

>Better always use pointer
って言ってるし

[fpc] Diff of /branches/fixes_2_4/packages/x11/src/xlib.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/branches/fixes_2_4/packages/x11/src/xlib.pp?r1=13515&r2=16401&pathrev=16401
726名無しさん@おーぷん :2018/05/28(月)19:03:36 ID:???
\lazarus\ide\以下のユニットにアクセスするために、
自作unitをそこへ置いて、 他のideのunitのusesに追加したら、
普通にコンパイル・リンクされましたわ。
lazarus.iniのプロジェクトインスペクタに追加してもダメみたい。

unitの中身をインクルード指令 {$I フルパスファイル名} のみにして、
他に飛ばせるし、 いろいろできそうだ。
727名無しさん@おーぷん :2018/05/28(月)20:12:27 ID:???
あ、自作パッケージの出力先を ide の ppuファイルの出力先と同じにして、
Other unit files と インクルードファイル のパスを追加したら、
自作パッケージから ide 以下のunitにアクセスできましたわ。
728名無しさん@おーぷん :2018/05/28(月)20:23:05 ID:???
他の場所に出力すると、
ide のユニットを使っているユニットで、checksum が違うと出て再コンパイルして、
そのファイルが見つからないって出る。
729名無しさん@おーぷん :2018/05/28(月)20:32:42 ID:???
>>727 はしかも、 ide内部のユニットから
自作パッケージ内のユニットを使用可能にする。
730名無しさん@おーぷん :2018/05/28(月)20:34:42 ID:???
もともと ide内部から、インストールされているパッケージのユニットにはアクセス可能なのか
731名無しさん@おーぷん :2018/05/30(水)03:08:03 ID:???
自作パッケージで
Application.OnException を設定して、
例外を MessagesView に表示したほうがいいと思う。
732名無しさん@おーぷん :2018/05/30(水)23:57:39 ID:???
Simulating the Windows API's FindWindow function with Kylix
http://edn.embarcadero.com/article/27395
733名無しさん@おーぷん :2018/05/31(木)04:19:30 ID:???
https://wandbox.org/nojs/fpc-3.0.2/permlink/428n9YwIXIC41qWv

uses Types, SysUtils;

var
T: QWOrd;
begin
T := GetTickCount64;
S l e ep(1);
WriteLn(GetTickCount64 - T);
end.

program output:

1
734名無しさん@おーぷん :2018/05/31(木)04:23:38 ID:???
Windowsでは 0 か 15 やった
timeBeginPeriod(1) してても。
735名無しさん@おーぷん :2018/05/31(木)06:02:08 ID:???
パッケージのコンパイルは並列に実行されて速いんだけど、
IDEのコンパイルは時間がかかる。

Speedup Lazarus's recompiling
http://forum.lazarus-ide.org/index.php/topic,41348.msg286876.html#msg286876

Lazarus Packages - Free Pascal wiki
http://wiki.freepascal.org/Lazarus_Packages#Parallel_Compilation
736名無しさん@おーぷん :2018/06/02(土)22:22:59 ID:???
RTLEventWaitFor(AEvent) で待機中のスレッドに対し、
別スレッドから RTLEventDestroy(AEvent) を実行すると、
どうなるかは未定義。

WaitForSingleObject question for Events
https://social.msdn.microsoft.com/Forums/en-US/37a0a4bf-6b0b-470f-9ce0-1c8f89fe6b55/waitforsingleobject-question-for-events?forum=vcgeneral
>The fine manual says: "If this handle is closed while the wait is still pending, the function's behavior is undefined." In other words, don't do that.
737名無しさん@おーぷん :2018/06/13(水)17:52:02 ID:???
[fpc] Contents of /trunk/rtl/inc/heap.inc
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/inc/heap.inc?view=markup#l1330

SysTryResizeMem が False を返した時は


[fpc] Contents of /trunk/rtl/inc/heap.inc
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/inc/heap.inc?view=markup#l1460

で再確保とコピーが発生する
738名無しさん@おーぷん :2018/06/13(水)17:55:33 ID:???
説明

[fpc] Contents of /trunk/rtl/inc/heap.inc
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/inc/heap.inc?view=markup#l113
739名無しさん@おーぷん :2018/06/13(水)18:09:06 ID:???
チャンクサイズの下位4bitがフラグに使われていて、
これをクリアしたり、取り出したりするコードが頻繁に出てくる。
740名無しさん@おーぷん :2018/06/13(水)18:12:37 ID:???

{ fix p to point to the heaprecord }
chunksize := pmemchunk_fixed(p-sizeof(tmemchunk_fixed_hdr))^.size;

32bitの場合、 4byte戻して、 pmemchunk_fixed でキャストする理由がわからない。

memchunk_fixed(p-sizeof(tmemchunk_fixed_hdr))^.next_fixed

memchunk_fixed(p-sizeof(tmemchunk_fixed_hdr))^.prev_fixed
は既にデータが始まってる場所だと思うのだが?
741名無しさん@おーぷん :2018/06/13(水)18:29:38 ID:???
ここも良くわからないな
1024+8 の heaprecord とは何だ?

blocksize = 16; { at least size of freerecord }
blockshift = 4; { shr value for blocksize=2^blockshift}
maxblocksize = 512+blocksize; { 1024+8 needed for heaprecord }
742名無しさん@おーぷん :2018/06/13(水)18:45:42 ID:???
fixedsize は 大きく確保したメモリを
同じサイズで小分けして使うタイプのメモリ
743名無しさん@おーぷん :2018/06/13(水)19:19:46 ID:???
要求サイズが524バイト以下の時に fixedchunk になる

525バイト以上なら サイズいろいろchunk になる

サイズいろいろchunk が ReallocMem(P, 263) 以下だと、
ポインタが変わってコピーが発生する
744名無しさん@おーぷん :2018/06/14(木)01:16:11 ID:???
inline関数内が空だと、何も挿入されないんだね
745名無しさん@おーぷん :2018/06/14(木)01:51:09 ID:???
{$I %FILE%}と{$I %LINE%} を渡せば Assertもどきを作れる
746名無しさん@おーぷん :2018/06/14(木)02:16:27 ID:???
ReallocMem でコピーが発生するのは、ポインタが変わった時だけみたいだが

だから、 SetLength で一つずつ増やしていっても、毎回コピーが発生するとは
限らないはず。
747名無しさん@おーぷん :2018/06/15(金)04:21:54 ID:???
出力がちょっと安定しないが、 262127+1 の方が 262128+1 より遅いんよ

https://wandbox.org/nojs/fpc-3.0.2/permlink/TCWYnuz5PaJGV4em

uses
 Types, SysUtils;

function Test(Len: Integer): Int64;
var
 A: TStringDynArray;
 I: Integer;
 T: Int64;
begin
 Result := 0;
 for I := 1 to 1000 do
 begin
  A := nil;
  SetLength(A, Len);

  T := GetTickCount64;
  SetLength(A, Len + 1);
  Inc(Result, GetTickCount64 - T);
 end;
end;

begin
 WriteLn(Test(65519));
 WriteLn(Test(65520));
 WriteLn(Test(262127));
 WriteLn(Test(262128));
end.

1
0
4
2
748名無しさん@おーぷん :2018/06/15(金)04:24:30 ID:???
自前のPCだと100回に減らしてこう

2
0
268
0
749名無しさん@おーぷん :2018/06/15(金)04:26:35 ID:???
WandBoxのサーバがほとんど1ms以内に終わらせているかもしれんね
さすがに600倍の性能差のPCは無いやろ
750名無しさん@おーぷん :2018/06/15(金)04:32:17 ID:???
1ms未満だと、1000回実行する意味なかったわ
偶然またぐかもしれないってだけで。

自宅PCの場合、2〜3ms掛かってるってことだ
751名無しさん@おーぷん :2018/07/02(月)06:47:01 ID:???
クラス構造表示
あらかじめ作ったini形式のデータファイル(classtree.dat)から TreeNodes を構築してます。
classtreedat.lpr は classtree.dat を作るプログラム。

classtree.zip (classtree.zip) ダウンロード | おーぷん2ちゃんねるろだ | uploader.jp
https://ux.getuploader.com/open2ch1/download/820

MD5 76825c53e64635ad5fa169453cf6b8e3
SHA1 10c674518615bc07f2fd11487f78f5513b965cf2


752名無しさん@おーぷん :2018/07/02(月)06:52:26 ID:???
classtree.zip が 167.9 KB と大きいのは、
そのデータファイルを含んでいるから。
2.9MBあります。
753名無しさん@おーぷん :2018/07/02(月)06:52:33 ID:???
>>727 の設定例が
classtree.zip に 727.txt として入ってます。

ここに書き込んだらアク禁食らった。
754名無しさん@おーぷん :2018/07/02(月)07:30:20 ID:???
classtree.exe を外部ツールに登録して、
$CurToken() をパラメータとして渡せば、
完全一致するクラス名があればそれを表示、
なければその文字列を含むクラスを表示してくれる。
755名無しさん@おーぷん :2018/07/03(火)14:50:19 ID:???
project.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/project.pp?root=lazarus&view=co&content-type=text%2Fplain

DefaultSyntaxHighlighter/Value
を読み書きするところはコメントアウトした方がいいかもしれん
2箇所ある
756名無しさん@おーぷん :2018/07/05(木)16:18:34 ID:???
>>751 は Linux だと、
アプリを終了すると、クリップボードにコピーしたものが消えますね
757名無しさん@おーぷん :2018/07/06(金)06:28:03 ID:???
既に起動している Lazarus にファイル名を渡す仕組み
TTimer 使って、 50ms に一回 temp フォルダに通信用のファイルがあるかチェックして、
あるならそれを読み込んで開いている

[lazarus] Log of /trunk/ide/ideinstances.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/ideinstances.pas?root=lazarus&sortby=file&view=log

[lazarus] Log of /trunk/ide/lazadvancedipc.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/lazadvancedipc.pp?root=lazarus&sortby=file&view=log
758名無しさん@おーぷん :2018/07/11(水)17:56:47 ID:???
Mac は View や Help ってメニューがあると、
勝手に項目を追加するらしい

Problem occuring in Cocoa menus
http://forum.lazarus.freepascal.org/index.php?topic=41656
759名無しさん@おーぷん :2018/09/11(火)08:56:39 ID:???
[lazarus] Contents of /trunk/ide/main.pp
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/main.pp?view=markup&revision=58903&root=lazarus&sortby=file#l9515
procedure TMainIDE.CodeBufferDecodeLoaded(Code: TCodeBuffer;
...
DiskEncoding:=InputHistories.FileEncodings[Filename];

ここで inputhistory.xml から文字コードを取得しているんだけど、
IDE以外で文字コードを変更した場合、 inputhistory.xml に記録されている文字コードと
合わなくなるので、文字化けが起きる。
タイムスタンプの比較はやっていない。

[lazarus] Log of /trunk/ide/inputhistory.pas
https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/inputhistory.pas?root=lazarus&sortby=file&view=log
760名無しさん@おーぷん :2018/09/12(水)21:53:26 ID:???
BOM無しUTF8の欠点だな
BOM無しUTF8は最悪の場合、最後の文字まで調べないと
文字コードを判別できない。

BOMを付ければすぐに判別可能だけど、
そうすると、UTF16でいいじゃんってことになる。
761名無しさん@おーぷん :2018/09/19(水)16:45:13 ID:???
>>727
このタイプのパッケージを複数作ると、
Note: Duplicate unit "... って出る。
Clean and Build した場合は出ないけど。

IDE のユニットが パッケージ側に追加されてるのかな。
762名無しさん@おーぷん :2018/09/21(金)01:21:00 ID:???
パッケージ側にIDEのユニットが移動するっぽいな

そのパッケージを「要求されたパッケージ」に追加すると、
なんと、 IDE以下のユニットが使えるようになる。
このとき、ユニットパスや出力先をIDEと同じにする必要はなくなる。

新着レスの表示 | ここまで読んだ

名前: mail:





Lazarus と Free Pascal
CRITEO