Chr(13) が無視される。
投稿者 wii  (中学生)
投稿日時
2009/12/14 06:15:29
とりあえず2005以上らしいけど念のためバージョンを。
でもまあ、
Chr(13)のかわりにvbNewline使えばいいかと。
でもまあ、
Chr(13)のかわりにvbNewline使えばいいかと。
Private Sub btnDataSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDataSave.Click
Dim FilePath As String = "C:\Test\test.txt"
Dim Data As String = Me.txtTitle.Text & vbNewline & Me.txtData.Text & vbNewline
Dim sw As New IO.StreamWriter(FilePath, True,System.Text.Encoding.GetEncoding(932))
sw.Write(Data)
sw.Close()
MsgBox("保存しました。", MsgBoxStyle.Information, "保存完了")
End Sub
投稿者 オショウ  (社会人)
投稿日時
2009/12/14 09:01:44
改行と言うことを意味しているのであれば・・・
http://e-words.jp/w/CRLF.html
Chr(13) は、改行ではありません。
因みに、vbCrLf と言う記述もあったかと・・・
以上。
http://e-words.jp/w/CRLF.html
Chr(13) は、改行ではありません。
因みに、vbCrLf と言う記述もあったかと・・・
以上。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/12/14 23:38:47
>「改行」のコードですよね?
いわゆる改行コードの一種ですが、Windows においては、それ単体では改行を意味しません。
(具体的な修正方法は、既に wii さんが回答されていますね)
=====================
かつての「タイプライター」では、複数行のデータを印刷するときに、
水平印字位置を左端に戻す事(行頭復帰:Carriage-Return)と、
次の行まで用紙を送り出す(行送り/改行:Line-Feed)という
2 つの動作が行われていました。これが現在の改行コードに繋がっています。
CR の方は、文字コードで 0D(16進数)つまり 13 であり、
LF の方は、文字コードで 0A(16進数)つまり 10 で表されます。
Windows においては、この 2 文字を組み合わせた CR+LF を改行として扱います。
Chr(13) つまり CR 単体では改行と看做されませんので注意してください。
(ただしアプリケーションによっては、Cr や Lf 単体でも改行と看做す場合があります)
そして既に回答が付いていますが、VB/VBA/VB.NET では「vbNewLine」という文字列定数にて、
一般的な改行文字を表せるようになっています。
vbNewLine とは、Windows 環境では CR+LF を表す定数であり、Mac 環境では CR を表す定数です。
また、CR や LF や CR+LF その物を表すために、vbCrLf/vbCr/vbLf といった
定数も用意されています(オショウさんが書かれていますね)。また、VB.NET においては
これらと同じ意味を持つ、ControlChars.CrLf などの定数も存在します。
ちなみに Chr や ChrW を使う場合には、『Chr(13) & Chr(10)』という記述によって
改行を表現できます。ただし通常は、vbNewLine や vbCrLf を使った方が良いでしょう。
-------------------
蛇足ですが、Unicode には“広義”の「改行コード」が 8 種類あったりします。
http://www.unicode.org/reports/tr13/tr13-9.html
CR: Carriage Return (キャリッジリターン/復帰)
LF: Line Feed (ラインフィード/改行)
CRLF: Carriage Return + Line Feed (復帰改行)
NEL: Next Line (次行)
VT: Vertical Tabulation (垂直タブ)
FF: Form Feed (フォームフィード/改ページ)
LS: Line Separator (行区切り記号)
PS: Paragraph Separator (段落区切り記号)
いわゆる改行コードの一種ですが、Windows においては、それ単体では改行を意味しません。
(具体的な修正方法は、既に wii さんが回答されていますね)
=====================
かつての「タイプライター」では、複数行のデータを印刷するときに、
水平印字位置を左端に戻す事(行頭復帰:Carriage-Return)と、
次の行まで用紙を送り出す(行送り/改行:Line-Feed)という
2 つの動作が行われていました。これが現在の改行コードに繋がっています。
CR の方は、文字コードで 0D(16進数)つまり 13 であり、
LF の方は、文字コードで 0A(16進数)つまり 10 で表されます。
Windows においては、この 2 文字を組み合わせた CR+LF を改行として扱います。
Chr(13) つまり CR 単体では改行と看做されませんので注意してください。
(ただしアプリケーションによっては、Cr や Lf 単体でも改行と看做す場合があります)
そして既に回答が付いていますが、VB/VBA/VB.NET では「vbNewLine」という文字列定数にて、
一般的な改行文字を表せるようになっています。
vbNewLine とは、Windows 環境では CR+LF を表す定数であり、Mac 環境では CR を表す定数です。
また、CR や LF や CR+LF その物を表すために、vbCrLf/vbCr/vbLf といった
定数も用意されています(オショウさんが書かれていますね)。また、VB.NET においては
これらと同じ意味を持つ、ControlChars.CrLf などの定数も存在します。
ちなみに Chr や ChrW を使う場合には、『Chr(13) & Chr(10)』という記述によって
改行を表現できます。ただし通常は、vbNewLine や vbCrLf を使った方が良いでしょう。
-------------------
蛇足ですが、Unicode には“広義”の「改行コード」が 8 種類あったりします。
http://www.unicode.org/reports/tr13/tr13-9.html
CR: Carriage Return (キャリッジリターン/復帰)
LF: Line Feed (ラインフィード/改行)
CRLF: Carriage Return + Line Feed (復帰改行)
NEL: Next Line (次行)
VT: Vertical Tabulation (垂直タブ)
FF: Form Feed (フォームフィード/改ページ)
LS: Line Separator (行区切り記号)
PS: Paragraph Separator (段落区切り記号)
投稿者 bcltaka  (中学生)
投稿日時
2009/12/18 02:19:57
ご返答ありがとうございます。
Chr(13) をずっと「改行のコード」だと思い込んでいたのですが、間違いだったようですね。
vbNewLine を使うことにします。 vbCrLf は、後でコードを見直す時に、私だったら「このコード何だっけ?」ということになりかねないので…(笑)
ありがとうございました。
Chr(13) をずっと「改行のコード」だと思い込んでいたのですが、間違いだったようですね。
vbNewLine を使うことにします。 vbCrLf は、後でコードを見直す時に、私だったら「このコード何だっけ?」ということになりかねないので…(笑)
ありがとうございました。
投稿者 (削除されました)  ()
投稿日時
2009/12/18 04:23:05
(削除されました)
投稿者 るきお  (社会人)
投稿日時
2009/12/20 01:15:03
ばか^2=?
って、「改行」のコードですよね?
2つのテキストボックスに、文字列を打ち込み保存するプログラムです。一方は題名を、もう一方は本文を入力します。
これで、保存ボタンに、
のようにコーディングをしたのですが、保存されたファイルを開くと、「Chr(13)」の部分が無視されて、 txtTitle.Text と txtdata.Text が一続きになっていました。
一番最初にデバッグした時は、うまくいったのですが、2回目からこのような状況になってしまいました。
何か解決策はありませんでしょうか。
お願いします。