Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Monatskürzel "Jan".."Dec" in 01..12 umwandeln (https://www.delphipraxis.net/15437-monatskuerzel-jan-dec-01-12-umwandeln.html)

Steffen 28. Jan 2004 19:08


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

Luckie 28. Jan 2004 19:09

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Kuck dir mal DecodeDate und EncodeDate an.

Steffen 28. Jan 2004 19:14

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!

Stanlay Hanks 28. Jan 2004 19:15

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:
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;
Man liest sich, Stanlay :hi:

Steffen 28. Jan 2004 19:16

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...

mirage228 28. Jan 2004 19:31

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Guck mal nach FormatDateTime ^^

mfG
mirage228

n00b_on_knees 28. Jan 2004 19:35

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? ;)

Steffen 28. Jan 2004 19:38

Re: Monatskürzel "Jan".."Dec" in 01..12
 
case mit strings?
Geht nur indirekt, und ist nicht schnell...

choose 29. Jan 2004 00:28

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.

Leuselator 29. Jan 2004 01:27

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Vorschlag für diesen und ähnliche Fälle: (TotalEdit nach 2xNachdenken)
Delphi-Quellcode:
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;
Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

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