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.

[c#]Variablen bekannt machen?!

Empfohlene Antworten

  • Autor

nur mal so ne frage du willst ja ein Zeiterfassungsprogramm schreiben, doch soll er nur die Arbeitszeit/Pausezeit erfassen oder soll er alles erfassen jedes kommen/gehen ?

Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages.

Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages.

Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting.

  • Autor
Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting.

Das Problem resultiert aus dem Lösungsweg des ersten Problems und hängt deswegen mit diesem Thread zusammen.

Ich hab zwar jetzt ne Lösung gefunden, diese ist aber denke ich Code mäßig zu lang als dass ich sie hier posten könnte.

Trotzdem danke für die Hilfe.

Aus dem Problem am Threadanfang ist ein weitere Problem resultiert. Nur was ist, wenn jemand ein gleiches oder ähnliches Problem zwecks dem DateTime hat? Der findet anhand des Themas keine Bezug zu seinem / Deinem zweiten Problem. Daher neues Thema aufmachen, mit einem Verweis auf Dein vorheriges Problem.

  • Autor

Ob es nun eine String Variable ist die ich bekannt machen möchte, oder eine DateTime Variable ist doch herzlich egal?

Wenn ich Probleme hätte einen Anker mit meinem kleinen Sportboot zu werfen und hier die Lösung finden würde, würde ich doch auch wieder hier posten, wenn ich das gleiche Problem in größeren Ausmaßen bei einem Hochseetanker hätte, oder?

Wie gesagt, das Problem ist aus meiner Sicht eh erledigt, die Lösung ist allerdings zu lang um sie hier zu posten.

Nur soviel: Mühevolle Kleinstarbeit und Fehleranfälligkeit³ die es jetzt noch ausmerzen werde. Trotzdem danke.

Klug******erModus an:

Wenn mir jemand sagen könnte, wie ich am besten die einzelnen Kommen + Gehen am besten in verschiedene Variablen abspeichern kann, wäre das für mich ein großer Schritt nach vorne.

Klug******erModus aus:

Hmm...passt nicht ganz zu Deiner letzten Aussage. Aber bitte...

  • Autor

Dann Entschuldige bitte, wenn ich mich falsch ausgedrückt habe.

Fakt ist, ich sitze ja wohl vor meinem Projekt und weiß, was für ein Problem ich habe.

Btw. ich glaube genau das ist es, was 2K1.inc meinte...

@Mod, kann das bitte jemand Schließen? Denke kaum, dass Diskussionen um des Kaisers Bart irgendjemand etwas bringen.

Trotzdem wäre ich an der Lösung interessiert :roll:

Man kann diese ja kürzen und mit einem kleinen Kommentar beschreiben. Laut dem Thema geht es ja um die Sichtbarkeit einer / mehrerer Variablen (int, DateTime). Also was möchte mehr :-)

  • Autor

Bsp. GehenBuchung:

 private void btnGehen_Click(object sender, EventArgs e)

        {

            Counter++;


            if (Counter % 2 == 1)

            {

                MessageBox.Show("Gehen bereits gebucht!");

                Counter--;

            }

            else

            {

                if (cbZeit.Checked)

                {

                    string Gehen = txtGehen.Text;

                    Gehen = Gehen.Replace(".", ":");

                    Gehen = Gehen.Replace(",", ":");

                    DateTime GehenZ;

                    if (DateTime.TryParseExact(Gehen, format, CultureInfo.InvariantCulture,

                        DateTimeStyles.None, out GehenZ))

                    {

                            MessageBox.Show("Manuelle Buchung gespeichert"); 

                            GehenZs[bi] = Gehen;

                            bi++;

                    }

                    else

                    {

                        MessageBox.Show("Ungültiges Zeitformat!");

                    }

                }

                else

                {

                    string Gehen2 = DateTime.Now.ToShortTimeString();

                    GehenZs[bi] = Gehen2;

                    bi++;

                }

            }

        }

Sieht beim Kommen Button quasi gleich aus. Verarbeitung:

//Zeitspannen für Arbeitszeit und Pausenzeitberechnung

            int r = 0;

            DateTime KO = DateTime.Parse(KommenZs[r]);

            DateTime  Ge1 = DateTime.Parse(GehenZs[r]);


            DateTime KO2 = new DateTime();

            DateTime KO3 = new DateTime();

            DateTime KO4 = new DateTime();


            DateTime Ge2 = new DateTime();

            DateTime Ge3 = new DateTime();

            DateTime Ge4 = new DateTime();

            DateTime Tester = new DateTime();


            TS1 = Ge1 - KO;

            string Arbeit1 = TS1.ToString();

            txtArbeitszeit.Text = Arbeit1;

            r++;


            //Arbeitszeit

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                KO2 = DateTime.Parse(KommenZs[r]);

                Ge2 = DateTime.Parse(GehenZs[r]);


                TS2 = Ge2 - KO2;

                string Arbeit2 = TS2.ToString();

                TimeSpan Zwischenergebnis = TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis.ToString();

                r++;

            }

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                 KO3 = DateTime.Parse(KommenZs[r]);

                 Ge3 = DateTime.Parse(GehenZs[r]);


                TS3 = Ge3 - KO3;

                string Arbeit2 = TS3.ToString();

                TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis2.ToString();

                r++;

            }

            if (KommenZs[r] != null && GehenZs[r] != null)

            {

                 KO4 = DateTime.Parse(KommenZs[r]);

                 Ge4 = DateTime.Parse(GehenZs[r]);


                TS3 = Ge4 - KO4;

                string Arbeit3 = TS4.ToString();

                TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1;

                txtArbeitszeit.Text = Zwischenergebnis3.ToString();

                r++;

            }


            //PausenZeit

            int p = 0;

            if (KO2 > Tester)

            {

            TS5 =KO2 - Ge1  ;

            TimeSpan Zwischenergebnis4 = TS5;

            txtPausenzeit.Text = Zwischenergebnis4.ToString();

            p++;


            if (GehenZs[p] != null && KO3 > Tester)

            {


                TS6 = KO3 - Ge2;

                TimeSpan Zwischenergebnis5 = TS6 + TS5;

                txtPausenzeit.Text = Zwischenergebnis5.ToString();

                p++;

            }

            if (GehenZs[p] != null && KO4 > Tester)

            {

                TS7 = KO4 - Ge3;

                TimeSpan Zwischenergebnis6 = TS7 + TS6 + TS5;

                txtPausenzeit.Text = Zwischenergebnis6.ToString();

                p++;

            }

Ausgabe:

//Ausgabe an TXT Datei


                int ZN = 1;

                string Prüfung;

                while ((Prüfung = NewTime.ReadLine(@"C:\WinZeitLog.txt", ZN)) != "")

                {

                    ZN++;

                }


                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString()  + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) +  " Arbeitszeit: " + (Ge1 - KO), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false);

                ZN++;

                NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "------- ENDE DES TAGES -------", false);

Sicher keine Musterlösung, aber es funktioniert.

Hab allerdings noch n Rechenfehler drinn, den ich gerade suche.


//Arbeitszeit
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO2 = DateTime.Parse(KommenZs[r]);
Ge2 = DateTime.Parse(GehenZs[r]);

TS2 = Ge2 - KO2;
string Arbeit2 = TS2.ToString();
TimeSpan Zwischenergebnis = TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis.ToString();
r++;
}
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO3 = DateTime.Parse(KommenZs[r]);
Ge3 = DateTime.Parse(GehenZs[r]);

TS3 = Ge3 - KO3;
string Arbeit2 = TS3.ToString();
TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis2.ToString();
r++;
}
if (KommenZs[r] != null && GehenZs[r] != null)
{
KO4 = DateTime.Parse(KommenZs[r]);
Ge4 = DateTime.Parse(GehenZs[r]);

TS3 = Ge4 - KO4;
string Arbeit3 = TS4.ToString();
TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1;
txtArbeitszeit.Text = Zwischenergebnis3.ToString();
r++;
}[/code] Dreimal der gleiche Code. Schleife?
[code]
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString() + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) + " Arbeitszeit: " + (Ge1 - KO), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false);
ZN++;
NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false);
ZN++;

Auch hier: Schleife? Copy&Paste-Programmierung solltest du dir ganz dringend abgewöhnen. Oder dich schon mal damit abfinden, dass du jeden Fehler n-mal fixen musst.

Mit "funktioniert" solltest du dich nicht zufrieden geben.

  • Autor

ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege.

ich möchte ja für jeden wert einen eigenen string haben.

ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege.

ich möchte ja für jeden wert einen eigenen string haben.

hmm könntest du mal plx die ganze Aufgabenstellung posten ? o.O

was es können muss etc...

  • Autor

Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben.

Die einzelnen Pausen werden dann in einem Textfile ausgegeben.

So sieht die Ausgabe bisher aus:

Sitzungsdatum: 27:09:2010 13:49:07

Kommen: 07:00 Gehen: 09:00 Arbeitszeit: 02:00:00

Kommen: 09:15 Gehen: 12:00 Arbeitszeit: 02:45:00

Kommen: 12:30 Gehen: 15:00 Arbeitszeit: 02:30:00

Kommen: 15:15 Gehen: 16:45 Arbeitszeit: 01:30:00

Gesamte Arbeitszeit: 08:45:00 Gesamte Pausenzeit: 01:00:00

------- ENDE DES TAGES -------

Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben.

Die einzelnen Pausen werden dann in einem Textfile ausgegeben.

So sieht die Ausgabe bisher aus:

Also für jeden Mitarbeiter wird dann täglich eine File angelegt... wird dann morgn wieder ne neue file angelegt oder in der altn weiter geschrieben ?

  • Autor

Derzeit wird in die Alte rein geschrieben, sprich drunter.

Daher bekommt das Programm dann auch den Benutzernamen, der derzeit aber noch total irrelevant ist.

Edit: Das Programm ist nicht wirklich für den realen Einsatz geplant, sondern mehr als Übung.

Ansonsten: Ja für jeden Benutzer eine File.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.