エラー処理 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るしぇ  ()
投稿日時
2008/8/6 19:37:00
。。。というか改行の判断って書いてあったので改行コードの判断かと
思ったけど、ソース見ると
[TextBoxBase.Lines プロパティ]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.lines(VS.80).aspx
>解説
>テキストに改行文字が表示されると、改行文字の後ろに続くテキストが配列内の新しい要素に追加
これを使ってる時点で、改行コードで分割してるね。
じゃあ、エラーチェック関数の引数 value には何が入ってきてるか?
出力して確認してみてください。
多分、長さ0の文字列でしょう。
思ったけど、ソース見ると
[TextBoxBase.Lines プロパティ]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.lines(VS.80).aspx
>解説
>テキストに改行文字が表示されると、改行文字の後ろに続くテキストが配列内の新しい要素に追加
これを使ってる時点で、改行コードで分割してるね。
じゃあ、エラーチェック関数の引数 value には何が入ってきてるか?
出力して確認してみてください。
多分、長さ0の文字列でしょう。
投稿者 るしぇ  ()
投稿日時
2008/8/6 19:06:00
Chr の反対の機能を持つ関数は Asc です。
これで1文字1文字変換すれば、表示されない文字を含めて、
どんな文字が存在するか確認できます。
これで1文字1文字変換すれば、表示されない文字を含めて、
どんな文字が存在するか確認できます。
投稿者 るしぇ  ()
投稿日時
2008/8/6 18:55:00
発想が逆。
目の前にコードがあって、動いていて、(期待通りでないものの)結果が出ているん
ですよね?それは目の前に答えがあるということです。それを確認しないので
あれば話になりません。
デバッグしてください。
1行1行実行して、変数にどんな値が入っているか全て確認してください。
単純な If 文の判定なのですから、変数にどんな値が入っているか確認する
だけではないですか。
>のようにしてみましたが、"/で区切られていません。"とのエラー表示が出てしまいます。
その条件が満たされているから、そのように処理されるのです。
目の前の答えを確認してください。
デバッグ依頼はスルーです。
目の前にコードがあって、動いていて、(期待通りでないものの)結果が出ているん
ですよね?それは目の前に答えがあるということです。それを確認しないので
あれば話になりません。
デバッグしてください。
1行1行実行して、変数にどんな値が入っているか全て確認してください。
単純な If 文の判定なのですから、変数にどんな値が入っているか確認する
だけではないですか。
>のようにしてみましたが、"/で区切られていません。"とのエラー表示が出てしまいます。
その条件が満たされているから、そのように処理されるのです。
目の前の答えを確認してください。
デバッグ依頼はスルーです。
投稿者 rs000008  ()
投稿日時
2008/8/6 11:13:00
うたひこさん
7番目と9番のコードが全体のコードです。
このコードの
''' <summary>戻り値はエラーメッセージ。エラーがないとき戻り値は空文字</summary>
Private Function ValidRow(ByVal value As String) As String
の下に
Const crlf As String = Chr(13) & Chr(10)
If value.StartsWith(crlf) = True Then
Return "空白行があります。削除してください。"
Flg = True
End If
を入れています。
長いコードなので、もう一度全体のコードを載せる
のはやめておきます。
すみませんm(__)m
7番目と9番のコードが全体のコードです。
このコードの
''' <summary>戻り値はエラーメッセージ。エラーがないとき戻り値は空文字</summary>
Private Function ValidRow(ByVal value As String) As String
の下に
Const crlf As String = Chr(13) & Chr(10)
If value.StartsWith(crlf) = True Then
Return "空白行があります。削除してください。"
Flg = True
End If
を入れています。
長いコードなので、もう一度全体のコードを載せる
のはやめておきます。
すみませんm(__)m
投稿者 うたひこ  ()
投稿日時
2008/8/6 09:07:00
だとすると、
>>13
とは関係のない部分でエラーがでているのではないでしょうか?
全体の見通しが立たないので、少なくとも僕には何もわかりません。
いったん整理して、現状のソースコードを全文掲載してみてはいかがでしょうか?
(Returnの後に何か書いても実行されないんじゃなかったかしら?)
>>13
とは関係のない部分でエラーがでているのではないでしょうか?
全体の見通しが立たないので、少なくとも僕には何もわかりません。
いったん整理して、現状のソースコードを全文掲載してみてはいかがでしょうか?
(Returnの後に何か書いても実行されないんじゃなかったかしら?)
投稿者 rs000008  ()
投稿日時
2008/8/6 07:44:00
うたひこさん
アドバイスありがとうございます。
下記のようにしてみましたが、同じでした。
Const crlf As String = Chr(13) & Chr(10)
If value.StartsWith(crlf) = True Then
Return "空白行があります。削除してください。"
Flg = True
End If
Private Function ValidRow(ByVal value As String) As String
のすぐ下にこのコードを入れています。
アドバイスありがとうございます。
下記のようにしてみましたが、同じでした。
Const crlf As String = Chr(13) & Chr(10)
If value.StartsWith(crlf) = True Then
Return "空白行があります。削除してください。"
Flg = True
End If
Private Function ValidRow(ByVal value As String) As String
のすぐ下にこのコードを入れています。
投稿者 うたひこ  ()
投稿日時
2008/8/6 06:24:00
>>13
こんにちは。
途中参加で話の流れが読めていませんが、
気になった点があったので失礼します。
>Dim crlf As String
>crlf = Chr(13) & Chr(10)
ここは定数の方がいいと思います。
const crlf As String = Chr(13) & Chr(10)
.netFrameWorkで
定数vbcrlfとしても定義されています。
>If value.StartsWith("crlf") = True Then
>Return "空白行があります。削除してください。"
>End If
このコードでは変数crlfでなく
"crlf"という文字列を指定していることになります。
value.StartsWith("crlf")ではなく
value.StartsWith(crlf)じゃないでしょうか?
こんにちは。
途中参加で話の流れが読めていませんが、
気になった点があったので失礼します。
>Dim crlf As String
>crlf = Chr(13) & Chr(10)
ここは定数の方がいいと思います。
const crlf As String = Chr(13) & Chr(10)
.netFrameWorkで
定数vbcrlfとしても定義されています。
>If value.StartsWith("crlf") = True Then
>Return "空白行があります。削除してください。"
>End If
このコードでは変数crlfでなく
"crlf"という文字列を指定していることになります。
value.StartsWith("crlf")ではなく
value.StartsWith(crlf)じゃないでしょうか?
投稿者 rs000008  ()
投稿日時
2008/8/6 05:52:00
るしぇさん
アドバイスありがとうございます。
もし文字列の最初の部分に改行があれば、
エラー表示するようにしようと思います。
Dim crlf As String
crlf = Chr(13) & Chr(10)
If value.StartsWith("crlf") = True Then
Return "空白行があります。削除してください。"
End If
のようにしてみましたが、"/で区切られていません。"とのエラー表示が出てしまいます。
どのようにすればいいでしょうか?
すみませんが、教えていただけたらと思います。
アドバイスありがとうございます。
もし文字列の最初の部分に改行があれば、
エラー表示するようにしようと思います。
Dim crlf As String
crlf = Chr(13) & Chr(10)
If value.StartsWith("crlf") = True Then
Return "空白行があります。削除してください。"
End If
のようにしてみましたが、"/で区切られていません。"とのエラー表示が出てしまいます。
どのようにすればいいでしょうか?
すみませんが、教えていただけたらと思います。
投稿者 るしぇ  ()
投稿日時
2008/8/5 23:38:00
余談ですが、一見空白の行にスペース(半角と全角の2種類ある)が
入力されていることも多く、一般にはその対策も行います。
String.Replace でも出来ますが、String.Trim メソッドも使えます。
入力されていることも多く、一般にはその対策も行います。
String.Replace でも出来ますが、String.Trim メソッドも使えます。
投稿者 rs000008  ()
投稿日時
2008/8/1 08:24:00
全て表示
いつもアドバイスありがとうございます。
改行ではなく、空白行の有無で処理する事にして
みました。
'空白行かどうか
If value = String.Empty Then
Return "空白行があります。削除してください。"
'/で区切られているか
ElseIf value.Contains("/") = False Then
Return "/で区切られていません。"
Flg = True
End If
みなさん、ありがとうございました!!