|
■No84788 (魔界の仮面弁士 さん) に返信
回答ありがとうございます。返信が遅れてしまい申し訳ありません。
> たとえば、読み込む元データが「文字列」ではなく、「Shift_JIS なファイル」等であるなら、 > Byte 配列のまま読み出しておき、それを渡すようにすれば(あるいは Stream を渡しても良い)、 > GetBytes 変換が不要となり、GetString だけで処理できるので、高速化するかも知れません。 > (データ内容によっては、むしろ低速化するかもしれませんが)
読み込む元データは文字列になります。 >>一気に読み込んでまとめて処理ということはせず、一行ずつ処理を行いたいです。 > 一気に読み込んで、とありますが、strLine にはどのぐらいの量の文字列が渡されるのでしょうか。 > また、一行ずつ渡したいなら、文字通り行単位で区切って渡せば良いと思いますが、 > 行単位で試してみていないのは、何か技術的な問題があるのでしょうか。
行単位で処理は行っていますがなにぶん遅いので、行単位な処理を高速で行いたいのです。分かりにくくてすみません。 コードが長かったのでだいぶ端折っていますが下記のような処理を行っています。
'判別番号を取得 strRec = MidB(LineText, 1, 2)
'日付を取得 strDate = MidB(LineText, 8, 8)
'判別番号01は名前情報 If strRec = "01" Then
'判別番号99は最後のデータ ElseIf strRec = "99" Then
'それ以外の番号は商品データ Else
For iCnt = 1 To 10
'商品番号を取得 strKomWo = MidB(LineText, 21 + (iCnt - 1) * 23, 5)
'入力データを取得 strKekW = MidB(LineText, 28 + (iCnt - 1) * 23, 8)
'コメント1を取得 strCmt1W = MidB(LineText, 38 + (iCnt - 1) * 23, 3)
'コメント2を取得 strCmt2W = MidB(LineText, 41 + (iCnt - 1) * 23, 3)
PrintLine(FileNo3, strDate & "," & strKomWo & "," & strKekW & "," & strCmt1W & "," & strCmt2W)
Next
データの前に判別番号が書かれており、01で商品名、99でその商品の最後のデータであることを示しています。それ以外の02,03などの番号はその商品の詳細データであることを示しています。
|