Hallo zusammen,
vorweg bin ich erst seit einer Woche am programmieren!
Ich benutze Visual Studio 2010 Express c#
Betriebssystem Windows 7 64bit
Mein Programm ist folgendermaßen aufgebaut:
Mein Programm hat 3 Klassen.
1.Klasse "HTimeStamp
2.Klasse "HDate"
3.Klasse "mit der MainMethode"
In der 1. Klasse wird die aktuelle Systemzeit ausgelesen und in Dezimalzeit umgerechnet.
Die Variable die diesen Wert beinhaltet heißt DecimalStdMin
In der 2. Klasse wird das Aktuelle Datum ausgelesen und umgerechnet in ein Julianisches Datum mit dem Format YYYYTTT, es wird geprüft ob es sich um ein Schaltjahr handelt etc.
und zusätzlich Soll dann zum schluss Das Julianisches Datum zu der Dezimalzeit dazugerechnet werden, so das man insgesamt das Format YYYYTTT,Dezimalzeit hat.
--------------------------------------------------------------------------------------------------------
Nun zu meinem Problem:
Der Wert in der ersten Klasse HTimeStamp wird dort richtig berechnet. Aber nicht an die 2. Klasse HDate übergeben, Da dachte ich mir ok dann erbt die 2. Klasse halt die Eigenschaften von der ersten Klasse Also ganz oben habe ich dann geschrieben
HDate : HTimeStamp
Sofort wurde es erkannt und der Wert Decimal in der 2. Klasse war nicht mehr rot unterkringelt.
Wenn ich aber nun das programm ausführe gibt er mir alle Werte richtig aus nur zum Schluss wenn er den Wert vom Julianischen Datum (bei mir "temp") mit den DecimalStdMin addieren soll kommt kein Wert durch bzw er zeigt mir im Consolenprogramm 0 an.
Weiß einer von euch warum der Wert mit 0 übergeben wird?
Hier der Quellcode von meinem Programm:
1.Klasse HTimeStamp:
Hier ist meine 2. Klasse :
Und nun hier meine letzte Klasse mit der Mainmethode:
Hier seht ihr nochmal was herauskommt , wenn ich das programm debugge:
siehe Anhang
Ich hoffe das ihr mir weiterhelfen könnt, wenn euch meine Informationen zu ungenau sind bitte eben melden.
vorweg bin ich erst seit einer Woche am programmieren!
Ich benutze Visual Studio 2010 Express c#
Betriebssystem Windows 7 64bit
Mein Programm ist folgendermaßen aufgebaut:
Mein Programm hat 3 Klassen.
1.Klasse "HTimeStamp
2.Klasse "HDate"
3.Klasse "mit der MainMethode"
In der 1. Klasse wird die aktuelle Systemzeit ausgelesen und in Dezimalzeit umgerechnet.
Die Variable die diesen Wert beinhaltet heißt DecimalStdMin
In der 2. Klasse wird das Aktuelle Datum ausgelesen und umgerechnet in ein Julianisches Datum mit dem Format YYYYTTT, es wird geprüft ob es sich um ein Schaltjahr handelt etc.
und zusätzlich Soll dann zum schluss Das Julianisches Datum zu der Dezimalzeit dazugerechnet werden, so das man insgesamt das Format YYYYTTT,Dezimalzeit hat.
--------------------------------------------------------------------------------------------------------
Nun zu meinem Problem:
Der Wert in der ersten Klasse HTimeStamp wird dort richtig berechnet. Aber nicht an die 2. Klasse HDate übergeben, Da dachte ich mir ok dann erbt die 2. Klasse halt die Eigenschaften von der ersten Klasse Also ganz oben habe ich dann geschrieben
HDate : HTimeStamp
Sofort wurde es erkannt und der Wert Decimal in der 2. Klasse war nicht mehr rot unterkringelt.
Wenn ich aber nun das programm ausführe gibt er mir alle Werte richtig aus nur zum Schluss wenn er den Wert vom Julianischen Datum (bei mir "temp") mit den DecimalStdMin addieren soll kommt kein Wert durch bzw er zeigt mir im Consolenprogramm 0 an.
Weiß einer von euch warum der Wert mit 0 übergeben wird?
Hier der Quellcode von meinem Programm:
1.Klasse HTimeStamp:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class HTimeStamp
{
//--------------------------------------
double dtHour = DateTime.Now.Hour;
double dtMinute = DateTime.Now.Minute;
double dtSecond = DateTime.Now.Second;
public double DecimalMinuten, DecimalStunden, Stunden, DecimalStdMin;
public void holeSystemzeit()
{
Console.WriteLine("Systemzeit:\n"+ dtHour.ToString() + ":" + dtMinute.ToString() + ":" + dtSecond.ToString());
Console.WriteLine("Stunden:\n"+ dtHour.ToString());
Console.WriteLine("Minuten:\n" + dtMinute.ToString());
// Hier werden die Werte per TypCast toString in die jeweiligen Textboxen geschrieben
// Ausgabe Beispiel: 16:11:11
}
public void berechneDecimalMinuten()
{
DecimalMinuten = (dtMinute * 5) / 3;
//Hier werden Minuten in Dezimalminuten umgerechnet
}
public void berechneDecimalStunden()
{
Stunden = dtHour * 60;
DecimalStunden = (Stunden * 5) / 3;
}
public void berechneDecimalStdMin()
{
DecimalStdMin = DecimalStunden + DecimalMinuten;
Console.WriteLine("DezimalStundenMinuten:\n" + DecimalStdMin);
}
}
}
Hier ist meine 2. Klasse :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class HDate : HTimeStamp
{
//---------------------------------------
double dtday, dtMonth, dtYear;
DateTime currentDate = DateTime.Now;
public void holeAktuelllenTag()
{
dtday= DateTime.Now.Day;
Console.WriteLine("Aktueller Tag:\n" + dtday.ToString());
}
public void holeAktuelllenMonat()
{
dtMonth = DateTime.Now.Month;
Console.WriteLine("Aktueller Monat:\n" + dtMonth.ToString());
}
public void holeAktuelllesJahr()
{
dtYear = DateTime.Now.Year;
Console.WriteLine("Aktuelles Jahr:\n" + dtYear.ToString());
}
public void SchreibeSystemDatum(int dtMonth, int dtYear)
{
Console.WriteLine("Systemdatum:\n"+dtday.ToString() + "." + dtMonth.ToString() + "." + dtYear);
}
public double temp = 0;
double Januar = 31,Februar = 28,Maerz = 31,April = 30,Mai = 31,Juni = 30;
double Juli = 31,August = 31, September = 30,Oktober = 31, November = 30,Dezember = 31;
public void pruefeJahr()
{
if (dtYear % 4 == 0)
Februar = 29;
}
// Mit dieser Methode wird überprüft ob es sich in diesem Jahr um ein Schaltjahr handelt
public void pruefeMonat()
{
if(dtMonth == 1)
{temp = Januar-Januar ;}
if(dtMonth==2)
{temp = Januar+Februar-Februar;}
if(dtMonth==3)
{temp =Januar+Februar+Maerz-Maerz;}
if(dtMonth==4)
{ temp = Januar + Februar + Maerz+ April-April; }
if(dtMonth==5)
{ temp = Januar + Februar + Maerz + April+Mai-Mai; }
if(dtMonth==6)
{ temp = Januar + Februar + Maerz + April + Mai+ Juni-Juni; }
if(dtMonth==7)
{ temp = Januar + Februar + Maerz + April + Mai + Juni+Juli-Juli; }
if(dtMonth==8)
{ temp = Januar + Februar + Maerz + April + Mai + Juni + Juli+August-August; }
if (dtMonth == 9)
{ temp = Januar + Februar + Maerz + April + Mai + Juni + Juli + August+September-September; }
if(dtMonth==10)
{ temp = Januar + Februar + Maerz + April + Mai + Juni + Juli + August + September+Oktober-Oktober; }
if(dtMonth==11)
{ temp = Januar + Februar + Maerz + April + Mai + Juni + Juli + August + September + Oktober+November-November; }
if(dtMonth==12)
{ temp = Januar + Februar + Maerz + April + Mai + Juni + Juli + August + September + Oktober + November+Dezember-Dezember; }
//Abfrage in welchem Monat Monat man sich befindet und der Wie vielte Tag es dann ist minus den Aktuellen Monat
}
public void erstelleJulianischesDatum()
{
temp += dtday + dtYear * 1000;
Console.WriteLine("Julianisches Datum:\n" + temp.ToString());
}
public double schreibeZeitdatum()
{
temp = (temp * 10000 + DecimalStdMin)/10000;
Console.WriteLine("Julianisches Datum mit Dezimalzeit:\n" + temp + "," + DecimalStdMin);
return temp;
// Console.WriteLine("Julianisches Datum mit Dezimalzeit:\n" + temp);
}
}
}
Und nun hier meine letzte Klasse mit der Mainmethode:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public abstract class Program : HDate
{
static void Main(string[] args)
{
HDate Test = new HDate();
HTimeStamp Test1 = new HTimeStamp();
Test1.holeSystemzeit();
Test1.berechneDecimalMinuten();
Test1.berechneDecimalStunden();
Test1.berechneDecimalStdMin();
Test.holeAktuelllenTag();
Test.holeAktuelllenMonat();
Test.holeAktuelllesJahr();
Test.pruefeJahr();
Test.pruefeMonat();
Test.erstelleJulianischesDatum();
Test.schreibeZeitdatum();
//Test1.gebeDecimalStdMin(12.0);
Console.ReadLine();
}
}
}
Hier seht ihr nochmal was herauskommt , wenn ich das programm debugge:
siehe Anhang
Ich hoffe das ihr mir weiterhelfen könnt, wenn euch meine Informationen zu ungenau sind bitte eben melden.