26. januar 2008 - 19:06
Der 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);
26. januar 2008 - 19:33
#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;