готовая 6 лба

This commit is contained in:
platoff aeeee 2023-12-06 11:26:16 +04:00
parent b47e67cf6f
commit ca8a0d1118
2 changed files with 60 additions and 97 deletions

View File

@ -41,7 +41,7 @@ namespace Tank.Generics
/// <summary>
/// Получение объектов коллекции
/// </summary>
public IEnumerable<T?> GetCars => _collection.GetTanks();
public IEnumerable<T?> GetTanks => _collection.GetTanks();
/// <summary>
/// Конструктор
/// </summary>

View File

@ -114,24 +114,53 @@ namespace Tank.Generics
StringBuilder data = new();
foreach (KeyValuePair<string, TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>> record in _tankStorages)
{
StringBuilder records = new();
StringBuilder Records = new();
foreach (DrawingArmoredCar? elem in record.Value.GetCars)
foreach (DrawingArmoredCar? elem in record.Value.GetTanks)
{
records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
}
data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}");
data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}");
}
if (data.Length == 0)
{
return false;
}
using FileStream fs = new(filename, FileMode.Create);
byte[] info = new
UTF8Encoding(true).GetBytes($"TankStorage{Environment.NewLine}{data}");
fs.Write(info, 0, info.Length);
using (StreamWriter writer = new StreamWriter(filename))
{
writer.WriteLine("TankStorage");
writer.Write(data.ToString());
return true;
}
}
public bool SaveCollection(string filename)
{
if (File.Exists(filename))
{
File.Delete(filename);
}
StringBuilder data = new();
foreach (KeyValuePair<string, TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>> record in _tankStorages)
{
StringBuilder Records = new();
foreach (DrawingArmoredCar? elem in record.Value.GetTanks)
{
Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
}
data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}");
}
if (data.Length == 0)
{
return false;
}
using (StreamWriter writer = new StreamWriter(filename))
{
writer.WriteLine("TankStorage");
writer.Write(data.ToString());
return true;
}
}
/// <summary>
/// Загрузка информации по автомобилям в хранилище из файла
/// </summary>
@ -143,101 +172,35 @@ namespace Tank.Generics
{
return false;
}
string bufferTextFromFile = "";
using (FileStream fs = new(filename, FileMode.Open))
{
byte[] b = new byte[fs.Length];
UTF8Encoding temp = new(true);
while (fs.Read(b, 0, b.Length) > 0)
{
bufferTextFromFile += temp.GetString(b);
}
}
var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' },
StringSplitOptions.RemoveEmptyEntries);
if (strs == null || strs.Length == 0)
using (StreamReader reader = new StreamReader(filename))
{
string strCheck = reader.ReadLine();
if (!strCheck.StartsWith("TankStorage"))
return false;
}
if (!strs[0].StartsWith("TankStorage"))
{
//если нет такой записи, то это не те данные
return false;
}
_tankStorages.Clear();
foreach (string data in strs)
string Str;
while ((Str = reader.ReadLine()) != null)
{
string[] record = data.Split(_separatorForKeyValue,
StringSplitOptions.RemoveEmptyEntries);
if (record.Length != 2)
if (Str == null)
break;
string name = Str.Split('|')[0];
TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar> collection = new(_pictureWidth, _pictureHeight);
foreach (string data in Str.Split('|')[1].Split(';'))
{
continue;
}
TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar>
collection = new(_pictureWidth, _pictureHeight);
string[] set = record[1].Split(_separatorRecords,
StringSplitOptions.RemoveEmptyEntries);
foreach (string elem in set)
DrawingArmoredCar? ArmoredCar = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
if (ArmoredCar != null)
{
DrawingArmoredCar? car = elem?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
if (car != null)
{
if (!(collection + car))
if (!(collection + ArmoredCar))
{
return false;
}
}
}
_tankStorages.Add(record[0], collection);
_tankStorages.Add(name, collection);
}
return true;
}
//if (!File.Exists(filename))
//{
// return false;
//}
//using (StreamReader reader = new StreamReader(filename))
//{
// string checker = reader.ReadLine();
// if (checker == null)
// return false;
// if (!checker.StartsWith("TankStorage"))
// return false;
// _tankStorages.Clear();
// string strs;
// bool firstinit = true;
// while ((strs = reader.ReadLine()) != null)
// {
// if (strs == null && firstinit)
// return false;
// if (strs == null)
// break;
// firstinit = false;
// string name = strs.Split('|')[0];
// TanksGenericCollection<DrawingArmoredCar, DrawingObjectArmoredCar> collection = new(_pictureWidth, _pictureHeight);
// foreach (string data in strs.Split('|')[1].Split(';'))
// {
// DrawingArmoredCar? vehicle = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight);
// if (vehicle != null)
// {
// if (!(collection + vehicle))
// {
// return false;
// }
// }
// }
// _tankStorages.Add(name, collection);
// }
// return true;
//}
}
}
}