2016-05-22 4 views
0

私が必要とするlisboxには、私の12級プロジェクトの終わりにレシートを印刷することができます。
私の行の例:"cha1 Adidas Stan Smith White 1 2"(そのパッド入り)。 今私がしたいのは、cha1、Adidas stan Smith White、Microsoft Accessデータベースに追加する1,2のように分離しているのですが、どうにかして部分文字列でそれを行うことができましたが、私のコードを台無しにしてしまいました。誰か私を助けてください?リストボックスの行から値を隔離する

働いて私のコードは、次のようになります。

foreach (string item in lstpreview.Items) 
      { 
      //create the string to print on the reciept 
      string nomeproduto = item; 

      float quantidade = float.Parse(item.Substring(item.Length -5, 5)); 
      float precounitario = float.Parse(item.Substring(item.Length - 5, 5)); 
      string totalproduto = item.Substring(item.Length - 6, 6); 

      txt1.Text = Convert.ToString(quantidade); 
      txt2.Text = Convert.ToString(precounitario); 
      //MessageBox.Show(item.Substring(item.Length - 5, 5) + "PROD TOTAL: " + totalproduto); 

      //float totalprice = 0.00f; 





     } 

答えて

0

あなたはラインがパディングされていることを言うが、任意の詳細を与えることはありません。あなたが最初のフィールドは常に行の最初の4つの文字であることがわかっている場合は、string.Substringとそれを分離することができます:他のフィールドのための

string field1 = line.Substring(0, 4); 

と同様に。

P.S.あなたの投稿を編集して、誓いの言葉を削除してください。コードを解析した後

編集は、私はあなたのコメントを理解していない

を追加し、「あなたの負の値」とは何ですか?デバッガでコードを実行し、エラーの原因となった行を見つけます。正確なエラーメッセージを投稿してください。

部分文字列をfloatに変換してから文字列に戻す理由はありますか?フィールドが数値であることを検証したいと思うかもしれないが、TryParseを使用するほうがよいでしょう。

2番目のコメントは役に立ちます。行の最後の5文字はすべて数字ではない、それが問題です。

+0

私は(誓う言葉のために申し訳ありません)を編集し、私はウィッヒを使用するコードを追加しては非常にあなたのようなものですが、私は私の負の値に0を入れしようとすると、それは私にエラーメッセージを表示します。 –

+0

このラインは厳密に "ADIDAS STAN SMITH FLAT WHITE/GREEN1 1"であり、戻ってくる値は1 –

+0

です。負の値:(item.Length -5、5)あなたが言っていることは完璧な意味を持っています。事は私が文字列のために行ったshoul'dですが、私はコードを見ても、実現しませんでした。あなたが持っていた最後のコメントは、ユーレカの瞬間でした、ありがとう、私はあなたのコードに思考のラインを実装しようとします、あなたは非常に有用な、ありがとう! –

0

このコードスニペットで、各ループごとにaと一緒に実行します。

string[] caracteresnastring = item.Split(new char[] { ',' }.ToArray()); 
      string code = caracteresnastring[0]; 
      string name = caracteresnastring[1]; 
      string price = caracteresnastring[2]; 
      string quantity = caracteresnastring[3]; 
関連する問題