![]() |
Monatskürzel "Jan".."Dec" in 01..12 umw
Hallo!
Ich habe folgende Strings gegeben: 'Jan', 'Feb', 'Mar', 'Apr', 'May' .. 'Dec' gibt es eine Funktion diese in ihre Nummern umzuwandeln, oder muss ich das selber schreiben? Noch besser Wäre 'ne Funktion die mir ein Datum wie "08 Oct 2003" in TDateTime umwandelt... (Ich habe mit StrToDate(..) nur folgendes Format umwandeln können '08.10.2003') Vielen Dank im Voraus! Steffen |
Re: Monatskürzel "Jan".."Dec" in 01..12
Kuck dir mal DecodeDate und EncodeDate an.
|
Re: Monatskürzel "Jan".."Dec" in 01..12
...die bringen mich auch nur weiter, wenn die Werte schon Zahlen sind!
Ich habe Strigs als Quelle! |
Re: Monatskürzel "Jan".."Dec" in 01..12
Oder einfach (was heißt einfach, eigentlich zu umständlich), aber der Vollständigkeit halber:
Delphi-Quellcode:
Man liest sich, Stanlay :hi:
function TForm1.MonthToNumber(Str: String): Integer;
begin IF Str = 'Jan' THEN result := 1 ELSE IF Str = 'Feb' THEN result := 2 ELSE IF Str = 'Mar' THEN result := 3 ELSE IF Str = 'Apr' THEN result := 4 ELSE IF Str = 'May' THEN result := 5 ELSE IF Str = 'Jun' THEN result := 6 ELSE IF Str = 'Jul' THEN result := 7 ELSE IF Str = 'Aug' THEN result := 8 ELSE IF Str = 'Sep' THEN result := 9 ELSE IF Str = 'Oct' THEN result := 10 ELSE IF Str = 'Nov' THEN result := 11 ELSE IF Str = 'Dec' THEN result := 12 end; |
Re: Monatskürzel "Jan".."Dec" in 01..12
das das ganze mit 12 IF-THEN Konstrukten geht ist klar, aber das wollte ich eigentlich vermeiden...
|
Re: Monatskürzel "Jan".."Dec" in 01..12
Guck mal nach FormatDateTime ^^
mfG mirage228 |
Re: Monatskürzel "Jan".."Dec" in 01..12
eventuell statt if, case? wäre hier denke ich schon besser..aber ich denke das ist dir auch klar? ;)
|
Re: Monatskürzel "Jan".."Dec" in 01..12
case mit strings?
Geht nur indirekt, und ist nicht schnell... |
Re: Monatskürzel "Jan".."Dec" in 01..12
Hallo Steffen,
in der Unit SysUtils existieren die globalen Variablen ShortMonthNames, LongMonthNames, ShortDayNames und LongDayNames. In ihnen werden im landesspezifischen Format die entsprechenden Daten zur Verfügung gestellt. |
Re: Monatskürzel "Jan".."Dec" in 01..12
Vorschlag für diesen und ähnliche Fälle: (TotalEdit nach 2xNachdenken)
Delphi-Quellcode:
Gruß
function IndexOfArrayItem(TheArray : Array of String ;Item : String ):Integer; overload;
function IndexOfArrayItem(TheArray : Array of Byte ;Item : Byte ):Integer; overload; function IndexOfArrayItem(TheArray : Array of Integer ;Item : Integer ):Integer; overload; function IndexOfArrayItem(TheArray : Array of Char ;Item : Char ):Integer; overload; function IndexOfArrayItem(TheArray : Array of Currency;Item : Currency):Integer; overload; function IndexOfArrayItem(TheArray : Array of Double ;Item : Double ):Integer; overload; // diese Funktion benutzt eine der oben deklarierten: function EnglishMonthToInt(Month : String):Integer; implementation function IndexOfArrayItem(TheArray : Array of String;Item : String):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function IndexOfArrayItem(TheArray : Array of Byte;Item : Byte):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function IndexOfArrayItem(TheArray : Array of Integer;Item : Integer):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function IndexOfArrayItem(TheArray : Array of Char;Item : Char):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function IndexOfArrayItem(TheArray : Array of Currency;Item : Currency):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function IndexOfArrayItem(TheArray : Array of Double;Item : Double):Integer; begin Result := Low(TheArray); while (Result <= High(TheArray)) and (TheArray[Result] <> Item) do Inc(Result); if Result > High(TheArray) then Result := -1; end; function EnglishMonthToInt(Month : String):Integer; const MonthArray : Array[1..12] of String = ('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); begin Result IndexOfArrayItem(MonthArray,Month); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz