こんばんわ。ちょくちょくこのサイトにお世話になっている者です。
早速質問なのですが、implementation領域内でTMemosyStreamの変数宣言をして、TServerSocketのOnConnectのイベントでTMemoryStream.Create;でメモリストリームを作成して、ファイルからデータを読み込んだ後に、Socket.SendStreamを使用すると「無効なポインタ操作」と言うエラーが発生します。 何故エラーが発生するのかが分かりません。誰か分かる方、ご教授お願いします。 開発環境はDelphi Version6 (Personal)です。
↑のは解決した訳じゃないんですが、違う方法で同じ処理が無事出来たので一応解決にしておきます。お騒がせしました。
TServerSocketのOnClientConnectは、セッションごとに起こります。独立したスレッドで起こると考えるといいでしょう。なので、グローバルとして宣言したTMemoryStreamは使えません。
OnClientConnectなどのイベントではTCustomWinSocket型オブジェクトが引数で渡されていますので、そのDataプロパティを使用するといいでしょう。Pointer型なので何でも入れられます。メモリ解放がいる場合はOnClientDisconnectでやれば大丈夫かと。
ツイート | ![]() |