26. januar 2008 - 19:06Der er
6 kommentarer og 1 løsning
Konvertere en string til en word?
Hej.
Hvordan kan jeg konvertere en stirng[2] til en word type?
Jeg skal sammenligne nogle datoer med nogle værdier, der er i typen word og har derfor brug for, at Day, Month, Year herunder bliver konverteret til word.
Birthday er en variabel hentet i en Maskedit med følgende format xxxxxx-xxxx
Day := LeftStr(Birthday,2); Month := MidStr(Birthday,2,2); Year := MidStr(Birthday,4,2);
Tja, jeg får i hvert fald ingen compilerfejl ved at bruge StrToInt, men jeg vælger lige at omformulere mit spørgsmål.
Jeg har nedenstående kodestump, som jeg har fundet fået brygget herinde for et år eller to siden.
function BeregnAlder(Birthday, CurrentDate: TDate): integer; var Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word; begin DecodeDate(Birthday, Year, Month, Day); DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then begin Result := 0; end else begin Result := CurrentYear - Year; if (Month > CurrentMonth) then Dec(Result) else begin if Month = CurrentMonth then if (Day > CurrentDay) then Dec(Result); end; end; end;
Den tager udgangspunkt i at det er en dato, der indsættes som "Birthday", men inputtet her stammer fra en maskedit med formatet xxxxxx-xxxx, hvoraf jeg i dette tilfælde kun skal bruge de fire første tegn. fx 010203 svarende til d. 1. februar 2003.
Det giver mig lidt problemer. Dels at den tager de fire cifre i et CPR nummer med i beregningen, hvilket jeg ville have løst ved nedenstående ændringer og dels at den ikke læser '010203' som en dato, da den mangler -
Min forsøgte Ændring
function TformStamdata.BeregnAlder(Birthday:string;CurrentDate: TDate): integer; var Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word; begin Day := StrToInt(LeftStr(Birthday,2)); Month := StrToInt(MidStr(Birthday,2,2)); Year := StrToInt(MidStr(Birthday,4,2)); DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then begin Result := 0; end else begin Result := CurrentYear - Year; if (Month > CurrentMonth) then Dec(Result) else begin if Month = CurrentMonth then if (Day > CurrentDay) then Dec(Result); end; end; end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.