tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル文字列で扱っている筈なのに
記事No2023
投稿日: 2005/08/25(Thu) 17:05
投稿者浜のジョーダン
[OSのVer]:Windows XP    [VBのVer]:VB.NET
いつも、参考にさせて頂いております。
 以下のようにすると<>で囲んだ部分が、「Doubleへのキャストが有効ではありません」とい

エラーになります。
文字列として扱っているつもりなんですが、なんでDoubleで扱われてしまうんでしょうか?

      Dim pfl As String
       FileOpen(1, "c:\layF0001.txt", OpenMode.Input)
        FileOpen(2, "c:\sumF0001.txt", OpenMode.Output)
        Do Until EOF(1)
            pfl = LineInput(1)
            If sw = "on" Then
                calfl = Mid(pfl, 1, 33).PadRight(249, "0"c)
                d1 = CStr(CInt(Mid(calfl, 34, 6)) + CInt(Mid(pfl, 34, 6))).PadLeft(6, "
;0"c)
                d2 = CStr(CInt(Mid(calfl, 40, 6)) + CInt(Mid(pfl, 40, 6))).PadLeft(6, "
;0"c)
                d3 = CStr(CInt(Mid(calfl, 46, 6)) + CInt(Mid(pfl, 46, 6))).PadLeft(6, "
;0"c)
                <wfl = Mid(pfl, 1, 33)> + d1 + d2 + d3
            End If

[ツリー表示へ]
タイトルRe: 文字列で扱っている筈なのに
記事No2024
投稿日: 2005/08/25(Thu) 17:18
投稿者花ちゃん

>                 <wfl = Mid(pfl, 1, 33)> + d1 + d2 + d3

この wfl は、どこでどのような型で宣言していますか?

[ツリー表示へ]
タイトルRe^2: 文字列で扱っている筈なのに
記事No2028
投稿日: 2005/08/26(Fri) 08:06
投稿者浜のジョーダン
[OSのVer]:Windows    [VBのVer]:VB.NET
 早速のご返信ありがとうございます。  
>
> >                 <wfl = Mid(pfl, 1, 33)> + d1 + d2 + d3
>
> この wfl は、どこでどのような型で宣言していますか?

Dim pn, wfl As String

にて宣言しました。

[ツリー表示へ]
タイトルRe^3: 文字列で扱っている筈なのに
記事No2029
投稿日: 2005/08/26(Fri) 09:12
投稿者花ちゃん
> > この wfl は、どこでどのような型で宣言していますか?
>
>  Dim pn, wfl As String
>
> にて宣言しました。

どこで?

一度下記のように直前で宣言して試して見て下さい。
Dim wfl As String
Debug.WriteLine(TypeName(wfl))
Debug.WriteLine(TypeName(d1))
wfl = Mid(pfl, 1, 33) & d1 & d2 & d3

[ツリー表示へ]
タイトルRe^4: 文字列で扱っている筈なのに
記事No2030
投稿日: 2005/08/26(Fri) 09:29
投稿者じゃんぬねっと
参照先http://jeanne.wankuma.com/
> 一度下記のように直前で宣言して試して見て下さい。
> Dim wfl As String
> wfl = Mid(pfl, 1, 33) & d1 & d2 & d3

名前からして、d1, d2, d3 は Double な気がします。
wfl は関係なくって、

 Mid(pfl, 1, 33) ・・・ String
 その後に続く d1 ・・・ Double

でキャストミスしてるような...

[ツリー表示へ]
タイトルRe^4: 文字列で扱っている筈なのに
記事No2031
投稿日: 2005/08/26(Fri) 09:37
投稿者浜のジョーダン
[OSのVer]:Windows    [VBのVer]:VB.NET 
ありがとう御座います。
出来ました、宣言の位置は、FileOpenの前でやっていました。
位置を直前にして、ご指摘のようにやったらエラーは出ませんでした。
 
> Dim wfl As String
> wfl = Mid(pfl, 1, 33) & d1 & d2 & d3

 ちなみに、
wfl=Mid(pfl,1,33) + d1 + d2 + d3
にするとエラーになりました。
”+”は使わない方が良さそうです。

 どうも、有難う御座いました。

[ツリー表示へ]