メモリストリームによるエラー

解決


@Enum  2005-06-04 11:14:11  No: 15374

こんばんわ。ちょくちょくこのサイトにお世話になっている者です。
早速質問なのですが、implementation領域内でTMemosyStreamの変数宣言をして、TServerSocketのOnConnectのイベントでTMemoryStream.Create;でメモリストリームを作成して、ファイルからデータを読み込んだ後に、Socket.SendStreamを使用すると「無効なポインタ操作」と言うエラーが発生します。  何故エラーが発生するのかが分かりません。誰か分かる方、ご教授お願いします。  開発環境はDelphi Version6 (Personal)です。


@Enum  2005-06-04 12:45:50  No: 15375

↑のは解決した訳じゃないんですが、違う方法で同じ処理が無事出来たので一応解決にしておきます。お騒がせしました。


たかみちえ  URL  2005-06-04 12:49:33  No: 15376

TServerSocketのOnClientConnectは、セッションごとに起こります。独立したスレッドで起こると考えるといいでしょう。なので、グローバルとして宣言したTMemoryStreamは使えません。
  OnClientConnectなどのイベントではTCustomWinSocket型オブジェクトが引数で渡されていますので、そのDataプロパティを使用するといいでしょう。Pointer型なので何でも入れられます。メモリ解放がいる場合はOnClientDisconnectでやれば大丈夫かと。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加