C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 関数に処理を与えたのに戻ってくるのがNothingになります


(過去ログ 122 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■73020 / inTopicNo.1)  関数に処理を与えたのに戻ってくるのがNothingになります
  
□投稿者/ ホープ (1回)-(2014/08/11(Mon) 23:08:25)

分類:[.NET 全般] 

 関数を使っているのですが、戻ってくるものがNothingになってしまいます。
どうすれば連携するプロシージャで変換された名前が出てくるようになりますでしょうか。
開発環境はVS2005です。VBです。アドバイスお願いします。




Private Function namechanger(ByVal prename As String) As Object

        Dim name1 As Object
        If name1 = "" Then
            name1 = "a"
        Else : name1 = Trim(name1)
        End If

        Dim name_changer(700) As String '名前を変換する配列
        Dim t2 As Double
        Dim iFileNo2 As Long
        Dim changed_name() As Object
        Dim ccc As String
        Dim ddd As Object
        iFileNo2 = FreeFile()
        FileOpen(iFileNo2, "基礎データ\名前変換.res", OpenMode.Input) '名前変換ファイルを開く
        For t2 = 0 To 700
            If EOF(iFileNo2) Then Exit For '最後まで読み込むとループを抜ける
            name_changer(t2) = LineInput(iFileNo2) '一行づつ読み込んで配列に収める
        Next t2
        FileClose(iFileNo2) 'ファイルを閉じる
        changed_name = Filter(name_changer, prename, True) 'ファイルの中から意図する名前を探し出す
        Dim i As Long
        i = UBound(changed_name) 'iは探し出されたファイルの最大数
        If i >= 0 Then '意図するデータが存在すれば右3文字を抜き出す
            ccc = Microsoft.VisualBasic.Right(changed_name(i), 3)
        ElseIf i = -1 Then '意図するデータがなければ返す値はaとする
            ccc = "a"
        End If
        ddd = Trim(ccc) '意図するデータから余分なスペースを剥ぎ取る

        Stop
      
    End Function

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click




        Dim aaa As String
        With Clipboard.GetDataObject 'クリップボードからデータを取得
            If .GetDataPresent(DataFormats.Text) Then
                aaa = .GetData(DataFormats.Text)
            End If
        End With

        Dim fileno = FreeFile()
        FileOpen(fileno, "基礎データ\データ1.res", OpenMode.Output) 
        Write(fileno, aaa)
        FileClose(fileno)

        FileOpen(fileno, "基礎データ\データ1.res", OpenMode.Input)
        Dim race_now(100) As String
        Dim t2 As Long
        For t2 = 0 To 100
            If EOF(fileno) Then Exit For 'データの最後まで読み込む
            race_now(t2) = LineInput(fileno) '一行づつ処理
        Next t2


        
        Dim time1 As Object
        Dim time2 As Object
        Dim time3 As Object
        Dim time4 As Object
        Dim time5 As Object
        Dim time6 As Object
        Dim time7 As Object
        Dim time8 As Object

        time1 = race_now(5)
        time2 = race_now(12)
        time3 = race_now(19)
        time4 = race_now(26)
        time5 = race_now(33)
        time6 = race_now(40)
        time7 = race_now(47)
        time8 = race_now(54)


        Dim changedname1 As Object
        Dim changedname2 As Object
        Dim changedname3 As Object
        Dim changedname4 As Object
        Dim changedname5 As Object
        Dim changedname6 As Object
        Dim changedname7 As Object
        Dim changedname8 As Object

        changedname1 = namechanger(race_now(1))
        changedname2 = namechanger(race_now(8))
        changedname3 = namechanger(race_now(15))
        changedname4 = namechanger(race_now(22))
        changedname5 = namechanger(race_now(29))
        changedname6 = namechanger(race_now(36))
        changedname7 = namechanger(race_now(43))
        changedname8 = namechanger(race_now(50)) ←ここで戻ってくる値がNothingになってしまいます。

引用返信 編集キー/
■73021 / inTopicNo.2)  Re[1]: 関数に処理を与えたのに戻ってくるのがNothingになります
□投稿者/ Azulean (332回)-(2014/08/11(Mon) 23:24:32)
No73020 (ホープ さん) に返信
> 関数を使っているのですが、戻ってくるものがNothingになってしまいます。
> どうすれば連携するプロシージャで変換された名前が出てくるようになりますでしょうか。
> 開発環境はVS2005です。VBです。アドバイスお願いします。

関数が何も返していないからでは?
VB.NET において、関数から値を返すためには Return キーワードを使うか、関数名 = 値 みたいな一文が必要です。
http://msdn.microsoft.com/ja-jp/library/dd314348.aspx
引用返信 編集キー/
■73023 / inTopicNo.3)  Re[2]: 関数に処理を与えたのに戻ってくるのがNothingになります
□投稿者/ ホープ (3回)-(2014/08/12(Tue) 00:21:58)
No73021 (Azulean さん) に返信
> ■No73020 (ホープ さん) に返信
>> 関数を使っているのですが、戻ってくるものがNothingになってしまいます。
>>どうすれば連携するプロシージャで変換された名前が出てくるようになりますでしょうか。
>>開発環境はVS2005です。VBです。アドバイスお願いします。
>
> 関数が何も返していないからでは?
> VB.NET において、関数から値を返すためには Return キーワードを使うか、関数名 = 値 みたいな一文が必要です。
> http://msdn.microsoft.com/ja-jp/library/dd314348.aspx

アドバイスありがとうございました。久々にプログラミングを行っていたもので初歩的な物を忘れていました。
関数の最後のdddをnamechangerにすることで解決できました。ありがとうございます!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -