den Typ CEdit in CDate kovertieren!
-
Hi Experte,
Ich habe ein Problem, und zwar so:
Ich habe eine Klasse erstellt, die den Name CDate hat und habe in meinen MFC
Klassen eingefügt. Dann habe ich einen Intanz vom Typ Date definiert.
wenn ich dieses Objekt in einem Editfeld lesen lassse, dann habe ich Problem.
Da eine Member Variable für dieses Editfeld deklariert wurde.meine Setmethode:
void CPage4::setDateOfCertification(Date DateOfCertification)
{
this->DateOfCertification = DateOfCertification;
}beim Aufruf in CMyExampleDlg :
page.setDateOfCertification(m_date);
Das Problem ist m_date ist vom Typ CEdit.
Hat jemand eine Idee, wie ich CEdit in CDate konvertieren kann?
Ich hoffe darauf, dass einer mein Problem verstanden hat. Das
Programm ist bissen kompliziert, wollte ich nicht alles hier
erzählen.Danke im Voraus!
Lucie
-
CDate ist keine MFC-Klasse ?
Da du sie selbst erstellt hast musst du dies schon selbst machen oder verwende die Klasse CTime
-
Wenn m_date CEdit ist, warum übergibst du dann nicht CEdit anstatt deiner Klasse ?
Devil
-
> meinst du, dass mein Proböem gelöst, wenn CTime Klasse verwende?
> zum Beispiel : ändere meine Code und vergesse die Klasse CDate.
> #include <ctime>
> CTime DateOfCertification
> void CPage4::setDateOfCertification(CTime DateOfCertification)
> {
> this->DateOfCertification = DateOfCertification;
> }> beim Aufruf in CMyExampleDlg :
> page.setDateOfCertification(m_date);
> Dann habe ich nicht mehr Problem? Ich muss jetzt aber CEdit in Ctime
> konvertieren. Wie klappt das? Un d wie mache ich diese Konvertierung?
-
Du musst den String zerlegen in Tag, Monat , jahr und dem kontructor des ctime übergeben
CTime startTime(jahr,monat,tag,stunde,minute,sekunde);
-
Original erstellt von Unix-Tom:
**Du musst den String zerlegen in Tag, Monat , jahr und dem kontructor des ctime übergebenCTime startTime(jahr,monat,tag,stunde,minute,sekunde);**
ich hab wirklich nicht verstanden, was du mit string zerlegen meinst.
definiere eine convertFunktion:
CTime EditToTime(CEdit date)
{
std::string jahr, monat, tag;
CTime startTime(jahr,monat, tag);
// wie weiter?
}Un dwie weiter? Ich habe wirklich keine Ahnung!
Bitte helf mir?
-
Hm, wie wärs wenn du erstmal die Grundlagen lernst?
Mit stringzerlegen meint er, das du die teile herausschneidest die für
die jeweilige variable wichtig sind. Dazu steht auch einiges in der FAQ.Devil
-
Ok, hab ich schon verstanden. Hilf mir, diese Methode zu gehen?
-
Nimm doch einfach die Klasse COleDateTime. Mit der Methode ParseDateTime kannst du direkt einen String übergeben.
-
Original erstellt von thomas80d:
Nimm doch einfach die Klasse COleDateTime. Mit der Methode ParseDateTime kannst du direkt einen String übergeben.Danke für deine Idee. Aber bei mir klappt nicht.
-
CString beginn; beginn = "2002-11-29 15:24:22"; int jahrb = atoi(beginn.Left(4)); int monatb = atoi(beginn.Mid(5,2)); int tagb = atoi(beginn.Mid(8,2)); int stundeb = atoi(beginn.Mid(11,2)); int minuteb = atoi(beginn.Mid(14,2)); int sekundeb = atoi(beginn.Mid(17,2)); CTime startTime(jahrb,monatb,tagb,stundeb,minuteb,sekundeb);