private string Lecture(string Chemin, bool Encryption) { try { FileStream fs = new FileStream(Chemin, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); string Texte = System.Text.Encoding.ASCII.GetString(buffer); if (Encryption) { Texte = DatabaseEncryption.Decrypter(Texte, m_MotDePasse); } fs.Dispose(); return(Texte); } catch (Exception e) { MessageBox.Show(e.Data.ToString()); return(""); } }
private bool InventaireUpdate(string Item, out int Quantite, out decimal Prix) { Quantite = -1; Prix = 0.0M; string StrQuantiteInv; string StrPrixInv; int QuantiteInv; #if Encryption string StrInventaire = Lecture("Inventaire.txt", false); //Lis l'inventaire au complet et ne la decrypte pas #else string StrInventaire = Lecture("Inventaire.txt"); //Lis l'inventaire au complet et ne la decrypte pas #endif string[] Inventaire = StrInventaire.Split('\n'); int i = Array.FindIndex(Inventaire, element => element.StartsWith(Item, StringComparison.Ordinal)); //position (index) de l'item en inventaire (evite de devoir decrypter chaque lignes de l'inventaire pour trouver le bon item) if (i > 0 && i <= Int32.Parse(Inventaire[0])) //Verifie que l'item est enregistre en inventaire { //Ecriture(DatabaseEncryption.Encryter((Int32.Parse(DatabaseEncryption.Decrypter(Lecture("inventaire.txt", false).Split('\n')[Int32.Parse(Lecture("inventaire.txt", false).Split('\n')[Array.FindIndex(Lecture("inventaire.txt", false).Split('\n'), element => element.StartsWith(Item, StringComparison.Ordinal))].Split('-').Last())], m_MotDePasse)) - 1).ToString(), m_MotDePasse), "Inventaire.txt", FileMode.Append, false); #if Encryption StrQuantiteInv = DatabaseEncryption.Decrypter(Inventaire[Int32.Parse(Inventaire[i].Split('-').Last())], m_MotDePasse); if (StrQuantiteInv == null) { MessageBox.Show("Mauvais mot de passe"); //Message d'erreur generique return(false); } StrPrixInv = DatabaseEncryption.Decrypter(Inventaire[Int32.Parse(Inventaire[i].Split('-').Last()) + Int32.Parse(Inventaire[0])], m_MotDePasse); #else StrQuantiteInv = Inventaire[Int32.Parse(Inventaire[i].Split('-').Last())]; StrPrixInv = Inventaire[Int32.Parse(Inventaire[i].Split('-').Last()) + Int32.Parse(Inventaire[0])]; #endif if (!Int32.TryParse(StrQuantiteInv, out QuantiteInv)) { MessageBox.Show("Erreur lors de la recuperation de la quantite en inventaire"); //Message d'erreur generique return(false); } if (!Decimal.TryParse(StrPrixInv, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out Prix)) { MessageBox.Show("Erreur lors de la recuperation du prix en inventaire"); //Message d'erreur generique return(false); } } else { MessageBox.Show("Item introuvable dans l'inventaire"); //Message d'erreur generique return(false); } QuantiteInv--; if (QuantiteInv < 0) { MessageBox.Show("Inventaire insuffisant"); return(false); } Quantite = QuantiteInv; #if Encryption Inventaire[Int32.Parse(Inventaire[i].Split('-').Last())] = DatabaseEncryption.Encryter(QuantiteInv.ToString(), m_MotDePasse); #else Inventaire[Int32.Parse(Inventaire[i].Split('-').Last())] = QuantiteInv.ToString(); #endif StrInventaire = String.Join("\n", Inventaire); #if Encryption Ecriture(StrInventaire, "Inventaire.txt", FileMode.Create, false); #else Ecriture(StrInventaire, "Inventaire.txt", FileMode.Create); #endif return(true); }