掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CommXでメモリエラーを解決するには? (ID:44202)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
takeさん、返信ありがとうございます。 イベント内というのは、OnReceiveの事ですよね? 始めにやってみたのですが、まったく受信できずに現在にいたりました。 もう一度見直したところ、OnReceiveイベントで受信ができるようになりました。 しかし、相変わらず処理が終わり、画面を閉じた時に不規則に 「モジュール「XXX.exe」でアドレスXXXXでアドレスXXXXに対する読み込み違反が起きました。」 というエラーが出てしまいます。 絶対という規則性がなく、処理をし続けて4回目だったり、10回目だったり。。。 以前の「無効なポインタ操作です」の方は今のところ出ていません。 処理の流れは下記のとおりです。 処理メッセージ用の画面にCommXを置きました。 ポートのOpenをこの画面表示前に確認し、大丈夫な場合のみ 処理メッセージ用の画面を表示し、FormShowで送信伝文を作成しています。 procedure CommXReceive(Sender: TObject; ReceiveSize: Integer); var Buf : PChar; receive : String; i : Integer; begin try Buf := AllocMem(ReceiveSize); CommX.ReceiveBlock(Buf,ReceiveSize); except Close; Exit; end; for i := 0 to ReceiveSize - 1 do begin if Buf[i] = 終了コード($04) then begin 結果設定 略 Close; Exit; end else receive := receive + Buf[i]; end; FreeMem(Buf); end; procedure FormClose(Sender: TObject; var Action: TCloseAction); begin CommX.PortClose; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.