Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tician

User
  • Registriert

  • Letzter Besuch

Alle Beiträge von Tician

  1. Das wäre jetzt natürlich die Schönste (und dämlichste), am einfachsten zu behebende Variante, aber nein hatte ich nicht^^ Ich hab den ganzen PC mal neu gestartet und jetzt scheint es zu funktionieren Edit: Oder auch nicht, jetzt müsste ich wissen welche Datei gemeint ist in der Fehlermeldung weil das steht nirgendwo.
  2. Gibt es eine Möglichkeit herauszufinden warum ich jedes mal wenn ich das Programm kompilieren möchte die Meldung bekomme das der Prozess nicht abgeschlossen werden kann weil der Prozess nicht auf eine Datei zugreifen kann weil ein anderer Prozess darauf zugreift? Nachdem die Meldung einmal weg geklickt wurde kompiliert das Programm einmal und beim nächsten mal kommt wieder die Meldung. Hat das nicht auch mit dem GC zu tun? Müsste wenn ich das im Taskmanager richtig sehe ein "Programmname.vshost.exe *32" sein das da hängen bleibt. Edit: Die Datei (der Prozess) ist es nicht, die Datei ist auch da wenn ich nur VS starte, muss also was anderes sein
  3. Kann ich nochmal etwas zum Verständnis fragen? Ich dachte immer wenn ich ein Objekt (?) anlege wie zum Beispiel hier Settings form2 = new Settings(); Was passiert dann genau? Ich dachte das ist wie wenn ich eine Variable anlege, quasi eine leere Hülle. Wenn ich also von der Form ein Objekt erstelle dann wird was genau gemacht? Alle Objekte und Variablen angelegt/eingelesen hier zwischen den Klammern stehen? public partial class Settings : Form { }
  4. Ich muss es dann aber manuell aus dem Speicher schmeißen wenn ich das Programm schließe richtig? Soetwas: private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { form2.Dispose(); }
  5. Im Anhang and das Problem: funktioniert mein Programm und lässt sich kompilieren, aber der GC macht mir Striche durch die Rechnung (ich benutze kein Dospose und auch kein Multithreading). Wie gehabt (ich wiederhole es kurz) habe ich 2 Klassen (Forms), wobei Form1 eine Menüleiste hat die Form2 (genannt Settings) aufruft. Das funktioniert einmal - aber sobald jemand Settings schließt und erneut aufruft wird die Exception an diesem Punkt geworfen: public partial class Form1 : Form { Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Settings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } } private void settingsToolStripMenuItem1_Click(object sender, EventArgs e) { form2.iniText = iniText; form2.Show(); //hier Exception } Weiß jemand wie ich das verhindern kann und trotzdem sicher sein kann das beim Beenden des kompletten Programs auch wirklich nichts mehr den RAM belegt? Ich weiß das eine Lösung wäre jedesmal eine neue Instanz zu erstellen, aber dann sind die labels (meine ich zumindest) leer die ich zu Beginn des Programs an Settings übergebe und auch mein Form-Closed Event würde nicht mehr funktionieren. Ideen wie ich dem Programm sagen kann das Form2 nicht weg geworfen werden soll wenn ich es schließe?
  6. Neues Problem, dafür mache ich einen neuen Thread auf.
  7. Hatte es gemerkt, ich dachte irgendwie an "get" also "kriegt" oder "bekommt" die Variable einen Inhalt, aber es ist genau andersrum... verwirrend.
  8. @Whiz-zarD Deine 2. Möglichkeit fand ich bis jetzt am Besten, ich hab versucht sie etwas umzuändern und bin soweit das es gerade so aussieht: Settings: public partial class Settings : Form { //string iniText; public Settings() { InitializeComponent(); //Form1 form1 = new Form1(); //iniText = form1.GetIniText(); } //get ini when being called public string iniText { get; } //Method for Form1 public void WriteIniToLabels(string text1, string text2, string text3) { label1.Text = text1; label2.Text = text2; label3.Text = text3; } Form1: public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Settings-Close form2.FormClosed += Form2_FormClosed; } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { ReadIniFile(); } Ich habe denke ich verstanden wie ich meine notwendige Variable iniFile von Form1 and Settings übergebe, aber ich wie schiebe ich sie wieder zurück sobald "Settings" geschlossen wird? Was ich jetzt gemacht habe ist quasi die Hälfte übernommen, allerdings sagt mein Programm das Settings.iniText schreibgeschützt ist? "Für die Eigenschaft oder den Indexer "Settings.iniText" ist eine Zuweisung nicht möglich. Sie sind schreibgeschützt."
  9. Hoppla zu der Frage wo die Form2 aufgerufen wird, das hier steht noch in Form1, wie gesagt das ist eine Menü-Leiste private void settingsToolStripMenuItem1_Click(object sender, EventArgs e) { form2.Show(); }
  10. Das ist etwas komplizierter, ich versuche mal meinen Gedankengang und etwas mehr Code dazu zu veröffentlichen: Wenn das Programm gestartet wird läd Form1 Einstellungen aus einer ini-Datei, speichert diese in Variablen und schreibt diese in labels von Form2 (Settings-Fenster) mit der WriteIniToLabels() Methode. Wenn jetzt aber Form2 über das Menü aufgerufen wird gibt es dort Möglichkeiten die EInstellungen zu ändern. Wenn Form2 geschlossen wird muss Form1 die Einstellungen neu auslesen. Form1 relevante Ausschnitte: public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Seetings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { ReadIniFile(); } public void ReadIniFile() { //ini-Datei lesen iniText = File.ReadAllText("settings.ini"); SetIniText(iniText); //PDF und CSV und PCL Pfad lesen und ausgeben Regex reg1 = new Regex("(?<=PathToPDF\\=).+"); Regex reg2 = new Regex("(?<=PathToCSV\\=).+"); Regex reg4 = new Regex("(?<=PathToPCL\\=).+"); Match pdfPath = reg1.Match(iniText); Match csvPath = reg2.Match(iniText); Match pclPath = reg4.Match(iniText); iniPathToPDF = Convert.ToString(pdfPath); iniPathToCSV = Convert.ToString(csvPath); iniPathToPCL = Convert.ToString(pclPath); //Write ini-Settings to Form2-Labels form2.WriteIniToLabels(iniPathToPDF, iniPathToCSV, iniPathToPCL); //Drucker auslesen Regex reg5 = new Regex("(?<=Printer\\=).+"); Regex reg6 = new Regex("(?<=Printserver\\=).+"); Match printer = reg5.Match(iniText); Match printserver = reg6.Match(iniText); iniPrinter = Convert.ToString(printer); iniPrintserver = Convert.ToString(printserver); //Checkbox-status lesen und aktualisieren Regex reg3 = new Regex("(?<=PrintPDF\\=).+"); Match pdfCheck = reg3.Match(iniText); iniPrintPDF = Convert.ToString(pdfCheck); if (iniPrintPDF == "0") { checkBox1.Checked = false; } else { checkBox1.Checked = true; } } string newIniText; public void SetIniText(string iniText) { newIniText = iniText; } //To get ini from Settings public string GetIniText() { return newIniText; } Form2 relevante Ausschnitte: public partial class Settings : Form { string iniText; public Settings() { InitializeComponent(); Form1 form1 = new Form1(); iniText = form1.GetIniText(); } //Method for Form1 public void WriteIniToLabels(string text1, string text2, string text3) { label1.Text = text1; label2.Text = text2; label3.Text = text3; } Das ist alles nur Idee und zusammengeschrieben wie es mir in den Sinn kam, ich glaube ein paar Dinge brauch ich gar nicht mehr also sucht da nicht unnötig nach Fehlern die finde ich selbst sobald ich es kompilieren kann (hoffe ich^^). Erstmal muss der StackOverflow raus und ich weiß nicht wie ich es anders machen kann, dazu fehlt mir die Erfahrung.
  11. Moin! Ich habe tatsächlich zum ersten mal (außerhalb des Schulunterrichts) mit 2 Klassen zu tun und wollte (auch wenn mein Ausbilder sagt ich bin kein AE und kann globale Variablen benutzen) Variablen mithilfe von Methoden hin und her schieben. Jetzt habe ich mir mit dem was ich gelernt habe und mit dem was ich im Internet gefunden habe etwas zusammen gebastelt das 1. glaube ich keiner mehr versteht 2. sich gar nicht erst kompilieren lässt wegen oben genanntem Fehler Meine 2 Klassen sind 2 Form-Anwendungen, die eine als Hauptanwendung und die andere quasi als "Settings-Fenster" das über die Menüleiste aufgerufen werden kann. In der Aufrufliste kann ich sehen welche 2 Funktionen sich da verhaken, weiß aber nicht warum weil mir noch das große Bild der Programmierung fehlt. Hier der Teil der Settings.cs: public partial class Settings : Form { string iniText; public Settings() { InitializeComponent(); Form1 form1 = new Form1(); //das hier wird immer wieder aufgerufen iniText = form1.GetIniText(); } und das hier von meinem Form1.cs public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); //hier sagt es wird immer wieder aufgerufen public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Seetings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } Ich kann meinen Breakpoint nicht da ansetzen wo es auftritt sonst hätte ich das vielleicht irgendwie nachvollziehen können. Die 2 markierten Stellen habe ich eingefügt um damit Funktionen der jeweils anderen Klasse aufzurufen zu können - ist das falsch? Kann sich jemand meiner annehmen und mir das erklären? Grüße Tician
  12. Ich habe es jetzt auf absolutem Laienweg gelöst, ich habe sämtliche Symbole der Erweiterten ASCII-Tabelle ausgedruckt und geschaut was rauskommt und ein Programm geschrieben das sämtliche Symbole die in der Datei stehen so umändern das sie wieder so rauskommen wie sie ursprünglich drin standen, ein Ü wird z.B. in ein š umgeandelt damit es als Ü gedruckt wird und so habe ich mir eine Tabelle angelegt die so anfängt: Ç -> € â -> ƒ å -> † î -> Œ usw. da sind etwa 30 Buchstaben drin. Die Datei selbst habe ich als ANSI convertiert.
  13. OK liegt wohl eher weniger am Zeichensatz, es muss etwas mit der Dateicodierung zu tun haben. Ich habe eine Vergleichsdatei in der Umlaute dargestellt werden, diese Datei hat die Kodierung ANSI (meine ist UTF-8), allerdings wird z.B. in der Datei ein geschriebenes "š" im ausgedruckten Format als großes "Ü" angezeigt und ich weiß nicht ob es eine Tabelle gibt in der ich sowas naschauen kann. Oder veranschaulicht: In der ANSI PCL-Datei steht ?*p2370XTšRKEI ausgedruckt auf dem Blatt Papier steht dann einfach "TÜRKEI". Kann ich dasselbe mit UTF-8 machen? Wie bekomme ich raus welches Zeichen ich in die Datei schreiben muss um ein anderes gedruckt zu bekommen? Gibt es da eine Tabelle?
  14. Moinsen, ich komme momentan nicht weiter, ich habe eine PCL-Datei erstellt und diese wird per LPR-Befehl (Windows) momentan über die Kommandozeile an den Drucker gesendet. In der Datei sind Umlaute wie ö oder auch ñ, aber diese kommen nur in komischem kauderwelsch oder Pixel-Salat aus dem Drucker. Der Beginn der PCL-Datei sieht so aus (Der Rest ist nur Positionen und Text): ?E?&l26A?&l0o6d1E ?&l4H ?(0g?(s4148t1b5s5v13h0P Escape-Zeichen habe ich mal als Fragezeichen dargestellt die werden sonst gar nicht angezeigt. Was ich also praktisch mache ist dem Drucker zu sagen: Reset, A4, Hochformat, Schacht 1, german symbol set.... Ich glaube hier kommt das Problem ich habe verschiedene Zeichensätze ausprobiert, aber es ändert sich rein gar nichts, sieht jemand einen Fehler hat eine Idee oder gibt es doch einen versteckten Parameter den ich in der Konsole beim drucken mitgeben kann? Danke und Gruß Tician
  15. Hallöööchen mit 3 öchen, ich gehe in eine Berufsschule in Baden Württemberg, der Unterricht findet 1-2 mal die Woche statt (also kein Blockunterricht). Ich bin seit kurzem im 2. Lehrjahr zur FISI und wir wurden schon vorgewarnt das wir ein Experiment weiterführen werden das schon mit den Schülern der Jahrgangsstufe vor uns begonnen wurde. Ich versuche mal zu erklären wie es der Klasse vor uns ging: Anhand der Noten des 1. Lehrjahrs wurden die Schüler in ITS (Netzwerktechnik) und SAE (Programmieren) in jeweils 3 Leistungskurse pro Fach eingeteilt, da diese keinen Namen haben nennen wir sie nur Bronze, SIlber und Gold. Bronze heißt es wird Unterricht gemacht der unter dem Prüfungsstoff ist, Silber ist quasi auf das begrenzt was man für den Abschluss der Prüfung braucht und Gold ist angehobenes Niveau in dem mehr gemacht wird als für die Prüfung verlangt wird. Jetzt mag sich einer fragen warum es den Bronze-Kurs gibt. Hier gibt es zu beachten das für jede Fachrichtung (FISI und FIAE) nur 2 Kurse pro Fach gibt. Für einen FISI ist das z.B. Silber und Gold im Fach ITS und nur Bronze und Silber in SAE (wir müssen ja keine Prüfung für FIAE ablegen). Für einen FIAE ist es genau andersrum, somit ist sichergestellt das die jeweilige Fachrichtung auch auf dem Prüfungsniveau bleibt. Nach einigem Feedback unserer Vorgänger das sich Schüler überfordert oder Unterfordert fühlten und nicht die Möglichkeit hatten zu wechseln durfte unsere Jahrgangsstufe selbst wählen welche Kurse jeder belegen möchte. Meiner Meinung nach ein großer Pluspunkt für unsere Schule das sie da tatsächlich auf Feedback reagiert hat. Jetzt meine Frage: Hat da jemand in irgendeiner Form schonmal Erfahrungen gemacht? Was haltet ihr von dem ganzen Konzept? Was mir Sorgen bereitet ist das wir als FISIs auf den Monat gerechnet 16 Stunden SAE haben (davon 8 Stunden reines Programmieren und 8 Stunden Datenbanken), aber nur 4 Stunden ITS. Ist das normal? Oder gehört das Thema Datenbanken (Microsoft Access in unserem Fall) noch mit in die FISI-Richtung? Freue mich auf eure Meinungen Gruß Tician
  16. @Anluin Vielen Dank, ich habe aber eine Lösung gefunden die perfekt gepasst hat: ProcessStartInfo info = new ProcessStartInfo(); info.Verb = "print"; info.FileName = "C:\\Temp\\abcde.pdf"; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = info; p.Start(); p.WaitForInputIdle(); System.Threading.Thread.Sleep(3000); if (false == p.CloseMainWindow()) p.Kill(); Für den nächsten der es vielleicht gebrauchen kann Es öffnet zwar den Adobe Reader (wie jede andere Lösung die ich noch gefunden habe), schließt ihn aber auch wieder, es gibt keine Überreste im Taskmanager.
  17. Moin! Da mir bisher immer super geholfen wurde wende ich mich mal wieder an euch Ich möchte über mein C# Programm (Console Application) auch einen Windows-Kommandozeilen-Befehl absetzen und mein Code dazu sieht so aus: string cmdText = "\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" /t \"C:\\Temp\\abcde.pdf\""; System.Diagnostics.Process.Start("cmd.exe", cmdText); (soll eigentlich eine pdf-Datei drucken) bzw habe ich auch das hier probiert: System.Diagnostics.Process command = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(); info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; info.FileName = "cmd.exe"; info.Arguments = "\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" /t \"C:\\Temp\\abcde.pdf\""; command.StartInfo = info; command.Start(); Es wird mir leider kein Befehl ausgegeben, das einzige was passiert ist das ich ein offenes command-Fenster habe, also der Prozess an sich wird ausgeführt aber aus irgendeinem Grund wird das Kommando nicht übernommen/übergeben/ausgeführt. Öffne ich manuell die Konsole und tippe den Befehl ein funktioniert es wunderbar, der einzige Unterschied sind die escape-Zeichen für die Anführungsstriche und Backslashes - kann das zu einem Fehler führen? Ich bekomme keinen Error, gibt es etwas das ich tun kann um zu sehen warum es nicht funktioniert? Das Projekt liegt auf einem Netzlaufwerk (Y:), dementsprechend steht in den geöffneten Konsolenfenstern auch Y:\Pfad zu meinem Projekt Ordner\Debug> aber laut meinem Ausbilder sollte es trotzdem funktionieren den Adobe Acrobat Reader von C: aufzurufen. Sieht jemand einen Fehler, fehlt mir vielleicht etwas oder habe ich die Escape-Zeichen falsch gesetzt? Grüße Tician
  18. @RipperFox Ja genau das sieht perfekt aus, ich hatte es am Wochenende dann auch gefunden http://stackoverflow.com/questions/4654006/how-to-completely-ignore-linebreak-and-tab-in-regex Werde es später (wenn ich dazu komme) ausprobieren, vielen Dank an alle!
  19. Hallöööchen mit 3 öchen, ich habe Probleme mit Regex und finde es sehr schwierig da etwas zu finden. Ich habe in C# eine string-Variable mit nem Haufen Text drin und die ist (zumindest laut Consolen-Ausgabe) auch mit Zeilen formatiert und sollte so bleiben. Jetzt versuche ich mit Regex nur einen Ausschnitt aus dem ganzen Text zu bekommen. Über eine Zeile funktioniert mit dem Syntax: (?<=to:).+(?=T:) Heißt hätte ich die Zeile blato: 123 abc T: bla Würde ich den Output 123 abc bekommen. Jetzt sieht mein Text aber als Beispiel so aus: blato: 123 abc T: lalala und ich möchte trotzdem nur 123 abc als Ausgabe haben. Was muss ich an der Syntax ändern damit die Suche über mehrere Zeilen geht? Mein Code sieht momentan komplett so aus: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; using System.Text.RegularExpressions; namespace ReadPDF { class Program { static void Main(string[] args) { try { var text = new StringBuilder(); var currentText = ""; //get all text from pdf using (var pdfReader = new PdfReader("C:\\Temp\\example.pdf")) { for (var page = 1; page <= pdfReader.NumberOfPages; page++) { ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); text.Append(currentText); } } Console.WriteLine(currentText); //Show me the text from the pdf-file Console.WriteLine(""); string newtext = Convert.ToString(currentText); //needed for Regex //get what I need Regex r = new Regex("(?<=to:).+(?=T:)"); //??? Match m = r.Match(newtext); if(m.Success == true) { Console.WriteLine(m); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(Convert.ToString(ex)); } } } }
  20. Ausprobiert und es funktioniert wirklich einwandfrei und kinderleicht, vielen Dank @Mttkrb
  21. Super, danke! Ich werde es mal mit iTextSharp versuchen
  22. Moinsen, ich suche nach einer Lösung um mithilfe von C# eine pdf-Datei auszulesen. Gegen ist tatsächlicher Text in der Datei, also kein Bild. Google habe ich schon gefragt und auch auf 3 Ergebnisse gestoßen (iTextSharp, pdfsharp, PDFBox), aber ich finde keine Dokumentationen, das ganze soll als Ereignis alle 5 Minuten auf einem Server laufen. Hat da jemand von euch Erfahrung die er teilen kann? Welche kostenlose Erweiterung für VS könntet ihr empfehlen? LG Tician
  23. Ein Hoch auf die permanent Inventur! *wegschleich* Das wäre bei uns leider etwas Sinnlos, bei uns bekommt alles einen Aufkleber (und wird in eine Tabelle mit allen Informationen eingetragen) noch bevor es beim Kunden steht und wird zur jährlichen Inventur nur auf Barcode gescannt^^ Es stimmt das es ein super Gefühl ist wenn man etwas getan hat und sieht das es auch gebraucht wird, was bei mir aber in letzter Zeit nur programmieren ist (ich bin FISI), auf unserem Server laufen schon 3 Skripte von mir die Dateien nach einem Schema verarbeiten. Aber es macht Spaß^^
  24. Leute bleibt mal beim Punkt. Ich stimme euch zu, ich glaube auch das man sich nicht alles alleine beibringen kann, aber warum soll jemand diese Erfahrung nicht selbst machen und sich stattdessen 20 mal "schaffst du eh nicht" anhören? Mein Vorschlag: Schau dich um welche Programmiersprachen häufig gesucht werden und eigne sie dir an. Es gibt tausende Tutorials sowohl online als auch zum Kauf als Bücher, CDs und weißnichtwas noch. C++ ist meine ich recht beliebt und Java, in der Schule lernen wir C# was Java sehr ähnlich kommt. Setze dich mit objektorientiertem Programmieren auseinander und erstelle Struktogramme zu deinen Programmen ("denn nicht der der das Programm hat ist der Besitzer sondern der mit dem Konzept" wie unser Lehrer so schön sagte). Übungsaufgaben gibt es auch genügend zu finden. Arbeite mit Datenbanken und lerne wie du sie in deine Programmierung mit einbaust. MySQL ist denke ich ein guter Anfang. Ansonsten sagtest du glaube ich das du den BWL-Teil schon kennst, aber du könntest hier mal reinschauen was verlangt wird: https://www.zv.uni-leipzig.de/fileadmin/user_upload/UniStadt/personaldezernat/pdf/Ausbildungsrahmenplan_04.pdf Du solltest also auch mit Netzplänen und EPKs keine Probleme haben. Was ich sagte ist bei weitem nicht alles und wie gesagt nur ein Anfang, schau in den Rahmenplan. Bedenke das wir oft gesagt wurde die meisten Betriebe einen festen Beweis wollen das du den Beruf gelernt hast.
  25. So bin ich auch darauf gekommen. Ich versuche es nochmal auseinander zu bröseln: Der ganze Quatsch mit den Nummern und Himmelsrichtungen ist nur zum irritieren da, du greifst dir die wichtige Info raus und die ist das wir 11 Zeichen haben die jeweils mit einer einstelligen Hexadezimalzahl dargestellt werden sollen. Fangen wir mal mit einer Hexadezimalzahl an. Die gehen (einstellig) von 0-F (Dezimal 0-15). Die höchte einstellige Hexadezimal-Zahl (F = 15) lässt sich im Binärsystem als "1111" darstellen. Eine Zahl im Binärsystem ist ein Bit wir können also davon ausgehen das wir für jede Ziffer maximal 4 bit berechnen können. 11 Ziffern haben wir für die Position, also 11*4 = 44 bit die wir pro Minute brauchen. Aufgerechnet auf Stunden: 44*60 = 2640. Aufgerechnet auf einen Tag: 2640*24 = 63360 Bit. Jetzt sind wir alle so schlau und wissen das 8 Bit einem Byte entsprechend, also teilen wir das ganze durch 8 und kommen auf das Ergebnis.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.