非常に大きなテキストファイルがあるVB.netアプリケーションで作業しています。これは、基本的に、エラーコードの大きなデータベースであり、後にコードをクリアする方法の説明です。私がしたいのは、ボタンをクリックするだけで、特定のコードのテキストファイルを検索し、そのエラーコードのすべてのテキストをテキストボックスに表示します。私はいろいろな方法で試しましたが、正しく動作させることができません。テキストファイル全体を調べて、それぞれのフォルトコードの先頭に"|"
を追加して、コードの開始位置を指定できるようにしました。ここでテキストファイルを検索し、テキストの一部をテキストボックスに表示
はカップルの故障コードの例です:
| ACAL-000失敗MOTN原因を検出するために実行:AccuCal2モーションは nmまで失敗しました。 AccuCal2モーションを開始することはできません。対処法:AccuCal2を実行する前にすべての エラーをクリアしてください。 | ACAL-001ロボットが準備ができていません。 原因:ロボットが準備ができていません。エラー状態であるため、システムは モーションを発行できません。対処:すべての障害をクリアしてから、操作を再試行してください。
私は"ACAL-000"
を検索する場合、私はそれがACAL-001
前ACAL-000
前|
からバーにすべてを示したいと思います。
私は書いたコードを投稿しますが、投稿するコードが実際にはわからないほど多くの異なるバージョンを試しました。
ご提供いただけるご支援をいただければ幸いです。
EDIT
は、ここで推奨されているもののいくつかの編集と実施後の私の現在のコードです。私がこの点にどのように到達したかについての詳細は下記のコメントをご覧ください。簡単なことに、私は現在、テストの検索に「| ACAL-000」を使用しています。これが完了すると、いくつかのドロップダウンリストのコードをまとめた(既に動作している)コードがいくつかあります。ここで
Function ReadEmbeddedTextFileResource(embeddedResourceName As String) As String
Using stream As Stream = Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(embeddedResourceName)
If stream Is Nothing Then
Throw New FileNotFoundException("The resource '" & embeddedResourceName & "' was not found.")
End If
Using reader As StreamReader = New StreamReader(stream, True)
Return reader.ReadToEnd()
End Using
End Using
End Function
Function FindTextBetweenBars(bodyOfTextToSearch As String, textToLookFor As String) As String
Dim i As Integer = bodyOfTextToSearch.IndexOf(textToLookFor)
If i < 0 Then Return Nothing
Dim j As Integer = bodyOfTextToSearch.LastIndexOf("|", i)
If j < 0 Then j = 0
Dim k As Integer = bodyOfTextToSearch.IndexOf("|", i + Len(textToLookFor))
If k < 0 Then k = Len(bodyOfTextToSearch)
Return bodyOfTextToSearch.Substring(j + 1, k - j - 1)
End Function
Private Sub btnShowTroubleshooting_Click(sender As Object, e As EventArgs) Handles btnShowTroubleshooting.Click
Dim allErrorText As String = ReadEmbeddedTextFileResource(My.Resources.FanucCodes)
Dim errorMessage As String = FindTextBetweenBars(allErrorText, "|ACAL-000")
If errorMessage Is Nothing Then errorMessage = "Error code Not found!"
RichTextBoxFanucFaults.Text = errorMessage
End Sub
ご返信いただきありがとうございます。私はすべてのコードを入力したが、それは間違いなく私をもっと近づけたが、「エラーコードが見つかりません」と表示されます。毎回。これは、私が適切に検索しているテキストファイルを開いていないためです。テキストファイルを埋め込みリソースとして追加し、プロジェクトが正しいファイルを指していることを確認しました。 allErrorTextの代わりにファイル名 "filename.txt"を追加して、プロジェクトの一部であるためオープンして検索することを期待していましたが、動作しませんでした。テキストファイルを開いて、それを検索するにはどうすればいいですか? – Kurtis
申し訳ありませんが、私はあなたの質問を誤解しました。上記のコードでは、ファイルから文字列変数にテキストを読み込んだことを前提としています。ファイルから読み込む方法を示すために数分で編集します。 –
あなたの助けてくれてありがとうBrian! – Kurtis