【Delphi互換!?】FreePascal/Lazarus その2【GPL】

レス数が1000を超えています。これ以上書き込みはできません。
981デフォルトの名無しさん
垢版 |
2025/10/07(火) 11:53:48.40ID:1INtyESS
977です delphi5のプログラムをインポートしたソースコードだけどソースそのものがsjis->utf8に変換されてた。メニュー等の文字だけを日本語化しただけじゃないみたい
 AIはdelphi用のコンポーネントも使えるかも?と言ってるのでちょっとイジってみようかと思う、いや思ってるだけですよ
2025/10/07(火) 18:15:23.51ID:PufELU/u
fpcで作成したコンソールアプリが実行時にEAccessViolationとなるのでfpcでソースのエラー位置を調べたら
ある関数の最後のendが示されて役に立ちませんでした
Lazarusに持って行ったら例外で停止さえしませんでした
Delphai6に持って行ってOSによる例外をデバッガが受け取るという設定にしたらやっと発生位置が特定できました

FPC/Lazarusではどうにもならないのでしょうか
Lazurusはちょっと古くて2.2.4です
983デフォルトの名無しさん
垢版 |
2025/10/07(火) 22:35:09.49ID:GcmYQjI+
>>982
プロジェクトオプションの最適化が有効になっているからでは?
「0.最適化なし」にして試してみては?
2025/10/08(水) 09:53:53.24ID:i2Vw4tqm
最適化がオンでもオフでも
Execution stopped with exit-code 1 ($0001)
というポップアップが出て終了してしまいます
エラー位置にカーソルは行ってくれません
デバッガはdefault debuggerでもGdbでも同じです
2025/10/08(水) 10:11:36.23ID:i2Vw4tqm
982で「例外で停止さえしませんでした」というのは嘘でしたstoppedだから停止はしていますね
でもどこで停止したのかがわかりません

fpcでは
fpc -glh -O- とかやってどの関数でエラーが発生したのかまではわかるのですが
986デフォルトの名無しさん
垢版 |
2025/10/08(水) 14:47:25.50ID:xHDBIHkx
fpcそのものからは離れますが
exet code が1でエラーなので例外停止したと読めます

ただコンソールアプリがさまざまな返り値を返すこと自体はエラーでも何でもなく普通のことだと私は理解しています
アプリの終了時に0を返せばいいのでは?

Cだと
int main()
{
printf("hello world");
return 0;
}

エラー位置が特定できないのはそもそもプログラムが終わっているからとも解釈できます。rezarusにexiecode=1のエラーを無視するみたいなのはないのでしょうか?

的外れでしたらすみません
2025/10/08(水) 21:55:59.60ID:i2Vw4tqm
>>986
985 に訂正して書きましたようにLazarusでもエラー停止はしています

デバッガにはエラー位置を特定してもらいたいという話です
Lazarus/FPCではEAccessViolationのエラーについてそれができないようでした
一方Delphi 6では同じソースでEAccessViolationについても停止してからIDE上でカーソルがエラー位置に飛びます
988デフォルトの名無しさん
垢版 |
2025/10/09(木) 07:09:23.25ID:l11UH+Dz
どうもお役に立てなかったようです
2025/10/12(日) 17:55:59.44ID:E5GJpTM9
987です
前回のプログラムは開発途中でもう残っていないのですが、EAccessViolationが発生する単純なプログラムで
今日改めてテストして見ました所Lazarus/FPCとも正しくエラー行を表示してくれました
お騒がせしてすみませんでした
前回は一体何だったのだろうか・・・

{$APPTYPE CONSOLE}
program test;
uses SysUtils;
var
 p: PInteger;
begin
 Writeln('Start');
 p := nil;
 p^ := 123;
 Readln
end.
990デフォルトの名無しさん
垢版 |
2025/10/13(月) 09:39:19.36ID:Jdg3EAgT
コンソールアプリの返り値が1なのでエラーだったと思いますが
書き込まれたソースですと返り値が指定されていません
よって返り値は不定なのでその度に結果が異なると解釈できないことはありません。
なので返り値を明示的に指定してその結果を比較されていかがでしょうか? 
 
以下はgrokに聞きました

Q)pascal(free pascal)を使用して、windows(dos)上で動作するコンソールアプリを作成します
そのコンソールアプリの返り値を指定するにはどうしたらいいですか

A) by grok
Free Pascalでは、プログラムの終了コードをHalt手続きやExitCode変数を使用して設定できます。以下に具体的な手順とサンプルコードを示します。

<<sample1>>
program ExitCodeDemo;
begin
WriteLn('プログラムが正常に終了しました');
Halt(0); // 終了コード 0 を返す
end.

<<sample2>>
program ExitCodeDemo;
begin
WriteLn('プログラムが実行中...');
ExitCode := 42; // 終了コード 42 を返す
end.
2025/10/14(火) 19:14:39.90ID:QTjOk1jf
>>990
989ですが、今となっては当初デバッガが動作しなかった理由はわかりません
その後簡単なテストプログラムで問題なくエラー行は検知されました
ちなみにFree Pascalのプログラムではエラーの時に返り値を設定する以外に特に返り値の指定は不要で、
正常終了すればゼロになります
992デフォルトの名無しさん
垢版 |
2025/11/12(水) 01:21:59.39ID:oQstHhSD
Lazarus 4.4が出ました
https://forum.lazarus.freepascal.org/index.php/topic,72707.0.html
2025/11/12(水) 09:15:18.55ID:JDphJLx0
バージョンアップする必要性を感じなくなって2.2.4のまま使っている
fpcはunicode不完全対応の3.2.2でずっと変わらないし過去作成したプログラムを修正する必要が発生するかもしれないのもいやだしね
994デフォルトの名無しさん
垢版 |
2025/11/26(水) 12:38:54.27ID:NbdKRcvb
次スレ立ててみました
delphi互換 freePasacal Lazarus その3(GPL)
https://mevius.5ch.net/test/read.cgi/tech/1764128018/
995デフォルトの名無しさん
垢版 |
2025/11/28(金) 06:28:06.44ID:YehK5uv+
>>991
君はなんか餅違いをしてそうだね
2025/11/28(金) 06:28:52.79ID:YehK5uv+
>>991
君はなんか思い違いをしてそうだね
997デフォルトの名無しさん
垢版 |
2025/11/28(金) 06:30:05.51ID:YehK5uv+
>>993
そういうの大事だよね
998デフォルトの名無しさん
垢版 |
2025/11/28(金) 06:30:50.84ID:YehK5uv+
>>994
O2
999デフォルトの名無しさん
垢版 |
2025/11/28(金) 06:32:05.17ID:YehK5uv+
JCが自宅に放火して逃亡ω
1000デフォルトの名無しさん
垢版 |
2025/11/28(金) 06:32:39.03ID:YehK5uv+
delphi互換 freePasacal Lazarus その3(GPL)
https://mevius.5ch.net/test/read.cgi/tech/1764128018/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 5817日 3時間 46分 22秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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