Autor Beitrag
Schokolade
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 27.11.20 23:36 
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.
ausblenden 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;
// internationalen Datumsstring umwandeln: 2020.07.23 -> 23.07.2020
// fehlerhaftes Resultat ist: 23.07.23.2020
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); //  bzw probiert label2.caption:=DateOfInternationalDate('2020.07.23')
end;

Ich habe diverse Dinge ausprobiert, googeln bringt da auch nicht weiter. Eure Meinung ist geschätzt
Rolf

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
Schokolade Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 27.11.20 23:45 
hier noch ein Nachtrag, ein Screenshot.
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4497
Erhaltene Danke: 925


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 27.11.20 23: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.

Für diesen Beitrag haben gedankt: Schokolade
Schokolade Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Sa 28.11.20 08: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18950
Erhaltene Danke: 1675

W10 x64 (Chrome, Edge)
Delphi 10.4 Ent, Oxygene, C# (VS 2019), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 28.11.20 10:29 
Viel einfacher ist schlicht die internen Funktionen zu verwenden:
ausblenden 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;

Für diesen Beitrag haben gedankt: Schokolade