Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - zuviele Tage
Schokolade - Sa 28.11.20 00:36
Titel: zuviele Tage
Hallo,
entweder habe ich riesige Tomaten auf den Augen oder es gibt ein riesiges Problem.
Folgende Aufgabe: wandle den String: '2020.07.23' mittels einer Function um in: 23.07.2020.
Man sollte meinen das ist einfach, aber ich bekomme immer den fehlerhaften String 23.07.23.2020 wieder, die Tagesnummer 23 ist doppelt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| FUNCTION DateOfInternationalDate(iDate: String): String; var year, month, day: String; Const Dot='.'; BEGIN year := Copy(iDate,1,4); month := Copy(iDate,6,7); day := Copy(iDate,9,10); Result:=day+Dot+month+Dot+year; END;
procedure TForm1.Button1Click(Sender: TObject); begin label2.caption:=DateOfInternationalDate(label1.Caption); end; |
Ich habe diverse Dinge ausprobiert, googeln bringt da auch nicht weiter. Eure Meinung ist geschätzt
Rolf
Moderiert von Th69: Delphi-Tags hinzugefügt
Schokolade - Sa 28.11.20 00:45
hier noch ein Nachtrag, ein Screenshot.
Ralf Jansen - Sa 28.11.20 00:49
Du solltest dir einfach mal den Inhalt der Variablen year, month, day ansehen. Dann kommst du wahrscheinlich selbst drauf.
Hint: Du hast falsche Erwartungen an den 3.ten Parameter von Copy. Man sollte seine Erwartungen immer durch debuggen prüfen. Und wenn dann was nicht erwartungskonformes passiert weiß man relativ genau aus welcher Ecke das kommt und kann die Doku zu rate ziehen.
Schokolade - Sa 28.11.20 09:38
Danke, Du hattest vollkommen recht, ich aber auch, mit den Tomaten auf den Augen!
Interessant ist, wie meine Erwartungshaltung zustande kam. Ich war einige Zeit mit grafischen Befehlen beschäftigt, wo eine absolute Positionierung üblich war.
Schönes Wochenende wünscht
Rolf
jaenicke - Sa 28.11.20 11:29
Viel einfacher ist schlicht die internen Funktionen zu verwenden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var MyFormatSettings: TFormatSettings; begin MyFormatSettings := TFormatSettings.Create('DE-de'); MyFormatSettings.ShortDateFormat := 'yyyy.mm.dd'; ShowMessage(DateToStr(StrToDate('2020.07.23', MyFormatSettings))); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!