• 締切済み

Delphi5のTSeverSocket

Delphi5でのTServerSocketについて質問があります。 ClientからReceiveTextでデータを受信した際に、 データ送信時にはなかった改行がデータの間に挿入される ことがあります。(1541文字目が多い) 実行ファイルを立ち上げなおすと改行なしのデータが 受信されるようになります。 送信側は実行ファイル立ち上げなおし前も立ち上げなおし後も 同じデータを送ってきているということなのですが。 なぜ改行がはいってしまうのか、改行が入らないように するにはどのようにしたらよいのか教えていただきたいと 思います。 よろしくお願いいたします。 ちなみに、環境はWindows2000です。

みんなの回答

noname#18951
noname#18951
回答No.2

 標準でついてくるTServerSocket, TClientSocketに問題が多いことは 結構有名です。それでもなんとかやってみるならReceiveTextを使わず ReceiveBuf(だったと思う)を使う、他のコンポーネントを使う、あるいは winsockユニットのAPIを直接操作するのがいいでしょう。  下のリンクはDelphian Worldです。きっとお望みのコンポーネントがあ るでしょう。

参考URL:
http://home1.infonia.ne.jp/~delphian/delphi/
  • LemonT
  • ベストアンサー率49% (39/79)
回答No.1

こんばんは。 回答ではないですが、Delphi5の動作環境としてWindows2000はサポート外のような気がします。 個人で使用する分には問題ないと思いますが。。。

関連するQ&A

  • DelphiのTMemoのテキスト末尾の改行削除

    Delphiで付箋ソフトを作ろうとしています。 それで、Memoコンポーネント(TMemo)に入力されたテキストの末尾に改行があったら、それを削除したいのですが、改行があるかどうかを検知することすらできません。 Memo1.Lines.Strings[Memo1.Lines.Count-1] が最後の行の文字列の内容になるはずなのですが、末尾に改行があってもなくても、これ↑には同じ文字列(末尾に改行なし)が入っています。でも、表示上は異なっているんです。 どなたか、わかる方いらっしゃいましたら教えてください。

  • メール文書の強制改行について

    outlookなどのメールクライアントでは任意の文字数を超えた行では強制的に改行が挿入されます。そのように受信したメールの返信や転送などを行う際に引用符をもとの文章の文頭に挿入させると、挿入された文字数分の行末の文字が強制改行され、ぶちぶちに切れた文章になってしまいます。これを解決するためには随時一行の文字数を変更するか、または引用符の挿入をやめるしかありませんか?私個人はoutlook2007を使用しています。 (ここからは独り言です。さらっと流してください。) このような問題が起こるなら強制改行という概念をメールクライアントから無くし、受信者はウィンドウの幅などを変えることによって文章の読みやすさをコントロールする方式に統一すればいいのにという気がします。全角30文字前後が一行の文字数としてはもっとも読みやすいという解説が多いですが、受信者側が29文字以下の強制改行を設定していたら結局ぶちぶちの文章になり、一行を短く設定してもきりがありません。outlookは強制改行させない設定も見あたりませんし。

  • MacとWindows メール互換性

    MacとWindowsが半々の会社です。 メーラーで質問です。 Mac,Windowsともにサンダーバードをつかっていましたが Mac側の送信でWindows側受信だと文字化けや、改行、スペースなど意図しない点があり困っています。 Mac、Windowsで互換性の強いメーラーなどありますでしょうか? BeckyがよさそうですがMac版を聞いたことがなく。。。 Outlookが無難なんでしょうか? こういう相互環境でどうしているか教えてください。

    • ベストアンサー
    • Mac
  • delphi:文章の暗号化

    簡単な文章を暗号化することを考えているのですが、どうすればいいのか基本的なことがよくわかりません。 とりあえず考えているのは文章を文字コードにして公開鍵RSAでやりたいと思っています。 そのやり方に欠点などありますか?複合できなければしゃれにならないので。 ただ問題は文字コードに正確に変換する方法がわからないのです。改行などの問題もあるらしいですし。 もしdelphiにもっと簡単に暗号化できる関数などが用意されていたとしても、他のプログラムでも暗号化できるようにしたいので、そのために公開鍵を使いたいので、安易に使えません。また、暗号化する側に公開鍵と「暗号化するアルゴリズムを公開」しても複合することはできませんよね。。とっても不安です。

  • delphiでcgi

    delphiとIISとオラクルを使って検索エンジンを作りました。 一人で使う分には問題なく動くのですが、LANを通して複数の人間 が使うと、あとから操作した人が500サーバーエラーになってしまいます。 私なりの予想ですが、ひとつの処理を行っている間にほかの処理が入って くるとエラーになるのかなぁと考えていますが、いまだ解決の糸口は見つかって いません。 どういうことが考えられるでしょうか?。 仕様 データベース:oracle8(iがついたかもしれません) webサーバー:IIS(バージョンは度忘れしました。2000で標準に入っている) 使用言語:delphi6エンタープライズ 使用コンポーネント:TQuery TDataBase ブラウザ:IE5.5 OS:Windows2000 pro CGI実行形式で開発しています。

  • Delphi:実行形式ファイルのサイズ

    Delphiで、フォームにコントロールを貼り付けただけのプログラムをコンパイルし、 実行形式ファイルを作成しましたら、約500KBになりました。 あまりにも大きいので、小さくならないものかとネット上を探しましたら、 URL : http://f29.aaa.livedoor.jp/~morg/wiki/index.php?Delphi >環境設定 >ファイルサイズを小さくするには > >Delphiの実行ファイルは通常かなりサイズが大きいですが、 >小さくすることができます。 >「ライブラリの参照」から、 動作させる環境で必要のないものだけを除きます。 >(除いた後の動作確認を忘れずに) >そして、プロジェクトオプションの、「実行時のパッケージで再構築」の、 >部分に、必要なものだけを記述して再構築します。 というものがありました。 実際には、「プロジェクト」-「オプション」-タブ「パッケージ」の 「実行時パッケージを使って構築」にチェックを入れました。 結果、約20KBになりました。 これは、いったいどういうこのなのでしょうか? (実行時にはランタイムライブラリ等が必要になる?) ヘルプを見てみましたが、よく分かりませんでした。 また、URLのページで説明にある 1:『「ライブラリの参照」から、 動作させる環境で必要のないものだけを除きます。』 2:『「実行時のパッケージで再構築」の、部分に、必要なものだけを記述して…』 とありますが、具体的にどのように指定するのでしょうか? (1はパス指定のようだが、2はdcpファイルを指定?)

  • 添付ファイルが消失してしまう?

    添付ファイルについてご教授願いたく。 OUTLOOKからNotesへ添付ファイル(Excelファイル)付の メールを送信すると、受信側で添付ファイルが無い状態で 受信することがランダムに発生します。 OUTLOOKにて[送信済みアイテム]を参照すると確かに 送信したアイテムが存在し、添付ファイルも確認できました。 ファイルの破損も見られませんでした。 受信側はお客様の環境の為、詳細を確認することが困難な状況であり、 また、Notesに関する知識も乏しいため、原因が送信側か受信側か、 クライアントかサーバなのか、障害の振り分けに四苦八苦しております。 過去ログを参照したのですが、それらしき書き込みも見当たりませんでした。 どなたか対処方法をご存知の方がおりましたら、ご教授願えませんでしょうか。 [送信側] OS :Windows2000 メーラー :OUTLOOK2002 メール形式 :HTML [受信側] OS :Windows2000 メーラー :Domino R5.0 メール形式 :HTML

  • HTTPサーバプログラム

    C言語でHTTPサーバを作ろうとしています。 大方動くのですが、Java Applet(Jarファイル)を埋め込んだWebページをクライアント側のブラウザに表示させようとすると、エラー(ClassNotFoundError)が発生してしまいます。 ※GIFファイルなどの表示はうまく動いています。 パケットキャプチャソフトなどを活用して色々調べてみると、サーバ側からクライアント側へJarデータを送信する処理が上手く動いていないようです。 今のHTTPサーバの制約で、データ送信関数で一度に送信できるサイズが32KB程度になっています。 Jarファイルがこの最大サイズ(32KB)以下であれば問題なくクライアント側でJava Appletが起動するのですが、このサイズを超えるJarファイルの場合に先のエラーが発生してしまいます。 ※例えばJarファイルサイズが50KBの場合は、データ送信関数を2度呼び出す処理になります(1回目は32KB送信、2回目は残りの18KBを送信します)。 パケットキャプチャソフトでデータの流れを確認すると、50KBのJarファイル・データはクライアント側へちゃんと送信されているように見えるのですが、Jarファイル・データがクライアント側へ送信された後、(恐らく、クライアント側でJarファイルが正しく受信されなかったと認識されているため)クライアント側はClassファイルをサーバ側へリクエストしに行っています。 ※<applet archive="test.jar" code="test.class">としている場合は、"test.jar"ファイルのデータ送信後、クライアント側から"test.class"をサーバ側へリクエストしに行っています。 50KB程度のGIFファイルなどは、分割送信処理を用いてちゃんとクライアント側のブラウザで表示できているのですが…Jarファイルはなぜ上手くいかないのか分かりません。 Jarファイル・データ送信時には何か特別な制約があるのでしょうか? どなたか詳しい方がおられましたらお教えいただきたく存じます。

  • DelphiでWebを使ったデータのやり取り

    私は、ソフトウェア開発歴20年を超える技術者ですが、Webを利用するプログラミング経験がありません。 ずっと、パッケージ関連の開発をしていたので、閉じた世界での開発は慣れていますが、外部とのやり取り経験がないので、どなたか教えてください。 開発言語はDelphi7です。 内容は、クライアントとホストのデータのやり取りです。 クライアントから入力されたログインIDとパスワードをホストへ送信して、OKなら順次やり取りを行なうものですが、最初のやり取りの方法がわかりません。 仕様書では、ホスト側の http://000.000.00.000/login.php(仮) に対して、ログインIDと、ログインID+パスワードをMD5暗号化したものを送って欲しいとありますが、実際のコーディングはどうなるのでしょうか? login_id=XXXXXX md5=MD5(login_id=XXXXXX&login_Pass=XXXX) また、ホストからの受け取るデータも、MD5暗号化されたものと、されないものが送られるので、暗号化されていないものを端末側でMD5暗号化して、暗号化されて送られたものと同じなら、正常に受信されたと判断して次の処理を行なうことになっています。 result=n(n=1:OK,0:NG) md5=MD5(n) 質問の書き方も的を得ていないかもしれませんが、実際のコーディング例で教えていただければ幸いです。 よろしくお願いします。

  • メールの改行について

    アウトルックを使用しメールを送信する場合、変なところで改行されないように「送信時に自動的に文字列を折り返す」設定方法は分かりました。受信する側が変なところで改行されないのは、こちら側の文字数を設定だけでなく、受信する側の設定も関係しますか?教えて頂けますか?