Autor Beitrag
NetSpider
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123

Windows XP Pro
Delphi 7 Enterprise
BeitragVerfasst: Mi 07.02.07 21:39 
Hi,

ich arbeite im Moment an einem Datenbank-Progamm. Es koennen auch Textdateien importiert werden - in dem sich auch ein Datum befindet. Dieses Datum liegt im Format 'mmm dd, yyyy' vor. Wie bekomme ich das jetzt in ein richtiges (von den Systemeinstellungen/Spracheinstellungen) abhaengiges Datumsformat?

Mittlerweile bin ich soweit, dass ich die einzelnen Bestandteile in Strings zerlegt hab.
ausblenden Delphi-Quelltext
1:
var Day, Month, Year: String;					


In Day steht dd
in Month steht mmm
und in Year kommt yyyy

Leider kann ich Month nicht direkt in einen Integer umwandeln (da 'Jan', 'Feb')...
Wie kann ich das jetzt elegant in einen Integer-Wert umwandeln?

Klar koennte ich eine Abfrage machen, allerdings bin ich mir nich sicher, ob alle Windows-Versionen 'mmm' gleich interpretieren/ausgeben...
z.B. Deutsch: mmm = Dez, Englisch: mmm = Dec
somit waere eine If-Abfrage mehr als unvorteilhaft, da ja alles noch mit einer Datenbank gekoppelt ist.

Gibt es eine Date-Funktion die 'Jan' nach '01', 'Feb' nach '02', usw. umwandelt (systemabhaengig)?

Vielen Dank - NetSpider

_________________
Wer in die Fußstapfen anderer tritt hinterlässt keine eigenen Spuren!
NetSpider Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123

Windows XP Pro
Delphi 7 Enterprise
BeitragVerfasst: Do 08.02.07 05:40 
Habs jetzt irgendwie auf eigene Faust gemacht...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function TImportRecord.DateToFormat(ImportDate: string): String;
var Day, Month, Year, i: Integer;
    Buffer: String;
begin
Month := 1;
Buffer := Unit1.MainForm.GetWord(ImportDate, 1' ');
Day := StrToInt(Copy(Unit1.MainForm.GetWord(ImportDate, 2' '), 1, Length(Unit1.MainForm.GetWord(ImportDate, 2' '))-1));
Year := StrToInt(Unit1.MainForm.GetWord(ImportDate, 3' '));

for i := 1 to 12 do
if UpperCase(ShortMonthNames[i]) = UpperCase(Buffer) then begin
Month := i;
Break;
end;   // hier koennte man noch: else if i = 12 then begin Result := ''; exit; end;

Result := DateToStr(EncodeDate(Year, Month, Day));
end;


Das Eingabeformat ist: 'mmm dd, yyyy' -> raus kommt ein Systemabhaeniges Datum (hoffe ich mal!)

Und die Funktion GetWord ist folgende:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Function GetWord(Text: String; WordPos: Word; Seperator: String): String;
var
 p  : PChar;
begin
  p  := PChar(Text);
  repeat
    Dec(WordPos);
    while p^ <> Seperator do
    begin
      if WordPos = 0 then
       Result := Result + p^;
      Inc(p);
    end;
    if WordPos = 0 then Exit;
    Inc(p);
  until p^ = Seperator;
end;


Viele Gruesse, NetSpider
(Ja, manchmal muss man nur ne Nacht drueber schlafen!)

_________________
Wer in die Fußstapfen anderer tritt hinterlässt keine eigenen Spuren!