Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#1

Re: Monatskürzel "Jan".."Dec" in 01..12

  Alt 2. Feb 2004, 13:10
Bei mir sieht es nun so aus (dank der Anregungen aus diesem Thread!):
Delphi-Quellcode:
type
  TLsLand = (GER,USA,GBT);

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;
function IndexOfArrayItem(TheArray : Array of Boolean ;Item : Boolean ):Integer; overload;

function ShortMonStrToInt(Month : String; Land : TLsLand):Integer;
function LongMonStrToInt(Month : String; Land : TLsLand):Integer;

implementation

function IndexOfArrayItem(TheArray : Array of String;Item : String):Integer;
begin
  Result := High(TheArray);
  while (Result >= 0) and (TheArray[Result] <> Item) do Dec(Result);
end;
// usw. usf. für alle überladenen Versionen bis:
function IndexOfArrayItem(TheArray : Array of Boolean;Item : Boolean):Integer;
begin
  Result := High(TheArray);
  while (Result >= 0) and (TheArray[Result] <> Item) do Dec(Result);
end;

function ShortMonStrToInt(Month : String; Land : TLsLand):Integer;
const
  EngArray : Array[0..11] of String
              = ('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
  GerArray1 : Array[0..11] of String
              = ('JAN','FEB','MRZ','APR','MAI','JUN','JUL','AUG','SEP','OKT','NOV','DEZ');
  GerArray2 : Array[0..11] of String
              = ('JAN','FEB','MÄR','APR','MAI','JUN','JUL','AUG','SEP','OKT','NOV','DEZ');
begin
  case Land of
  USA,GBT : Result := IndexOfArrayItem(EngArray,AnsiUpperCase(Month));
  GER : begin
              Result := IndexOfArrayItem(GerArray1,AnsiUpperCase(Month));
              if Result < 0 then Result := IndexOfArrayItem(GerArray2,AnsiUpperCase(Month));
            end;
  else raise Exception.Create('Nichtdefiniertes Land übergeben!');
  end;
  if Result >= 0 then inc(Result); // damit man auf die Monatszahl kommt, muß um 1 erhöht werden.
end;

function LongMonStrToInt(Month : String; Land : TLsLand):Integer;
begin
  Result := ShortMonStrToInt(copy(Month,1,3), Land);
end;
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat