delphi文字列置換で勝手に改行?

このQ&Aのポイント
  • AnsiReplaceTextを使用して文字列置換している際に、勝手に改行が入ってしまいます。Tmemoに読み込ませた1行の文章を取得して置換しているのですが、改行が入る理由がわかりません。Tmemoには無改行の限界はあるのでしょうか?質問文章の内容は、delphiの文字列置換で勝手に改行が入る問題に関してです。
  • Delphiの文字列置換において、AnsiReplaceTextを使用している際に勝手に改行が入ってしまいます。例えば、特定の改行なしの文章を置換している最中に、勝手に改行が入る現象が発生します。Tmemoに読み込ませた1行の文章を取得して置換している作業において、Tmemoに無改行の限界があるのか疑問です。なぜ改行が入ってしまうのか、原因を知りたいです。
  • Delphiで文字列置換を行っている際に、AnsiReplaceTextを使用していますが、特定の改行なしの文章を置換すると、勝手に改行が入ってしまいます。具体的には、1024バイト目で一度改行が入り、次は短い20-50バイトで改行が入るというパターンが繰り返されます。Tmemoに読み込ませた1行の文章を取得している作業ですが、無改行の限界があるのか疑問です。なぜ改行が入るのか、教えていただけると助かります。
回答を見る
  • ベストアンサー

delphiにて●文字列置換で勝手に改行

AnsiReplaceTextで文字列置換しているのですが、 ある改行なしの文章を置換している最中に、 勝手に改行が入りこみます。 切れる場所も決まっていて、 まず1024バイト目で切れ、 次は短く20-50バイトあたりで切れ、 また1024バイト目、次は短く…と繰り返します。 Tmemoに読み込ませた1行を取得して、 置換して戻すという作業ですが、 Tmemoに無改行の限界なんてあるのでしょうか? ないと思うのですが、改行が入りこむ理由がわかりません。 どなたか教えていただけないでしょうか。 もしくはここをチェックして、というようなアドバイスでも いただけないでしょうか?

  • yo-ya
  • お礼率65% (145/221)

質問者が選んだベストアンサー

  • ベストアンサー
  • jmh
  • ベストアンサー率23% (71/304)
回答No.1

メモ帳って、「右端で折り返す」になってなくても、1行の桁があまりに長いと勝手に折り返しませんでしたっけ? その TMemo の表示はどうなってますか? たぶん同じだと思いますが、EM_GETLINE を送ったらどーでしょうか?  SendMessage(Memo1.Handle, EM_GETLINE, ...); Text プロパティからすべてを取り出し、行ごとの処理を施してから、Text にすべてを戻してはダメなのでしょうか? with TStringList.Create do try  Text := Memo1.Text;  // ...  Memo1.Text := Text; finally  Free; end; リッチエディットにしてみるとか。

yo-ya
質問者

お礼

回答ありがとうございました。 やはり勝手に折り返されるんですね。 ほぼ問題なくできあがっていたところに ふってわいたので、改変しないでなんとかならない ものかと悪あがきしていました(苦笑 TStringListで直したほうが早そうです。 ありがとうございました。

関連するQ&A

  • 長い文字列の置換を出来るエディタを教えてください。

    数式Texのコマンドなんですが、1000文字の文字列を1500文字の文字列に置換しようとしたところ、255バイト以上のデータはきられてしまい、正常に置換できませんでした。 秀丸、Wordのソフトウェアや複数行置換のフリーウェアを探したのですが、正常に置換できませんでした。 このように1000文字を1500文字への置換等、長い文字列を置換できるソフトウェアがあれば教えてください。

  • 文字列の置換

    文字列の置換 たとえば, if(abcd) という文字列があったときに,これを while(abcd){ に置換するにはどうすればいいでしょうか(同じような置換をしたいところが文章中にいくつもあるとします).つまり,文字列の一部をそのままにして置換するということです.いまの場合だと if( → while( はできたとしても, ) → ){ は,文章中に“)”がたくさんある場合は難しいですよね.wordなら,ワイルドカードを使って if(*) とすれば,検索はできるのですが,そのまま置換すると while(*){ となってしまい,*がそのまま残ってしまいます.どうにかできないでしょうか?

  • ファイル内の文字列を置換

    掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。

  • 秀丸エディタでの改行を含む複数行の置換について

    abc↓ 1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列 def↓ を abc↓ あ↓ def↓ に置換したい場合、検索文字列はどのように指定すればいいのでしょうか? 「1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列」は、 ee ff gg↓ の場合もあれば、 ee ff gg↓ hh iii jj↓ kk.↓ のような場合もありますが、これらすべてを全角1文字に置換したいのです。 また、この abc↓ 1行の文字列またはランダムな個数の改行を含むランダムな長さの英文文字列 def↓ は、他の文章の中に大量に埋まっていて、他の文章の体裁は崩せないため、 一括でとりあえずずべての改行を削除という方法は使えません。 お手数ですがどうぞよろしくお願い致します。

  • メモ帳またはwordで改行を置換したい。

    お尋ねします。 メモ帳、またはwordで「,」+「改行」となっている部分だけ、改行を削除したいのですが、何がいい方法はありませんか? 「置換」を使えばいいかとは思うのですが、置換の「検索する文字列」に「改行」を打ち込む方法がわかりません。 どうかよろしくお願いいたします。

  • MS-Wordで改行を検索・置換する方法

    MS-Wordで改行を検索・置換する方法をご存知の方があれば教えてください。 以前(2010年)のご回答に、 「検索と置換画面の「置換」タブ画面で [オプション] を選択し、右下にある「あいまい検索」のチェックを外します。 検索する文字列にカーソルを置いて、[特殊文字] ボタン → 段落記号(P) を選択すると、検索する文字列に 「^p」が入力されます。(直接キー入力してもOKです)」がありました。 しかし、私が使っている、Word 2010には「段落記号(P) 」がなく直接「^p」を指定してもエラーになり、代わりに改行らしい「任意指定の改行(O)」「任意指定の行区切り(L)」では、Word文書の改行マークにヒットしません。 よろしくお願いします。

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

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

  • フリーソフトYokkaGrepでの置換時の改行作業

    フリーソフトYokkaGrepでの置換時の改行作業 「改行 置換」でググると、改行を置換でなくす…という方法はでてくるのですが、 置換する時に改行をつける方法がよくわかりませんでした やりたいことは aaaa bbbb </body> という文に 検索文字列  </body> 置換後文字列 [改行]ccc[改行]</body> 最終的に aaaa bbbb ccc </body> という文章にしたいです。 YokkaGrepというフリーソフトを使っているのですが 改行の指定方法がわかりません。。。 よろしくお願いいたします

  • MacOS10.6 エクセル2008 改行コード 置換方法

    MacOS10.6 にてExcel2008を使用しています。 いま処理しようとしているデータのセル中に改行が含まれており、これらを置換にて一括消去をしたいのですが改行コードの入力方法がわかりません。 Windowsでしたら「Ctrl+J」で検索文字列の欄に入力できるようなのですがMacで行うと変な文字がでて当然ながら置換はできません。 セル中で「Control+Option+Return」にて改行を入力する事はできますが、これを上記の置換の検索文字列欄で行うと最終セルまで移動してしまうだけで置換はされません。 大量のデータで、しかも今後定期的な作業が必要となる為に途方にくれてます。 どなたか検索置換にて「検索文字列欄」に改行コードを入力する方法ご存じでしたら教えてください。 お願いいたします。

  • WordVBA 置換処理での改行文字の可否

    (実際にはExcelのVBAからWordファイルを開いての処理になるのでExcelのVBAで組んでいますが、) WordのVBAで、置換処理を作成しています。 keyword1 = "検索文字" keyword2 = "置換文字" With objSelection.Find .Text = keyword1 .Forward = True .MatchWholeWord = True .Replacement.Text = keyword2 .Execute Replace:=wdReplaceAll End With 置換処理自体は出来ています。上記処理は置換部分の抜粋です。 しかし行いたいことはタイトルにもあります通り、置換文字中に改行を含めた状態での置換処理です。 長い文字列を置換するだけなら問題ないのですが、改行を含めてしまうと改行文字が別の文字に置き換えられてしまうようです。 置換先でも改行された状態にしたいのですが、これは書き方に問題があるのでしょうか? もしくは置換処理ではなく、他の方法を取る必要があるのでしょうか? 教えてください。よろしくお願いいたします。

専門家に質問してみよう