Aktuelles Datum anzeigen
-
Dilog::Dilog(CWnd* pParent /*=NULL*/) : CDialog(Dilog::IDD, pParent) { //{{AFX_DATA_INIT(Dilog) m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); //}}AFX_DATA_INIT }
da drin steht's
wenn ich das
m_oledtAuswertedatum = COleDateTime::GetCurrentTime();
lösche ,sehe ich das datum 01.01.1970
mmmh
-
Okay, kurzer Grundlagenexkurs (alles weitere bitte in einem guten C++ Buch nachlesen):
Die Funktionen, die genauso heißen wie die Klasse selbst, heißen Konstruktor. Sie sind der Ort, wo die Membervariablen der Klasse initialisiert werden müssen.
Bei Variablen, die einen Standard-Konstruktor haben, ist die Initialisierung nicht Pflicht, sie erhalten einen Wert.COleDateTime ist eine Klasse (im Gegensatz zu z.B. int) und hat auch einen Standardkonstruktor (das is der ohne Parameter - guck zu Details in ein Buch). In diesem Standardkonstruktor wird erstmal 0 als Inhalt genommen - damit nicht totaler Murks drin steht.
Soweit zu OOP. Nun zu COleDataTime und dem Datum "01.01.1970" Dieses Datum IST 0. CTime und COleDateTime haben dieses Datum als "0". Wann immer du dieses Datum siehst und nicht weiß, woher es kommt - dann hast du vergessen, deine Variable zu initialisieren und der Standardkonstruktor hat seine Arbeit getan.
Willst du da also was anderes als 01.01.1970 haben, musst du ihm schon was geben.
...z.B. die aktuelle Zeit, wie du schon hattest oder auch was anderes, schau in die MSDN (Link auf der Hauptseite vom MFC Forum), da gibt es noch einige Varianten.Okay?
-
BOOL Dilog::OnInitDialog() { CDialog::OnInitDialog(); // Aktuelles Datum anzeigen COleDateTime m_oledtAuswertedatum = COleDateTime::GetCurrentTime(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben }
das müsste doch jetzt stimmen oder auch nicht
weiß nur nicht das zwischen Update und COle stehen muss
-
Da muss nix stehen. Die Zeile, die da mal stand ist ja weggefallen als du das Control geändert hast.
Funktioniert es denn jetzt?
Ob das alles richtig ist, entscheidest doch DU. Wenn das Programm macht, was du willst, DANN ist alles richtig.
-
"Wenn das Programm macht, was du willst, DANN ist alles richtig"
jaaa, schön wärs.....O Fehler 0 Warnungen aber da muss ja nichts heißen, (das hab ich schon gelernt
)
bin auf der Suche, wie ich das aktuelle Datum anzeigen kann
was muss ich denn in MSDN eingeben..?
-
Das aktuelle Datum ist eigentlich das GetCurrentTime.
In die MSDN gibst du einfach die Klasse ein, zu der du was wissen willst. Der beste Startpunkt ist dann das Kapitel class members, weil das eine Übersicht fast aller Funktionen ist. (Es gibt einige wenige undokumentierte, aber das wirst du dann schon noch fluchend feststellen...)
Oder du nimmst einen Funktionsnamen, von dem du was wissen willst und achtest dann darauf, falls das eine Memberfunktion einer Klasse ist, dass du die richtige anschaust. Denk an die zwei Varianten von Format...
Ansonsten achte bei der MSDN darauf, dass du die Doku zur richten Sprache liest - da steht zu ALLEN Visual Sprachen was drin, zu Office und und und. Die Informationsmenge ist erstmal enorm, aber wenn du durchfindest hast du ein sehr mächtiges Nachschlagewerk zur Hand.
Wenn das jetzt immer noch nicht geht, bin ich ratlos, das sollte jetzt gehen.
-
ja ne, ich meinte dass es mir das richtig Datum anzeigt...
es muss einfach klappen, sonst biste mir sauer
-
au, ich hab ausversehen meine Klasse CCustomRss genannt anstatt CCustomRs
kann man das irgendwie ändern?
-
Weißte was? Du testet da bis morgen ne Runde rum und liest MSDN. Vielleicht klappt es ja.
Wenn nicht: Schick mir die Datenbank und das Projekt mal zu. estartu_de@yahoo.com
Ich werde dann so gegen Mittag mal reingucken ob ich was finde. Dann muss ich nicht immer raten.
PS: Ich bin dir nicht böse, ich kann nur nicht glauben, dass alles so anders ist, sobald man ADO verwendet.
-
Natürlich kannst du das ändern:
Suchen in Dateien nach CCustomRss und ALLE Vorkommen korrigieren.
-
ok werd ich machen, ich wills heut noch hinbekommen
danke für deine Angebot, ist lieb von dirdanke dir schon mal dafür dass du mir immer so schnell geantwortest hast, und dir Zeit dafür genommen hast
grüße aus Stgt
-
Mir is die Ablenkung immer wieder lieb, dann fress ich mich hier nicht an meinem Problem fest...
Irgendwie muss ich das kompensieren, dass ich nicht mehr zum "Nachdenken" auf den Balkon muss.
-
hallo estartu_de
ich würde dir gerne mal mein Programm schicken,
muss ich dann mein ganzen Ordner (ca 25 MB) schicken oder nur die .dsw Datei?
dann kannste es ja mal anschauen wenn du Zeit und Lust hast
danke
-
Im Menü "Erstellen" findest du den Befehl "Bereinigen" - der löscht alle temporären Dateien, das verkleinert schon mal enorm.
Nur das dsw reicht nicht, dann würden mir ja alle Quelltexte fehlen.
Und denk bitte an die Datenbank, also die mdb Datei.
-
mmh ich kann ja nur 4MB bei web.de verschicken
-
oder kann ich den debug Ordner auch löschen?
-
Bereinigen löscht den Debug Ordner, aber wenn du magst, kannst du das auch nochmal von Hand machen. Wenn was fehlt kann ich mich ja melden.
Außerdem darfst du das gerne auf mehrere Mails aufteilen, ich habe genug Platz.
PS: Bei Yahoo darf man 10MB pro Mail... *mitzaunpfahlwink*
-
habs dir grad geschickt, nun dürfte alles dabei sein
-
Ich habs schon gefunden
Du hast Rückmail.
-
Ich hab es!
Es ist die OnDraw Methode in deinem View. Die versaut dir die Werte!
Das m_oledtAuswertedatum im View hat ÜBERHAUPTNICHTS mit dem m_oledtAuswertedatum in Dilog zu tun!
Die haben nur scheinbar den gleichen Namen. Schau dir dazu in einem Buch das Thema "Gültigkeitsbereiche von Variablen" an.Ich habe leider nicht die Zeit, dir das alles zu erklären, dafür brauchst du wirklich erstmal mindestens 1 Tutorial zu OOP C++ und MFC. Es ist einfach zu viel, dann bin ich locker 1 Jahr beschäftig und mein Chef "tötet" mich.
Setz mal einen Breakpoint in das OnDraw auf die Zeile:
m_pDialog->m_oledtAuswertedatum = m_oledtAuswertedatum;
und einen in Dilog auf die Zeile
CDialog::OnInitDialog();
und dann siehst du schon, was da passiert. Besser noch ist es, jeweils unter die Zeile ein TRACE zu machen:
Also:CDialog::OnInitDialog(); TRACE(" CDialog::OnInitDialog();");
bzw.
m_pDialog->m_oledtAuswertedatum = m_oledtAuswertedatum; TRACE("m_pDialog->m_oledtAuswertedatum = m_oledtAuswertedatum;");
Wenn du nun mit F5 startest, kannst du im Ausgabefenster sehen, wann das Programm an der Zeile vorbei kommt.
Dann kannst du auch sehen, was falsch läuft.
Gut gemeinter Rat von mir:
Leg die Anwendung in die Ecke, so fehlerhaft wie sie ist und mach ein Tutorial zu Dialogen und zu SDI-Anwenungen (Malen mit DCs).
Irgendwann geht dir von ganz alleine ein Kronleuchter auf, wie du es richtig machen kannst, dann kannst du den Fehler auch beheben.