0

これを何時間も探してみましたが、探しているものが見つかりませんでした。私はプログラミングに非常に慣れていないので、データをうまく操作する方法がまだわかりません...

私がやろうとしていることは次のとおりです。

私が現在取り組んでいる4つのフォームがあります。それらをfrm1、frm2、frm3、frm4 と呼びます。他の 3 つのフォームで提供された情報から frm4 で完成品を作成しようとしています。これでデータを印刷する必要があります。order line = "0000 ---- --- --- --- --- --- ---".現在、必要なfirst two lines "0000 ----"方法があります。私が抱えている問題は、これらの"--- --- --- --- --- --- ---"行が別のフォーム frm3.lst3.items から入力されることであり、行を移動してリスト内の各項目から最初の 2 つの数字を切り取ると、それらを挿入することしかできません。「行」の最初の 3 つのダッシュに挿入し、それらを横切って挿入することはできません。

frm4.lst4 は次のようになります。

"0000 aaaa --- --- --- --- --- --- ---"              
"0000 bbbb --- --- --- --- --- --- ---"           
"0000 cccc --- --- --- --- --- --- ---"           
"0000 dddd --- --- --- --- --- --- ---"          
"0000 eeee --- --- --- --- --- --- ---"                        
"0000 ffff --- --- --- --- --- --- ---"              
"0000 gggg --- --- --- --- --- --- ---"                  
"0000 hhhh --- --- --- --- --- --- ---"      

frm3.lst3

1 aaaa                                                
2 dddd                                                   
3 aaaa                                                   
4 zzzz                                                
5 aaaa                                         
6 aaaa                                      
7 aaaa                                               
8 aaaa                                                
9 aaaa 

frm3 の文字を frm4 の文字と一致させ、ダッシュ付きの数字を追加して、"---"このようにする必要があります"0000 aaaa 001 003 005 006 007 008 009".

' already found strCode and that = aaaa                      
Dim possition As String                                
        For Each strCode In lstTeamResults.Items                        
            strLine = "0000 ---- --- --- --- --- --- --- ---"                      
            Mid(strLine, 5, 4) = strCode 

' instr が次に利用可能な "---" の int 位置を与えることは知っています。"---"次のオープンに適切なコードを入力するコマンドでそれを使用する方法がわかりません..

        InStr(10, strLine, "---")

        For Each item In frmRM3.lst3.Items

            possition = item
            ' this code returns the number 1, 2, 3....
            intPossition = InStr(item, " ")
            possition = Trim(Mid(possition, 1, intPossition - 1))
        Next


    Next
   lst4.items.add(strLine)

どんな助けでも大歓迎です。ありがとうございます!

4

2 に答える 2

0

これが私の解決策です。それは自己完結型だと思います。とにかく、これらの関数の代わりに Substring と IndexOf を使用する方法を学ぶ必要があります。

        Dim strLine As String = "0000 ---- --- --- --- --- --- --- ---"


        Mid(strLine, 6, 4) = strCode

        For Each item As String In ListBox2.Items

            possition = item
            ' this code returns the number 1, 2, 3....
            intPossition = InStr(item, " ")
            Dim lineNumber As String
            lineNumber = Mid(item, 1, intPossition - 1)
            Dim code As String
            code = Mid(item, intPossition + 1, 4)
            If strCode = code Then
                'Position of next available dashes
                Dim availablePosition As Integer
                availablePosition = InStr(1, strLine, "---")
                If availablePosition <> 0 Then
                    'Pad number with zeros
                    Dim numberPaddedWithZeros As String
                    numberPaddedWithZeros = "000" & lineNumber
                    numberPaddedWithZeros = Mid(numberPaddedWithZeros, Len(numberPaddedWithZeros) - 3 + 1, 3)

                    'Replace available positions
                    Mid(strLine, availablePosition, 3) = numberPaddedWithZeros
                End If
            End If

        Next
        ListBox1.Items.Add(strLine)
于 2013-05-08T04:03:18.367 に答える
0

Daniel Victoria さん、ご協力ありがとうございます。あなたがくれたコードを自分のプログラムに合うように変更しました。実際の問題を投稿すると長くなりすぎて、十分に明確になっていない可能性があると思いました。これは私がこれまでに持っているものです:

' このコードは、0000 の後の 4 つのダッシュに続く 4 文字を追加して、次のコードを使用し、それを使用して "--- --- --- --- --- --- - ――」

Private Sub btnCalculateResults_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculateResults.Click
    Dim intPossition As Integer
    Dim strLine As String = ""
    Dim strSchoolCode As String


    strLine = "0000 ---- --- --- --- --- ---  --- ---"
    strSchoolCode = ""
    lstTeamResults.Items.Clear()


    For Each team As String In frmRM1000.lstTeam.Items
        strSchoolCode = team
        intPossition = InStr(1, strSchoolCode, "|")
        strSchoolCode = Trim(Mid(strSchoolCode, 1, intPossition - 1))

        strLine = "0000  ---- --- --- --- --- --- --- ---"
        Mid(strLine, 6, 4) = strSchoolCode

        lstTeamResults.Items.Add(strLine)
    Next

「これは、Daniel が修正を手伝ってくれたコードです。このコードをループするだけで、残りのフィールドにデータが入力されます。データを入力する必要がある行は合計 9 行あります。

"0000 AUBH --- --- --- --- --- --- ---"
"0000 GSH- --- --- --- --- --- --- --- "
"0000 NBHS --- --- --- --- --- --- ---"
"0000 OHXS --- --- --- --- --- --- --- " 'この 1 つの DIPLICATE AND NEEDS TO GO
"0000 OHXS 001 002 003 004 005 006 007" 'THIS ONE POPULATED WELL
"0000 QRHS --- --- --- --- --- --- ---"
「0000 WBCH --- --- --- --- --- --- ---」
「0000 WDHS --- --- --- --- --- --- ---」
"0000 WHS- --- --- --- --- --- --- ---"
"0000 WHS --- --- --- --- --- --- --- "

'これは、上記の出力のコードです。

Dim strLine1 As String = "0000 ---- --- --- --- --- --- --- ---" Dim position As String Dim lineNumber As String

    Mid(strLine, 6, 4) = strSchoolCode
    'For Each item In
    '    lineNumber = item

    'Next

    For Each runner As String In frmRM3000.lstSyncTimeBibs.Items 'lstTeamResults.Item

        possition = runner
        ' this code returns the runner possiton number 1, 2, 3....
        intPossition = InStr(runner, " ")


        lineNumber = Mid(runner, 1, intPossition - 1)
        Dim code As String
        code = Mid(strLine, 6, 4)
        If strSchoolCode = code Then
            'Position of next available dashes
            Dim availablePosition As Integer
            availablePosition = InStr(1, strLine, "---")
            If availablePosition <> 0 Then
                'Pad number with zeros
                Dim numberPaddedWithZeros As String
                numberPaddedWithZeros = "00" & lineNumber
                numberPaddedWithZeros = Mid(numberPaddedWithZeros, Len(numberPaddedWithZeros) - 3 + 1, 3)

                'Replace available positions
                Mid(strLine, availablePosition, 3) = numberPaddedWithZeros
            End If
        End If

    Next
    lstTeamResults.Items.Add(strLine)

これにより、「--- --- --- --- --- --- ---」という行にコードが追加されますが、コードの 1 行にのみ追加され、5 行目に追加されます。すべての行でそれを行う必要があります。ご協力ありがとうございました :)

于 2013-05-10T01:11:47.800 に答える