utf-8 -> win-1251
собственно и была какое то время самой часто ошибкой.utf-8
. да и визуал студия вроде как уже много лет корректно работает с веб проектами.far manager
очень хорошо определяет и показывает реальную кодировку. mc
вроде тоже.S7 — 1500поддерживается dotnet, не сбивайте с толку ни себя, ни возможных авторов..
Например, имеется значение real на первом адресе сотого дата блокани на одной платформе не используется
real
для адресов, только беззнаковые целочисленные нужной разрядностиvar lst = File.ReadAllLines("bla..bla..bla");
foreach (var s in lst) {var toks = (s).Split(':'); ...;};
StreamReader
в общем то и не нужен (!! важно, при больших объёмах файлов, чтение целиком, может критично расходовать память, в этом случае снова см ответ Василий Банников)namespace list_and_parse
{
internal static class Program
{
internal static void Main(string[] args)
{
var lst = File.ReadAllLines("FileName.conf");
foreach (var s in lst)
{
var toks = s.Split(":");
string check() => (toks[0] == "Volume", toks[0] == "IsMarkers", toks[0] == "Mouse") switch
{
(true, _, _) => $"Volume={float.Parse(toks[1])}",
(_, true, _) => $"IsMarkers={bool.Parse(toks[1])}",
(_, _, true) => $"Mouse={int.Parse(toks[1])}",
_ => ".. ups (("
};
check().print();
};
}
internal static void print(this string s) => Console.WriteLine(s);
}
}
namespace list_and_parse
{
internal static class Program
{
internal static void Main(string[] args)
{
var Volume = 0.0;
var IsMarkers = false;
var Mouse = 0;
var lst = File.ReadAllLines("FileName.conf");
foreach (var s in lst)
{
var toks = s.Split(":");
string check() => (toks[0] == "Volume", toks[0] == "IsMarkers", toks[0] == "Mouse") switch
{
(true, _, _) => $"Volume=>{double.TryParse(toks[1], out Volume)}",
(_, true, _) => $"IsMarkers=>{bool.TryParse(toks[1], out IsMarkers)}",
(_, _, true) => $"Mouse=>{int.TryParse(toks[1], out Mouse)}",
_ => ".. ups (("
};
check().print();
};
"".print();
$"Volume={Volume}".print();
$"IsMarkers={IsMarkers}".print();
$"Mouse={Mouse}".print();
}
internal static void print(this string s) => Console.WriteLine(s);
}
}
1. При подключении проект никак не может найти файл google-services.json, не смотря на то, куда я его только не пихала. Он как находился в корневой папке проекта, как и в папке Android.для начала посмотрите свойства проекта и целевую папку компиляции (могут быть две - debug и release, на этапе разработки по дефолту debug). попробуйте положить туда.
копировать в выходной каталогесть слабое место. особенно в случае веб версии (если проект таковую допускает) - файл, возможно, содержит параметры доступа к базе?..
если шаблон проекта имеет свои конфигурационные паки изначально, значит просто надо скопировать в прототип этих папок в проекте (если их более одной - разобраться с назначением и выбрать подходящую), и ручками добавить файл в проект.. успехов!
validNumber = int.TryParse(readResult, out numValue);
после чего и думать ;)namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
string? readResult;
int numValue;
Console.Write("Enter an integer value between 5 and 10: ");
do
{
readResult = Console.ReadLine();
bool validNumber = false;
validNumber = int.TryParse(readResult, out numValue);
#if DEBUG
Console.WriteLine($"debug 'numValue='{numValue}");
Console.WriteLine($"debug 'validNumber='{validNumber}");
#endif
if (validNumber == true)
{
if (numValue < 5 || numValue > 10)
Console.Write($"You entered {numValue}. Please enter a number between 5 and 10: ");
}
else Console.Write("Sorry, you entered an invalid number, please try again: ");
} while (numValue < 5 || numValue > 10);
Console.WriteLine($"Your input value ({numValue}) has been accepted.");
}
}
}
namespace ConsoleApp4
{
internal static class Program
{
static void Main(string[] args)
{
var numValue = 0;
var inValidValue = false;
var validNumber = false;
"Enter an integer value between 5 and 10:".print();
do
{
validNumber = int.TryParse(Console.ReadLine(), out numValue);
inValidValue = numValue < 5 || numValue > 10;
#if DEBUG
$".. debug 'numValue={numValue}'".print();
$".. debug 'validNumber={validNumber}'".print();
$".. debug 'validValue={inValidValue}'".print();
#endif
if (validNumber)
{
if (inValidValue)
$"You entered {numValue}. Please enter a number between 5 and 10: ".print();
}
else "Sorry, you entered an invalid number, please try again: ".print();
} while (inValidValue);
$"Your input value ({numValue}) has been accepted.".print();
}
static void print(this string s) => Console.WriteLine(s);
}
}
namespace fanc_minimal
{
internal static class Program
{
static void Main(string[] args)
{
string checkValue(bool goodValue, bool correctNumber, int Value) => (goodValue, correctNumber) switch
{
(true, true) => $"Your input value ({Value}) has been accepted.",
(false, true) => $"You entered {Value}. Please enter a number between 5 and 10:",
_ => "Sorry, you entered an invalid number, please try again:"
};
Console.WriteLine("Enter an integer value between 5 and 10:");
for (var validValue = false; !validValue; )
{
var validNumber = int.TryParse(Console.ReadLine(), out var numValue);
Console.WriteLine(checkValue(validValue = numValue >= 5 && numValue <= 10, validNumber, numValue));
}
}
}
}
но это пример оголтелого минимализма строк ))namespace func_next
{
internal static class Program
{
static void Main(string[] args)
{
const int min = 5;
const int max = 10;
var value = min - 1;
var stop = false;
bool success() => value >= min && value <= max;
string check() => (int.TryParse(Console.ReadLine(), out value), stop = success()) switch
{
(true, true) => $"Your input value ({value}) has been accepted. Press Enter to Exit )))",
(true, false) => $"You entered {value}. Please enter a number between 5 and 10:",
_ => "Sorry, you entered an invalid number, please try again:"
};
for ("Enter an integer value between 5 and 10:".print(); !stop; check().print()) ;
}
static void print(this string s) => Console.WriteLine(s);
}
}
.. и снова.. лишь пример перфекционизма.. но код содержит взаимозависмости, не допустимые в большом проекте ))if
.. ну и показать мощь сишныхfor
)))namespace func_next
{
internal static class Program
{
static void Main(string[] args)
{
const string welcome = "Enter an integer value between 5 and 10:";
const int min = 5;
const int max = 10;
var value = min - 1;
var stop = false;
bool success() => value >= min && value <= max;
bool valid() => int.TryParse(Console.ReadLine(), out value);
string check() => (valid(), stop = success()) switch
{
(true, true) => $"Your input value ({value}) has been accepted.",
(true, false) => $"You entered {value}. Please enter a number between 5 and 10:",
_ => "Sorry, you entered an invalid number, please try again:"
};
for (welcome.print(); !stop; check().print()) ;
}
static void print(this string s) => Console.WriteLine(s);
}
}
namespace func_next
{
internal static class Program
{
static void print(this string s) => Console.WriteLine(s);
static void Main(string[] args)
{
const int min = 5;
const int max = 10;
var value = min - 1;
string welcome() => $"Enter an integer value between {min} and {max}:";
string accepted() => $"Your input value ({value}) has been accepted.";
string repeat() => $"You entered {value}. Please enter a number between {min} and {max}:";
const string ups = "Sorry, you entered an invalid number, please try again:";
bool valid() => int.TryParse(Console.ReadLine(), out value);
bool success() => value >= min && value <= max;
var stop = false;
string check() => (valid(), stop = success()) switch
{
(true, true) => accepted(),
(true, false) => repeat(),
_ => ups
};
for (welcome().print(); !stop; check().print()) ;
}
}
}
шарм ситуации в том, что тушка программы сводится к строкеfor (welcome.print(); !stop; check().print()) ;
а все остальное - лишь определение "понятий"... обожаю функциональный стиль ))namespace func_next
{
internal static class Program
{
static void print(this string s) => Console.WriteLine(s);
static void Main(string[] args)
{
var min = 5;
var max = 10;
var value = min - 1;
string welcome() => $"Enter an integer value between {min} and {max}:";
string accepted() => $"Your input value ({value}) has been accepted.";
string repeat() => $"You entered {value}. Please enter a number between {min} and {max}:";
const string ups = "Sorry, you entered an invalid number, please try again:";
var valid = false;
bool get() => valid = int.TryParse(Console.ReadLine(), out value);
bool success() => value >= min && value <= max && valid;
var stop = false;
string check() => (get(), stop = success()) switch
{
(true, true) => accepted(),
(true, false) => repeat(),
_ => ups
};
for (welcome().print(); !stop; check().print()) ;
}
}
}
.. тут уже полшага до модификации min/max на ходу ;)) using System.Diagnostics;
if (Process.GetProcessesByName("CalculatorApp").Length > 0)
Console.WriteLine("калькулятор запущен");
else
Console.WriteLine("калькулятор не запущен");
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ff.links
{
static partial class Program
{
static IEnumerable<string> scan(this IEnumerable<string> ds)
{
var files = new List<string>();
foreach (var d in ds)
try { files.add2my(d.here()).add2my(d.subdirs()); }
catch (Exception e) { Console.WriteLine($"{pfx}Scan \"{d}\" - {e.Message}"); }
return files;
}
static List<string> add2my(this List<string> l, IEnumerable<string> r) { l.AddRange(r); return l; }
static IEnumerable<string> here(this string d) => Directory.EnumerateFiles(d).Where(f => f.isTarget());
static IEnumerable<string> subdirs(this string d) => Directory.EnumerateDirectories(d).Where(p => !p.isIgnored()).scan();
static void print(this string s, string pfx = "", string sfx = "") => Console.WriteLine(pfx + s + sfx);
static void print(this IEnumerable<string> sa, string pfx = "", string sfx = "") => sa.ToList().ForEach(s => s.print(pfx, sfx));
static bool isTarget(this string p) => targets.Contains(p.Split(backSlashDelimiter).Last());
static string[] targets => new string[] { ffBinary, ffProfileSign, fflConfig };
const string fflConfig = "ff.links.cfg.json";
const string ffBinary = "firefox.exe";
const string ffProfileSign = "compatibility.ini";
const string skipd = ".default";
static bool isIgnored(this string p) => ignored.Contains(p.Split(backSlashDelimiter, StringSplitOptions.RemoveEmptyEntries).Last());
static string[] ignored => new string[]
{
"TorBrowser", "Microsoft", "MICROSOFT", "WindowsApps", "Windows", "WINDOWS",
"ProgramData", "All Users", "Documents and Settings", //"Users",
"My Documents", "My Pictures", "My Music", "My Videos", "Application Data",
"Start Menu", "Local Settings", "Cookies", "NetHood", "PrintHood", "Recent", "SendTo", "Templates",
"CrashReports", "WindowsImageBackup", "System Volume Information", "$Recycle.Bin", "$RECYCLE.BIN",
"root", "Default User"
};
static char[] backSlashDelimiter = new char[] { backSlash };
const char backSlash = '\\';
static IEnumerable<string> fromRoot() => Environment.GetLogicalDrives().Where(p => !p.isIgnored());
static IEnumerable<string> fromSysDrive() { yield return @"c:\"; }
static IEnumerable<string> fromTypical()
{
var path = $@"{Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)}\Mozilla Firefox";
yield return path;
int p;
if ((p=path.IndexOf(" (x86)")) >= 0)
yield return path = path.Remove(p, 6);
path = $@"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\Mozilla\Firefox\Profiles";
yield return path;
}
}
}
using System;
using System.Diagnostics;
using System.Linq;
namespace ff.links
{
static partial class Program
{
static void Main(string[] args)
{
var sw = new Stopwatch();
sw.Start();
"let's begin...".print();
var finds = fromTypical().scan();
"found targets is ".print(pfx, finds.Count().ToString());
//finds.print();
var bro = finds.Where(b => b.Contains(ffBinary));
"found browsers is ".print(pfx, bro.Count().ToString());
bro.print(pfx);
var cfg = finds.Where(b => b.Contains(fflConfig));
"found configs is ".print(pfx, cfg.Count().ToString());
cfg.print(pfx);
var profiles = finds.Where(b => (b.Contains(ffProfileSign) && !b.Contains(skipd)));
"found profiles is ".print(pfx, profiles.Count().ToString());
//profiles.print();
profiles.buildLinks(bro.First());
//profiles.prefsApplay();
//links2start();
sw.Stop();
var ts = sw.Elapsed;
$"RunTime {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}".print();
//#if DEBUG
// "press any key to continue...".print();
// Console.ReadKey();
//#endif
}
const string pfx = " ::> ";
}
}
var finds = @"C:\".scan();