[ad_1]
考えられることはすべて試しましたが、なぜこのコードは csv ファイルに新しい行を追加しないのですか?
ps 私は c# が初めてで、まだすべてを知っているわけではありません。
完全なコードの一部
<pre> // Search for the given postcode, housenumber, addition, description in the CSV file string fileName = @"NewPostcodes.csv"; List<string> lines = File.ReadAllLines(fileName, Encoding.UTF8).ToList(); bool found = false; foreach (string line in lines) { string[] fields = line.Split(';'); // if both of them are found do this if (fields[0] == Postcode && fields[1] == Housenumber) { if (string.IsNullOrEmpty(Addition)) { found = true; MessageBox.Show("Adres gevonden zonder toevoeging: " + Postcode + " " + Housenumber); break; } else if (fields[2] == Addition) { found = true; MessageBox.Show("Adres gevonden met toevoeging: " + Postcode + " " + Housenumber + Addition); break; } else { MessageBox.Show("Adres niet gevonden: " + Postcode + " " + Housenumber); break; } } else if (fields[0] != Postcode) { MessageBox.Show("postcode is niet in de csv. Hij word nu toegevoegd"); string modified = Postcode.Insert(4, " "); string newRow = modified + ";" + Housenumber + ";"; MessageBox.Show(newRow); lines.Add(newRow); //File.WriteAllLines(@"NewPostcodes.csv", lines.ToArray()); break; } else if (fields[1] != Housenumber) { MessageBox.Show("Huisnummer is geen match in de csv"); break; } }
必要に応じて完全なコード
<pre>using System; using System.CodeDom; using System.Collections.Generic; using System.IO; using System.Linq; using System.Management.Instrumentation; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApp_PostcodeChecker { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { // csv parser public MainWindow() { //deze code kan een nieuw csv file aan maken ( als die al niet bestaat) en die bewerken InitializeComponent(); //hij haalt de postcodes csv op string path = @"Postcodes.csv"; // Calling the ReadAllLines() function put information in array zipCodes string[] zipCodes = File.ReadAllLines(path); //List<zipCodeData> zipCodeList = new List<zipCodeData>(); List<string> ZipCodes2 = new List<string>(); // make a list named ZipCodes2 foreach (string s in zipCodes) // for each string in zipCodes do{} { //foreach list string[] split = s.Split(';'); // check if file has ; and remove all those string modified = split[0].Insert(4, " "); // add extra white spage in firt split (postcode) ////zipcode data in array krijgt hij van rij 42 //zipCodeData data = new zipCodeData(); //data.PostalCode = modified; //data.HouseNumer = split[1]; //data.HouseNumberExtension = split[2]; //data.StreetName = split[3]; //data.City = split[4]; //zipCodeList.Add(data); string newRow = modified + ";" + split[1] + ";" + split[2] + ";" + split[3] + ";" + split[4]; ZipCodes2.Add(newRow); // add a new row to the list } File.WriteAllLines(@"NewPostcodes.csv", ZipCodes2.ToArray()); // make a new file for the postocdees //List<string> postalCodesList = new List<string>(); //List<string> streetNamesList = new List<string>(); //foreach (zipCodeData row in zipCodeList) //{ // postalCodesList.Add(row.PostalCode); // streetNamesList.Add(row.StreetName); //} } //nodig om te zoeken in het csv bestand public class zipCodeData { public string PostalCode { get; set; } public string HouseNumer { get; set; } public string HouseNumberExtension { get; set; } public string StreetName { get; set; } public string City { get; set; } } private void Button_Click(object sender, RoutedEventArgs e) { string Postcode = txtPostcode.Text; string Housenumber = txtHousenumber.Text; string Addition = txtToevoeging.Text; string Discription = txtBeschrijving.Text; // Kijken of de velden zijn ingevuld if (string.IsNullOrEmpty(Postcode)) { MessageBox.Show("Je hebt Postcode niet ingevuld"); return; // return omdat de postcode niet is ingevuld } if (string.IsNullOrEmpty(Housenumber)) { MessageBox.Show("Je hebt huisnummer niet ingevuld"); return; // return omdat de huisnummer niet is ingevuld } // als postcode niet bestaat voeg hem toe aan het lijstje probeer dat ook eens // Search for the given postcode, housenumber, addition, description in the CSV file string fileName = @"NewPostcodes.csv"; List<string> lines = File.ReadAllLines(fileName, Encoding.UTF8).ToList(); bool found = false; foreach (string line in lines) { string[] fields = line.Split(';'); // if both of them are found do this if (fields[0] == Postcode && fields[1] == Housenumber) { if (string.IsNullOrEmpty(Addition)) { found = true; MessageBox.Show("Adres gevonden zonder toevoeging: " + Postcode + " " + Housenumber); break; } else if (fields[2] == Addition) { found = true; MessageBox.Show("Adres gevonden met toevoeging: " + Postcode + " " + Housenumber + Addition); break; } else { MessageBox.Show("Adres niet gevonden: " + Postcode + " " + Housenumber); break; } } else if (fields[0] != Postcode) { MessageBox.Show("postcode is niet in de csv. Hij word nu toegevoegd"); string modified = Postcode.Insert(4, " "); string newRow = modified + ";" + Housenumber + ";"; MessageBox.Show(newRow); lines.Add(newRow); //File.WriteAllLines(@"NewPostcodes.csv", lines.ToArray()); break; } else if (fields[1] != Housenumber) { MessageBox.Show("Huisnummer is geen match in de csv"); break; } } } } }
私が試したこと:
だから私は試しました
lines.add(newRows);
fields.add(newRows);
File.WriteAllLines(@”NewPostcodes.csv”, lines.ToArray());
調べてみましたが、csvヘルパーを取得しました。 それは素晴らしいことですが、それを始める前に、これがどのように機能するかを学びたいと思います
解決策 1
行を追加していないことをどのように知っていますか?
最初に確認することは簡単です。データをどこに保存しているか。
EXE フォルダーの場合、デバッグ時には機能する可能性がありますが、ウイルスの活動を減らすために「Program Files」フォルダーが書き込み保護されているため、リリース時に失敗する可能性があります。 ここを参照してください: データはどこに保存すればよいですか?[^] いくつかのより良いアイデアのために。
2 番目に行うことは、何が起こっているのかを正確に把握することです。何行読み取られるか、何を含むか、実行中にコードで何を行うかなどです。
私たちはあなたに代わってそれを行うことはできません.あなたが処理しているデータのシステムにアクセスすることはできません. だから、それはあなた次第になるでしょう。
幸いなことに、何が起こっているのかを調べるのに役立つツール、デバッガーを利用できます。 使い方がわからない場合は、Google で「Visual Studio デバッガー」を検索すると、必要な情報が得られます。
関数の最初の行にブレークポイントを置き、デバッガーでコードを実行します。 次に、コードとデータを見て、何が起こるべきかを手動で解決します。 次に、各行を 1 ステップ実行して、予想どおりの動作を確認します。 そうでない場合は、問題が発生したときであり、後戻りして (またはもう一度実行して詳しく調べて) 原因を突き止めることができます。
申し訳ありませんが、私たちはあなたにそれを行うことはできません – 新しい (そして非常に便利な) スキルを学ぶ時が来ました: デバッグ!
[ad_2]
コメント