1

このスクリプトは、見つけたいくつかのリソースから作成しました。動作していますが、いくつかのファイルに問題があります。私はF#が初めてなので、FileHelpersExceptionで行を変更して、問題のある正確な行を取得するにはどうすればよいですか? ありがとう

// Learn more about F# at http://fsharp.net
// See the 'F# Tutorial' project for more help.
open FileHelpers  
open System

[<DelimitedRecord(",")>]
type CsvRecord =
    class
        val field1 : string
        val field2 : string
        val field3 : int
        new () = {
        field1 = ""
        field2 = ""
        field3 = 0
        }
    end

[<EntryPoint>]
let main argv = 
    use file = System.IO.File.CreateText("result.txt")
    let engine = new FileHelperEngine<CsvRecord>()
    engine.Encoding <- new Text.UTF8Encoding()
    let res = 
       try
          engine.ReadFile("test.csv")
       with
          | :? FileHelpersException -> Array.empty<CsvRecord>
    for record in res do
         fprintfn file "%s" record.field1
    printf "DONE!"
    let s = Console.ReadLine()
    0 // return an integer exit code
4

2 に答える 2

2

この質問は、F# ではなく、使用している FileHelpers ライブラリに関するものであるため、ドキュメントを参照すると役立つ場合があります。この場合、メンバーの詳細を示すメンバーが含まれているのConvertException代わりに を確認できます。FileHelpersException

try
    engine.ReadFile("test.csv")
with
    | :? ConvertException as ex ->
        printfn "ERROR: Line %d Col %d" ex.LineNumber ex.ColumnNumber
        Array.empty<CsvRecord>

私はGustavoに同意しますが、CsvTypeProviderを使用する方が簡単かもしれません.

于 2013-08-06T14:51:30.357 に答える