using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Eugen.ESystem { public static class FixedLineLength { #region Version und Copyright // Version und Copyright static string dllName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen static string dllVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); static string copyright = GenerateCopyright(); static string icon = Application.StartupPath + "\\Info.bmp"; //Assembly Datum und Zeit static DateTime value = AssemblyDateTime(); static string date = value.ToShortDateString(); static string time = value.ToLongTimeString(); private static DateTime AssemblyDateTime() { var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision)); //Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original) return buildDateTime; } private static string CurrentYear() { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } private static string StartYear() { string startYear = ""; if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © ")) { startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", ""); while (startYear.StartsWith(" ")) { startYear = startYear.Remove(0, 1); } startYear = startYear.Remove(startYear.IndexOf(" ")); return startYear; } else { DateTime dtn = DateTime.Now; return dtn.Year.ToString(); } } private static string GenerateCopyright() { string startYear = StartYear(); string currentYear = CurrentYear(); if (startYear == currentYear) { return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; } else { return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear)); } } #endregion #region DLL-Info /// /// Contains the name of the dll file /// public static string DllName { set; get; } /// /// Contains the version of the dll file /// public static string DllVersion { set; get; } /// /// Contains the copyright notice /// public static string Copyright { set; get; } static private void SetDllInfo() { //Name, Version und Copyright setzen DllName = dllName; DllVersion = dllVersion; Copyright = copyright; } #endregion static FixedLineLength() { SetDllInfo(); } /// /// Formats a string with a fixed line length. /// /// String to be formatted. /// Maximum line length /// public static string Format(string text, int lineLenght) { int pos = 0; int spacePos = 0; string character = ""; string temp = ""; string result = ""; while (text.Length > 0) { if (text.Length <= lineLenght) { result = String.Concat(result, text); text = ""; } else { while (pos <= lineLenght) { character = text.Remove(0, pos).Remove(1); //Bei einem Zeilenumbruch oder Wagenrücklauf eine neu Zeile beginnen if (character == "\n" || character == "\r") { spacePos = text.IndexOf("\n") + 1; break; } if (character == " " || character == "\\") { spacePos = pos + 1; } pos++; } if (spacePos - 1 > 0) { temp = text.Remove(spacePos); if (temp.EndsWith(" ")) { temp = temp.Remove(spacePos - 1); } } if (temp.EndsWith("\n") || temp.EndsWith("\r")) { while (temp.EndsWith("\n") || temp.EndsWith("\r")) { temp = temp.Remove(temp.Length - 1);// Ein schon enthaltenes '\n' oder '\r' am Ende des temporären Strings muss entfernt werden } } text = text.Remove(0, spacePos); result = String.Concat(result, temp, "\r\n"); pos = 0; spacePos = 0; } } return result; } } }